Reusable 3D Earth globe widget (pure OCaml + WebGL)
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat(ocaml-globe): add raycasting for 3D picking

New module Globe.Raycast (pure math, no WebGL):
- ray_from_screen: unproject screen pixel → world-space ray
- intersect_sphere: ray-sphere intersection (Earth surface)
- intersect_point: ray proximity test for satellite dots
- pick_nearest: find closest point to ray from a list
- pick_earth: find where ray hits the globe surface
- invert_mat4: 4x4 matrix inverse for unprojection

15 new tests: sphere hit/miss/inside/tangent/offset, point hit/miss/
behind, pick nearest/empty, earth hit/miss, matrix inversion identity/
roundtrip, ray-from-screen center. 40 total globe tests passing.

+1854 -1364
demo/main.bc-for-jsoo

This is a binary file and will not be displayed.

+1349 -1349
demo/main.bc.js
··· 9430 9430 (globalThis)); 9431 9431 9432 9432 (function(a){"use strict";var 9433 - i=a.jsoo_runtime,c=i.caml_get_global_data(),d2="caml_unix_stat_64",d1="unix_lseek",l="caml_unix_inchannel_of_filedescr",dZ="caml_unix_stat",dX="caml_unix_write_bigarray",fu="caml_nativeint_format",be="caml_int64_of_nativeint",dW="caml_unix_closedir",bc="caml_unix_getgrnam",cw="caml_unix_truncate",cv="caml_unix_getcwd",fq="caml_unix_readlink",fr="caml_floatarray_set",ba="caml_fill_bytes",a$="unix_error_message",cu="win_inchannel_of_filedescr",a_="caml_unix_time",cr="caml_unix_write",dU="unix_lstat",fn="unix_open",dR="unix_rename",fm="caml_unix_chmod",a6="unix_access",a4="caml_unix_lseek",a5="unix_fsync",dQ="caml_unix_findnext",a2="caml_weak_get_copy",h="caml_array_set",dO="caml_unix_opendir",fk="caml_unix_lookup_file",a1="caml_unix_getegid",fj="caml_unix_getgid",cn="caml_js_from_nativeint",aW="caml_unix_gmtime",aX="caml_signbit_float",fi="caml_unix_close",fh="caml_js_from_int32",fg="caml_int64_to_int",ck="caml_check_bound_gen",p="caml_format_int",dJ="unix_link",ch="unix_mkdir",aQ="unix_rewinddir",aR="unix_read",dF="caml_unix_unlink",aM="unix_getgid",dD="caml_unix_error_message",fd="caml_unix_findclose",aI="caml_unix_lseek_64",fa="caml_array_get_float",cd="win_outchannel_of_filedescr",dA="caml_unix_fstat",cb="caml_unix_geteuid",dy="unix_lstat_64",aH="unix_inchannel_of_filedescr",b8="unix_getpwnam",b9="unix_geteuid",aG="caml_unix_getuid",dx="caml_unix_utimes",e5="caml_unix_getpwuid",e6="unix_getpwuid",o="caml_check_bound",e4="unix_ftruncate_64",aE="unix_isatty",b7="caml_unix_times",du="caml_unix_exit",e3="unix_exit",aB="caml_unix_single_write",b6="caml_ephe_blit_key",ds="caml_nativeint_of_string",aA="unix_write",dq="caml_unix_ftruncate_64",dr="unix_close",eZ="caml_js_to_int32",k="caml_sys_getcwd",dp="caml_unix_readdir",b4="win_findclose",au="%int_mul",dl="caml_int32_format",eW="caml_weak_blit",dj="caml_unix_localtime",dk="unix_times",eV="caml_array_set_addr",di="caml_unix_inet_addr_of_string",eU="unix_ftruncate",dh="caml_weak_check",eS="caml_unix_symlink",as="unix_outchannel_of_filedescr",ap="caml_unix_has_symlink",de="unix_mktime",s="caml_int64_to_int32",b0="unix_fstat",eP="caml_unix_link",ao="caml_unix_fchmod",bW="unix_symlink",am="unix_localtime",eN="unix_chdir",al="unix_getgrgid",ak="caml_int32_compare",ai="caml_unix_mkdir",eK="win_startup",eJ="caml_int32_bswap",ah="caml_weak_get",eI="unix_readlink",af="caml_unix_rmdir",e="caml_array_get",ae="caml_unix_lstat_64",ac="unix_inet_addr_of_string",bQ="caml_unix_gettimeofday",r="caml_unix_outchannel_of_filedescr",bO="unix_stat",c$="caml_unix_chdir",aa="unix_closedir",ab="win_cleanup",bM="caml_nativeint_bswap",Z="caml_unix_mktime",_="caml_ephe_get_key",$="%int_mod",bL="unix_stat_64",c9="unix_getegid",c_="caml_unix_access",c7="caml_unix_isatty",X="caml_int32_mul",c5="caml_nativeint_compare",q="caml_int64_of_int32",V="caml_unix_fsync",eE="win_findnext",S="caml_nativeint_mul",eD="unix_single_write",R="caml_int32_mod",n="caml_js_from_float",c2="unix_truncate_64",c1="caml_ephe_check_key",eB="unix_opendir",bH="caml_array_set_float",eA="caml_ephe_get_key_copy",O="unix_getuid",d="caml_mul",M="caml_fill_string",g="caml_div",cX="caml_int64_of_int",ey="caml_unix_read_bigarray",L="unix_getgrnam",ex="win_findfirst",ew="caml_unix_startup",bE="caml_unix_filedescr_of_fd",ev="caml_unix_ftruncate",f="caml_mod",cW="caml_check_bound_float",bC="unix_utimes",bD="caml_unix_getgrgid",eu="caml_int64_to_nativeint",bB="unix_time",et="unix_fstat_64",I="caml_unix_fstat_64",cU="unix_truncate",bz="unix_gmtime",by="caml_unix_cleanup",er="unix_getcwd",eq="unix_readdir",j="caml_sys_exit",G="caml_channel_descriptor",bu="unix_lseek_64",t="caml_int_compare",E="caml_array_get_addr",eh="unix_chmod",ei="caml_unix_lstat",eg="caml_js_to_nativeint",C="caml_int32_div",cO="caml_unix_findfirst",B="caml_unix_truncate_64",A="caml_unix_rewinddir",z="unix_has_symlink",m="caml_int_of_string",ee="caml_unix_rename",br="win_filedescr_of_channel",y="unix_gettimeofday",ed="win_handle_fd",b="caml_unix_getpwnam",cK="caml_int32_of_string",eb="caml_nativeint_mod",w="unix_rmdir",cG="caml_unix_read",cH="unix_read_bigarray",d7="caml_floatarray_get",v="unix_unlink",bl="caml_unix_open",d5="caml_signbit",u="unix_fchmod",bj="caml_nativeint_div",d3="%int_div";c.aliases=i.caml_list_of_js_array([[0,ck,o],[0,fg,s],[0,d3,g],[0,fh,n],[0,ex,cO],[0,bj,g],[0,u,ao],[0,L,b],[0,as,r],[0,cX,q],[0,cn,n],[0,d5,aX],[0,dh,c1],[0,M,ba],[0,v,dF],[0,eU,ev],[0,d7,e],[0,eV,h],[0,O,aG],[0,cH,ey],[0,w,af],[0,dk,b7],[0,eW,b6],[0,dl,p],[0,fk,dX],[0,bH,h],[0,au,d],[0,eB,dO],[0,b4,fd],[0,cK,m],[0,eb,f],[0,c2,B],[0,R,f],[0,a2,eA],[0,S,d],[0,eD,aB],[0,dr,fi],[0,a5,V],[0,aA,cr],[0,ds,m],[0,a6,c_],[0,ed,bE],[0,eE,dQ],[0,y,bQ],[0,br,G],[0,e3,j],[0,c5,t],[0,X,d],[0,du,j],[0,z,ap],[0,dR,ee],[0,aE,c7],[0,e4,dq],[0,c9,a1],[0,dU,ei],[0,fn,bl],[0,C,g],[0,e6,b],[0,e5,b],[0,bL,d2],[0,eg,eZ],[0,$,f],[0,bM,eJ],[0,b9,cb],[0,b8,b],[0,ab,by],[0,aa,dW],[0,cu,l],[0,eh,fm],[0,bO,dZ],[0,E,e],[0,aH,l],[0,ac,di],[0,dy,ae],[0,fr,h],[0,cv,k],[0,cd,r],[0,fa,e],[0,eI,fq],[0,ah,_],[0,bc,b],[0,bu,aI],[0,eK,ew],[0,eq,dp],[0,aM,fj],[0,dD,a$],[0,ak,t],[0,er,k],[0,bz,aW],[0,be,q],[0,al,b],[0,cU,cw],[0,eN,c$],[0,am,dj],[0,fu,p],[0,et,I],[0,bW,eS],[0,bB,a_],[0,eu,s],[0,aR,cG],[0,aQ,A],[0,ch,ai],[0,bD,b],[0,dJ,eP],[0,bC,dx],[0,cW,o],[0,b0,dA],[0,d1,a4],[0,de,Z]]);c.prim_count=981;var 9434 - cA="Stdweb__Stdweb_map",d0=133,bg=102,dY="Helix__Http",cy=114,cz="Stdlib__Type",bf="Stdweb__Stdweb_form_data",bd="Globe__Sphere",cx="Helix__Router",ft="Stdlib__Buffer",dV="Stdlib__Out_channel",fs="Match_failure",bb="Stdlib__Gc",fp="Stdlib__Unit",fo=136,ct="Jsoo_runtime__Runtime_version",cs="Stdlib__Map",dT="Stdlib__Parsing",a9="Stdlib__Effect",dS="Brr",a8="Globe_webgl__Coverage",cq=108,a7="Stdlib__String",a3="Stdlib__BytesLabels",dP="Jv",dN="Stdlib__Condition",fl="Stdlib__Repr",cp=148,dM="Stdlib__Filename",a0="Stdlib__In_channel",dL="Not_found",co="Helix",aY="CamlinternalLazy",aZ="Jstr",cm="Division_by_zero",aU="Stdweb__Stdweb_promise",aV="Stdweb__Stdweb_storage",aT=117,dK="Globe_webgl__Orbit",cl=104,cj="Stdlib__Either",aS="Stdweb__Stdweb_dict",ci=109,cg="Stdweb__Stdweb_global",cf="Globe__Gl_coord",dI="Stdlib__Callback",aP="Stdweb__Stdweb_fetch",aO="Stdlib__Lexing",ce="Undefined_recursive_module",dG="Stdlib__Printf",dH="Stdweb__Stdweb_url_search_params",ff=111,aN="Stdlib__Bool",dE="Stdlib__Int",fe="Brr_webworkers",dC="Stdlib__MoreLabels",aK=103,aL=127,dB="Sys_error",aJ=100,fb="Stdlib__Digest",fc="Stdweb__Stdweb_json",e$="Stdlib__Pqueue",dz=101,e_="Brr_webcrypto",cc="Stdweb__",ca="Stdlib__Queue",e9=110,b$="Helix__View",b_="Stdlib__Set",e8="Stdlib__Stack",dv="Stdlib__Complex",dw="Stdweb__Stdweb_iterator",e7="Jx__",aF="Jsoo_runtime__",aD="Globe",dt="Jsoo_runtime",e1="Globe_webgl__Camera",e2=130,aC="Stdlib__Nativeint",e0=128,az=113,b5=146,dn="Sys_blocked_io",ay="Stdlib__Random",dm="Jx",ax=135,b3=144,eY="Globe_webgl__Scene",av=106,aw="Stdlib__Marshal",eX=140,b2="Stdlib__Ephemeron",eT="Brr_webaudio",at="CamlinternalMod",b1="Stdweb__Stdweb_object",ar="Helix__History",aq="Signal",dg="Stdweb__Stdweb_websocket",eR="Stdlib__Fun",eQ="Stdlib__Char",df=125,bX=116,bY="Stdlib__Pair",bZ=138,eO=126,an="Globe__Math",aj="Brr_io",eM="CamlinternalFormatBasics",dd="Stdlib__Weak",bV=105,dc="Stdlib__Format",eL="Stdlib__StdLabels",db="Stdlib__Int64",da="Stdweb__Stdweb_console",ag="Stdlib__ArrayLabels",bU=129,bT="Brr_canvas",bS="Stdlib__Bigarray",ad="Stdweb__Stdweb_dom",bR=137,bP=132,bN="Globe_webgl",Y="Jx__Jx_ffi",c8="Dune__exe__Main",c6="Stdweb__Stdweb_clipboard",W=115,c4=131,eF="Stdlib",eG="Stdlib__StringLabels",eH=122,U="Stdlib__Atomic",bK="Globe_webgl__Earth",T="Stdlib__ListLabels",c3="Stdlib__Seq",eC="Stdlib__Iarray",bJ="Globe__Color",Q=134,bI="Stdweb__Stdweb_array",P="Stdlib__Uchar",c0="Stdlib__Arg",N="Brr_webmidi",cZ="Stdlib__Scanf",ez=112,cY="Globe_webgl__Shader",K="Html",bG=107,bF="Stdlib__Printexc",cV=147,J="Globe__Geometry",bA="Stdlib__Dynarray",es="Assert_failure",H=141,bw=118,bx=121,bv=120,cT="Stdlib__Array",cS="Stdlib__Obj",ep="Stdlib__Hashtbl",en="Stdlib__Domain",eo="Stdlib__Option",em=124,bt="Brr_webgpu",el="Std_exit",ej="Brr_css",ek=149,F="Globe_webgl__Grid",D="Helix__Time",bs=145,cR="Globe_webgl__Stars",cP="Invalid_argument",cQ="Stack_overflow",cN="End_of_file",ef="Failure",ec="Stdlib__Lazy",cM="Ptime",bq="Stdlib__Semaphore",cL="Out_of_memory",x="Stdlib__Bytes",bp="Stdlib__Sys",ea=143,cJ="Fut",d$="CamlinternalOO",cI="Stdlib__Int32",d_="Stdlib__Oo",bn="Helix__",bo=123,d8=119,d9="Stdlib__Mutex",bm="Stdlib__List",cF=139,cE="Jx__jx_jsoo__",bk="Stdweb",d6="Stdlib__Float",bi=142,cD="CamlinternalFormat",d4="Fmt",cC="Helix__Mouse",bh="Coordinate",cB="Stdlib__Result";c.symbols=[0,[0,ce,11],[0,dB,10],[0,dn,9],[0,dg,df],[0,dH,eO],[0,aV,aL],[0,aU,bo],[0,b1,e0],[0,cA,e2],[0,fc,c4],[0,dw,bU],[0,cg,eH],[0,bf,bP],[0,aP,d0],[0,ad,em],[0,aS,Q],[0,da,ax],[0,c6,fo],[0,bI,bR],[0,cc,bx],[0,bk,bZ],[0,dd,64],[0,fp,34],[0,P,27],[0,cz,17],[0,bp,15],[0,eG,79],[0,a7,33],[0,eL,81],[0,e8,45],[0,b_,43],[0,c3,21],[0,bq,50],[0,cZ,66],[0,cB,24],[0,fl,42],[0,ay,62],[0,ca,46],[0,dG,53],[0,bF,55],[0,e$,72],[0,dT,41],[0,bY,23],[0,dV,59],[0,eo,22],[0,d_,69],[0,cS,16],[0,aC,39],[0,d9,48],[0,dC,80],[0,aw,35],[0,cs,44],[0,T,77],[0,bm,28],[0,aO,40],[0,ec,20],[0,db,38],[0,cI,37],[0,dE,29],[0,a0,58],[0,eC,31],[0,ep,63],[0,bb,57],[0,eR,56],[0,dc,65],[0,d6,36],[0,dM,74],[0,b2,73],[0,cj,14],[0,a9,82],[0,bA,71],[0,en,51],[0,fb,60],[0,dN,49],[0,dv,75],[0,eQ,26],[0,dI,67],[0,a3,78],[0,x,32],[0,ft,47],[0,aN,25],[0,bS,61],[0,U,18],[0,ag,76],[0,cT,30],[0,c0,54],[0,eF,13],[0,el,ek],[0,cQ,8],[0,aq,bX],[0,cM,83],[0,cL,7],[0,dL,6],[0,fs,5],[0,cE,aT],[0,Y,bw],[0,e7,bv],[0,dm,d8],[0,dP,96],[0,aZ,95],[0,ct,93],[0,aF,92],[0,dt,94],[0,cP,4],[0,K,cF],[0,b$,H],[0,D,bi],[0,cx,ea],[0,cC,b3],[0,dY,bs],[0,ar,b5],[0,bn,eX],[0,co,cV],[0,cR,ci],[0,cY,cq],[0,eY,W],[0,dK,cy],[0,F,az],[0,bK,ez],[0,a8,ff],[0,e1,e9],[0,bN,bG],[0,bd,88],[0,an,87],[0,cf,89],[0,J,90],[0,bJ,91],[0,aD,86],[0,cJ,97],[0,d4,84],[0,ef,3],[0,cN,2],[0,c8,cp],[0,cm,1],[0,bh,85],[0,d$,68],[0,at,70],[0,aY,19],[0,eM,12],[0,cD,52],[0,fe,av],[0,N,bV],[0,bt,bg],[0,e_,cl],[0,eT,aK],[0,aj,aJ],[0,ej,99],[0,bT,dz],[0,dS,98],[0,es,0]];c.sections=[0,[0,150,[0,[0,[0,[0,[0,[0,[0,0,[0,es],0,0,1],[0,dS],98,[0,0,[0,bT],dz,0,1],2],[0,ej],99,[0,[0,[0,0,[0,aj],aJ,0,1],[0,eT],aK,[0,0,[0,e_],cl,0,1],2],[0,bt],bg,[0,[0,0,[0,N],bV,[0,0,[0,fe],av,0,1],2],[0,cD],52,[0,0,[0,eM],12,0,1],3],4],5],[0,aY],19,[0,[0,[0,0,[0,at],70,0,1],[0,d$],68,[0,0,[0,bh],85,0,1],2],[0,cm],1,[0,[0,0,[0,c8],cp,0,1],[0,cN],2,0,2],3],6],[0,ef],3,[0,[0,[0,[0,0,[0,d4],84,[0,0,[0,cJ],97,0,1],2],[0,aD],86,[0,[0,0,[0,bJ],91,0,1],[0,J],90,0,2],3],[0,cf],89,[0,[0,[0,0,[0,an],87,0,1],[0,bd],88,[0,0,[0,bN],bG,0,1],2],[0,e1],e9,[0,[0,0,[0,a8],ff,0,1],[0,bK],ez,0,2],3],4],[0,F],az,[0,[0,[0,0,[0,dK],cy,[0,0,[0,eY],W,0,1],2],[0,cY],cq,[0,0,[0,cR],ci,[0,0,[0,co],cV,0,1],2],3],[0,bn],eX,[0,[0,[0,[0,0,[0,ar],b5,0,1],[0,dY],bs,0,2],[0,cC],b3,[0,0,[0,cx],ea,0,1],3],[0,D],bi,[0,0,[0,b$],H,[0,0,[0,K],cF,0,1],2],4],5],6],7],[0,cP],4,[0,[0,[0,[0,[0,[0,0,[0,dt],94,0,1],[0,aF],92,0,2],[0,ct],93,[0,0,[0,aZ],95,0,1],3],[0,dP],96,[0,[0,[0,0,[0,dm],d8,[0,0,[0,e7],bv,0,1],2],[0,Y],bw,0,3],[0,cE],aT,[0,0,[0,fs],5,[0,0,[0,dL],6,0,1],2],4],5],[0,cL],7,[0,[0,0,[0,cM],83,[0,0,[0,aq],bX,0,1],2],[0,cQ],8,[0,0,[0,el],ek,0,1],3],6],[0,eF],13,[0,[0,[0,[0,0,[0,c0],54,0,1],[0,cT],30,[0,0,[0,ag],76,0,1],2],[0,U],18,[0,[0,0,[0,bS],61,0,1],[0,aN],25,[0,0,[0,ft],47,0,1],2],3],[0,x],32,[0,[0,[0,[0,0,[0,a3],78,0,1],[0,dI],67,0,2],[0,eQ],26,[0,0,[0,dv],75,0,1],3],[0,dN],49,[0,[0,0,[0,fb],60,0,1],[0,en],51,[0,0,[0,bA],71,[0,0,[0,a9],82,0,1],2],3],4],5],7],8],[0,cj],14,[0,[0,[0,[0,[0,[0,0,[0,b2],73,[0,0,[0,dM],74,0,1],2],[0,d6],36,[0,0,[0,dc],65,0,1],3],[0,eR],56,[0,[0,0,[0,bb],57,[0,0,[0,ep],63,0,1],2],[0,eC],31,[0,0,[0,a0],58,0,1],3],4],[0,dE],29,[0,0,[0,cI],37,[0,0,[0,db],38,0,1],2],5],[0,ec],20,[0,[0,[0,0,[0,aO],40,0,1],[0,bm],28,[0,[0,0,[0,T],77,0,1],[0,cs],44,0,2],3],[0,aw],35,[0,[0,[0,0,[0,dC],80,0,1],[0,d9],48,0,2],[0,aC],39,0,3],4],6],[0,cS],16,[0,[0,[0,[0,[0,[0,0,[0,d_],69,0,1],[0,eo],22,[0,0,[0,dV],59,0,1],2],[0,bY],23,0,3],[0,dT],41,[0,[0,[0,[0,0,[0,e$],72,0,1],[0,bF],55,0,2],[0,dG],53,0,3],[0,ca],46,[0,[0,0,[0,ay],62,0,1],[0,fl],42,0,2],4],5],[0,cB],24,[0,[0,[0,[0,0,[0,cZ],66,0,1],[0,bq],50,0,2],[0,c3],21,0,3],[0,b_],43,[0,[0,0,[0,e8],45,[0,0,[0,eL],81,0,1],2],[0,a7],33,[0,0,[0,eG],79,0,1],3],4],6],[0,bp],15,[0,[0,[0,[0,[0,0,[0,cz],17,0,1],[0,P],27,[0,0,[0,fp],34,0,1],2],[0,dd],64,[0,[0,0,[0,bk],bZ,0,1],[0,cc],bx,[0,[0,0,[0,bI],bR,0,1],[0,c6],fo,0,2],3],4],[0,da],ax,[0,[0,0,[0,aS],Q,0,1],[0,ad],em,[0,[0,0,[0,aP],d0,0,1],[0,bf],bP,0,2],3],5],[0,cg],eH,[0,[0,[0,[0,0,[0,dw],bU,[0,0,[0,fc],c4,0,1],2],[0,cA],e2,[0,0,[0,b1],e0,0,1],3],[0,aU],bo,[0,[0,0,[0,aV],aL,0,1],[0,dH],eO,[0,0,[0,dg],df,0,1],2],4],[0,dn],9,[0,0,[0,dB],10,[0,0,[0,ce],11,0,1],2],5],6],7],8],9]],0,i.caml_list_of_js_array(["%caml_format_int_special","%direct_int_div","%direct_int_mod","%direct_int_mul","%direct_obj_tag","%int_add","%int_and","%int_asr",d3,"%int_lsl","%int_lsr",$,au,"%int_neg","%int_or","%int_sub","%int_xor","JsStringReader","MlBytes","MlChanid","MlFakeDevice","MlFakeFd","MlFakeFd_out","MlFakeFile","MlFile","MlInt64","MlMutex","MlNat","MlNodeDevice","MlNodeFd","MlObjectTable","Ml_Bigarray","Ml_Bigarray_c_1_1","UInt8ArrayReader","add_nat","bigstring_of_array_buffer","bigstring_of_typed_array","bigstring_to_array_buffer","bigstring_to_typed_array","blake2b","blit_nat","caml_MD5Final","caml_MD5Init","caml_MD5Transform","caml_MD5Update","caml_abs_float","caml_acos_float","caml_acosh_float","caml_add_float","caml_alloc_dummy","caml_alloc_dummy_float","caml_alloc_dummy_lazy","caml_alloc_stack","caml_argv","caml_array_append","caml_array_blit","caml_array_bound_error","caml_array_concat","caml_array_create_float","caml_array_fill",e,E,fa,"caml_array_make","caml_array_of_bytes","caml_array_of_string",h,eV,bH,"caml_array_sub","caml_array_unsafe_get","caml_array_unsafe_get_float","caml_array_unsafe_set","caml_array_unsafe_set_addr","caml_array_unsafe_set_float","caml_asin_float","caml_asinh_float","caml_atan2_float","caml_atan_float","caml_atanh_float","caml_atomic_cas","caml_atomic_cas_field","caml_atomic_exchange","caml_atomic_exchange_field","caml_atomic_fetch_add","caml_atomic_fetch_add_field","caml_atomic_load","caml_atomic_load_field","caml_atomic_make_contended","caml_ba_blit","caml_ba_change_layout","caml_ba_compare","caml_ba_create","caml_ba_create_buffer","caml_ba_create_from","caml_ba_create_unsafe","caml_ba_custom_name","caml_ba_deserialize","caml_ba_dim","caml_ba_dim_1","caml_ba_dim_2","caml_ba_dim_3","caml_ba_fill","caml_ba_from_typed_array","caml_ba_get_1","caml_ba_get_2","caml_ba_get_3","caml_ba_get_generic","caml_ba_get_size","caml_ba_get_size_per_element","caml_ba_hash","caml_ba_init","caml_ba_kind","caml_ba_kind_of_typed_array","caml_ba_layout","caml_ba_map_file","caml_ba_map_file_bytecode","caml_ba_num_dims","caml_ba_reshape","caml_ba_serialize","caml_ba_set_1","caml_ba_set_2","caml_ba_set_3","caml_ba_set_generic","caml_ba_slice","caml_ba_sub","caml_ba_to_typed_array","caml_ba_uint8_get16","caml_ba_uint8_get32","caml_ba_uint8_get64","caml_ba_uint8_set16","caml_ba_uint8_set32","caml_ba_uint8_set64","caml_backtrace_status","caml_bigstring_blit_ba_to_ba","caml_bigstring_blit_ba_to_bytes","caml_bigstring_blit_bytes_to_ba","caml_bigstring_blit_string_to_ba","caml_bigstring_memcmp","caml_blake2_bytes","caml_blake2_create","caml_blake2_final","caml_blake2_string","caml_blake2_update","caml_blit_bytes","caml_blit_string","caml_bswap16","caml_build_symbols","caml_bytes_bound_error","caml_bytes_compare","caml_bytes_equal","caml_bytes_get","caml_bytes_get16","caml_bytes_get32","caml_bytes_get64","caml_bytes_greaterequal","caml_bytes_greaterthan","caml_bytes_lessequal","caml_bytes_lessthan","caml_bytes_notequal","caml_bytes_of_array","caml_bytes_of_jsbytes","caml_bytes_of_string","caml_bytes_of_uint8_array","caml_bytes_of_utf16_jsstring","caml_bytes_set","caml_bytes_set16","caml_bytes_set32","caml_bytes_set64","caml_bytes_unsafe_get","caml_bytes_unsafe_set","caml_call_gen","caml_callback","caml_cbrt_float","caml_ceil_float",G,o,cW,ck,"caml_classify_float","caml_compare","caml_compare_val","caml_compare_val_get_custom","caml_compare_val_number_custom","caml_compare_val_tag","caml_continuation_use_and_update_handler_noexc","caml_continuation_use_noexc","caml_convert_bytes_to_array","caml_convert_raw_backtrace","caml_convert_raw_backtrace_slot","caml_convert_string_to_bytes","caml_copysign_float","caml_cos_float","caml_cosh_float","caml_create_bytes","caml_create_file","caml_create_string","caml_current_dir","caml_custom_event_index","caml_custom_identifier","caml_custom_ops","caml_decompress_input",g,"caml_div_float","caml_domain_dls","caml_domain_dls_compare_and_set","caml_domain_dls_get","caml_domain_dls_set","caml_domain_id","caml_domain_spawn","caml_ephe_blit_data",b6,"caml_ephe_check_data",c1,"caml_ephe_create","caml_ephe_data_offset","caml_ephe_get_data","caml_ephe_get_data_copy",_,eA,"caml_ephe_key_offset","caml_ephe_none","caml_ephe_set_data","caml_ephe_set_data_opt","caml_ephe_set_key","caml_ephe_unset_data","caml_ephe_unset_key","caml_eq_float","caml_equal","caml_erf_float","caml_erfc_float","caml_executable_name","caml_exn_with_js_backtrace","caml_exp2_float","caml_exp_float","caml_expm1_float","caml_failwith","caml_fatal_uncaught_exception",ba,M,"caml_final_register","caml_final_register_called_without_value","caml_final_release","caml_finish_formatting","caml_float_compare","caml_float_of_bytes","caml_float_of_int","caml_float_of_string","caml_floatarray_append","caml_floatarray_blit","caml_floatarray_concat","caml_floatarray_create","caml_floatarray_fill","caml_floatarray_fill_unboxed",d7,"caml_floatarray_make","caml_floatarray_make_unboxed",fr,"caml_floatarray_sub","caml_floatarray_unsafe_get","caml_floatarray_unsafe_set","caml_floor_float","caml_fma_float","caml_fmod_float","caml_format_exception","caml_format_float",p,"caml_fresh_oo_id","caml_frexp_float","caml_fs_init","caml_gc_compaction","caml_gc_counters","caml_gc_full_major","caml_gc_get","caml_gc_major","caml_gc_major_slice","caml_gc_minor","caml_gc_minor_words","caml_gc_quick_stat","caml_gc_set","caml_gc_stat","caml_ge_float","caml_get_cached_method","caml_get_continuation_callstack","caml_get_current_callstack","caml_get_exception_backtrace","caml_get_exception_raw_backtrace","caml_get_global_data","caml_get_minor_free","caml_get_public_method","caml_get_root","caml_global_data","caml_gr_arc_aux","caml_gr_blit_image","caml_gr_clear_graph","caml_gr_close_graph","caml_gr_close_subwindow","caml_gr_create_image","caml_gr_current_x","caml_gr_current_y","caml_gr_display_mode","caml_gr_doc_of_state","caml_gr_draw_arc","caml_gr_draw_char","caml_gr_draw_image","caml_gr_draw_rect","caml_gr_draw_str","caml_gr_draw_string","caml_gr_dump_image","caml_gr_fill_arc","caml_gr_fill_poly","caml_gr_fill_rect","caml_gr_lineto","caml_gr_make_image","caml_gr_moveto","caml_gr_open_graph","caml_gr_open_subwindow","caml_gr_plot","caml_gr_point_color","caml_gr_remember_mode","caml_gr_resize_window","caml_gr_set_color","caml_gr_set_font","caml_gr_set_line_width","caml_gr_set_text_size","caml_gr_set_window_title","caml_gr_sigio_handler","caml_gr_sigio_signal","caml_gr_size_x","caml_gr_size_y","caml_gr_state","caml_gr_state_create","caml_gr_state_get","caml_gr_state_init","caml_gr_state_set","caml_gr_synchronize","caml_gr_text_size","caml_gr_wait_event","caml_gr_window_id","caml_greaterequal","caml_greaterthan","caml_gt_float","caml_hash","caml_hash_mix_bigstring","caml_hash_mix_bytes","caml_hash_mix_bytes_arr","caml_hash_mix_final","caml_hash_mix_float","caml_hash_mix_float16","caml_hash_mix_float32","caml_hash_mix_int","caml_hash_mix_int64","caml_hash_mix_jsbytes","caml_hash_mix_string","caml_hash_nat","caml_hexstring_of_float","caml_hypot_float","caml_input_value","caml_input_value_from_bytes","caml_input_value_from_reader","caml_input_value_to_outside_heap","caml_install_signal_handler","caml_int32_add","caml_int32_and","caml_int32_bits_of_float",eJ,ak,C,"caml_int32_float_of_bits",dl,R,X,"caml_int32_neg","caml_int32_of_float","caml_int32_of_int",cK,"caml_int32_or","caml_int32_shift_left","caml_int32_shift_right","caml_int32_shift_right_unsigned","caml_int32_sub","caml_int32_to_float","caml_int32_to_int","caml_int32_unmarshal","caml_int32_xor","caml_int64_add","caml_int64_and","caml_int64_bits_of_float","caml_int64_bswap","caml_int64_compare","caml_int64_create_lo_hi","caml_int64_create_lo_mi_hi","caml_int64_div","caml_int64_float_of_bits","caml_int64_format","caml_int64_hash","caml_int64_hi32","caml_int64_is_negative","caml_int64_is_zero","caml_int64_lo32","caml_int64_marshal","caml_int64_mod","caml_int64_mul","caml_int64_neg","caml_int64_of_bytes","caml_int64_of_float",cX,q,be,"caml_int64_of_string","caml_int64_offset","caml_int64_or","caml_int64_shift_left","caml_int64_shift_right","caml_int64_shift_right_unsigned","caml_int64_sub","caml_int64_to_bytes","caml_int64_to_float",fg,s,eu,"caml_int64_ult","caml_int64_unmarshal","caml_int64_xor",t,"caml_int_of_float",m,"caml_invalid_argument","caml_io_buffer_size","caml_is_continuation_tag","caml_is_js","caml_is_ml_bytes","caml_is_ml_string","caml_is_printable","caml_is_special_exception","caml_js_call","caml_js_delete","caml_js_equals","caml_js_error_of_exception","caml_js_error_option_of_exception","caml_js_eval_string","caml_js_expr","caml_js_from_array","caml_js_from_bool",n,fh,cn,"caml_js_from_string","caml_js_fun_call","caml_js_function_arity","caml_js_get","caml_js_get_console","caml_js_html_entities","caml_js_html_escape","caml_js_instanceof","caml_js_meth_call","caml_js_new","caml_js_object","caml_js_pure_expr","caml_js_set","caml_js_strict_equals","caml_js_to_array","caml_js_to_bool","caml_js_to_byte_string","caml_js_to_float",eZ,eg,"caml_js_to_string","caml_js_typeof","caml_js_var","caml_js_wrap_callback","caml_js_wrap_callback_arguments","caml_js_wrap_callback_strict","caml_js_wrap_callback_unsafe","caml_js_wrap_meth_callback","caml_js_wrap_meth_callback_arguments","caml_js_wrap_meth_callback_strict","caml_js_wrap_meth_callback_unsafe","caml_jsbytes_of_string","caml_jsoo_flags_effects","caml_jsoo_flags_use_js_string","caml_jsstring_of_string","caml_lazy_make_forward","caml_lazy_read_result","caml_lazy_reset_to_lazy","caml_lazy_update_to_forcing","caml_lazy_update_to_forward","caml_ldexp_float","caml_le_float","caml_lessequal","caml_lessthan","caml_lex_array","caml_lex_engine","caml_list_mount_point","caml_list_of_js_array","caml_list_to_js_array","caml_log10_float","caml_log1p_float","caml_log2_float","caml_log_float","caml_lt_float","caml_lxm_M","caml_lxm_daba","caml_lxm_next","caml_make_float_vect","caml_make_path","caml_make_vect","caml_marshal_constants","caml_marshal_data_size","caml_marshal_header_size","caml_maybe_attach_backtrace","caml_maybe_print_stats","caml_md5_bytes","caml_md5_chan","caml_md5_string","caml_memprof_discard","caml_memprof_start","caml_memprof_stop","caml_method_cache","caml_ml_bytes_content","caml_ml_bytes_length","caml_ml_channel_get","caml_ml_channel_redirect","caml_ml_channel_restore","caml_ml_channel_size","caml_ml_channel_size_64","caml_ml_channels","caml_ml_close_channel","caml_ml_condition_broadcast","caml_ml_condition_new","caml_ml_condition_signal","caml_ml_condition_wait","caml_ml_debug_info_status","caml_ml_domain_cpu_relax","caml_ml_domain_id","caml_ml_domain_index","caml_ml_enable_runtime_warnings","caml_ml_flush","caml_ml_gc_ramp_down","caml_ml_gc_ramp_up","caml_ml_input","caml_ml_input_bigarray","caml_ml_input_block","caml_ml_input_char","caml_ml_input_int","caml_ml_input_scan_line","caml_ml_is_binary_mode","caml_ml_is_buffered","caml_ml_mutex_lock","caml_ml_mutex_new","caml_ml_mutex_try_lock","caml_ml_mutex_unlock","caml_ml_open_descriptor_in","caml_ml_open_descriptor_in_with_flags","caml_ml_open_descriptor_out","caml_ml_open_descriptor_out_with_flags","caml_ml_out_channels_list","caml_ml_output","caml_ml_output_bigarray","caml_ml_output_bytes","caml_ml_output_char","caml_ml_output_int","caml_ml_output_ta","caml_ml_pos_in","caml_ml_pos_in_64","caml_ml_pos_out","caml_ml_pos_out_64","caml_ml_runtime_events_are_active","caml_ml_runtime_events_path","caml_ml_runtime_events_pause","caml_ml_runtime_events_resume","caml_ml_runtime_events_start","caml_ml_runtime_warnings_enabled","caml_ml_seek_in","caml_ml_seek_in_64","caml_ml_seek_out","caml_ml_seek_out_64","caml_ml_set_binary_mode","caml_ml_set_buffered","caml_ml_set_channel_name","caml_ml_set_channel_output","caml_ml_set_channel_refill","caml_ml_string_length",f,"caml_modf_float","caml_mount_autoload",d,"caml_mul_float","caml_named_value","caml_named_values","caml_nativeint_add","caml_nativeint_and",bM,c5,bj,fu,eb,S,"caml_nativeint_neg","caml_nativeint_of_float","caml_nativeint_of_int","caml_nativeint_of_int32",ds,"caml_nativeint_or","caml_nativeint_shift_left","caml_nativeint_shift_right","caml_nativeint_shift_right_unsigned","caml_nativeint_sub","caml_nativeint_to_float","caml_nativeint_to_int","caml_nativeint_to_int32","caml_nativeint_unmarshal","caml_nativeint_xor","caml_neg_float","caml_neq_float","caml_new_lex_engine","caml_new_string","caml_nextafter_float","caml_notequal","caml_obj_add_offset","caml_obj_block","caml_obj_compare_and_swap","caml_obj_dup","caml_obj_is_shared","caml_obj_raw_field","caml_obj_reachable_words","caml_obj_set_raw_field","caml_obj_tag","caml_obj_update_tag","caml_obj_with_tag","caml_ojs_new_arr","caml_oo_cache_id","caml_oo_last_id","caml_output_val","caml_output_value","caml_output_value_to_buffer","caml_output_value_to_bytes","caml_output_value_to_string","caml_packFloat16","caml_parse_digit","caml_parse_engine","caml_parse_format","caml_parse_sign_and_base","caml_parser_trace","caml_pos_in","caml_pos_out","caml_power_float","caml_pure_js_expr","caml_raise_constant","caml_raise_end_of_file","caml_raise_no_such_file","caml_raise_nodejs_error","caml_raise_not_found","caml_raise_sys_error","caml_raise_system_error","caml_raise_with_arg","caml_raise_with_args","caml_raise_with_string","caml_raise_zero_divide","caml_raw_backtrace_length","caml_raw_backtrace_next_slot","caml_raw_backtrace_slot","caml_read_file_content","caml_recommended_domain_count","caml_record_backtrace","caml_record_backtrace_env_flag","caml_record_backtrace_runtime_flag","caml_refill","caml_register_global","caml_register_named_value","caml_restore_raw_backtrace","caml_root","caml_round_float","caml_runtime_events_create_cursor","caml_runtime_events_free_cursor","caml_runtime_events_read_poll","caml_runtime_events_user_register","caml_runtime_events_user_resolve","caml_runtime_events_user_write","caml_runtime_parameters","caml_runtime_variant","caml_runtime_warnings","caml_seek_in","caml_seek_out","caml_set_oo_id","caml_set_parser_trace","caml_set_static_env",d5,aX,"caml_sin_float","caml_sinh_float","caml_sqrt_float","caml_str_repeat","caml_strerror","caml_string_bound_error","caml_string_compare","caml_string_concat","caml_string_equal","caml_string_get","caml_string_get16","caml_string_get32","caml_string_get64","caml_string_greaterequal","caml_string_greaterthan","caml_string_hash","caml_string_lessequal","caml_string_lessthan","caml_string_notequal","caml_string_of_array","caml_string_of_bytes","caml_string_of_jsbytes","caml_string_of_jsstring","caml_string_of_uint8_array","caml_string_set","caml_string_unsafe_get","caml_sub_float","caml_sub_uint8_array_to_jsbytes","caml_subarray_to_jsbytes","caml_sys_argv","caml_sys_chdir","caml_sys_close","caml_sys_const_backend_type","caml_sys_const_big_endian","caml_sys_const_int_size","caml_sys_const_max_wosize","caml_sys_const_naked_pointers_checked","caml_sys_const_ostype_cygwin","caml_sys_const_ostype_unix","caml_sys_const_ostype_win32","caml_sys_const_word_size","caml_sys_convert_signal_number","caml_sys_executable_name",j,"caml_sys_fds","caml_sys_file_exists","caml_sys_get_argv","caml_sys_get_config",k,"caml_sys_getenv","caml_sys_getenv_opt","caml_sys_io_buffer_size","caml_sys_is_directory","caml_sys_is_regular_file","caml_sys_isatty","caml_sys_mkdir","caml_sys_modify_argv","caml_sys_open","caml_sys_open_for_node","caml_sys_random_seed","caml_sys_read_directory","caml_sys_remove","caml_sys_rename","caml_sys_rev_convert_signal_number","caml_sys_rmdir","caml_sys_system_command","caml_sys_temp_dir_name","caml_sys_time","caml_sys_time_include_children","caml_sys_unsafe_getenv","caml_tan_float","caml_tanh_float","caml_throw_js_exception","caml_to_js_string","caml_trailing_slash","caml_trampoline","caml_trampoline_return","caml_trunc_float","caml_uint8_array_of_bytes","caml_uint8_array_of_string","caml_uniform_array_append","caml_uniform_array_blit","caml_uniform_array_concat","caml_uniform_array_fill","caml_uniform_array_make","caml_uniform_array_sub",c_,c$,fm,by,fi,dW,dD,du,ao,bE,fd,cO,dQ,dA,I,V,ev,dq,cv,a1,cb,fj,bD,bc,b,e5,bQ,aG,aW,ap,l,di,c7,eP,dj,fk,a4,aI,ei,ae,ai,Z,bl,dO,r,cG,ey,dp,fq,ee,A,af,aB,ew,dZ,d2,eS,a_,b7,cw,B,dF,dx,cr,dX,"caml_unmount","caml_unpackFloat16","caml_update_dummy","caml_update_dummy_lazy",eW,dh,"caml_weak_create",ah,a2,"caml_weak_set","caml_wrap_exception","caml_xdg_defaults","caml_xmlhttprequest_create","caml_zstd_initialize","compare_digits_nat","compare_nat","complement_nat","create_nat","decr_nat","deserialize_nat","div_digit_nat","div_helper","div_nat","fs_node_supported","incr_nat","initialize_nat","is_digit_int","is_digit_normalized","is_digit_odd","is_digit_zero","jsoo_create_file","jsoo_create_file_extern","jsoo_dataview","jsoo_effect_not_supported","jsoo_is_ascii","jsoo_is_win32","jsoo_mount_point","jsoo_static_env","jsoo_sys_getenv","jsoo_text_decoder","jsoo_text_decoder_buff","jsoo_text_encoder","jsoo_toplevel_reloc","land_digit_nat","length_nat","lor_digit_nat","lxor_digit_nat","make_unix_err_args","mult_digit_nat","mult_nat","nat_of_array","nth_digit_nat","nth_digit_nat_native","num_digits_nat","num_leading_zero_bits_in_digit","ocaml_stats_from_node_stats","os_type","path_is_absolute","re_match","re_partial_match","re_replacement_text","re_search_backward","re_search_forward","re_string_match","resolve_fs_device","serialize_nat","set_digit_nat","set_digit_nat_native","set_to_zero_nat","shift_left_nat","shift_right_nat","square_nat","sub_nat",a6,eN,eh,dr,aa,"unix_error",a$,e3,u,b0,et,a5,eU,e4,er,c9,b9,aM,al,L,b8,e6,y,O,bz,z,aH,ac,aE,dJ,am,d1,bu,dU,dy,ch,de,fn,eB,as,aR,cH,eq,eI,dR,aQ,w,eD,bO,bL,bW,bB,dk,cU,c2,v,bC,aA,ab,br,b4,ex,eE,ed,cu,cd,eK,"zstd_decompress"]),0];return}(globalThis)); 9433 + i=a.jsoo_runtime,c=i.caml_get_global_data(),d$="caml_unix_stat_64",d_="unix_lseek",l="caml_unix_inchannel_of_filedescr",d8="caml_unix_stat",d6="caml_unix_write_bigarray",fE="caml_nativeint_format",bf="caml_int64_of_nativeint",d5="caml_unix_closedir",bd="caml_unix_getgrnam",cB="caml_unix_truncate",cA="caml_unix_getcwd",fA="caml_unix_readlink",fB="caml_floatarray_set",bb="caml_fill_bytes",ba="unix_error_message",cz="win_inchannel_of_filedescr",a$="caml_unix_time",cv="caml_unix_write",d1="unix_lstat",fx="unix_open",dY="unix_rename",fw="caml_unix_chmod",a7="unix_access",a5="caml_unix_lseek",a6="unix_fsync",dX="caml_unix_findnext",a3="caml_weak_get_copy",h="caml_array_set",dV="caml_unix_opendir",fu="caml_unix_lookup_file",a2="caml_unix_getegid",ft="caml_unix_getgid",cq="caml_js_from_nativeint",aX="caml_unix_gmtime",aY="caml_signbit_float",fs="caml_unix_close",fr="caml_js_from_int32",fq="caml_int64_to_int",cn="caml_check_bound_gen",p="caml_format_int",dQ="unix_link",ck="unix_mkdir",aR="unix_rewinddir",aS="unix_read",dM="caml_unix_unlink",aN="unix_getgid",dK="caml_unix_error_message",fm="caml_unix_findclose",aJ="caml_unix_lseek_64",fj="caml_array_get_float",cg="win_outchannel_of_filedescr",dH="caml_unix_fstat",cd="caml_unix_geteuid",dF="unix_lstat_64",aI="unix_inchannel_of_filedescr",b_="unix_getpwnam",b$="unix_geteuid",aH="caml_unix_getuid",dE="caml_unix_utimes",fc="caml_unix_getpwuid",fd="unix_getpwuid",o="caml_check_bound",fb="unix_ftruncate_64",aF="unix_isatty",b9="caml_unix_times",dB="caml_unix_exit",fa="unix_exit",aC="caml_unix_single_write",b8="caml_ephe_blit_key",dz="caml_nativeint_of_string",aB="unix_write",dx="caml_unix_ftruncate_64",dy="unix_close",e8="caml_js_to_int32",k="caml_sys_getcwd",dw="caml_unix_readdir",b6="win_findclose",av="%int_mul",dt="caml_int32_format",e5="caml_weak_blit",dr="caml_unix_localtime",ds="unix_times",e4="caml_array_set_addr",dq="caml_unix_inet_addr_of_string",e3="unix_ftruncate",dp="caml_weak_check",e1="caml_unix_symlink",at="unix_outchannel_of_filedescr",aq="caml_unix_has_symlink",dl="unix_mktime",s="caml_int64_to_int32",b2="unix_fstat",eY="caml_unix_link",ap="caml_unix_fchmod",bY="unix_symlink",an="unix_localtime",eW="unix_chdir",am="unix_getgrgid",al="caml_int32_compare",aj="caml_unix_mkdir",eT="win_startup",eS="caml_int32_bswap",ai="caml_weak_get",eR="unix_readlink",ag="caml_unix_rmdir",e="caml_array_get",af="caml_unix_lstat_64",ad="unix_inet_addr_of_string",bS="caml_unix_gettimeofday",r="caml_unix_outchannel_of_filedescr",bQ="unix_stat",df="caml_unix_chdir",ab="unix_closedir",ac="win_cleanup",bO="caml_nativeint_bswap",_="caml_unix_mktime",$="caml_ephe_get_key",aa="%int_mod",bN="unix_stat_64",dd="unix_getegid",de="caml_unix_access",db="caml_unix_isatty",Y="caml_int32_mul",c$="caml_nativeint_compare",q="caml_int64_of_int32",W="caml_unix_fsync",eN="win_findnext",T="caml_nativeint_mul",eM="unix_single_write",S="caml_int32_mod",n="caml_js_from_float",c8="unix_truncate_64",c7="caml_ephe_check_key",eK="unix_opendir",bJ="caml_array_set_float",eJ="caml_ephe_get_key_copy",O="unix_getuid",d="caml_mul",M="caml_fill_string",g="caml_div",c3="caml_int64_of_int",eH="caml_unix_read_bigarray",L="unix_getgrnam",eG="win_findfirst",eF="caml_unix_startup",bG="caml_unix_filedescr_of_fd",eE="caml_unix_ftruncate",f="caml_mod",c1="caml_check_bound_float",bE="unix_utimes",bF="caml_unix_getgrgid",eD="caml_int64_to_nativeint",bD="unix_time",eC="unix_fstat_64",I="caml_unix_fstat_64",cZ="unix_truncate",bB="unix_gmtime",bA="caml_unix_cleanup",eA="unix_getcwd",ez="unix_readdir",j="caml_sys_exit",G="caml_channel_descriptor",bw="unix_lseek_64",t="caml_int_compare",E="caml_array_get_addr",eq="unix_chmod",er="caml_unix_lstat",ep="caml_js_to_nativeint",C="caml_int32_div",cT="caml_unix_findfirst",B="caml_unix_truncate_64",A="caml_unix_rewinddir",z="unix_has_symlink",m="caml_int_of_string",en="caml_unix_rename",bt="win_filedescr_of_channel",y="unix_gettimeofday",em="win_handle_fd",b="caml_unix_getpwnam",cP="caml_int32_of_string",ek="caml_nativeint_mod",w="unix_rmdir",cL="caml_unix_read",cM="unix_read_bigarray",ee="caml_floatarray_get",v="unix_unlink",bn="caml_unix_open",ec="caml_signbit",u="unix_fchmod",bl="caml_nativeint_div",ea="%int_div";c.aliases=i.caml_list_of_js_array([[0,cn,o],[0,fq,s],[0,ea,g],[0,fr,n],[0,eG,cT],[0,bl,g],[0,u,ap],[0,L,b],[0,at,r],[0,c3,q],[0,cq,n],[0,ec,aY],[0,dp,c7],[0,M,bb],[0,v,dM],[0,e3,eE],[0,ee,e],[0,e4,h],[0,O,aH],[0,cM,eH],[0,w,ag],[0,ds,b9],[0,e5,b8],[0,dt,p],[0,fu,d6],[0,bJ,h],[0,av,d],[0,eK,dV],[0,b6,fm],[0,cP,m],[0,ek,f],[0,c8,B],[0,S,f],[0,a3,eJ],[0,T,d],[0,eM,aC],[0,dy,fs],[0,a6,W],[0,aB,cv],[0,dz,m],[0,a7,de],[0,em,bG],[0,eN,dX],[0,y,bS],[0,bt,G],[0,fa,j],[0,c$,t],[0,Y,d],[0,dB,j],[0,z,aq],[0,dY,en],[0,aF,db],[0,fb,dx],[0,dd,a2],[0,d1,er],[0,fx,bn],[0,C,g],[0,fd,b],[0,fc,b],[0,bN,d$],[0,ep,e8],[0,aa,f],[0,bO,eS],[0,b$,cd],[0,b_,b],[0,ac,bA],[0,ab,d5],[0,cz,l],[0,eq,fw],[0,bQ,d8],[0,E,e],[0,aI,l],[0,ad,dq],[0,dF,af],[0,fB,h],[0,cA,k],[0,cg,r],[0,fj,e],[0,eR,fA],[0,ai,$],[0,bd,b],[0,bw,aJ],[0,eT,eF],[0,ez,dw],[0,aN,ft],[0,dK,ba],[0,al,t],[0,eA,k],[0,bB,aX],[0,bf,q],[0,am,b],[0,cZ,cB],[0,eW,df],[0,an,dr],[0,fE,p],[0,eC,I],[0,bY,e1],[0,bD,a$],[0,eD,s],[0,aS,cL],[0,aR,A],[0,ck,aj],[0,bF,b],[0,dQ,eY],[0,bE,dE],[0,c1,o],[0,b2,dH],[0,d_,a5],[0,dl,_]]);c.prim_count=981;var 9434 + cF="Stdweb__Stdweb_map",d9=133,bh=102,d7="Helix__Http",cD=114,cE="Stdlib__Type",bg="Stdweb__Stdweb_form_data",be="Globe__Sphere",cC="Helix__Router",fD="Stdlib__Buffer",d4="Stdlib__Out_channel",d3="Kepler",fC="Match_failure",bc="Stdlib__Gc",d2="Kepler__Propagate",fz="Stdlib__Unit",fy=136,cy="Jsoo_runtime__Runtime_version",cw="Kepler__Vec3",cx="Stdlib__Map",d0="Stdlib__Parsing",a_="Stdlib__Effect",dZ="Brr",a9="Globe_webgl__Coverage",cu=108,a8="Stdlib__String",a4="Stdlib__BytesLabels",dW="Jv",dU="Stdlib__Condition",fv="Stdlib__Repr",ct=148,dT="Stdlib__Filename",a1="Stdlib__In_channel",dS="Not_found",cs=154,cr="Helix",aZ="CamlinternalLazy",a0="Jstr",cp="Division_by_zero",aV="Stdweb__Stdweb_promise",aW="Stdweb__Stdweb_storage",aU=117,dR="Globe_webgl__Orbit",co=104,cm="Stdlib__Either",aT="Stdweb__Stdweb_dict",cl=109,cj="Stdweb__Stdweb_global",ci="Globe__Gl_coord",dP="Stdlib__Callback",aQ="Stdweb__Stdweb_fetch",aP="Stdlib__Lexing",ch="Undefined_recursive_module",dN="Stdlib__Printf",dO="Stdweb__Stdweb_url_search_params",fp=111,aO="Stdlib__Bool",dL="Stdlib__Int",fo="Brr_webworkers",fn=153,dJ="Stdlib__MoreLabels",aL=103,aM=127,dI="Sys_error",aK=100,fk="Stdlib__Digest",fl="Stdweb__Stdweb_json",fi="Stdlib__Pqueue",dG=101,fh="Brr_webcrypto",cf="Stdweb__",ce=151,cc="Stdlib__Queue",fg=110,cb="Helix__View",ca="Stdlib__Set",ff="Stdlib__Stack",dC="Stdlib__Complex",dD="Stdweb__Stdweb_iterator",fe="Jx__",aG="Jsoo_runtime__",aE="Globe",dA="Jsoo_runtime",e_="Globe_webgl__Camera",e$=130,aD="Stdlib__Nativeint",e9=128,aA=113,b7=146,dv="Sys_blocked_io",az="Stdlib__Random",du="Jx",ay=135,b5=144,e7="Globe_webgl__Scene",aw=106,ax="Stdlib__Marshal",e6=140,b4="Stdlib__Ephemeron",e2="Brr_webaudio",au="CamlinternalMod",b3="Stdweb__Stdweb_object",as="Helix__History",ar="Signal",dn="Stdweb__Stdweb_websocket",e0="Stdlib__Fun",eZ="Stdlib__Char",dm=125,bZ=116,b0="Stdlib__Pair",b1=138,eX=126,ao="Globe__Math",ak="Brr_io",dk=150,eV="CamlinternalFormatBasics",dj="Stdlib__Weak",bX=105,di="Stdlib__Format",eU="Stdlib__StdLabels",dh="Stdlib__Int64",dg="Stdweb__Stdweb_console",ah="Stdlib__ArrayLabels",bW=129,bV="Brr_canvas",bU="Stdlib__Bigarray",ae="Stdweb__Stdweb_dom",bT=137,bR=132,bP="Globe_webgl",Z="Jx__Jx_ffi",dc="Dune__exe__Main",da="Stdweb__Stdweb_clipboard",X=115,c_=131,eO=122,eP="Stdlib",eQ="Stdlib__StringLabels",V="Stdlib__Atomic",bM="Globe_webgl__Earth",U="Stdlib__ListLabels",c9="Stdlib__Seq",eL="Stdlib__Iarray",bL="Globe__Color",R=134,bK="Stdweb__Stdweb_array",Q="Stdlib__Uchar",P=152,c6="Stdlib__Arg",N="Brr_webmidi",c5="Stdlib__Scanf",eI=112,c4="Globe_webgl__Shader",K="Html",c2="Globe__Satellite",bI=107,bH="Stdlib__Printexc",c0=147,J="Globe__Geometry",bC="Stdlib__Dynarray",eB="Assert_failure",H=141,by=118,bz=121,bx=120,cY="Stdlib__Array",cX="Stdlib__Obj",ey="Stdlib__Hashtbl",ew="Stdlib__Domain",ex="Stdlib__Option",ev=124,bv="Brr_webgpu",eu="Std_exit",es="Brr_css",et=149,F="Globe_webgl__Grid",D="Helix__Time",bu=145,cW="Globe_webgl__Stars",cU="Invalid_argument",cV="Stack_overflow",cS="End_of_file",eo="Failure",el="Stdlib__Lazy",cR="Ptime",bs="Stdlib__Semaphore",cQ="Out_of_memory",x="Stdlib__Bytes",br="Stdlib__Sys",ej=143,cO="Fut",ei="CamlinternalOO",cN="Stdlib__Int32",eh="Stdlib__Oo",bp="Helix__",bq=123,ef=119,eg="Stdlib__Mutex",bo="Stdlib__List",cK=139,cJ="Jx__jx_jsoo__",bm="Stdweb",ed="Stdlib__Float",bk=142,cI="CamlinternalFormat",eb="Fmt",bj="Kepler__Analytic",cH="Helix__Mouse",bi="Coordinate",cG="Stdlib__Result";c.symbols=[0,[0,ch,11],[0,dI,10],[0,dv,9],[0,dn,e$],[0,dO,c_],[0,aW,bR],[0,aV,e9],[0,b3,d9],[0,cF,ay],[0,fl,fy],[0,dD,R],[0,cj,aM],[0,bg,bT],[0,aQ,b1],[0,ae,bW],[0,aT,cK],[0,dg,e6],[0,da,H],[0,bK,bk],[0,cf,eX],[0,bm,ej],[0,dj,64],[0,fz,34],[0,Q,27],[0,cE,17],[0,br,15],[0,eQ,79],[0,a8,33],[0,eU,81],[0,ff,45],[0,ca,43],[0,c9,21],[0,bs,50],[0,c5,66],[0,cG,24],[0,fv,42],[0,az,62],[0,cc,46],[0,dN,53],[0,bH,55],[0,fi,72],[0,d0,41],[0,b0,23],[0,d4,59],[0,ex,22],[0,eh,69],[0,cX,16],[0,aD,39],[0,eg,48],[0,dJ,80],[0,ax,35],[0,cx,44],[0,U,77],[0,bo,28],[0,aP,40],[0,el,20],[0,dh,38],[0,cN,37],[0,dL,29],[0,a1,58],[0,eL,31],[0,ey,63],[0,bc,57],[0,e0,56],[0,di,65],[0,ed,36],[0,dT,74],[0,b4,73],[0,cm,14],[0,a_,82],[0,bC,71],[0,ew,51],[0,fk,60],[0,dU,49],[0,dC,75],[0,eZ,26],[0,dP,67],[0,a4,78],[0,x,32],[0,fD,47],[0,aO,25],[0,bU,61],[0,V,18],[0,ah,76],[0,cY,30],[0,c6,54],[0,eP,13],[0,eu,cs],[0,cV,8],[0,ar,bz],[0,cR,88],[0,cQ,7],[0,dS,6],[0,fC,5],[0,cw,85],[0,d2,86],[0,bj,87],[0,d3,84],[0,cJ,eO],[0,Z,bq],[0,fe,dm],[0,du,ev],[0,dW,dG],[0,a0,aK],[0,cy,98],[0,aG,97],[0,dA,99],[0,cU,4],[0,K,b5],[0,cb,b7],[0,D,c0],[0,cC,ct],[0,cH,et],[0,d7,dk],[0,as,ce],[0,bp,bu],[0,cr,P],[0,cW,cD],[0,c4,aA],[0,e7,bx],[0,dR,ef],[0,F,by],[0,bM,aU],[0,a9,bZ],[0,e_,X],[0,bP,eI],[0,be,92],[0,c2,95],[0,ao,91],[0,ci,94],[0,J,96],[0,bL,93],[0,aE,90],[0,cO,bh],[0,eb,83],[0,eo,3],[0,cS,2],[0,dc,fn],[0,cp,1],[0,bi,89],[0,ei,68],[0,au,70],[0,aZ,19],[0,eV,12],[0,cI,52],[0,fo,fp],[0,N,fg],[0,bv,bI],[0,fh,cl],[0,e2,cu],[0,ak,bX],[0,es,co],[0,bV,aw],[0,dZ,aL],[0,eB,0]];c.sections=[0,[0,155,[0,[0,[0,[0,[0,[0,[0,0,[0,eB],0,0,1],[0,dZ],aL,[0,0,[0,bV],aw,0,1],2],[0,es],co,[0,[0,[0,0,[0,ak],bX,0,1],[0,e2],cu,[0,0,[0,fh],cl,0,1],2],[0,bv],bI,[0,[0,0,[0,N],fg,[0,0,[0,fo],fp,0,1],2],[0,cI],52,[0,0,[0,eV],12,0,1],3],4],5],[0,aZ],19,[0,[0,[0,0,[0,au],70,0,1],[0,ei],68,[0,0,[0,bi],89,0,1],2],[0,cp],1,[0,[0,0,[0,dc],fn,0,1],[0,cS],2,0,2],3],6],[0,eo],3,[0,[0,[0,[0,0,[0,eb],83,[0,0,[0,cO],bh,0,1],2],[0,aE],90,0,3],[0,bL],93,[0,[0,[0,0,[0,J],96,0,1],[0,ci],94,0,2],[0,ao],91,[0,[0,0,[0,c2],95,0,1],[0,be],92,[0,0,[0,bP],eI,0,1],2],3],4],[0,e_],X,[0,[0,[0,[0,0,[0,a9],bZ,0,1],[0,bM],aU,0,2],[0,F],by,[0,0,[0,dR],ef,[0,0,[0,e7],bx,0,1],2],3],[0,c4],aA,[0,[0,[0,0,[0,cW],cD,[0,0,[0,cr],P,0,1],2],[0,bp],bu,[0,[0,[0,0,[0,as],ce,0,1],[0,d7],dk,0,2],[0,cH],et,[0,0,[0,cC],ct,0,1],3],4],[0,D],c0,[0,0,[0,cb],b7,[0,0,[0,K],b5,0,1],2],5],6],7],8],[0,cU],4,[0,[0,[0,[0,0,[0,dA],99,0,1],[0,aG],97,[0,0,[0,cy],98,0,1],2],[0,a0],aK,[0,[0,0,[0,dW],dG,[0,0,[0,du],ev,[0,0,[0,fe],dm,0,1],2],3],[0,Z],bq,[0,0,[0,cJ],eO,0,1],4],5],[0,d3],84,[0,[0,[0,[0,0,[0,bj],87,0,1],[0,d2],86,[0,0,[0,cw],85,0,1],2],[0,fC],5,[0,[0,0,[0,dS],6,0,1],[0,cQ],7,[0,[0,0,[0,cR],88,[0,0,[0,ar],bz,0,1],2],[0,cV],8,[0,0,[0,eu],cs,0,1],3],4],5],[0,eP],13,[0,[0,[0,[0,0,[0,c6],54,0,1],[0,cY],30,[0,0,[0,ah],76,0,1],2],[0,V],18,[0,[0,0,[0,bU],61,0,1],[0,aO],25,[0,0,[0,fD],47,0,1],2],3],[0,x],32,[0,[0,[0,[0,0,[0,a4],78,0,1],[0,dP],67,0,2],[0,eZ],26,[0,0,[0,dC],75,0,1],3],[0,dU],49,[0,[0,0,[0,fk],60,0,1],[0,ew],51,[0,0,[0,bC],71,[0,0,[0,a_],82,0,1],2],3],4],5],6],7],9],[0,cm],14,[0,[0,[0,[0,[0,[0,0,[0,b4],73,[0,0,[0,dT],74,0,1],2],[0,ed],36,[0,0,[0,di],65,0,1],3],[0,e0],56,[0,[0,0,[0,bc],57,[0,0,[0,ey],63,0,1],2],[0,eL],31,[0,0,[0,a1],58,0,1],3],4],[0,dL],29,[0,0,[0,cN],37,[0,0,[0,dh],38,0,1],2],5],[0,el],20,[0,[0,[0,0,[0,aP],40,0,1],[0,bo],28,[0,[0,0,[0,U],77,0,1],[0,cx],44,0,2],3],[0,ax],35,[0,[0,[0,0,[0,dJ],80,0,1],[0,eg],48,0,2],[0,aD],39,0,3],4],6],[0,cX],16,[0,[0,[0,[0,[0,[0,0,[0,eh],69,0,1],[0,ex],22,[0,0,[0,d4],59,0,1],2],[0,b0],23,0,3],[0,d0],41,[0,[0,[0,[0,0,[0,fi],72,0,1],[0,bH],55,0,2],[0,dN],53,0,3],[0,cc],46,[0,[0,0,[0,az],62,0,1],[0,fv],42,0,2],4],5],[0,cG],24,[0,[0,[0,[0,0,[0,c5],66,0,1],[0,bs],50,0,2],[0,c9],21,0,3],[0,ca],43,[0,[0,0,[0,ff],45,[0,0,[0,eU],81,0,1],2],[0,a8],33,[0,0,[0,eQ],79,0,1],3],4],6],[0,br],15,[0,[0,[0,[0,[0,0,[0,cE],17,0,1],[0,Q],27,[0,0,[0,fz],34,0,1],2],[0,dj],64,[0,[0,0,[0,bm],ej,0,1],[0,cf],eX,[0,[0,0,[0,bK],bk,0,1],[0,da],H,0,2],3],4],[0,dg],e6,[0,[0,0,[0,aT],cK,0,1],[0,ae],bW,[0,[0,0,[0,aQ],b1,0,1],[0,bg],bT,0,2],3],5],[0,cj],aM,[0,[0,[0,[0,0,[0,dD],R,[0,0,[0,fl],fy,0,1],2],[0,cF],ay,[0,0,[0,b3],d9,0,1],3],[0,aV],e9,[0,[0,0,[0,aW],bR,0,1],[0,dO],c_,[0,0,[0,dn],e$,0,1],2],4],[0,dv],9,[0,0,[0,dI],10,[0,0,[0,ch],11,0,1],2],5],6],7],8],10]],0,i.caml_list_of_js_array(["%caml_format_int_special","%direct_int_div","%direct_int_mod","%direct_int_mul","%direct_obj_tag","%int_add","%int_and","%int_asr",ea,"%int_lsl","%int_lsr",aa,av,"%int_neg","%int_or","%int_sub","%int_xor","JsStringReader","MlBytes","MlChanid","MlFakeDevice","MlFakeFd","MlFakeFd_out","MlFakeFile","MlFile","MlInt64","MlMutex","MlNat","MlNodeDevice","MlNodeFd","MlObjectTable","Ml_Bigarray","Ml_Bigarray_c_1_1","UInt8ArrayReader","add_nat","bigstring_of_array_buffer","bigstring_of_typed_array","bigstring_to_array_buffer","bigstring_to_typed_array","blake2b","blit_nat","caml_MD5Final","caml_MD5Init","caml_MD5Transform","caml_MD5Update","caml_abs_float","caml_acos_float","caml_acosh_float","caml_add_float","caml_alloc_dummy","caml_alloc_dummy_float","caml_alloc_dummy_lazy","caml_alloc_stack","caml_argv","caml_array_append","caml_array_blit","caml_array_bound_error","caml_array_concat","caml_array_create_float","caml_array_fill",e,E,fj,"caml_array_make","caml_array_of_bytes","caml_array_of_string",h,e4,bJ,"caml_array_sub","caml_array_unsafe_get","caml_array_unsafe_get_float","caml_array_unsafe_set","caml_array_unsafe_set_addr","caml_array_unsafe_set_float","caml_asin_float","caml_asinh_float","caml_atan2_float","caml_atan_float","caml_atanh_float","caml_atomic_cas","caml_atomic_cas_field","caml_atomic_exchange","caml_atomic_exchange_field","caml_atomic_fetch_add","caml_atomic_fetch_add_field","caml_atomic_load","caml_atomic_load_field","caml_atomic_make_contended","caml_ba_blit","caml_ba_change_layout","caml_ba_compare","caml_ba_create","caml_ba_create_buffer","caml_ba_create_from","caml_ba_create_unsafe","caml_ba_custom_name","caml_ba_deserialize","caml_ba_dim","caml_ba_dim_1","caml_ba_dim_2","caml_ba_dim_3","caml_ba_fill","caml_ba_from_typed_array","caml_ba_get_1","caml_ba_get_2","caml_ba_get_3","caml_ba_get_generic","caml_ba_get_size","caml_ba_get_size_per_element","caml_ba_hash","caml_ba_init","caml_ba_kind","caml_ba_kind_of_typed_array","caml_ba_layout","caml_ba_map_file","caml_ba_map_file_bytecode","caml_ba_num_dims","caml_ba_reshape","caml_ba_serialize","caml_ba_set_1","caml_ba_set_2","caml_ba_set_3","caml_ba_set_generic","caml_ba_slice","caml_ba_sub","caml_ba_to_typed_array","caml_ba_uint8_get16","caml_ba_uint8_get32","caml_ba_uint8_get64","caml_ba_uint8_set16","caml_ba_uint8_set32","caml_ba_uint8_set64","caml_backtrace_status","caml_bigstring_blit_ba_to_ba","caml_bigstring_blit_ba_to_bytes","caml_bigstring_blit_bytes_to_ba","caml_bigstring_blit_string_to_ba","caml_bigstring_memcmp","caml_blake2_bytes","caml_blake2_create","caml_blake2_final","caml_blake2_string","caml_blake2_update","caml_blit_bytes","caml_blit_string","caml_bswap16","caml_build_symbols","caml_bytes_bound_error","caml_bytes_compare","caml_bytes_equal","caml_bytes_get","caml_bytes_get16","caml_bytes_get32","caml_bytes_get64","caml_bytes_greaterequal","caml_bytes_greaterthan","caml_bytes_lessequal","caml_bytes_lessthan","caml_bytes_notequal","caml_bytes_of_array","caml_bytes_of_jsbytes","caml_bytes_of_string","caml_bytes_of_uint8_array","caml_bytes_of_utf16_jsstring","caml_bytes_set","caml_bytes_set16","caml_bytes_set32","caml_bytes_set64","caml_bytes_unsafe_get","caml_bytes_unsafe_set","caml_call_gen","caml_callback","caml_cbrt_float","caml_ceil_float",G,o,c1,cn,"caml_classify_float","caml_compare","caml_compare_val","caml_compare_val_get_custom","caml_compare_val_number_custom","caml_compare_val_tag","caml_continuation_use_and_update_handler_noexc","caml_continuation_use_noexc","caml_convert_bytes_to_array","caml_convert_raw_backtrace","caml_convert_raw_backtrace_slot","caml_convert_string_to_bytes","caml_copysign_float","caml_cos_float","caml_cosh_float","caml_create_bytes","caml_create_file","caml_create_string","caml_current_dir","caml_custom_event_index","caml_custom_identifier","caml_custom_ops","caml_decompress_input",g,"caml_div_float","caml_domain_dls","caml_domain_dls_compare_and_set","caml_domain_dls_get","caml_domain_dls_set","caml_domain_id","caml_domain_spawn","caml_ephe_blit_data",b8,"caml_ephe_check_data",c7,"caml_ephe_create","caml_ephe_data_offset","caml_ephe_get_data","caml_ephe_get_data_copy",$,eJ,"caml_ephe_key_offset","caml_ephe_none","caml_ephe_set_data","caml_ephe_set_data_opt","caml_ephe_set_key","caml_ephe_unset_data","caml_ephe_unset_key","caml_eq_float","caml_equal","caml_erf_float","caml_erfc_float","caml_executable_name","caml_exn_with_js_backtrace","caml_exp2_float","caml_exp_float","caml_expm1_float","caml_failwith","caml_fatal_uncaught_exception",bb,M,"caml_final_register","caml_final_register_called_without_value","caml_final_release","caml_finish_formatting","caml_float_compare","caml_float_of_bytes","caml_float_of_int","caml_float_of_string","caml_floatarray_append","caml_floatarray_blit","caml_floatarray_concat","caml_floatarray_create","caml_floatarray_fill","caml_floatarray_fill_unboxed",ee,"caml_floatarray_make","caml_floatarray_make_unboxed",fB,"caml_floatarray_sub","caml_floatarray_unsafe_get","caml_floatarray_unsafe_set","caml_floor_float","caml_fma_float","caml_fmod_float","caml_format_exception","caml_format_float",p,"caml_fresh_oo_id","caml_frexp_float","caml_fs_init","caml_gc_compaction","caml_gc_counters","caml_gc_full_major","caml_gc_get","caml_gc_major","caml_gc_major_slice","caml_gc_minor","caml_gc_minor_words","caml_gc_quick_stat","caml_gc_set","caml_gc_stat","caml_ge_float","caml_get_cached_method","caml_get_continuation_callstack","caml_get_current_callstack","caml_get_exception_backtrace","caml_get_exception_raw_backtrace","caml_get_global_data","caml_get_minor_free","caml_get_public_method","caml_get_root","caml_global_data","caml_gr_arc_aux","caml_gr_blit_image","caml_gr_clear_graph","caml_gr_close_graph","caml_gr_close_subwindow","caml_gr_create_image","caml_gr_current_x","caml_gr_current_y","caml_gr_display_mode","caml_gr_doc_of_state","caml_gr_draw_arc","caml_gr_draw_char","caml_gr_draw_image","caml_gr_draw_rect","caml_gr_draw_str","caml_gr_draw_string","caml_gr_dump_image","caml_gr_fill_arc","caml_gr_fill_poly","caml_gr_fill_rect","caml_gr_lineto","caml_gr_make_image","caml_gr_moveto","caml_gr_open_graph","caml_gr_open_subwindow","caml_gr_plot","caml_gr_point_color","caml_gr_remember_mode","caml_gr_resize_window","caml_gr_set_color","caml_gr_set_font","caml_gr_set_line_width","caml_gr_set_text_size","caml_gr_set_window_title","caml_gr_sigio_handler","caml_gr_sigio_signal","caml_gr_size_x","caml_gr_size_y","caml_gr_state","caml_gr_state_create","caml_gr_state_get","caml_gr_state_init","caml_gr_state_set","caml_gr_synchronize","caml_gr_text_size","caml_gr_wait_event","caml_gr_window_id","caml_greaterequal","caml_greaterthan","caml_gt_float","caml_hash","caml_hash_mix_bigstring","caml_hash_mix_bytes","caml_hash_mix_bytes_arr","caml_hash_mix_final","caml_hash_mix_float","caml_hash_mix_float16","caml_hash_mix_float32","caml_hash_mix_int","caml_hash_mix_int64","caml_hash_mix_jsbytes","caml_hash_mix_string","caml_hash_nat","caml_hexstring_of_float","caml_hypot_float","caml_input_value","caml_input_value_from_bytes","caml_input_value_from_reader","caml_input_value_to_outside_heap","caml_install_signal_handler","caml_int32_add","caml_int32_and","caml_int32_bits_of_float",eS,al,C,"caml_int32_float_of_bits",dt,S,Y,"caml_int32_neg","caml_int32_of_float","caml_int32_of_int",cP,"caml_int32_or","caml_int32_shift_left","caml_int32_shift_right","caml_int32_shift_right_unsigned","caml_int32_sub","caml_int32_to_float","caml_int32_to_int","caml_int32_unmarshal","caml_int32_xor","caml_int64_add","caml_int64_and","caml_int64_bits_of_float","caml_int64_bswap","caml_int64_compare","caml_int64_create_lo_hi","caml_int64_create_lo_mi_hi","caml_int64_div","caml_int64_float_of_bits","caml_int64_format","caml_int64_hash","caml_int64_hi32","caml_int64_is_negative","caml_int64_is_zero","caml_int64_lo32","caml_int64_marshal","caml_int64_mod","caml_int64_mul","caml_int64_neg","caml_int64_of_bytes","caml_int64_of_float",c3,q,bf,"caml_int64_of_string","caml_int64_offset","caml_int64_or","caml_int64_shift_left","caml_int64_shift_right","caml_int64_shift_right_unsigned","caml_int64_sub","caml_int64_to_bytes","caml_int64_to_float",fq,s,eD,"caml_int64_ult","caml_int64_unmarshal","caml_int64_xor",t,"caml_int_of_float",m,"caml_invalid_argument","caml_io_buffer_size","caml_is_continuation_tag","caml_is_js","caml_is_ml_bytes","caml_is_ml_string","caml_is_printable","caml_is_special_exception","caml_js_call","caml_js_delete","caml_js_equals","caml_js_error_of_exception","caml_js_error_option_of_exception","caml_js_eval_string","caml_js_expr","caml_js_from_array","caml_js_from_bool",n,fr,cq,"caml_js_from_string","caml_js_fun_call","caml_js_function_arity","caml_js_get","caml_js_get_console","caml_js_html_entities","caml_js_html_escape","caml_js_instanceof","caml_js_meth_call","caml_js_new","caml_js_object","caml_js_pure_expr","caml_js_set","caml_js_strict_equals","caml_js_to_array","caml_js_to_bool","caml_js_to_byte_string","caml_js_to_float",e8,ep,"caml_js_to_string","caml_js_typeof","caml_js_var","caml_js_wrap_callback","caml_js_wrap_callback_arguments","caml_js_wrap_callback_strict","caml_js_wrap_callback_unsafe","caml_js_wrap_meth_callback","caml_js_wrap_meth_callback_arguments","caml_js_wrap_meth_callback_strict","caml_js_wrap_meth_callback_unsafe","caml_jsbytes_of_string","caml_jsoo_flags_effects","caml_jsoo_flags_use_js_string","caml_jsstring_of_string","caml_lazy_make_forward","caml_lazy_read_result","caml_lazy_reset_to_lazy","caml_lazy_update_to_forcing","caml_lazy_update_to_forward","caml_ldexp_float","caml_le_float","caml_lessequal","caml_lessthan","caml_lex_array","caml_lex_engine","caml_list_mount_point","caml_list_of_js_array","caml_list_to_js_array","caml_log10_float","caml_log1p_float","caml_log2_float","caml_log_float","caml_lt_float","caml_lxm_M","caml_lxm_daba","caml_lxm_next","caml_make_float_vect","caml_make_path","caml_make_vect","caml_marshal_constants","caml_marshal_data_size","caml_marshal_header_size","caml_maybe_attach_backtrace","caml_maybe_print_stats","caml_md5_bytes","caml_md5_chan","caml_md5_string","caml_memprof_discard","caml_memprof_start","caml_memprof_stop","caml_method_cache","caml_ml_bytes_content","caml_ml_bytes_length","caml_ml_channel_get","caml_ml_channel_redirect","caml_ml_channel_restore","caml_ml_channel_size","caml_ml_channel_size_64","caml_ml_channels","caml_ml_close_channel","caml_ml_condition_broadcast","caml_ml_condition_new","caml_ml_condition_signal","caml_ml_condition_wait","caml_ml_debug_info_status","caml_ml_domain_cpu_relax","caml_ml_domain_id","caml_ml_domain_index","caml_ml_enable_runtime_warnings","caml_ml_flush","caml_ml_gc_ramp_down","caml_ml_gc_ramp_up","caml_ml_input","caml_ml_input_bigarray","caml_ml_input_block","caml_ml_input_char","caml_ml_input_int","caml_ml_input_scan_line","caml_ml_is_binary_mode","caml_ml_is_buffered","caml_ml_mutex_lock","caml_ml_mutex_new","caml_ml_mutex_try_lock","caml_ml_mutex_unlock","caml_ml_open_descriptor_in","caml_ml_open_descriptor_in_with_flags","caml_ml_open_descriptor_out","caml_ml_open_descriptor_out_with_flags","caml_ml_out_channels_list","caml_ml_output","caml_ml_output_bigarray","caml_ml_output_bytes","caml_ml_output_char","caml_ml_output_int","caml_ml_output_ta","caml_ml_pos_in","caml_ml_pos_in_64","caml_ml_pos_out","caml_ml_pos_out_64","caml_ml_runtime_events_are_active","caml_ml_runtime_events_path","caml_ml_runtime_events_pause","caml_ml_runtime_events_resume","caml_ml_runtime_events_start","caml_ml_runtime_warnings_enabled","caml_ml_seek_in","caml_ml_seek_in_64","caml_ml_seek_out","caml_ml_seek_out_64","caml_ml_set_binary_mode","caml_ml_set_buffered","caml_ml_set_channel_name","caml_ml_set_channel_output","caml_ml_set_channel_refill","caml_ml_string_length",f,"caml_modf_float","caml_mount_autoload",d,"caml_mul_float","caml_named_value","caml_named_values","caml_nativeint_add","caml_nativeint_and",bO,c$,bl,fE,ek,T,"caml_nativeint_neg","caml_nativeint_of_float","caml_nativeint_of_int","caml_nativeint_of_int32",dz,"caml_nativeint_or","caml_nativeint_shift_left","caml_nativeint_shift_right","caml_nativeint_shift_right_unsigned","caml_nativeint_sub","caml_nativeint_to_float","caml_nativeint_to_int","caml_nativeint_to_int32","caml_nativeint_unmarshal","caml_nativeint_xor","caml_neg_float","caml_neq_float","caml_new_lex_engine","caml_new_string","caml_nextafter_float","caml_notequal","caml_obj_add_offset","caml_obj_block","caml_obj_compare_and_swap","caml_obj_dup","caml_obj_is_shared","caml_obj_raw_field","caml_obj_reachable_words","caml_obj_set_raw_field","caml_obj_tag","caml_obj_update_tag","caml_obj_with_tag","caml_ojs_new_arr","caml_oo_cache_id","caml_oo_last_id","caml_output_val","caml_output_value","caml_output_value_to_buffer","caml_output_value_to_bytes","caml_output_value_to_string","caml_packFloat16","caml_parse_digit","caml_parse_engine","caml_parse_format","caml_parse_sign_and_base","caml_parser_trace","caml_pos_in","caml_pos_out","caml_power_float","caml_pure_js_expr","caml_raise_constant","caml_raise_end_of_file","caml_raise_no_such_file","caml_raise_nodejs_error","caml_raise_not_found","caml_raise_sys_error","caml_raise_system_error","caml_raise_with_arg","caml_raise_with_args","caml_raise_with_string","caml_raise_zero_divide","caml_raw_backtrace_length","caml_raw_backtrace_next_slot","caml_raw_backtrace_slot","caml_read_file_content","caml_recommended_domain_count","caml_record_backtrace","caml_record_backtrace_env_flag","caml_record_backtrace_runtime_flag","caml_refill","caml_register_global","caml_register_named_value","caml_restore_raw_backtrace","caml_root","caml_round_float","caml_runtime_events_create_cursor","caml_runtime_events_free_cursor","caml_runtime_events_read_poll","caml_runtime_events_user_register","caml_runtime_events_user_resolve","caml_runtime_events_user_write","caml_runtime_parameters","caml_runtime_variant","caml_runtime_warnings","caml_seek_in","caml_seek_out","caml_set_oo_id","caml_set_parser_trace","caml_set_static_env",ec,aY,"caml_sin_float","caml_sinh_float","caml_sqrt_float","caml_str_repeat","caml_strerror","caml_string_bound_error","caml_string_compare","caml_string_concat","caml_string_equal","caml_string_get","caml_string_get16","caml_string_get32","caml_string_get64","caml_string_greaterequal","caml_string_greaterthan","caml_string_hash","caml_string_lessequal","caml_string_lessthan","caml_string_notequal","caml_string_of_array","caml_string_of_bytes","caml_string_of_jsbytes","caml_string_of_jsstring","caml_string_of_uint8_array","caml_string_set","caml_string_unsafe_get","caml_sub_float","caml_sub_uint8_array_to_jsbytes","caml_subarray_to_jsbytes","caml_sys_argv","caml_sys_chdir","caml_sys_close","caml_sys_const_backend_type","caml_sys_const_big_endian","caml_sys_const_int_size","caml_sys_const_max_wosize","caml_sys_const_naked_pointers_checked","caml_sys_const_ostype_cygwin","caml_sys_const_ostype_unix","caml_sys_const_ostype_win32","caml_sys_const_word_size","caml_sys_convert_signal_number","caml_sys_executable_name",j,"caml_sys_fds","caml_sys_file_exists","caml_sys_get_argv","caml_sys_get_config",k,"caml_sys_getenv","caml_sys_getenv_opt","caml_sys_io_buffer_size","caml_sys_is_directory","caml_sys_is_regular_file","caml_sys_isatty","caml_sys_mkdir","caml_sys_modify_argv","caml_sys_open","caml_sys_open_for_node","caml_sys_random_seed","caml_sys_read_directory","caml_sys_remove","caml_sys_rename","caml_sys_rev_convert_signal_number","caml_sys_rmdir","caml_sys_system_command","caml_sys_temp_dir_name","caml_sys_time","caml_sys_time_include_children","caml_sys_unsafe_getenv","caml_tan_float","caml_tanh_float","caml_throw_js_exception","caml_to_js_string","caml_trailing_slash","caml_trampoline","caml_trampoline_return","caml_trunc_float","caml_uint8_array_of_bytes","caml_uint8_array_of_string","caml_uniform_array_append","caml_uniform_array_blit","caml_uniform_array_concat","caml_uniform_array_fill","caml_uniform_array_make","caml_uniform_array_sub",de,df,fw,bA,fs,d5,dK,dB,ap,bG,fm,cT,dX,dH,I,W,eE,dx,cA,a2,cd,ft,bF,bd,b,fc,bS,aH,aX,aq,l,dq,db,eY,dr,fu,a5,aJ,er,af,aj,_,bn,dV,r,cL,eH,dw,fA,en,A,ag,aC,eF,d8,d$,e1,a$,b9,cB,B,dM,dE,cv,d6,"caml_unmount","caml_unpackFloat16","caml_update_dummy","caml_update_dummy_lazy",e5,dp,"caml_weak_create",ai,a3,"caml_weak_set","caml_wrap_exception","caml_xdg_defaults","caml_xmlhttprequest_create","caml_zstd_initialize","compare_digits_nat","compare_nat","complement_nat","create_nat","decr_nat","deserialize_nat","div_digit_nat","div_helper","div_nat","fs_node_supported","incr_nat","initialize_nat","is_digit_int","is_digit_normalized","is_digit_odd","is_digit_zero","jsoo_create_file","jsoo_create_file_extern","jsoo_dataview","jsoo_effect_not_supported","jsoo_is_ascii","jsoo_is_win32","jsoo_mount_point","jsoo_static_env","jsoo_sys_getenv","jsoo_text_decoder","jsoo_text_decoder_buff","jsoo_text_encoder","jsoo_toplevel_reloc","land_digit_nat","length_nat","lor_digit_nat","lxor_digit_nat","make_unix_err_args","mult_digit_nat","mult_nat","nat_of_array","nth_digit_nat","nth_digit_nat_native","num_digits_nat","num_leading_zero_bits_in_digit","ocaml_stats_from_node_stats","os_type","path_is_absolute","re_match","re_partial_match","re_replacement_text","re_search_backward","re_search_forward","re_string_match","resolve_fs_device","serialize_nat","set_digit_nat","set_digit_nat_native","set_to_zero_nat","shift_left_nat","shift_right_nat","square_nat","sub_nat",a7,eW,eq,dy,ab,"unix_error",ba,fa,u,b2,eC,a6,e3,fb,eA,dd,b$,aN,am,L,b_,fd,y,O,bB,z,aI,ad,aF,dQ,an,d_,bw,d1,dF,ck,dl,fx,eK,at,aS,cM,ez,eR,dY,aR,w,eM,bQ,bN,bY,bD,ds,cZ,c8,v,bE,aB,ac,bt,b6,eG,eN,em,cz,cg,eT,"zstd_decompress"]),0];return}(globalThis)); 9435 9435 9436 9436 //# 4 "../../.js/default/stdlib/stdlib.cma.js" 9437 9437 //# shape: CamlinternalFormatBasics:[F(2),F(1),F(2),F(2)] ··· 28572 28572 } 28573 28573 (globalThis)); 28574 28574 28575 - //# 5 "../../.js/default/ptime/ptime.cma.js" 28576 - //# shape: Ptime:[N,F(1),N,N,N,F(1)*,F(1)*,F(1)*,F(1)*,F(1),F(2),F(1),F(2)*,F(2)*,F(2)*,F(2)*,F(2),F(2),F(2),F(1),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(1),F(1),F(4),F(4),F(6),F(5),F(2),F(2)] 28577 - (function 28578 - (globalThis){ 28579 - "use strict"; 28580 - var 28581 - runtime = globalThis.jsoo_runtime, 28582 - caml_check_bound = runtime.caml_check_bound, 28583 - caml_greaterequal = runtime.caml_greaterequal, 28584 - caml_greaterthan = runtime.caml_greaterthan, 28585 - caml_int64_add = runtime.caml_int64_add, 28586 - caml_int64_create_lo_mi_hi = runtime.caml_int64_create_lo_mi_hi, 28587 - caml_int64_div = runtime.caml_int64_div, 28588 - caml_int64_mod = runtime.caml_int64_mod, 28589 - caml_int64_mul = runtime.caml_int64_mul, 28590 - caml_int64_of_float = runtime.caml_int64_of_float, 28591 - caml_int64_of_int32 = runtime.caml_int64_of_int32, 28592 - caml_int64_sub = runtime.caml_int64_sub, 28593 - caml_int64_to_float = runtime.caml_int64_to_float, 28594 - caml_int64_to_int32 = runtime.caml_int64_to_int32, 28595 - caml_int_compare = runtime.caml_int_compare, 28596 - caml_lessthan = runtime.caml_lessthan, 28597 - caml_list_of_js_array = runtime.caml_list_of_js_array, 28598 - caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace, 28599 - caml_notequal = runtime.caml_notequal, 28600 - caml_obj_dup = runtime.caml_obj_dup, 28601 - caml_string_get = runtime.caml_string_get, 28602 - caml_wrap_exception = runtime.caml_wrap_exception; 28603 - function caml_call1(f, a0){ 28604 - return (f.l >= 0 ? f.l : f.l = f.length) === 1 28605 - ? f(a0) 28606 - : runtime.caml_call_gen(f, [a0]); 28607 - } 28608 - function caml_call2(f, a0, a1){ 28609 - return (f.l >= 0 ? f.l : f.l = f.length) === 2 28610 - ? f(a0, a1) 28611 - : runtime.caml_call_gen(f, [a0, a1]); 28612 - } 28613 - function caml_call3(f, a0, a1, a2){ 28614 - return (f.l >= 0 ? f.l : f.l = f.length) === 3 28615 - ? f(a0, a1, a2) 28616 - : runtime.caml_call_gen(f, [a0, a1, a2]); 28617 - } 28618 - function caml_call4(f, a0, a1, a2, a3){ 28619 - return (f.l >= 0 ? f.l : f.l = f.length) === 4 28620 - ? f(a0, a1, a2, a3) 28621 - : runtime.caml_call_gen(f, [a0, a1, a2, a3]); 28622 - } 28623 - function caml_call6(f, a0, a1, a2, a3, a4, a5){ 28624 - return (f.l >= 0 ? f.l : f.l = f.length) === 6 28625 - ? f(a0, a1, a2, a3, a4, a5) 28626 - : runtime.caml_call_gen(f, [a0, a1, a2, a3, a4, a5]); 28627 - } 28628 - function caml_call7(f, a0, a1, a2, a3, a4, a5, a6){ 28629 - return (f.l >= 0 ? f.l : f.l = f.length) === 7 28630 - ? f(a0, a1, a2, a3, a4, a5, a6) 28631 - : runtime.caml_call_gen(f, [a0, a1, a2, a3, a4, a5, a6]); 28632 - } 28633 - var 28634 - global_data = runtime.caml_get_global_data(), 28635 - acc = caml_int64_create_lo_mi_hi(0, 0, 0), 28636 - a = 28637 - caml_list_of_js_array 28638 - ([498443355, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57]), 28639 - ps_count_in_ps = caml_int64_create_lo_mi_hi(1, 0, 0), 28640 - ps_count_in_ns = caml_int64_create_lo_mi_hi(1000, 0, 0), 28641 - ps_count_in_100ns = caml_int64_create_lo_mi_hi(100000, 0, 0), 28642 - ps_count_in_us = caml_int64_create_lo_mi_hi(1000000, 0, 0), 28643 - ps_count_in_100us = caml_int64_create_lo_mi_hi(16113920, 5, 0), 28644 - ps_count_in_ms = caml_int64_create_lo_mi_hi(10144256, 59, 0), 28645 - ps_count_in_100ms = caml_int64_create_lo_mi_hi(7792640, 5960, 0), 28646 - ps_count_in_s = caml_int64_create_lo_mi_hi(10817536, 59604, 0), 28647 - ps_count_in_min = caml_int64_create_lo_mi_hi(11517952, 3576278, 0), 28648 - ps_count_in_hour = caml_int64_create_lo_mi_hi(3211264, 13250129, 12), 28649 - ps_count_in_day = caml_int64_create_lo_mi_hi(9961472, 16013212, 306), 28650 - ps_day_max = caml_int64_create_lo_mi_hi(9961471, 16013212, 306), 28651 - epoch = [0, 0, caml_int64_create_lo_mi_hi(0, 0, 0)], 28652 - zero = [0, 0, caml_int64_create_lo_mi_hi(0, 0, 0)], 28653 - Stdlib_Format = global_data.Stdlib__Format, 28654 - Stdlib = global_data.Stdlib, 28655 - Stdlib_Buffer = global_data.Stdlib__Buffer, 28656 - Stdlib_Printf = global_data.Stdlib__Printf, 28657 - Stdlib_Int64 = global_data.Stdlib__Int64, 28658 - min = [0, -719528, caml_int64_create_lo_mi_hi(0, 0, 0)], 28659 - stdlib_abs = Stdlib[18], 28660 - b = caml_int64_create_lo_mi_hi(0, 0, 0), 28661 - c = caml_int64_create_lo_mi_hi(0, 0, 0), 28662 - d = caml_int64_create_lo_mi_hi(0, 0, 0), 28663 - f = caml_int64_create_lo_mi_hi(0, 0, 0); 28664 - function neg(param){ 28665 - var d = param[1]; 28666 - if(! caml_notequal(param[2], b)) return [0, - d | 0, c]; 28667 - var ps = param[2]; 28668 - return [0, - (d + 1 | 0) | 0, caml_int64_sub(ps_count_in_day, ps)]; 28669 - } 28670 - function add(a, param){ 28671 - var 28672 - ps1 = param[2], 28673 - d1 = param[1], 28674 - ps0 = a[2], 28675 - d0 = a[1], 28676 - d = d0 + d1 | 0, 28677 - ps = caml_int64_add(ps0, ps1), 28678 - ps_clamp = caml_int64_mod(ps, ps_count_in_day), 28679 - d$0 = d + Stdlib_Int64[15].call(null, ps, ps_clamp) | 0; 28680 - return [0, d$0, ps_clamp]; 28681 - } 28682 - function sub(s0, s1){return add(s0, neg(s1));} 28683 - function abs(s){var d = s[1]; return 0 <= d ? s : neg(s);} 28684 - var 28685 - e = 28686 - [0, 28687 - [11, 28688 - "illegal ptime time span: (", 28689 - [4, 0, 0, 0, [12, 44, [7, 0, 0, 0, [12, 41, 0]]]]], 28690 - "illegal ptime time span: (%d,%Ld)"]; 28691 - function v(s){ 28692 - var ps = s[2], d$0 = s[1]; 28693 - if(! caml_lessthan(ps, d) && ! caml_greaterthan(ps, ps_day_max)) return s; 28694 - var a = caml_call2(Stdlib_Format[149].call(null, e), d$0, ps); 28695 - return Stdlib[1].call(null, a); 28696 - } 28697 - function of_d_ps(s){ 28698 - var ps = s[2]; 28699 - if(! caml_lessthan(ps, f) && ! caml_greaterthan(ps, ps_day_max)) 28700 - return [0, s]; 28701 - return 0; 28702 - } 28703 - function unsafe_of_d_ps(s){return s;} 28704 - function unsafe_of_d_ps_option(s){return s;} 28705 - function to_d_ps(s){return s;} 28706 - function of_int_s(secs){ 28707 - var 28708 - d = stdlib_abs(secs), 28709 - s = 28710 - [0, 28711 - d / 86400 | 0, 28712 - caml_int64_mul(caml_int64_of_int32(d % 86400 | 0), ps_count_in_s)]; 28713 - return 0 <= secs ? s : neg(s); 28714 - } 28715 - var 28716 - day_int_min = Stdlib[20] / 86400 | 0, 28717 - day_int_max = Stdlib[19] / 86400 | 0; 28718 - function to_int_s(param){ 28719 - var ps = param[2], d = param[1]; 28720 - if(d >= day_int_min && day_int_max >= d){ 28721 - var 28722 - days_s = d * 86400 | 0, 28723 - day_s = caml_int64_to_int32(caml_int64_div(ps, ps_count_in_s)), 28724 - secs = days_s + day_s | 0; 28725 - return secs < days_s ? 0 : [0, secs]; 28726 - } 28727 - return 0; 28728 - } 28729 - var 28730 - min_int_float = Stdlib[20], 28731 - max_int_float = Stdlib[19], 28732 - g = caml_int64_create_lo_mi_hi(0, 0, 0), 28733 - h = caml_int64_create_lo_mi_hi(0, 0, 0), 28734 - i = caml_int64_create_lo_mi_hi(0, 0, 0), 28735 - j = caml_int64_create_lo_mi_hi(2, 0, 0); 28736 - function of_float_s(secs){ 28737 - if(secs !== secs) return 0; 28738 - var days = Math.floor(secs / 86400.); 28739 - if(! (days < min_int_float) && ! (max_int_float < days)){ 28740 - var rem_s = secs % 86400., rem_s$0 = rem_s < 0. ? 86400. + rem_s : rem_s; 28741 - if(86400. <= rem_s$0){ 28742 - var days$0 = days + 1.; 28743 - return max_int_float < days$0 ? 0 : [0, [0, days$0 | 0, g]]; 28744 - } 28745 - var 28746 - match = runtime.caml_modf_float(rem_s$0), 28747 - rem_s$1 = match[2], 28748 - frac_s = match[1], 28749 - rem_ps = caml_int64_mul(caml_int64_of_float(rem_s$1), ps_count_in_s), 28750 - frac_ps = caml_int64_of_float(frac_s * 1000000000000.); 28751 - return [0, [0, days | 0, caml_int64_add(rem_ps, frac_ps)]]; 28752 - } 28753 - return 0; 28754 - } 28755 - function to_float_s(param){ 28756 - var 28757 - ps = param[2], 28758 - d = param[1], 28759 - days_s = d * 86400., 28760 - day_s = caml_int64_to_float(caml_int64_div(ps, ps_count_in_s)), 28761 - day_rem_ps = caml_int64_to_float(caml_int64_mod(ps, ps_count_in_s)); 28762 - return days_s + day_s + day_rem_ps * 1e-12; 28763 - } 28764 - function equal(b, param){ 28765 - var 28766 - ps1 = param[2], 28767 - d1 = param[1], 28768 - ps0 = b[2], 28769 - d0 = b[1], 28770 - a = 0 === caml_int_compare(d0, d1) ? 1 : 0, 28771 - c = a ? 0 === Stdlib_Int64[15].call(null, ps0, ps1) ? 1 : 0 : a; 28772 - return c; 28773 - } 28774 - function compare(a, param){ 28775 - var 28776 - ps1 = param[2], 28777 - d1 = param[1], 28778 - ps0 = a[2], 28779 - d0 = a[1], 28780 - c = caml_int_compare(d0, d1); 28781 - return 0 === c ? runtime.caml_int64_compare(ps0, ps1) : c; 28782 - } 28783 - function round_div(a, b){ 28784 - return runtime.caml_equal(a, h) 28785 - ? i 28786 - : caml_int64_div(caml_int64_add(a, caml_int64_div(b, j)), b); 28787 - } 28788 - var 28789 - frac_div = 28790 - caml_obj_dup 28791 - ([0, 28792 - caml_int64_create_lo_mi_hi(10817536, 59604, 0), 28793 - caml_int64_create_lo_mi_hi(7792640, 5960, 0), 28794 - caml_int64_create_lo_mi_hi(779264, 596, 0), 28795 - caml_int64_create_lo_mi_hi(10144256, 59, 0), 28796 - caml_int64_create_lo_mi_hi(16113920, 5, 0), 28797 - caml_int64_create_lo_mi_hi(10000000, 0, 0), 28798 - caml_int64_create_lo_mi_hi(1000000, 0, 0), 28799 - caml_int64_create_lo_mi_hi(100000, 0, 0), 28800 - caml_int64_create_lo_mi_hi(10000, 0, 0), 28801 - caml_int64_create_lo_mi_hi(1000, 0, 0), 28802 - caml_int64_create_lo_mi_hi(100, 0, 0), 28803 - caml_int64_create_lo_mi_hi(10, 0, 0), 28804 - caml_int64_create_lo_mi_hi(1, 0, 0)]), 28805 - k = caml_int64_create_lo_mi_hi(0, 0, 0), 28806 - G = caml_int64_create_lo_mi_hi(0, 0, 0); 28807 - function round(frac, t){ 28808 - var 28809 - sign = t[1], 28810 - frac$0 = 0 <= frac ? 12 < frac ? 12 : frac : 0, 28811 - match = 0 <= sign ? t : neg(t), 28812 - ps = match[2], 28813 - d = match[1], 28814 - a = caml_check_bound(frac_div, frac$0)[frac$0 + 1], 28815 - rps = caml_int64_mul(round_div(ps, frac_div[frac$0 + 1]), a), 28816 - t$0 = caml_greaterthan(rps, ps_day_max) ? [0, d + 1 | 0, k] : [0, d, rps]; 28817 - return 0 <= sign ? t$0 : neg(t$0); 28818 - } 28819 - function truncate(frac, t){ 28820 - var 28821 - sign = t[1], 28822 - frac$0 = 0 <= frac ? 12 < frac ? 12 : frac : 0, 28823 - match = 0 <= sign ? t : neg(t), 28824 - ps = match[2], 28825 - d = match[1], 28826 - tps = 28827 - caml_int64_sub 28828 - (ps, 28829 - caml_int64_mod(ps, caml_check_bound(frac_div, frac$0)[frac$0 + 1])); 28830 - return 0 <= sign ? [0, d, tps] : neg([0, d, tps]); 28831 - } 28832 - function truncate_down(frac, param){ 28833 - var ps = param[2], d = param[1]; 28834 - return [0, 28835 - d, 28836 - caml_int64_sub 28837 - (ps, 28838 - caml_int64_mod(ps, caml_check_bound(frac_div, frac)[frac + 1]))]; 28839 - } 28840 - var 28841 - cst_1 = "<1>", 28842 - l = 28843 - [0, 28844 - [18, 28845 - [1, [0, [11, cst_1, 0], cst_1]], 28846 - [12, 28847 - 40, 28848 - [4, 28849 - 0, 28850 - 0, 28851 - 0, 28852 - [12, 44, [17, [0, "@,", 0, 0], [7, 0, 0, 0, [12, 41, [17, 0, 0]]]]]]]], 28853 - "@[<1>(%d,@,%Ld)@]"]; 28854 - function dump(ppf, param){ 28855 - var ps = param[2], d = param[1]; 28856 - return caml_call2(Stdlib_Format[146].call(null, ppf)(l), d, ps); 28857 - } 28858 - function divide_ps(carry, ps, hi, lo){ 28859 - var 28860 - hi_d = caml_int64_to_int32(caml_int64_div(ps, hi)), 28861 - rem_ps = caml_int64_mod(ps, hi), 28862 - lo_d = caml_int64_to_int32(round_div(rem_ps, lo)); 28863 - return lo_d === carry ? [0, hi_d + 1 | 0, 0] : [0, hi_d, lo_d]; 28864 - } 28865 - var 28866 - cst_d_s = "%d%s", 28867 - C = [0, [4, 0, 0, 0, [2, 0, 0]], cst_d_s], 28868 - D = [0, [4, 0, 0, 0, [2, 0, 0]], cst_d_s], 28869 - E = 28870 - [0, 28871 - [4, 0, 0, 0, [12, 46, [4, 0, [0, 2, 3], 0, [2, 0, 0]]]], 28872 - "%d.%03d%s"]; 28873 - function pp_unit(higher_str, hi, hi_str, frac_limit, lo, ppf, neg, ps){ 28874 - function pp_unit_integral(ppf, neg, h){ 28875 - if(1000 === h){ 28876 - var a = neg ? -1 : 1; 28877 - return caml_call2(Stdlib_Format[146].call(null, ppf)(C), a, higher_str); 28878 - } 28879 - var b = neg ? - h | 0 : h; 28880 - return caml_call2(Stdlib_Format[146].call(null, ppf)(D), b, hi_str); 28881 - } 28882 - if(! caml_lessthan(ps, frac_limit)){ 28883 - var ms = divide_ps(1, ps, hi, hi)[1]; 28884 - return pp_unit_integral(ppf, neg, ms); 28885 - } 28886 - var match = divide_ps(1000, ps, hi, lo), l = match[2], h = match[1]; 28887 - if(100 > h && 0 !== l){ 28888 - var h$0 = neg ? - h | 0 : h; 28889 - return caml_call3(Stdlib_Format[146].call(null, ppf)(E), h$0, l, hi_str); 28890 - } 28891 - return pp_unit_integral(ppf, neg, h); 28892 - } 28893 - var 28894 - cst_dd = "%dd", 28895 - cst_dh = "%dh", 28896 - cst_dmin = "%dmin", 28897 - cst_ds = "%ds", 28898 - cst_dy = "%dy", 28899 - cst_min = "min", 28900 - m = [0, [4, 0, 0, 0, [12, 121, 0]], cst_dy], 28901 - n = [0, [4, 0, 0, 0, [12, 100, 0]], cst_dd], 28902 - o = [0, [4, 0, 0, 0, [11, "y1d", 0]], "%dy1d"], 28903 - p = [0, [4, 0, 0, 0, [12, 121, 0]], cst_dy], 28904 - q = [0, [4, 0, 0, 0, [12, 100, 0]], cst_dd], 28905 - r = [0, [4, 0, 0, 0, [12, 104, 0]], cst_dh], 28906 - s = [0, [4, 0, 0, 0, [12, 100, 0]], cst_dd], 28907 - t = [0, [4, 0, 0, 0, [12, 104, 0]], cst_dh], 28908 - u = [0, [4, 0, 0, 0, [11, cst_min, 0]], cst_dmin], 28909 - w = [0, [4, 0, 0, 0, [12, 104, 0]], cst_dh], 28910 - x = [0, [4, 0, 0, 0, [11, cst_min, 0]], cst_dmin], 28911 - y = [0, [4, 0, 0, 0, [12, 115, 0]], cst_ds], 28912 - z = [0, [4, 0, 0, 0, [11, cst_min, 0]], cst_dmin], 28913 - A = [0, [4, 0, 0, 0, [12, 115, 0]], cst_ds], 28914 - B = 28915 - [0, 28916 - [4, 0, 0, 0, [12, 46, [4, 0, [0, 2, 3], 0, [12, 115, 0]]]], 28917 - "%d.%03ds"], 28918 - F = [0, [4, 0, 0, 0, [11, "ps", 0]], "%dps"]; 28919 - function pp(ppf, s$3){ 28920 - var 28921 - sign = s$3[1], 28922 - neg = sign < 0 ? 1 : 0, 28923 - match$2 = abs(s$3), 28924 - d$1 = match$2[1]; 28925 - if(0 === d$1){ 28926 - var ps$0 = match$2[2]; 28927 - if(caml_greaterequal(ps$0, ps_count_in_hour)){ 28928 - var 28929 - match = divide_ps(60, ps$0, ps_count_in_hour, ps_count_in_min), 28930 - m$0 = match[2], 28931 - h$1 = match[1]; 28932 - if(24 === h$1){ 28933 - var c = neg ? -1 : 1; 28934 - return caml_call1(Stdlib_Format[146].call(null, ppf)(s), c); 28935 - } 28936 - var h$2 = neg ? - h$1 | 0 : h$1; 28937 - caml_call1(Stdlib_Format[146].call(null, ppf)(t), h$2); 28938 - if(0 !== m$0) caml_call1(Stdlib_Format[146].call(null, ppf)(u), m$0); 28939 - return 0; 28940 - } 28941 - if(caml_greaterequal(ps$0, ps_count_in_min)){ 28942 - var 28943 - match$0 = divide_ps(60, ps$0, ps_count_in_min, ps_count_in_s), 28944 - s$0 = match$0[2], 28945 - m$1 = match$0[1]; 28946 - if(60 === m$1){ 28947 - var e = neg ? -1 : 1; 28948 - return caml_call1(Stdlib_Format[146].call(null, ppf)(w), e); 28949 - } 28950 - var m$2 = neg ? - m$1 | 0 : m$1; 28951 - caml_call1(Stdlib_Format[146].call(null, ppf)(x), m$2); 28952 - if(0 !== s$0) caml_call1(Stdlib_Format[146].call(null, ppf)(y), s$0); 28953 - return 0; 28954 - } 28955 - if(! caml_greaterequal(ps$0, ps_count_in_s)){ 28956 - var cst_ms = "ms"; 28957 - if(caml_greaterequal(ps$0, ps_count_in_ms)) 28958 - return pp_unit 28959 - ("s", 28960 - ps_count_in_ms, 28961 - cst_ms, 28962 - ps_count_in_100ms, 28963 - ps_count_in_us, 28964 - ppf, 28965 - neg, 28966 - ps$0); 28967 - var cst_us = "us"; 28968 - if(caml_greaterequal(ps$0, ps_count_in_us)) 28969 - return pp_unit 28970 - (cst_ms, 28971 - ps_count_in_us, 28972 - cst_us, 28973 - ps_count_in_100us, 28974 - ps_count_in_ns, 28975 - ppf, 28976 - neg, 28977 - ps$0); 28978 - if(caml_greaterequal(ps$0, ps_count_in_ns)) 28979 - return pp_unit 28980 - (cst_us, 28981 - ps_count_in_ns, 28982 - "ns", 28983 - ps_count_in_100ns, 28984 - ps_count_in_ps, 28985 - ppf, 28986 - neg, 28987 - ps$0); 28988 - var ps = caml_int64_to_int32(ps$0), g = neg ? - ps | 0 : ps; 28989 - return caml_call1(Stdlib_Format[146].call(null, ppf)(F), g); 28990 - } 28991 - var 28992 - match$1 = divide_ps(1000, ps$0, ps_count_in_s, ps_count_in_ms), 28993 - ms = match$1[2], 28994 - s$1 = match$1[1]; 28995 - if(60 === s$1){ 28996 - var f = neg ? -1 : 1; 28997 - return caml_call1(Stdlib_Format[146].call(null, ppf)(z), f); 28998 - } 28999 - var s$2 = neg ? - s$1 | 0 : s$1; 29000 - return 0 === ms 29001 - ? caml_call1(Stdlib_Format[146].call(null, ppf)(A), s$2) 29002 - : caml_call2(Stdlib_Format[146].call(null, ppf)(B), s$2, ms); 29003 - } 29004 - var ps$1 = match$2[2]; 29005 - if(365 < d$1){ 29006 - var max_d = Stdlib[19] / 4 | 0; 29007 - if(max_d < d$1) 29008 - var rem_d = d$1 % 365 | 0, y$0 = d$1 / 365 | 0; 29009 - else 29010 - var 29011 - y$3 = (d$1 * 4 | 0) / 1461 | 0, 29012 - rem_d$0 = d$1 - ((y$3 * 1461 | 0) / 4 | 0) | 0, 29013 - rem_d = rem_d$0, 29014 - y$0 = y$3; 29015 - var 29016 - days = rem_d + caml_int64_to_int32(round_div(ps$1, ps_count_in_day)) | 0; 29017 - if(366 === days) 29018 - var days$0 = 1, y$1 = y$0 + 1 | 0; 29019 - else 29020 - var days$0 = days, y$1 = y$0; 29021 - var y$2 = neg ? - y$1 | 0 : y$1; 29022 - caml_call1(Stdlib_Format[146].call(null, ppf)(m), y$2); 29023 - if(0 !== days$0) 29024 - caml_call1(Stdlib_Format[146].call(null, ppf)(n), days$0); 29025 - return 0; 29026 - } 29027 - var h = divide_ps(1, ps$1, ps_count_in_hour, ps_count_in_hour)[1]; 29028 - if(24 === h) var h$0 = 0, d = d$1 + 1 | 0; else var h$0 = h, d = d$1; 29029 - if(366 === d){ 29030 - var a = neg ? -1 : 1; 29031 - return caml_call1(Stdlib_Format[146].call(null, ppf)(o), a); 29032 - } 29033 - if(365 === d && 6 <= h$0){ 29034 - var b = neg ? -1 : 1; 29035 - return caml_call1(Stdlib_Format[146].call(null, ppf)(p), b); 29036 - } 29037 - var d$0 = neg ? - d | 0 : d; 29038 - caml_call1(Stdlib_Format[146].call(null, ppf)(q), d$0); 29039 - if(0 !== h$0) caml_call1(Stdlib_Format[146].call(null, ppf)(r), h$0); 29040 - return 0; 29041 - } 29042 - var 29043 - H = 29044 - [0, 29045 - [11, 29046 - "illegal ptime timestamp: (", 29047 - [4, 0, 0, 0, [12, 44, [7, 0, 0, 0, [12, 41, 0]]]]], 29048 - "illegal ptime timestamp: (%d,%Ld)"]; 29049 - function v$0(s){ 29050 - var ps = s[2], d = s[1]; 29051 - if 29052 - (! 29053 - caml_lessthan(ps, G) 29054 - && ! caml_greaterthan(ps, ps_day_max) && d >= -719528 && 2932896 >= d) 29055 - return s; 29056 - var a = caml_call2(Stdlib_Format[149].call(null, H), d, ps); 29057 - return Stdlib[1].call(null, a); 29058 - } 29059 - function unsafe_of_d_ps$0(s){return s;} 29060 - function of_span(span){ 29061 - var d = span[1]; 29062 - if(d >= -719528 && 2932896 >= d) return [0, span]; 29063 - return 0; 29064 - } 29065 - function to_span(t){return t;} 29066 - function of_float_s$0(secs){ 29067 - var match = of_float_s(secs); 29068 - if(! match) return 0; 29069 - var d = match[1]; 29070 - return of_span(d); 29071 - } 29072 - function frac_s(param){ 29073 - var ps = param[2]; 29074 - return [0, 0, caml_int64_mod(ps, ps_count_in_s)]; 29075 - } 29076 - function is_earlier(t, than){return -1 === compare(t, than) ? 1 : 0;} 29077 - function is_later(t, than){return 1 === compare(t, than) ? 1 : 0;} 29078 - function add_span(t, d){return of_span(add(t, d));} 29079 - function sub_span(t, d){return of_span(sub(t, d));} 29080 - function diff(t1, t0){return sub(t1, t0);} 29081 - var 29082 - mlen = caml_obj_dup([0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]); 29083 - function of_date_time(param){ 29084 - var 29085 - t = param[2], 29086 - tz_offset_s = t[2], 29087 - match$0 = t[1], 29088 - ss$0 = match$0[3], 29089 - mm$0 = match$0[2], 29090 - hh$0 = match$0[1], 29091 - date = param[1], 29092 - d = date[3], 29093 - m$0 = date[2], 29094 - y$0 = date[1], 29095 - h = 0 <= y$0; 29096 - if(h){ 29097 - var i = y$0 <= 9999; 29098 - if(i){ 29099 - var j = 1 <= m$0; 29100 - if(j){ 29101 - var k = m$0 <= 12; 29102 - if(k){ 29103 - var l = 1 <= d; 29104 - if(l){ 29105 - a: 29106 - { 29107 - if(2 === m$0){ 29108 - var e = 0 === (y$0 % 4 | 0); 29109 - if(e) 29110 - var u = 0 !== (y$0 % 100 | 0), f = u || 0 === (y$0 % 400 | 0); 29111 - else 29112 - var f = e; 29113 - if(f){var n = 29; break a;} 29114 - } 29115 - var g = m$0 - 1 | 0, n = caml_check_bound(mlen, g)[g + 1]; 29116 - } 29117 - var b = d <= n; 29118 - } 29119 - else 29120 - var b = l; 29121 - } 29122 - else 29123 - var b = k; 29124 - } 29125 - else 29126 - var b = j; 29127 - } 29128 - else 29129 - var b = i; 29130 - } 29131 - else 29132 - var b = h; 29133 - if(b){ 29134 - var 29135 - match = t[1], 29136 - ss = match[3], 29137 - mm = match[2], 29138 - hh = match[1], 29139 - o = 0 <= hh; 29140 - if(o){ 29141 - var p = hh <= 23; 29142 - if(p){ 29143 - var q = 0 <= mm; 29144 - if(q){ 29145 - var r = mm <= 59; 29146 - if(r) var s = 0 <= ss, c = s ? ss <= 60 : s; else var c = r; 29147 - } 29148 - else 29149 - var c = q; 29150 - } 29151 - else 29152 - var c = p; 29153 - } 29154 - else 29155 - var c = o; 29156 - if(c){ 29157 - var 29158 - day = date[3], 29159 - month = date[2], 29160 - year = date[1], 29161 - a = (14 - month | 0) / 12 | 0, 29162 - y = (year + 4800 | 0) - a | 0, 29163 - m = (month + (12 * a | 0) | 0) - 3 | 0, 29164 - d$0 = 29165 - ((((((day + (((153 * m | 0) + 2 | 0) / 5 | 0) | 0) + (365 * y | 0) 29166 - | 0) 29167 - + (y / 4 | 0) 29168 - | 0) 29169 - - (y / 100 | 0) 29170 - | 0) 29171 - + (y / 400 | 0) 29172 - | 0) 29173 - - 32045 29174 - | 0) 29175 - - 2440588 29176 - | 0, 29177 - hh_ps = caml_int64_mul(caml_int64_of_int32(hh$0), ps_count_in_hour), 29178 - mm_ps = caml_int64_mul(caml_int64_of_int32(mm$0), ps_count_in_min), 29179 - ss_ps = caml_int64_mul(caml_int64_of_int32(ss$0), ps_count_in_s), 29180 - ps = caml_int64_add(hh_ps, caml_int64_add(mm_ps, ss_ps)); 29181 - return sub_span([0, d$0, ps], of_int_s(tz_offset_s)); 29182 - } 29183 - } 29184 - return 0; 29185 - } 29186 - function to_date_time(opt, t){ 29187 - var 29188 - tz_offset_s = opt ? opt[1] : 0, 29189 - match = add_span(t, of_int_s(tz_offset_s)); 29190 - if(match) 29191 - var 29192 - local = match[1], 29193 - tz_offset_s$0 = tz_offset_s, 29194 - ps = local[2], 29195 - d$0 = local[1]; 29196 - else 29197 - var ps$0 = t[2], d$1 = t[1], tz_offset_s$0 = 0, ps = ps$0, d$0 = d$1; 29198 - var 29199 - jd = d$0 + 2440588 | 0, 29200 - a = jd + 32044 | 0, 29201 - b = ((4 * a | 0) + 3 | 0) / 146097 | 0, 29202 - c = a - ((146097 * b | 0) / 4 | 0) | 0, 29203 - d = ((4 * c | 0) + 3 | 0) / 1461 | 0, 29204 - e = c - ((1461 * d | 0) / 4 | 0) | 0, 29205 - m = ((5 * e | 0) + 2 | 0) / 153 | 0, 29206 - day = (e - (((153 * m | 0) + 2 | 0) / 5 | 0) | 0) + 1 | 0, 29207 - month = (m + 3 | 0) - (12 * (m / 10 | 0) | 0) | 0, 29208 - year = (((100 * b | 0) + d | 0) - 4800 | 0) + (m / 10 | 0) | 0, 29209 - hh = caml_int64_to_int32(caml_int64_div(ps, ps_count_in_hour)), 29210 - hh_rem = caml_int64_mod(ps, ps_count_in_hour), 29211 - mm = caml_int64_to_int32(caml_int64_div(hh_rem, ps_count_in_min)), 29212 - mm_rem = caml_int64_mod(hh_rem, ps_count_in_min), 29213 - ss = caml_int64_to_int32(caml_int64_div(mm_rem, ps_count_in_s)); 29214 - return [0, [0, year, month, day], [0, [0, hh, mm, ss], tz_offset_s$0]]; 29215 - } 29216 - var I = [0, 0, 0, 0]; 29217 - function of_date(opt, date){ 29218 - var tz = opt ? opt[1] : 0; 29219 - return of_date_time([0, date, [0, I, tz]]); 29220 - } 29221 - function to_date(tz_offset_s, t){return to_date_time(tz_offset_s, t)[1];} 29222 - function of_year(tz_offset_s, y){ 29223 - return of_date(tz_offset_s, [0, y, 1, 1]); 29224 - } 29225 - function to_year(opt, t){ 29226 - var 29227 - tz_offset_s = opt ? opt[1] : 0, 29228 - match = add_span(t, of_int_s(tz_offset_s)); 29229 - if(match) var local_d = match[1][1], d$0 = local_d; else var d$0 = t[1]; 29230 - var 29231 - jd = d$0 + 2440588 | 0, 29232 - a = jd + 32044 | 0, 29233 - b = ((4 * a | 0) + 3 | 0) / 146097 | 0, 29234 - c = a - ((146097 * b | 0) / 4 | 0) | 0, 29235 - d = ((4 * c | 0) + 3 | 0) / 1461 | 0, 29236 - e = c - ((1461 * d | 0) / 4 | 0) | 0, 29237 - m = ((5 * e | 0) + 2 | 0) / 153 | 0; 29238 - return (((100 * b | 0) + d | 0) - 4800 | 0) + (m / 10 | 0) | 0; 29239 - } 29240 - function weekday_num(opt, t){ 29241 - var 29242 - tz_offset_s = opt ? opt[1] : 0, 29243 - d = add(t, of_int_s(tz_offset_s))[1], 29244 - i = (d + 4 | 0) % 7 | 0; 29245 - return 0 <= i ? i : 7 + i | 0; 29246 - } 29247 - var 29248 - wday = 29249 - caml_obj_dup 29250 - ([0, 4153708, 3853996, 4203428, 4349046, 4200545, 3506557, 4149254]); 29251 - function weekday(tz_offset_s, t){ 29252 - var a = weekday_num(tz_offset_s, t); 29253 - return caml_check_bound(wday, a)[a + 1]; 29254 - } 29255 - var 29256 - cst$0 = "", 29257 - cst = "@ ", 29258 - cst_input = "input", 29259 - J = 29260 - [0, 29261 - [18, 29262 - [1, [0, 0, cst$0]], 29263 - [11, 29264 - "unexpected", 29265 - [17, 29266 - [0, cst, 1, 0], 29267 - [11, 29268 - "end", 29269 - [17, 29270 - [0, cst, 1, 0], 29271 - [11, "of", [17, [0, cst, 1, 0], [11, cst_input, [17, 0, 0]]]]]]]]], 29272 - "@[unexpected@ end@ of@ input@]"], 29273 - K = 29274 - [0, 29275 - [18, 29276 - [1, [0, 0, cst$0]], 29277 - [11, 29278 - "invalid", 29279 - [17, 29280 - [0, cst, 1, 0], 29281 - [11, "time", [17, [0, cst, 1, 0], [11, "stamp", [17, 0, 0]]]]]]], 29282 - "@[invalid@ time@ stamp@]"], 29283 - L = 29284 - [0, 29285 - [18, 29286 - [1, [0, 0, cst$0]], 29287 - [11, "trailing", [17, [0, cst, 1, 0], [11, cst_input, [17, 0, 0]]]]], 29288 - "@[trailing@ input@]"], 29289 - M = [0, [17, [0, cst, 1, 0], [1, 0]], "@ %C"], 29290 - N = 29291 - [0, 29292 - [18, 29293 - [1, [0, 0, cst$0]], 29294 - [11, 29295 - "expected", 29296 - [17, 29297 - [0, cst, 1, 0], 29298 - [12, 29299 - 97, 29300 - [17, 29301 - [0, cst, 1, 0], 29302 - [11, 29303 - "character", 29304 - [17, [0, cst, 1, 0], [11, "in:", [15, [17, 0, 0]]]]]]]]]], 29305 - "@[expected@ a@ character@ in:%a@]"]; 29306 - function pp_rfc3339_error(ppf, param){ 29307 - if(typeof param === "number") 29308 - return 3456159 === param 29309 - ? Stdlib_Format[146].call(null, ppf)(J) 29310 - : 415233371 29311 - <= param 29312 - ? Stdlib_Format[146].call(null, ppf)(K) 29313 - : Stdlib_Format[146].call(null, ppf)(L); 29314 - var cs = param[2]; 29315 - function pp_chars(ppf, param$0){ 29316 - var param = param$0; 29317 - for(;;){ 29318 - if(! param) return 0; 29319 - var cs = param[2], c = param[1]; 29320 - caml_call1(Stdlib_Format[146].call(null, ppf)(M), c); 29321 - param = cs; 29322 - } 29323 - } 29324 - return caml_call2(Stdlib_Format[146].call(null, ppf)(N), pp_chars, cs); 29325 - } 29326 - var O = [0, [4, 0, 0, 0, [12, 45, [4, 0, 0, 0, 0]]], "%d-%d"]; 29327 - function pp_range(ppf, param){ 29328 - var e = param[2], s = param[1]; 29329 - return s === e 29330 - ? Stdlib_Format[23].call(null, ppf, s) 29331 - : caml_call2(Stdlib_Format[146].call(null, ppf)(O), s, e); 29332 - } 29333 - var 29334 - cst_h = "<h>", 29335 - P = 29336 - [0, 29337 - [18, 29338 - [1, [0, [11, cst_h, 0], cst_h]], 29339 - [15, [11, ": ", [15, [17, 0, 0]]]]], 29340 - "@[<h>%a: %a@]"]; 29341 - function rfc3339_error_to_string(param){ 29342 - var err = param[2], r = param[1]; 29343 - return caml_call4 29344 - (Stdlib_Format[150].call(null, P), 29345 - pp_range, 29346 - r, 29347 - pp_rfc3339_error, 29348 - err); 29349 - } 29350 - function rfc3339_string_error(v){ 29351 - if(0 === v[0]) return v; 29352 - var e = v[1][2]; 29353 - return [1, rfc3339_error_to_string(e)]; 29354 - } 29355 - function rfc3339_error_to_msg(v){ 29356 - if(0 === v[0]) return v; 29357 - var e = v[1][2]; 29358 - return [1, [0, 3854881, rfc3339_error_to_string(e)]]; 29359 - } 29360 - var 29361 - RFC3339 = [248, "Ptime.RFC3339", runtime.caml_fresh_oo_id(0)], 29362 - U = caml_int64_create_lo_mi_hi(10, 0, 0), 29363 - Z = caml_int64_create_lo_mi_hi(0, 0, 0), 29364 - dummy = 0; 29365 - function error(r, e){ 29366 - throw caml_maybe_attach_backtrace([0, RFC3339, r, e], 1); 29367 - } 29368 - function error_pos(p, e){return error([0, p, p], e);} 29369 - function is_digit(param){return 9 < param - 48 >>> 0 ? 0 : 1;} 29370 - function parse_digits(count, pos, max, s){ 29371 - var stop = (pos + count | 0) - 1 | 0; 29372 - if(max < stop) return error_pos(max, 3456159); 29373 - var k = pos, acc = 0; 29374 - for(;;){ 29375 - if(stop < k) return acc; 29376 - if(! is_digit(caml_string_get(s, k))) return error_pos(k, a); 29377 - var 29378 - acc$0 = ((acc * 10 | 0) + caml_string_get(s, k) | 0) - 48 | 0, 29379 - k$0 = k + 1 | 0; 29380 - k = k$0; 29381 - acc = acc$0; 29382 - } 29383 - } 29384 - function parse_char(c, pos, max, s){ 29385 - if(max < pos) return error_pos(max, 3456159); 29386 - if(caml_string_get(s, pos) === c) return; 29387 - return error_pos(pos, [0, 498443355, [0, c, 0]]); 29388 - } 29389 - var 29390 - Q = [0, 84, 0], 29391 - R = [0, 116, [0, 32, 0]], 29392 - S = [0, 46, [0, 43, [0, 45, [0, 90, 0]]]], 29393 - T = [0, 122, 0], 29394 - V = [0, 0], 29395 - W = [0, 43, [0, 45, [0, 90, 0]]], 29396 - X = [0, 122, 0], 29397 - Y = [0, 0]; 29398 - function of_rfc3339(n, l, opt, s){ 29399 - var strict = n ? n[1] : 0, sub = l ? l[1] : 0, start = opt ? opt[1] : 0; 29400 - try{ 29401 - var s_len = runtime.caml_ml_string_length(s), max = s_len - 1 | 0; 29402 - a: 29403 - { 29404 - if(0 !== s_len && 0 <= start && max >= start){ 29405 - var 29406 - m_pos = start + 5 | 0, 29407 - d_pos = m_pos + 3 | 0, 29408 - hh_pos = d_pos + 3 | 0, 29409 - mm_pos = hh_pos + 3 | 0, 29410 - ss_pos = mm_pos + 3 | 0, 29411 - decide_pos = ss_pos + 2 | 0, 29412 - y = parse_digits(4, start, max, s); 29413 - parse_char(45, m_pos - 1 | 0, max, s); 29414 - var m = parse_digits(2, m_pos, max, s); 29415 - parse_char(45, d_pos - 1 | 0, max, s); 29416 - var d = parse_digits(2, d_pos, max, s), pos = hh_pos - 1 | 0; 29417 - if(max < pos) 29418 - error_pos(max, 3456159); 29419 - else{ 29420 - var switcher = caml_string_get(s, pos) - 33 | 0; 29421 - b: 29422 - { 29423 - if(82 < switcher >>> 0){ 29424 - if(84 >= switcher + 1 >>> 0 && ! strict){var g = 1; break b;} 29425 - } 29426 - else if(51 === switcher){var g = 1; break b;} 29427 - var g = 0; 29428 - } 29429 - if(! g){ 29430 - var h = strict ? 0 : R; 29431 - error_pos(pos, [0, 498443355, Stdlib[37].call(null, Q, h)]); 29432 - } 29433 - } 29434 - var hh = parse_digits(2, hh_pos, max, s); 29435 - parse_char(58, mm_pos - 1 | 0, max, s); 29436 - var mm = parse_digits(2, mm_pos, max, s); 29437 - parse_char(58, ss_pos - 1 | 0, max, s); 29438 - var ss = parse_digits(2, ss_pos, max, s); 29439 - b: 29440 - if(max < decide_pos) 29441 - var match = error_pos(max, 3456159); 29442 - else{ 29443 - var c = caml_string_get(s, decide_pos); 29444 - c: 29445 - { 29446 - if(90 <= c){ 29447 - if(122 === c){if(strict) break c; var match = 18854; break b;} 29448 - if(91 <= c) break c; 29449 - } 29450 - else if(44 <= c){ 29451 - if(47 <= c) break c; 29452 - switch(c - 44 | 0){ 29453 - case 2: 29454 - var match = 781960526; break b; 29455 - case 0: 29456 - break c; 29457 - } 29458 - } 29459 - else if(43 > c) break c; 29460 - var match = 18854; 29461 - break b; 29462 - } 29463 - var 29464 - i = strict ? 0 : T, 29465 - chars = Stdlib[37].call(null, S, i), 29466 - match = error_pos(decide_pos, [0, 498443355, chars]); 29467 - } 29468 - if(781960526 <= match){ 29469 - var pos$0 = decide_pos + 1 | 0; 29470 - if(max < pos$0) 29471 - var b = error_pos(max, 3456159); 29472 - else if(is_digit(caml_string_get(s, pos$0))){ 29473 - var k = pos$0, acc$0 = acc, pow = ps_count_in_s; 29474 - for(;;){ 29475 - if(max < k){var b = error_pos(max, 3456159); break;} 29476 - if(! is_digit(caml_string_get(s, k))){var b = [0, [0, acc$0], k]; break;} 29477 - var count = (k - pos$0 | 0) + 1 | 0; 29478 - if(12 < count){ 29479 - var k$0 = k + 1 | 0; 29480 - k = k$0; 29481 - } 29482 - else{ 29483 - var 29484 - pow$0 = caml_int64_div(pow, U), 29485 - acc$1 = 29486 - caml_int64_add 29487 - (acc$0, 29488 - caml_int64_mul 29489 - (caml_int64_of_int32(caml_string_get(s, k) - 48 | 0), pow$0)), 29490 - k$1 = k + 1 | 0; 29491 - k = k$1; 29492 - acc$0 = acc$1; 29493 - pow = pow$0; 29494 - } 29495 - } 29496 - } 29497 - else 29498 - var b = error_pos(pos$0, a); 29499 - var tz_pos = b[2], frac = b[1]; 29500 - } 29501 - else 29502 - var tz_pos = decide_pos, frac = 0; 29503 - var 29504 - parse_tz_mag = 29505 - function(sign, hh_pos){ 29506 - var hh = parse_digits(2, hh_pos, max, s); 29507 - a: 29508 - if(strict){ 29509 - var mm_pos = hh_pos + 3 | 0; 29510 - parse_char(58, mm_pos - 1 | 0, max, s); 29511 - var mm_pos$0 = mm_pos, mm = parse_digits(2, mm_pos, max, s); 29512 - } 29513 - else{ 29514 - var next = hh_pos + 2 | 0; 29515 - b: 29516 - if(max >= next){ 29517 - if 29518 - (58 !== caml_string_get(s, next) 29519 - && ! is_digit(caml_string_get(s, next))) 29520 - break b; 29521 - var 29522 - mm_pos$1 = 29523 - 58 === caml_string_get(s, next) 29524 - ? hh_pos + 3 | 0 29525 - : hh_pos + 2 | 0, 29526 - mm$0 = parse_digits(2, mm_pos$1, max, s), 29527 - mm_pos$0 = mm_pos$1, 29528 - mm = mm$0; 29529 - break a; 29530 - } 29531 - var mm_pos$0 = hh_pos, mm = 0; 29532 - } 29533 - if(23 < hh) return error([0, hh_pos, hh_pos + 1 | 0], 415233371); 29534 - if(59 < mm) 29535 - return error([0, mm_pos$0, mm_pos$0 + 1 | 0], 415233371); 29536 - var 29537 - secs = (hh * 3600 | 0) + (mm * 60 | 0) | 0, 29538 - a = 0 === secs, 29539 - match = a ? -1 === sign : a, 29540 - tz_s = match ? 0 : [0, runtime.caml_mul(sign, secs)]; 29541 - return [0, tz_s, mm_pos$0 + 1 | 0]; 29542 - }; 29543 - b: 29544 - if(max < tz_pos) 29545 - var match$0 = error_pos(max, 3456159); 29546 - else{ 29547 - var c$0 = caml_string_get(s, tz_pos); 29548 - if(90 === c$0) 29549 - var match$0 = [0, V, tz_pos]; 29550 - else{ 29551 - if(46 <= c$0){ 29552 - if(122 === c$0 && ! strict){var match$0 = [0, Y, tz_pos]; break b;} 29553 - } 29554 - else if(43 <= c$0) 29555 - switch(c$0 - 43 | 0){ 29556 - case 0: 29557 - var match$0 = parse_tz_mag(1, tz_pos + 1 | 0); break b; 29558 - case 2: 29559 - var match$0 = parse_tz_mag(-1, tz_pos + 1 | 0); break b; 29560 - } 29561 - var 29562 - j = strict ? 0 : X, 29563 - chars$0 = Stdlib[37].call(null, W, j), 29564 - match$0 = error_pos(tz_pos, [0, 498443355, chars$0]); 29565 - } 29566 - } 29567 - var last_pos = match$0[2], tz_s_opt = match$0[1]; 29568 - if(tz_s_opt) var s$0 = tz_s_opt[1], tz_s = s$0; else var tz_s = 0; 29569 - var 29570 - match$1 = of_date_time([0, [0, y, m, d], [0, [0, hh, mm, ss], tz_s]]); 29571 - if(! match$1){var f = error([0, start, last_pos], 415233371); break a;} 29572 - var t = match$1[1]; 29573 - if(frac){ 29574 - var frac$0 = frac[1]; 29575 - if(caml_notequal(frac$0, Z)){ 29576 - var match$2 = add_span(t, [0, 0, frac$0]); 29577 - if(match$2) 29578 - var t$0 = match$2[1], t$1 = t$0; 29579 - else 29580 - var t$1 = error([0, start, last_pos], 415233371)[1]; 29581 - } 29582 - else 29583 - var t$1 = t; 29584 - } 29585 - else 29586 - var t$1 = t; 29587 - if(! sub && last_pos !== max){ 29588 - var f = error_pos(last_pos + 1 | 0, -493009593); 29589 - break a; 29590 - } 29591 - var f = [0, [0, t$1, tz_s_opt, (last_pos - start | 0) + 1 | 0]]; 29592 - break a; 29593 - } 29594 - var f = error_pos(start, 3456159); 29595 - } 29596 - return f; 29597 - } 29598 - catch(exn$0){ 29599 - var exn = caml_wrap_exception(exn$0); 29600 - if(exn[1] !== RFC3339) throw caml_maybe_attach_backtrace(exn, 0); 29601 - var e = exn[3], r = exn[2]; 29602 - return [1, [0, 76606165, [0, r, e]]]; 29603 - } 29604 - } 29605 - var _ = [0, 0, 1]; 29606 - function rfc3339_adjust_tz_offset(tz_offset_s){ 29607 - if 29608 - (-86340 <= tz_offset_s 29609 - && tz_offset_s <= 86340 && 0 === (tz_offset_s % 60 | 0)) 29610 - return [0, tz_offset_s, 0]; 29611 - return _; 29612 - } 29613 - function s_frac_of_ps(frac, ps){ 29614 - var a = caml_check_bound(frac_div, frac)[frac + 1]; 29615 - return caml_int64_div(caml_int64_mod(ps, ps_count_in_s), a); 29616 - } 29617 - var 29618 - cst_0_Ld = ".%0*Ld", 29619 - $ = 29620 - [0, 29621 - [4, 29622 - 0, 29623 - [0, 2, 4], 29624 - 0, 29625 - [12, 29626 - 45, 29627 - [4, 29628 - 0, 29629 - [0, 2, 2], 29630 - 0, 29631 - [12, 29632 - 45, 29633 - [4, 29634 - 0, 29635 - [0, 2, 2], 29636 - 0, 29637 - [0, 29638 - [4, 29639 - 0, 29640 - [0, 2, 2], 29641 - 0, 29642 - [12, 29643 - 58, 29644 - [4, 0, [0, 2, 2], 0, [12, 58, [4, 0, [0, 2, 2], 0, 0]]]]]]]]]]], 29645 - "%04d-%02d-%02d%c%02d:%02d:%02d"], 29646 - aa = [0, [12, 46, [7, 0, [1, 2], 0, 0]], cst_0_Ld], 29647 - ab = 29648 - [0, 29649 - [0, [4, 0, [0, 2, 2], 0, [12, 58, [4, 0, [0, 2, 2], 0, 0]]]], 29650 - "%c%02d:%02d"], 29651 - ac = [0, [12, 90, 0], "Z"]; 29652 - function to_rfc3339(f, opt, tz_offset_s, t){ 29653 - var 29654 - space = f ? f[1] : 0, 29655 - frac = opt ? opt[1] : 0, 29656 - ps = t[2], 29657 - buf = Stdlib_Buffer[1].call(null, 255); 29658 - if(tz_offset_s) 29659 - var 29660 - tz = tz_offset_s[1], 29661 - b = rfc3339_adjust_tz_offset(tz), 29662 - tz_unknown = b[2], 29663 - tz_offset_s$0 = b[1]; 29664 - else 29665 - var tz_unknown = 1, tz_offset_s$0 = 0; 29666 - var 29667 - c = to_date_time([0, tz_offset_s$0], t), 29668 - e = c[2], 29669 - tz_offset_s$1 = e[2], 29670 - a = e[1], 29671 - mm = a[3], 29672 - ss = a[2], 29673 - hh = a[1], 29674 - match = c[1], 29675 - d = match[3], 29676 - m = match[2], 29677 - y = match[1], 29678 - dt_sep = space ? 32 : 84; 29679 - caml_call7 29680 - (Stdlib_Printf[5].call(null, buf, $), y, m, d, dt_sep, hh, ss, mm); 29681 - var frac$0 = 0 <= frac ? 12 < frac ? 12 : frac : 0; 29682 - if(0 !== frac$0){ 29683 - var g = s_frac_of_ps(frac$0, ps); 29684 - caml_call2(Stdlib_Printf[5].call(null, buf, aa), frac$0, g); 29685 - } 29686 - a: 29687 - { 29688 - if(0 === tz_offset_s$1 && ! tz_unknown){ 29689 - Stdlib_Printf[5].call(null, buf, ac); 29690 - break a; 29691 - } 29692 - b: 29693 - { 29694 - if(0 <= tz_offset_s$1 && ! tz_unknown){var tz_sign = 43; break b;} 29695 - var tz_sign = 45; 29696 - } 29697 - var 29698 - tz_min = Stdlib[18].call(null, tz_offset_s$1 / 60 | 0), 29699 - tz_hh = tz_min / 60 | 0, 29700 - tz_mm = tz_min % 60 | 0; 29701 - caml_call3(Stdlib_Printf[5].call(null, buf, ab), tz_sign, tz_hh, tz_mm); 29702 - } 29703 - return Stdlib_Buffer[2].call(null, buf); 29704 - } 29705 - var ad = [0, [2, 0, 0], "%s"]; 29706 - function pp_rfc3339(space, frac_s, tz_offset_s, param, ppf, t){ 29707 - var a = to_rfc3339(space, frac_s, tz_offset_s, t); 29708 - return caml_call1(Stdlib_Format[146].call(null, ppf)(ad), a); 29709 - } 29710 - var 29711 - ae = 29712 - [0, 29713 - [4, 29714 - 0, 29715 - [0, 2, 4], 29716 - 0, 29717 - [12, 29718 - 45, 29719 - [4, 29720 - 0, 29721 - [0, 2, 2], 29722 - 0, 29723 - [12, 29724 - 45, 29725 - [4, 29726 - 0, 29727 - [0, 2, 2], 29728 - 0, 29729 - [12, 29730 - 32, 29731 - [4, 29732 - 0, 29733 - [0, 2, 2], 29734 - 0, 29735 - [12, 29736 - 58, 29737 - [4, 0, [0, 2, 2], 0, [12, 58, [4, 0, [0, 2, 2], 0, 0]]]]]]]]]]], 29738 - "%04d-%02d-%02d %02d:%02d:%02d"], 29739 - af = [0, [12, 46, [7, 0, [1, 2], 0, 0]], cst_0_Ld], 29740 - ag = 29741 - [0, 29742 - [12, 32, [0, [4, 0, [0, 2, 2], 0, [12, 58, [4, 0, [0, 2, 2], 0, 0]]]]], 29743 - " %c%02d:%02d"]; 29744 - function pp_human(opt, tz_offset_s, param, ppf, t){ 29745 - var frac = opt ? opt[1] : 0, ps = t[2]; 29746 - if(tz_offset_s) 29747 - var 29748 - tz = tz_offset_s[1], 29749 - b = rfc3339_adjust_tz_offset(tz), 29750 - tz_unknown = b[2], 29751 - tz_offset_s$0 = b[1]; 29752 - else 29753 - var tz_unknown = 1, tz_offset_s$0 = 0; 29754 - var 29755 - c = to_date_time([0, tz_offset_s$0], t), 29756 - e = c[2], 29757 - tz_offset_s$1 = e[2], 29758 - a = e[1], 29759 - mm = a[3], 29760 - ss = a[2], 29761 - hh = a[1], 29762 - match = c[1], 29763 - d = match[3], 29764 - m = match[2], 29765 - y = match[1]; 29766 - caml_call6(Stdlib_Format[146].call(null, ppf)(ae), y, m, d, hh, ss, mm); 29767 - var frac$0 = 0 <= frac ? 12 < frac ? 12 : frac : 0; 29768 - if(0 !== frac$0){ 29769 - var f = s_frac_of_ps(frac$0, ps); 29770 - caml_call2(Stdlib_Format[146].call(null, ppf)(af), frac$0, f); 29771 - } 29772 - a: 29773 - { 29774 - if(0 <= tz_offset_s$1 && ! tz_unknown){var tz_sign = 43; break a;} 29775 - var tz_sign = 45; 29776 - } 29777 - var 29778 - tz_min = Stdlib[18].call(null, tz_offset_s$1 / 60 | 0), 29779 - tz_hh = tz_min / 60 | 0, 29780 - tz_mm = tz_min % 60 | 0; 29781 - caml_call3(Stdlib_Format[146].call(null, ppf)(ag), tz_sign, tz_hh, tz_mm); 29782 - return 0; 29783 - } 29784 - var ah = [0, 0]; 29785 - function pp$0(a, b){return pp_human(0, ah, 0, a, b);} 29786 - runtime.caml_register_global 29787 - (101, 29788 - [0, 29789 - [0, 29790 - v, 29791 - zero, 29792 - of_d_ps, 29793 - unsafe_of_d_ps, 29794 - unsafe_of_d_ps_option, 29795 - to_d_ps, 29796 - of_int_s, 29797 - to_int_s, 29798 - of_float_s, 29799 - to_float_s, 29800 - equal, 29801 - compare, 29802 - neg, 29803 - add, 29804 - sub, 29805 - abs, 29806 - round, 29807 - truncate, 29808 - pp, 29809 - dump], 29810 - v$0, 29811 - epoch, 29812 - min, 29813 - [0, 2932896, ps_day_max], 29814 - of_span, 29815 - to_span, 29816 - unsafe_of_d_ps$0, 29817 - of_float_s$0, 29818 - to_float_s, 29819 - truncate_down, 29820 - frac_s, 29821 - equal, 29822 - compare, 29823 - is_earlier, 29824 - is_later, 29825 - add_span, 29826 - sub_span, 29827 - diff, 29828 - of_date_time, 29829 - to_date_time, 29830 - of_date, 29831 - to_date, 29832 - of_year, 29833 - to_year, 29834 - weekday, 29835 - weekday_num, 29836 - pp_rfc3339_error, 29837 - rfc3339_error_to_msg, 29838 - rfc3339_string_error, 29839 - of_rfc3339, 29840 - to_rfc3339, 29841 - pp_rfc3339, 29842 - pp_human, 29843 - pp$0, 29844 - dump], 29845 - "Ptime"); 29846 - return; 29847 - } 29848 - (globalThis)); 29849 - 29850 28575 //# 5 "../../.js/default/fmt/fmt.cma.js" 29851 28576 //# shape: Fmt:[N,N,F(1)*->F(1),F(1),F(1),F(1),F(3),F(2),F(2),F(2),F(1),F(1),F(1),F(1),F(1),F(2),F(2)*,F(3),F(4),F(4),F(2)*,F(2),F(2),F(2),F(3),F(2),F(2),F(4),F(4),F(4),F(5),F(5),F(4),F(3),F(4),F(4),F(4),F(1)*->F(2),F(1)*->F(2),F(1)*->F(2),F(2)*->F(2),F(1)*,F(7),F(2)*->F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(3),F(3),F(2),F(2),F(2),F(2),F(2),F(5),F(4),F(4),F(2)*->F(2),F(2)*->F(2),F(2)*->F(2),F(2)*->F(2),F(2)*->F(2),F(2)*->F(2),N,F(4),F(2),F(2),F(2),F(3),F(3),F(5),F(5),F(5),F(2)*->F(2),F(2),F(2),F(2),F(2),F(3),F(2),F(4),F(6),F(4)*->F(2),F(6)*->F(2),F(2)*->F(2),F(1),F(2),F(4),F(1),F(2),F(3),F(2),F(1),F(2),F(2),F(3),F(3),F(4),F(4),F(2)*->F(2)] 29852 28577 (function ··· 31644 30369 } 31645 30370 (globalThis)); 31646 30371 30372 + //# 5 "../../.js/default/ptime/ptime.cma.js" 30373 + //# shape: Ptime:[N,F(1),N,N,N,F(1)*,F(1)*,F(1)*,F(1)*,F(1),F(2),F(1),F(2)*,F(2)*,F(2)*,F(2)*,F(2),F(2),F(2),F(1),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(1),F(1),F(4),F(4),F(6),F(5),F(2),F(2)] 30374 + (function 30375 + (globalThis){ 30376 + "use strict"; 30377 + var 30378 + runtime = globalThis.jsoo_runtime, 30379 + caml_check_bound = runtime.caml_check_bound, 30380 + caml_greaterequal = runtime.caml_greaterequal, 30381 + caml_greaterthan = runtime.caml_greaterthan, 30382 + caml_int64_add = runtime.caml_int64_add, 30383 + caml_int64_create_lo_mi_hi = runtime.caml_int64_create_lo_mi_hi, 30384 + caml_int64_div = runtime.caml_int64_div, 30385 + caml_int64_mod = runtime.caml_int64_mod, 30386 + caml_int64_mul = runtime.caml_int64_mul, 30387 + caml_int64_of_float = runtime.caml_int64_of_float, 30388 + caml_int64_of_int32 = runtime.caml_int64_of_int32, 30389 + caml_int64_sub = runtime.caml_int64_sub, 30390 + caml_int64_to_float = runtime.caml_int64_to_float, 30391 + caml_int64_to_int32 = runtime.caml_int64_to_int32, 30392 + caml_int_compare = runtime.caml_int_compare, 30393 + caml_lessthan = runtime.caml_lessthan, 30394 + caml_list_of_js_array = runtime.caml_list_of_js_array, 30395 + caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace, 30396 + caml_notequal = runtime.caml_notequal, 30397 + caml_obj_dup = runtime.caml_obj_dup, 30398 + caml_string_get = runtime.caml_string_get, 30399 + caml_wrap_exception = runtime.caml_wrap_exception; 30400 + function caml_call1(f, a0){ 30401 + return (f.l >= 0 ? f.l : f.l = f.length) === 1 30402 + ? f(a0) 30403 + : runtime.caml_call_gen(f, [a0]); 30404 + } 30405 + function caml_call2(f, a0, a1){ 30406 + return (f.l >= 0 ? f.l : f.l = f.length) === 2 30407 + ? f(a0, a1) 30408 + : runtime.caml_call_gen(f, [a0, a1]); 30409 + } 30410 + function caml_call3(f, a0, a1, a2){ 30411 + return (f.l >= 0 ? f.l : f.l = f.length) === 3 30412 + ? f(a0, a1, a2) 30413 + : runtime.caml_call_gen(f, [a0, a1, a2]); 30414 + } 30415 + function caml_call4(f, a0, a1, a2, a3){ 30416 + return (f.l >= 0 ? f.l : f.l = f.length) === 4 30417 + ? f(a0, a1, a2, a3) 30418 + : runtime.caml_call_gen(f, [a0, a1, a2, a3]); 30419 + } 30420 + function caml_call6(f, a0, a1, a2, a3, a4, a5){ 30421 + return (f.l >= 0 ? f.l : f.l = f.length) === 6 30422 + ? f(a0, a1, a2, a3, a4, a5) 30423 + : runtime.caml_call_gen(f, [a0, a1, a2, a3, a4, a5]); 30424 + } 30425 + function caml_call7(f, a0, a1, a2, a3, a4, a5, a6){ 30426 + return (f.l >= 0 ? f.l : f.l = f.length) === 7 30427 + ? f(a0, a1, a2, a3, a4, a5, a6) 30428 + : runtime.caml_call_gen(f, [a0, a1, a2, a3, a4, a5, a6]); 30429 + } 30430 + var 30431 + global_data = runtime.caml_get_global_data(), 30432 + acc = caml_int64_create_lo_mi_hi(0, 0, 0), 30433 + a = 30434 + caml_list_of_js_array 30435 + ([498443355, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57]), 30436 + ps_count_in_ps = caml_int64_create_lo_mi_hi(1, 0, 0), 30437 + ps_count_in_ns = caml_int64_create_lo_mi_hi(1000, 0, 0), 30438 + ps_count_in_100ns = caml_int64_create_lo_mi_hi(100000, 0, 0), 30439 + ps_count_in_us = caml_int64_create_lo_mi_hi(1000000, 0, 0), 30440 + ps_count_in_100us = caml_int64_create_lo_mi_hi(16113920, 5, 0), 30441 + ps_count_in_ms = caml_int64_create_lo_mi_hi(10144256, 59, 0), 30442 + ps_count_in_100ms = caml_int64_create_lo_mi_hi(7792640, 5960, 0), 30443 + ps_count_in_s = caml_int64_create_lo_mi_hi(10817536, 59604, 0), 30444 + ps_count_in_min = caml_int64_create_lo_mi_hi(11517952, 3576278, 0), 30445 + ps_count_in_hour = caml_int64_create_lo_mi_hi(3211264, 13250129, 12), 30446 + ps_count_in_day = caml_int64_create_lo_mi_hi(9961472, 16013212, 306), 30447 + ps_day_max = caml_int64_create_lo_mi_hi(9961471, 16013212, 306), 30448 + epoch = [0, 0, caml_int64_create_lo_mi_hi(0, 0, 0)], 30449 + zero = [0, 0, caml_int64_create_lo_mi_hi(0, 0, 0)], 30450 + Stdlib_Format = global_data.Stdlib__Format, 30451 + Stdlib = global_data.Stdlib, 30452 + Stdlib_Buffer = global_data.Stdlib__Buffer, 30453 + Stdlib_Printf = global_data.Stdlib__Printf, 30454 + Stdlib_Int64 = global_data.Stdlib__Int64, 30455 + min = [0, -719528, caml_int64_create_lo_mi_hi(0, 0, 0)], 30456 + stdlib_abs = Stdlib[18], 30457 + b = caml_int64_create_lo_mi_hi(0, 0, 0), 30458 + c = caml_int64_create_lo_mi_hi(0, 0, 0), 30459 + d = caml_int64_create_lo_mi_hi(0, 0, 0), 30460 + f = caml_int64_create_lo_mi_hi(0, 0, 0); 30461 + function neg(param){ 30462 + var d = param[1]; 30463 + if(! caml_notequal(param[2], b)) return [0, - d | 0, c]; 30464 + var ps = param[2]; 30465 + return [0, - (d + 1 | 0) | 0, caml_int64_sub(ps_count_in_day, ps)]; 30466 + } 30467 + function add(a, param){ 30468 + var 30469 + ps1 = param[2], 30470 + d1 = param[1], 30471 + ps0 = a[2], 30472 + d0 = a[1], 30473 + d = d0 + d1 | 0, 30474 + ps = caml_int64_add(ps0, ps1), 30475 + ps_clamp = caml_int64_mod(ps, ps_count_in_day), 30476 + d$0 = d + Stdlib_Int64[15].call(null, ps, ps_clamp) | 0; 30477 + return [0, d$0, ps_clamp]; 30478 + } 30479 + function sub(s0, s1){return add(s0, neg(s1));} 30480 + function abs(s){var d = s[1]; return 0 <= d ? s : neg(s);} 30481 + var 30482 + e = 30483 + [0, 30484 + [11, 30485 + "illegal ptime time span: (", 30486 + [4, 0, 0, 0, [12, 44, [7, 0, 0, 0, [12, 41, 0]]]]], 30487 + "illegal ptime time span: (%d,%Ld)"]; 30488 + function v(s){ 30489 + var ps = s[2], d$0 = s[1]; 30490 + if(! caml_lessthan(ps, d) && ! caml_greaterthan(ps, ps_day_max)) return s; 30491 + var a = caml_call2(Stdlib_Format[149].call(null, e), d$0, ps); 30492 + return Stdlib[1].call(null, a); 30493 + } 30494 + function of_d_ps(s){ 30495 + var ps = s[2]; 30496 + if(! caml_lessthan(ps, f) && ! caml_greaterthan(ps, ps_day_max)) 30497 + return [0, s]; 30498 + return 0; 30499 + } 30500 + function unsafe_of_d_ps(s){return s;} 30501 + function unsafe_of_d_ps_option(s){return s;} 30502 + function to_d_ps(s){return s;} 30503 + function of_int_s(secs){ 30504 + var 30505 + d = stdlib_abs(secs), 30506 + s = 30507 + [0, 30508 + d / 86400 | 0, 30509 + caml_int64_mul(caml_int64_of_int32(d % 86400 | 0), ps_count_in_s)]; 30510 + return 0 <= secs ? s : neg(s); 30511 + } 30512 + var 30513 + day_int_min = Stdlib[20] / 86400 | 0, 30514 + day_int_max = Stdlib[19] / 86400 | 0; 30515 + function to_int_s(param){ 30516 + var ps = param[2], d = param[1]; 30517 + if(d >= day_int_min && day_int_max >= d){ 30518 + var 30519 + days_s = d * 86400 | 0, 30520 + day_s = caml_int64_to_int32(caml_int64_div(ps, ps_count_in_s)), 30521 + secs = days_s + day_s | 0; 30522 + return secs < days_s ? 0 : [0, secs]; 30523 + } 30524 + return 0; 30525 + } 30526 + var 30527 + min_int_float = Stdlib[20], 30528 + max_int_float = Stdlib[19], 30529 + g = caml_int64_create_lo_mi_hi(0, 0, 0), 30530 + h = caml_int64_create_lo_mi_hi(0, 0, 0), 30531 + i = caml_int64_create_lo_mi_hi(0, 0, 0), 30532 + j = caml_int64_create_lo_mi_hi(2, 0, 0); 30533 + function of_float_s(secs){ 30534 + if(secs !== secs) return 0; 30535 + var days = Math.floor(secs / 86400.); 30536 + if(! (days < min_int_float) && ! (max_int_float < days)){ 30537 + var rem_s = secs % 86400., rem_s$0 = rem_s < 0. ? 86400. + rem_s : rem_s; 30538 + if(86400. <= rem_s$0){ 30539 + var days$0 = days + 1.; 30540 + return max_int_float < days$0 ? 0 : [0, [0, days$0 | 0, g]]; 30541 + } 30542 + var 30543 + match = runtime.caml_modf_float(rem_s$0), 30544 + rem_s$1 = match[2], 30545 + frac_s = match[1], 30546 + rem_ps = caml_int64_mul(caml_int64_of_float(rem_s$1), ps_count_in_s), 30547 + frac_ps = caml_int64_of_float(frac_s * 1000000000000.); 30548 + return [0, [0, days | 0, caml_int64_add(rem_ps, frac_ps)]]; 30549 + } 30550 + return 0; 30551 + } 30552 + function to_float_s(param){ 30553 + var 30554 + ps = param[2], 30555 + d = param[1], 30556 + days_s = d * 86400., 30557 + day_s = caml_int64_to_float(caml_int64_div(ps, ps_count_in_s)), 30558 + day_rem_ps = caml_int64_to_float(caml_int64_mod(ps, ps_count_in_s)); 30559 + return days_s + day_s + day_rem_ps * 1e-12; 30560 + } 30561 + function equal(b, param){ 30562 + var 30563 + ps1 = param[2], 30564 + d1 = param[1], 30565 + ps0 = b[2], 30566 + d0 = b[1], 30567 + a = 0 === caml_int_compare(d0, d1) ? 1 : 0, 30568 + c = a ? 0 === Stdlib_Int64[15].call(null, ps0, ps1) ? 1 : 0 : a; 30569 + return c; 30570 + } 30571 + function compare(a, param){ 30572 + var 30573 + ps1 = param[2], 30574 + d1 = param[1], 30575 + ps0 = a[2], 30576 + d0 = a[1], 30577 + c = caml_int_compare(d0, d1); 30578 + return 0 === c ? runtime.caml_int64_compare(ps0, ps1) : c; 30579 + } 30580 + function round_div(a, b){ 30581 + return runtime.caml_equal(a, h) 30582 + ? i 30583 + : caml_int64_div(caml_int64_add(a, caml_int64_div(b, j)), b); 30584 + } 30585 + var 30586 + frac_div = 30587 + caml_obj_dup 30588 + ([0, 30589 + caml_int64_create_lo_mi_hi(10817536, 59604, 0), 30590 + caml_int64_create_lo_mi_hi(7792640, 5960, 0), 30591 + caml_int64_create_lo_mi_hi(779264, 596, 0), 30592 + caml_int64_create_lo_mi_hi(10144256, 59, 0), 30593 + caml_int64_create_lo_mi_hi(16113920, 5, 0), 30594 + caml_int64_create_lo_mi_hi(10000000, 0, 0), 30595 + caml_int64_create_lo_mi_hi(1000000, 0, 0), 30596 + caml_int64_create_lo_mi_hi(100000, 0, 0), 30597 + caml_int64_create_lo_mi_hi(10000, 0, 0), 30598 + caml_int64_create_lo_mi_hi(1000, 0, 0), 30599 + caml_int64_create_lo_mi_hi(100, 0, 0), 30600 + caml_int64_create_lo_mi_hi(10, 0, 0), 30601 + caml_int64_create_lo_mi_hi(1, 0, 0)]), 30602 + k = caml_int64_create_lo_mi_hi(0, 0, 0), 30603 + G = caml_int64_create_lo_mi_hi(0, 0, 0); 30604 + function round(frac, t){ 30605 + var 30606 + sign = t[1], 30607 + frac$0 = 0 <= frac ? 12 < frac ? 12 : frac : 0, 30608 + match = 0 <= sign ? t : neg(t), 30609 + ps = match[2], 30610 + d = match[1], 30611 + a = caml_check_bound(frac_div, frac$0)[frac$0 + 1], 30612 + rps = caml_int64_mul(round_div(ps, frac_div[frac$0 + 1]), a), 30613 + t$0 = caml_greaterthan(rps, ps_day_max) ? [0, d + 1 | 0, k] : [0, d, rps]; 30614 + return 0 <= sign ? t$0 : neg(t$0); 30615 + } 30616 + function truncate(frac, t){ 30617 + var 30618 + sign = t[1], 30619 + frac$0 = 0 <= frac ? 12 < frac ? 12 : frac : 0, 30620 + match = 0 <= sign ? t : neg(t), 30621 + ps = match[2], 30622 + d = match[1], 30623 + tps = 30624 + caml_int64_sub 30625 + (ps, 30626 + caml_int64_mod(ps, caml_check_bound(frac_div, frac$0)[frac$0 + 1])); 30627 + return 0 <= sign ? [0, d, tps] : neg([0, d, tps]); 30628 + } 30629 + function truncate_down(frac, param){ 30630 + var ps = param[2], d = param[1]; 30631 + return [0, 30632 + d, 30633 + caml_int64_sub 30634 + (ps, 30635 + caml_int64_mod(ps, caml_check_bound(frac_div, frac)[frac + 1]))]; 30636 + } 30637 + var 30638 + cst_1 = "<1>", 30639 + l = 30640 + [0, 30641 + [18, 30642 + [1, [0, [11, cst_1, 0], cst_1]], 30643 + [12, 30644 + 40, 30645 + [4, 30646 + 0, 30647 + 0, 30648 + 0, 30649 + [12, 44, [17, [0, "@,", 0, 0], [7, 0, 0, 0, [12, 41, [17, 0, 0]]]]]]]], 30650 + "@[<1>(%d,@,%Ld)@]"]; 30651 + function dump(ppf, param){ 30652 + var ps = param[2], d = param[1]; 30653 + return caml_call2(Stdlib_Format[146].call(null, ppf)(l), d, ps); 30654 + } 30655 + function divide_ps(carry, ps, hi, lo){ 30656 + var 30657 + hi_d = caml_int64_to_int32(caml_int64_div(ps, hi)), 30658 + rem_ps = caml_int64_mod(ps, hi), 30659 + lo_d = caml_int64_to_int32(round_div(rem_ps, lo)); 30660 + return lo_d === carry ? [0, hi_d + 1 | 0, 0] : [0, hi_d, lo_d]; 30661 + } 30662 + var 30663 + cst_d_s = "%d%s", 30664 + C = [0, [4, 0, 0, 0, [2, 0, 0]], cst_d_s], 30665 + D = [0, [4, 0, 0, 0, [2, 0, 0]], cst_d_s], 30666 + E = 30667 + [0, 30668 + [4, 0, 0, 0, [12, 46, [4, 0, [0, 2, 3], 0, [2, 0, 0]]]], 30669 + "%d.%03d%s"]; 30670 + function pp_unit(higher_str, hi, hi_str, frac_limit, lo, ppf, neg, ps){ 30671 + function pp_unit_integral(ppf, neg, h){ 30672 + if(1000 === h){ 30673 + var a = neg ? -1 : 1; 30674 + return caml_call2(Stdlib_Format[146].call(null, ppf)(C), a, higher_str); 30675 + } 30676 + var b = neg ? - h | 0 : h; 30677 + return caml_call2(Stdlib_Format[146].call(null, ppf)(D), b, hi_str); 30678 + } 30679 + if(! caml_lessthan(ps, frac_limit)){ 30680 + var ms = divide_ps(1, ps, hi, hi)[1]; 30681 + return pp_unit_integral(ppf, neg, ms); 30682 + } 30683 + var match = divide_ps(1000, ps, hi, lo), l = match[2], h = match[1]; 30684 + if(100 > h && 0 !== l){ 30685 + var h$0 = neg ? - h | 0 : h; 30686 + return caml_call3(Stdlib_Format[146].call(null, ppf)(E), h$0, l, hi_str); 30687 + } 30688 + return pp_unit_integral(ppf, neg, h); 30689 + } 30690 + var 30691 + cst_dd = "%dd", 30692 + cst_dh = "%dh", 30693 + cst_dmin = "%dmin", 30694 + cst_ds = "%ds", 30695 + cst_dy = "%dy", 30696 + cst_min = "min", 30697 + m = [0, [4, 0, 0, 0, [12, 121, 0]], cst_dy], 30698 + n = [0, [4, 0, 0, 0, [12, 100, 0]], cst_dd], 30699 + o = [0, [4, 0, 0, 0, [11, "y1d", 0]], "%dy1d"], 30700 + p = [0, [4, 0, 0, 0, [12, 121, 0]], cst_dy], 30701 + q = [0, [4, 0, 0, 0, [12, 100, 0]], cst_dd], 30702 + r = [0, [4, 0, 0, 0, [12, 104, 0]], cst_dh], 30703 + s = [0, [4, 0, 0, 0, [12, 100, 0]], cst_dd], 30704 + t = [0, [4, 0, 0, 0, [12, 104, 0]], cst_dh], 30705 + u = [0, [4, 0, 0, 0, [11, cst_min, 0]], cst_dmin], 30706 + w = [0, [4, 0, 0, 0, [12, 104, 0]], cst_dh], 30707 + x = [0, [4, 0, 0, 0, [11, cst_min, 0]], cst_dmin], 30708 + y = [0, [4, 0, 0, 0, [12, 115, 0]], cst_ds], 30709 + z = [0, [4, 0, 0, 0, [11, cst_min, 0]], cst_dmin], 30710 + A = [0, [4, 0, 0, 0, [12, 115, 0]], cst_ds], 30711 + B = 30712 + [0, 30713 + [4, 0, 0, 0, [12, 46, [4, 0, [0, 2, 3], 0, [12, 115, 0]]]], 30714 + "%d.%03ds"], 30715 + F = [0, [4, 0, 0, 0, [11, "ps", 0]], "%dps"]; 30716 + function pp(ppf, s$3){ 30717 + var 30718 + sign = s$3[1], 30719 + neg = sign < 0 ? 1 : 0, 30720 + match$2 = abs(s$3), 30721 + d$1 = match$2[1]; 30722 + if(0 === d$1){ 30723 + var ps$0 = match$2[2]; 30724 + if(caml_greaterequal(ps$0, ps_count_in_hour)){ 30725 + var 30726 + match = divide_ps(60, ps$0, ps_count_in_hour, ps_count_in_min), 30727 + m$0 = match[2], 30728 + h$1 = match[1]; 30729 + if(24 === h$1){ 30730 + var c = neg ? -1 : 1; 30731 + return caml_call1(Stdlib_Format[146].call(null, ppf)(s), c); 30732 + } 30733 + var h$2 = neg ? - h$1 | 0 : h$1; 30734 + caml_call1(Stdlib_Format[146].call(null, ppf)(t), h$2); 30735 + if(0 !== m$0) caml_call1(Stdlib_Format[146].call(null, ppf)(u), m$0); 30736 + return 0; 30737 + } 30738 + if(caml_greaterequal(ps$0, ps_count_in_min)){ 30739 + var 30740 + match$0 = divide_ps(60, ps$0, ps_count_in_min, ps_count_in_s), 30741 + s$0 = match$0[2], 30742 + m$1 = match$0[1]; 30743 + if(60 === m$1){ 30744 + var e = neg ? -1 : 1; 30745 + return caml_call1(Stdlib_Format[146].call(null, ppf)(w), e); 30746 + } 30747 + var m$2 = neg ? - m$1 | 0 : m$1; 30748 + caml_call1(Stdlib_Format[146].call(null, ppf)(x), m$2); 30749 + if(0 !== s$0) caml_call1(Stdlib_Format[146].call(null, ppf)(y), s$0); 30750 + return 0; 30751 + } 30752 + if(! caml_greaterequal(ps$0, ps_count_in_s)){ 30753 + var cst_ms = "ms"; 30754 + if(caml_greaterequal(ps$0, ps_count_in_ms)) 30755 + return pp_unit 30756 + ("s", 30757 + ps_count_in_ms, 30758 + cst_ms, 30759 + ps_count_in_100ms, 30760 + ps_count_in_us, 30761 + ppf, 30762 + neg, 30763 + ps$0); 30764 + var cst_us = "us"; 30765 + if(caml_greaterequal(ps$0, ps_count_in_us)) 30766 + return pp_unit 30767 + (cst_ms, 30768 + ps_count_in_us, 30769 + cst_us, 30770 + ps_count_in_100us, 30771 + ps_count_in_ns, 30772 + ppf, 30773 + neg, 30774 + ps$0); 30775 + if(caml_greaterequal(ps$0, ps_count_in_ns)) 30776 + return pp_unit 30777 + (cst_us, 30778 + ps_count_in_ns, 30779 + "ns", 30780 + ps_count_in_100ns, 30781 + ps_count_in_ps, 30782 + ppf, 30783 + neg, 30784 + ps$0); 30785 + var ps = caml_int64_to_int32(ps$0), g = neg ? - ps | 0 : ps; 30786 + return caml_call1(Stdlib_Format[146].call(null, ppf)(F), g); 30787 + } 30788 + var 30789 + match$1 = divide_ps(1000, ps$0, ps_count_in_s, ps_count_in_ms), 30790 + ms = match$1[2], 30791 + s$1 = match$1[1]; 30792 + if(60 === s$1){ 30793 + var f = neg ? -1 : 1; 30794 + return caml_call1(Stdlib_Format[146].call(null, ppf)(z), f); 30795 + } 30796 + var s$2 = neg ? - s$1 | 0 : s$1; 30797 + return 0 === ms 30798 + ? caml_call1(Stdlib_Format[146].call(null, ppf)(A), s$2) 30799 + : caml_call2(Stdlib_Format[146].call(null, ppf)(B), s$2, ms); 30800 + } 30801 + var ps$1 = match$2[2]; 30802 + if(365 < d$1){ 30803 + var max_d = Stdlib[19] / 4 | 0; 30804 + if(max_d < d$1) 30805 + var rem_d = d$1 % 365 | 0, y$0 = d$1 / 365 | 0; 30806 + else 30807 + var 30808 + y$3 = (d$1 * 4 | 0) / 1461 | 0, 30809 + rem_d$0 = d$1 - ((y$3 * 1461 | 0) / 4 | 0) | 0, 30810 + rem_d = rem_d$0, 30811 + y$0 = y$3; 30812 + var 30813 + days = rem_d + caml_int64_to_int32(round_div(ps$1, ps_count_in_day)) | 0; 30814 + if(366 === days) 30815 + var days$0 = 1, y$1 = y$0 + 1 | 0; 30816 + else 30817 + var days$0 = days, y$1 = y$0; 30818 + var y$2 = neg ? - y$1 | 0 : y$1; 30819 + caml_call1(Stdlib_Format[146].call(null, ppf)(m), y$2); 30820 + if(0 !== days$0) 30821 + caml_call1(Stdlib_Format[146].call(null, ppf)(n), days$0); 30822 + return 0; 30823 + } 30824 + var h = divide_ps(1, ps$1, ps_count_in_hour, ps_count_in_hour)[1]; 30825 + if(24 === h) var h$0 = 0, d = d$1 + 1 | 0; else var h$0 = h, d = d$1; 30826 + if(366 === d){ 30827 + var a = neg ? -1 : 1; 30828 + return caml_call1(Stdlib_Format[146].call(null, ppf)(o), a); 30829 + } 30830 + if(365 === d && 6 <= h$0){ 30831 + var b = neg ? -1 : 1; 30832 + return caml_call1(Stdlib_Format[146].call(null, ppf)(p), b); 30833 + } 30834 + var d$0 = neg ? - d | 0 : d; 30835 + caml_call1(Stdlib_Format[146].call(null, ppf)(q), d$0); 30836 + if(0 !== h$0) caml_call1(Stdlib_Format[146].call(null, ppf)(r), h$0); 30837 + return 0; 30838 + } 30839 + var 30840 + H = 30841 + [0, 30842 + [11, 30843 + "illegal ptime timestamp: (", 30844 + [4, 0, 0, 0, [12, 44, [7, 0, 0, 0, [12, 41, 0]]]]], 30845 + "illegal ptime timestamp: (%d,%Ld)"]; 30846 + function v$0(s){ 30847 + var ps = s[2], d = s[1]; 30848 + if 30849 + (! 30850 + caml_lessthan(ps, G) 30851 + && ! caml_greaterthan(ps, ps_day_max) && d >= -719528 && 2932896 >= d) 30852 + return s; 30853 + var a = caml_call2(Stdlib_Format[149].call(null, H), d, ps); 30854 + return Stdlib[1].call(null, a); 30855 + } 30856 + function unsafe_of_d_ps$0(s){return s;} 30857 + function of_span(span){ 30858 + var d = span[1]; 30859 + if(d >= -719528 && 2932896 >= d) return [0, span]; 30860 + return 0; 30861 + } 30862 + function to_span(t){return t;} 30863 + function of_float_s$0(secs){ 30864 + var match = of_float_s(secs); 30865 + if(! match) return 0; 30866 + var d = match[1]; 30867 + return of_span(d); 30868 + } 30869 + function frac_s(param){ 30870 + var ps = param[2]; 30871 + return [0, 0, caml_int64_mod(ps, ps_count_in_s)]; 30872 + } 30873 + function is_earlier(t, than){return -1 === compare(t, than) ? 1 : 0;} 30874 + function is_later(t, than){return 1 === compare(t, than) ? 1 : 0;} 30875 + function add_span(t, d){return of_span(add(t, d));} 30876 + function sub_span(t, d){return of_span(sub(t, d));} 30877 + function diff(t1, t0){return sub(t1, t0);} 30878 + var 30879 + mlen = caml_obj_dup([0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]); 30880 + function of_date_time(param){ 30881 + var 30882 + t = param[2], 30883 + tz_offset_s = t[2], 30884 + match$0 = t[1], 30885 + ss$0 = match$0[3], 30886 + mm$0 = match$0[2], 30887 + hh$0 = match$0[1], 30888 + date = param[1], 30889 + d = date[3], 30890 + m$0 = date[2], 30891 + y$0 = date[1], 30892 + h = 0 <= y$0; 30893 + if(h){ 30894 + var i = y$0 <= 9999; 30895 + if(i){ 30896 + var j = 1 <= m$0; 30897 + if(j){ 30898 + var k = m$0 <= 12; 30899 + if(k){ 30900 + var l = 1 <= d; 30901 + if(l){ 30902 + a: 30903 + { 30904 + if(2 === m$0){ 30905 + var e = 0 === (y$0 % 4 | 0); 30906 + if(e) 30907 + var u = 0 !== (y$0 % 100 | 0), f = u || 0 === (y$0 % 400 | 0); 30908 + else 30909 + var f = e; 30910 + if(f){var n = 29; break a;} 30911 + } 30912 + var g = m$0 - 1 | 0, n = caml_check_bound(mlen, g)[g + 1]; 30913 + } 30914 + var b = d <= n; 30915 + } 30916 + else 30917 + var b = l; 30918 + } 30919 + else 30920 + var b = k; 30921 + } 30922 + else 30923 + var b = j; 30924 + } 30925 + else 30926 + var b = i; 30927 + } 30928 + else 30929 + var b = h; 30930 + if(b){ 30931 + var 30932 + match = t[1], 30933 + ss = match[3], 30934 + mm = match[2], 30935 + hh = match[1], 30936 + o = 0 <= hh; 30937 + if(o){ 30938 + var p = hh <= 23; 30939 + if(p){ 30940 + var q = 0 <= mm; 30941 + if(q){ 30942 + var r = mm <= 59; 30943 + if(r) var s = 0 <= ss, c = s ? ss <= 60 : s; else var c = r; 30944 + } 30945 + else 30946 + var c = q; 30947 + } 30948 + else 30949 + var c = p; 30950 + } 30951 + else 30952 + var c = o; 30953 + if(c){ 30954 + var 30955 + day = date[3], 30956 + month = date[2], 30957 + year = date[1], 30958 + a = (14 - month | 0) / 12 | 0, 30959 + y = (year + 4800 | 0) - a | 0, 30960 + m = (month + (12 * a | 0) | 0) - 3 | 0, 30961 + d$0 = 30962 + ((((((day + (((153 * m | 0) + 2 | 0) / 5 | 0) | 0) + (365 * y | 0) 30963 + | 0) 30964 + + (y / 4 | 0) 30965 + | 0) 30966 + - (y / 100 | 0) 30967 + | 0) 30968 + + (y / 400 | 0) 30969 + | 0) 30970 + - 32045 30971 + | 0) 30972 + - 2440588 30973 + | 0, 30974 + hh_ps = caml_int64_mul(caml_int64_of_int32(hh$0), ps_count_in_hour), 30975 + mm_ps = caml_int64_mul(caml_int64_of_int32(mm$0), ps_count_in_min), 30976 + ss_ps = caml_int64_mul(caml_int64_of_int32(ss$0), ps_count_in_s), 30977 + ps = caml_int64_add(hh_ps, caml_int64_add(mm_ps, ss_ps)); 30978 + return sub_span([0, d$0, ps], of_int_s(tz_offset_s)); 30979 + } 30980 + } 30981 + return 0; 30982 + } 30983 + function to_date_time(opt, t){ 30984 + var 30985 + tz_offset_s = opt ? opt[1] : 0, 30986 + match = add_span(t, of_int_s(tz_offset_s)); 30987 + if(match) 30988 + var 30989 + local = match[1], 30990 + tz_offset_s$0 = tz_offset_s, 30991 + ps = local[2], 30992 + d$0 = local[1]; 30993 + else 30994 + var ps$0 = t[2], d$1 = t[1], tz_offset_s$0 = 0, ps = ps$0, d$0 = d$1; 30995 + var 30996 + jd = d$0 + 2440588 | 0, 30997 + a = jd + 32044 | 0, 30998 + b = ((4 * a | 0) + 3 | 0) / 146097 | 0, 30999 + c = a - ((146097 * b | 0) / 4 | 0) | 0, 31000 + d = ((4 * c | 0) + 3 | 0) / 1461 | 0, 31001 + e = c - ((1461 * d | 0) / 4 | 0) | 0, 31002 + m = ((5 * e | 0) + 2 | 0) / 153 | 0, 31003 + day = (e - (((153 * m | 0) + 2 | 0) / 5 | 0) | 0) + 1 | 0, 31004 + month = (m + 3 | 0) - (12 * (m / 10 | 0) | 0) | 0, 31005 + year = (((100 * b | 0) + d | 0) - 4800 | 0) + (m / 10 | 0) | 0, 31006 + hh = caml_int64_to_int32(caml_int64_div(ps, ps_count_in_hour)), 31007 + hh_rem = caml_int64_mod(ps, ps_count_in_hour), 31008 + mm = caml_int64_to_int32(caml_int64_div(hh_rem, ps_count_in_min)), 31009 + mm_rem = caml_int64_mod(hh_rem, ps_count_in_min), 31010 + ss = caml_int64_to_int32(caml_int64_div(mm_rem, ps_count_in_s)); 31011 + return [0, [0, year, month, day], [0, [0, hh, mm, ss], tz_offset_s$0]]; 31012 + } 31013 + var I = [0, 0, 0, 0]; 31014 + function of_date(opt, date){ 31015 + var tz = opt ? opt[1] : 0; 31016 + return of_date_time([0, date, [0, I, tz]]); 31017 + } 31018 + function to_date(tz_offset_s, t){return to_date_time(tz_offset_s, t)[1];} 31019 + function of_year(tz_offset_s, y){ 31020 + return of_date(tz_offset_s, [0, y, 1, 1]); 31021 + } 31022 + function to_year(opt, t){ 31023 + var 31024 + tz_offset_s = opt ? opt[1] : 0, 31025 + match = add_span(t, of_int_s(tz_offset_s)); 31026 + if(match) var local_d = match[1][1], d$0 = local_d; else var d$0 = t[1]; 31027 + var 31028 + jd = d$0 + 2440588 | 0, 31029 + a = jd + 32044 | 0, 31030 + b = ((4 * a | 0) + 3 | 0) / 146097 | 0, 31031 + c = a - ((146097 * b | 0) / 4 | 0) | 0, 31032 + d = ((4 * c | 0) + 3 | 0) / 1461 | 0, 31033 + e = c - ((1461 * d | 0) / 4 | 0) | 0, 31034 + m = ((5 * e | 0) + 2 | 0) / 153 | 0; 31035 + return (((100 * b | 0) + d | 0) - 4800 | 0) + (m / 10 | 0) | 0; 31036 + } 31037 + function weekday_num(opt, t){ 31038 + var 31039 + tz_offset_s = opt ? opt[1] : 0, 31040 + d = add(t, of_int_s(tz_offset_s))[1], 31041 + i = (d + 4 | 0) % 7 | 0; 31042 + return 0 <= i ? i : 7 + i | 0; 31043 + } 31044 + var 31045 + wday = 31046 + caml_obj_dup 31047 + ([0, 4153708, 3853996, 4203428, 4349046, 4200545, 3506557, 4149254]); 31048 + function weekday(tz_offset_s, t){ 31049 + var a = weekday_num(tz_offset_s, t); 31050 + return caml_check_bound(wday, a)[a + 1]; 31051 + } 31052 + var 31053 + cst$0 = "", 31054 + cst = "@ ", 31055 + cst_input = "input", 31056 + J = 31057 + [0, 31058 + [18, 31059 + [1, [0, 0, cst$0]], 31060 + [11, 31061 + "unexpected", 31062 + [17, 31063 + [0, cst, 1, 0], 31064 + [11, 31065 + "end", 31066 + [17, 31067 + [0, cst, 1, 0], 31068 + [11, "of", [17, [0, cst, 1, 0], [11, cst_input, [17, 0, 0]]]]]]]]], 31069 + "@[unexpected@ end@ of@ input@]"], 31070 + K = 31071 + [0, 31072 + [18, 31073 + [1, [0, 0, cst$0]], 31074 + [11, 31075 + "invalid", 31076 + [17, 31077 + [0, cst, 1, 0], 31078 + [11, "time", [17, [0, cst, 1, 0], [11, "stamp", [17, 0, 0]]]]]]], 31079 + "@[invalid@ time@ stamp@]"], 31080 + L = 31081 + [0, 31082 + [18, 31083 + [1, [0, 0, cst$0]], 31084 + [11, "trailing", [17, [0, cst, 1, 0], [11, cst_input, [17, 0, 0]]]]], 31085 + "@[trailing@ input@]"], 31086 + M = [0, [17, [0, cst, 1, 0], [1, 0]], "@ %C"], 31087 + N = 31088 + [0, 31089 + [18, 31090 + [1, [0, 0, cst$0]], 31091 + [11, 31092 + "expected", 31093 + [17, 31094 + [0, cst, 1, 0], 31095 + [12, 31096 + 97, 31097 + [17, 31098 + [0, cst, 1, 0], 31099 + [11, 31100 + "character", 31101 + [17, [0, cst, 1, 0], [11, "in:", [15, [17, 0, 0]]]]]]]]]], 31102 + "@[expected@ a@ character@ in:%a@]"]; 31103 + function pp_rfc3339_error(ppf, param){ 31104 + if(typeof param === "number") 31105 + return 3456159 === param 31106 + ? Stdlib_Format[146].call(null, ppf)(J) 31107 + : 415233371 31108 + <= param 31109 + ? Stdlib_Format[146].call(null, ppf)(K) 31110 + : Stdlib_Format[146].call(null, ppf)(L); 31111 + var cs = param[2]; 31112 + function pp_chars(ppf, param$0){ 31113 + var param = param$0; 31114 + for(;;){ 31115 + if(! param) return 0; 31116 + var cs = param[2], c = param[1]; 31117 + caml_call1(Stdlib_Format[146].call(null, ppf)(M), c); 31118 + param = cs; 31119 + } 31120 + } 31121 + return caml_call2(Stdlib_Format[146].call(null, ppf)(N), pp_chars, cs); 31122 + } 31123 + var O = [0, [4, 0, 0, 0, [12, 45, [4, 0, 0, 0, 0]]], "%d-%d"]; 31124 + function pp_range(ppf, param){ 31125 + var e = param[2], s = param[1]; 31126 + return s === e 31127 + ? Stdlib_Format[23].call(null, ppf, s) 31128 + : caml_call2(Stdlib_Format[146].call(null, ppf)(O), s, e); 31129 + } 31130 + var 31131 + cst_h = "<h>", 31132 + P = 31133 + [0, 31134 + [18, 31135 + [1, [0, [11, cst_h, 0], cst_h]], 31136 + [15, [11, ": ", [15, [17, 0, 0]]]]], 31137 + "@[<h>%a: %a@]"]; 31138 + function rfc3339_error_to_string(param){ 31139 + var err = param[2], r = param[1]; 31140 + return caml_call4 31141 + (Stdlib_Format[150].call(null, P), 31142 + pp_range, 31143 + r, 31144 + pp_rfc3339_error, 31145 + err); 31146 + } 31147 + function rfc3339_string_error(v){ 31148 + if(0 === v[0]) return v; 31149 + var e = v[1][2]; 31150 + return [1, rfc3339_error_to_string(e)]; 31151 + } 31152 + function rfc3339_error_to_msg(v){ 31153 + if(0 === v[0]) return v; 31154 + var e = v[1][2]; 31155 + return [1, [0, 3854881, rfc3339_error_to_string(e)]]; 31156 + } 31157 + var 31158 + RFC3339 = [248, "Ptime.RFC3339", runtime.caml_fresh_oo_id(0)], 31159 + U = caml_int64_create_lo_mi_hi(10, 0, 0), 31160 + Z = caml_int64_create_lo_mi_hi(0, 0, 0), 31161 + dummy = 0; 31162 + function error(r, e){ 31163 + throw caml_maybe_attach_backtrace([0, RFC3339, r, e], 1); 31164 + } 31165 + function error_pos(p, e){return error([0, p, p], e);} 31166 + function is_digit(param){return 9 < param - 48 >>> 0 ? 0 : 1;} 31167 + function parse_digits(count, pos, max, s){ 31168 + var stop = (pos + count | 0) - 1 | 0; 31169 + if(max < stop) return error_pos(max, 3456159); 31170 + var k = pos, acc = 0; 31171 + for(;;){ 31172 + if(stop < k) return acc; 31173 + if(! is_digit(caml_string_get(s, k))) return error_pos(k, a); 31174 + var 31175 + acc$0 = ((acc * 10 | 0) + caml_string_get(s, k) | 0) - 48 | 0, 31176 + k$0 = k + 1 | 0; 31177 + k = k$0; 31178 + acc = acc$0; 31179 + } 31180 + } 31181 + function parse_char(c, pos, max, s){ 31182 + if(max < pos) return error_pos(max, 3456159); 31183 + if(caml_string_get(s, pos) === c) return; 31184 + return error_pos(pos, [0, 498443355, [0, c, 0]]); 31185 + } 31186 + var 31187 + Q = [0, 84, 0], 31188 + R = [0, 116, [0, 32, 0]], 31189 + S = [0, 46, [0, 43, [0, 45, [0, 90, 0]]]], 31190 + T = [0, 122, 0], 31191 + V = [0, 0], 31192 + W = [0, 43, [0, 45, [0, 90, 0]]], 31193 + X = [0, 122, 0], 31194 + Y = [0, 0]; 31195 + function of_rfc3339(n, l, opt, s){ 31196 + var strict = n ? n[1] : 0, sub = l ? l[1] : 0, start = opt ? opt[1] : 0; 31197 + try{ 31198 + var s_len = runtime.caml_ml_string_length(s), max = s_len - 1 | 0; 31199 + a: 31200 + { 31201 + if(0 !== s_len && 0 <= start && max >= start){ 31202 + var 31203 + m_pos = start + 5 | 0, 31204 + d_pos = m_pos + 3 | 0, 31205 + hh_pos = d_pos + 3 | 0, 31206 + mm_pos = hh_pos + 3 | 0, 31207 + ss_pos = mm_pos + 3 | 0, 31208 + decide_pos = ss_pos + 2 | 0, 31209 + y = parse_digits(4, start, max, s); 31210 + parse_char(45, m_pos - 1 | 0, max, s); 31211 + var m = parse_digits(2, m_pos, max, s); 31212 + parse_char(45, d_pos - 1 | 0, max, s); 31213 + var d = parse_digits(2, d_pos, max, s), pos = hh_pos - 1 | 0; 31214 + if(max < pos) 31215 + error_pos(max, 3456159); 31216 + else{ 31217 + var switcher = caml_string_get(s, pos) - 33 | 0; 31218 + b: 31219 + { 31220 + if(82 < switcher >>> 0){ 31221 + if(84 >= switcher + 1 >>> 0 && ! strict){var g = 1; break b;} 31222 + } 31223 + else if(51 === switcher){var g = 1; break b;} 31224 + var g = 0; 31225 + } 31226 + if(! g){ 31227 + var h = strict ? 0 : R; 31228 + error_pos(pos, [0, 498443355, Stdlib[37].call(null, Q, h)]); 31229 + } 31230 + } 31231 + var hh = parse_digits(2, hh_pos, max, s); 31232 + parse_char(58, mm_pos - 1 | 0, max, s); 31233 + var mm = parse_digits(2, mm_pos, max, s); 31234 + parse_char(58, ss_pos - 1 | 0, max, s); 31235 + var ss = parse_digits(2, ss_pos, max, s); 31236 + b: 31237 + if(max < decide_pos) 31238 + var match = error_pos(max, 3456159); 31239 + else{ 31240 + var c = caml_string_get(s, decide_pos); 31241 + c: 31242 + { 31243 + if(90 <= c){ 31244 + if(122 === c){if(strict) break c; var match = 18854; break b;} 31245 + if(91 <= c) break c; 31246 + } 31247 + else if(44 <= c){ 31248 + if(47 <= c) break c; 31249 + switch(c - 44 | 0){ 31250 + case 2: 31251 + var match = 781960526; break b; 31252 + case 0: 31253 + break c; 31254 + } 31255 + } 31256 + else if(43 > c) break c; 31257 + var match = 18854; 31258 + break b; 31259 + } 31260 + var 31261 + i = strict ? 0 : T, 31262 + chars = Stdlib[37].call(null, S, i), 31263 + match = error_pos(decide_pos, [0, 498443355, chars]); 31264 + } 31265 + if(781960526 <= match){ 31266 + var pos$0 = decide_pos + 1 | 0; 31267 + if(max < pos$0) 31268 + var b = error_pos(max, 3456159); 31269 + else if(is_digit(caml_string_get(s, pos$0))){ 31270 + var k = pos$0, acc$0 = acc, pow = ps_count_in_s; 31271 + for(;;){ 31272 + if(max < k){var b = error_pos(max, 3456159); break;} 31273 + if(! is_digit(caml_string_get(s, k))){var b = [0, [0, acc$0], k]; break;} 31274 + var count = (k - pos$0 | 0) + 1 | 0; 31275 + if(12 < count){ 31276 + var k$0 = k + 1 | 0; 31277 + k = k$0; 31278 + } 31279 + else{ 31280 + var 31281 + pow$0 = caml_int64_div(pow, U), 31282 + acc$1 = 31283 + caml_int64_add 31284 + (acc$0, 31285 + caml_int64_mul 31286 + (caml_int64_of_int32(caml_string_get(s, k) - 48 | 0), pow$0)), 31287 + k$1 = k + 1 | 0; 31288 + k = k$1; 31289 + acc$0 = acc$1; 31290 + pow = pow$0; 31291 + } 31292 + } 31293 + } 31294 + else 31295 + var b = error_pos(pos$0, a); 31296 + var tz_pos = b[2], frac = b[1]; 31297 + } 31298 + else 31299 + var tz_pos = decide_pos, frac = 0; 31300 + var 31301 + parse_tz_mag = 31302 + function(sign, hh_pos){ 31303 + var hh = parse_digits(2, hh_pos, max, s); 31304 + a: 31305 + if(strict){ 31306 + var mm_pos = hh_pos + 3 | 0; 31307 + parse_char(58, mm_pos - 1 | 0, max, s); 31308 + var mm_pos$0 = mm_pos, mm = parse_digits(2, mm_pos, max, s); 31309 + } 31310 + else{ 31311 + var next = hh_pos + 2 | 0; 31312 + b: 31313 + if(max >= next){ 31314 + if 31315 + (58 !== caml_string_get(s, next) 31316 + && ! is_digit(caml_string_get(s, next))) 31317 + break b; 31318 + var 31319 + mm_pos$1 = 31320 + 58 === caml_string_get(s, next) 31321 + ? hh_pos + 3 | 0 31322 + : hh_pos + 2 | 0, 31323 + mm$0 = parse_digits(2, mm_pos$1, max, s), 31324 + mm_pos$0 = mm_pos$1, 31325 + mm = mm$0; 31326 + break a; 31327 + } 31328 + var mm_pos$0 = hh_pos, mm = 0; 31329 + } 31330 + if(23 < hh) return error([0, hh_pos, hh_pos + 1 | 0], 415233371); 31331 + if(59 < mm) 31332 + return error([0, mm_pos$0, mm_pos$0 + 1 | 0], 415233371); 31333 + var 31334 + secs = (hh * 3600 | 0) + (mm * 60 | 0) | 0, 31335 + a = 0 === secs, 31336 + match = a ? -1 === sign : a, 31337 + tz_s = match ? 0 : [0, runtime.caml_mul(sign, secs)]; 31338 + return [0, tz_s, mm_pos$0 + 1 | 0]; 31339 + }; 31340 + b: 31341 + if(max < tz_pos) 31342 + var match$0 = error_pos(max, 3456159); 31343 + else{ 31344 + var c$0 = caml_string_get(s, tz_pos); 31345 + if(90 === c$0) 31346 + var match$0 = [0, V, tz_pos]; 31347 + else{ 31348 + if(46 <= c$0){ 31349 + if(122 === c$0 && ! strict){var match$0 = [0, Y, tz_pos]; break b;} 31350 + } 31351 + else if(43 <= c$0) 31352 + switch(c$0 - 43 | 0){ 31353 + case 0: 31354 + var match$0 = parse_tz_mag(1, tz_pos + 1 | 0); break b; 31355 + case 2: 31356 + var match$0 = parse_tz_mag(-1, tz_pos + 1 | 0); break b; 31357 + } 31358 + var 31359 + j = strict ? 0 : X, 31360 + chars$0 = Stdlib[37].call(null, W, j), 31361 + match$0 = error_pos(tz_pos, [0, 498443355, chars$0]); 31362 + } 31363 + } 31364 + var last_pos = match$0[2], tz_s_opt = match$0[1]; 31365 + if(tz_s_opt) var s$0 = tz_s_opt[1], tz_s = s$0; else var tz_s = 0; 31366 + var 31367 + match$1 = of_date_time([0, [0, y, m, d], [0, [0, hh, mm, ss], tz_s]]); 31368 + if(! match$1){var f = error([0, start, last_pos], 415233371); break a;} 31369 + var t = match$1[1]; 31370 + if(frac){ 31371 + var frac$0 = frac[1]; 31372 + if(caml_notequal(frac$0, Z)){ 31373 + var match$2 = add_span(t, [0, 0, frac$0]); 31374 + if(match$2) 31375 + var t$0 = match$2[1], t$1 = t$0; 31376 + else 31377 + var t$1 = error([0, start, last_pos], 415233371)[1]; 31378 + } 31379 + else 31380 + var t$1 = t; 31381 + } 31382 + else 31383 + var t$1 = t; 31384 + if(! sub && last_pos !== max){ 31385 + var f = error_pos(last_pos + 1 | 0, -493009593); 31386 + break a; 31387 + } 31388 + var f = [0, [0, t$1, tz_s_opt, (last_pos - start | 0) + 1 | 0]]; 31389 + break a; 31390 + } 31391 + var f = error_pos(start, 3456159); 31392 + } 31393 + return f; 31394 + } 31395 + catch(exn$0){ 31396 + var exn = caml_wrap_exception(exn$0); 31397 + if(exn[1] !== RFC3339) throw caml_maybe_attach_backtrace(exn, 0); 31398 + var e = exn[3], r = exn[2]; 31399 + return [1, [0, 76606165, [0, r, e]]]; 31400 + } 31401 + } 31402 + var _ = [0, 0, 1]; 31403 + function rfc3339_adjust_tz_offset(tz_offset_s){ 31404 + if 31405 + (-86340 <= tz_offset_s 31406 + && tz_offset_s <= 86340 && 0 === (tz_offset_s % 60 | 0)) 31407 + return [0, tz_offset_s, 0]; 31408 + return _; 31409 + } 31410 + function s_frac_of_ps(frac, ps){ 31411 + var a = caml_check_bound(frac_div, frac)[frac + 1]; 31412 + return caml_int64_div(caml_int64_mod(ps, ps_count_in_s), a); 31413 + } 31414 + var 31415 + cst_0_Ld = ".%0*Ld", 31416 + $ = 31417 + [0, 31418 + [4, 31419 + 0, 31420 + [0, 2, 4], 31421 + 0, 31422 + [12, 31423 + 45, 31424 + [4, 31425 + 0, 31426 + [0, 2, 2], 31427 + 0, 31428 + [12, 31429 + 45, 31430 + [4, 31431 + 0, 31432 + [0, 2, 2], 31433 + 0, 31434 + [0, 31435 + [4, 31436 + 0, 31437 + [0, 2, 2], 31438 + 0, 31439 + [12, 31440 + 58, 31441 + [4, 0, [0, 2, 2], 0, [12, 58, [4, 0, [0, 2, 2], 0, 0]]]]]]]]]]], 31442 + "%04d-%02d-%02d%c%02d:%02d:%02d"], 31443 + aa = [0, [12, 46, [7, 0, [1, 2], 0, 0]], cst_0_Ld], 31444 + ab = 31445 + [0, 31446 + [0, [4, 0, [0, 2, 2], 0, [12, 58, [4, 0, [0, 2, 2], 0, 0]]]], 31447 + "%c%02d:%02d"], 31448 + ac = [0, [12, 90, 0], "Z"]; 31449 + function to_rfc3339(f, opt, tz_offset_s, t){ 31450 + var 31451 + space = f ? f[1] : 0, 31452 + frac = opt ? opt[1] : 0, 31453 + ps = t[2], 31454 + buf = Stdlib_Buffer[1].call(null, 255); 31455 + if(tz_offset_s) 31456 + var 31457 + tz = tz_offset_s[1], 31458 + b = rfc3339_adjust_tz_offset(tz), 31459 + tz_unknown = b[2], 31460 + tz_offset_s$0 = b[1]; 31461 + else 31462 + var tz_unknown = 1, tz_offset_s$0 = 0; 31463 + var 31464 + c = to_date_time([0, tz_offset_s$0], t), 31465 + e = c[2], 31466 + tz_offset_s$1 = e[2], 31467 + a = e[1], 31468 + mm = a[3], 31469 + ss = a[2], 31470 + hh = a[1], 31471 + match = c[1], 31472 + d = match[3], 31473 + m = match[2], 31474 + y = match[1], 31475 + dt_sep = space ? 32 : 84; 31476 + caml_call7 31477 + (Stdlib_Printf[5].call(null, buf, $), y, m, d, dt_sep, hh, ss, mm); 31478 + var frac$0 = 0 <= frac ? 12 < frac ? 12 : frac : 0; 31479 + if(0 !== frac$0){ 31480 + var g = s_frac_of_ps(frac$0, ps); 31481 + caml_call2(Stdlib_Printf[5].call(null, buf, aa), frac$0, g); 31482 + } 31483 + a: 31484 + { 31485 + if(0 === tz_offset_s$1 && ! tz_unknown){ 31486 + Stdlib_Printf[5].call(null, buf, ac); 31487 + break a; 31488 + } 31489 + b: 31490 + { 31491 + if(0 <= tz_offset_s$1 && ! tz_unknown){var tz_sign = 43; break b;} 31492 + var tz_sign = 45; 31493 + } 31494 + var 31495 + tz_min = Stdlib[18].call(null, tz_offset_s$1 / 60 | 0), 31496 + tz_hh = tz_min / 60 | 0, 31497 + tz_mm = tz_min % 60 | 0; 31498 + caml_call3(Stdlib_Printf[5].call(null, buf, ab), tz_sign, tz_hh, tz_mm); 31499 + } 31500 + return Stdlib_Buffer[2].call(null, buf); 31501 + } 31502 + var ad = [0, [2, 0, 0], "%s"]; 31503 + function pp_rfc3339(space, frac_s, tz_offset_s, param, ppf, t){ 31504 + var a = to_rfc3339(space, frac_s, tz_offset_s, t); 31505 + return caml_call1(Stdlib_Format[146].call(null, ppf)(ad), a); 31506 + } 31507 + var 31508 + ae = 31509 + [0, 31510 + [4, 31511 + 0, 31512 + [0, 2, 4], 31513 + 0, 31514 + [12, 31515 + 45, 31516 + [4, 31517 + 0, 31518 + [0, 2, 2], 31519 + 0, 31520 + [12, 31521 + 45, 31522 + [4, 31523 + 0, 31524 + [0, 2, 2], 31525 + 0, 31526 + [12, 31527 + 32, 31528 + [4, 31529 + 0, 31530 + [0, 2, 2], 31531 + 0, 31532 + [12, 31533 + 58, 31534 + [4, 0, [0, 2, 2], 0, [12, 58, [4, 0, [0, 2, 2], 0, 0]]]]]]]]]]], 31535 + "%04d-%02d-%02d %02d:%02d:%02d"], 31536 + af = [0, [12, 46, [7, 0, [1, 2], 0, 0]], cst_0_Ld], 31537 + ag = 31538 + [0, 31539 + [12, 32, [0, [4, 0, [0, 2, 2], 0, [12, 58, [4, 0, [0, 2, 2], 0, 0]]]]], 31540 + " %c%02d:%02d"]; 31541 + function pp_human(opt, tz_offset_s, param, ppf, t){ 31542 + var frac = opt ? opt[1] : 0, ps = t[2]; 31543 + if(tz_offset_s) 31544 + var 31545 + tz = tz_offset_s[1], 31546 + b = rfc3339_adjust_tz_offset(tz), 31547 + tz_unknown = b[2], 31548 + tz_offset_s$0 = b[1]; 31549 + else 31550 + var tz_unknown = 1, tz_offset_s$0 = 0; 31551 + var 31552 + c = to_date_time([0, tz_offset_s$0], t), 31553 + e = c[2], 31554 + tz_offset_s$1 = e[2], 31555 + a = e[1], 31556 + mm = a[3], 31557 + ss = a[2], 31558 + hh = a[1], 31559 + match = c[1], 31560 + d = match[3], 31561 + m = match[2], 31562 + y = match[1]; 31563 + caml_call6(Stdlib_Format[146].call(null, ppf)(ae), y, m, d, hh, ss, mm); 31564 + var frac$0 = 0 <= frac ? 12 < frac ? 12 : frac : 0; 31565 + if(0 !== frac$0){ 31566 + var f = s_frac_of_ps(frac$0, ps); 31567 + caml_call2(Stdlib_Format[146].call(null, ppf)(af), frac$0, f); 31568 + } 31569 + a: 31570 + { 31571 + if(0 <= tz_offset_s$1 && ! tz_unknown){var tz_sign = 43; break a;} 31572 + var tz_sign = 45; 31573 + } 31574 + var 31575 + tz_min = Stdlib[18].call(null, tz_offset_s$1 / 60 | 0), 31576 + tz_hh = tz_min / 60 | 0, 31577 + tz_mm = tz_min % 60 | 0; 31578 + caml_call3(Stdlib_Format[146].call(null, ppf)(ag), tz_sign, tz_hh, tz_mm); 31579 + return 0; 31580 + } 31581 + var ah = [0, 0]; 31582 + function pp$0(a, b){return pp_human(0, ah, 0, a, b);} 31583 + runtime.caml_register_global 31584 + (101, 31585 + [0, 31586 + [0, 31587 + v, 31588 + zero, 31589 + of_d_ps, 31590 + unsafe_of_d_ps, 31591 + unsafe_of_d_ps_option, 31592 + to_d_ps, 31593 + of_int_s, 31594 + to_int_s, 31595 + of_float_s, 31596 + to_float_s, 31597 + equal, 31598 + compare, 31599 + neg, 31600 + add, 31601 + sub, 31602 + abs, 31603 + round, 31604 + truncate, 31605 + pp, 31606 + dump], 31607 + v$0, 31608 + epoch, 31609 + min, 31610 + [0, 2932896, ps_day_max], 31611 + of_span, 31612 + to_span, 31613 + unsafe_of_d_ps$0, 31614 + of_float_s$0, 31615 + to_float_s, 31616 + truncate_down, 31617 + frac_s, 31618 + equal, 31619 + compare, 31620 + is_earlier, 31621 + is_later, 31622 + add_span, 31623 + sub_span, 31624 + diff, 31625 + of_date_time, 31626 + to_date_time, 31627 + of_date, 31628 + to_date, 31629 + of_year, 31630 + to_year, 31631 + weekday, 31632 + weekday_num, 31633 + pp_rfc3339_error, 31634 + rfc3339_error_to_msg, 31635 + rfc3339_string_error, 31636 + of_rfc3339, 31637 + to_rfc3339, 31638 + pp_rfc3339, 31639 + pp_human, 31640 + pp$0, 31641 + dump], 31642 + "Ptime"); 31643 + return; 31644 + } 31645 + (globalThis)); 31646 + 31647 31647 //# 5 "../../ocaml-coordinate/lib/.coordinate.objs/jsoo/default/coordinate.cma.js" 31648 31648 //# shape: Coordinate:[N,N,N,N,N,F(1)*,F(1),F(1)*,F(1)*,F(1)*,F(2)*,F(2)*,F(2)*,F(2)*,F(1),F(1)*,F(2),F(3)*,F(1)*,F(1)*,F(2),F(2)] 31649 31649 (function ··· 32461 32461 } 32462 32462 (globalThis)); 32463 32463 32464 - //# 676 "../lib/.globe.objs/jsoo/default/globe.cma.js" 32464 + //# 654 "../lib/.globe.objs/jsoo/default/globe.cma.js" 32465 + //# shape: Globe__Color:[F(3)*,F(1)*,F(1),F(1)*,N,N,N,N,F(2)] 32466 + (function 32467 + (globalThis){ 32468 + "use strict"; 32469 + var runtime = globalThis.jsoo_runtime; 32470 + function caml_call3(f, a0, a1, a2){ 32471 + return (f.l >= 0 ? f.l : f.l = f.length) === 3 32472 + ? f(a0, a1, a2) 32473 + : runtime.caml_call_gen(f, [a0, a1, a2]); 32474 + } 32475 + var 32476 + global_data = runtime.caml_get_global_data(), 32477 + Fmt = global_data.Fmt, 32478 + Stdlib = global_data.Stdlib, 32479 + Stdlib_List = global_data.Stdlib__List; 32480 + function rgb(r, g, b){return [0, r, g, b];} 32481 + function of_hue(h){return [0, 0.3 + 0.7 * h, 0.8 - 0.3 * h, 1. - 0.5 * h];} 32482 + function palette(n){ 32483 + return Stdlib_List[12].call 32484 + (null, 32485 + n, 32486 + function(i){return of_hue(i / Stdlib[17].call(null, 1, n));}); 32487 + } 32488 + var a = [0, 0.1, 0.9, 0.2], b = [0, 1., 0.2, 0.1]; 32489 + function of_probability(p){ 32490 + if(p < 1e-7) return a; 32491 + if(! (p < 1e-5)) return b; 32492 + var t = (runtime.caml_log10_float(p) + 7.) / 2.; 32493 + return [0, 0.1 + 0.9 * t, 0.9 - 0.4 * t, 0.2 - 0.1 * t]; 32494 + } 32495 + var 32496 + cst = ", ", 32497 + c = 32498 + [0, 32499 + [12, 32500 + 40, 32501 + [8, 32502 + [0, 0, 0], 32503 + 0, 32504 + [0, 2], 32505 + [11, 32506 + cst, 32507 + [8, 32508 + [0, 0, 0], 32509 + 0, 32510 + [0, 2], 32511 + [11, cst, [8, [0, 0, 0], 0, [0, 2], [12, 41, 0]]]]]]], 32512 + "(%.2f, %.2f, %.2f)"]; 32513 + function pp(ppf, param){ 32514 + var b = param[3], g = param[2], r = param[1]; 32515 + return caml_call3(Fmt[3].call(null, ppf)(c), r, g, b); 32516 + } 32517 + runtime.caml_register_global 32518 + (26, 32519 + [0, 32520 + rgb, 32521 + of_hue, 32522 + palette, 32523 + of_probability, 32524 + [0, 0.15, 0.2, 0.25], 32525 + [0, 1., 1., 1.], 32526 + [0, 0.3, 0.85, 1.], 32527 + [0, 0.15, 0.35, 0.5], 32528 + pp], 32529 + "Globe__Color"); 32530 + return; 32531 + } 32532 + (globalThis)); 32533 + 32534 + //# 804 "../lib/.globe.objs/jsoo/default/globe.cma.js" 32465 32535 //# shape: Globe__Geometry:[F(2)*,F(3),F(3),F(3)] 32466 32536 (function 32467 32537 (globalThis){ ··· 32652 32722 circle_on_sphere, 32653 32723 filled_circle_on_sphere], 32654 32724 "Globe__Geometry"); 32655 - return; 32656 - } 32657 - (globalThis)); 32658 - 32659 - //# 872 "../lib/.globe.objs/jsoo/default/globe.cma.js" 32660 - //# shape: Globe__Color:[F(3)*,F(1)*,F(1),F(1)*,N,N,N,N,F(2)] 32661 - (function 32662 - (globalThis){ 32663 - "use strict"; 32664 - var runtime = globalThis.jsoo_runtime; 32665 - function caml_call3(f, a0, a1, a2){ 32666 - return (f.l >= 0 ? f.l : f.l = f.length) === 3 32667 - ? f(a0, a1, a2) 32668 - : runtime.caml_call_gen(f, [a0, a1, a2]); 32669 - } 32670 - var 32671 - global_data = runtime.caml_get_global_data(), 32672 - Fmt = global_data.Fmt, 32673 - Stdlib = global_data.Stdlib, 32674 - Stdlib_List = global_data.Stdlib__List; 32675 - function rgb(r, g, b){return [0, r, g, b];} 32676 - function of_hue(h){return [0, 0.3 + 0.7 * h, 0.8 - 0.3 * h, 1. - 0.5 * h];} 32677 - function palette(n){ 32678 - return Stdlib_List[12].call 32679 - (null, 32680 - n, 32681 - function(i){return of_hue(i / Stdlib[17].call(null, 1, n));}); 32682 - } 32683 - var a = [0, 0.1, 0.9, 0.2], b = [0, 1., 0.2, 0.1]; 32684 - function of_probability(p){ 32685 - if(p < 1e-7) return a; 32686 - if(! (p < 1e-5)) return b; 32687 - var t = (runtime.caml_log10_float(p) + 7.) / 2.; 32688 - return [0, 0.1 + 0.9 * t, 0.9 - 0.4 * t, 0.2 - 0.1 * t]; 32689 - } 32690 - var 32691 - cst = ", ", 32692 - c = 32693 - [0, 32694 - [12, 32695 - 40, 32696 - [8, 32697 - [0, 0, 0], 32698 - 0, 32699 - [0, 2], 32700 - [11, 32701 - cst, 32702 - [8, 32703 - [0, 0, 0], 32704 - 0, 32705 - [0, 2], 32706 - [11, cst, [8, [0, 0, 0], 0, [0, 2], [12, 41, 0]]]]]]], 32707 - "(%.2f, %.2f, %.2f)"]; 32708 - function pp(ppf, param){ 32709 - var b = param[3], g = param[2], r = param[1]; 32710 - return caml_call3(Fmt[3].call(null, ppf)(c), r, g, b); 32711 - } 32712 - runtime.caml_register_global 32713 - (26, 32714 - [0, 32715 - rgb, 32716 - of_hue, 32717 - palette, 32718 - of_probability, 32719 - [0, 0.15, 0.2, 0.25], 32720 - [0, 1., 1., 1.], 32721 - [0, 0.3, 0.85, 1.], 32722 - [0, 0.15, 0.35, 0.5], 32723 - pp], 32724 - "Globe__Color"); 32725 32725 return; 32726 32726 } 32727 32727 (globalThis)); ··· 47910 47910 } 47911 47911 (globalThis)); 47912 47912 47913 - //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5iYy5qcyIsInNlY3Rpb25zIjpbeyJvZmZzZXQiOnsibGluZSI6MywiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiIubWFpbi5lb2Jqcy9qc29vL21haW4uYmMucnVudGltZS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvYnVpbHRpbi8rbWxCeXRlcy5qcyIsIi9idWlsdGluLyttYXJzaGFsLmpzIiwiL2J1aWx0aW4vK2lvLmpzIiwiL2J1aWx0aW4vK3N5cy5qcyIsIi9idWlsdGluLytiYWNrdHJhY2UuanMiLCIvYnVpbHRpbi8rc3RkbGliLmpzIiwiL2J1aWx0aW4vK2pzbGliLmpzIiwiL2J1aWx0aW4vK2ZhaWwuanMiLCIvYnVpbHRpbi8rdW5peC5qcyIsIi9idWlsdGluLytmcy5qcyIsIi9idWlsdGluLytmc19mYWtlLmpzIiwiL2J1aWx0aW4vK2ludDY0LmpzIiwiL2J1aWx0aW4vK3N5bmMuanMiLCIvYnVpbHRpbi8rbmF0LmpzIiwiL2J1aWx0aW4vK2ZzX25vZGUuanMiLCIvYnVpbHRpbi8rYmlnYXJyYXkuanMiLCIvYnVpbHRpbi8rYmlnc3RyaW5nLmpzIiwiL2J1aWx0aW4vK2JsYWtlMi5qcyIsIi9idWlsdGluLyttZDUuanMiLCIvYnVpbHRpbi8raWVlZV83NTQuanMiLCIvYnVpbHRpbi8rb2JqLmpzIiwiL2J1aWx0aW4vK2VmZmVjdC5qcyIsIi9idWlsdGluLythcnJheS5qcyIsIi9idWlsdGluLytkb21haW4uanMiLCIvYnVpbHRpbi8raW50cy5qcyIsIi9idWlsdGluLytoYXNoLmpzIiwiL2J1aWx0aW4vK2NvbXBhcmUuanMiLCIvYnVpbHRpbi8rcnVudGltZV9ldmVudHMuanMiLCIvYnVpbHRpbi8renN0ZC5qcyIsIi9idWlsdGluLyt3ZWFrLmpzIiwiL2J1aWx0aW4vK2djLmpzIiwiL2J1aWx0aW4vK2Zvcm1hdC5qcyIsIi9idWlsdGluLytncmFwaGljcy5qcyIsIi9idWlsdGluLytqc2xpYl9qc19vZl9vY2FtbC5qcyIsIi9idWlsdGluLytsZXhpbmcuanMiLCIvYnVpbHRpbi8rcHJuZy5qcyIsIi9idWlsdGluLytwYXJzaW5nLmpzIiwiL2J1aWx0aW4vK3N0ci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMC0yMDE0IErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vIEFuIE9DYW1sIHN0cmluZyBpcyBhbiBvYmplY3Qgd2l0aCB0aHJlZSBmaWVsZHM6XG4vLyAtIHRhZyAndCdcbi8vIC0gbGVuZ3RoICdsJ1xuLy8gLSBjb250ZW50cyAnYydcbi8vXG4vLyBUaGUgY29udGVudHMgb2YgdGhlIHN0cmluZyBjYW4gYmUgZWl0aGVyIGEgSmF2YVNjcmlwdCBhcnJheSBvclxuLy8gYSBKYXZhU2NyaXB0IHN0cmluZy4gVGhlIGxlbmd0aCBvZiB0aGlzIHN0cmluZyBjYW4gYmUgbGVzcyB0aGFuIHRoZVxuLy8gbGVuZ3RoIG9mIHRoZSBPQ2FtbCBzdHJpbmcuIEluIHRoaXMgY2FzZSwgcmVtYWluaW5nIGJ5dGVzIGFyZVxuLy8gYXNzdW1lZCB0byBiZSB6ZXJvZXMuIEFycmF5cyBhcmUgbXV0YWJsZSBidXQgY29uc3VtZXMgbW9yZSBtZW1vcnlcbi8vIHRoYW4gc3RyaW5ncy4gQSBjb21tb24gcGF0dGVybiBpcyB0byBzdGFydCBmcm9tIGFuIGVtcHR5IHN0cmluZyBhbmRcbi8vIHByb2dyZXNzaXZlbHkgZmlsbCBpdCBmcm9tIHRoZSBzdGFydC4gUGFydGlhbCBzdHJpbmdzIG1ha2VzIGl0XG4vLyBwb3NzaWJsZSB0byBpbXBsZW1lbnQgdGhpcyBlZmZpY2llbnRseS5cbi8vXG4vLyBXaGVuIGNvbnZlcnRpbmcgdG8gYW5kIGZyb20gVVRGLTE2LCB3ZSBrZWVwIHRyYWNrIG9mIHdoZXRoZXIgdGhlXG4vLyBzdHJpbmcgaXMgY29tcG9zZWQgb25seSBvZiBBU0NJSSBjaGFyYWN0ZXJzIChpbiB3aGljaCBjYXNlLCBub1xuLy8gY29udmVyc2lvbiBuZWVkcyB0byBiZSBwZXJmb3JtZWQpIG9yIG5vdC5cbi8vXG4vLyBUaGUgc3RyaW5nIHRhZyBjYW4gdGh1cyB0YWtlIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuLy8gICBmdWxsIHN0cmluZyAgICAgQllURSB8IFVOS05PV046ICAgICAgMFxuLy8gICAgICAgICAgICAgICAgICAgQllURSB8IEFTQ0lJOiAgICAgICAgOVxuLy8gICAgICAgICAgICAgICAgICAgQllURSB8IE5PVF9BU0NJSTogICAgOFxuLy8gICBzdHJpbmcgcHJlZml4ICAgUEFSVElBTDogICAgICAgICAgICAgMlxuLy8gICBhcnJheSAgICAgICAgICAgQVJSQVk6ICAgICAgICAgICAgICAgNFxuLy9cbi8vIE9uZSBjYW4gdXNlIGJpdCBtYXNraW5nIHRvIGRpc2NyaW1pbmF0ZSB0aGVzZSBkaWZmZXJlbnQgY2FzZXM6XG4vLyAgIGtub3duX2VuY29kaW5nKHgpID0geCY4XG4vLyAgIGlzX2FzY2lpKHgpID0gICAgICAgeCYxXG4vLyAgIGtpbmQoeCkgPSAgICAgICAgICAgeCY2XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyX3JlcGVhdFxuZnVuY3Rpb24gY2FtbF9zdHJfcmVwZWF0KG4sIHMpIHtcbiAgcmV0dXJuIHMucmVwZWF0KG4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXNcbi8vV2Vha2RlZlxuLy8gUHJlIEVDTUFTY3JpcHQgNSwgW2FwcGx5XSB3b3VsZCBub3Qgc3VwcG9ydCBhcnJheS1saWtlIG9iamVjdC5cbi8vIEluIHN1Y2ggc2V0dXAsIFR5cGVkX2FycmF5IHdvdWxkIGJlIGltcGxlbWVudGVkIGFzIHBvbHlmaWxsLCBhbmQgW2YuYXBwbHldIHdvdWxkXG4vLyBmYWlsIGhlcmUuIE1hcmsgdGhlIHByaW1pdGl2ZSBhcyBXZWFrZGVmLCBzbyB0aGF0IHBlb3BsZSBjYW4gb3ZlcnJpZGUgaXQgZWFzaWx5LlxuZnVuY3Rpb24gY2FtbF9zdWJhcnJheV90b19qc2J5dGVzKGEsIGksIGxlbikge1xuICB2YXIgZiA9IFN0cmluZy5mcm9tQ2hhckNvZGU7XG4gIGlmIChpID09PSAwICYmIGxlbiA8PSA0MDk2ICYmIGxlbiA9PT0gYS5sZW5ndGgpIHJldHVybiBmLmFwcGx5KG51bGwsIGEpO1xuICB2YXIgcyA9IFwiXCI7XG4gIGZvciAoOyAwIDwgbGVuOyBpICs9IDEwMjQsIGxlbiAtPSAxMDI0KVxuICAgIHMgKz0gZi5hcHBseShudWxsLCBhLnNsaWNlKGksIGkgKyBNYXRoLm1pbihsZW4sIDEwMjQpKSk7XG4gIHJldHVybiBzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N1Yl91aW50OF9hcnJheV90b19qc2J5dGVzXG4vL1dlYWtkZWZcbi8vIFByZSBFQ01BU2NyaXB0IDUsIFthcHBseV0gd291bGQgbm90IHN1cHBvcnQgYXJyYXktbGlrZSBvYmplY3QuXG4vLyBJbiBzdWNoIHNldHVwLCBUeXBlZF9hcnJheSB3b3VsZCBiZSBpbXBsZW1lbnRlZCBhcyBwb2x5ZmlsbCwgYW5kIFtmLmFwcGx5XSB3b3VsZFxuLy8gZmFpbCBoZXJlLiBNYXJrIHRoZSBwcmltaXRpdmUgYXMgV2Vha2RlZiwgc28gdGhhdCBwZW9wbGUgY2FuIG92ZXJyaWRlIGl0IGVhc2lseS5cbmZ1bmN0aW9uIGNhbWxfc3ViX3VpbnQ4X2FycmF5X3RvX2pzYnl0ZXMoYSwgaSwgbGVuKSB7XG4gIHZhciBmID0gU3RyaW5nLmZyb21DaGFyQ29kZTtcbiAgaWYgKGkgPT09IDAgJiYgbGVuIDw9IDQwOTYgJiYgbGVuID09PSBhLmxlbmd0aCkgcmV0dXJuIGYuYXBwbHkobnVsbCwgYSk7XG4gIHZhciBzID0gXCJcIjtcbiAgZm9yICg7IDAgPCBsZW47IGkgKz0gMTAyNCwgbGVuIC09IDEwMjQpXG4gICAgcyArPSBmLmFwcGx5KG51bGwsIGEuc3ViYXJyYXkoaSwgaSArIE1hdGgubWluKGxlbiwgMTAyNCkpKTtcbiAgcmV0dXJuIHM7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29faXNfYXNjaWlcbmZ1bmN0aW9uIGpzb29faXNfYXNjaWkocykge1xuICAvLyBUaGUgcmVndWxhciBleHByZXNzaW9uIGdldHMgYmV0dGVyIGF0IGFyb3VuZCB0aGlzIHBvaW50IGZvciBhbGwgYnJvd3NlcnNcbiAgaWYgKHMubGVuZ3RoIDwgMjQpIHtcbiAgICAvLyBTcGlkZXJtb25rZXkgZ2V0cyBtdWNoIHNsb3dlciB3aGVuIHMubGVuZ3RoID49IDI0IChvbiA2NCBiaXQgYXJjaHMpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzLmxlbmd0aDsgaSsrKSBpZiAocy5jaGFyQ29kZUF0KGkpID4gMTI3KSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0NvbnRyb2xDaGFyYWN0ZXJzSW5SZWdleDogZXhwZWN0ZWRcbiAgZWxzZSByZXR1cm4gIS9bXlxceDAwLVxceDdmXS8udGVzdChzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0IG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLCBpKSB7XG4gIHN3aXRjaCAocy50ICYgNikge1xuICAgIGNhc2UgMCAvKiBCWVRFUyAqLzpcbiAgICAgIHJldHVybiBzLmMuY2hhckNvZGVBdChpKTtcbiAgICBjYXNlIDIgLyogUEFSVElBTCAqLzpcbiAgICAgIGlmIChpID49IHMuYy5sZW5ndGgpIHJldHVybiAwO1xuICAgICAgcmV0dXJuIHMuYy5jaGFyQ29kZUF0KGkpO1xuICAgIGNhc2UgNCAvKiBBUlJBWSAqLzpcbiAgICAgIHJldHVybiBzLmNbaV07XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfdW5zYWZlX3NldChzLCBpLCBjKSB7XG4gIC8vIFRoZSBPQ2FtbCBjb21waWxlciB1c2VzIENoYXIudW5zYWZlX2NociBvbiBpbnRlZ2VycyBsYXJnZXIgdGhhbiAyNTUhXG4gIGMgJj0gMHhmZjtcbiAgaWYgKHMudCAhPT0gNCAvKiBBUlJBWSAqLykge1xuICAgIGlmIChpID09PSBzLmMubGVuZ3RoKSB7XG4gICAgICBzLmMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjKTtcbiAgICAgIGlmIChpICsgMSA9PT0gcy5sKSBzLnQgPSAwOyAvKkJZVEVTIHwgVU5LTk9XTiovXG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMpO1xuICB9XG4gIHMuY1tpXSA9IGM7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCkge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJpbmRleCBvdXQgb2YgYm91bmRzXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19nZXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldChzLCBpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSkgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldDE2XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQxNihzLCBpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSAtIDEpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSksXG4gICAgYjIgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkgKyAxKTtcbiAgcmV0dXJuIChiMiA8PCA4KSB8IGIxO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQsIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0MTYocywgaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSAxKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLCBpKSxcbiAgICBiMiA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLCBpICsgMSk7XG4gIHJldHVybiAoYjIgPDwgOCkgfCBiMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldDMyKHMsIGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIC0gMykgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKSxcbiAgICBiMiA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSArIDEpLFxuICAgIGIzID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpICsgMiksXG4gICAgYjQgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkgKyAzKTtcbiAgcmV0dXJuIChiNCA8PCAyNCkgfCAoYjMgPDwgMTYpIHwgKGIyIDw8IDgpIHwgYjE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCwgY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9ieXRlc19nZXQzMihzLCBpKSB7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDMpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0KHMsIGkpLFxuICAgIGIyID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0KHMsIGkgKyAxKSxcbiAgICBiMyA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLCBpICsgMiksXG4gICAgYjQgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQocywgaSArIDMpO1xuICByZXR1cm4gKGI0IDw8IDI0KSB8IChiMyA8PCAxNikgfCAoYjIgPDwgOCkgfCBiMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldDY0KHMsIGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIC0gNykgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGEgPSBuZXcgQXJyYXkoOCk7XG4gIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB7XG4gICAgYVs3IC0gal0gPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkgKyBqKTtcbiAgfVxuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19nZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0LCBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldDY0KHMsIGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gNykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYSA9IG5ldyBBcnJheSg4KTtcbiAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHtcbiAgICBhWzcgLSBqXSA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLCBpICsgaik7XG4gIH1cbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoYSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0KHMsIGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQocywgaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQoX3MsIF9pLCBfYykge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfc2V0XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQocywgaSwgYykge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBjYW1sX3N0cmluZ191bnNhZmVfc2V0KHMsIGksIGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0MTYocywgaSwgaTE2KSB7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDEpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIyID0gMHhmZiAmIChpMTYgPj4gOCksXG4gICAgYjEgPSAweGZmICYgaTE2O1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQocywgaSArIDAsIGIxKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0KHMsIGkgKyAxLCBiMik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0MzIocywgaSwgaTMyKSB7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDMpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGI0ID0gMHhmZiAmIChpMzIgPj4gMjQpLFxuICAgIGIzID0gMHhmZiAmIChpMzIgPj4gMTYpLFxuICAgIGIyID0gMHhmZiAmIChpMzIgPj4gOCksXG4gICAgYjEgPSAweGZmICYgaTMyO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQocywgaSArIDAsIGIxKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0KHMsIGkgKyAxLCBiMik7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldChzLCBpICsgMiwgYjMpO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQocywgaSArIDMsIGI0KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQ2NChzLCBpLCBpNjQpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gNykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYSA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoaTY0KTtcbiAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHtcbiAgICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQocywgaSArIDcgLSBqLCBhW2pdKTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQocywgaSwgYykge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX3NldChzLCBpLCBjKTtcbn1cblxuLy9Qcm92aWRlczoganNvb190ZXh0X2VuY29kZXJcbnZhciBqc29vX3RleHRfZW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpO1xuXG4vL1Byb3ZpZGVzOiBqc29vX3RleHRfZGVjb2RlclxudmFyIGpzb29fdGV4dF9kZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsIGpzb29fdGV4dF9lbmNvZGVyXG4vL1JlcXVpcmVzOiBqc29vX2lzX2FzY2lpXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nKHMpIHtcbiAgaWYgKGpzb29faXNfYXNjaWkocykpIHtcbiAgICByZXR1cm4gbmV3IE1sQnl0ZXMoOSwgcywgcy5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHZhciBhID0ganNvb190ZXh0X2VuY29kZXIuZW5jb2RlKHMpO1xuICAgIHJldHVybiBuZXcgTWxCeXRlcyg0LCBhLCBhLmxlbmd0aCk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogTWxCeXRlc1xuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcywganNvb19pc19hc2NpaVxuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuLy9SZXF1aXJlczoganNvb190ZXh0X2RlY29kZXJcbmNsYXNzIE1sQnl0ZXMge1xuICBjb25zdHJ1Y3Rvcih0YWcsIGNvbnRlbnRzLCBsZW5ndGgpIHtcbiAgICB0aGlzLnQgPSB0YWc7XG4gICAgdGhpcy5jID0gY29udGVudHM7XG4gICAgdGhpcy5sID0gbGVuZ3RoO1xuICB9XG5cbiAgdG9TdHJpbmcoKSB7XG4gICAgc3dpdGNoICh0aGlzLnQpIHtcbiAgICAgIGNhc2UgOTogLypCWVRFUyB8IEFTQ0lJKi9cbiAgICAgIGNhc2UgOCAvKkJZVEVTIHwgTk9UX0FTQ0lJKi86XG4gICAgICAgIHJldHVybiB0aGlzLmM7XG4gICAgICBjYXNlIDQ6IC8qIEFSUkFZICovXG4gICAgICBjYXNlIDIgLyogUEFSVElBTCAqLzpcbiAgICAgICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0ZhbGx0aHJvdWdoU3dpdGNoQ2xhdXNlOlxuICAgICAgICBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHRoaXMpO1xuICAgICAgLy8gZmFsbHRocm91Z2hcbiAgICAgIGNhc2UgMCAvKkJZVEVTIHwgVU5LTk9XTiovOlxuICAgICAgICBpZiAoanNvb19pc19hc2NpaSh0aGlzLmMpKSB0aGlzLnQgPSA5OyAvKkJZVEVTIHwgQVNDSUkqL1xuICAgICAgICBlbHNlIHRoaXMudCA9IDg7IC8qQllURVMgfCBOT1RfQVNDSUkqL1xuICAgICAgICByZXR1cm4gdGhpcy5jO1xuICAgIH1cbiAgfVxuXG4gIHRvVXRmMTYoKSB7XG4gICAgaWYgKHRoaXMudCA9PT0gOSkgcmV0dXJuIHRoaXMuYztcbiAgICB2YXIgYSA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXModGhpcyk7XG4gICAgcmV0dXJuIGpzb29fdGV4dF9kZWNvZGVyLmRlY29kZShhKTtcbiAgfVxuXG4gIHNsaWNlKCkge1xuICAgIHZhciBjb250ZW50ID0gdGhpcy50ID09PSA0ID8gdGhpcy5jLnNsaWNlKCkgOiB0aGlzLmM7XG4gICAgcmV0dXJuIG5ldyBNbEJ5dGVzKHRoaXMudCwgY29udGVudCwgdGhpcy5sKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cl9yZXBlYXQsIGNhbWxfc3ViX3VpbnQ4X2FycmF5X3RvX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMocykge1xuICAvKiBBc3N1bWVzIG5vdCBCWVRFUyAqL1xuICBpZiAocy50ID09PSAyIC8qIFBBUlRJQUwgKi8pIHMuYyArPSBjYW1sX3N0cl9yZXBlYXQocy5sIC0gcy5jLmxlbmd0aCwgXCJcXDBcIik7XG4gIGVsc2Ugcy5jID0gY2FtbF9zdWJfdWludDhfYXJyYXlfdG9fanNieXRlcyhzLmMsIDAsIHMuYy5sZW5ndGgpO1xuICBzLnQgPSAwOyAvKkJZVEVTIHwgVU5LTk9XTiovXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMpIHtcbiAgLyogQXNzdW1lcyBub3QgQVJSQVkgKi9cbiAgdmFyIGEgPSBuZXcgVWludDhBcnJheShzLmwpO1xuICB2YXIgYiA9IHMuYyxcbiAgICBsID0gYi5sZW5ndGgsXG4gICAgaSA9IDA7XG4gIGZvciAoOyBpIDwgbDsgaSsrKSBhW2ldID0gYi5jaGFyQ29kZUF0KGkpO1xuICBmb3IgKGwgPSBzLmw7IGkgPCBsOyBpKyspIGFbaV0gPSAwO1xuICBzLmMgPSBhO1xuICBzLnQgPSA0OyAvKiBBUlJBWSAqL1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMocykge1xuICBpZiAocy50ICE9PSA0IC8qIEFSUkFZICovKSBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkocyk7XG4gIHJldHVybiBzLmM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuZnVuY3Rpb24gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcocykge1xuICB2YXIgbCA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKTtcbiAgdmFyIGEgPSBuZXcgVWludDhBcnJheShsKTtcbiAgdmFyIGkgPSAwO1xuICBmb3IgKDsgaSA8IGw7IGkrKykgYVtpXSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk7XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9jcmVhdGVfc3RyaW5nKGxlbikge1xuICBpZiAobGVuIDwgMCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyaW5nLmNyZWF0ZVwiKTtcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKGxlbiA/IDIgOiA5LCBcIlwiLCBsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2NyZWF0ZV9zdHJpbmcoX2xlbikge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHJpbmcuY3JlYXRlXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9ieXRlcyBjb25zdFxuLy9SZXF1aXJlczogTWxCeXRlcyxjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX2J5dGVzKGxlbikge1xuICBpZiAobGVuIDwgMCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQnl0ZXMuY3JlYXRlXCIpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXMobGVuID8gMiA6IDksIFwiXCIsIGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2FycmF5KGEpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY2FtbF9zdWJhcnJheV90b19qc2J5dGVzKGEsIDAsIGEubGVuZ3RoKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX3VpbnQ4X2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3N1Yl91aW50OF9hcnJheV90b19qc2J5dGVzXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX3VpbnQ4X2FycmF5KGEpIHtcbiAgcmV0dXJuIGNhbWxfc3ViX3VpbnQ4X2FycmF5X3RvX2pzYnl0ZXMoYSwgMCwgYS5sZW5ndGgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl91aW50OF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl91aW50OF9hcnJheVxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfdWludDhfYXJyYXkoYSkge1xuICByZXR1cm4gY2FtbF9ieXRlc19vZl91aW50OF9hcnJheShhLnNsaWNlKCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX2FycmF5XG4vL1JlcXVpcmVzOiBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX2FycmF5KGEpIHtcbiAgaWYgKCEoYSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKSB7XG4gICAgYSA9IG5ldyBVaW50OEFycmF5KGEpO1xuICB9XG4gIHJldHVybiBuZXcgTWxCeXRlcyg0LCBhLCBhLmxlbmd0aCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2ZfdWludDhfYXJyYXlcbi8vUmVxdWlyZXM6IE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2ZfdWludDhfYXJyYXkoYSkge1xuICByZXR1cm4gbmV3IE1sQnl0ZXMoNCwgYSwgYS5sZW5ndGgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2NvbXBhcmUgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19jb21wYXJlKHMxLCBzMikge1xuICBzMS50ICYgNiAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgczIudCAmIDYgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiBzMS5jIDwgczIuYyA/IC0xIDogczEuYyA+IHMyLmMgPyAxIDogMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19lcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2VxdWFsKHMxLCBzMikge1xuICBpZiAoczEgPT09IHMyKSByZXR1cm4gMTtcbiAgczEudCAmIDYgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIHMyLnQgJiA2ICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gczEuYyA9PT0gczIuYyA/IDEgOiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ub3RlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19lcXVhbFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbm90ZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiAxIC0gY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ub3RlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2VxdWFsXG5mdW5jdGlvbiBjYW1sX2J5dGVzX25vdGVxdWFsKHMxLCBzMikge1xuICByZXR1cm4gMSAtIGNhbWxfYnl0ZXNfZXF1YWwoczEsIHMyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19sZXNzZXF1YWwgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19sZXNzZXF1YWwoczEsIHMyKSB7XG4gIHMxLnQgJiA2ICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICBzMi50ICYgNiAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIHMxLmMgPD0gczIuYyA/IDEgOiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2xlc3N0aGFuIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfbGVzc3RoYW4oczEsIHMyKSB7XG4gIHMxLnQgJiA2ICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICBzMi50ICYgNiAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIHMxLmMgPCBzMi5jID8gMSA6IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dyZWF0ZXJlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfbGVzc2VxdWFsXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ncmVhdGVyZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19sZXNzZXF1YWwoczIsIHMxKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ3JlYXRlcmVxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2xlc3NlcXVhbFxuZnVuY3Rpb24gY2FtbF9ieXRlc19ncmVhdGVyZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3NlcXVhbChzMiwgczEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ncmVhdGVydGhhblxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfbGVzc3RoYW5cbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dyZWF0ZXJ0aGFuKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfbGVzc3RoYW4oczIsIHMxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ncmVhdGVydGhhblxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzdGhhblxuZnVuY3Rpb24gY2FtbF9ieXRlc19ncmVhdGVydGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc3RoYW4oczIsIHMxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maWxsX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cl9yZXBlYXQsIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuLy9BbGlhczogY2FtbF9maWxsX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9maWxsX2J5dGVzKHMsIGksIGwsIGMpIHtcbiAgaWYgKGwgPiAwKSB7XG4gICAgaWYgKGkgPT09IDAgJiYgKGwgPj0gcy5sIHx8IChzLnQgPT09IDIgLyogUEFSVElBTCAqLyAmJiBsID49IHMuYy5sZW5ndGgpKSkge1xuICAgICAgaWYgKGMgPT09IDApIHtcbiAgICAgICAgcy5jID0gXCJcIjtcbiAgICAgICAgcy50ID0gMjsgLyogUEFSVElBTCAqL1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcy5jID0gY2FtbF9zdHJfcmVwZWF0KGwsIFN0cmluZy5mcm9tQ2hhckNvZGUoYykpO1xuICAgICAgICBzLnQgPSBsID09PSBzLmwgPyAwIC8qIEJZVEVTIHwgVU5LTk9XTiAqLyA6IDI7IC8qIFBBUlRJQUwgKi9cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHMudCAhPT0gNCAvKiBBUlJBWSAqLykgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMpO1xuICAgICAgZm9yIChsICs9IGk7IGkgPCBsOyBpKyspIHMuY1tpXSA9IGM7XG4gICAgfVxuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JsaXRfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfc3ViX3VpbnQ4X2FycmF5X3RvX2pzYnl0ZXMsIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9ibGl0X2J5dGVzKHMxLCBpMSwgczIsIGkyLCBsZW4pIHtcbiAgaWYgKGxlbiA9PT0gMCkgcmV0dXJuIDA7XG4gIGlmIChcbiAgICBpMiA9PT0gMCAmJlxuICAgIChsZW4gPj0gczIubCB8fCAoczIudCA9PT0gMiAvKiBQQVJUSUFMICovICYmIGxlbiA+PSBzMi5jLmxlbmd0aCkpXG4gICkge1xuICAgIHMyLmMgPVxuICAgICAgczEudCA9PT0gNCAvKiBBUlJBWSAqL1xuICAgICAgICA/IGNhbWxfc3ViX3VpbnQ4X2FycmF5X3RvX2pzYnl0ZXMoczEuYywgaTEsIGxlbilcbiAgICAgICAgOiBpMSA9PT0gMCAmJiBzMS5jLmxlbmd0aCA9PT0gbGVuXG4gICAgICAgICAgPyBzMS5jXG4gICAgICAgICAgOiBzMS5jLnNsaWNlKGkxLCBpMSArIGxlbik7XG4gICAgczIudCA9IHMyLmMubGVuZ3RoID09PSBzMi5sID8gMCAvKiBCWVRFUyB8IFVOS05PV04gKi8gOiAyOyAvKiBQQVJUSUFMICovXG4gIH0gZWxzZSBpZiAoczIudCA9PT0gMiAvKiBQQVJUSUFMICovICYmIGkyID09PSBzMi5jLmxlbmd0aCkge1xuICAgIHMyLmMgKz1cbiAgICAgIHMxLnQgPT09IDQgLyogQVJSQVkgKi9cbiAgICAgICAgPyBjYW1sX3N1Yl91aW50OF9hcnJheV90b19qc2J5dGVzKHMxLmMsIGkxLCBsZW4pXG4gICAgICAgIDogaTEgPT09IDAgJiYgczEuYy5sZW5ndGggPT09IGxlblxuICAgICAgICAgID8gczEuY1xuICAgICAgICAgIDogczEuYy5zbGljZShpMSwgaTEgKyBsZW4pO1xuICAgIHMyLnQgPSBzMi5jLmxlbmd0aCA9PT0gczIubCA/IDAgLyogQllURVMgfCBVTktOT1dOICovIDogMjsgLyogUEFSVElBTCAqL1xuICB9IGVsc2Uge1xuICAgIGlmIChzMi50ICE9PSA0IC8qIEFSUkFZICovKSBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkoczIpO1xuICAgIHZhciBjMSA9IHMxLmMsXG4gICAgICBjMiA9IHMyLmM7XG4gICAgaWYgKHMxLnQgPT09IDQgLyogQVJSQVkgKi8pIHtcbiAgICAgIGlmIChpMiA8PSBpMSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBjMltpMiArIGldID0gYzFbaTEgKyBpXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAodmFyIGkgPSBsZW4gLSAxOyBpID49IDA7IGktLSkgYzJbaTIgKyBpXSA9IGMxW2kxICsgaV07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBsID0gTWF0aC5taW4obGVuLCBjMS5sZW5ndGggLSBpMSk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKykgYzJbaTIgKyBpXSA9IGMxLmNoYXJDb2RlQXQoaTEgKyBpKTtcbiAgICAgIGZvciAoOyBpIDwgbGVuOyBpKyspIGMyW2kyICsgaV0gPSAwO1xuICAgIH1cbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGl0X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ibGl0X3N0cmluZyhhLCBiLCBjLCBkLCBlKSB7XG4gIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX3N0cmluZyhhKSwgYiwgYywgZCwgZSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aCBjb25zdFxuZnVuY3Rpb24gY2FtbF9tbF9ieXRlc19sZW5ndGgocykge1xuICByZXR1cm4gcy5sO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb25jYXQgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfY29uY2F0KGEsIGIpIHtcbiAgcmV0dXJuIGEgKyBiO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb25jYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMsIE1sQnl0ZXNcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbmNhdChzMSwgczIpIHtcbiAgczEudCAmIDYgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIHMyLnQgJiA2ICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXMoMCwgczEuYyArIHMyLmMsIHMxLmwgKyBzMi5sKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpIHtcbiAgcmV0dXJuIHMuY2hhckNvZGVBdChpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSB7XG4gIHJldHVybiBzLmxlbmd0aDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfY29tcGFyZSBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19jb21wYXJlKHMxLCBzMikge1xuICByZXR1cm4gczEgPCBzMiA/IC0xIDogczEgPiBzMiA/IDEgOiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19lcXVhbCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19lcXVhbChzMSwgczIpIHtcbiAgaWYgKHMxID09PSBzMikgcmV0dXJuIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzZXF1YWwgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc2VxdWFsKHMxLCBzMikge1xuICByZXR1cm4gczEgPD0gczIgPyAxIDogMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfbGVzc3RoYW4gY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc3RoYW4oczEsIHMyKSB7XG4gIHJldHVybiBzMSA8IHMyID8gMSA6IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2J5dGVzKHMpIHtcbiAgcy50ICYgNiAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzLmMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHgpIHtcbiAgcmV0dXJuIHg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc2J5dGVzX29mX3N0cmluZyh4KSB7XG4gIHJldHVybiB4O1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX3RleHRfZGVjb2Rlcl9idWZmXG52YXIganNvb190ZXh0X2RlY29kZXJfYnVmZiA9IG5ldyBBcnJheUJ1ZmZlcigxMDI0KTtcblxuLy9Qcm92aWRlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29faXNfYXNjaWlcbi8vUmVxdWlyZXM6IGpzb29fdGV4dF9kZWNvZGVyXG4vL1JlcXVpcmVzOiBqc29vX3RleHRfZGVjb2Rlcl9idWZmXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpIHtcbiAgaWYgKGpzb29faXNfYXNjaWkocykpIHJldHVybiBzO1xuICB2YXIgYSA9XG4gICAgcy5sZW5ndGggPD0ganNvb190ZXh0X2RlY29kZXJfYnVmZi5sZW5ndGhcbiAgICAgID8gbmV3IFVpbnQ4QXJyYXkoanNvb190ZXh0X2RlY29kZXJfYnVmZiwgMCwgcy5sZW5ndGgpXG4gICAgICA6IG5ldyBVaW50OEFycmF5KHMubGVuZ3RoKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzLmxlbmd0aDsgaSsrKSB7XG4gICAgYVtpXSA9IHMuY2hhckNvZGVBdChpKTtcbiAgfVxuICByZXR1cm4ganNvb190ZXh0X2RlY29kZXIuZGVjb2RlKGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGpzb29fdGV4dF9lbmNvZGVyXG4vL1JlcXVpcmVzOiBqc29vX2lzX2FzY2lpLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHMpIHtcbiAgaWYgKGpzb29faXNfYXNjaWkocykpIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpO1xuICB2YXIgYSA9IGpzb29fdGV4dF9lbmNvZGVyLmVuY29kZShzKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMgY29uc3Rcbi8vUmVxdWlyZXM6IE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhzKSB7XG4gIHJldHVybiBuZXcgTWxCeXRlcygwLCBzLCBzLmxlbmd0aCk7XG59XG5cbi8vIFRoZSBzZWN0aW9uIGJlbG93IHNob3VsZCBiZSB1c2VkIHdoZW4gdXNlLWpzLXN0cmluZz1mYWxzZVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSkge1xuICByZXR1cm4gY2FtbF9ieXRlc191bnNhZmVfZ2V0KHMsIGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQocywgaSwgYykge1xuICByZXR1cm4gY2FtbF9ieXRlc191bnNhZmVfc2V0KHMsIGksIGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGggY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykge1xuICByZXR1cm4gY2FtbF9tbF9ieXRlc19sZW5ndGgocyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2NvbXBhcmVcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfY29tcGFyZVxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfY29tcGFyZShzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfY29tcGFyZShzMSwgczIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19lcXVhbFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19lcXVhbFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2VxdWFsKHMxLCBzMik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3NlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzZXF1YWxcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3NlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc2VxdWFsKHMxLCBzMik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3N0aGFuXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2xlc3N0aGFuXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19sZXNzdGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc3RoYW4oczEsIHMyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2J5dGVzKHMpIHtcbiAgcmV0dXJuIHM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3N0cmluZyhzKSB7XG4gIHJldHVybiBzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX2pzYnl0ZXNcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocykge1xuICByZXR1cm4gY2FtbF9ieXRlc19vZl9qc2J5dGVzKHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpIHtcbiAgcy50ICYgNiAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMpO1xuICByZXR1cm4gcy5jO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIHMudG9VdGYxNigpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZ1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocykge1xuICByZXR1cm4gY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyhzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19tbF9ieXRlc1xuLy9SZXF1aXJlczogTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9pc19tbF9ieXRlcyhzKSB7XG4gIHJldHVybiBzIGluc3RhbmNlb2YgTWxCeXRlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ieXRlc19jb250ZW50XG4vL1JlcXVpcmVzOiBNbEJ5dGVzLCBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG4vL1JldHVybnMgYSAoZnVsbCkgc3RyaW5nIG9mIGJ5dGVzIG9yIGFuIGFycmF5XG5mdW5jdGlvbiBjYW1sX21sX2J5dGVzX2NvbnRlbnQocykge1xuICBzd2l0Y2ggKHMudCAmIDYpIHtcbiAgICBjYXNlIDIgLyogUEFSVElBTCAqLzpcbiAgICAgIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMocyk7XG4gICAgICByZXR1cm4gcy5jO1xuICAgIGRlZmF1bHQ6IC8qIEJZVEVTIG9yIEFSUkFZICovXG4gICAgICByZXR1cm4gcy5jO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfbWxfc3RyaW5nXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfaXNfbWxfc3RyaW5nKHMpIHtcbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0NvbnRyb2xDaGFyYWN0ZXJzSW5SZWdleDogZXhwZWN0ZWRcbiAgcmV0dXJuIHR5cGVvZiBzID09PSBcInN0cmluZ1wiICYmICEvW15cXHgwMC1cXHhmZl0vLnRlc3Qocyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfbWxfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2lzX21sX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2lzX21sX2J5dGVzKHMpO1xufVxuXG4vLyBUaGUgZnVuY3Rpb25zIGJlbG93IGFyZSBkZXByZWNhdGVkXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vRGVwcmVjYXRlZDogVXNlIFtjYW1sX3N0cmluZ19vZl9qc2J5dGVzXSBpbnN0ZWFkXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2J5dGVfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9zdHJpbmcgbXV0YWJsZSAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9EZXByZWNhdGVkOiBVc2UgW2NhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXSBpbnN0ZWFkXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3RvX2pzX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG4vL0RlcHJlY2F0ZWQ6IFVzZSBbY2FtbF9qc3N0cmluZ19vZl9zdHJpbmddIGluc3RlYWRcbmZ1bmN0aW9uIGNhbWxfdG9fanNfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vRGVwcmVjYXRlZDogVXNlIFtjYW1sX3N0cmluZ19vZl9qc3N0cmluZ10gaW5zdGVhZFxuZnVuY3Rpb24gY2FtbF9qc190b19zdHJpbmcocykge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuLy9EZXByZWNhdGVkOiBVc2UgW2NhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nXSBpbnN0ZWFkXG5mdW5jdGlvbiBjYW1sX2FycmF5X29mX3N0cmluZyh4KSB7XG4gIHJldHVybiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyh4KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuLy9EZXByZWNhdGVkOiBVc2UgW2NhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNdIGluc3RlYWRcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfb2ZfYnl0ZXMoeCkge1xuICByZXR1cm4gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyh4KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9uZXdfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL0RlcHJlY2F0ZWQ6IFVzZSBbY2FtbF9zdHJpbmdfb2ZfanNieXRlc10gaW5zdGVhZFxuZnVuY3Rpb24gY2FtbF9uZXdfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocyk7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9tYXJzaGFsX2NvbnN0YW50c1xudmFyIGNhbWxfbWFyc2hhbF9jb25zdGFudHMgPSB7XG4gIFBSRUZJWF9TTUFMTF9CTE9DSzogMHg4MCxcbiAgUFJFRklYX1NNQUxMX0lOVDogMHg0MCxcbiAgUFJFRklYX1NNQUxMX1NUUklORzogMHgyMCxcbiAgQ09ERV9JTlQ4OiAweDAwLFxuICBDT0RFX0lOVDE2OiAweDAxLFxuICBDT0RFX0lOVDMyOiAweDAyLFxuICBDT0RFX0lOVDY0OiAweDAzLFxuICBDT0RFX1NIQVJFRDg6IDB4MDQsXG4gIENPREVfU0hBUkVEMTY6IDB4MDUsXG4gIENPREVfU0hBUkVEMzI6IDB4MDYsXG4gIENPREVfQkxPQ0szMjogMHgwOCxcbiAgQ09ERV9CTE9DSzY0OiAweDEzLFxuICBDT0RFX1NUUklORzg6IDB4MDksXG4gIENPREVfU1RSSU5HMzI6IDB4MGEsXG4gIENPREVfRE9VQkxFX0JJRzogMHgwYixcbiAgQ09ERV9ET1VCTEVfTElUVExFOiAweDBjLFxuICBDT0RFX0RPVUJMRV9BUlJBWThfQklHOiAweDBkLFxuICBDT0RFX0RPVUJMRV9BUlJBWThfTElUVExFOiAweDBlLFxuICBDT0RFX0RPVUJMRV9BUlJBWTMyX0JJRzogMHgwZixcbiAgQ09ERV9ET1VCTEVfQVJSQVkzMl9MSVRUTEU6IDB4MDcsXG4gIENPREVfQ09ERVBPSU5URVI6IDB4MTAsXG4gIENPREVfSU5GSVhQT0lOVEVSOiAweDExLFxuICBDT0RFX0NVU1RPTTogMHgxMixcbiAgQ09ERV9DVVNUT01fTEVOOiAweDE4LFxuICBDT0RFX0NVU1RPTV9GSVhFRDogMHgxOSxcbn07XG5cbi8vUHJvdmlkZXM6IFVJbnQ4QXJyYXlSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX3VpbnQ4X2FycmF5XG5jbGFzcyBVSW50OEFycmF5UmVhZGVyIHtcbiAgY29uc3RydWN0b3IocywgaSkge1xuICAgIHRoaXMucyA9IHM7XG4gICAgdGhpcy5pID0gaTtcbiAgfVxuXG4gIHJlYWQ4dSgpIHtcbiAgICByZXR1cm4gdGhpcy5zW3RoaXMuaSsrXTtcbiAgfVxuXG4gIHJlYWQ4cygpIHtcbiAgICByZXR1cm4gKHRoaXMuc1t0aGlzLmkrK10gPDwgMjQpID4+IDI0O1xuICB9XG5cbiAgcmVhZDE2dSgpIHtcbiAgICB2YXIgcyA9IHRoaXMucyxcbiAgICAgIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChzW2ldIDw8IDgpIHwgc1tpICsgMV07XG4gIH1cblxuICByZWFkMTZzKCkge1xuICAgIHZhciBzID0gdGhpcy5zLFxuICAgICAgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKChzW2ldIDw8IDI0KSA+PiAxNikgfCBzW2kgKyAxXTtcbiAgfVxuXG4gIHJlYWQzMnUoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsXG4gICAgICBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoKHNbaV0gPDwgMjQpIHwgKHNbaSArIDFdIDw8IDE2KSB8IChzW2kgKyAyXSA8PCA4KSB8IHNbaSArIDNdKSA+Pj4gMDtcbiAgfVxuXG4gIHJlYWQzMnMoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsXG4gICAgICBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoc1tpXSA8PCAyNCkgfCAoc1tpICsgMV0gPDwgMTYpIHwgKHNbaSArIDJdIDw8IDgpIHwgc1tpICsgM107XG4gIH1cblxuICByZWFkc3RyKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX3VpbnQ4X2FycmF5KHRoaXMucy5zdWJhcnJheShpLCBpICsgbGVuKSk7XG4gIH1cblxuICByZWFkdWludDhhcnJheShsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiB0aGlzLnMuc3ViYXJyYXkoaSwgaSArIGxlbik7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogSnNTdHJpbmdSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmNsYXNzIEpzU3RyaW5nUmVhZGVyIHtcbiAgY29uc3RydWN0b3IocywgaSkge1xuICAgIHRoaXMucyA9IHM7XG4gICAgdGhpcy5pID0gaTtcbiAgfVxuXG4gIHJlYWQ4dSgpIHtcbiAgICByZXR1cm4gdGhpcy5zLmNoYXJDb2RlQXQodGhpcy5pKyspO1xuICB9XG5cbiAgcmVhZDhzKCkge1xuICAgIHJldHVybiAodGhpcy5zLmNoYXJDb2RlQXQodGhpcy5pKyspIDw8IDI0KSA+PiAyNDtcbiAgfVxuXG4gIHJlYWQxNnUoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsXG4gICAgICBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAocy5jaGFyQ29kZUF0KGkpIDw8IDgpIHwgcy5jaGFyQ29kZUF0KGkgKyAxKTtcbiAgfVxuXG4gIHJlYWQxNnMoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsXG4gICAgICBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAoKHMuY2hhckNvZGVBdChpKSA8PCAyNCkgPj4gMTYpIHwgcy5jaGFyQ29kZUF0KGkgKyAxKTtcbiAgfVxuXG4gIHJlYWQzMnUoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsXG4gICAgICBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoXG4gICAgICAoKHMuY2hhckNvZGVBdChpKSA8PCAyNCkgfFxuICAgICAgICAocy5jaGFyQ29kZUF0KGkgKyAxKSA8PCAxNikgfFxuICAgICAgICAocy5jaGFyQ29kZUF0KGkgKyAyKSA8PCA4KSB8XG4gICAgICAgIHMuY2hhckNvZGVBdChpICsgMykpID4+PlxuICAgICAgMFxuICAgICk7XG4gIH1cblxuICByZWFkMzJzKCkge1xuICAgIHZhciBzID0gdGhpcy5zLFxuICAgICAgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKFxuICAgICAgKHMuY2hhckNvZGVBdChpKSA8PCAyNCkgfFxuICAgICAgKHMuY2hhckNvZGVBdChpICsgMSkgPDwgMTYpIHxcbiAgICAgIChzLmNoYXJDb2RlQXQoaSArIDIpIDw8IDgpIHxcbiAgICAgIHMuY2hhckNvZGVBdChpICsgMylcbiAgICApO1xuICB9XG5cbiAgcmVhZHN0cihsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHRoaXMucy5zbGljZShpLCBpICsgbGVuKSk7XG4gIH1cblxuICByZWFkdWludDhhcnJheShsZW4pIHtcbiAgICB2YXIgYiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgdmFyIHMgPSB0aGlzLnM7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBsZW47IGorKykge1xuICAgICAgYltqXSA9IHMuY2hhckNvZGVBdChpICsgaik7XG4gICAgfVxuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGI7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdF9vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzLCBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2Zsb2F0X29mX2J5dGVzKGEpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyhjYW1sX2ludDY0X29mX2J5dGVzKGEpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzIG11dGFibGVcbi8vUmVxdWlyZXM6IEpzU3RyaW5nUmVhZGVyLCBVSW50OEFycmF5UmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcyhzLCBvZnMpIHtcbiAgdmFyIGMgPSBjYW1sX21sX2J5dGVzX2NvbnRlbnQocyk7XG4gIHZhciBvZnMgPSB0eXBlb2Ygb2ZzID09PSBcIm51bWJlclwiID8gb2ZzIDogb2ZzWzBdO1xuICB2YXIgcmVhZGVyID1cbiAgICBjIGluc3RhbmNlb2YgVWludDhBcnJheVxuICAgICAgPyBuZXcgVUludDhBcnJheVJlYWRlcihjLCBvZnMpXG4gICAgICA6IG5ldyBKc1N0cmluZ1JlYWRlcihjLCBvZnMpO1xuICByZXR1cm4gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcihyZWFkZXIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3VubWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF91bm1hcnNoYWwocmVhZGVyLCBzaXplKSB7XG4gIHZhciB0ID0gbmV3IEFycmF5KDgpO1xuICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgc2l6ZVswXSA9IDg7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKHQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X21hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbWFyc2hhbCh3cml0ZXIsIHYsIHNpemVzKSB7XG4gIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyh2KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA4OyBpKyspIHdyaXRlci53cml0ZSg4LCBiW2ldKTtcbiAgc2l6ZXNbMF0gPSA4O1xuICBzaXplc1sxXSA9IDg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfdW5tYXJzaGFsXG5mdW5jdGlvbiBjYW1sX2ludDMyX3VubWFyc2hhbChyZWFkZXIsIHNpemUpIHtcbiAgc2l6ZVswXSA9IDQ7XG4gIHJldHVybiByZWFkZXIucmVhZDMycygpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25hdGl2ZWludF91bm1hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfbmF0aXZlaW50X3VubWFyc2hhbChyZWFkZXIsIHNpemUpIHtcbiAgc3dpdGNoIChyZWFkZXIucmVhZDh1KCkpIHtcbiAgICBjYXNlIDE6XG4gICAgICBzaXplWzBdID0gNDtcbiAgICAgIHJldHVybiByZWFkZXIucmVhZDMycygpO1xuICAgIGNhc2UgMjpcbiAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogbmF0aXZlIGludGVnZXIgdmFsdWUgdG9vIGxhcmdlXCIpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogaWxsLWZvcm1lZCBuYXRpdmUgaW50ZWdlclwiKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdW5tYXJzaGFsLCBjYW1sX2ludDY0X21hcnNoYWwsIGNhbWxfaW50NjRfY29tcGFyZSwgY2FtbF9pbnQ2NF9oYXNoXG4vL1JlcXVpcmVzOiBjYW1sX2ludDMyX3VubWFyc2hhbCwgY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3NlcmlhbGl6ZSwgY2FtbF9iYV9kZXNlcmlhbGl6ZSwgY2FtbF9iYV9jb21wYXJlLCBjYW1sX2JhX2hhc2hcbnZhciBjYW1sX2N1c3RvbV9vcHMgPSB7XG4gIF9qOiB7XG4gICAgZGVzZXJpYWxpemU6IGNhbWxfaW50NjRfdW5tYXJzaGFsLFxuICAgIHNlcmlhbGl6ZTogY2FtbF9pbnQ2NF9tYXJzaGFsLFxuICAgIGZpeGVkX2xlbmd0aDogOCxcbiAgICBjb21wYXJlOiBjYW1sX2ludDY0X2NvbXBhcmUsXG4gICAgaGFzaDogY2FtbF9pbnQ2NF9oYXNoLFxuICB9LFxuICBfaToge1xuICAgIGRlc2VyaWFsaXplOiBjYW1sX2ludDMyX3VubWFyc2hhbCxcbiAgICBmaXhlZF9sZW5ndGg6IDQsXG4gIH0sXG4gIF9uOiB7XG4gICAgZGVzZXJpYWxpemU6IGNhbWxfbmF0aXZlaW50X3VubWFyc2hhbCxcbiAgICBmaXhlZF9sZW5ndGg6IDQsXG4gIH0sXG4gIF9iaWdhcnJheToge1xuICAgIGRlc2VyaWFsaXplOiBmdW5jdGlvbiAocmVhZGVyLCBzeikge1xuICAgICAgcmV0dXJuIGNhbWxfYmFfZGVzZXJpYWxpemUocmVhZGVyLCBzeiwgXCJfYmlnYXJyYXlcIik7XG4gICAgfSxcbiAgICBzZXJpYWxpemU6IGNhbWxfYmFfc2VyaWFsaXplLFxuICAgIGNvbXBhcmU6IGNhbWxfYmFfY29tcGFyZSxcbiAgICBoYXNoOiBjYW1sX2JhX2hhc2gsXG4gIH0sXG4gIF9iaWdhcnIwMjoge1xuICAgIGRlc2VyaWFsaXplOiBmdW5jdGlvbiAocmVhZGVyLCBzeikge1xuICAgICAgcmV0dXJuIGNhbWxfYmFfZGVzZXJpYWxpemUocmVhZGVyLCBzeiwgXCJfYmlnYXJyMDJcIik7XG4gICAgfSxcbiAgICBzZXJpYWxpemU6IGNhbWxfYmFfc2VyaWFsaXplLFxuICAgIGNvbXBhcmU6IGNhbWxfYmFfY29tcGFyZSxcbiAgICBoYXNoOiBjYW1sX2JhX2hhc2gsXG4gIH0sXG59O1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfZmxvYXRfb2ZfYnl0ZXMsIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogVUludDhBcnJheVJlYWRlclxuLy9SZXF1aXJlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1JlcXVpcmVzOiBjYW1sX3NldF9vb19pZFxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcihyZWFkZXIpIHtcbiAgZnVuY3Rpb24gcmVhZHZscShvdmVyZmxvdykge1xuICAgIHZhciBjID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgIHZhciBuID0gYyAmIDB4N2Y7XG4gICAgd2hpbGUgKChjICYgMHg4MCkgIT09IDApIHtcbiAgICAgIGMgPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgbjcgPSBuIDw8IDc7XG4gICAgICBpZiAobiAhPT0gbjcgPj4gNykgb3ZlcmZsb3dbMF0gPSB0cnVlO1xuICAgICAgbiA9IG43IHwgKGMgJiAweDdmKTtcbiAgICB9XG4gICAgcmV0dXJuIG47XG4gIH1cbiAgdmFyIG9sZF9wb3MgPSByZWFkZXIuaTtcbiAgdmFyIG1hZ2ljID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgc3dpdGNoIChtYWdpYykge1xuICAgIGNhc2UgMHg4NDk1YTZiZSAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX3NtYWxsICovOlxuICAgICAgdmFyIGhlYWRlcl9sZW4gPSAyMDtcbiAgICAgIHZhciBjb21wcmVzc2VkID0gMDtcbiAgICAgIHZhciBkYXRhX2xlbiA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICB2YXIgdW5jb21wcmVzc2VkX2RhdGFfbGVuID0gZGF0YV9sZW47XG4gICAgICB2YXIgbnVtX29iamVjdHMgPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgdmFyIF9zaXplXzMyID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgIHZhciBfc2l6ZV82NCA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDB4ODQ5NWE2YmQgLyogSW50ZXh0X21hZ2ljX251bWJlcl9jb21wcmVzc2VkICovOlxuICAgICAgdmFyIGhlYWRlcl9sZW4gPSByZWFkZXIucmVhZDh1KCkgJiAweDNmO1xuICAgICAgdmFyIGNvbXByZXNzZWQgPSAxO1xuICAgICAgdmFyIG92ZXJmbG93ID0gW2ZhbHNlXTtcbiAgICAgIHZhciBkYXRhX2xlbiA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgICAgdmFyIHVuY29tcHJlc3NlZF9kYXRhX2xlbiA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgICAgdmFyIG51bV9vYmplY3RzID0gcmVhZHZscShvdmVyZmxvdyk7XG4gICAgICB2YXIgX3NpemVfMzIgPSByZWFkdmxxKG92ZXJmbG93KTtcbiAgICAgIHZhciBfc2l6ZV82NCA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgICAgaWYgKG92ZXJmbG93WzBdKSB7XG4gICAgICAgIGNhbWxfZmFpbHdpdGgoXG4gICAgICAgICAgXCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyOiBvYmplY3QgdG9vIGxhcmdlIHRvIGJlIHJlYWQgYmFjayBvbiB0aGlzIHBsYXRmb3JtXCIsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIDB4ODQ5NWE2YmYgLyogSW50ZXh0X21hZ2ljX251bWJlcl9iaWcgKi86XG4gICAgICBjYW1sX2ZhaWx3aXRoKFxuICAgICAgICBcImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXI6IG9iamVjdCB0b28gbGFyZ2UgdG8gYmUgcmVhZCBiYWNrIG9uIGEgMzItYml0IHBsYXRmb3JtXCIsXG4gICAgICApO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyOiBiYWQgb2JqZWN0XCIpO1xuICAgICAgYnJlYWs7XG4gIH1cbiAgaWYgKGhlYWRlcl9sZW4gIT09IHJlYWRlci5pIC0gb2xkX3Bvcykge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyOiBpbnZhbGlkIGhlYWRlclwiKTtcbiAgfVxuICB2YXIgc3RhY2sgPSBbXTtcbiAgdmFyIG9iamVjdHMgPSBbXTtcbiAgdmFyIGludGVybl9vYmpfdGFibGUgPSBudW1fb2JqZWN0cyA+IDAgPyBbXSA6IG51bGw7XG4gIHZhciBvYmpfY291bnRlciA9IDA7XG4gIGZ1bmN0aW9uIGludGVybl9yZWMocmVhZGVyKSB7XG4gICAgdmFyIGNvZGUgPSByZWFkZXIucmVhZDh1KCk7XG4gICAgaWYgKGNvZGUgPj0gMHg0MCAvKmNzdC5QUkVGSVhfU01BTExfSU5UKi8pIHtcbiAgICAgIGlmIChjb2RlID49IDB4ODAgLypjc3QuUFJFRklYX1NNQUxMX0JMT0NLKi8pIHtcbiAgICAgICAgdmFyIHRhZyA9IGNvZGUgJiAweGY7XG4gICAgICAgIHZhciBzaXplID0gKGNvZGUgPj4gNCkgJiAweDc7XG4gICAgICAgIHZhciB2ID0gW3RhZ107XG4gICAgICAgIGlmIChzaXplID09PSAwKSByZXR1cm4gdjtcbiAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICBpZiAodGFnID09PSAyNDgpIG9iamVjdHMucHVzaCh2KTtcbiAgICAgICAgc3RhY2sucHVzaCh2LCBzaXplKTtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICB9IGVsc2UgcmV0dXJuIGNvZGUgJiAweDNmO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY29kZSA+PSAweDIwIC8qY3N0LlBSRUZJWF9TTUFMTF9TVFJJTkcgKi8pIHtcbiAgICAgICAgdmFyIGxlbiA9IGNvZGUgJiAweDFmO1xuICAgICAgICB2YXIgdiA9IHJlYWRlci5yZWFkc3RyKGxlbik7XG4gICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2ggKGNvZGUpIHtcbiAgICAgICAgICBjYXNlIDB4MDA6IC8vY3N0LkNPREVfSU5UODpcbiAgICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZDhzKCk7XG4gICAgICAgICAgY2FzZSAweDAxOiAvL2NzdC5DT0RFX0lOVDE2OlxuICAgICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkMTZzKCk7XG4gICAgICAgICAgY2FzZSAweDAyOiAvL2NzdC5DT0RFX0lOVDMyOlxuICAgICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkMzJzKCk7XG4gICAgICAgICAgY2FzZSAweDAzOiAvL2NzdC5DT0RFX0lOVDY0OlxuICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBpbnRlZ2VyIHRvbyBsYXJnZVwiKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMHgwNDogLy9jc3QuQ09ERV9TSEFSRUQ4OlxuICAgICAgICAgICAgdmFyIG9mZnNldCA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIGlmIChjb21wcmVzc2VkID09PSAwKSBvZmZzZXQgPSBvYmpfY291bnRlciAtIG9mZnNldDtcbiAgICAgICAgICAgIHJldHVybiBpbnRlcm5fb2JqX3RhYmxlW29mZnNldF07XG4gICAgICAgICAgY2FzZSAweDA1OiAvL2NzdC5DT0RFX1NIQVJFRDE2OlxuICAgICAgICAgICAgdmFyIG9mZnNldCA9IHJlYWRlci5yZWFkMTZ1KCk7XG4gICAgICAgICAgICBpZiAoY29tcHJlc3NlZCA9PT0gMCkgb2Zmc2V0ID0gb2JqX2NvdW50ZXIgLSBvZmZzZXQ7XG4gICAgICAgICAgICByZXR1cm4gaW50ZXJuX29ial90YWJsZVtvZmZzZXRdO1xuICAgICAgICAgIGNhc2UgMHgwNjogLy9jc3QuQ09ERV9TSEFSRUQzMjpcbiAgICAgICAgICAgIHZhciBvZmZzZXQgPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgICAgaWYgKGNvbXByZXNzZWQgPT09IDApIG9mZnNldCA9IG9ial9jb3VudGVyIC0gb2Zmc2V0O1xuICAgICAgICAgICAgcmV0dXJuIGludGVybl9vYmpfdGFibGVbb2Zmc2V0XTtcbiAgICAgICAgICBjYXNlIDB4MDg6IC8vY3N0LkNPREVfQkxPQ0szMjpcbiAgICAgICAgICAgIHZhciBoZWFkZXIgPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgICAgdmFyIHRhZyA9IGhlYWRlciAmIDB4ZmY7XG4gICAgICAgICAgICB2YXIgc2l6ZSA9IGhlYWRlciA+PiAxMDtcbiAgICAgICAgICAgIHZhciB2ID0gW3RhZ107XG4gICAgICAgICAgICBpZiAoc2l6ZSA9PT0gMCkgcmV0dXJuIHY7XG4gICAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgICBpZiAodGFnID09PSAyNDgpIG9iamVjdHMucHVzaCh2KTtcbiAgICAgICAgICAgIHN0YWNrLnB1c2godiwgc2l6ZSk7XG4gICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgICBjYXNlIDB4MTM6IC8vY3N0LkNPREVfQkxPQ0s2NDpcbiAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogZGF0YSBibG9jayB0b28gbGFyZ2VcIik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDB4MDk6IC8vY3N0LkNPREVfU1RSSU5HODpcbiAgICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2YXIgdiA9IHJlYWRlci5yZWFkc3RyKGxlbik7XG4gICAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgICBjYXNlIDB4MGE6IC8vY3N0LkNPREVfU1RSSU5HMzI6XG4gICAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgICAgIHZhciB2ID0gcmVhZGVyLnJlYWRzdHIobGVuKTtcbiAgICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICAgIGNhc2UgMHgwYzogLy9jc3QuQ09ERV9ET1VCTEVfTElUVExFOlxuICAgICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDg7IGkrKykgdFs3IC0gaV0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2YXIgdiA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXModCk7XG4gICAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgICBjYXNlIDB4MGI6IC8vY3N0LkNPREVfRE9VQkxFX0JJRzpcbiAgICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA4OyBpKyspIHRbaV0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2YXIgdiA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXModCk7XG4gICAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgICBjYXNlIDB4MGU6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZOF9MSVRUTEU6XG4gICAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuICsgMSk7XG4gICAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7XG4gICAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8PSBsZW47IGkrKykge1xuICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgdFs3IC0gal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICAgIHZbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzKHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgICAgY2FzZSAweDBkOiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWThfQklHOlxuICAgICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbiArIDEpO1xuICAgICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpO1xuICAgICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPD0gbGVuOyBpKyspIHtcbiAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICAgIHZbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzKHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgICAgY2FzZSAweDA3OiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWTMyX0xJVFRMRTpcbiAgICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuICsgMSk7XG4gICAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8PSBsZW47IGkrKykge1xuICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgdFs3IC0gal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICAgIHZbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzKHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgICAgY2FzZSAweDBmOiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWTMyX0JJRzpcbiAgICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuICsgMSk7XG4gICAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8PSBsZW47IGkrKykge1xuICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgICAgdltpXSA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXModCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgICBjYXNlIDB4MTA6IC8vY3N0LkNPREVfQ09ERVBPSU5URVI6XG4gICAgICAgICAgY2FzZSAweDExOiAvL2NzdC5DT0RFX0lORklYUE9JTlRFUjpcbiAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogY29kZSBwb2ludGVyXCIpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAweDEyOiAvL2NzdC5DT0RFX0NVU1RPTTpcbiAgICAgICAgICBjYXNlIDB4MTg6IC8vY3N0LkNPREVfQ1VTVE9NX0xFTjpcbiAgICAgICAgICBjYXNlIDB4MTk6IC8vY3N0LkNPREVfQ1VTVE9NX0ZJWEVEOlxuICAgICAgICAgICAgdmFyIGMsXG4gICAgICAgICAgICAgIHMgPSBcIlwiO1xuICAgICAgICAgICAgd2hpbGUgKChjID0gcmVhZGVyLnJlYWQ4dSgpKSAhPT0gMCkgcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpO1xuICAgICAgICAgICAgdmFyIG9wcyA9IGNhbWxfY3VzdG9tX29wc1tzXTtcbiAgICAgICAgICAgIHZhciBleHBlY3RlZF9zaXplO1xuICAgICAgICAgICAgaWYgKCFvcHMpXG4gICAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogdW5rbm93biBjdXN0b20gYmxvY2sgaWRlbnRpZmllclwiKTtcbiAgICAgICAgICAgIHN3aXRjaCAoY29kZSkge1xuICAgICAgICAgICAgICBjYXNlIDB4MTI6IC8vIGNzdC5DT0RFX0NVU1RPTSAoZGVwcmVjYXRlZClcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSAweDE5OiAvLyBjc3QuQ09ERV9DVVNUT01fRklYRURcbiAgICAgICAgICAgICAgICBpZiAoIW9wcy5maXhlZF9sZW5ndGgpXG4gICAgICAgICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFxuICAgICAgICAgICAgICAgICAgICBcImlucHV0X3ZhbHVlOiBleHBlY3RlZCBhIGZpeGVkLXNpemUgY3VzdG9tIGJsb2NrXCIsXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGV4cGVjdGVkX3NpemUgPSBvcHMuZml4ZWRfbGVuZ3RoO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIDB4MTg6IC8vIGNzdC5DT0RFX0NVU1RPTV9MRU5cbiAgICAgICAgICAgICAgICBleHBlY3RlZF9zaXplID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgICAgICAgICAvLyBTa2lwIHNpemU2NFxuICAgICAgICAgICAgICAgIHJlYWRlci5yZWFkMzJzKCk7XG4gICAgICAgICAgICAgICAgcmVhZGVyLnJlYWQzMnMoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBzaXplID0gWzBdO1xuICAgICAgICAgICAgdmFyIHYgPSBvcHMuZGVzZXJpYWxpemUocmVhZGVyLCBzaXplKTtcbiAgICAgICAgICAgIGlmIChleHBlY3RlZF9zaXplICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgaWYgKGV4cGVjdGVkX3NpemUgIT09IHNpemVbMF0pXG4gICAgICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcbiAgICAgICAgICAgICAgICAgIFwiaW5wdXRfdmFsdWU6IGluY29ycmVjdCBsZW5ndGggb2Ygc2VyaWFsaXplZCBjdXN0b20gYmxvY2tcIixcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogaWxsLWZvcm1lZCBtZXNzYWdlXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChjb21wcmVzc2VkKSB7XG4gICAgaWYgKGNhbWxfZGVjb21wcmVzc19pbnB1dCkge1xuICAgICAgdmFyIGRhdGEgPSByZWFkZXIucmVhZHVpbnQ4YXJyYXkoZGF0YV9sZW4pO1xuICAgICAgdmFyIHJlcyA9IG5ldyBVaW50OEFycmF5KHVuY29tcHJlc3NlZF9kYXRhX2xlbik7XG4gICAgICB2YXIgcmVzID0gY2FtbF9kZWNvbXByZXNzX2lucHV0KGRhdGEsIHJlcyk7XG4gICAgICB2YXIgcmVhZGVyID0gbmV3IFVJbnQ4QXJyYXlSZWFkZXIocmVzLCAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBjb21wcmVzc2VkIG9iamVjdCwgY2Fubm90IGRlY29tcHJlc3NcIik7XG4gICAgfVxuICB9XG4gIHZhciByZXMgPSBpbnRlcm5fcmVjKHJlYWRlcik7XG4gIHdoaWxlIChzdGFjay5sZW5ndGggPiAwKSB7XG4gICAgdmFyIHNpemUgPSBzdGFjay5wb3AoKTtcbiAgICB2YXIgdiA9IHN0YWNrLnBvcCgpO1xuICAgIHZhciBkID0gdi5sZW5ndGg7XG4gICAgaWYgKGQgPCBzaXplKSBzdGFjay5wdXNoKHYsIHNpemUpO1xuICAgIHZbZF0gPSBpbnRlcm5fcmVjKHJlYWRlcik7XG4gIH1cbiAgd2hpbGUgKG9iamVjdHMubGVuZ3RoID4gMCkge1xuICAgIHZhciB4ID0gb2JqZWN0cy5wb3AoKTtcbiAgICBpZiAoeFsyXSA+PSAwKSBjYW1sX3NldF9vb19pZCh4KTtcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemVcbi8vVmVyc2lvbjogPCA1LjEuMFxudmFyIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSA9IDIwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemVcbi8vVmVyc2lvbjogPj0gNS4xLjBcbnZhciBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUgPSAxNjtcblxuLy9Qcm92aWRlczogY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IFVJbnQ4QXJyYXlSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZVxuZnVuY3Rpb24gY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZShzLCBvZnMpIHtcbiAgdmFyIHIgPSBuZXcgVUludDhBcnJheVJlYWRlcihjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKHMpLCBvZnMpO1xuICBmdW5jdGlvbiByZWFkdmxxKG92ZXJmbG93KSB7XG4gICAgdmFyIGMgPSByLnJlYWQ4dSgpO1xuICAgIHZhciBuID0gYyAmIDB4N2Y7XG4gICAgd2hpbGUgKChjICYgMHg4MCkgIT09IDApIHtcbiAgICAgIGMgPSByLnJlYWQ4dSgpO1xuICAgICAgdmFyIG43ID0gbiA8PCA3O1xuICAgICAgaWYgKG4gIT09IG43ID4+IDcpIG92ZXJmbG93WzBdID0gdHJ1ZTtcbiAgICAgIG4gPSBuNyB8IChjICYgMHg3Zik7XG4gICAgfVxuICAgIHJldHVybiBuO1xuICB9XG5cbiAgc3dpdGNoIChyLnJlYWQzMnUoKSkge1xuICAgIGNhc2UgMHg4NDk1YTZiZSAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX3NtYWxsICovOlxuICAgICAgdmFyIGhlYWRlcl9sZW4gPSAyMDtcbiAgICAgIHZhciBkYXRhX2xlbiA9IHIucmVhZDMydSgpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAweDg0OTVhNmJkIC8qIEludGV4dF9tYWdpY19udW1iZXJfY29tcHJlc3NlZCAqLzpcbiAgICAgIHZhciBoZWFkZXJfbGVuID0gci5yZWFkOHUoKSAmIDB4M2Y7XG4gICAgICB2YXIgb3ZlcmZsb3cgPSBbZmFsc2VdO1xuICAgICAgdmFyIGRhdGFfbGVuID0gcmVhZHZscShvdmVyZmxvdyk7XG4gICAgICBpZiAob3ZlcmZsb3dbMF0pIHtcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcbiAgICAgICAgICBcIk1hcnNoYWwuZGF0YV9zaXplOiBvYmplY3QgdG9vIGxhcmdlIHRvIGJlIHJlYWQgYmFjayBvbiB0aGlzIHBsYXRmb3JtXCIsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIDB4ODQ5NWE2YmYgLyogSW50ZXh0X21hZ2ljX251bWJlcl9iaWcgKi86XG4gICAgICBjYW1sX2ZhaWx3aXRoKFxuICAgICAgICBcIk1hcnNoYWwuZGF0YV9zaXplOiBvYmplY3QgdG9vIGxhcmdlIHRvIGJlIHJlYWQgYmFjayBvbiBhIDMyLWJpdCBwbGF0Zm9ybVwiLFxuICAgICAgKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBjYW1sX2ZhaWx3aXRoKFwiTWFyc2hhbC5kYXRhX3NpemU6IGJhZCBvYmplY3RcIik7XG4gICAgICBicmVhaztcbiAgfVxuICByZXR1cm4gaGVhZGVyX2xlbiAtIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSArIGRhdGFfbGVuO1xufVxuXG4vL1Byb3ZpZGVzOiBNbE9iamVjdFRhYmxlXG5jbGFzcyBNbE9iamVjdFRhYmxlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5vYmpzID0gW107XG4gICAgdGhpcy5sb29rdXAgPSBuZXcgZ2xvYmFsVGhpcy5NYXAoKTtcbiAgfVxuXG4gIHN0b3JlKHYpIHtcbiAgICB0aGlzLmxvb2t1cC5zZXQodiwgdGhpcy5vYmpzLmxlbmd0aCk7XG4gICAgdGhpcy5vYmpzLnB1c2godik7XG4gIH1cblxuICByZWNhbGwodikge1xuICAgIHZhciBpID0gdGhpcy5sb29rdXAuZ2V0KHYpO1xuICAgIHJldHVybiBpID09PSB1bmRlZmluZWRcbiAgICAgID8gdW5kZWZpbmVkXG4gICAgICA6IHRoaXMub2Jqcy5sZW5ndGggLSBpOyAvKiBpbmRleCBpcyByZWxhdGl2ZSAqL1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlcywgY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0XG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzLCBjYW1sX21sX2J5dGVzX2xlbmd0aCwgY2FtbF9ieXRlc191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBNbE9iamVjdFRhYmxlLCBjYW1sX2xpc3RfdG9fanNfYXJyYXksIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xudmFyIGNhbWxfb3V0cHV0X3ZhbCA9IChmdW5jdGlvbiAoKSB7XG4gIGNsYXNzIFdyaXRlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICB0aGlzLmNodW5rID0gW107XG4gICAgICB0aGlzLmNodW5rX2lkeCA9IDIwO1xuICAgICAgdGhpcy5ibG9ja19sZW4gPSAwO1xuICAgICAgdGhpcy5vYmpfY291bnRlciA9IDA7XG4gICAgICB0aGlzLnNpemVfMzIgPSAwO1xuICAgICAgdGhpcy5zaXplXzY0ID0gMDtcbiAgICB9XG5cbiAgICB3cml0ZShzaXplLCB2YWx1ZSkge1xuICAgICAgZm9yICh2YXIgaSA9IHNpemUgLSA4OyBpID49IDA7IGkgLT0gOClcbiAgICAgICAgdGhpcy5jaHVua1t0aGlzLmNodW5rX2lkeCsrXSA9ICh2YWx1ZSA+PiBpKSAmIDB4ZmY7XG4gICAgfVxuXG4gICAgd3JpdGVfYXQocG9zLCBzaXplLCB2YWx1ZSkge1xuICAgICAgdmFyIHBvcyA9IHBvcztcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODsgaSA+PSAwOyBpIC09IDgpXG4gICAgICAgIHRoaXMuY2h1bmtbcG9zKytdID0gKHZhbHVlID4+IGkpICYgMHhmZjtcbiAgICB9XG5cbiAgICB3cml0ZV9jb2RlKHNpemUsIGNvZGUsIHZhbHVlKSB7XG4gICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gY29kZTtcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODsgaSA+PSAwOyBpIC09IDgpXG4gICAgICAgIHRoaXMuY2h1bmtbdGhpcy5jaHVua19pZHgrK10gPSAodmFsdWUgPj4gaSkgJiAweGZmO1xuICAgIH1cblxuICAgIHdyaXRlX3NoYXJlZChvZmZzZXQpIHtcbiAgICAgIGlmIChvZmZzZXQgPCAxIDw8IDgpXG4gICAgICAgIHRoaXMud3JpdGVfY29kZSg4LCAweDA0IC8qY3N0LkNPREVfU0hBUkVEOCovLCBvZmZzZXQpO1xuICAgICAgZWxzZSBpZiAob2Zmc2V0IDwgMSA8PCAxNilcbiAgICAgICAgdGhpcy53cml0ZV9jb2RlKDE2LCAweDA1IC8qY3N0LkNPREVfU0hBUkVEMTYqLywgb2Zmc2V0KTtcbiAgICAgIGVsc2UgdGhpcy53cml0ZV9jb2RlKDMyLCAweDA2IC8qY3N0LkNPREVfU0hBUkVEMzIqLywgb2Zmc2V0KTtcbiAgICB9XG5cbiAgICBwb3MoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jaHVua19pZHg7XG4gICAgfVxuXG4gICAgZmluYWxpemUoKSB7XG4gICAgICB0aGlzLmJsb2NrX2xlbiA9IHRoaXMuY2h1bmtfaWR4IC0gMjA7XG4gICAgICB0aGlzLmNodW5rX2lkeCA9IDA7XG4gICAgICB0aGlzLndyaXRlKDMyLCAweDg0OTVhNmJlKTtcbiAgICAgIHRoaXMud3JpdGUoMzIsIHRoaXMuYmxvY2tfbGVuKTtcbiAgICAgIHRoaXMud3JpdGUoMzIsIHRoaXMub2JqX2NvdW50ZXIpO1xuICAgICAgdGhpcy53cml0ZSgzMiwgdGhpcy5zaXplXzMyKTtcbiAgICAgIHRoaXMud3JpdGUoMzIsIHRoaXMuc2l6ZV82NCk7XG4gICAgICByZXR1cm4gdGhpcy5jaHVuaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICh2LCBmbGFncykge1xuICAgIGZsYWdzID0gY2FtbF9saXN0X3RvX2pzX2FycmF5KGZsYWdzKTtcblxuICAgIHZhciBub19zaGFyaW5nID0gZmxhZ3MuaW5kZXhPZigwIC8qTWFyc2hhbC5Ob19zaGFyaW5nKi8pICE9PSAtMSxcbiAgICAgIGNsb3N1cmVzID0gZmxhZ3MuaW5kZXhPZigxIC8qTWFyc2hhbC5DbG9zdXJlcyovKSAhPT0gLTE7XG4gICAgLyogTWFyc2hhbC5Db21wYXRfMzIgaXMgcmVkdW5kYW50IHNpbmNlIGludGVnZXJzIGFyZSAzMi1iaXQgYW55d2F5ICovXG5cbiAgICBpZiAoY2xvc3VyZXMpXG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIFwiaW4gY2FtbF9vdXRwdXRfdmFsOiBmbGFnIE1hcnNoYWwuQ2xvc3VyZXMgaXMgbm90IHN1cHBvcnRlZC5cIixcbiAgICAgICk7XG5cbiAgICB2YXIgd3JpdGVyID0gbmV3IFdyaXRlcigpO1xuICAgIHZhciBzdGFjayA9IFtdO1xuICAgIHZhciBpbnRlcm5fb2JqX3RhYmxlID0gbm9fc2hhcmluZyA/IG51bGwgOiBuZXcgTWxPYmplY3RUYWJsZSgpO1xuXG4gICAgZnVuY3Rpb24gbWVtbyh2KSB7XG4gICAgICBpZiAobm9fc2hhcmluZykgcmV0dXJuIGZhbHNlO1xuICAgICAgdmFyIGV4aXN0aW5nX29mZnNldCA9IGludGVybl9vYmpfdGFibGUucmVjYWxsKHYpO1xuICAgICAgaWYgKGV4aXN0aW5nX29mZnNldCkge1xuICAgICAgICB3cml0ZXIud3JpdGVfc2hhcmVkKGV4aXN0aW5nX29mZnNldCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW50ZXJuX29ial90YWJsZS5zdG9yZSh2KTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGV4dGVybl9yZWModikge1xuICAgICAgaWYgKHYuY2FtbF9jdXN0b20pIHtcbiAgICAgICAgaWYgKG1lbW8odikpIHJldHVybjtcbiAgICAgICAgdmFyIG5hbWUgPSB2LmNhbWxfY3VzdG9tO1xuICAgICAgICB2YXIgb3BzID0gY2FtbF9jdXN0b21fb3BzW25hbWVdO1xuICAgICAgICB2YXIgc3pfMzJfNjQgPSBbMCwgMF07XG4gICAgICAgIGlmICghb3BzLnNlcmlhbGl6ZSlcbiAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJvdXRwdXRfdmFsdWU6IGFic3RyYWN0IHZhbHVlIChDdXN0b20pXCIpO1xuICAgICAgICBpZiAob3BzLmZpeGVkX2xlbmd0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgd3JpdGVyLndyaXRlKDgsIDB4MTggLypjc3QuQ09ERV9DVVNUT01fTEVOKi8pO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSg4LCBuYW1lLmNoYXJDb2RlQXQoaSkpO1xuICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB2YXIgaGVhZGVyX3BvcyA9IHdyaXRlci5wb3MoKTtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEyOyBpKyspIHtcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb3BzLnNlcmlhbGl6ZSh3cml0ZXIsIHYsIHN6XzMyXzY0KTtcbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcywgMzIsIHN6XzMyXzY0WzBdKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcyArIDQsIDMyLCAwKTsgLy8gemVyb1xuICAgICAgICAgIHdyaXRlci53cml0ZV9hdChoZWFkZXJfcG9zICsgOCwgMzIsIHN6XzMyXzY0WzFdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMHgxOSAvKmNzdC5DT0RFX0NVU1RPTV9GSVhFRCovKTtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWUubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgbmFtZS5jaGFyQ29kZUF0KGkpKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMCk7XG4gICAgICAgICAgb3BzLnNlcmlhbGl6ZSh3cml0ZXIsIHYsIHN6XzMyXzY0KTtcbiAgICAgICAgICBpZiAob3BzLmZpeGVkX2xlbmd0aCAhPT0gc3pfMzJfNjRbMF0pXG4gICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFxuICAgICAgICAgICAgICBcIm91dHB1dF92YWx1ZTogaW5jb3JyZWN0IGZpeGVkIHNpemVzIHNwZWNpZmllZCBieSBcIiArIG5hbWUsXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IDIgKyAoKHN6XzMyXzY0WzBdICsgMykgPj4gMik7XG4gICAgICAgIHdyaXRlci5zaXplXzY0ICs9IDIgKyAoKHN6XzMyXzY0WzFdICsgNykgPj4gMyk7XG4gICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodikgJiYgdlswXSA9PT0gKHZbMF0gfCAwKSkge1xuICAgICAgICBpZiAodlswXSA9PT0gMjUxKSB7XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogYWJzdHJhY3QgdmFsdWUgKEFic3RyYWN0KVwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FtbF9pc19jb250aW51YXRpb25fdGFnKHZbMF0pKVxuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIm91dHB1dF92YWx1ZTogY29udGludWF0aW9uIHZhbHVlXCIpO1xuICAgICAgICBpZiAodi5sZW5ndGggPiAxICYmIG1lbW8odikpIHJldHVybjtcbiAgICAgICAgaWYgKHZbMF0gPCAxNiAmJiB2Lmxlbmd0aCAtIDEgPCA4KVxuICAgICAgICAgIHdyaXRlci53cml0ZShcbiAgICAgICAgICAgIDgsXG4gICAgICAgICAgICAweDgwIC8qY3N0LlBSRUZJWF9TTUFMTF9CTE9DSyovICsgdlswXSArICgodi5sZW5ndGggLSAxKSA8PCA0KSxcbiAgICAgICAgICApO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoXG4gICAgICAgICAgICAzMixcbiAgICAgICAgICAgIDB4MDggLypjc3QuQ09ERV9CTE9DSzMyKi8sXG4gICAgICAgICAgICAoKHYubGVuZ3RoIC0gMSkgPDwgMTApIHwgdlswXSxcbiAgICAgICAgICApO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSB2Lmxlbmd0aDtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gdi5sZW5ndGg7XG4gICAgICAgIGlmICh2Lmxlbmd0aCA+IDEpIHN0YWNrLnB1c2godiwgMSk7XG4gICAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXModikpIHtcbiAgICAgICAgaWYgKCFjYW1sX2lzX21sX2J5dGVzKGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIikpKSB7XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcbiAgICAgICAgICAgIFwib3V0cHV0X3ZhbHVlOiBbQnl0ZXMudF0gY2Fubm90IHNhZmVseSBiZSBtYXJzaGFsZWQgd2l0aCBbLS1lbmFibGUgdXNlLWpzLXN0cmluZ11cIixcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtZW1vKHYpKSByZXR1cm47XG4gICAgICAgIHZhciBsZW4gPSBjYW1sX21sX2J5dGVzX2xlbmd0aCh2KTtcbiAgICAgICAgaWYgKGxlbiA8IDB4MjApIHdyaXRlci53cml0ZSg4LCAweDIwIC8qY3N0LlBSRUZJWF9TTUFMTF9TVFJJTkcqLyArIGxlbik7XG4gICAgICAgIGVsc2UgaWYgKGxlbiA8IDB4MTAwKVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDgsIDB4MDkgLypjc3QuQ09ERV9TVFJJTkc4Ki8sIGxlbik7XG4gICAgICAgIGVsc2Ugd3JpdGVyLndyaXRlX2NvZGUoMzIsIDB4MGEgLypjc3QuQ09ERV9TVFJJTkczMiovLCBsZW4pO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKVxuICAgICAgICAgIHdyaXRlci53cml0ZSg4LCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQodiwgaSkpO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAxICsgKCgobGVuICsgNCkgLyA0KSB8IDApO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSAxICsgKCgobGVuICsgOCkgLyA4KSB8IDApO1xuICAgICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyh2KSkge1xuICAgICAgICBpZiAobWVtbyh2KSkgcmV0dXJuO1xuICAgICAgICB2YXIgbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHYpO1xuICAgICAgICBpZiAobGVuIDwgMHgyMCkgd3JpdGVyLndyaXRlKDgsIDB4MjAgLypjc3QuUFJFRklYX1NNQUxMX1NUUklORyovICsgbGVuKTtcbiAgICAgICAgZWxzZSBpZiAobGVuIDwgMHgxMDApXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoOCwgMHgwOSAvKmNzdC5DT0RFX1NUUklORzgqLywgbGVuKTtcbiAgICAgICAgZWxzZSB3cml0ZXIud3JpdGVfY29kZSgzMiwgMHgwYSAvKmNzdC5DT0RFX1NUUklORzMyKi8sIGxlbik7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspXG4gICAgICAgICAgd3JpdGVyLndyaXRlKDgsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQodiwgaSkpO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAxICsgKCgobGVuICsgNCkgLyA0KSB8IDApO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSAxICsgKCgobGVuICsgOCkgLyA4KSB8IDApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHYgIT09ICh2IHwgMCkpIHtcbiAgICAgICAgICB2YXIgdHlwZV9vZl92ID0gdHlwZW9mIHY7XG4gICAgICAgICAgaWYgKHR5cGVfb2ZfdiAhPT0gXCJudW1iZXJcIilcbiAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJvdXRwdXRfdmFsdWU6IGFic3RyYWN0IHZhbHVlIChcIiArIHR5cGVfb2ZfdiArIFwiKVwiKTtcbiAgICAgICAgICAvLyBJZiBhIGZsb2F0IGhhcHBlbnMgdG8gYmUgYW4gaW50ZWdlciBpdCBpcyBzZXJpYWxpemVkIGFzIGFuIGludGVnZXJcbiAgICAgICAgICAvLyAoSnNfb2Zfb2NhbWwgY2Fubm90IHRlbGwgd2hldGhlciB0aGUgdHlwZSBvZiBhbiBpbnRlZ2VyIG51bWJlciBpc1xuICAgICAgICAgIC8vIGZsb2F0IG9yIGludGVnZXIuKSBUaGlzIGNhbiByZXN1bHQgaW4gdW5leHBlY3RlZCBjcmFzaGVzIHdoZW5cbiAgICAgICAgICAvLyB1bm1hcnNoYWxsaW5nIHVzaW5nIHRoZSBzdGFuZGFyZCBydW50aW1lLlxuICAgICAgICAgIGlmIChtZW1vKHYpKSByZXR1cm47XG4gICAgICAgICAgdmFyIHQgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCh2KSk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlKDgsIDB4MGMgLypjc3QuQ09ERV9ET1VCTEVfTElUVExFKi8pO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgODsgaSsrKSB7XG4gICAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgdFs3IC0gaV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAzO1xuICAgICAgICAgIHdyaXRlci5zaXplXzY0ICs9IDI7XG4gICAgICAgIH0gZWxzZSBpZiAodiA+PSAwICYmIHYgPCAweDQwKSB7XG4gICAgICAgICAgd3JpdGVyLndyaXRlKDgsIDB4NDAgLypjc3QuUFJFRklYX1NNQUxMX0lOVCovICsgdik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHYgPj0gLSgxIDw8IDcpICYmIHYgPCAxIDw8IDcpXG4gICAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSg4LCAweDAwIC8qY3N0LkNPREVfSU5UOCovLCB2KTtcbiAgICAgICAgICBlbHNlIGlmICh2ID49IC0oMSA8PCAxNSkgJiYgdiA8IDEgPDwgMTUpXG4gICAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSgxNiwgMHgwMSAvKmNzdC5DT0RFX0lOVDE2Ki8sIHYpO1xuICAgICAgICAgIGVsc2Ugd3JpdGVyLndyaXRlX2NvZGUoMzIsIDB4MDIgLypjc3QuQ09ERV9JTlQzMiovLCB2KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBleHRlcm5fcmVjKHYpO1xuICAgIHdoaWxlIChzdGFjay5sZW5ndGggPiAwKSB7XG4gICAgICB2YXIgaSA9IHN0YWNrLnBvcCgpO1xuICAgICAgdmFyIHYgPSBzdGFjay5wb3AoKTtcbiAgICAgIGlmIChpICsgMSA8IHYubGVuZ3RoKSBzdGFjay5wdXNoKHYsIGkgKyAxKTtcbiAgICAgIGV4dGVybl9yZWModltpXSk7XG4gICAgfVxuICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSB3cml0ZXIub2JqX2NvdW50ZXIgPSBpbnRlcm5fb2JqX3RhYmxlLm9ianMubGVuZ3RoO1xuICAgIHdyaXRlci5maW5hbGl6ZSgpO1xuICAgIHJldHVybiBuZXcgVWludDhBcnJheSh3cml0ZXIuY2h1bmspO1xuICB9O1xufSkoKTtcblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9zdHJpbmdfb2ZfdWludDhfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyh2LCBmbGFncykge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfdWludDhfYXJyYXkoY2FtbF9vdXRwdXRfdmFsKHYsIGZsYWdzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J5dGVzIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9ieXRlc19vZl91aW50OF9hcnJheVxuZnVuY3Rpb24gY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXModiwgZmxhZ3MpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfb2ZfdWludDhfYXJyYXkoY2FtbF9vdXRwdXRfdmFsKHYsIGZsYWdzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlclxuLy9SZXF1aXJlczogY2FtbF9vdXRwdXRfdmFsLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX2JsaXRfYnl0ZXMsIGNhbWxfYnl0ZXNfb2ZfdWludDhfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlcihzLCBvZnMsIGxlbiwgdiwgZmxhZ3MpIHtcbiAgdmFyIHQgPSBjYW1sX291dHB1dF92YWwodiwgZmxhZ3MpO1xuICBpZiAodC5sZW5ndGggPiBsZW4pIGNhbWxfZmFpbHdpdGgoXCJNYXJzaGFsLnRvX2J1ZmZlcjogYnVmZmVyIG92ZXJmbG93XCIpO1xuICBjYW1sX2JsaXRfYnl0ZXMoY2FtbF9ieXRlc19vZl91aW50OF9hcnJheSh0KSwgMCwgcywgb2ZzLCB0Lmxlbmd0aCk7XG4gIHJldHVybiAwO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBJb1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19mZHNcbnZhciBjYW1sX3N5c19mZHMgPSBuZXcgQXJyYXkoMyk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2Nsb3NlXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19mZHNcbmZ1bmN0aW9uIGNhbWxfc3lzX2Nsb3NlKGZkKSB7XG4gIHZhciB4ID0gY2FtbF9zeXNfZmRzW2ZkXTtcbiAgaWYgKHgpIHtcbiAgICB4LmZpbGUuY2xvc2UoZmFsc2UpO1xuICAgIGRlbGV0ZSBjYW1sX3N5c19mZHNbZmRdO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBNbENoYW5pZFxuZnVuY3Rpb24gTWxDaGFuaWQoaWQpIHtcbiAgdGhpcy5pZCA9IGlkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19vcGVuXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuLy9SZXF1aXJlczogTWxGYWtlRmRfb3V0XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuLy9SZXF1aXJlczogZnNfbm9kZV9zdXBwb3J0ZWRcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2Zkc1xuLy9SZXF1aXJlczogY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZVxuLy9SZXF1aXJlczogTWxDaGFuaWRcbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW5faW50ZXJuYWwoZmlsZSwgaWR4KSB7XG4gIHZhciBjaGFuaWQ7XG4gIGlmIChpZHggPT09IHVuZGVmaW5lZCkge1xuICAgIGlkeCA9IGNhbWxfc3lzX2Zkcy5sZW5ndGg7XG4gICAgY2hhbmlkID0gbmV3IE1sQ2hhbmlkKGlkeCk7XG4gIH0gZWxzZSBpZiAoY2FtbF9zeXNfZmRzW2lkeF0pIHtcbiAgICBjaGFuaWQgPSBjYW1sX3N5c19mZHNbaWR4XS5jaGFuaWQ7XG4gIH0gZWxzZSBjaGFuaWQgPSBuZXcgTWxDaGFuaWQoaWR4KTtcbiAgY2FtbF9zeXNfZmRzW2lkeF0gPSB7IGZpbGU6IGZpbGUsIGNoYW5pZDogY2hhbmlkIH07XG4gIHJldHVybiBpZHggfCAwO1xufVxuZnVuY3Rpb24gY2FtbF9zeXNfb3BlbihuYW1lLCBmbGFncywgcGVybXMpIHtcbiAgdmFyIGYgPSB7fTtcbiAgd2hpbGUgKGZsYWdzKSB7XG4gICAgc3dpdGNoIChmbGFnc1sxXSkge1xuICAgICAgY2FzZSAwOlxuICAgICAgICBmLnJkb25seSA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxOlxuICAgICAgICBmLndyb25seSA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICBmLmFwcGVuZCA9IDE7XG4gICAgICAgIGYud3JpdGVvbmx5ID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM6XG4gICAgICAgIGYuY3JlYXRlID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDQ6XG4gICAgICAgIGYudHJ1bmNhdGUgPSAxO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNTpcbiAgICAgICAgZi5leGNsID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDY6XG4gICAgICAgIGYuYmluYXJ5ID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDc6XG4gICAgICAgIGYudGV4dCA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA4OlxuICAgICAgICBmLm5vbmJsb2NrID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGZsYWdzID0gZmxhZ3NbMl07XG4gIH1cbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIGZpbGUgPSByb290LmRldmljZS5vcGVuKHJvb3QucmVzdCwgZiwgcGVybXMpO1xuICByZXR1cm4gY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChmaWxlLCB1bmRlZmluZWQpO1xufVxuKGZ1bmN0aW9uICgpIHtcbiAgdmFyIGlzX25vZGUgPSBmc19ub2RlX3N1cHBvcnRlZCgpO1xuICBmdW5jdGlvbiBmaWxlKGZkLCBmbGFncykge1xuICAgIGlmIChpc19ub2RlKSB7XG4gICAgICByZXR1cm4gY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZShmZCwgZmxhZ3MpO1xuICAgIH0gZWxzZSByZXR1cm4gbmV3IE1sRmFrZUZkX291dChmZCwgZmxhZ3MpO1xuICB9XG4gIGNhbWxfc3lzX29wZW5faW50ZXJuYWwoXG4gICAgZmlsZSgwLCB7IHJkb25seTogMSwgYWx0bmFtZTogXCIvZGV2L3N0ZGluXCIsIGlzQ2hhcmFjdGVyRGV2aWNlOiB0cnVlIH0pLFxuICAgIDAsXG4gICk7XG4gIGNhbWxfc3lzX29wZW5faW50ZXJuYWwoXG4gICAgZmlsZSgxLCB7IGJ1ZmZlcmVkOiBpc19ub2RlID8gMSA6IDIsIHdyb25seTogMSwgaXNDaGFyYWN0ZXJEZXZpY2U6IHRydWUgfSksXG4gICAgMSxcbiAgKTtcbiAgY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChcbiAgICBmaWxlKDIsIHsgYnVmZmVyZWQ6IGlzX25vZGUgPyAxIDogMiwgd3Jvbmx5OiAxLCBpc0NoYXJhY3RlckRldmljZTogdHJ1ZSB9KSxcbiAgICAyLFxuICApO1xufSkoKTtcblxuLy8gb2NhbWwgQ2hhbm5lbHNcblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX25hbWUoY2hhbmlkLCBuYW1lKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICBjaGFuLm5hbWUgPSBuYW1lO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jaGFubmVsc1xuLy9SZXF1aXJlczogTWxDaGFuaWRcbmNsYXNzIGNhbWxfbWxfY2hhbm5lbHNfc3RhdGUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLm1hcCA9IG5ldyBnbG9iYWxUaGlzLldlYWtNYXAoKTtcbiAgICB0aGlzLm9wZW5lZCA9IG5ldyBnbG9iYWxUaGlzLlNldCgpO1xuICB9XG5cbiAgY2xvc2UoY2hhbmlkKSB7XG4gICAgdGhpcy5vcGVuZWQuZGVsZXRlKGNoYW5pZCk7XG4gIH1cblxuICBnZXQoY2hhbmlkKSB7XG4gICAgcmV0dXJuIHRoaXMubWFwLmdldChjaGFuaWQpO1xuICB9XG5cbiAgc2V0KGNoYW5pZCwgdmFsKSB7XG4gICAgaWYgKHZhbC5vcGVuZWQpIHRoaXMub3BlbmVkLmFkZChjaGFuaWQpO1xuICAgIHJldHVybiB0aGlzLm1hcC5zZXQoY2hhbmlkLCB2YWwpO1xuICB9XG5cbiAgYWxsKCkge1xuICAgIHJldHVybiB0aGlzLm9wZW5lZC52YWx1ZXMoKTtcbiAgfVxufVxuXG52YXIgY2FtbF9tbF9jaGFubmVscyA9IG5ldyBjYW1sX21sX2NoYW5uZWxzX3N0YXRlKCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfY2hhbm5lbF9nZXQoaWQpIHtcbiAgcmV0dXJuIGNhbWxfbWxfY2hhbm5lbHMuZ2V0KGlkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jaGFubmVsX3JlZGlyZWN0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0LCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2NoYW5uZWxfcmVkaXJlY3QoY2FwdHVyZWQsIGludG8pIHtcbiAgdmFyIHRvX3Jlc3RvcmUgPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNhcHR1cmVkKTtcbiAgdmFyIG5ld18gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGludG8pO1xuICBjYW1sX21sX2NoYW5uZWxzLnNldChjYXB0dXJlZCwgbmV3Xyk7XG4gIHJldHVybiB0b19yZXN0b3JlO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NoYW5uZWxfcmVzdG9yZVxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9jaGFubmVsX3Jlc3RvcmUoY2FwdHVyZWQsIHRvX3Jlc3RvcmUpIHtcbiAgY2FtbF9tbF9jaGFubmVscy5zZXQoY2FwdHVyZWQsIHRvX3Jlc3RvcmUpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRfY2hhbm5lbHNfbGlzdFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9tbF9vdXRfY2hhbm5lbHNfbGlzdCgpIHtcbiAgdmFyIGwgPSAwO1xuICB2YXIga2V5cyA9IGNhbWxfbWxfY2hhbm5lbHMuYWxsKCk7XG4gIGZvciAodmFyIGsgb2Yga2V5cykge1xuICAgIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChrKTtcbiAgICBpZiAoY2hhbi5vcGVuZWQgJiYgY2hhbi5vdXQpIGwgPSBbMCwgaywgbF07XG4gIH1cbiAgcmV0dXJuIGw7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9zeXNfZmRzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuLy9SZXF1aXJlczogY2FtbF9zeXNfb3BlblxuLy9SZXF1aXJlczogY2FtbF9pb19idWZmZXJfc2l6ZVxuZnVuY3Rpb24gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0KGZkKSB7XG4gIHZhciBmZF9kZXNjID0gY2FtbF9zeXNfZmRzW2ZkXTtcbiAgaWYgKGZkX2Rlc2MgPT09IHVuZGVmaW5lZClcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihcImZkIFwiICsgZmQgKyBcIiBkb2Vzbid0IGV4aXN0XCIpO1xuICB2YXIgZmlsZSA9IGZkX2Rlc2MuZmlsZTtcbiAgdmFyIGNoYW5pZCA9IGZkX2Rlc2MuY2hhbmlkO1xuICB2YXIgYnVmZmVyZWQgPSBmaWxlLmZsYWdzLmJ1ZmZlcmVkICE9PSB1bmRlZmluZWQgPyBmaWxlLmZsYWdzLmJ1ZmZlcmVkIDogMTtcbiAgdmFyIGNoYW5uZWwgPSB7XG4gICAgZmlsZTogZmlsZSxcbiAgICBvZmZzZXQ6IGZpbGUucG9zKCksXG4gICAgZmQ6IGZkLFxuICAgIG9wZW5lZDogdHJ1ZSxcbiAgICBvdXQ6IHRydWUsXG4gICAgYnVmZmVyX2N1cnI6IDAsXG4gICAgYnVmZmVyOiBuZXcgVWludDhBcnJheShjYW1sX2lvX2J1ZmZlcl9zaXplKSxcbiAgICBidWZmZXJlZDogYnVmZmVyZWQsXG4gIH07XG4gIGNhbWxfbWxfY2hhbm5lbHMuc2V0KGNoYW5pZCwgY2hhbm5lbCk7XG4gIHJldHVybiBjaGFuaWQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX3N5c19mZHNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19vcGVuXG4vL1JlcXVpcmVzOiBjYW1sX2lvX2J1ZmZlcl9zaXplXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbihmZCkge1xuICB2YXIgZmRfZGVzYyA9IGNhbWxfc3lzX2Zkc1tmZF07XG4gIGlmIChmZF9kZXNjID09PSB1bmRlZmluZWQpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJmZCBcIiArIGZkICsgXCIgZG9lc24ndCBleGlzdFwiKTtcbiAgdmFyIGZpbGUgPSBmZF9kZXNjLmZpbGU7XG4gIHZhciBjaGFuaWQgPSBmZF9kZXNjLmNoYW5pZDtcbiAgdmFyIHJlZmlsbCA9IG51bGw7XG4gIHZhciBjaGFubmVsID0ge1xuICAgIGZpbGU6IGZpbGUsXG4gICAgb2Zmc2V0OiBmaWxlLnBvcygpLFxuICAgIGZkOiBmZCxcbiAgICBvcGVuZWQ6IHRydWUsXG4gICAgb3V0OiBmYWxzZSxcbiAgICBidWZmZXJfY3VycjogMCxcbiAgICBidWZmZXJfbWF4OiAwLFxuICAgIGJ1ZmZlcjogbmV3IFVpbnQ4QXJyYXkoY2FtbF9pb19idWZmZXJfc2l6ZSksXG4gICAgcmVmaWxsOiByZWZpbGwsXG4gIH07XG4gIGNhbWxfbWxfY2hhbm5lbHMuc2V0KGNoYW5pZCwgY2hhbm5lbCk7XG4gIHJldHVybiBjaGFuaWQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luX3dpdGhfZmxhZ3Ncbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luXG4vL1ZlcnNpb246ID49IDUuMVxuZnVuY3Rpb24gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5fd2l0aF9mbGFncyhmZCwgX2ZsYWdzKSB7XG4gIHJldHVybiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbihmZCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dF93aXRoX2ZsYWdzXG4vL1JlcXVpcmVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRcbi8vVmVyc2lvbjogPj0gNS4xXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRfd2l0aF9mbGFncyhmZCwgX2ZsYWdzKSB7XG4gIHJldHVybiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQoZmQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NoYW5uZWxfZGVzY3JpcHRvclxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuLy9BbGlhczogd2luX2ZpbGVkZXNjcl9vZl9jaGFubmVsXG5mdW5jdGlvbiBjYW1sX2NoYW5uZWxfZGVzY3JpcHRvcihjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHJldHVybiBjaGFuLmZkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9iaW5hcnlfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9tbF9zZXRfYmluYXJ5X21vZGUoY2hhbmlkLCBtb2RlKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICBjaGFuLmZpbGUuZmxhZ3MudGV4dCA9ICFtb2RlO1xuICBjaGFuLmZpbGUuZmxhZ3MuYmluYXJ5ID0gbW9kZTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaXNfYmluYXJ5X21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXRcbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBjYW1sX21sX2lzX2JpbmFyeV9tb2RlKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgcmV0dXJuIGNoYW4uZmlsZS5mbGFncy5iaW5hcnk7XG59XG5cbi8vSW5wdXQgZnJvbSBpbl9jaGFubmVsXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2xvc2VfY2hhbm5lbFxuLy9SZXF1aXJlczogY2FtbF9tbF9mbHVzaCwgY2FtbF9tbF9jaGFubmVsX2dldFxuLy9SZXF1aXJlczogY2FtbF9zeXNfY2xvc2Vcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfY2xvc2VfY2hhbm5lbChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIGlmIChjaGFuLm9wZW5lZCkge1xuICAgIGNoYW4ub3BlbmVkID0gZmFsc2U7XG4gICAgY2FtbF9tbF9jaGFubmVscy5jbG9zZShjaGFuaWQpO1xuICAgIGNhbWxfc3lzX2Nsb3NlKGNoYW4uZmQpO1xuICAgIGNoYW4uZmQgPSAtMTtcbiAgICBjaGFuLmJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KDApO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX2NoYW5uZWxfc2l6ZShjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHJldHVybiBjaGFuLmZpbGUubGVuZ3RoKCkgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NoYW5uZWxfc2l6ZV82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9mbG9hdCxjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX2NoYW5uZWxfc2l6ZV82NChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2Zsb2F0KGNoYW4uZmlsZS5sZW5ndGgoKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX291dHB1dChjaGFuaWQsIGYpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIGNoYW4ub3V0cHV0ID0gZnVuY3Rpb24gKHMpIHtcbiAgICBmKHMpO1xuICB9O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGxcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXRcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsKGNoYW5pZCwgZikge1xuICBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCkucmVmaWxsID0gZjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVmaWxsXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gY2FtbF9yZWZpbGwoY2hhbikge1xuICBpZiAoY2hhbi5yZWZpbGwgIT0gbnVsbCkge1xuICAgIHZhciBzdHIgPSBjaGFuLnJlZmlsbCgpO1xuICAgIHZhciBzdHJfYSA9IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nKHN0cik7XG4gICAgaWYgKHN0cl9hLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY2hhbi5yZWZpbGwgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY2hhbi5idWZmZXIubGVuZ3RoIDwgY2hhbi5idWZmZXJfbWF4ICsgc3RyX2EubGVuZ3RoKSB7XG4gICAgICAgIHZhciBiID0gbmV3IFVpbnQ4QXJyYXkoY2hhbi5idWZmZXJfbWF4ICsgc3RyX2EubGVuZ3RoKTtcbiAgICAgICAgYi5zZXQoY2hhbi5idWZmZXIpO1xuICAgICAgICBjaGFuLmJ1ZmZlciA9IGI7XG4gICAgICB9XG4gICAgICBjaGFuLmJ1ZmZlci5zZXQoc3RyX2EsIGNoYW4uYnVmZmVyX21heCk7XG4gICAgICBjaGFuLm9mZnNldCArPSBzdHJfYS5sZW5ndGg7XG4gICAgICBjaGFuLmJ1ZmZlcl9tYXggKz0gc3RyX2EubGVuZ3RoO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoY2hhbi5mZCA9PT0gLTEpIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiQmFkIGZpbGUgZGVzY3JpcHRvclwiKTtcbiAgICB9XG4gICAgdmFyIG5yZWFkID0gY2hhbi5maWxlLnJlYWQoXG4gICAgICBjaGFuLmJ1ZmZlcixcbiAgICAgIGNoYW4uYnVmZmVyX21heCxcbiAgICAgIGNoYW4uYnVmZmVyLmxlbmd0aCAtIGNoYW4uYnVmZmVyX21heCxcbiAgICAgIGZhbHNlLFxuICAgICk7XG4gICAgY2hhbi5vZmZzZXQgKz0gbnJlYWQ7XG4gICAgY2hhbi5idWZmZXJfbWF4ICs9IG5yZWFkO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfaW5wdXRfYmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXQoY2hhbmlkLCBiLCBpLCBsKSB7XG4gIHZhciBiYSA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoYik7XG4gIHJldHVybiBjYW1sX21sX2lucHV0X2Jsb2NrKGNoYW5pZCwgYmEsIGksIGwpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2JpZ2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX21sX2lucHV0X2Jsb2NrXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5XG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9iaWdhcnJheShjaGFuaWQsIGIsIGksIGwpIHtcbiAgdmFyIGJhID0gY2FtbF9iYV90b190eXBlZF9hcnJheShiKTtcbiAgcmV0dXJuIGNhbWxfbWxfaW5wdXRfYmxvY2soY2hhbmlkLCBiYSwgaSwgbCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfYmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfcmVmaWxsLCBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2Jsb2NrKGNoYW5pZCwgYmEsIGksIGwpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHZhciBuID0gbDtcbiAgdmFyIGF2YWlsID0gY2hhbi5idWZmZXJfbWF4IC0gY2hhbi5idWZmZXJfY3VycjtcbiAgaWYgKGwgPD0gYXZhaWwpIHtcbiAgICBiYS5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VyciwgY2hhbi5idWZmZXJfY3VyciArIGwpLCBpKTtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGw7XG4gIH0gZWxzZSBpZiAoYXZhaWwgPiAwKSB7XG4gICAgYmEuc2V0KGNoYW4uYnVmZmVyLnN1YmFycmF5KGNoYW4uYnVmZmVyX2N1cnIsIGNoYW4uYnVmZmVyX2N1cnIgKyBhdmFpbCksIGkpO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gYXZhaWw7XG4gICAgbiA9IGF2YWlsO1xuICB9IGVsc2Uge1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gICAgY2FtbF9yZWZpbGwoY2hhbik7XG4gICAgdmFyIGF2YWlsID0gY2hhbi5idWZmZXJfbWF4IC0gY2hhbi5idWZmZXJfY3VycjtcbiAgICBpZiAobiA+IGF2YWlsKSBuID0gYXZhaWw7XG4gICAgYmEuc2V0KGNoYW4uYnVmZmVyLnN1YmFycmF5KGNoYW4uYnVmZmVyX2N1cnIsIGNoYW4uYnVmZmVyX2N1cnIgKyBuKSwgaSk7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBuO1xuICB9XG4gIHJldHVybiBuIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSwgY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzLCBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9tbF9jaGFubmVsX2dldCwgY2FtbF9ieXRlc19vZl91aW50OF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9yZWZpbGwsIGNhbWxfZmFpbHdpdGgsIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZVxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZShjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHZhciBoZWFkZXIgPSBuZXcgVWludDhBcnJheShjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUpO1xuICBmdW5jdGlvbiBibG9jayhidWZmZXIsIG9mZnNldCwgbikge1xuICAgIHZhciByID0gMDtcbiAgICB3aGlsZSAociA8IG4pIHtcbiAgICAgIGlmIChjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyX21heCkge1xuICAgICAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICAgICAgY2hhbi5idWZmZXJfbWF4ID0gMDtcbiAgICAgICAgY2FtbF9yZWZpbGwoY2hhbik7XG4gICAgICB9XG4gICAgICBpZiAoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlcl9tYXgpIGJyZWFrO1xuICAgICAgYnVmZmVyW29mZnNldCArIHJdID0gY2hhbi5idWZmZXJbY2hhbi5idWZmZXJfY3Vycl07XG4gICAgICBjaGFuLmJ1ZmZlcl9jdXJyKys7XG4gICAgICByKys7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG4gIHZhciByID0gYmxvY2soaGVhZGVyLCAwLCBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUpO1xuICBpZiAociA9PT0gMCkgY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSgpO1xuICBlbHNlIGlmIChyIDwgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogdHJ1bmNhdGVkIG9iamVjdFwiKTtcbiAgdmFyIGxlbiA9IGNhbWxfbWFyc2hhbF9kYXRhX3NpemUoY2FtbF9ieXRlc19vZl91aW50OF9hcnJheShoZWFkZXIpLCAwKTtcbiAgdmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGxlbiArIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSk7XG4gIGJ1Zi5zZXQoaGVhZGVyLCAwKTtcbiAgdmFyIHIgPSBibG9jayhidWYsIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSwgbGVuKTtcbiAgaWYgKHIgPCBsZW4pIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogdHJ1bmNhdGVkIG9iamVjdCBcIiArIHIgKyBcIiAgXCIgKyBsZW4pO1xuICB2YXIgcmVzID0gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzKGNhbWxfYnl0ZXNfb2ZfdWludDhfYXJyYXkoYnVmKSwgMCk7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVfdG9fb3V0c2lkZV9oZWFwXG4vL1JlcXVpcmVzOiBjYW1sX2lucHV0X3ZhbHVlXG4vL1ZlcnNpb246ID49IDVcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWVfdG9fb3V0c2lkZV9oZWFwKGMpIHtcbiAgcmV0dXJuIGNhbWxfaW5wdXRfdmFsdWUoYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfY2hhclxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldCwgY2FtbF9yZWZpbGxcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXRfY2hhcihjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIGlmIChjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyX21heCkge1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gICAgY2FtbF9yZWZpbGwoY2hhbik7XG4gIH1cbiAgaWYgKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXJfbWF4KSBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gIHZhciByZXMgPSBjaGFuLmJ1ZmZlcltjaGFuLmJ1ZmZlcl9jdXJyXTtcbiAgY2hhbi5idWZmZXJfY3VycisrO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2ludFxuLy9SZXF1aXJlczogY2FtbF9tbF9pbnB1dF9jaGFyXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2ludChjaGFuaWQpIHtcbiAgdmFyIHJlcyA9IDA7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgcmVzID0gKChyZXMgPDwgOCkgKyBjYW1sX21sX2lucHV0X2NoYXIoY2hhbmlkKSkgfCAwO1xuICB9XG4gIHJldHVybiByZXMgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NlZWtfaW5cbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX3NlZWtfaW4oY2hhbmlkLCBwb3MpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIGlmIChjaGFuLnJlZmlsbCAhPSBudWxsKSBjYW1sX3JhaXNlX3N5c19lcnJvcihcIklsbGVnYWwgc2Vla1wiKTtcbiAgaWYgKFxuICAgIHBvcyA+PSBjaGFuLm9mZnNldCAtIGNoYW4uYnVmZmVyX21heCAmJlxuICAgIHBvcyA8PSBjaGFuLm9mZnNldCAmJlxuICAgIGNoYW4uZmlsZS5mbGFncy5iaW5hcnlcbiAgKSB7XG4gICAgY2hhbi5idWZmZXJfY3VyciA9IGNoYW4uYnVmZmVyX21heCAtIChjaGFuLm9mZnNldCAtIHBvcyk7XG4gIH0gZWxzZSB7XG4gICAgY2hhbi5maWxlLnNlZWsocG9zLCAwKTtcbiAgICBjaGFuLm9mZnNldCA9IHBvcztcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICBjaGFuLmJ1ZmZlcl9tYXggPSAwO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NlZWtfaW5cbi8vUmVxdWlyZXM6IGNhbWxfc2Vla19pblxuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX2luKGNoYW5pZCwgcG9zKSB7XG4gIHJldHVybiBjYW1sX3NlZWtfaW4oY2hhbmlkLCBwb3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NlZWtfaW5fNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fZmxvYXQsIGNhbWxfc2Vla19pblxuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX2luXzY0KGNoYW5pZCwgcG9zKSB7XG4gIHZhciBwb3MgPSBjYW1sX2ludDY0X3RvX2Zsb2F0KHBvcyk7XG4gIHJldHVybiBjYW1sX3NlZWtfaW4oY2hhbmlkLCBwb3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3Bvc19pblxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9wb3NfaW4oY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICByZXR1cm4gY2hhbi5vZmZzZXQgLSAoY2hhbi5idWZmZXJfbWF4IC0gY2hhbi5idWZmZXJfY3Vycik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX2luXG4vL1JlcXVpcmVzOiBjYW1sX3Bvc19pblxuZnVuY3Rpb24gY2FtbF9tbF9wb3NfaW4oY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX3Bvc19pbihjaGFuaWQpIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3NfaW5fNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQsIGNhbWxfcG9zX2luXG5mdW5jdGlvbiBjYW1sX21sX3Bvc19pbl82NChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQoY2FtbF9wb3NfaW4oY2hhbmlkKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0LCBjYW1sX3JlZmlsbFxuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmUoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICB2YXIgcCA9IGNoYW4uYnVmZmVyX2N1cnI7XG4gIGRvIHtcbiAgICBpZiAocCA+PSBjaGFuLmJ1ZmZlcl9tYXgpIHtcbiAgICAgIGlmIChjaGFuLmJ1ZmZlcl9jdXJyID4gMCkge1xuICAgICAgICBjaGFuLmJ1ZmZlci5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VyciksIDApO1xuICAgICAgICBwIC09IGNoYW4uYnVmZmVyX2N1cnI7XG4gICAgICAgIGNoYW4uYnVmZmVyX21heCAtPSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICAgICAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICAgIH1cbiAgICAgIGlmIChjaGFuLmJ1ZmZlcl9tYXggPj0gY2hhbi5idWZmZXIubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiAtY2hhbi5idWZmZXJfbWF4IHwgMDtcbiAgICAgIH1cbiAgICAgIHZhciBwcmV2X21heCA9IGNoYW4uYnVmZmVyX21heDtcbiAgICAgIGNhbWxfcmVmaWxsKGNoYW4pO1xuICAgICAgaWYgKHByZXZfbWF4ID09PSBjaGFuLmJ1ZmZlcl9tYXgpIHtcbiAgICAgICAgcmV0dXJuIC1jaGFuLmJ1ZmZlcl9tYXggfCAwO1xuICAgICAgfVxuICAgIH1cbiAgfSB3aGlsZSAoY2hhbi5idWZmZXJbcCsrXSAhPT0gMTApO1xuICByZXR1cm4gKHAgLSBjaGFuLmJ1ZmZlcl9jdXJyKSB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZmx1c2hcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX3N1Yl91aW50OF9hcnJheV90b19qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX21sX2ZsdXNoKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgaWYgKCFjaGFuLm9wZW5lZCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJDYW5ub3QgZmx1c2ggYSBjbG9zZWQgY2hhbm5lbFwiKTtcbiAgaWYgKCFjaGFuLmJ1ZmZlciB8fCBjaGFuLmJ1ZmZlcl9jdXJyID09PSAwKSByZXR1cm4gMDtcbiAgaWYgKGNoYW4ub3V0cHV0KSB7XG4gICAgY2hhbi5vdXRwdXQoXG4gICAgICBjYW1sX3N1Yl91aW50OF9hcnJheV90b19qc2J5dGVzKGNoYW4uYnVmZmVyLCAwLCBjaGFuLmJ1ZmZlcl9jdXJyKSxcbiAgICApO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIHBvcyA9IDA7IHBvcyA8IGNoYW4uYnVmZmVyX2N1cnI7ICkge1xuICAgICAgcG9zICs9IGNoYW4uZmlsZS53cml0ZShjaGFuLmJ1ZmZlciwgcG9zLCBjaGFuLmJ1ZmZlcl9jdXJyIC0gcG9zLCBmYWxzZSk7XG4gICAgfVxuICB9XG4gIGNoYW4ub2Zmc2V0ICs9IGNoYW4uYnVmZmVyX2N1cnI7XG4gIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICByZXR1cm4gMDtcbn1cblxuLy9vdXRwdXQgdG8gb3V0X2NoYW5uZWxcblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfdGFcbi8vUmVxdWlyZXM6IGNhbWxfbWxfZmx1c2gsY2FtbF9tbF9ieXRlc19sZW5ndGhcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF90YShjaGFuaWQsIGJ1ZmZlciwgb2Zmc2V0LCBsZW4pIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIGlmICghY2hhbi5vcGVuZWQpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiQ2Fubm90IG91dHB1dCB0byBhIGNsb3NlZCBjaGFubmVsXCIpO1xuICBidWZmZXIgPSBidWZmZXIuc3ViYXJyYXkob2Zmc2V0LCBvZmZzZXQgKyBsZW4pO1xuICBpZiAoY2hhbi5idWZmZXJfY3VyciArIGJ1ZmZlci5sZW5ndGggPiBjaGFuLmJ1ZmZlci5sZW5ndGgpIHtcbiAgICB2YXIgYiA9IG5ldyBVaW50OEFycmF5KGNoYW4uYnVmZmVyX2N1cnIgKyBidWZmZXIubGVuZ3RoKTtcbiAgICBiLnNldChjaGFuLmJ1ZmZlcik7XG4gICAgY2hhbi5idWZmZXIgPSBiO1xuICB9XG4gIHN3aXRjaCAoY2hhbi5idWZmZXJlZCkge1xuICAgIGNhc2UgMDogLy8gVW5idWZmZXJlZFxuICAgICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlciwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGJ1ZmZlci5sZW5ndGg7XG4gICAgICBjYW1sX21sX2ZsdXNoKGNoYW5pZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDE6IC8vIEJ1ZmZlcmVkICh0aGUgZGVmYXVsdClcbiAgICAgIGNoYW4uYnVmZmVyLnNldChidWZmZXIsIGNoYW4uYnVmZmVyX2N1cnIpO1xuICAgICAgY2hhbi5idWZmZXJfY3VyciArPSBidWZmZXIubGVuZ3RoO1xuICAgICAgaWYgKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXIubGVuZ3RoKSBjYW1sX21sX2ZsdXNoKGNoYW5pZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDI6IC8vIEJ1ZmZlcmVkIChvbmx5IGZvciBzdGRvdXQgYW5kIHN0ZGVycilcbiAgICAgIHZhciBpZCA9IGJ1ZmZlci5sYXN0SW5kZXhPZigxMCk7XG4gICAgICBpZiAoaWQgPCAwKSB7XG4gICAgICAgIGNoYW4uYnVmZmVyLnNldChidWZmZXIsIGNoYW4uYnVmZmVyX2N1cnIpO1xuICAgICAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGJ1ZmZlci5sZW5ndGg7XG4gICAgICAgIGlmIChjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyLmxlbmd0aCkgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlci5zdWJhcnJheSgwLCBpZCArIDEpLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICAgICAgY2hhbi5idWZmZXJfY3VyciArPSBpZCArIDE7XG4gICAgICAgIGNhbWxfbWxfZmx1c2goY2hhbmlkKTtcbiAgICAgICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlci5zdWJhcnJheShpZCArIDEpLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICAgICAgY2hhbi5idWZmZXJfY3VyciArPSBidWZmZXIubGVuZ3RoIC0gaWQgLSAxO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzLCBjYW1sX21sX291dHB1dF90YVxuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfYnl0ZXMoY2hhbmlkLCBidWZmZXIsIG9mZnNldCwgbGVuKSB7XG4gIHZhciBidWZmZXIgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGJ1ZmZlcik7XG4gIHJldHVybiBjYW1sX21sX291dHB1dF90YShjaGFuaWQsIGJ1ZmZlciwgb2Zmc2V0LCBsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF9iaWdhcnJheVxuLy9SZXF1aXJlczogY2FtbF9iYV90b190eXBlZF9hcnJheSwgY2FtbF9tbF9vdXRwdXRfdGFcbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF9iaWdhcnJheShjaGFuaWQsIGJ1ZmZlciwgb2Zmc2V0LCBsZW4pIHtcbiAgdmFyIGJ1ZmZlciA9IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkoYnVmZmVyKTtcbiAgcmV0dXJuIGNhbWxfbWxfb3V0cHV0X3RhKGNoYW5pZCwgYnVmZmVyLCBvZmZzZXQsIGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dF9ieXRlcywgY2FtbF9ieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCwgYnVmZmVyLCBvZmZzZXQsIGxlbikge1xuICByZXR1cm4gY2FtbF9tbF9vdXRwdXRfYnl0ZXMoXG4gICAgY2hhbmlkLFxuICAgIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGJ1ZmZlciksXG4gICAgb2Zmc2V0LFxuICAgIGxlbixcbiAgKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfY2hhclxuLy9SZXF1aXJlczogY2FtbF9tbF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X2NoYXIoY2hhbmlkLCBjKSB7XG4gIHZhciBzID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTtcbiAgY2FtbF9tbF9vdXRwdXQoY2hhbmlkLCBzLCAwLCAxKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlXG4vL1JlcXVpcmVzOiBjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmcsIGNhbWxfbWxfb3V0cHV0LGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9vdXRwdXRfdmFsdWUoY2hhbmlkLCB2LCBmbGFncykge1xuICB2YXIgcyA9IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyh2LCBmbGFncyk7XG4gIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCwgcywgMCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2Vla19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXQsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfc2Vla19vdXQoY2hhbmlkLCBwb3MpIHtcbiAgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgY2hhbi5maWxlLnNlZWsocG9zLCAwKTtcbiAgY2hhbi5vZmZzZXQgPSBwb3M7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NlZWtfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX3NlZWtfb3V0XG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfb3V0KGNoYW5pZCwgcG9zKSB7XG4gIHJldHVybiBjYW1sX3NlZWtfb3V0KGNoYW5pZCwgcG9zKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19vdXRfNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fZmxvYXQsIGNhbWxfc2Vla19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19vdXRfNjQoY2hhbmlkLCBwb3MpIHtcbiAgdmFyIHBvcyA9IGNhbWxfaW50NjRfdG9fZmxvYXQocG9zKTtcbiAgcmV0dXJuIGNhbWxfc2Vla19vdXQoY2hhbmlkLCBwb3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3Bvc19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXQsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfcG9zX291dChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHJldHVybiBjaGFuLm9mZnNldCArIGNoYW4uYnVmZmVyX2N1cnI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX291dFxuLy9SZXF1aXJlczogY2FtbF9wb3Nfb3V0XG5mdW5jdGlvbiBjYW1sX21sX3Bvc19vdXQoY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX3Bvc19vdXQoY2hhbmlkKSB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX291dF82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9mbG9hdCwgY2FtbF9wb3Nfb3V0XG5mdW5jdGlvbiBjYW1sX21sX3Bvc19vdXRfNjQoY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2Zsb2F0KGNhbWxfcG9zX291dChjaGFuaWQpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfaW50XG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dF90YVxuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfaW50KGNoYW5pZCwgaSkge1xuICB2YXIgYXJyID0gWyhpID4+IDI0KSAmIDB4ZmYsIChpID4+IDE2KSAmIDB4ZmYsIChpID4+IDgpICYgMHhmZiwgaSAmIDB4ZmZdO1xuICBjYW1sX21sX291dHB1dF90YShjaGFuaWQsIG5ldyBVaW50OEFycmF5KGFyciksIDAsIDQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pc19idWZmZXJlZFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9tbF9pc19idWZmZXJlZChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKS5idWZmZXJlZCA/IDEgOiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9idWZmZXJlZFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldCwgY2FtbF9tbF9mbHVzaFxuZnVuY3Rpb24gY2FtbF9tbF9zZXRfYnVmZmVyZWQoY2hhbmlkLCB2KSB7XG4gIGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKS5idWZmZXJlZCA9IHY7XG4gIGlmICghdikgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICByZXR1cm4gMDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gU3lzXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcsIGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3N5c19lcnJvcihtc2cpIHtcbiAgY2FtbF9yYWlzZV93aXRoX2FyZyhjYW1sX2dsb2JhbF9kYXRhLlN5c19lcnJvciwgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcobXNnKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2V4aXRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9BbGlhczogY2FtbF91bml4X2V4aXRcbi8vQWxpYXM6IHVuaXhfZXhpdFxuZnVuY3Rpb24gY2FtbF9zeXNfZXhpdChjb2RlKSB7XG4gIGlmIChnbG9iYWxUaGlzLnF1aXQpIGdsb2JhbFRoaXMucXVpdChjb2RlKTtcbiAgLy9ub2RlanNcbiAgaWYgKGdsb2JhbFRoaXMucHJvY2Vzcz8uZXhpdCkgZ2xvYmFsVGhpcy5wcm9jZXNzLmV4aXQoY29kZSk7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkZ1bmN0aW9uICdleGl0JyBub3QgaW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24oZXhuKSB7XG4gIHN3aXRjaCAoZXhuWzJdKSB7XG4gICAgY2FzZSAtODogLy8gTWF0Y2hfZmFpbHVyZVxuICAgIGNhc2UgLTExOiAvLyBBc3NlcnRfZmFpbHVyZVxuICAgIGNhc2UgLTEyOiAvLyBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZVxuICAgICAgcmV0dXJuIDE7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAwO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZm9ybWF0X2V4Y2VwdGlvblxuLy9SZXF1aXJlczogTWxCeXRlcywgY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9mb3JtYXRfZXhjZXB0aW9uKGV4bikge1xuICB2YXIgciA9IFwiXCI7XG4gIGlmIChleG5bMF0gPT09IDApIHtcbiAgICByICs9IGV4blsxXVsxXTtcbiAgICBpZiAoXG4gICAgICBleG4ubGVuZ3RoID09PSAzICYmXG4gICAgICBleG5bMl1bMF0gPT09IDAgJiZcbiAgICAgIGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24oZXhuWzFdKVxuICAgICkge1xuICAgICAgdmFyIGJ1Y2tldCA9IGV4blsyXTtcbiAgICAgIHZhciBzdGFydCA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBzdGFydCA9IDI7XG4gICAgICB2YXIgYnVja2V0ID0gZXhuO1xuICAgIH1cbiAgICByICs9IFwiKFwiO1xuICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGJ1Y2tldC5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGkgPiBzdGFydCkgciArPSBcIiwgXCI7XG4gICAgICB2YXIgdiA9IGJ1Y2tldFtpXTtcbiAgICAgIGlmICh0eXBlb2YgdiA9PT0gXCJudW1iZXJcIikgciArPSB2LnRvU3RyaW5nKCk7XG4gICAgICBlbHNlIGlmICh2IGluc3RhbmNlb2YgTWxCeXRlcykge1xuICAgICAgICByICs9ICdcIicgKyB2LnRvU3RyaW5nKCkgKyAnXCInO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICByICs9ICdcIicgKyB2LnRvU3RyaW5nKCkgKyAnXCInO1xuICAgICAgfSBlbHNlIHIgKz0gXCJfXCI7XG4gICAgfVxuICAgIHIgKz0gXCIpXCI7XG4gIH0gZWxzZSBpZiAoZXhuWzBdID09PSAyNDgpIHtcbiAgICByICs9IGV4blsxXTtcbiAgfVxuICByZXR1cm4gcjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25cbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfZm9ybWF0X2V4Y2VwdGlvbiwgY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24oZXJyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGVycikgJiYgKGVyclswXSA9PT0gMCB8fCBlcnJbMF0gPT09IDI0OCkpIHtcbiAgICB2YXIgaGFuZGxlciA9IGNhbWxfbmFtZWRfdmFsdWUoXCJQcmludGV4Yy5oYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uXCIpO1xuICAgIGlmIChoYW5kbGVyKSBjYW1sX2NhbGxiYWNrKGhhbmRsZXIsIFtlcnIsIGZhbHNlXSk7XG4gICAgZWxzZSB7XG4gICAgICB2YXIgbXNnID0gY2FtbF9mb3JtYXRfZXhjZXB0aW9uKGVycik7XG4gICAgICB2YXIgYXRfZXhpdCA9IGNhbWxfbmFtZWRfdmFsdWUoXCJQZXJ2YXNpdmVzLmRvX2F0X2V4aXRcIik7XG4gICAgICBpZiAoYXRfZXhpdCkgY2FtbF9jYWxsYmFjayhhdF9leGl0LCBbMF0pO1xuICAgICAgY29uc29sZS5lcnJvcihcIkZhdGFsIGVycm9yOiBleGNlcHRpb24gXCIgKyBtc2cpO1xuICAgICAgaWYgKGVyci5qc19lcnJvcikgdGhyb3cgZXJyLmpzX2Vycm9yO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBlcnI7XG4gIH1cbn1cblxuLy9Qcm92aWRlczoganNvb19zdGF0aWNfZW52XG52YXIganNvb19zdGF0aWNfZW52ID0ge307XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2V0X3N0YXRpY19lbnZcbi8vUmVxdWlyZXM6IGpzb29fc3RhdGljX2VudlxuZnVuY3Rpb24gY2FtbF9zZXRfc3RhdGljX2VudihrLCB2KSB7XG4gIGpzb29fc3RhdGljX2VudltrXSA9IHY7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX3N5c19nZXRlbnYgKGNvbnN0KVxuLy9SZXF1aXJlczoganNvb19zdGF0aWNfZW52XG5mdW5jdGlvbiBqc29vX3N5c19nZXRlbnYobikge1xuICBpZiAoanNvb19zdGF0aWNfZW52W25dKSByZXR1cm4ganNvb19zdGF0aWNfZW52W25dO1xuICB2YXIgcHJvY2VzcyA9IGdsb2JhbFRoaXMucHJvY2VzcztcbiAgLy9ub2RlanMgZW52XG4gIGlmIChwcm9jZXNzICYmIHByb2Nlc3MuZW52ICYmIHByb2Nlc3MuZW52W25dICE9PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIHByb2Nlc3MuZW52W25dO1xuICBpZiAoZ2xvYmFsVGhpcy5qc29vX2VudiAmJiB0eXBlb2YgZ2xvYmFsVGhpcy5qc29vX2VudltuXSA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiBnbG9iYWxUaGlzLmpzb29fZW52W25dO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldGVudiAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vdF9mb3VuZFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBqc29vX3N5c19nZXRlbnZcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldGVudihuYW1lKSB7XG4gIHZhciByID0ganNvb19zeXNfZ2V0ZW52KGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWUpKTtcbiAgaWYgKHIgPT09IHVuZGVmaW5lZCkgY2FtbF9yYWlzZV9ub3RfZm91bmQoKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRlbnZfb3B0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9SZXF1aXJlczoganNvb19zeXNfZ2V0ZW52XG4vL1ZlcnNpb246ID49IDUuNFxuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0ZW52X29wdChuYW1lKSB7XG4gIHZhciByID0ganNvb19zeXNfZ2V0ZW52KGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWUpKTtcbiAgaWYgKHIgPT09IHVuZGVmaW5lZCkgcmV0dXJuIDA7XG4gIHJldHVybiBbMCwgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocildO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c191bnNhZmVfZ2V0ZW52XG4vL1JlcXVpcmVzOiBjYW1sX3N5c19nZXRlbnZcbmZ1bmN0aW9uIGNhbWxfc3lzX3Vuc2FmZV9nZXRlbnYobmFtZSkge1xuICByZXR1cm4gY2FtbF9zeXNfZ2V0ZW52KG5hbWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG52YXIgY2FtbF9hcmd2ID0gKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHByb2Nlc3MgPSBnbG9iYWxUaGlzLnByb2Nlc3M7XG4gIHZhciBtYWluID0gXCJhLm91dFwiO1xuICB2YXIgYXJncyA9IFtdO1xuXG4gIGlmIChwcm9jZXNzPy5hcmd2Py5sZW5ndGggPiAxKSB7XG4gICAgdmFyIGFyZ3YgPSBwcm9jZXNzLmFyZ3Y7XG4gICAgLy9ub2RlanNcbiAgICBtYWluID0gYXJndlsxXTtcbiAgICBhcmdzID0gYXJndi5zbGljZSgyKTtcbiAgfVxuXG4gIHZhciBwID0gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcobWFpbik7XG4gIHZhciBhcmdzMiA9IFswLCBwXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKVxuICAgIGFyZ3MyLnB1c2goY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoYXJnc1tpXSkpO1xuICByZXR1cm4gYXJnczI7XG59KSgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2V4ZWN1dGFibGVfbmFtZVxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG52YXIgY2FtbF9leGVjdXRhYmxlX25hbWUgPSBjYW1sX2FyZ3ZbMV07XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldF9hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldF9hcmd2KF91bml0KSB7XG4gIHJldHVybiBbMCwgY2FtbF9hcmd2WzFdLCBjYW1sX2FyZ3ZdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbmZ1bmN0aW9uIGNhbWxfc3lzX2FyZ3YoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfYXJndjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfbW9kaWZ5X2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxuZnVuY3Rpb24gY2FtbF9zeXNfbW9kaWZ5X2FyZ3YoYXJnKSB7XG4gIGNhbWxfYXJndiA9IGFyZztcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZSBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9leGVjdXRhYmxlX25hbWVcbmZ1bmN0aW9uIGNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZShfdW5pdCkge1xuICByZXR1cm4gY2FtbF9leGVjdXRhYmxlX25hbWU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmQoY21kKSB7XG4gIHZhciBjbWQgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhjbWQpO1xuICBpZiAodHlwZW9mIHJlcXVpcmUgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICB2YXIgY2hpbGRfcHJvY2VzcyA9IHJlcXVpcmUoXCJub2RlOmNoaWxkX3Byb2Nlc3NcIik7XG4gICAgaWYgKGNoaWxkX3Byb2Nlc3M/LmV4ZWNTeW5jKVxuICAgICAgdHJ5IHtcbiAgICAgICAgY2hpbGRfcHJvY2Vzcy5leGVjU3luYyhjbWQsIHsgc3RkaW86IFwiaW5oZXJpdFwiIH0pO1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9XG4gIH0gZWxzZSByZXR1cm4gMTI3O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19zeXN0ZW1fY29tbWFuZFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kKF9jbWQpIHtcbiAgcmV0dXJuIDEyNztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfdGltZSBtdXRhYmxlXG52YXIgY2FtbF9pbml0aWFsX3RpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKSAqIDAuMDAxO1xuZnVuY3Rpb24gY2FtbF9zeXNfdGltZSgpIHtcbiAgdmFyIG5vdyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICByZXR1cm4gbm93ICogMC4wMDEgLSBjYW1sX2luaXRpYWxfdGltZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfdGltZV9pbmNsdWRlX2NoaWxkcmVuXG4vL1JlcXVpcmVzOiBjYW1sX3N5c190aW1lXG5mdW5jdGlvbiBjYW1sX3N5c190aW1lX2luY2x1ZGVfY2hpbGRyZW4oX2IpIHtcbiAgcmV0dXJuIGNhbWxfc3lzX3RpbWUoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmFuZG9tX3NlZWQgbXV0YWJsZVxuLy9UaGUgZnVuY3Rpb24gbmVlZHMgdG8gcmV0dXJuIGFuIGFycmF5IHNpbmNlIE9DYW1sIDQuMC4uLlxuZnVuY3Rpb24gY2FtbF9zeXNfcmFuZG9tX3NlZWQoKSB7XG4gIGlmIChnbG9iYWxUaGlzLmNyeXB0bykge1xuICAgIGlmIChnbG9iYWxUaGlzLmNyeXB0by5nZXRSYW5kb21WYWx1ZXMpIHtcbiAgICAgIHZhciBhID0gZ2xvYmFsVGhpcy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBJbnQzMkFycmF5KDQpKTtcbiAgICAgIHJldHVybiBbMCwgYVswXSwgYVsxXSwgYVsyXSwgYVszXV07XG4gICAgfSBlbHNlIGlmIChnbG9iYWxUaGlzLmNyeXB0by5yYW5kb21CeXRlcykge1xuICAgICAgdmFyIGEgPSBuZXcgSW50MzJBcnJheShnbG9iYWxUaGlzLmNyeXB0by5yYW5kb21CeXRlcygxNikuYnVmZmVyKTtcbiAgICAgIHJldHVybiBbMCwgYVswXSwgYVsxXSwgYVsyXSwgYVszXV07XG4gICAgfVxuICB9XG4gIHZhciBub3cgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgdmFyIHggPSBub3cgXiAoMHhmZmZmZmZmZiAqIE1hdGgucmFuZG9tKCkpO1xuICByZXR1cm4gWzAsIHhdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuIGNvbnN0XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuKCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfd29yZF9zaXplIGNvbnN0XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF93b3JkX3NpemUoKSB7XG4gIHJldHVybiAzMjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfaW50X3NpemUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X2ludF9zaXplKCkge1xuICByZXR1cm4gMzI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X21heF93b3NpemUgY29uc3Rcbi8vIG1heF9pbnQgLyA0IHNvIHRoYXQgdGhlIGZvbGxvd2luZyBkb2VzIG5vdCBvdmVyZmxvd1xuLy9sZXQgbWF4X3N0cmluZ19sZW5ndGggPSB3b3JkX3NpemUgLyA4ICogbWF4X2FycmF5X2xlbmd0aCAtIDE7O1xuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfbWF4X3dvc2l6ZSgpIHtcbiAgcmV0dXJuICgweDdmZmZmZmZmIC8gNCkgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9vc3R5cGVfdW5peCBjb25zdFxuLy9SZXF1aXJlczogb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3VuaXgoKSB7XG4gIHJldHVybiBvc190eXBlID09PSBcIlVuaXhcIiA/IDEgOiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3dpbjMyIGNvbnN0XG4vL1JlcXVpcmVzOiBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIoKSB7XG4gIHJldHVybiBvc190eXBlID09PSBcIldpbjMyXCIgPyAxIDogMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4gY29uc3Rcbi8vUmVxdWlyZXM6IG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4oKSB7XG4gIHJldHVybiBvc190eXBlID09PSBcIkN5Z3dpblwiID8gMSA6IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X2JhY2tlbmRfdHlwZSBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfYmFja2VuZF90eXBlKCkge1xuICByZXR1cm4gWzAsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJqc19vZl9vY2FtbFwiKV07XG59XG5cbi8vUHJvdmlkZXM6IG9zX3R5cGVcbi8vUmVxdWlyZXM6IGpzb29faXNfd2luMzJcbnZhciBvc190eXBlID0ganNvb19pc193aW4zMiA/IFwiV2luMzJcIiA6IFwiVW5peFwiO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRfY29uZmlnIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19nZXRfY29uZmlnKCkge1xuICByZXR1cm4gWzAsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMob3NfdHlwZSksIDMyLCAwXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfaXNhdHR5XG5mdW5jdGlvbiBjYW1sX3N5c19pc2F0dHkoX2NoYW4pIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV92YXJpYW50XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfdmFyaWFudChfdW5pdCkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9wYXJhbWV0ZXJzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfcGFyYW1ldGVycyhfdW5pdCkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnN0YWxsX3NpZ25hbF9oYW5kbGVyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2luc3RhbGxfc2lnbmFsX2hhbmRsZXIoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfd2FybmluZ3NcbnZhciBjYW1sX3J1bnRpbWVfd2FybmluZ3MgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzXG4vL1JlcXVpcmVzOiBjYW1sX3J1bnRpbWVfd2FybmluZ3NcbmZ1bmN0aW9uIGNhbWxfbWxfZW5hYmxlX3J1bnRpbWVfd2FybmluZ3MoYm9vbCkge1xuICBjYW1sX3J1bnRpbWVfd2FybmluZ3MgPSBib29sO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWRcbi8vUmVxdWlyZXM6IGNhbWxfcnVudGltZV93YXJuaW5nc1xuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWQoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfcnVudGltZV93YXJuaW5ncztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfbmFrZWRfcG9pbnRlcnNfY2hlY2tlZCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9uYWtlZF9wb2ludGVyc19jaGVja2VkKF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3hkZ19kZWZhdWx0c1xuLy9WZXJzaW9uOiA+PSA1LjJcbmZ1bmN0aW9uIGNhbWxfeGRnX2RlZmF1bHRzKF91bml0KSB7XG4gIHJldHVybiAwOyAvLyBlbXB0eSBsaXN0XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2lzX3JlZ3VsYXJfZmlsZVxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2Vcbi8vVmVyc2lvbjogPj0gNS4xXG5mdW5jdGlvbiBjYW1sX3N5c19pc19yZWd1bGFyX2ZpbGUobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByZXR1cm4gcm9vdC5kZXZpY2UuaXNGaWxlKHJvb3QucmVzdCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW9fYnVmZmVyX3NpemVcbnZhciBjYW1sX2lvX2J1ZmZlcl9zaXplID0gNjU1MzY7XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2lvX2J1ZmZlcl9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2lvX2J1ZmZlcl9zaXplXG4vL1ZlcnNpb246ID49IDUuNFxuZnVuY3Rpb24gY2FtbF9zeXNfaW9fYnVmZmVyX3NpemUoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfaW9fYnVmZmVyX3NpemU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3RlbXBfZGlyX25hbWVcbi8vUmVxdWlyZXM6IG9zX3R5cGVcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1ZlcnNpb246ID49IDUuNFxuZnVuY3Rpb24gY2FtbF9zeXNfdGVtcF9kaXJfbmFtZShfdW5pdCkge1xuICBpZiAob3NfdHlwZSA9PT0gXCJXaW4zMlwiKSB7XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHJlcXVpcmUoXCJub2RlOm9zXCIpLnRtcGRpcigpKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoXCJcIik7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfdGVtcF9kaXJfbmFtZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vVmVyc2lvbjogPj0gNS40XG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBjYW1sX3N5c190ZW1wX2Rpcl9uYW1lKF91bml0KSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhcIlwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29udmVydF9zaWduYWxfbnVtYmVyXG4vL1ZlcnNpb246ID49IDUuNFxuZnVuY3Rpb24gY2FtbF9zeXNfY29udmVydF9zaWduYWxfbnVtYmVyKHNpZ25vKSB7XG4gIHJldHVybiBzaWdubztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmV2X2NvbnZlcnRfc2lnbmFsX251bWJlclxuLy9WZXJzaW9uOiA+PSA1LjRcbmZ1bmN0aW9uIGNhbWxfc3lzX3Jldl9jb252ZXJ0X3NpZ25hbF9udW1iZXIoc2lnbm8pIHtcbiAgcmV0dXJuIHNpZ25vO1xufVxuXG4vL0Fsd2F5c1xuLy9SZXF1aXJlczogY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25cbi8vSWY6ICF3YXNtXG5mdW5jdGlvbiBjYW1sX3NldHVwX3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyKCkge1xuICB2YXIgcHJvY2VzcyA9IGdsb2JhbFRoaXMucHJvY2VzcztcbiAgaWYgKHByb2Nlc3M/Lm9uKSB7XG4gICAgcHJvY2Vzcy5vbihcInVuY2F1Z2h0RXhjZXB0aW9uXCIsIGZ1bmN0aW9uIChlcnIsIG9yaWdpbikge1xuICAgICAgY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24oZXJyKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgyKTtcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChnbG9iYWxUaGlzLmFkZEV2ZW50TGlzdGVuZXIpIHtcbiAgICBnbG9iYWxUaGlzLmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIGlmIChldmVudC5lcnJvcikge1xuICAgICAgICBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbihldmVudC5lcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbmNhbWxfc2V0dXBfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIoKTtcbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9lbnZfZmxhZ1xuLy9SZXF1aXJlczoganNvb19zeXNfZ2V0ZW52XG52YXIgY2FtbF9yZWNvcmRfYmFja3RyYWNlX2Vudl9mbGFnID0gRkxBRyhcIndpdGgtanMtZXJyb3JcIik7XG5cbihmdW5jdGlvbiAoKSB7XG4gIHZhciByID0ganNvb19zeXNfZ2V0ZW52KFwiT0NBTUxSVU5QQVJBTVwiKTtcbiAgaWYgKHIgIT09IHVuZGVmaW5lZCkge1xuICAgIHZhciBsID0gci5zcGxpdChcIixcIik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAobFtpXSA9PT0gXCJiXCIpIHtcbiAgICAgICAgY2FtbF9yZWNvcmRfYmFja3RyYWNlX2Vudl9mbGFnID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9IGVsc2UgaWYgKGxbaV0uc3RhcnRzV2l0aChcImI9XCIpKSB7XG4gICAgICAgIGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9lbnZfZmxhZyA9ICtsW2ldLnNsaWNlKDIpO1xuICAgICAgfSBlbHNlIGNvbnRpbnVlO1xuICAgIH1cbiAgfVxufSkoKTtcblxuLy9Qcm92aWRlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX3J1bnRpbWVfZmxhZ1xuLy9SZXF1aXJlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX2Vudl9mbGFnXG52YXIgY2FtbF9yZWNvcmRfYmFja3RyYWNlX3J1bnRpbWVfZmxhZyA9IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9lbnZfZmxhZztcblxuLy9Qcm92aWRlczogY2FtbF9tbF9kZWJ1Z19pbmZvX3N0YXR1cyBjb25zdFxuZnVuY3Rpb24gY2FtbF9tbF9kZWJ1Z19pbmZvX3N0YXR1cygpIHtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2JhY2t0cmFjZV9zdGF0dXNcbi8vUmVxdWlyZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9ydW50aW1lX2ZsYWdcbmZ1bmN0aW9uIGNhbWxfYmFja3RyYWNlX3N0YXR1cyhfdW5pdCkge1xuICByZXR1cm4gY2FtbF9yZWNvcmRfYmFja3RyYWNlX3J1bnRpbWVfZmxhZyA/IDEgOiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9nZXRfZXhjZXB0aW9uX2JhY2t0cmFjZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9nZXRfZXhjZXB0aW9uX2JhY2t0cmFjZSgpIHtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9leGNlcHRpb25fcmF3X2JhY2t0cmFjZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2UoX3VuaXQpIHtcbiAgcmV0dXJuIFswXTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZVxuLy9SZXF1aXJlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX3J1bnRpbWVfZmxhZ1xuZnVuY3Rpb24gY2FtbF9yZWNvcmRfYmFja3RyYWNlKGIpIHtcbiAgY2FtbF9yZWNvcmRfYmFja3RyYWNlX3J1bnRpbWVfZmxhZyA9IGI7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlKCkge1xuICByZXR1cm4gWzBdO1xufVxuLy9Qcm92aWRlczogY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aCgpIHtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90XG5mdW5jdGlvbiBjYW1sX3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90KF9zbG90KSB7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3QoX2J0LCBfaWR4KSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlX3Nsb3Q6IGluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3Jlc3RvcmVfcmF3X2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9yZXN0b3JlX3Jhd19iYWNrdHJhY2UoX2V4biwgX2J0KSB7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2sgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZ2V0X2N1cnJlbnRfY2FsbHN0YWNrKCkge1xuICByZXR1cm4gWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90KF9yYnQpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3RcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9jYWxsX2dlbiAoY29uc3QsIHNoYWxsb3cpXG4vL0lmOiAhZWZmZWN0c1xuLy9XZWFrZGVmXG5mdW5jdGlvbiBjYW1sX2NhbGxfZ2VuKGYsIGFyZ3MpIHtcbiAgdmFyIG4gPSBmLmwgPj0gMCA/IGYubCA6IChmLmwgPSBmLmxlbmd0aCk7XG4gIHZhciBhcmdzTGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBkID0gbiAtIGFyZ3NMZW47XG4gIGlmIChkID09PSAwKSByZXR1cm4gZiguLi5hcmdzKTtcbiAgZWxzZSBpZiAoZCA8IDApIHtcbiAgICB2YXIgZyA9IGYoLi4uYXJncy5zbGljZSgwLCBuKSk7XG4gICAgaWYgKHR5cGVvZiBnICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBnO1xuICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGcsIGFyZ3Muc2xpY2UobikpO1xuICB9IGVsc2Uge1xuICAgIHN3aXRjaCAoZCkge1xuICAgICAgY2FzZSAxOiB7XG4gICAgICAgIHZhciBnID0gZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJnc0xlbiArIDEpO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJnc0xlbjsgaSsrKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgICAgbmFyZ3NbYXJnc0xlbl0gPSB4O1xuICAgICAgICAgIHJldHVybiBmKC4uLm5hcmdzKTtcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDI6IHtcbiAgICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoeCwgeSkge1xuICAgICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgMik7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKyspIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgICBuYXJnc1thcmdzTGVuXSA9IHg7XG4gICAgICAgICAgbmFyZ3NbYXJnc0xlbiArIDFdID0geTtcbiAgICAgICAgICByZXR1cm4gZiguLi5uYXJncyk7XG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICB2YXIgZyA9IGZ1bmN0aW9uICguLi5leHRyYV9hcmdzKSB7XG4gICAgICAgICAgaWYgKGV4dHJhX2FyZ3MubGVuZ3RoID09PSAwKSBleHRyYV9hcmdzID0gW3VuZGVmaW5lZF07XG4gICAgICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZiwgYXJncy5jb25jYXQoZXh0cmFfYXJncykpO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICBnLmwgPSBkO1xuICAgIHJldHVybiBnO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2FsbF9nZW4gKGNvbnN0LCBzaGFsbG93KVxuLy9JZjogZWZmZWN0c1xuLy9JZjogIWRvdWJsZXRyYW5zbGF0ZVxuLy9XZWFrZGVmXG5mdW5jdGlvbiBjYW1sX2NhbGxfZ2VuKGYsIGFyZ3MpIHtcbiAgdmFyIG4gPSBmLmwgPj0gMCA/IGYubCA6IChmLmwgPSBmLmxlbmd0aCk7XG4gIHZhciBhcmdzTGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBkID0gbiAtIGFyZ3NMZW47XG4gIGlmIChkID09PSAwKSB7XG4gICAgcmV0dXJuIGYoLi4uYXJncyk7XG4gIH0gZWxzZSBpZiAoZCA8IDApIHtcbiAgICB2YXIgcmVzdCA9IGFyZ3Muc2xpY2UobiAtIDEpO1xuICAgIHZhciBrID0gYXJnc1thcmdzTGVuIC0gMV07XG4gICAgYXJncyA9IGFyZ3Muc2xpY2UoMCwgbik7XG4gICAgYXJnc1tuIC0gMV0gPSBmdW5jdGlvbiAoZykge1xuICAgICAgaWYgKHR5cGVvZiBnICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBrKGcpO1xuICAgICAgdmFyIGFyZ3MgPSByZXN0LnNsaWNlKCk7XG4gICAgICBhcmdzW2FyZ3MubGVuZ3RoIC0gMV0gPSBrO1xuICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZywgYXJncyk7XG4gICAgfTtcbiAgICByZXR1cm4gZiguLi5hcmdzKTtcbiAgfSBlbHNlIHtcbiAgICBhcmdzTGVuLS07XG4gICAgdmFyIGsgPSBhcmdzW2FyZ3NMZW5dO1xuICAgIHN3aXRjaCAoZCkge1xuICAgICAgY2FzZSAxOiB7XG4gICAgICAgIHZhciBnID0gZnVuY3Rpb24gKHgsIHkpIHtcbiAgICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJnc0xlbiArIDIpO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJnc0xlbjsgaSsrKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgICAgbmFyZ3NbYXJnc0xlbl0gPSB4O1xuICAgICAgICAgIG5hcmdzW2FyZ3NMZW4gKyAxXSA9IHk7XG4gICAgICAgICAgcmV0dXJuIGYoLi4ubmFyZ3MpO1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgMjoge1xuICAgICAgICB2YXIgZyA9IGZ1bmN0aW9uICh4LCB5LCB6KSB7XG4gICAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3NMZW4gKyAzKTtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3NMZW47IGkrKykgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICAgIG5hcmdzW2FyZ3NMZW5dID0geDtcbiAgICAgICAgICBuYXJnc1thcmdzTGVuICsgMV0gPSB5O1xuICAgICAgICAgIG5hcmdzW2FyZ3NMZW4gKyAyXSA9IHo7XG4gICAgICAgICAgcmV0dXJuIGYoLi4ubmFyZ3MpO1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgYXJncy5sZW5ndGggPSBhcmdzTGVuO1xuICAgICAgICB2YXIgZyA9IGZ1bmN0aW9uICguLi5leHRyYV9hcmdzKSB7XG4gICAgICAgICAgaWYgKGV4dHJhX2FyZ3MubGVuZ3RoID09PSAwKSBleHRyYV9hcmdzID0gW3VuZGVmaW5lZF07XG4gICAgICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZiwgYXJncy5jb25jYXQoZXh0cmFfYXJncykpO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICBnLmwgPSBkICsgMTtcbiAgICByZXR1cm4gayhnKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxfZ2VuX2Nwc1xuLy9SZXF1aXJlczogY2FtbF9jYWxsX2dlblxuLy9JZjogZWZmZWN0c1xuLy9JZjogIWRvdWJsZXRyYW5zbGF0ZVxuLy9XZWFrZGVmXG52YXIgY2FtbF9jYWxsX2dlbl9jcHMgPSBjYW1sX2NhbGxfZ2VuO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxfZ2VuX3R1cGxlIChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfY3BzX2Nsb3N1cmVcbi8vSWY6IGVmZmVjdHNcbi8vSWY6IGRvdWJsZXRyYW5zbGF0ZVxuLy9XZWFrZGVmXG52YXIgY2FtbF9jYWxsX2dlbl90dXBsZSA9IChmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIGNhbWxfY2FsbF9nZW5fZGlyZWN0KGYsIGFyZ3MpIHtcbiAgICB2YXIgbiA9IGYubCA+PSAwID8gZi5sIDogKGYubCA9IGYubGVuZ3RoKTtcbiAgICB2YXIgYXJnc0xlbiA9IGFyZ3MubGVuZ3RoO1xuICAgIHZhciBkID0gbiAtIGFyZ3NMZW47XG4gICAgaWYgKGQgPT09IDApIHtcbiAgICAgIHJldHVybiBmLmFwcGx5KG51bGwsIGFyZ3MpO1xuICAgIH0gZWxzZSBpZiAoZCA8IDApIHtcbiAgICAgIHZhciBnID0gZiguLi5hcmdzLnNsaWNlKDAsIG4pKTtcbiAgICAgIGlmICh0eXBlb2YgZyAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gZztcbiAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuX2RpcmVjdChnLCBhcmdzLnNsaWNlKG4pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRklYTUU6IFJlc3RvcmUgdGhlIG9wdGltaXphdGlvbiBvZiBoYW5kbGluZyBzcGVjaWFsbHkgZCA9IDEgb3IgMlxuICAgICAgdmFyIGFyZ3NfID0gYXJncy5zbGljZSgpO1xuICAgICAgYXJnc18ubGVuZ3RoID0gYXJnc0xlbjtcbiAgICAgIHZhciByZXQgPSBjYW1sX2Nwc19jbG9zdXJlKFxuICAgICAgICBmdW5jdGlvbiAoLi4uZXh0cmFfYXJncykge1xuICAgICAgICAgIGlmIChleHRyYV9hcmdzLmxlbmd0aCA9PT0gMCkgZXh0cmFfYXJncyA9IFt1bmRlZmluZWRdO1xuICAgICAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuX2RpcmVjdChmLCBhcmdzLmNvbmNhdChleHRyYV9hcmdzKSk7XG4gICAgICAgIH0sXG4gICAgICAgIGZ1bmN0aW9uICguLi5leHRyYV9hcmdzKSB7XG4gICAgICAgICAgaWYgKGV4dHJhX2FyZ3MubGVuZ3RoID09PSAwKSBleHRyYV9hcmdzID0gW3VuZGVmaW5lZF07XG4gICAgICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW5fY3BzKGYsIGFyZ3NfLmNvbmNhdChleHRyYV9hcmdzKSk7XG4gICAgICAgIH0sXG4gICAgICApO1xuICAgICAgcmV0LmwgPSBkO1xuICAgICAgcmV0LmNwcy5sID0gZCArIDE7XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBjYW1sX2NhbGxfZ2VuX2NwcyhmLCBhcmdzKSB7XG4gICAgaWYgKCFmLmNwcykge1xuICAgICAgdmFyIGsgPSBhcmdzLnBvcCgpO1xuICAgICAgcmV0dXJuIGsoY2FtbF9jYWxsX2dlbl9kaXJlY3QoZiwgYXJncykpO1xuICAgIH1cbiAgICB2YXIgbiA9IGYuY3BzLmwgPj0gMCA/IGYuY3BzLmwgOiAoZi5jcHMubCA9IGYuY3BzLmxlbmd0aCk7XG4gICAgdmFyIGFyZ3NMZW4gPSBhcmdzLmxlbmd0aDtcbiAgICB2YXIgZCA9IG4gLSBhcmdzTGVuO1xuICAgIGlmIChkID09PSAwKSB7XG4gICAgICByZXR1cm4gZi5jcHMuYXBwbHkobnVsbCwgYXJncyk7XG4gICAgfSBlbHNlIGlmIChkIDwgMCkge1xuICAgICAgdmFyIHJlc3QgPSBhcmdzLnNsaWNlKG4gLSAxKTtcbiAgICAgIHZhciBrID0gYXJnc1thcmdzTGVuIC0gMV07XG4gICAgICBhcmdzID0gYXJncy5zbGljZSgwLCBuKTtcbiAgICAgIGFyZ3NbbiAtIDFdID0gZnVuY3Rpb24gKGcpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSByZXN0LnNsaWNlKCk7XG4gICAgICAgIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9IGs7XG4gICAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuX2NwcyhnLCBhcmdzKTtcbiAgICAgIH07XG4gICAgICByZXR1cm4gZi5jcHMuYXBwbHkobnVsbCwgYXJncyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFyZ3NMZW4tLTtcbiAgICAgIHZhciBhcmdzXyA9IGFyZ3Muc2xpY2UoKTtcbiAgICAgIGFyZ3NfLmxlbmd0aCA9IGFyZ3NMZW47XG4gICAgICB2YXIgY29udCA9IGNhbWxfY3BzX2Nsb3N1cmUoXG4gICAgICAgIGZ1bmN0aW9uICguLi5leHRyYV9hcmdzKSB7XG4gICAgICAgICAgaWYgKGV4dHJhX2FyZ3MubGVuZ3RoID09PSAwKSBleHRyYV9hcmdzID0gW3VuZGVmaW5lZF07XG4gICAgICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW5fZGlyZWN0KGYsIGFyZ3NfLmNvbmNhdChleHRyYV9hcmdzKSk7XG4gICAgICAgIH0sXG4gICAgICAgIGZ1bmN0aW9uICguLi5leHRyYV9hcmdzKSB7XG4gICAgICAgICAgaWYgKGV4dHJhX2FyZ3MubGVuZ3RoID09PSAwKSBleHRyYV9hcmdzID0gW3VuZGVmaW5lZF07XG4gICAgICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW5fY3BzKGYsIGFyZ3NfLmNvbmNhdChleHRyYV9hcmdzKSk7XG4gICAgICAgIH0sXG4gICAgICApO1xuICAgICAgdmFyIGsgPSBhcmdzW2FyZ3NMZW5dO1xuICAgICAgY29udC5sID0gZDtcbiAgICAgIGNvbnQuY3BzLmwgPSBkICsgMTtcbiAgICAgIHJldHVybiBrKGNvbnQpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gW2NhbWxfY2FsbF9nZW5fZGlyZWN0LCBjYW1sX2NhbGxfZ2VuX2Nwc107XG59KSgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxfZ2VuXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxfZ2VuX3R1cGxlXG4vL0lmOiBlZmZlY3RzXG4vL0lmOiBkb3VibGV0cmFuc2xhdGVcbi8vV2Vha2RlZlxudmFyIGNhbWxfY2FsbF9nZW4gPSBjYW1sX2NhbGxfZ2VuX3R1cGxlWzBdO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxfZ2VuX2Nwc1xuLy9SZXF1aXJlczogY2FtbF9jYWxsX2dlbl90dXBsZVxuLy9JZjogZWZmZWN0c1xuLy9JZjogZG91YmxldHJhbnNsYXRlXG4vL1dlYWtkZWZcbnZhciBjYW1sX2NhbGxfZ2VuX2NwcyA9IGNhbWxfY2FsbF9nZW5fdHVwbGVbMV07XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmFtZWRfdmFsdWVzXG52YXIgY2FtbF9uYW1lZF92YWx1ZXMgPSB7fTtcblxuLy9Qcm92aWRlczogY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSAoY29uc3QsbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlKG5tLCB2KSB7XG4gIGNhbWxfbmFtZWRfdmFsdWVzW2NhbWxfanNieXRlc19vZl9zdHJpbmcobm0pXSA9IHY7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25hbWVkX3ZhbHVlXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlc1xuZnVuY3Rpb24gY2FtbF9uYW1lZF92YWx1ZShubSkge1xuICByZXR1cm4gY2FtbF9uYW1lZF92YWx1ZXNbbm1dO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dsb2JhbF9kYXRhXG52YXIgY2FtbF9nbG9iYWxfZGF0YSA9IFswXTtcblxuLy9Qcm92aWRlczogY2FtbF9idWlsZF9zeW1ib2xzXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9idWlsZF9zeW1ib2xzKHN5bWIpIHtcbiAgdmFyIHIgPSB7fTtcbiAgdmFyIG1heCA9IC0xO1xuICBpZiAoc3ltYikge1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgc3ltYi5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGlkeCA9IHN5bWJbaV1bMl07XG4gICAgICBtYXggPSBNYXRoLm1heChtYXgsIGlkeCk7XG4gICAgICByW2NhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHN5bWJbaV1bMV0pXSA9IGlkeDtcbiAgICB9XG4gIH1cbiAgci5uZXh0X2lkeCA9IG1heCArIDE7XG4gIHJldHVybiByO1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX3RvcGxldmVsX3JlbG9jXG52YXIganNvb190b3BsZXZlbF9yZWxvYyA9IHVuZGVmaW5lZDtcblxuLy9Qcm92aWRlczogY2FtbF9yZWdpc3Rlcl9nbG9iYWwgKGNvbnN0LCBzaGFsbG93LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfY2FsbGJhY2ssIGNhbWxfYnVpbGRfc3ltYm9sc1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczoganNvb190b3BsZXZlbF9yZWxvY1xuZnVuY3Rpb24gY2FtbF9yZWdpc3Rlcl9nbG9iYWwobiwgdiwgbmFtZV9vcHQpIHtcbiAgaWYgKG5hbWVfb3B0KSB7XG4gICAgdmFyIG5hbWUgPSBuYW1lX29wdDtcbiAgICBpZiAoanNvb190b3BsZXZlbF9yZWxvYykge1xuICAgICAgbiA9IGNhbWxfY2FsbGJhY2soanNvb190b3BsZXZlbF9yZWxvYywgW25hbWVdKTtcbiAgICB9IGVsc2UgaWYgKGNhbWxfZ2xvYmFsX2RhdGEuc3ltYm9scykge1xuICAgICAgaWYgKCFjYW1sX2dsb2JhbF9kYXRhLnN5bWlkeCkge1xuICAgICAgICBjYW1sX2dsb2JhbF9kYXRhLnN5bWlkeCA9IGNhbWxfYnVpbGRfc3ltYm9scyhjYW1sX2dsb2JhbF9kYXRhLnN5bWJvbHMpO1xuICAgICAgfVxuICAgICAgdmFyIG5pZCA9IGNhbWxfZ2xvYmFsX2RhdGEuc3ltaWR4W25hbWVdO1xuICAgICAgaWYgKG5pZCA+PSAwKSBuID0gbmlkO1xuICAgICAgZWxzZSB7XG4gICAgICAgIC8vIFRoZSB1bml0IGlzIHVua25vd24sIHRoaXMgY2FuIGhhcHBlbiB3aGVuIGR5bmxpbmtpbmcgYSBwcmVjb21waWxlZCBqcyxcbiAgICAgICAgLy8gbGV0J3MgYWxsb2NhdGUgYSBmcmVzaCBpZHguXG4gICAgICAgIHZhciBuID0gY2FtbF9nbG9iYWxfZGF0YS5zeW1pZHgubmV4dF9pZHgrKztcbiAgICAgICAgY2FtbF9nbG9iYWxfZGF0YS5zeW1pZHhbbmFtZV0gPSBuO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBjYW1sX2dsb2JhbF9kYXRhW24gKyAxXSA9IHY7XG4gIGlmIChuYW1lX29wdCkgY2FtbF9nbG9iYWxfZGF0YVtuYW1lX29wdF0gPSB2O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9nbG9iYWxfZGF0YSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2dldF9nbG9iYWxfZGF0YShfdW5pdCkge1xuICByZXR1cm4gY2FtbF9nbG9iYWxfZGF0YTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19wcmludGFibGUgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9pc19wcmludGFibGUoYykge1xuICByZXR1cm4gKyhjID4gMzEgJiYgYyA8IDEyNyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWF5YmVfcHJpbnRfc3RhdHNcbmZ1bmN0aW9uIGNhbWxfbWF5YmVfcHJpbnRfc3RhdHMoX3VuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBsaWJyYXJ5XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSnNsaWJcblxuLy9Qcm92aWRlczogY2FtbF9qc19wdXJlX2V4cHIgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfcHVyZV9leHByKGYpIHtcbiAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgWzBdKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19zZXQgKG11dGFibGUsIGNvbnN0LCBtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9qc19zZXQobywgZiwgdikge1xuICBvW2ZdID0gdjtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2dldCAobXV0YWJsZSwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2dldChvLCBmKSB7XG4gIHJldHVybiBvW2ZdO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19kZWxldGUgKG11dGFibGUsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19kZWxldGUobywgZikge1xuICBkZWxldGUgb1tmXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfaW5zdGFuY2VvZiAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19pbnN0YW5jZW9mKG8sIGMpIHtcbiAgcmV0dXJuIG8gaW5zdGFuY2VvZiBjID8gMSA6IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdHlwZW9mIChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfdHlwZW9mKG8pIHtcbiAgcmV0dXJuIHR5cGVvZiBvO1xufVxuXG4vL1Byb3ZpZGVzOmNhbWxfdHJhbXBvbGluZVxuZnVuY3Rpb24gY2FtbF90cmFtcG9saW5lKHJlcykge1xuICB2YXIgYyA9IDE7XG4gIHdoaWxlIChyZXM/Lmpvb190cmFtcCkge1xuICAgIHJlcyA9IHJlcy5qb29fdHJhbXAuYXBwbHkobnVsbCwgcmVzLmpvb19hcmdzKTtcbiAgICBjKys7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczpjYW1sX3RyYW1wb2xpbmVfcmV0dXJuXG5mdW5jdGlvbiBjYW1sX3RyYW1wb2xpbmVfcmV0dXJuKGYsIGFyZ3MsIGRpcmVjdCkge1xuICByZXR1cm4geyBqb29fdHJhbXA6IGYsIGpvb19hcmdzOiBhcmdzLCBqb29fZGlyZWN0OiBkaXJlY3QgfTtcbn1cblxuLy9Qcm92aWRlczpjYW1sX3N0YWNrX2RlcHRoXG4vL0lmOiBlZmZlY3RzXG52YXIgY2FtbF9zdGFja19kZXB0aCA9IDA7XG5cbi8vUHJvdmlkZXM6Y2FtbF9zdGFja19jaGVja19kZXB0aFxuLy9JZjogZWZmZWN0c1xuLy9SZXF1aXJlczpjYW1sX3N0YWNrX2RlcHRoXG5mdW5jdGlvbiBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoKCkge1xuICByZXR1cm4gLS1jYW1sX3N0YWNrX2RlcHRoID4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jYWxsYmFja1xuLy9JZjogIWVmZmVjdHNcbi8vUmVxdWlyZXM6Y2FtbF9jYWxsX2dlblxudmFyIGNhbWxfY2FsbGJhY2sgPSBjYW1sX2NhbGxfZ2VuO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxiYWNrXG4vL0lmOiBlZmZlY3RzXG4vL0lmOiAhZG91YmxldHJhbnNsYXRlXG4vL1JlcXVpcmVzOiBjYW1sX3N0YWNrX2RlcHRoLCBjYW1sX2NhbGxfZ2VuLCBjYW1sX3dyYXBfZXhjZXB0aW9uXG4vL1JlcXVpcmVzOiBjYW1sX2N1cnJlbnRfc3RhY2tcbi8vQWxpYXM6IGNhbWxfY3BzX3RyYW1wb2xpbmVcbmZ1bmN0aW9uIGNhbWxfY2FsbGJhY2soZiwgYXJncykge1xuICB2YXIgc2F2ZWRfc3RhY2tfZGVwdGggPSBjYW1sX3N0YWNrX2RlcHRoO1xuICB2YXIgc2F2ZWRfY3VycmVudF9zdGFjayA9IGNhbWxfY3VycmVudF9zdGFjaztcbiAgdHJ5IHtcbiAgICBjYW1sX2N1cnJlbnRfc3RhY2sgPSB7IGs6IDAsIHg6IDAsIGg6IDAsIGU6IDAgfTtcbiAgICB2YXIgcmVzID0ge1xuICAgICAgam9vX3RyYW1wOiBmLFxuICAgICAgam9vX2FyZ3M6IGFyZ3MuY29uY2F0KGZ1bmN0aW9uICh4KSB7XG4gICAgICAgIHJldHVybiB4O1xuICAgICAgfSksXG4gICAgfTtcbiAgICBkbyB7XG4gICAgICBjYW1sX3N0YWNrX2RlcHRoID0gNDA7XG4gICAgICB0cnkge1xuICAgICAgICByZXMgPSBjYW1sX2NhbGxfZ2VuKHJlcy5qb29fdHJhbXAsIHJlcy5qb29fYXJncyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8qIEhhbmRsZSBleGNlcHRpb24gY29taW5nIGZyb20gSmF2YVNjcmlwdCBvciBmcm9tIHRoZSBydW50aW1lLiAqL1xuICAgICAgICBpZiAoIWNhbWxfY3VycmVudF9zdGFjay54KSB0aHJvdyBlO1xuICAgICAgICB2YXIgaGFuZGxlciA9IGNhbWxfY3VycmVudF9zdGFjay54Lmg7XG4gICAgICAgIGNhbWxfY3VycmVudF9zdGFjay54ID0gY2FtbF9jdXJyZW50X3N0YWNrLngudDtcbiAgICAgICAgcmVzID0geyBqb29fdHJhbXA6IGhhbmRsZXIsIGpvb19hcmdzOiBbY2FtbF93cmFwX2V4Y2VwdGlvbihlKV0gfTtcbiAgICAgIH1cbiAgICB9IHdoaWxlIChyZXM/Lmpvb19hcmdzKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBjYW1sX3N0YWNrX2RlcHRoID0gc2F2ZWRfc3RhY2tfZGVwdGg7XG4gICAgY2FtbF9jdXJyZW50X3N0YWNrID0gc2F2ZWRfY3VycmVudF9zdGFjaztcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxiYWNrXG4vL0lmOiBlZmZlY3RzXG4vL0lmOiBkb3VibGV0cmFuc2xhdGVcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbF9nZW5cbnZhciBjYW1sX2NhbGxiYWNrID0gY2FtbF9jYWxsX2dlbjtcblxuLy9Qcm92aWRlczogY2FtbF9pc19qc1xuZnVuY3Rpb24gY2FtbF9pc19qcygpIHtcbiAgcmV0dXJuIDE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNvb19mbGFnc191c2VfanNfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZyhfdW5pdCkge1xuICByZXR1cm4gRkxBRyhcInVzZS1qcy1zdHJpbmdcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNvb19mbGFnc19lZmZlY3RzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc29vX2ZsYWdzX2VmZmVjdHMoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKENPTkZJRyhcImVmZmVjdHNcIikpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dyYXBfZXhjZXB0aW9uIGNvbnN0IChtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YSxjYW1sX3N0cmluZ19vZl9qc3N0cmluZyxjYW1sX25hbWVkX3ZhbHVlXG5mdW5jdGlvbiBjYW1sX3dyYXBfZXhjZXB0aW9uKGUpIHtcbiAgaWYgKEZMQUcoXCJleGN3cmFwXCIpKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZSkpIHJldHVybiBlO1xuICAgIHZhciBleG47XG4gICAgLy9TdGFja19vdmVyZmxvdzogY2hyb21lLCBzYWZhcmlcbiAgICBpZiAoXG4gICAgICBnbG9iYWxUaGlzLlJhbmdlRXJyb3IgJiZcbiAgICAgIGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLlJhbmdlRXJyb3IgJiZcbiAgICAgIGUubWVzc2FnZSAmJlxuICAgICAgZS5tZXNzYWdlLm1hdGNoKC9tYXhpbXVtIGNhbGwgc3RhY2svaSlcbiAgICApXG4gICAgICBleG4gPSBjYW1sX2dsb2JhbF9kYXRhLlN0YWNrX292ZXJmbG93O1xuICAgIC8vU3RhY2tfb3ZlcmZsb3c6IGZpcmVmb3hcbiAgICBlbHNlIGlmIChcbiAgICAgIGdsb2JhbFRoaXMuSW50ZXJuYWxFcnJvciAmJlxuICAgICAgZSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuSW50ZXJuYWxFcnJvciAmJlxuICAgICAgZS5tZXNzYWdlICYmXG4gICAgICBlLm1lc3NhZ2UubWF0Y2goL3RvbyBtdWNoIHJlY3Vyc2lvbi9pKVxuICAgIClcbiAgICAgIGV4biA9IGNhbWxfZ2xvYmFsX2RhdGEuU3RhY2tfb3ZlcmZsb3c7XG4gICAgLy9XcmFwIEVycm9yIGluIEpzLkVycm9yIGV4Y2VwdGlvblxuICAgIGVsc2UgaWYgKGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkVycm9yICYmIGNhbWxfbmFtZWRfdmFsdWUoXCJqc0Vycm9yXCIpKVxuICAgICAgZXhuID0gWzAsIGNhbWxfbmFtZWRfdmFsdWUoXCJqc0Vycm9yXCIpLCBlXTtcbiAgICAvL2ZhbGxiYWNrOiB3cmFwcGVkIGluIEZhaWx1cmVcbiAgICBlbHNlXG4gICAgICBleG4gPSBbMCwgY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhTdHJpbmcoZSkpXTtcbiAgICAvLyBXZSBhbHJlYWR5IGhhdmUgYW4gZXJyb3IgYXQgaGFuZCwgbGV0J3MgdXNlIGl0LlxuICAgIGlmIChlIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5FcnJvcikgZXhuLmpzX2Vycm9yID0gZTtcbiAgICByZXR1cm4gZXhuO1xuICB9IGVsc2UgcmV0dXJuIGU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZVxuLy9SZXF1aXJlczogY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9lbnZfZmxhZ1xuLy9SZXF1aXJlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX3J1bnRpbWVfZmxhZ1xuZnVuY3Rpb24gY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlKGV4biwgZm9yY2UpIHtcbiAgLy8gQmFja3RyYWNlcyBhcmUgdmVyeSBleHBlbnNpdmUsIHdlIG9ubHkgZW5hYmxlIHRoZW0gd2hlbiBleHBsaWNpdGx5IHJlcXVlc3RlZFxuICAvLyBhdCBjb21waWxlLXRpbWUgKC0tZW5hYmxlIHdpdGgtanMtZXJyb3IpIG9yIGF0IHN0YXJ0dXAgd2l0aCBPQ0FNTFJVTlBBUkFNPWI9MS5cbiAgLy8gTGlicmFyaWVzIHN1Y2ggYXMgQmFzZSB1bmNvbmRpdGlvbmFsbHkgZW5hYmxlIGJhY2t0cmFjZXMgKHByb2dyYW1tYXRpY2FsbHkpIGJ1dFxuICAvLyBpdCdzIHdheSB0byBzbG93LiBIZXJlLCB3ZSBmb3JjZSB0aGUgZW5kLXVzZXIgdG8gb3B0LWluIHRvIGJhY2t0cmFjZXMuXG4gIGlmIChjYW1sX3JlY29yZF9iYWNrdHJhY2VfZW52X2ZsYWcgJiYgY2FtbF9yZWNvcmRfYmFja3RyYWNlX3J1bnRpbWVfZmxhZylcbiAgICByZXR1cm4gY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UoZXhuLCBmb3JjZSk7XG4gIGVsc2UgcmV0dXJuIGV4bjtcbn1cblxuLy8gRXhwZXJpbWVudGFsXG4vL1Byb3ZpZGVzOiBjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UoZXhuLCBmb3JjZSkge1xuICAvL25ldmVyIHJlcmFpc2UgZm9yIGNvbnN0YW50IGV4blxuICBpZiAoIWV4bi5qc19lcnJvciB8fCBmb3JjZSB8fCBleG5bMF0gPT09IDI0OClcbiAgICBleG4uanNfZXJyb3IgPSBuZXcgZ2xvYmFsVGhpcy5FcnJvcihcIkpzIGV4Y2VwdGlvbiBjb250YWluaW5nIGJhY2t0cmFjZVwiKTtcbiAgcmV0dXJuIGV4bjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2pzX2Vycm9yX29wdGlvbl9vZl9leGNlcHRpb24oZXhuKSB7XG4gIGlmIChleG4uanNfZXJyb3IpIHtcbiAgICByZXR1cm4gWzAsIGV4bi5qc19lcnJvcl07XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdGhyb3dfanNfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX3Rocm93X2pzX2V4Y2VwdGlvbihleG4pIHtcbiAgdGhyb3cgZXhuO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Zyb21fYm9vbCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fYm9vbCh4KSB7XG4gIHJldHVybiAhIXg7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2Jvb2wgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc190b19ib29sKHgpIHtcbiAgcmV0dXJuICt4O1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX2Zsb2F0IGNvbnN0IChjb25zdClcbi8vQWxpYXM6IGNhbWxfanNfZnJvbV9pbnQzMlxuLy9BbGlhczogY2FtbF9qc19mcm9tX25hdGl2ZWludFxuZnVuY3Rpb24gY2FtbF9qc19mcm9tX2Zsb2F0KHgpIHtcbiAgcmV0dXJuIHg7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2Zsb2F0IGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfdG9fZmxvYXQoeCkge1xuICByZXR1cm4geDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9faW50MzIgY29uc3QgKGNvbnN0KVxuLy9BbGlhczogY2FtbF9qc190b19uYXRpdmVpbnRcbmZ1bmN0aW9uIGNhbWxfanNfdG9faW50MzIoeCkge1xuICByZXR1cm4geCB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9hcnJheSBtdXRhYmxlIChzaGFsbG93KVxuZnVuY3Rpb24gY2FtbF9qc19mcm9tX2FycmF5KGEpIHtcbiAgcmV0dXJuIGEuc2xpY2UoMSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2FycmF5IG11dGFibGUgKHNoYWxsb3cpXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2FycmF5KGEpIHtcbiAgdmFyIGxlbiA9IGEubGVuZ3RoO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4gKyAxKTtcbiAgYlswXSA9IDA7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGJbaSArIDFdID0gYVtpXTtcbiAgcmV0dXJuIGI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGlzdF9vZl9qc19hcnJheSBjb25zdCAobXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfbGlzdF9vZl9qc19hcnJheShhKSB7XG4gIHZhciBsID0gMDtcbiAgZm9yICh2YXIgaSA9IGEubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgZSA9IGFbaV07XG4gICAgbCA9IFswLCBlLCBsXTtcbiAgfVxuICByZXR1cm4gbDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9saXN0X3RvX2pzX2FycmF5IGNvbnN0IChtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9saXN0X3RvX2pzX2FycmF5KGwpIHtcbiAgdmFyIGEgPSBbXTtcbiAgZm9yICg7IGwgIT09IDA7IGwgPSBsWzJdKSB7XG4gICAgYS5wdXNoKGxbMV0pO1xuICB9XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3ZhciBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc192YXIoeCkge1xuICB2YXIgeCA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHgpO1xuICAvL0NoZWNrcyB0aGF0IHggaGFzIHRoZSBmb3JtIGlkZW50Wy5pZGVudF0qXG4gIGlmICgheC5tYXRjaCgvXlthLXpBLVpfJF1bYS16QS1aXyQwLTldKihcXC5bYS16QS1aXyRdW2EtekEtWl8kMC05XSopKiQvKSkge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAnY2FtbF9qc192YXI6IFwiJyArXG4gICAgICAgIHggK1xuICAgICAgICAnXCIgaXMgbm90IGEgdmFsaWQgSmF2YVNjcmlwdCB2YXJpYWJsZS4gY29udGludWluZyAuLicsXG4gICAgKTtcbiAgICAvL2NvbnNvbGUuZXJyb3IoXCJKcy5VbnNhZmUuZXZhbF9zdHJpbmdcIilcbiAgfVxuICAvLyBiaW9tZS1pZ25vcmUgbGludC9zZWN1cml0eS9ub0dsb2JhbEV2YWw6XG4gIHJldHVybiBldmFsPy4oeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2NhbGwgKGNvbnN0LCBtdXRhYmxlLCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2pzX2NhbGwoZiwgbywgYXJncykge1xuICByZXR1cm4gZi5hcHBseShvLCBjYW1sX2pzX2Zyb21fYXJyYXkoYXJncykpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19mdW5fY2FsbCAoY29uc3QsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfanNfZnVuX2NhbGwoZiwgYSkge1xuICBzd2l0Y2ggKGEubGVuZ3RoKSB7XG4gICAgY2FzZSAxOlxuICAgICAgcmV0dXJuIGYoKTtcbiAgICBjYXNlIDI6XG4gICAgICByZXR1cm4gZihhWzFdKTtcbiAgICBjYXNlIDM6XG4gICAgICByZXR1cm4gZihhWzFdLCBhWzJdKTtcbiAgICBjYXNlIDQ6XG4gICAgICByZXR1cm4gZihhWzFdLCBhWzJdLCBhWzNdKTtcbiAgICBjYXNlIDU6XG4gICAgICByZXR1cm4gZihhWzFdLCBhWzJdLCBhWzNdLCBhWzRdKTtcbiAgICBjYXNlIDY6XG4gICAgICByZXR1cm4gZihhWzFdLCBhWzJdLCBhWzNdLCBhWzRdLCBhWzVdKTtcbiAgICBjYXNlIDc6XG4gICAgICByZXR1cm4gZihhWzFdLCBhWzJdLCBhWzNdLCBhWzRdLCBhWzVdLCBhWzZdKTtcbiAgICBjYXNlIDg6XG4gICAgICByZXR1cm4gZihhWzFdLCBhWzJdLCBhWzNdLCBhWzRdLCBhWzVdLCBhWzZdLCBhWzddKTtcbiAgfVxuICByZXR1cm4gZi5hcHBseShudWxsLCBjYW1sX2pzX2Zyb21fYXJyYXkoYSkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19tZXRoX2NhbGwgKG11dGFibGUsIGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19tZXRoX2NhbGwobywgZiwgYXJncykge1xuICByZXR1cm4gb1tjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhmKV0uYXBwbHkobywgY2FtbF9qc19mcm9tX2FycmF5KGFyZ3MpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfbmV3IChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19uZXcoYywgYSkge1xuICBzd2l0Y2ggKGEubGVuZ3RoKSB7XG4gICAgY2FzZSAxOlxuICAgICAgcmV0dXJuIG5ldyBjKCk7XG4gICAgY2FzZSAyOlxuICAgICAgcmV0dXJuIG5ldyBjKGFbMV0pO1xuICAgIGNhc2UgMzpcbiAgICAgIHJldHVybiBuZXcgYyhhWzFdLCBhWzJdKTtcbiAgICBjYXNlIDQ6XG4gICAgICByZXR1cm4gbmV3IGMoYVsxXSwgYVsyXSwgYVszXSk7XG4gICAgY2FzZSA1OlxuICAgICAgcmV0dXJuIG5ldyBjKGFbMV0sIGFbMl0sIGFbM10sIGFbNF0pO1xuICAgIGNhc2UgNjpcbiAgICAgIHJldHVybiBuZXcgYyhhWzFdLCBhWzJdLCBhWzNdLCBhWzRdLCBhWzVdKTtcbiAgICBjYXNlIDc6XG4gICAgICByZXR1cm4gbmV3IGMoYVsxXSwgYVsyXSwgYVszXSwgYVs0XSwgYVs1XSwgYVs2XSk7XG4gICAgY2FzZSA4OlxuICAgICAgcmV0dXJuIG5ldyBjKGFbMV0sIGFbMl0sIGFbM10sIGFbNF0sIGFbNV0sIGFbNl0sIGFbN10pO1xuICB9XG4gIGZ1bmN0aW9uIEYoKSB7XG4gICAgcmV0dXJuIGMuYXBwbHkodGhpcywgY2FtbF9qc19mcm9tX2FycmF5KGEpKTtcbiAgfVxuICBGLnByb3RvdHlwZSA9IGMucHJvdG90eXBlO1xuICByZXR1cm4gbmV3IEYoKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfb2pzX25ld19hcnIgKGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX29qc19uZXdfYXJyKGMsIGEpIHtcbiAgc3dpdGNoIChhLmxlbmd0aCkge1xuICAgIGNhc2UgMDpcbiAgICAgIHJldHVybiBuZXcgYygpO1xuICAgIGNhc2UgMTpcbiAgICAgIHJldHVybiBuZXcgYyhhWzBdKTtcbiAgICBjYXNlIDI6XG4gICAgICByZXR1cm4gbmV3IGMoYVswXSwgYVsxXSk7XG4gICAgY2FzZSAzOlxuICAgICAgcmV0dXJuIG5ldyBjKGFbMF0sIGFbMV0sIGFbMl0pO1xuICAgIGNhc2UgNDpcbiAgICAgIHJldHVybiBuZXcgYyhhWzBdLCBhWzFdLCBhWzJdLCBhWzNdKTtcbiAgICBjYXNlIDU6XG4gICAgICByZXR1cm4gbmV3IGMoYVswXSwgYVsxXSwgYVsyXSwgYVszXSwgYVs0XSk7XG4gICAgY2FzZSA2OlxuICAgICAgcmV0dXJuIG5ldyBjKGFbMF0sIGFbMV0sIGFbMl0sIGFbM10sIGFbNF0sIGFbNV0pO1xuICAgIGNhc2UgNzpcbiAgICAgIHJldHVybiBuZXcgYyhhWzBdLCBhWzFdLCBhWzJdLCBhWzNdLCBhWzRdLCBhWzVdLCBhWzZdKTtcbiAgfVxuICBmdW5jdGlvbiBGKCkge1xuICAgIHJldHVybiBjLmFwcGx5KHRoaXMsIGEpO1xuICB9XG4gIEYucHJvdG90eXBlID0gYy5wcm90b3R5cGU7XG4gIHJldHVybiBuZXcgRigpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9jYWxsYmFjayhmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgYXJncyA9IFt1bmRlZmluZWRdO1xuICAgIH1cbiAgICB2YXIgcmVzID0gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTtcbiAgICByZXR1cm4gcmVzIGluc3RhbmNlb2YgRnVuY3Rpb24gPyBjYW1sX2pzX3dyYXBfY2FsbGJhY2socmVzKSA6IHJlcztcbiAgfTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50c1xuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50cyhmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIFthcmdzXSk7XG4gIH07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0KGFyaXR5LCBmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgIGFyZ3MubGVuZ3RoID0gYXJpdHk7XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgYXJncyk7XG4gIH07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfdW5zYWZlIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2ssIGNhbWxfanNfZnVuY3Rpb25fYXJpdHlcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmUoZikge1xuICByZXR1cm4gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICB2YXIgbGVuID0gY2FtbF9qc19mdW5jdGlvbl9hcml0eShmKTtcbiAgICBhcmdzLmxlbmd0aCA9IGxlbjtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTtcbiAgfTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2ssIGNhbWxfanNfd3JhcF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2soZikge1xuICByZXR1cm4gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICBhcmdzLnVuc2hpZnQodGhpcyk7XG4gICAgdmFyIHJlcyA9IGNhbWxfY2FsbGJhY2soZiwgYXJncyk7XG4gICAgcmV0dXJuIHJlcyBpbnN0YW5jZW9mIEZ1bmN0aW9uID8gY2FtbF9qc193cmFwX2NhbGxiYWNrKHJlcykgOiByZXM7XG4gIH07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHMgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgW3RoaXMsIGFyZ3NdKTtcbiAgfTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0KGFyaXR5LCBmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgIGFyZ3MubGVuZ3RoID0gYXJpdHk7XG4gICAgYXJncy51bnNoaWZ0KHRoaXMpO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpO1xuICB9O1xufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2ssIGNhbWxfanNfZnVuY3Rpb25fYXJpdHlcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZShmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgIHZhciBsZW4gPSBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5KGYpO1xuICAgIGFyZ3MudW5zaGlmdCh0aGlzKTtcbiAgICBhcmdzLmxlbmd0aCA9IGxlbjtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTtcbiAgfTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mdW5jdGlvbl9hcml0eVxuLy9JZjogIWVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfanNfZnVuY3Rpb25fYXJpdHkoZikge1xuICByZXR1cm4gZi5sID49IDAgPyBmLmwgOiAoZi5sID0gZi5sZW5ndGgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5XG4vL0lmOiBlZmZlY3RzXG4vL0lmOiBkb3VibGV0cmFuc2xhdGVcbmZ1bmN0aW9uIGNhbWxfanNfZnVuY3Rpb25fYXJpdHkoZikge1xuICByZXR1cm4gZi5sID49IDAgPyBmLmwgOiAoZi5sID0gZi5sZW5ndGgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5XG4vL0lmOiBlZmZlY3RzXG4vL0lmOiAhZG91YmxldHJhbnNsYXRlXG5mdW5jdGlvbiBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5KGYpIHtcbiAgLy8gRnVuY3Rpb25zIGhhdmUgYW4gYWRkaXRpb25hbCBjb250aW51YXRpb24gcGFyYW1ldGVyLiBUaGlzIHNob3VsZFxuICAvLyBub3QgYmUgdmlzaWJsZSB3aGVuIGNhbGxpbmcgdGhlbSBmcm9tIEphdmFTY3JpcHRcbiAgcmV0dXJuIChmLmwgPj0gMCA/IGYubCA6IChmLmwgPSBmLmxlbmd0aCkpIC0gMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19lcXVhbHMgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19lcXVhbHMoeCwgeSkge1xuICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRG91YmxlRXF1YWxzOlxuICByZXR1cm4gKyh4ID09IHkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3N0cmljdF9lcXVhbHMgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19zdHJpY3RfZXF1YWxzKHgsIHkpIHtcbiAgcmV0dXJuICsoeCA9PT0geSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXZhbF9zdHJpbmcgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfZXZhbF9zdHJpbmcocykge1xuICAvLyBVc2VzIGFuIGluZGlyZWN0IGV2YWwgdGhyb3VnaCB0aGUgb3B0aW9uYWwgY2hhaW5pbmcgb3BlcmF0b3IuXG4gIC8vIChzZWUgaHR0cHM6Ly9tZG4uZGV2L2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL2V2YWwpXG4gIC8vIFRoaXMgaXMgZmFzdGVyIGFuZCBhdm9pZCB2YXJpYWJsZSBjYXB0dXJlcy5cbiAgLy8gQWxzbyBwcmVwZW5kcyBgXCJ1c2Ugc3RyaWN0XCJgIGRpcmVjdGl2ZSBzaW5jZSB0aGlzIGlzIG5vdCBpbmhlcml0ZWRcbiAgLy8gZnJvbSB0aGUgZW5jbG9zaW5nIGZ1bmN0aW9uIHdpdGggYW4gaW5kaXJlY3QgZXZhbC5cbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc2VjdXJpdHkvbm9HbG9iYWxFdmFsOlxuICByZXR1cm4gZXZhbD8uKCdcInVzZSBzdHJpY3RcIjsnICsgY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2V4cHIgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfZXhwcihzKSB7XG4gIGNvbnNvbGUuZXJyb3IoXCJjYW1sX2pzX2V4cHI6IGZhbGxiYWNrIHRvIHJ1bnRpbWUgZXZhbHVhdGlvblxcblwiKTtcbiAgLy8gV2UgYWRkIHBhcmVudGhlc2VzIHRvIGF2b2lkIHRoZSBhbWJpZ3VpdHkgYmV0d2VlbiBleHByZXNzaW9uc1xuICAvLyBhbmQgc3RhdGVtZW50cy4gVGhpcyBtZWFucyB0aGF0IHdlIGFjY2VwdCBpbnZhbGlkIGlucHV0cyBsaWtlXG4gIC8vIFwiYSkoYlwiLCBidXQgdGhpcyBpcyB1bmxpa2VseSB0byBiZSBhbiBpc3N1ZSBpbiBwcmFjdGljZS5cbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc2VjdXJpdHkvbm9HbG9iYWxFdmFsOlxuICByZXR1cm4gZXZhbD8uKCdcInVzZSBzdHJpY3RcIjsoJyArIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpICsgXCIpXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3B1cmVfanNfZXhwciBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9wdXJlX2pzX2V4cHIocykge1xuICBjb25zb2xlLmVycm9yKFwiY2FtbF9wdXJlX2pzX2V4cHI6IGZhbGxiYWNrIHRvIHJ1bnRpbWUgZXZhbHVhdGlvblxcblwiKTtcbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc2VjdXJpdHkvbm9HbG9iYWxFdmFsOlxuICByZXR1cm4gZXZhbD8uKCdcInVzZSBzdHJpY3RcIjsoJyArIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpICsgXCIpXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX29iamVjdCAob2JqZWN0X2xpdGVyYWwpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc19vYmplY3QoYSkge1xuICB2YXIgbyA9IHt9O1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcCA9IGFbaV07XG4gICAgb1tjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhwWzFdKV0gPSBwWzJdO1xuICB9XG4gIHJldHVybiBvO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9SYWlzZSBleGNlcHRpb25cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9jb25zdGFudCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3JhaXNlX2NvbnN0YW50KHRhZykge1xuICB0aHJvdyB0YWc7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfYXJnKHRhZywgYXJnKSB7XG4gIHRocm93IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZShbMCwgdGFnLCBhcmddKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV93aXRoX2FyZ3MgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfYXJncyh0YWcsIGFyZ3MpIHtcbiAgdGhyb3cgY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlKFswLCB0YWddLmNvbmNhdChhcmdzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcodGFnLCBtc2cpIHtcbiAgY2FtbF9yYWlzZV93aXRoX2FyZyh0YWcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMobXNnKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmFpbHdpdGggKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV93aXRoX3N0cmluZywgY2FtbF9nbG9iYWxfZGF0YSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9mYWlsd2l0aChtc2cpIHtcbiAgaWYgKCFjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmUpXG4gICAgY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlID0gWzI0OCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIkZhaWx1cmVcIiksIC0zXTtcbiAgY2FtbF9yYWlzZV93aXRoX3N0cmluZyhjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmUsIG1zZyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2ludmFsaWRfYXJndW1lbnQobXNnKSB7XG4gIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcoY2FtbF9nbG9iYWxfZGF0YS5JbnZhbGlkX2FyZ3VtZW50LCBtc2cpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCkge1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuRW5kX29mX2ZpbGUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlKCkge1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuRGl2aXNpb25fYnlfemVybyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vdF9mb3VuZCgpIHtcbiAgY2FtbF9yYWlzZV9jb25zdGFudChjYW1sX2dsb2JhbF9kYXRhLk5vdF9mb3VuZCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cbiIsIi8vUHJvdmlkZXM6IGNhbWxfdW5peF9nZXR0aW1lb2ZkYXlcbi8vQWxpYXM6IHVuaXhfZ2V0dGltZW9mZGF5XG5mdW5jdGlvbiBjYW1sX3VuaXhfZ2V0dGltZW9mZGF5KCkge1xuICByZXR1cm4gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfdGltZVxuLy9SZXF1aXJlczogY2FtbF91bml4X2dldHRpbWVvZmRheVxuLy9BbGlhczogdW5peF90aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfdGltZSgpIHtcbiAgcmV0dXJuIE1hdGguZmxvb3IoY2FtbF91bml4X2dldHRpbWVvZmRheSgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3RpbWVzXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3RpbWVzXG5mdW5jdGlvbiBjYW1sX3VuaXhfdGltZXMoKSB7XG4gIGlmIChnbG9iYWxUaGlzLnByb2Nlc3M/LmNwdVVzYWdlKSB7XG4gICAgdmFyIHQgPSBnbG9iYWxUaGlzLnByb2Nlc3MuY3B1VXNhZ2UoKTtcbiAgICByZXR1cm4gQkxPQ0soMCwgdC51c2VyIC8gMWU2LCB0LnN5c3RlbSAvIDFlNiwgMCwgMCk7XG4gIH0gZWxzZSBpZiAoZ2xvYmFsVGhpcy5wZXJmb3JtYW5jZT8ubm93KSB7XG4gICAgcmV0dXJuIEJMT0NLKDAsIGdsb2JhbFRoaXMucGVyZm9ybWFuY2Uubm93KCkgLyAxMDAwLCAwLCAwLCAwKTtcbiAgfSBlbHNlIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3RpbWVzOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2dtdGltZVxuLy9BbGlhczogdW5peF9nbXRpbWVcbmZ1bmN0aW9uIGNhbWxfdW5peF9nbXRpbWUodCkge1xuICB2YXIgZCA9IG5ldyBEYXRlKHQgKiAxMDAwKTtcbiAgdmFyIGRfbnVtID0gZC5nZXRUaW1lKCk7XG4gIHZhciBqYW51YXJ5Zmlyc3QgPSBuZXcgRGF0ZShEYXRlLlVUQyhkLmdldFVUQ0Z1bGxZZWFyKCksIDAsIDEpKS5nZXRUaW1lKCk7XG4gIHZhciBkb3kgPSBNYXRoLmZsb29yKChkX251bSAtIGphbnVhcnlmaXJzdCkgLyA4NjQwMDAwMCk7XG4gIHJldHVybiBCTE9DSyhcbiAgICAwLFxuICAgIGQuZ2V0VVRDU2Vjb25kcygpLFxuICAgIGQuZ2V0VVRDTWludXRlcygpLFxuICAgIGQuZ2V0VVRDSG91cnMoKSxcbiAgICBkLmdldFVUQ0RhdGUoKSxcbiAgICBkLmdldFVUQ01vbnRoKCksXG4gICAgZC5nZXRVVENGdWxsWWVhcigpIC0gMTkwMCxcbiAgICBkLmdldFVUQ0RheSgpLFxuICAgIGRveSxcbiAgICBmYWxzZSB8IDAgLyogZm9yIFVUQyBkYXlsaWdodCBzYXZpbmdzIHRpbWUgaXMgZmFsc2UgKi8sXG4gICk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9sb2NhbHRpbWVcbi8vQWxpYXM6IHVuaXhfbG9jYWx0aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfbG9jYWx0aW1lKHQpIHtcbiAgdmFyIGQgPSBuZXcgRGF0ZSh0ICogMTAwMCk7XG4gIHZhciBkX251bSA9IGQuZ2V0VGltZSgpO1xuICB2YXIgamFudWFyeWZpcnN0ID0gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCAwLCAxKS5nZXRUaW1lKCk7XG4gIHZhciBkb3kgPSBNYXRoLmZsb29yKChkX251bSAtIGphbnVhcnlmaXJzdCkgLyA4NjQwMDAwMCk7XG4gIHZhciBqYW4gPSBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIDAsIDEpO1xuICB2YXIganVsID0gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCA2LCAxKTtcbiAgdmFyIHN0ZFRpbWV6b25lT2Zmc2V0ID0gTWF0aC5tYXgoXG4gICAgamFuLmdldFRpbWV6b25lT2Zmc2V0KCksXG4gICAganVsLmdldFRpbWV6b25lT2Zmc2V0KCksXG4gICk7XG4gIHJldHVybiBCTE9DSyhcbiAgICAwLFxuICAgIGQuZ2V0U2Vjb25kcygpLFxuICAgIGQuZ2V0TWludXRlcygpLFxuICAgIGQuZ2V0SG91cnMoKSxcbiAgICBkLmdldERhdGUoKSxcbiAgICBkLmdldE1vbnRoKCksXG4gICAgZC5nZXRGdWxsWWVhcigpIC0gMTkwMCxcbiAgICBkLmdldERheSgpLFxuICAgIGRveSxcbiAgICAoZC5nZXRUaW1lem9uZU9mZnNldCgpIDwgc3RkVGltZXpvbmVPZmZzZXQpIHxcbiAgICAgIDAgLyogZGF5bGlnaHQgc2F2aW5ncyB0aW1lICBmaWVsZC4gKi8sXG4gICk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9ta3RpbWVcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sb2NhbHRpbWVcbi8vQWxpYXM6IHVuaXhfbWt0aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfbWt0aW1lKHRtKSB7XG4gIHZhciBkID0gbmV3IERhdGUodG1bNl0gKyAxOTAwLCB0bVs1XSwgdG1bNF0sIHRtWzNdLCB0bVsyXSwgdG1bMV0pLmdldFRpbWUoKTtcbiAgdmFyIHQgPSBNYXRoLmZsb29yKGQgLyAxMDAwKTtcbiAgdmFyIHRtMiA9IGNhbWxfdW5peF9sb2NhbHRpbWUodCk7XG4gIHJldHVybiBCTE9DSygwLCB0LCB0bTIpO1xufVxuLy9Qcm92aWRlczogY2FtbF91bml4X3N0YXJ0dXAgY29uc3Rcbi8vQWxpYXM6IHdpbl9zdGFydHVwXG5mdW5jdGlvbiBjYW1sX3VuaXhfc3RhcnR1cCgpIHt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9jbGVhbnVwIGNvbnN0XG4vL0FsaWFzOiB3aW5fY2xlYW51cFxuZnVuY3Rpb24gY2FtbF91bml4X2NsZWFudXAoKSB7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZmlsZWRlc2NyX29mX2ZkIGNvbnN0XG4vL0FsaWFzOiB3aW5faGFuZGxlX2ZkXG5mdW5jdGlvbiBjYW1sX3VuaXhfZmlsZWRlc2NyX29mX2ZkKHgpIHtcbiAgcmV0dXJuIHg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9pc2F0dHlcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sb29rdXBfZmlsZVxuLy9BbGlhczogdW5peF9pc2F0dHlcbmZ1bmN0aW9uIGNhbWxfdW5peF9pc2F0dHkoZmQpIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3VuaXhfbG9va3VwX2ZpbGUoZmQpO1xuICBpZiAoIWZpbGUuaXNhdHR5KSByZXR1cm4gMDtcbiAgcmV0dXJuIGZpbGUuaXNhdHR5KCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9pc2F0dHlcbi8vQWxpYXM6IHVuaXhfaXNhdHR5XG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBjYW1sX3VuaXhfaXNhdHR5KF9maWxlRGVzY3JpcHRvcikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogdW5peF9lcnJvclxudmFyIHVuaXhfZXJyb3IgPSBbXG4gIC8qID09PVVuaXguZXJyb3I9PT1cbiAgICpcbiAgICogVGhpcyBhcnJheSBpcyBpbiBvcmRlciBvZiB0aGUgdmFyaWFudCBpbiBPQ2FtbFxuICAgKi9cbiAgXCJFMkJJR1wiLFxuICBcIkVBQ0NFU1wiLFxuICBcIkVBR0FJTlwiLFxuICBcIkVCQURGXCIsXG4gIFwiRUJVU1lcIixcbiAgXCJFQ0hJTERcIixcbiAgXCJFREVBRExLXCIsXG4gIFwiRURPTVwiLFxuICBcIkVFWElTVFwiLFxuICBcIkVGQVVMVFwiLFxuICBcIkVGQklHXCIsXG4gIFwiRUlOVFJcIixcbiAgXCJFSU5WQUxcIixcbiAgXCJFSU9cIixcbiAgXCJFSVNESVJcIixcbiAgXCJFTUZJTEVcIixcbiAgXCJFTUxJTktcIixcbiAgXCJFTkFNRVRPT0xPTkdcIixcbiAgXCJFTkZJTEVcIixcbiAgXCJFTk9ERVZcIixcbiAgXCJFTk9FTlRcIixcbiAgXCJFTk9FWEVDXCIsXG4gIFwiRU5PTENLXCIsXG4gIFwiRU5PTUVNXCIsXG4gIFwiRU5PU1BDXCIsXG4gIFwiRU5PU1lTXCIsXG4gIFwiRU5PVERJUlwiLFxuICBcIkVOT1RFTVBUWVwiLFxuICBcIkVOT1RUWVwiLFxuICBcIkVOWElPXCIsXG4gIFwiRVBFUk1cIixcbiAgXCJFUElQRVwiLFxuICBcIkVSQU5HRVwiLFxuICBcIkVST0ZTXCIsXG4gIFwiRVNQSVBFXCIsXG4gIFwiRVNSQ0hcIixcbiAgXCJFWERFVlwiLFxuICBcIkVXT1VMREJMT0NLXCIsXG4gIFwiRUlOUFJPR1JFU1NcIixcbiAgXCJFQUxSRUFEWVwiLFxuICBcIkVOT1RTT0NLXCIsXG4gIFwiRURFU1RBRERSUkVRXCIsXG4gIFwiRU1TR1NJWkVcIixcbiAgXCJFUFJPVE9UWVBFXCIsXG4gIFwiRU5PUFJPVE9PUFRcIixcbiAgXCJFUFJPVE9OT1NVUFBPUlRcIixcbiAgXCJFU09DS1ROT1NVUFBPUlRcIixcbiAgXCJFT1BOT1RTVVBQXCIsXG4gIFwiRVBGTk9TVVBQT1JUXCIsXG4gIFwiRUFGTk9TVVBQT1JUXCIsXG4gIFwiRUFERFJJTlVTRVwiLFxuICBcIkVBRERSTk9UQVZBSUxcIixcbiAgXCJFTkVURE9XTlwiLFxuICBcIkVORVRVTlJFQUNIXCIsXG4gIFwiRU5FVFJFU0VUXCIsXG4gIFwiRUNPTk5BQk9SVEVEXCIsXG4gIFwiRUNPTk5SRVNFVFwiLFxuICBcIkVOT0JVRlNcIixcbiAgXCJFSVNDT05OXCIsXG4gIFwiRU5PVENPTk5cIixcbiAgXCJFU0hVVERPV05cIixcbiAgXCJFVE9PTUFOWVJFRlNcIixcbiAgXCJFVElNRURPVVRcIixcbiAgXCJFQ09OTlJFRlVTRURcIixcbiAgXCJFSE9TVERPV05cIixcbiAgXCJFSE9TVFVOUkVBQ0hcIixcbiAgXCJFTE9PUFwiLFxuICBcIkVPVkVSRkxPV1wiLFxuXTtcblxuLy9Qcm92aWRlczogbWFrZV91bml4X2Vycl9hcmdzXG4vL1JlcXVpcmVzOiB1bml4X2Vycm9yLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuZnVuY3Rpb24gbWFrZV91bml4X2Vycl9hcmdzKGNvZGUsIHN5c2NhbGwsIHBhdGgsIGVycm5vKSB7XG4gIHZhciB2YXJpYW50ID0gdW5peF9lcnJvci5pbmRleE9mKGNvZGUpO1xuICBpZiAodmFyaWFudCA8IDApIHtcbiAgICAvLyBEZWZhdWx0IGlmIHVuZGVmaW5lZFxuICAgIGlmIChlcnJubyA9PSBudWxsKSB7XG4gICAgICBlcnJubyA9IC05OTk5O1xuICAgIH1cbiAgICAvLyBJZiBub25lIG9mIHRoZSBhYm92ZSB2YXJpYW50cywgZmFsbGJhY2sgdG8gRVVOS05PV05FUlIoaW50KVxuICAgIC8vIGVycm5vIGlzIGV4cGVjdGVkIHRvIGJlIHBvc2l0aXZlXG4gICAgdmFyaWFudCA9IEJMT0NLKDAsIC1lcnJubyk7XG4gIH1cbiAgdmFyIGFyZ3MgPSBbXG4gICAgdmFyaWFudCxcbiAgICBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhzeXNjYWxsIHx8IFwiXCIpLFxuICAgIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHBhdGggfHwgXCJcIiksXG4gIF07XG4gIHJldHVybiBhcmdzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmVycm9yXG4vL1JlcXVpcmVzOiB1bml4X2Vycm9yXG5mdW5jdGlvbiBjYW1sX3N0cmVycm9yKGVycm5vKSB7XG4gIGNvbnN0IHV0aWwgPSByZXF1aXJlKFwibm9kZTp1dGlsXCIpO1xuICBpZiAoZXJybm8gPj0gMCkge1xuICAgIGNvbnN0IGNvZGUgPSB1bml4X2Vycm9yW2Vycm5vXTtcbiAgICByZXR1cm4gdXRpbFxuICAgICAgLmdldFN5c3RlbUVycm9yTWFwKClcbiAgICAgIC5lbnRyaWVzKClcbiAgICAgIC5maW5kKCh4KSA9PiB4WzFdWzBdID09PSBjb2RlKVsxXVsxXTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdXRpbC5nZXRTeXN0ZW1FcnJvck1lc3NhZ2UoZXJybm8pO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyZXJyb3Jcbi8vUmVxdWlyZXM6IHVuaXhfZXJyb3Jcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGNhbWxfc3RyZXJyb3IoZXJybm8pIHtcbiAgY29uc3QgY29kZSA9IHVuaXhfZXJyb3JbZXJybm9dO1xuICByZXR1cm4gY29kZSB8fCBcIlVua25vd24gZXJyb3IgXCIgKyBlcnJubztcbn1cblxuLy9Qcm92aWRlczogdW5peF9lcnJvcl9tZXNzYWdlXG4vL0FsaWFzOiBjYW1sX3VuaXhfZXJyb3JfbWVzc2FnZVxuLy9SZXF1aXJlczogY2FtbF9zdHJlcnJvciwgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbmZ1bmN0aW9uIHVuaXhfZXJyb3JfbWVzc2FnZShlcnIpIHtcbiAgY29uc3QgZXJybm8gPSB0eXBlb2YgZXJyID09PSBcIm51bWJlclwiID8gZXJyIDogLWVyclsxXTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGNhbWxfc3RyZXJyb3IoZXJybm8pKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2NoZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19jaGRpclxuLy9BbGlhczogdW5peF9jaGRpclxuZnVuY3Rpb24gY2FtbF91bml4X2NoZGlyKGRpcikge1xuICByZXR1cm4gY2FtbF9zeXNfY2hkaXIoZGlyLCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfc3RhdFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfc3RhdFxuZnVuY3Rpb24gY2FtbF91bml4X3N0YXQobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnN0YXQpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3N0YXQ6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2Uuc3RhdChcbiAgICByb290LnJlc3QsXG4gICAgLyogbGFyZ2UgKi8gZmFsc2UsXG4gICAgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlLFxuICApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfc3RhdF82NFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfc3RhdF82NFxuZnVuY3Rpb24gY2FtbF91bml4X3N0YXRfNjQobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnN0YXQpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3N0YXRfNjQ6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2Uuc3RhdChcbiAgICByb290LnJlc3QsXG4gICAgLyogbGFyZ2UgKi8gdHJ1ZSxcbiAgICAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUsXG4gICk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9sc3RhdFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfbHN0YXRcbmZ1bmN0aW9uIGNhbWxfdW5peF9sc3RhdChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UubHN0YXQpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X2xzdGF0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmxzdGF0KFxuICAgIHJvb3QucmVzdCxcbiAgICAvKiBsYXJnZSAqLyBmYWxzZSxcbiAgICAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUsXG4gICk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9sc3RhdF82NFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfbHN0YXRfNjRcbmZ1bmN0aW9uIGNhbWxfdW5peF9sc3RhdF82NChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UubHN0YXQpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X2xzdGF0XzY0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmxzdGF0KFxuICAgIHJvb3QucmVzdCxcbiAgICAvKiBsYXJnZSAqLyB0cnVlLFxuICAgIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSxcbiAgKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2NobW9kXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9jaG1vZFxuZnVuY3Rpb24gY2FtbF91bml4X2NobW9kKG5hbWUsIHBlcm1zKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UuY2htb2QpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X2NobW9kOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmNobW9kKHJvb3QucmVzdCwgcGVybXMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfcmVuYW1lXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCByZXNvbHZlX2ZzX2RldmljZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3Jcbi8vQWxpYXM6IHVuaXhfcmVuYW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfcmVuYW1lKG8sIG4pIHtcbiAgdmFyIG9fcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG8pO1xuICB2YXIgbl9yb290ID0gcmVzb2x2ZV9mc19kZXZpY2Uobik7XG4gIGlmIChvX3Jvb3QuZGV2aWNlICE9PSBuX3Jvb3QuZGV2aWNlKVxuICAgIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gMSwgXCJFWERFVlwiLCBcInJlbmFtZVwiKTtcbiAgaWYgKCFvX3Jvb3QuZGV2aWNlLnJlbmFtZSkgY2FtbF9mYWlsd2l0aChcImNhbWxfc3lzX3JlbmFtZTogbm90IGltcGxlbWVudGVkXCIpO1xuICBvX3Jvb3QuZGV2aWNlLnJlbmFtZShvX3Jvb3QucmVzdCwgbl9yb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9ta2RpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfbWtkaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9ta2RpcihuYW1lLCBwZXJtKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UubWtkaXIpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X21rZGlyOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLm1rZGlyKHJvb3QucmVzdCwgcGVybSwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3JtZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9ybWRpclxuZnVuY3Rpb24gY2FtbF91bml4X3JtZGlyKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5ybWRpcikge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfcm1kaXI6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2Uucm1kaXIocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGgsIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yXG4vL0FsaWFzOiB1bml4X2xpbmtcbmZ1bmN0aW9uIGNhbWxfdW5peF9saW5rKGZvbGxvdywgc3JjLCBkc3QpIHtcbiAgdmFyIHNyY19yb290ID0gcmVzb2x2ZV9mc19kZXZpY2Uoc3JjKTtcbiAgdmFyIGRzdF9yb290ID0gcmVzb2x2ZV9mc19kZXZpY2UoZHN0KTtcbiAgaWYgKCFzcmNfcm9vdC5kZXZpY2UubGluaykge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfbGluazogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIC8vIFdlIGNhbid0IGNvbnRyb2wgd2hldGhlciBhICdzcmMnIHN5bWxpbmsgaXMgZm9sbG93ZWQgb3Igbm90LlxuICAvLyBTbyB3ZSBmYWlsIHdoZW4gJ2ZvbGxvdycgaXMgc2V0LCBhcyBkb2N1bWVudGVkIGluIHRoZSBVbml4IG1vZHVsZS5cbiAgaWYgKHR5cGVvZiBmb2xsb3cgIT09IFwibnVtYmVyXCIpXG4gICAgY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3IoLyogcmFpc2UgVW5peF9lcnJvciAqLyAxLCBcIkVOT1NZU1wiLCBcImxpbmtcIik7XG4gIGlmIChzcmNfcm9vdC5kZXZpY2UgIT09IGRzdF9yb290LmRldmljZSlcbiAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcigvKiByYWlzZSBVbml4X2Vycm9yICovIDEsIFwiRVhERVZcIiwgXCJsaW5rXCIpO1xuICByZXR1cm4gc3JjX3Jvb3QuZGV2aWNlLmxpbmsoXG4gICAgc3JjX3Jvb3QucmVzdCxcbiAgICBkc3Rfcm9vdC5yZXN0LFxuICAgIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSxcbiAgKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3N5bWxpbmtcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9BbGlhczogdW5peF9zeW1saW5rXG5mdW5jdGlvbiBjYW1sX3VuaXhfc3ltbGluayh0b19kaXIsIHNyYywgZHN0KSB7XG4gIHZhciBkc3Rfcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKGRzdCk7XG4gIGlmICghZHN0X3Jvb3QuZGV2aWNlLnN5bWxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3N5bWxpbms6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gZHN0X3Jvb3QuZGV2aWNlLnN5bWxpbmsoXG4gICAgdG9fZGlyLFxuICAgIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHNyYyksXG4gICAgZHN0X3Jvb3QucmVzdCxcbiAgICAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUsXG4gICk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9yZWFkbGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfcmVhZGxpbmtcbmZ1bmN0aW9uIGNhbWxfdW5peF9yZWFkbGluayhuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UucmVhZGxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3JlYWRsaW5rOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnJlYWRsaW5rKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3VubGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfdW5saW5rXG5mdW5jdGlvbiBjYW1sX3VuaXhfdW5saW5rKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS51bmxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3VubGluazogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJvb3QuZGV2aWNlLnVubGluayhyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfdXRpbWVzXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF91dGltZXNcbmZ1bmN0aW9uIGNhbWxfdW5peF91dGltZXMobmFtZSwgYXRpbWUsIG10aW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UudXRpbWVzKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF91dGltZXM6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByb290LmRldmljZS51dGltZXMocm9vdC5yZXN0LCBhdGltZSwgbXRpbWUsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfdHJ1bmNhdGVcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3RydW5jYXRlXG5mdW5jdGlvbiBjYW1sX3VuaXhfdHJ1bmNhdGUobmFtZSwgbGVuKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UudHJ1bmNhdGUpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3RydW5jYXRlOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcm9vdC5kZXZpY2UudHJ1bmNhdGUocm9vdC5yZXN0LCBsZW4sIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfdHJ1bmNhdGVfNjRcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX2ludDY0X3RvX2Zsb2F0XG4vL0FsaWFzOiB1bml4X3RydW5jYXRlXzY0XG5mdW5jdGlvbiBjYW1sX3VuaXhfdHJ1bmNhdGVfNjQobmFtZSwgbGVuKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UudHJ1bmNhdGUpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3RydW5jYXRlXzY0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcm9vdC5kZXZpY2UudHJ1bmNhdGUoXG4gICAgcm9vdC5yZXN0LFxuICAgIGNhbWxfaW50NjRfdG9fZmxvYXQobGVuKSxcbiAgICAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUsXG4gICk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfYWNjZXNzXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9hY2Nlc3NcbmZ1bmN0aW9uIGNhbWxfdW5peF9hY2Nlc3MobmFtZSwgZmxhZ3MpIHtcbiAgdmFyIGYgPSB7fTtcbiAgd2hpbGUgKGZsYWdzKSB7XG4gICAgc3dpdGNoIChmbGFnc1sxXSkge1xuICAgICAgY2FzZSAwOlxuICAgICAgICBmLnIgPSAxO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgZi53ID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI6XG4gICAgICAgIGYueCA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzOlxuICAgICAgICBmLmYgPSAxO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgZmxhZ3MgPSBmbGFnc1syXTtcbiAgfVxuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLmFjY2Vzcykge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfYWNjZXNzOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcm9vdC5kZXZpY2UuYWNjZXNzKHJvb3QucmVzdCwgZiwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9vcGVuXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9zeXNfZmRzLCBNbENoYW5pZFxuLy9BbGlhczogdW5peF9vcGVuXG5mdW5jdGlvbiBjYW1sX3VuaXhfb3BlbihuYW1lLCBmbGFncywgcGVybXMpIHtcbiAgdmFyIGYgPSB7fTtcbiAgd2hpbGUgKGZsYWdzKSB7XG4gICAgc3dpdGNoIChmbGFnc1sxXSkge1xuICAgICAgY2FzZSAwOlxuICAgICAgICBmLnJkb25seSA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxOlxuICAgICAgICBmLndyb25seSA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICBmLnJkd3IgPSAxO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMzpcbiAgICAgICAgZi5ub25ibG9jayA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA0OlxuICAgICAgICBmLmFwcGVuZCA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA1OlxuICAgICAgICBmLmNyZWF0ZSA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA2OlxuICAgICAgICBmLnRydW5jYXRlID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDc6XG4gICAgICAgIGYuZXhjbCA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA4OlxuICAgICAgICBmLm5vY3R0eSA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA5OlxuICAgICAgICBmLmRzeW5jID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEwOlxuICAgICAgICBmLnN5bmMgPSAxO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgZmxhZ3MgPSBmbGFnc1syXTtcbiAgfVxuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgZmlsZSA9IHJvb3QuZGV2aWNlLm9wZW4ocm9vdC5yZXN0LCBmLCBwZXJtcywgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbiAgdmFyIGlkeCA9IGNhbWxfc3lzX2Zkcy5sZW5ndGg7XG4gIHZhciBjaGFuaWQgPSBuZXcgTWxDaGFuaWQoaWR4KTtcbiAgY2FtbF9zeXNfZmRzW2lkeF0gPSB7IGZpbGU6IGZpbGUsIGNoYW5pZDogY2hhbmlkIH07XG4gIHJldHVybiBpZHggfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbG9va3VwX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2ZkcywgY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3JcbmZ1bmN0aW9uIGNhbWxfdW5peF9sb29rdXBfZmlsZShmZCwgY21kKSB7XG4gIHZhciBmZF9kZXNjID0gY2FtbF9zeXNfZmRzW2ZkXTtcbiAgaWYgKGZkX2Rlc2MgPT09IHVuZGVmaW5lZClcbiAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcigvKiByYWlzZSBVbml4X2Vycm9yICovIDEsIFwiRUJBREZcIiwgY21kKTtcbiAgcmV0dXJuIGZkX2Rlc2MuZmlsZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZzdGF0XG4vL0FsaWFzOiB1bml4X2ZzdGF0XG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfbG9va3VwX2ZpbGUsIGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfdW5peF9mc3RhdChmZCkge1xuICB2YXIgZmlsZSA9IGNhbWxfdW5peF9sb29rdXBfZmlsZShmZCwgXCJmc3RhdFwiKTtcbiAgaWYgKCFmaWxlLnN0YXQpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X2ZzdGF0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIGZpbGUuc3RhdCgvKiBsYXJnZSAqLyBmYWxzZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9mc3RhdF82NFxuLy9BbGlhczogdW5peF9mc3RhdF82NFxuLy9SZXF1aXJlczogY2FtbF91bml4X2xvb2t1cF9maWxlLCBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX3VuaXhfZnN0YXRfNjQoZmQpIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3VuaXhfbG9va3VwX2ZpbGUoZmQsIFwiZnN0YXRcIik7XG4gIGlmICghZmlsZS5zdGF0KSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9mc3RhdDY0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIGZpbGUuc3RhdCgvKiBsYXJnZSAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZjaG1vZFxuLy9BbGlhczogdW5peF9mY2htb2Rcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sb29rdXBfZmlsZSwgY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF91bml4X2ZjaG1vZChmZCwgcGVybXMpIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3VuaXhfbG9va3VwX2ZpbGUoZmQsIFwiZmNobW9kXCIpO1xuICBpZiAoIWZpbGUuY2htb2QpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X2ZjaG1vZDogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiBmaWxlLmNobW9kKHBlcm1zKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZzeW5jXG4vL0FsaWFzOiB1bml4X2ZzeW5jXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfbG9va3VwX2ZpbGUsIGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfdW5peF9mc3luYyhmZCkge1xuICB2YXIgZmlsZSA9IGNhbWxfdW5peF9sb29rdXBfZmlsZShmZCwgXCJmc3luY1wiKTtcbiAgaWYgKCFmaWxlLnN5bmMpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X2ZzeW5jOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIGZpbGUuc3luYygpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfd3JpdGVcbi8vQWxpYXM6IHVuaXhfd3JpdGVcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sb29rdXBfZmlsZSwgY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF91bml4X3dyaXRlKGZkLCBidWYsIHBvcywgbGVuKSB7XG4gIHZhciBmaWxlID0gY2FtbF91bml4X2xvb2t1cF9maWxlKGZkLCBcIndyaXRlXCIpO1xuICB2YXIgYSA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoYnVmKTtcbiAgdmFyIHdyaXR0ZW4gPSAwO1xuICB3aGlsZSAobGVuID4gMCkge1xuICAgIHZhciBuID0gZmlsZS53cml0ZShhLCBwb3MsIGxlbiwgLyogcmFpc2UgdW5peF9lcnJvciAqLyAxKTtcbiAgICB3cml0dGVuICs9IG47XG4gICAgcG9zICs9IG47XG4gICAgbGVuIC09IG47XG4gIH1cbiAgcmV0dXJuIHdyaXR0ZW47XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9zaW5nbGVfd3JpdGVcbi8vQWxpYXM6IHVuaXhfc2luZ2xlX3dyaXRlXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfbG9va3VwX2ZpbGUsIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfdW5peF9zaW5nbGVfd3JpdGUoZmQsIGJ1ZiwgcG9zLCBsZW4pIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3VuaXhfbG9va3VwX2ZpbGUoZmQsIFwid3JpdGVcIik7XG4gIGlmIChsZW4gPT09IDApIHJldHVybiAwO1xuICByZXR1cm4gZmlsZS53cml0ZShcbiAgICBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGJ1ZiksXG4gICAgcG9zLFxuICAgIGxlbixcbiAgICAvKiByYWlzZSB1bml4X2Vycm9yICovIDEsXG4gICk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF93cml0ZV9iaWdhcnJheVxuLy9BbGlhczogY2FtbF91bml4X2xvb2t1cF9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5LCBjYW1sX3VuaXhfbG9va3VwX2ZpbGVcbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBjYW1sX3VuaXhfd3JpdGVfYmlnYXJyYXkoZmQsIGJ1ZiwgcG9zLCBsZW4pIHtcbiAgdmFyIGEgPSBjYW1sX2JhX3RvX3R5cGVkX2FycmF5KGJ1Zik7XG4gIHZhciBmaWxlID0gY2FtbF91bml4X2xvb2t1cF9maWxlKGZkLCBcIndyaXRlXCIpO1xuICB2YXIgd3JpdHRlbiA9IDA7XG4gIHdoaWxlIChsZW4gPiAwKSB7XG4gICAgdmFyIG4gPSBmaWxlLndyaXRlKGEsIHBvcywgbGVuLCAvKiByYWlzZSB1bml4X2Vycm9yICovIDEpO1xuICAgIHdyaXR0ZW4gKz0gbjtcbiAgICBwb3MgKz0gbjtcbiAgICBsZW4gLT0gbjtcbiAgfVxuICByZXR1cm4gd3JpdHRlbjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3JlYWRcbi8vQWxpYXM6IHVuaXhfcmVhZFxuLy9SZXF1aXJlczogY2FtbF91bml4X2xvb2t1cF9maWxlLCBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX3VuaXhfcmVhZChmZCwgYnVmLCBwb3MsIGxlbikge1xuICB2YXIgZmlsZSA9IGNhbWxfdW5peF9sb29rdXBfZmlsZShmZCwgXCJyZWFkXCIpO1xuICByZXR1cm4gZmlsZS5yZWFkKFxuICAgIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoYnVmKSxcbiAgICBwb3MsXG4gICAgbGVuLFxuICAgIC8qIHJhaXNlIHVuaXhfZXJyb3IgKi8gMSxcbiAgKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3JlYWRfYmlnYXJyYXlcbi8vQWxpYXM6IHVuaXhfcmVhZF9iaWdhcnJheVxuLy9SZXF1aXJlczogY2FtbF9iYV90b190eXBlZF9hcnJheSwgY2FtbF91bml4X2xvb2t1cF9maWxlXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF91bml4X3JlYWRfYmlnYXJyYXkoZmQsIGJ1ZiwgcG9zLCBsZW4pIHtcbiAgdmFyIGEgPSBjYW1sX2JhX3RvX3R5cGVkX2FycmF5KGJ1Zik7XG4gIHZhciBmaWxlID0gY2FtbF91bml4X2xvb2t1cF9maWxlKGZkLCBcInJlYWRcIik7XG4gIHJldHVybiBmaWxlLnJlYWQoYSwgcG9zLCBsZW4sIC8qIHJhaXNlIHVuaXhfZXJyb3IgKi8gMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9sc2Vla1xuLy9BbGlhczogdW5peF9sc2Vla1xuLy9SZXF1aXJlczogY2FtbF91bml4X2xvb2t1cF9maWxlXG5mdW5jdGlvbiBjYW1sX3VuaXhfbHNlZWsoZmQsIGxlbiwgd2hlbmNlKSB7XG4gIHZhciBmaWxlID0gY2FtbF91bml4X2xvb2t1cF9maWxlKGZkLCBcImxzZWVrXCIpO1xuICByZXR1cm4gZmlsZS5zZWVrKGxlbiwgd2hlbmNlLCAvKiByYWlzZSB1bml4X2Vycm9yICovIDEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbHNlZWtfNjRcbi8vQWxpYXM6IHVuaXhfbHNlZWtfNjRcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sb29rdXBfZmlsZSwgY2FtbF9pbnQ2NF90b19mbG9hdFxuZnVuY3Rpb24gY2FtbF91bml4X2xzZWVrXzY0KGZkLCBsZW4sIHdoZW5jZSkge1xuICB2YXIgZmlsZSA9IGNhbWxfdW5peF9sb29rdXBfZmlsZShmZCwgXCJsc2Vla1wiKTtcbiAgcmV0dXJuIGZpbGUuc2VlayhjYW1sX2ludDY0X3RvX2Zsb2F0KGxlbiksIHdoZW5jZSwgLyogcmFpc2UgdW5peF9lcnJvciAqLyAxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2Z0cnVuY2F0ZVxuLy9BbGlhczogdW5peF9mdHJ1bmNhdGVcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sb29rdXBfZmlsZSwgY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF91bml4X2Z0cnVuY2F0ZShmZCwgbGVuKSB7XG4gIHZhciBmaWxlID0gY2FtbF91bml4X2xvb2t1cF9maWxlKGZkLCBcImZ0cnVuY2F0ZVwiKTtcbiAgaWYgKCFmaWxlLnRydW5jYXRlKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9mdHJ1bmNhdGU6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICBmaWxlLnRydW5jYXRlKGxlbiwgLyogcmFpc2UgdW5peF9lcnJvciAqLyAxKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9mdHJ1bmNhdGVfNjRcbi8vQWxpYXM6IHVuaXhfZnRydW5jYXRlXzY0XG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfbG9va3VwX2ZpbGUsIGNhbWxfZmFpbHdpdGgsIGNhbWxfaW50NjRfdG9fZmxvYXRcbmZ1bmN0aW9uIGNhbWxfdW5peF9mdHJ1bmNhdGVfNjQoZmQsIGxlbikge1xuICB2YXIgZmlsZSA9IGNhbWxfdW5peF9sb29rdXBfZmlsZShmZCwgXCJmdHJ1bmNhdGVcIik7XG4gIGlmICghZmlsZS50cnVuY2F0ZSkge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfZnRydW5jYXRlXzY0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgZmlsZS50cnVuY2F0ZShjYW1sX2ludDY0X3RvX2Zsb2F0KGxlbiksIC8qIHJhaXNlIHVuaXhfZXJyb3IgKi8gMSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfY2xvc2Vcbi8vQWxpYXM6IHVuaXhfY2xvc2Vcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sb29rdXBfZmlsZVxuZnVuY3Rpb24gY2FtbF91bml4X2Nsb3NlKGZkKSB7XG4gIHZhciBmaWxlID0gY2FtbF91bml4X2xvb2t1cF9maWxlKGZkLCBcImNsb3NlXCIpO1xuICBmaWxlLmNsb3NlKC8qIHJhaXNlIHVuaXhfZXJyb3IgKi8gMSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfaW5jaGFubmVsX29mX2ZpbGVkZXNjclxuLy9BbGlhczogdW5peF9pbmNoYW5uZWxfb2ZfZmlsZWRlc2NyXG4vL0FsaWFzOiB3aW5faW5jaGFubmVsX29mX2ZpbGVkZXNjclxuLy9SZXF1aXJlczogY2FtbF91bml4X2xvb2t1cF9maWxlLCBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pblxuZnVuY3Rpb24gY2FtbF91bml4X2luY2hhbm5lbF9vZl9maWxlZGVzY3IoZmQpIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3VuaXhfbG9va3VwX2ZpbGUoZmQsIFwiaW5fY2hhbm5lbF9vZl9kZXNjclwiKTtcbiAgZmlsZS5jaGVja19zdHJlYW1fc2VtYW50aWNzKFwiaW5fY2hhbm5lbF9vZl9kZXNjclwiKTtcbiAgcmV0dXJuIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luKGZkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X291dGNoYW5uZWxfb2ZfZmlsZWRlc2NyXG4vL0FsaWFzOiB1bml4X291dGNoYW5uZWxfb2ZfZmlsZWRlc2NyXG4vL0FsaWFzOiB3aW5fb3V0Y2hhbm5lbF9vZl9maWxlZGVzY3Jcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sb29rdXBfZmlsZSwgY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0XG5mdW5jdGlvbiBjYW1sX3VuaXhfb3V0Y2hhbm5lbF9vZl9maWxlZGVzY3IoZmQpIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3VuaXhfbG9va3VwX2ZpbGUoZmQsIFwib3V0X2NoYW5uZWxfb2ZfZGVzY3JcIik7XG4gIGZpbGUuY2hlY2tfc3RyZWFtX3NlbWFudGljcyhcIm91dF9jaGFubmVsX29mX2Rlc2NyXCIpO1xuICByZXR1cm4gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0KGZkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2dldHVpZFxuLy9BbGlhczogdW5peF9nZXR1aWRcbmZ1bmN0aW9uIGNhbWxfdW5peF9nZXR1aWQoX3VuaXQpIHtcbiAgaWYgKGdsb2JhbFRoaXMucHJvY2Vzcz8uZ2V0dWlkKSB7XG4gICAgcmV0dXJuIGdsb2JhbFRoaXMucHJvY2Vzcy5nZXR1aWQoKTtcbiAgfVxuICByZXR1cm4gMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2dldGV1aWRcbi8vQWxpYXM6IHVuaXhfZ2V0ZXVpZFxuZnVuY3Rpb24gY2FtbF91bml4X2dldGV1aWQoX3VuaXQpIHtcbiAgaWYgKGdsb2JhbFRoaXMucHJvY2Vzcz8uZ2V0ZXVpZCkge1xuICAgIHJldHVybiBnbG9iYWxUaGlzLnByb2Nlc3MuZ2V0ZXVpZCgpO1xuICB9XG4gIHJldHVybiAxO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZ2V0Z2lkXG4vL0FsaWFzOiB1bml4X2dldGdpZFxuZnVuY3Rpb24gY2FtbF91bml4X2dldGdpZChfdW5pdCkge1xuICBpZiAoZ2xvYmFsVGhpcy5wcm9jZXNzPy5nZXRnaWQpIHtcbiAgICByZXR1cm4gZ2xvYmFsVGhpcy5wcm9jZXNzLmdldGdpZCgpO1xuICB9XG4gIHJldHVybiAxO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZ2V0ZWdpZFxuLy9BbGlhczogdW5peF9nZXRlZ2lkXG5mdW5jdGlvbiBjYW1sX3VuaXhfZ2V0ZWdpZChfdW5pdCkge1xuICBpZiAoZ2xvYmFsVGhpcy5wcm9jZXNzPy5nZXRlZ2lkKSB7XG4gICAgcmV0dXJuIGdsb2JhbFRoaXMucHJvY2Vzcy5nZXRlZ2lkKCk7XG4gIH1cbiAgcmV0dXJuIDE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9nZXRwd25hbVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub3RfZm91bmRcbi8vQWxpYXM6IHVuaXhfZ2V0cHduYW1cbi8vQWxpYXM6IGNhbWxfdW5peF9nZXRwd3VpZFxuLy9BbGlhczogdW5peF9nZXRwd3VpZFxuLy9BbGlhczogY2FtbF91bml4X2dldGdybmFtXG4vL0FsaWFzOiB1bml4X2dldGdybmFtXG4vL0FsaWFzOiBjYW1sX3VuaXhfZ2V0Z3JnaWRcbi8vQWxpYXM6IHVuaXhfZ2V0Z3JnaWRcbmZ1bmN0aW9uIGNhbWxfdW5peF9nZXRwd25hbShfdW5pdCkge1xuICBjYW1sX3JhaXNlX25vdF9mb3VuZCgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfaGFzX3N5bWxpbmtcbi8vUmVxdWlyZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL0FsaWFzOiB1bml4X2hhc19zeW1saW5rXG5mdW5jdGlvbiBjYW1sX3VuaXhfaGFzX3N5bWxpbmsoX3VuaXQpIHtcbiAgcmV0dXJuIGZzX25vZGVfc3VwcG9ydGVkKCkgPyAxIDogMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X29wZW5kaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X29wZW5kaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9vcGVuZGlyKHBhdGgpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShwYXRoKTtcbiAgaWYgKCFyb290LmRldmljZS5vcGVuZGlyKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9vcGVuZGlyOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgdmFyIGRpcl9oYW5kbGUgPSByb290LmRldmljZS5vcGVuZGlyKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbiAgcmV0dXJuIHsgcG9pbnRlcjogZGlyX2hhbmRsZSwgcGF0aDogcGF0aCB9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfcmVhZGRpclxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yXG4vL0FsaWFzOiB1bml4X3JlYWRkaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9yZWFkZGlyKGRpcl9oYW5kbGUpIHtcbiAgdmFyIGVudHJ5O1xuICB0cnkge1xuICAgIGVudHJ5ID0gZGlyX2hhbmRsZS5wb2ludGVyLnJlYWRTeW5jKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcigvKiByYWlzZSBVbml4X2Vycm9yICovIDEsIFwiRUJBREZcIiwgXCJyZWFkZGlyXCIpO1xuICB9XG4gIGlmIChlbnRyeSA9PT0gbnVsbCkge1xuICAgIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoZW50cnkubmFtZSk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2Nsb3NlZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvclxuLy9BbGlhczogdW5peF9jbG9zZWRpclxuZnVuY3Rpb24gY2FtbF91bml4X2Nsb3NlZGlyKGRpcl9oYW5kbGUpIHtcbiAgdHJ5IHtcbiAgICBkaXJfaGFuZGxlLnBvaW50ZXIuY2xvc2VTeW5jKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcigvKiByYWlzZSBVbml4X2Vycm9yICovIDEsIFwiRUJBREZcIiwgXCJjbG9zZWRpclwiKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfcmV3aW5kZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfY2xvc2VkaXIsIGNhbWxfdW5peF9vcGVuZGlyXG4vL0FsaWFzOiB1bml4X3Jld2luZGRpclxuZnVuY3Rpb24gY2FtbF91bml4X3Jld2luZGRpcihkaXJfaGFuZGxlKSB7XG4gIGNhbWxfdW5peF9jbG9zZWRpcihkaXJfaGFuZGxlKTtcbiAgdmFyIG5ld19kaXJfaGFuZGxlID0gY2FtbF91bml4X29wZW5kaXIoZGlyX2hhbmRsZS5wYXRoKTtcbiAgZGlyX2hhbmRsZS5wb2ludGVyID0gbmV3X2Rpcl9oYW5kbGUucG9pbnRlcjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9maW5kZmlyc3Rcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF91bml4X29wZW5kaXIsIGNhbWxfdW5peF9yZWFkZGlyXG4vL0FsaWFzOiB3aW5fZmluZGZpcnN0XG5mdW5jdGlvbiBjYW1sX3VuaXhfZmluZGZpcnN0KHBhdGgpIHtcbiAgLy8gVGhlIFdpbmRvd3MgY29kZSBhZGRzIHRoaXMgZ2xvYiB0byB0aGUgcGF0aCwgc28gd2UgbmVlZCB0byByZW1vdmUgaXRcbiAgdmFyIHBhdGhfanMgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhwYXRoKTtcbiAgcGF0aF9qcyA9IHBhdGhfanMucmVwbGFjZSgvKF58W1xcXFwvXSlcXCpcXC5cXCokLywgXCJcIik7XG4gIHBhdGggPSBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhwYXRoX2pzKTtcbiAgLy8gKi4qIGlzIG5vdyBzdHJpcHBlZFxuICB2YXIgZGlyX2hhbmRsZSA9IGNhbWxfdW5peF9vcGVuZGlyKHBhdGgpO1xuICB2YXIgZmlyc3RfZW50cnkgPSBjYW1sX3VuaXhfcmVhZGRpcihkaXJfaGFuZGxlKTtcbiAgLy8gVGhlIFdpbmRvd3MgYmluZGluZ3MgdHlwZSBkaXJfaGFuZGxlIGFzIGFuIGBpbnRgIGJ1dCBpdCdzIG5vdCBpbiBKU1xuICByZXR1cm4gWzAsIGZpcnN0X2VudHJ5LCBkaXJfaGFuZGxlXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZpbmRuZXh0XG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfcmVhZGRpclxuLy9BbGlhczogd2luX2ZpbmRuZXh0XG5mdW5jdGlvbiBjYW1sX3VuaXhfZmluZG5leHQoZGlyX2hhbmRsZSkge1xuICByZXR1cm4gY2FtbF91bml4X3JlYWRkaXIoZGlyX2hhbmRsZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9maW5kY2xvc2Vcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9jbG9zZWRpclxuLy9BbGlhczogd2luX2ZpbmRjbG9zZVxuZnVuY3Rpb24gY2FtbF91bml4X2ZpbmRjbG9zZShkaXJfaGFuZGxlKSB7XG4gIHJldHVybiBjYW1sX3VuaXhfY2xvc2VkaXIoZGlyX2hhbmRsZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nIGNvbnN0XG4vL0FsaWFzOiB1bml4X2luZXRfYWRkcl9vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nKCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmdzLCBtYWtlX3VuaXhfZXJyX2FyZ3MsIGNhbWxfbmFtZWRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcihyYWlzZV91bml4LCBjb2RlLCBjbWQsIG1zZywgcGF0aCkge1xuICB2YXIgdW5peF9lcnJvciA9IGNhbWxfbmFtZWRfdmFsdWUoXCJVbml4LlVuaXhfZXJyb3JcIik7XG4gIGlmIChyYWlzZV91bml4ICYmIHVuaXhfZXJyb3IpXG4gICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKGNvZGUsIGNtZCwgcGF0aCkpO1xuICBlbHNlIHtcbiAgICB2YXIgbXNnID0gY29kZSArIFwiOiBcIiArIG1zZyArIFwiLCBcIiArIGNtZDtcbiAgICBpZiAocGF0aCAhPT0gdW5kZWZpbmVkKSBtc2cgKz0gXCIgJ1wiICsgcGF0aCArIFwiJ1wiO1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG1zZyk7XG4gIH1cbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gRHVtbXkgZmlsZXN5c3RlbVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX3RyYWlsaW5nX3NsYXNoKG5hbWUpIHtcbiAgcmV0dXJuIG5hbWUuc2xpY2UoLTEpICE9PSBcIi9cIiA/IG5hbWUgKyBcIi9cIiA6IG5hbWU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3VycmVudF9kaXJcbi8vUmVxdWlyZXM6IGNhbWxfdHJhaWxpbmdfc2xhc2gsIGZzX25vZGVfc3VwcG9ydGVkXG5pZiAoZnNfbm9kZV9zdXBwb3J0ZWQoKSAmJiBnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLmN3ZClcbiAgdmFyIGNhbWxfY3VycmVudF9kaXIgPSBnbG9iYWxUaGlzLnByb2Nlc3MuY3dkKCkucmVwbGFjZSgvXFxcXC9nLCBcIi9cIik7XG5lbHNlIHZhciBjYW1sX2N1cnJlbnRfZGlyID0gXCIvc3RhdGljXCI7XG5jYW1sX2N1cnJlbnRfZGlyID0gY2FtbF90cmFpbGluZ19zbGFzaChjYW1sX2N1cnJlbnRfZGlyKTtcblxuLy9Qcm92aWRlczogY2FtbF9nZXRfcm9vdFxuLy9SZXF1aXJlczogcGF0aF9pc19hYnNvbHV0ZVxuZnVuY3Rpb24gY2FtbF9nZXRfcm9vdChwYXRoKSB7XG4gIHZhciB4ID0gcGF0aF9pc19hYnNvbHV0ZShwYXRoKTtcbiAgaWYgKCF4KSByZXR1cm47XG4gIHJldHVybiB4WzBdICsgXCIvXCI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcm9vdFxuLy9SZXF1aXJlczogY2FtbF9nZXRfcm9vdCwgY2FtbF9jdXJyZW50X2RpciwgY2FtbF9mYWlsd2l0aFxudmFyIGNhbWxfcm9vdCA9XG4gIGNhbWxfZ2V0X3Jvb3QoY2FtbF9jdXJyZW50X2RpcikgfHxcbiAgY2FtbF9mYWlsd2l0aChcInVuYWJsZSB0byBjb21wdXRlIGNhbWxfcm9vdFwiKTtcblxuLy9Qcm92aWRlczogTWxGaWxlXG5mdW5jdGlvbiBNbEZpbGUoKSB7fVxuXG4vL1Byb3ZpZGVzOiBwYXRoX2lzX2Fic29sdXRlXG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuLy9SZXF1aXJlczoganNvb19pc193aW4zMlxuZnVuY3Rpb24gbWFrZV9wYXRoX2lzX2Fic29sdXRlKCkge1xuICBmdW5jdGlvbiBwb3NpeChwYXRoKSB7XG4gICAgaWYgKHBhdGguY2hhckF0KDApID09PSBcIi9cIikgcmV0dXJuIFtcIlwiLCBwYXRoLnNsaWNlKDEpXTtcbiAgICByZXR1cm47XG4gIH1cblxuICBmdW5jdGlvbiB3aW4zMihwYXRoKSB7XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2Jsb2IvYjNmY2MyNDVmYjI1NTM5OTA5ZWYxZDVlYWEwMWRiZjkyZTE2ODYzMy9saWIvcGF0aC5qcyNMNTZcbiAgICB2YXIgc3BsaXREZXZpY2VSZSA9XG4gICAgICAvXihbYS16QS1aXTp8W1xcXFwvXXsyfVteXFxcXC9dK1tcXFxcL10rW15cXFxcL10rKT8oW1xcXFwvXSk/KFtcXHNcXFNdKj8pJC87XG4gICAgdmFyIHJlc3VsdCA9IHNwbGl0RGV2aWNlUmUuZXhlYyhwYXRoKTtcbiAgICB2YXIgZGV2aWNlID0gcmVzdWx0WzFdIHx8IFwiXCI7XG4gICAgdmFyIGlzVW5jID0gZGV2aWNlLmxlbmd0aCA+IDAgJiYgZGV2aWNlLmNoYXJBdCgxKSAhPT0gXCI6XCI7XG5cbiAgICAvLyBVTkMgcGF0aHMgYXJlIGFsd2F5cyBhYnNvbHV0ZVxuICAgIGlmIChyZXN1bHRbMl0gfHwgaXNVbmMpIHtcbiAgICAgIHZhciByb290ID0gcmVzdWx0WzFdIHx8IFwiXCI7XG4gICAgICB2YXIgc2VwID0gcmVzdWx0WzJdIHx8IFwiXCI7XG4gICAgICByZXR1cm4gW3Jvb3QsIHBhdGguc2xpY2Uocm9vdC5sZW5ndGggKyBzZXAubGVuZ3RoKV07XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuICByZXR1cm4ganNvb19pc193aW4zMiA/IHdpbjMyIDogcG9zaXg7XG59XG52YXIgcGF0aF9pc19hYnNvbHV0ZSA9IG1ha2VfcGF0aF9pc19hYnNvbHV0ZSgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21ha2VfcGF0aFxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X2RpclxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcsIHBhdGhfaXNfYWJzb2x1dGVcbmZ1bmN0aW9uIGNhbWxfbWFrZV9wYXRoKG5hbWUpIHtcbiAgbmFtZSA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWUpO1xuICBpZiAoIXBhdGhfaXNfYWJzb2x1dGUobmFtZSkpIG5hbWUgPSBjYW1sX2N1cnJlbnRfZGlyICsgbmFtZTtcbiAgdmFyIGNvbXAwID0gcGF0aF9pc19hYnNvbHV0ZShuYW1lKTtcbiAgdmFyIGNvbXAgPSBjb21wMFsxXS5zcGxpdCgvWy9cXFxcXS8pO1xuICB2YXIgbmNvbXAgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb21wLmxlbmd0aDsgaSsrKSB7XG4gICAgc3dpdGNoIChjb21wW2ldKSB7XG4gICAgICBjYXNlIFwiLi5cIjpcbiAgICAgICAgbmNvbXAucG9wKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIi5cIjpcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiXCI6XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgbmNvbXAucHVzaChjb21wW2ldKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIG5jb21wLnVuc2hpZnQoY29tcDBbMF0pO1xuICBuY29tcC5vcmlnID0gbmFtZTtcbiAgcmV0dXJuIG5jb21wO1xufVxuXG4vL1Byb3ZpZGVzOmpzb29fbW91bnRfcG9pbnRcbi8vUmVxdWlyZXM6IE1sRmFrZURldmljZSwgTWxOb2RlRGV2aWNlLCBjYW1sX3Jvb3QsIGZzX25vZGVfc3VwcG9ydGVkXG52YXIganNvb19tb3VudF9wb2ludCA9IFtdO1xuaWYgKGZzX25vZGVfc3VwcG9ydGVkKCkpIHtcbiAganNvb19tb3VudF9wb2ludC5wdXNoKHtcbiAgICBwYXRoOiBjYW1sX3Jvb3QsXG4gICAgZGV2aWNlOiBuZXcgTWxOb2RlRGV2aWNlKGNhbWxfcm9vdCksXG4gIH0pO1xufSBlbHNlIHtcbiAganNvb19tb3VudF9wb2ludC5wdXNoKHtcbiAgICBwYXRoOiBjYW1sX3Jvb3QsXG4gICAgZGV2aWNlOiBuZXcgTWxGYWtlRGV2aWNlKGNhbWxfcm9vdCksXG4gIH0pO1xufVxuanNvb19tb3VudF9wb2ludC5wdXNoKHtcbiAgcGF0aDogXCIvc3RhdGljL1wiLFxuICBkZXZpY2U6IG5ldyBNbEZha2VEZXZpY2UoXCIvc3RhdGljL1wiKSxcbn0pO1xuXG4vL1Byb3ZpZGVzOmNhbWxfbGlzdF9tb3VudF9wb2ludFxuLy9SZXF1aXJlczoganNvb19tb3VudF9wb2ludCwgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbGlzdF9tb3VudF9wb2ludCgpIHtcbiAgdmFyIHByZXYgPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGpzb29fbW91bnRfcG9pbnQubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgb2xkID0gcHJldjtcbiAgICBwcmV2ID0gWzAsIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGpzb29fbW91bnRfcG9pbnRbaV0ucGF0aCksIG9sZF07XG4gIH1cbiAgcmV0dXJuIHByZXY7XG59XG5cbi8vUHJvdmlkZXM6IHJlc29sdmVfZnNfZGV2aWNlXG4vL1JlcXVpcmVzOiBjYW1sX21ha2VfcGF0aCwganNvb19tb3VudF9wb2ludCwgY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfZ2V0X3Jvb3QsIE1sTm9kZURldmljZSwgY2FtbF90cmFpbGluZ19zbGFzaCwgZnNfbm9kZV9zdXBwb3J0ZWRcbmZ1bmN0aW9uIHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpIHtcbiAgdmFyIHBhdGggPSBjYW1sX21ha2VfcGF0aChuYW1lKTtcbiAgdmFyIG5hbWUgPSBwYXRoLmpvaW4oXCIvXCIpO1xuICB2YXIgbmFtZV9zbGFzaCA9IGNhbWxfdHJhaWxpbmdfc2xhc2gobmFtZSk7XG4gIHZhciByZXM7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwganNvb19tb3VudF9wb2ludC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBtID0ganNvb19tb3VudF9wb2ludFtpXTtcbiAgICBpZiAoXG4gICAgICBuYW1lX3NsYXNoLnNlYXJjaChtLnBhdGgpID09PSAwICYmXG4gICAgICAoIXJlcyB8fCByZXMucGF0aC5sZW5ndGggPCBtLnBhdGgubGVuZ3RoKVxuICAgIClcbiAgICAgIHJlcyA9IHtcbiAgICAgICAgcGF0aDogbS5wYXRoLFxuICAgICAgICBkZXZpY2U6IG0uZGV2aWNlLFxuICAgICAgICByZXN0OiBuYW1lLnNsaWNlKG0ucGF0aC5sZW5ndGgsIG5hbWUubGVuZ3RoKSxcbiAgICAgIH07XG4gIH1cbiAgaWYgKCFyZXMgJiYgZnNfbm9kZV9zdXBwb3J0ZWQoKSkge1xuICAgIHZhciByb290ID0gY2FtbF9nZXRfcm9vdChuYW1lKTtcbiAgICBpZiAocm9vdD8ubWF0Y2goL15bYS16QS1aXTpcXC8kLykpIHtcbiAgICAgIHZhciBtID0geyBwYXRoOiByb290LCBkZXZpY2U6IG5ldyBNbE5vZGVEZXZpY2Uocm9vdCkgfTtcbiAgICAgIGpzb29fbW91bnRfcG9pbnQucHVzaChtKTtcbiAgICAgIHJlcyA9IHtcbiAgICAgICAgcGF0aDogbS5wYXRoLFxuICAgICAgICBkZXZpY2U6IG0uZGV2aWNlLFxuICAgICAgICByZXN0OiBuYW1lLnNsaWNlKG0ucGF0aC5sZW5ndGgsIG5hbWUubGVuZ3RoKSxcbiAgICAgIH07XG4gICAgfVxuICB9XG4gIGlmIChyZXMpIHJldHVybiByZXM7XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwibm8gZGV2aWNlIGZvdW5kIGZvciBcIiArIG5hbWVfc2xhc2gpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21vdW50X2F1dG9sb2FkXG4vL1JlcXVpcmVzOiBNbEZha2VEZXZpY2UsIGNhbWxfbWFrZV9wYXRoLCBqc29vX21vdW50X3BvaW50LCBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX21vdW50X2F1dG9sb2FkKG5hbWUsIGYpIHtcbiAgdmFyIHBhdGggPSBjYW1sX21ha2VfcGF0aChuYW1lKTtcbiAgdmFyIG5hbWUgPSBjYW1sX3RyYWlsaW5nX3NsYXNoKHBhdGguam9pbihcIi9cIikpO1xuICBqc29vX21vdW50X3BvaW50LnB1c2goeyBwYXRoOiBuYW1lLCBkZXZpY2U6IG5ldyBNbEZha2VEZXZpY2UobmFtZSwgZikgfSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VubW91bnRcbi8vUmVxdWlyZXM6IGpzb29fbW91bnRfcG9pbnQsIGNhbWxfbWFrZV9wYXRoLCBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX3VubW91bnQobmFtZSkge1xuICB2YXIgcGF0aCA9IGNhbWxfbWFrZV9wYXRoKG5hbWUpO1xuICB2YXIgbmFtZSA9IGNhbWxfdHJhaWxpbmdfc2xhc2gocGF0aC5qb2luKFwiL1wiKSk7XG4gIHZhciBpZHggPSAtMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBqc29vX21vdW50X3BvaW50Lmxlbmd0aDsgaSsrKVxuICAgIGlmIChqc29vX21vdW50X3BvaW50W2ldLnBhdGggPT09IG5hbWUpIGlkeCA9IGk7XG4gIGlmIChpZHggPiAtMSkganNvb19tb3VudF9wb2ludC5zcGxpY2UoaWR4LCAxKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldGN3ZFxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X2RpciwgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vQWxpYXM6IGNhbWxfdW5peF9nZXRjd2Rcbi8vQWxpYXM6IHVuaXhfZ2V0Y3dkXG5mdW5jdGlvbiBjYW1sX3N5c19nZXRjd2QoKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhjYW1sX2N1cnJlbnRfZGlyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY2hkaXJcbi8vUmVxdWlyZXM6IGNhbWxfY3VycmVudF9kaXIsIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlLCByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF90cmFpbGluZ19zbGFzaCwgY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcsIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3N5c19jaGRpcihkaXIsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShkaXIpO1xuICBpZiAocm9vdC5kZXZpY2UuaXNfZGlyKHJvb3QucmVzdCkpIHtcbiAgICBpZiAocm9vdC5yZXN0KVxuICAgICAgY2FtbF9jdXJyZW50X2RpciA9IGNhbWxfdHJhaWxpbmdfc2xhc2gocm9vdC5wYXRoICsgcm9vdC5yZXN0KTtcbiAgICBlbHNlIGNhbWxfY3VycmVudF9kaXIgPSByb290LnBhdGg7XG4gICAgcmV0dXJuIDA7XG4gIH0gZWxzZSBpZiAocm9vdC5kZXZpY2UuZXhpc3RzKHJvb3QucmVzdCkpIHtcbiAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcihcbiAgICAgIHJhaXNlX3VuaXgsXG4gICAgICBcIkVOT1RESVJcIixcbiAgICAgIFwiY2hkaXJcIixcbiAgICAgIFwibm90IGEgZGlyZWN0b3J5XCIsXG4gICAgICBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhkaXIpLFxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoZGlyKSwgcmFpc2VfdW5peCk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZShuYW1lLCByYWlzZV91bml4KSB7XG4gIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKFxuICAgIHJhaXNlX3VuaXgsXG4gICAgXCJFTk9FTlRcIixcbiAgICBcIm5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIixcbiAgICBuYW1lLFxuICApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19maWxlX2V4aXN0c1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX2ZpbGVfZXhpc3RzKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmV4aXN0cyhyb290LnJlc3QpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yZWFkX2RpcmVjdG9yeVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19yZWFkX2RpcmVjdG9yeShuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBhID0gcm9vdC5kZXZpY2UucmVhZGRpcihyb290LnJlc3QpO1xuICB2YXIgbCA9IG5ldyBBcnJheShhLmxlbmd0aCArIDEpO1xuICBsWzBdID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSBsW2kgKyAxXSA9IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGFbaV0pO1xuICByZXR1cm4gbDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmVtb3ZlXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfcmVtb3ZlKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnVubGluayhyb290LnJlc3QpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19pc19kaXJlY3Rvcnlcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19pc19kaXJlY3RvcnkobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgYSA9IHJvb3QuZGV2aWNlLmlzX2Rpcihyb290LnJlc3QpO1xuICByZXR1cm4gYSA/IDEgOiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yZW5hbWVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19yZW5hbWUobywgbikge1xuICB2YXIgb19yb290ID0gcmVzb2x2ZV9mc19kZXZpY2Uobyk7XG4gIHZhciBuX3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuKTtcbiAgaWYgKG9fcm9vdC5kZXZpY2UgIT09IG5fcm9vdC5kZXZpY2UpXG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3lzX3JlbmFtZTogY2Fubm90IG1vdmUgZmlsZSBiZXR3ZWVuIHR3byBmaWxlc3lzdGVtXCIpO1xuICBpZiAoIW9fcm9vdC5kZXZpY2UucmVuYW1lKSBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zeXNfcmVuYW1lOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIG9fcm9vdC5kZXZpY2UucmVuYW1lKG9fcm9vdC5yZXN0LCBuX3Jvb3QucmVzdCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX21rZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfbWtkaXIobmFtZSwgcGVybSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByb290LmRldmljZS5ta2Rpcihyb290LnJlc3QsIHBlcm0pO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcm1kaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19ybWRpcihuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJvb3QuZGV2aWNlLnJtZGlyKHJvb3QucmVzdCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX21hcF9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2JhX21hcF9maWxlKF92ZmQsIF9raW5kLCBfbGF5b3V0LCBfc2hhcmVkLCBfZGltcywgX3Bvcykge1xuICAvLyB2YXIgZGF0YSA9IGNhbWxfc3lzX2Zkc1t2ZmRdO1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9iYV9tYXBfZmlsZSBub3QgaW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfbWFwX2ZpbGVcbmZ1bmN0aW9uIGNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGUoYXJndiwgX2FyZ24pIHtcbiAgLy8gYXJnbiA9PT0gNlxuICByZXR1cm4gY2FtbF9iYV9tYXBfZmlsZShhcmd2WzBdLCBhcmd2WzFdLCBhcmd2WzJdLCBhcmd2WzNdLCBhcmd2WzRdLCBhcmd2WzVdKTtcbn1cblxuLy9Qcm92aWRlczoganNvb19jcmVhdGVfZmlsZV9leHRlcm5cbmZ1bmN0aW9uIGpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuKG5hbWUsIGNvbnRlbnQpIHtcbiAgaWYgKGdsb2JhbFRoaXMuanNvb19jcmVhdGVfZmlsZSkgZ2xvYmFsVGhpcy5qc29vX2NyZWF0ZV9maWxlKG5hbWUsIGNvbnRlbnQpO1xuICBlbHNlIHtcbiAgICBpZiAoIWdsb2JhbFRoaXMuanNvb19mc190bXApIGdsb2JhbFRoaXMuanNvb19mc190bXAgPSBbXTtcbiAgICBnbG9iYWxUaGlzLmpzb29fZnNfdG1wLnB1c2goeyBuYW1lOiBuYW1lLCBjb250ZW50OiBjb250ZW50IH0pO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZzX2luaXRcbi8vUmVxdWlyZXM6IGpzb29fY3JlYXRlX2ZpbGVcbmZ1bmN0aW9uIGNhbWxfZnNfaW5pdCgpIHtcbiAgdmFyIHRtcCA9IGdsb2JhbFRoaXMuanNvb19mc190bXA7XG4gIGlmICh0bXApIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRtcC5sZW5ndGg7IGkrKykge1xuICAgICAganNvb19jcmVhdGVfZmlsZSh0bXBbaV0ubmFtZSwgdG1wW2ldLmNvbnRlbnQpO1xuICAgIH1cbiAgfVxuICBnbG9iYWxUaGlzLmpzb29fY3JlYXRlX2ZpbGUgPSBqc29vX2NyZWF0ZV9maWxlO1xuICBnbG9iYWxUaGlzLmpzb29fZnNfdG1wID0gW107XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9jcmVhdGVfZmlsZShuYW1lLCBjb250ZW50KSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UucmVnaXN0ZXIpIGNhbWxfZmFpbHdpdGgoXCJjYW5ub3QgcmVnaXN0ZXIgZmlsZVwiKTtcbiAgcm9vdC5kZXZpY2UucmVnaXN0ZXIocm9vdC5yZXN0LCBjb250ZW50KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29fY3JlYXRlX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfY3JlYXRlX2ZpbGUsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG5mdW5jdGlvbiBqc29vX2NyZWF0ZV9maWxlKG5hbWUsIGNvbnRlbnQpIHtcbiAgdmFyIG5hbWUgPSBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhuYW1lKTtcbiAgdmFyIGNvbnRlbnQgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNvbnRlbnQpO1xuICByZXR1cm4gY2FtbF9jcmVhdGVfZmlsZShuYW1lLCBjb250ZW50KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yZWFkX2ZpbGVfY29udGVudFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlLCBjYW1sX3N0cmluZ19vZl91aW50OF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcsIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3JlYWRfZmlsZV9jb250ZW50KG5hbWUpIHtcbiAgdmFyIG5hbWUgPSB0eXBlb2YgbmFtZSA9PT0gXCJzdHJpbmdcIiA/IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKG5hbWUpIDogbmFtZTtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKHJvb3QuZGV2aWNlLmV4aXN0cyhyb290LnJlc3QpKSB7XG4gICAgdmFyIGZpbGUgPSByb290LmRldmljZS5vcGVuKHJvb3QucmVzdCwgeyByZG9ubHk6IDEgfSk7XG4gICAgdmFyIGxlbiA9IGZpbGUubGVuZ3RoKCk7XG4gICAgdmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgZmlsZS5yZWFkKGJ1ZiwgMCwgbGVuLCBmYWxzZSk7XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX3VpbnQ4X2FycmF5KGJ1Zik7XG4gIH1cbiAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZSkpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogTWxGYWtlRGV2aWNlXG4vL1JlcXVpcmVzOiBNbEZha2VGaWxlLCBNbEZha2VGZCwgY2FtbF9jcmVhdGVfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfYXJyYXksIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX2J5dGVzX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfYnl0ZXMsIGNhbWxfaXNfbWxfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvclxuY2xhc3MgTWxGYWtlRGV2aWNlIHtcbiAgY29uc3RydWN0b3Iocm9vdCwgZikge1xuICAgIHRoaXMuY29udGVudCA9IHt9O1xuICAgIHRoaXMucm9vdCA9IHJvb3Q7XG4gICAgdGhpcy5sb29rdXBGdW4gPSBmO1xuICB9XG5cbiAgbm0obmFtZSkge1xuICAgIHJldHVybiB0aGlzLnJvb3QgKyBuYW1lO1xuICB9XG5cbiAgY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSkge1xuICAgIHZhciBjb21wID0gbmFtZS5zcGxpdChcIi9cIik7XG4gICAgdmFyIHJlcyA9IFwiXCI7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb21wLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgcmVzICs9IGNvbXBbaV0gKyBcIi9cIjtcbiAgICAgIGlmICh0aGlzLmNvbnRlbnRbcmVzXSkgY29udGludWU7XG4gICAgICB0aGlzLmNvbnRlbnRbcmVzXSA9IFN5bWJvbChcImRpcmVjdG9yeVwiKTtcbiAgICB9XG4gIH1cblxuICBzbGFzaChuYW1lKSB7XG4gICAgcmV0dXJuIC9cXC8kLy50ZXN0KG5hbWUpID8gbmFtZSA6IG5hbWUgKyBcIi9cIjtcbiAgfVxuXG4gIGxvb2t1cChuYW1lKSB7XG4gICAgaWYgKCF0aGlzLmNvbnRlbnRbbmFtZV0gJiYgdGhpcy5sb29rdXBGdW4pIHtcbiAgICAgIHZhciByZXMgPSB0aGlzLmxvb2t1cEZ1bihcbiAgICAgICAgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcodGhpcy5yb290KSxcbiAgICAgICAgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcobmFtZSksXG4gICAgICApO1xuICAgICAgaWYgKHJlcyAhPT0gMCkge1xuICAgICAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgICAgICB0aGlzLmNvbnRlbnRbbmFtZV0gPSBuZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX3N0cmluZyhyZXNbMV0pKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBleGlzdHMobmFtZSwgZG9fbm90X2xvb2t1cCkge1xuICAgIC8vIFRoZSByb290IG9mIHRoZSBkZXZpY2UgZXhpc3RzXG4gICAgaWYgKG5hbWUgPT09IFwiXCIpIHJldHVybiAxO1xuICAgIC8vIENoZWNrIGlmIGEgZGlyZWN0b3J5IGV4aXN0c1xuICAgIHZhciBuYW1lX3NsYXNoID0gdGhpcy5zbGFzaChuYW1lKTtcbiAgICBpZiAodGhpcy5jb250ZW50W25hbWVfc2xhc2hdKSByZXR1cm4gMTtcbiAgICAvLyBDaGVjayBpZiBhIGZpbGUgZXhpc3RzXG4gICAgaWYgKCFkb19ub3RfbG9va3VwKSB0aGlzLmxvb2t1cChuYW1lKTtcbiAgICByZXR1cm4gdGhpcy5jb250ZW50W25hbWVdID8gMSA6IDA7XG4gIH1cblxuICBpc0ZpbGUobmFtZSkge1xuICAgIGlmICh0aGlzLmV4aXN0cyhuYW1lKSAmJiAhdGhpcy5pc19kaXIobmFtZSkpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gIH1cblxuICByZW5hbWVfZGlyKG9sZG5hbWUsIG5ld25hbWUpIHtcbiAgICBpZiAodGhpcy5leGlzdHMobmV3bmFtZSkpIHtcbiAgICAgIGlmICghdGhpcy5pc19kaXIobmV3bmFtZSkpIHtcbiAgICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXG4gICAgICAgICAgdGhpcy5ubShuZXduYW1lKSArIFwiIDogZmlsZSBhbHJlYWR5IGV4aXN0cyBhbmQgaXMgbm90IGEgZGlyZWN0b3J5XCIsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5yZWFkZGlyKG5ld25hbWUpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuZXduYW1lKSArIFwiIDogZGlyZWN0b3J5IG5vdCBlbXB0eVwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIG9sZF9zbGFzaCA9IHRoaXMuc2xhc2gob2xkbmFtZSk7XG4gICAgdmFyIG5ld19zbGFzaCA9IHRoaXMuc2xhc2gobmV3bmFtZSk7XG4gICAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZChuZXdfc2xhc2gpO1xuICAgIGZvciAoY29uc3QgZiBvZiB0aGlzLnJlYWRkaXIob2xkbmFtZSkpIHtcbiAgICAgIHRoaXMucmVuYW1lKG9sZF9zbGFzaCArIGYsIG5ld19zbGFzaCArIGYpO1xuICAgIH1cbiAgICBkZWxldGUgdGhpcy5jb250ZW50W29sZF9zbGFzaF07XG4gIH1cblxuICByZW5hbWUob2xkbmFtZSwgbmV3bmFtZSkge1xuICAgIGlmICghdGhpcy5leGlzdHMob2xkbmFtZSkpXG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG9sZG5hbWUpICsgXCIgOiBubyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xuICAgIGlmICh0aGlzLmlzX2RpcihvbGRuYW1lKSkge1xuICAgICAgdGhpcy5yZW5hbWVfZGlyKG9sZG5hbWUsIG5ld25hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5leGlzdHMobmV3bmFtZSkgJiYgdGhpcy5pc19kaXIobmV3bmFtZSkpIHtcbiAgICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXG4gICAgICAgICAgdGhpcy5ubShuZXduYW1lKSArIFwiIDogZmlsZSBhbHJlYWR5IGV4aXN0cyBhbmQgaXMgYSBkaXJlY3RvcnlcIixcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY29udGVudFtuZXduYW1lXSA9IHRoaXMuY29udGVudFtvbGRuYW1lXTtcbiAgICAgIGRlbGV0ZSB0aGlzLmNvbnRlbnRbb2xkbmFtZV07XG4gICAgfVxuICB9XG5cbiAgbWtkaXIobmFtZSwgX21vZGUsIHJhaXNlX3VuaXgpIHtcbiAgICBpZiAodGhpcy5leGlzdHMobmFtZSkpXG4gICAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcihcbiAgICAgICAgcmFpc2VfdW5peCxcbiAgICAgICAgXCJFRVhJU1RcIixcbiAgICAgICAgXCJta2RpclwiLFxuICAgICAgICBcImZpbGUgYWxyZWFkeSBleGlzdHNcIixcbiAgICAgICAgdGhpcy5ubShuYW1lKSxcbiAgICAgICk7XG4gICAgdmFyIHBhcmVudCA9IC9eKC4qKVxcL1teL10rLy5leGVjKG5hbWUpO1xuICAgIHBhcmVudCA9IHBhcmVudD8uWzFdIHx8IFwiXCI7XG4gICAgaWYgKCF0aGlzLmV4aXN0cyhwYXJlbnQpKVxuICAgICAgY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3IoXG4gICAgICAgIHJhaXNlX3VuaXgsXG4gICAgICAgIFwiRU5PRU5UXCIsXG4gICAgICAgIFwibWtkaXJcIixcbiAgICAgICAgXCJubyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIsXG4gICAgICAgIHRoaXMubm0obmFtZSksXG4gICAgICApO1xuICAgIGlmICghdGhpcy5pc19kaXIocGFyZW50KSlcbiAgICAgIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKFxuICAgICAgICByYWlzZV91bml4LFxuICAgICAgICBcIkVOT1RESVJcIixcbiAgICAgICAgXCJta2RpclwiLFxuICAgICAgICBcIm5vdCBhIGRpcmVjdG9yeVwiLFxuICAgICAgICB0aGlzLm5tKG5hbWUpLFxuICAgICAgKTtcbiAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKHRoaXMuc2xhc2gobmFtZSkpO1xuICB9XG5cbiAgcm1kaXIobmFtZSwgcmFpc2VfdW5peCkge1xuICAgIHZhciBuYW1lX3NsYXNoID0gbmFtZSA9PT0gXCJcIiA/IFwiXCIgOiB0aGlzLnNsYXNoKG5hbWUpO1xuICAgIGlmICghdGhpcy5leGlzdHMobmFtZSkpXG4gICAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcihcbiAgICAgICAgcmFpc2VfdW5peCxcbiAgICAgICAgXCJFTk9FTlRcIixcbiAgICAgICAgXCJybWRpclwiLFxuICAgICAgICBcIm5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIixcbiAgICAgICAgdGhpcy5ubShuYW1lKSxcbiAgICAgICk7XG4gICAgaWYgKCF0aGlzLmlzX2RpcihuYW1lKSlcbiAgICAgIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKFxuICAgICAgICByYWlzZV91bml4LFxuICAgICAgICBcIkVOT1RESVJcIixcbiAgICAgICAgXCJybWRpclwiLFxuICAgICAgICBcIm5vdCBhIGRpcmVjdG9yeVwiLFxuICAgICAgICB0aGlzLm5tKG5hbWUpLFxuICAgICAgKTtcbiAgICBmb3IgKHZhciBuIGluIHRoaXMuY29udGVudCkge1xuICAgICAgaWYgKG4uc3RhcnRzV2l0aChuYW1lX3NsYXNoKSAmJiBuICE9PSBuYW1lX3NsYXNoKVxuICAgICAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcihcbiAgICAgICAgICByYWlzZV91bml4LFxuICAgICAgICAgIFwiRU5PVEVNUFRZXCIsXG4gICAgICAgICAgXCJybWRpclwiLFxuICAgICAgICAgIFwiZGlyZWN0b3J5IG5vdCBlbXB0eVwiLFxuICAgICAgICAgIHRoaXMubm0obmFtZSksXG4gICAgICAgICk7XG4gICAgfVxuICAgIGRlbGV0ZSB0aGlzLmNvbnRlbnRbbmFtZV9zbGFzaF07XG4gIH1cblxuICByZWFkZGlyKG5hbWUpIHtcbiAgICB2YXIgbmFtZV9zbGFzaCA9IG5hbWUgPT09IFwiXCIgPyBcIlwiIDogdGhpcy5zbGFzaChuYW1lKTtcbiAgICBpZiAoIXRoaXMuZXhpc3RzKG5hbWUpKSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIik7XG4gICAgfVxuICAgIGlmICghdGhpcy5pc19kaXIobmFtZSkpIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgICB2YXIgc2VlbiA9IHt9O1xuICAgIHZhciBhID0gW107XG4gICAgZm9yICh2YXIgbiBpbiB0aGlzLmNvbnRlbnQpIHtcbiAgICAgIGlmIChuLnN0YXJ0c1dpdGgobmFtZV9zbGFzaCkgJiYgbiAhPT0gbmFtZV9zbGFzaCkge1xuICAgICAgICB2YXIgbGFzdCA9IG4uaW5kZXhPZihcIi9cIiwgbmFtZV9zbGFzaC5sZW5ndGgpO1xuICAgICAgICBpZiAobGFzdCA8IDApIGxhc3QgPSB1bmRlZmluZWQ7XG4gICAgICAgIHZhciBtID0gbi5zbGljZShuYW1lX3NsYXNoLmxlbmd0aCwgbGFzdCk7XG4gICAgICAgIGlmIChtICYmICFzZWVuW21dKSB7XG4gICAgICAgICAgc2VlblttXSA9IHRydWU7XG4gICAgICAgICAgYS5wdXNoKG0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhO1xuICB9XG5cbiAgb3BlbmRpcihuYW1lLCByYWlzZV91bml4KSB7XG4gICAgdmFyIGEgPSB0aGlzLnJlYWRkaXIobmFtZSk7XG4gICAgdmFyIGMgPSBmYWxzZTtcbiAgICB2YXIgaSA9IDA7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlYWRTeW5jOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChjKVxuICAgICAgICAgIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKFxuICAgICAgICAgICAgcmFpc2VfdW5peCxcbiAgICAgICAgICAgIFwiRUJBREZcIixcbiAgICAgICAgICAgIFwicmVhZGRpclwiLFxuICAgICAgICAgICAgXCJiYWQgZmlsZSBkZXNjcmlwdG9yXCIsXG4gICAgICAgICAgKTtcbiAgICAgICAgaWYgKGkgPT09IGEubGVuZ3RoKSByZXR1cm4gbnVsbDtcbiAgICAgICAgdmFyIGVudHJ5ID0gYVtpXTtcbiAgICAgICAgaSsrO1xuICAgICAgICByZXR1cm4geyBuYW1lOiBlbnRyeSB9O1xuICAgICAgfSxcbiAgICAgIGNsb3NlU3luYzogZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoYylcbiAgICAgICAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcihcbiAgICAgICAgICAgIHJhaXNlX3VuaXgsXG4gICAgICAgICAgICBcIkVCQURGXCIsXG4gICAgICAgICAgICBcInJlYWRkaXJcIixcbiAgICAgICAgICAgIFwiYmFkIGZpbGUgZGVzY3JpcHRvclwiLFxuICAgICAgICAgICk7XG4gICAgICAgIGMgPSB0cnVlO1xuICAgICAgICBhID0gW107XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBpc19kaXIobmFtZSkge1xuICAgIGlmIChuYW1lID09PSBcIlwiKSByZXR1cm4gdHJ1ZTtcbiAgICB2YXIgbmFtZV9zbGFzaCA9IHRoaXMuc2xhc2gobmFtZSk7XG4gICAgcmV0dXJuIHRoaXMuY29udGVudFtuYW1lX3NsYXNoXSA/IDEgOiAwO1xuICB9XG5cbiAgdW5saW5rKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgICBpZiAoIXRoaXMuZXhpc3RzKG5hbWUsIHRydWUpKSB7XG4gICAgICAvLyBbdHJ1ZV0gbWVhbnMgbm8gXCJsb29rdXBcIiBpZiBub3QgZm91bmQuXG4gICAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcihcbiAgICAgICAgcmFpc2VfdW5peCxcbiAgICAgICAgXCJFTk9FTlRcIixcbiAgICAgICAgXCJ1bmxpbmtcIixcbiAgICAgICAgXCJubyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIsXG4gICAgICAgIG5hbWUsXG4gICAgICApO1xuICAgIH1cbiAgICBkZWxldGUgdGhpcy5jb250ZW50W25hbWVdO1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgYWNjZXNzKG5hbWUsIF9mbGFncywgcmFpc2VfdW5peCkge1xuICAgIHRoaXMubG9va3VwKG5hbWUpO1xuICAgIGlmICh0aGlzLmNvbnRlbnRbbmFtZV0pIHtcbiAgICAgIGlmICh0aGlzLmlzX2RpcihuYW1lKSlcbiAgICAgICAgY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3IoXG4gICAgICAgICAgcmFpc2VfdW5peCxcbiAgICAgICAgICBcIkVBQ0NFU1NcIixcbiAgICAgICAgICBcImFjY2Vzc1wiLFxuICAgICAgICAgIFwicGVybWlzc2lvbiBkZW5pZWQsXCIsXG4gICAgICAgICAgdGhpcy5ubShuYW1lKSxcbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUodGhpcy5ubShuYW1lKSwgcmFpc2VfdW5peCk7XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9XG5cbiAgb3BlbihuYW1lLCBmLCBfcGVybXMsIHJhaXNlX3VuaXgpIHtcbiAgICB2YXIgZmlsZTtcbiAgICB0aGlzLmxvb2t1cChuYW1lKTtcbiAgICBpZiAodGhpcy5jb250ZW50W25hbWVdKSB7XG4gICAgICBpZiAodGhpcy5pc19kaXIobmFtZSkpXG4gICAgICAgIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKFxuICAgICAgICAgIHJhaXNlX3VuaXgsXG4gICAgICAgICAgXCJFSVNESVJcIixcbiAgICAgICAgICBcIm9wZW5cIixcbiAgICAgICAgICBcImlsbGVnYWwgb3BlcmF0aW9uIG9uIGEgZGlyZWN0b3J5XCIsXG4gICAgICAgICAgdGhpcy5ubShuYW1lKSxcbiAgICAgICAgKTtcbiAgICAgIGlmIChmLmNyZWF0ZSAmJiBmLmV4Y2wpXG4gICAgICAgIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKFxuICAgICAgICAgIHJhaXNlX3VuaXgsXG4gICAgICAgICAgXCJFRVhJU1RcIixcbiAgICAgICAgICBcIm9wZW5cIixcbiAgICAgICAgICBcImZpbGUgYWxyZWFkeSBleGlzdHNcIixcbiAgICAgICAgICB0aGlzLm5tKG5hbWUpLFxuICAgICAgICApO1xuICAgICAgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgICAgIGlmIChmLnRydW5jYXRlKSBmaWxlLnRydW5jYXRlKDApO1xuICAgIH0gZWxzZSBpZiAoZi5jcmVhdGUpIHtcbiAgICAgIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSk7XG4gICAgICB0aGlzLmNvbnRlbnRbbmFtZV0gPSBuZXcgTWxGYWtlRmlsZShjYW1sX2NyZWF0ZV9ieXRlcygwKSk7XG4gICAgICBmaWxlID0gdGhpcy5jb250ZW50W25hbWVdO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSh0aGlzLm5tKG5hbWUpLCByYWlzZV91bml4KTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBNbEZha2VGZCh0aGlzLm5tKG5hbWUpLCBmaWxlLCBmKTtcbiAgfVxuXG4gIHRydW5jYXRlKG5hbWUsIGxlbiwgcmFpc2VfdW5peCkge1xuICAgIHZhciBmaWxlO1xuICAgIHRoaXMubG9va3VwKG5hbWUpO1xuICAgIGlmICh0aGlzLmNvbnRlbnRbbmFtZV0pIHtcbiAgICAgIGlmICh0aGlzLmlzX2RpcihuYW1lKSlcbiAgICAgICAgY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3IoXG4gICAgICAgICAgcmFpc2VfdW5peCxcbiAgICAgICAgICBcIkVJU0RJUlwiLFxuICAgICAgICAgIFwib3BlblwiLFxuICAgICAgICAgIFwiaWxsZWdhbCBvcGVyYXRpb24gb24gYSBkaXJlY3RvcnlcIixcbiAgICAgICAgICB0aGlzLm5tKG5hbWUpLFxuICAgICAgICApO1xuICAgICAgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgICAgIGZpbGUudHJ1bmNhdGUobGVuKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUodGhpcy5ubShuYW1lKSwgcmFpc2VfdW5peCk7XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXIobmFtZSwgY29udGVudCkge1xuICAgIHZhciBmaWxlO1xuICAgIGlmICh0aGlzLmNvbnRlbnRbbmFtZV0pXG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmaWxlIGFscmVhZHkgZXhpc3RzXCIpO1xuICAgIGlmIChjYW1sX2lzX21sX2J5dGVzKGNvbnRlbnQpKSBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY29udGVudCk7XG4gICAgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKGNvbnRlbnQpKVxuICAgICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGNvbnRlbnQpKTtcbiAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KGNvbnRlbnQpKVxuICAgICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoY29udGVudCkpO1xuICAgIGVsc2UgaWYgKHR5cGVvZiBjb250ZW50ID09PSBcInN0cmluZ1wiKVxuICAgICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhjb250ZW50KSk7XG4gICAgZWxzZSBpZiAoY29udGVudC50b1N0cmluZykge1xuICAgICAgdmFyIGJ5dGVzID0gY2FtbF9ieXRlc19vZl9zdHJpbmcoXG4gICAgICAgIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGNvbnRlbnQudG9TdHJpbmcoKSksXG4gICAgICApO1xuICAgICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGJ5dGVzKTtcbiAgICB9XG4gICAgaWYgKGZpbGUpIHtcbiAgICAgIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSk7XG4gICAgICB0aGlzLmNvbnRlbnRbbmFtZV0gPSBmaWxlO1xuICAgIH0gZWxzZVxuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXG4gICAgICAgIHRoaXMubm0obmFtZSkgKyBcIiA6IHJlZ2lzdGVyaW5nIGZpbGUgd2l0aCBpbnZhbGlkIGNvbnRlbnQgdHlwZVwiLFxuICAgICAgKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBNbEZha2VGaWxlXG4vL1JlcXVpcmVzOiBNbEZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfY3JlYXRlX2J5dGVzLCBjYW1sX21sX2J5dGVzX2xlbmd0aCwgY2FtbF9ibGl0X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzLCBjYW1sX2J5dGVzX29mX3VpbnQ4X2FycmF5XG5jbGFzcyBNbEZha2VGaWxlIGV4dGVuZHMgTWxGaWxlIHtcbiAgY29uc3RydWN0b3IoY29udGVudCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5kYXRhID0gY29udGVudDtcbiAgfVxuXG4gIHRydW5jYXRlKGxlbikge1xuICAgIHZhciBvbGQgPSB0aGlzLmRhdGE7XG4gICAgdmFyIG9sZF9sZW4gPSBjYW1sX21sX2J5dGVzX2xlbmd0aChvbGQpO1xuICAgIHRoaXMuZGF0YSA9IGNhbWxfY3JlYXRlX2J5dGVzKGxlbiB8IDApO1xuICAgIGNhbWxfYmxpdF9ieXRlcyhvbGQsIDAsIHRoaXMuZGF0YSwgMCwgTWF0aC5taW4obGVuLCBvbGRfbGVuKSk7XG4gIH1cblxuICBsZW5ndGgoKSB7XG4gICAgcmV0dXJuIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHRoaXMuZGF0YSk7XG4gIH1cblxuICB3cml0ZShvZmZzZXQsIGJ1ZiwgcG9zLCBsZW4pIHtcbiAgICB2YXIgY2xlbiA9IHRoaXMubGVuZ3RoKCk7XG4gICAgaWYgKG9mZnNldCArIGxlbiA+PSBjbGVuKSB7XG4gICAgICB2YXIgbmV3X3N0ciA9IGNhbWxfY3JlYXRlX2J5dGVzKG9mZnNldCArIGxlbik7XG4gICAgICB2YXIgb2xkX2RhdGEgPSB0aGlzLmRhdGE7XG4gICAgICB0aGlzLmRhdGEgPSBuZXdfc3RyO1xuICAgICAgY2FtbF9ibGl0X2J5dGVzKG9sZF9kYXRhLCAwLCB0aGlzLmRhdGEsIDAsIGNsZW4pO1xuICAgIH1cbiAgICBjYW1sX2JsaXRfYnl0ZXMoXG4gICAgICBjYW1sX2J5dGVzX29mX3VpbnQ4X2FycmF5KGJ1ZiksXG4gICAgICBwb3MsXG4gICAgICB0aGlzLmRhdGEsXG4gICAgICBvZmZzZXQsXG4gICAgICBsZW4sXG4gICAgKTtcbiAgICByZXR1cm4gbGVuO1xuICB9XG5cbiAgcmVhZChvZmZzZXQsIGJ1ZiwgcG9zLCBsZW4pIHtcbiAgICB2YXIgY2xlbiA9IHRoaXMubGVuZ3RoKCk7XG4gICAgaWYgKG9mZnNldCArIGxlbiA+PSBjbGVuKSB7XG4gICAgICBsZW4gPSBjbGVuIC0gb2Zmc2V0O1xuICAgIH1cbiAgICBpZiAobGVuID4gMCkge1xuICAgICAgdmFyIGRhdGEgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4gfCAwKTtcbiAgICAgIGNhbWxfYmxpdF9ieXRlcyh0aGlzLmRhdGEsIG9mZnNldCwgZGF0YSwgMCwgbGVuKTtcbiAgICAgIGJ1Zi5zZXQoY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhkYXRhKSwgcG9zKTtcbiAgICAgIHJldHVybiBsZW47XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IE1sRmFrZUZkX291dFxuLy9SZXF1aXJlczogTWxGYWtlRmlsZSwgY2FtbF9jcmVhdGVfYnl0ZXMsIGNhbWxfYmxpdF9ieXRlcywgY2FtbF9ieXRlc19vZl91aW50OF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3JcbmNsYXNzIE1sRmFrZUZkX291dCBleHRlbmRzIE1sRmFrZUZpbGUge1xuICBjb25zdHJ1Y3RvcihmZCwgZmxhZ3MpIHtcbiAgICBzdXBlcihjYW1sX2NyZWF0ZV9ieXRlcygwKSk7XG4gICAgdGhpcy5sb2cgPSBmdW5jdGlvbiAoX3MpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH07XG4gICAgaWYgKGZkID09PSAxICYmIHR5cGVvZiBjb25zb2xlLmxvZyA9PT0gXCJmdW5jdGlvblwiKSB0aGlzLmxvZyA9IGNvbnNvbGUubG9nO1xuICAgIGVsc2UgaWYgKGZkID09PSAyICYmIHR5cGVvZiBjb25zb2xlLmVycm9yID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICB0aGlzLmxvZyA9IGNvbnNvbGUuZXJyb3I7XG4gICAgZWxzZSBpZiAodHlwZW9mIGNvbnNvbGUubG9nID09PSBcImZ1bmN0aW9uXCIpIHRoaXMubG9nID0gY29uc29sZS5sb2c7XG4gICAgdGhpcy5mbGFncyA9IGZsYWdzO1xuICB9XG5cbiAgbGVuZ3RoKCkge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgdHJ1bmNhdGUoX2xlbiwgcmFpc2VfdW5peCkge1xuICAgIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKFxuICAgICAgcmFpc2VfdW5peCxcbiAgICAgIFwiRUlOVkFMXCIsXG4gICAgICBcImZ0cnVuY2F0ZVwiLFxuICAgICAgXCJpbnZhbGlkIGFyZ3VtZW50XCIsXG4gICAgKTtcbiAgfVxuXG4gIHdyaXRlKGJ1ZiwgcG9zLCBsZW4sIHJhaXNlX3VuaXgpIHtcbiAgICB2YXIgd3JpdHRlbiA9IGxlbjtcbiAgICBpZiAodGhpcy5sb2cpIHtcbiAgICAgIGlmIChcbiAgICAgICAgbGVuID4gMCAmJlxuICAgICAgICBwb3MgPj0gMCAmJlxuICAgICAgICBwb3MgKyBsZW4gPD0gYnVmLmxlbmd0aCAmJlxuICAgICAgICBidWZbcG9zICsgbGVuIC0gMV0gPT09IDEwXG4gICAgICApXG4gICAgICAgIGxlbi0tO1xuICAgICAgLy8gRG8gbm90IG91dHB1dCB0aGUgbGFzdCBcXG4gaWYgcHJlc2VudFxuICAgICAgLy8gYXMgY29uc29sZSBsb2dnaW5nIGRpc3BsYXkgYSBuZXdsaW5lIGF0IHRoZSBlbmRcbiAgICAgIHZhciBzcmMgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4pO1xuICAgICAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2ZfdWludDhfYXJyYXkoYnVmKSwgcG9zLCBzcmMsIDAsIGxlbik7XG4gICAgICB0aGlzLmxvZyhzcmMudG9VdGYxNigpKTtcbiAgICAgIHJldHVybiB3cml0dGVuO1xuICAgIH1cbiAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcihcbiAgICAgIHJhaXNlX3VuaXgsXG4gICAgICBcIkVCQURGXCIsXG4gICAgICBcIndyaXRlXCIsXG4gICAgICBcImJhZCBmaWxlIGRlc2NyaXB0b3JcIixcbiAgICApO1xuICB9XG5cbiAgcmVhZChfYnVmLCBfcG9zLCBfbGVuLCByYWlzZV91bml4KSB7XG4gICAgY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3IocmFpc2VfdW5peCwgXCJFQkFERlwiLCBcInJlYWRcIiwgXCJiYWQgZmlsZSBkZXNjcmlwdG9yXCIpO1xuICB9XG5cbiAgc2VlayhfbGVuLCBfd2hlbmNlLCByYWlzZV91bml4KSB7XG4gICAgY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3IocmFpc2VfdW5peCwgXCJFU1BJUEVcIiwgXCJsc2Vla1wiLCBcImlsbGVnYWwgc2Vla1wiKTtcbiAgfVxuICBwb3MoKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5sb2cgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBjaGVja19zdHJlYW1fc2VtYW50aWNzKF9jbWQpIHt9XG59XG5cbi8vUHJvdmlkZXM6IE1sRmFrZUZkXG4vL1JlcXVpcmVzOiBNbEZha2VGaWxlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvclxuY2xhc3MgTWxGYWtlRmQge1xuICBjb25zdHJ1Y3RvcihuYW1lLCBmaWxlLCBmbGFncykge1xuICAgIHRoaXMuZmlsZSA9IGZpbGU7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLmZsYWdzID0gZmxhZ3M7XG4gICAgdGhpcy5vZmZzZXQgPSAwO1xuICAgIHRoaXMuc2Vla2VkID0gZmFsc2U7XG4gIH1cblxuICBlcnJfY2xvc2VkKGNtZCwgcmFpc2VfdW5peCkge1xuICAgIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKHJhaXNlX3VuaXgsIFwiRUJBREZcIiwgY21kLCBcImJhZCBmaWxlIGRlc2NyaXB0b3JcIik7XG4gIH1cblxuICBsZW5ndGgoKSB7XG4gICAgaWYgKHRoaXMuZmlsZSkgcmV0dXJuIHRoaXMuZmlsZS5sZW5ndGgoKTtcbiAgICB0aGlzLmVycl9jbG9zZWQoXCJsZW5ndGhcIik7XG4gIH1cblxuICB0cnVuY2F0ZShsZW4sIHJhaXNlX3VuaXgpIHtcbiAgICBpZiAodGhpcy5maWxlKSB7XG4gICAgICBpZiAoISh0aGlzLmZsYWdzLndyb25seSB8fCB0aGlzLmZsYWdzLnJkd3IpKVxuICAgICAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcihcbiAgICAgICAgICByYWlzZV91bml4LFxuICAgICAgICAgIFwiRUlOVkFMXCIsXG4gICAgICAgICAgXCJ0cnVuY2F0ZVwiLFxuICAgICAgICAgIFwiaW52YWxpZCBhcmd1bWVudFwiLFxuICAgICAgICApO1xuICAgICAgcmV0dXJuIHRoaXMuZmlsZS50cnVuY2F0ZShsZW4pO1xuICAgIH1cbiAgICB0aGlzLmVycl9jbG9zZWQoXCJ0cnVuY2F0ZVwiLCByYWlzZV91bml4KTtcbiAgfVxuXG4gIHdyaXRlKGJ1ZiwgcG9zLCBsZW4sIHJhaXNlX3VuaXgpIHtcbiAgICBpZiAodGhpcy5maWxlICYmICh0aGlzLmZsYWdzLndyb25seSB8fCB0aGlzLmZsYWdzLnJkd3IpKSB7XG4gICAgICB2YXIgb2Zmc2V0ID0gdGhpcy5vZmZzZXQ7XG4gICAgICBsZW4gPSB0aGlzLmZpbGUud3JpdGUob2Zmc2V0LCBidWYsIHBvcywgbGVuKTtcbiAgICAgIHRoaXMub2Zmc2V0ICs9IGxlbjtcbiAgICAgIHJldHVybiBsZW47XG4gICAgfVxuICAgIHRoaXMuZXJyX2Nsb3NlZChcIndyaXRlXCIsIHJhaXNlX3VuaXgpO1xuICB9XG5cbiAgcmVhZChidWYsIHBvcywgbGVuLCByYWlzZV91bml4KSB7XG4gICAgaWYgKHRoaXMuZmlsZSAmJiAhdGhpcy5mbGFncy53cm9ubHkpIHtcbiAgICAgIHZhciBvZmZzZXQgPSB0aGlzLm9mZnNldDtcbiAgICAgIGxlbiA9IHRoaXMuZmlsZS5yZWFkKG9mZnNldCwgYnVmLCBwb3MsIGxlbik7XG4gICAgICB0aGlzLm9mZnNldCArPSBsZW47XG4gICAgICByZXR1cm4gbGVuO1xuICAgIH1cbiAgICB0aGlzLmVycl9jbG9zZWQoXCJyZWFkXCIsIHJhaXNlX3VuaXgpO1xuICB9XG5cbiAgc2VlayhvZmZzZXQsIHdoZW5jZSwgcmFpc2VfdW5peCkge1xuICAgIHN3aXRjaCAod2hlbmNlKSB7XG4gICAgICBjYXNlIDA6XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxOlxuICAgICAgICBvZmZzZXQgKz0gdGhpcy5vZmZzZXQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICBvZmZzZXQgKz0gdGhpcy5sZW5ndGgoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGlmIChvZmZzZXQgPCAwKVxuICAgICAgY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3IoXG4gICAgICAgIHJhaXNlX3VuaXgsXG4gICAgICAgIFwiRUlOVkFMXCIsXG4gICAgICAgIFwibHNlZWtcIixcbiAgICAgICAgXCJpbnZhbGlkIGFyZ3VtZW50XCIsXG4gICAgICApO1xuICAgIHRoaXMub2Zmc2V0ID0gb2Zmc2V0O1xuICAgIHRoaXMuc2Vla2VkID0gdHJ1ZTtcbiAgICByZXR1cm4gb2Zmc2V0O1xuICB9XG5cbiAgcG9zKCkge1xuICAgIHJldHVybiB0aGlzLm9mZnNldDtcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIGlmICghdGhpcy5maWxlKSB0aGlzLmVycl9jbG9zZWQoXCJjbG9zZVwiKTtcbiAgICB0aGlzLmZpbGUgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBjaGVja19zdHJlYW1fc2VtYW50aWNzKGNtZCkge1xuICAgIGlmICghdGhpcy5maWxlKSByZXR1cm4gdGhpcy5lcnJfY2xvc2VkKGNtZCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyAxKTtcbiAgfVxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2Zmc2V0XG52YXIgY2FtbF9pbnQ2NF9vZmZzZXQgPSBNYXRoLnBvdygyLCAtMjQpO1xuXG4vL1Byb3ZpZGVzOiBNbEludDY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mZnNldCwgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuY2xhc3MgTWxJbnQ2NCB7XG4gIGNvbnN0cnVjdG9yKGxvLCBtaSwgaGkpIHtcbiAgICB0aGlzLmxvID0gbG8gJiAweGZmZmZmZjtcbiAgICB0aGlzLm1pID0gbWkgJiAweGZmZmZmZjtcbiAgICB0aGlzLmhpID0gaGkgJiAweGZmZmY7XG4gICAgdGhpcy5jYW1sX2N1c3RvbSA9IFwiX2pcIjtcbiAgfVxuXG4gIHN0YXRpYyBVTlNJR05FRF9NQVggPSBuZXcgTWxJbnQ2NCgweGZmZmZmZiwgMHhmZmZmZmYsIDB4ZmZmZik7XG4gIHN0YXRpYyBTSUdORURfTUFYID0gbmV3IE1sSW50NjQoMHhmZmZmZmYsIDB4ZmZmZmZmLCAweDdmZmYpO1xuICBzdGF0aWMgU0lHTkVEX01JTiA9IG5ldyBNbEludDY0KDB4MDAwMDAwLCAweDAwMDAwMCwgMHg4MDAwKTtcblxuICBzbGljZSgpIHtcbiAgICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sbywgdGhpcy5taSwgdGhpcy5oaSk7XG4gIH1cblxuICB1Y29tcGFyZSh4KSB7XG4gICAgaWYgKHRoaXMuaGkgPiB4LmhpKSByZXR1cm4gMTtcbiAgICBpZiAodGhpcy5oaSA8IHguaGkpIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5taSA+IHgubWkpIHJldHVybiAxO1xuICAgIGlmICh0aGlzLm1pIDwgeC5taSkgcmV0dXJuIC0xO1xuICAgIGlmICh0aGlzLmxvID4geC5sbykgcmV0dXJuIDE7XG4gICAgaWYgKHRoaXMubG8gPCB4LmxvKSByZXR1cm4gLTE7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBjb21wYXJlKHgpIHtcbiAgICB2YXIgaGkgPSB0aGlzLmhpIDw8IDE2O1xuICAgIHZhciB4aGkgPSB4LmhpIDw8IDE2O1xuICAgIGlmIChoaSA+IHhoaSkgcmV0dXJuIDE7XG4gICAgaWYgKGhpIDwgeGhpKSByZXR1cm4gLTE7XG4gICAgaWYgKHRoaXMubWkgPiB4Lm1pKSByZXR1cm4gMTtcbiAgICBpZiAodGhpcy5taSA8IHgubWkpIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5sbyA+IHgubG8pIHJldHVybiAxO1xuICAgIGlmICh0aGlzLmxvIDwgeC5sbykgcmV0dXJuIC0xO1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgbmVnKCkge1xuICAgIHZhciBsbyA9IC10aGlzLmxvO1xuICAgIHZhciBtaSA9IC10aGlzLm1pICsgKGxvID4+IDI0KTtcbiAgICB2YXIgaGkgPSAtdGhpcy5oaSArIChtaSA+PiAyNCk7XG4gICAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xuICB9XG5cbiAgYWRkKHgpIHtcbiAgICB2YXIgbG8gPSB0aGlzLmxvICsgeC5sbztcbiAgICB2YXIgbWkgPSB0aGlzLm1pICsgeC5taSArIChsbyA+PiAyNCk7XG4gICAgdmFyIGhpID0gdGhpcy5oaSArIHguaGkgKyAobWkgPj4gMjQpO1xuICAgIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbiAgfVxuXG4gIHN1Yih4KSB7XG4gICAgdmFyIGxvID0gdGhpcy5sbyAtIHgubG87XG4gICAgdmFyIG1pID0gdGhpcy5taSAtIHgubWkgKyAobG8gPj4gMjQpO1xuICAgIHZhciBoaSA9IHRoaXMuaGkgLSB4LmhpICsgKG1pID4+IDI0KTtcbiAgICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG4gIH1cblxuICBtdWwoeCkge1xuICAgIHZhciBsbyA9IHRoaXMubG8gKiB4LmxvO1xuICAgIHZhciBtaSA9ICgobG8gKiBjYW1sX2ludDY0X29mZnNldCkgfCAwKSArIHRoaXMubWkgKiB4LmxvICsgdGhpcy5sbyAqIHgubWk7XG4gICAgdmFyIGhpID1cbiAgICAgICgobWkgKiBjYW1sX2ludDY0X29mZnNldCkgfCAwKSArXG4gICAgICB0aGlzLmhpICogeC5sbyArXG4gICAgICB0aGlzLm1pICogeC5taSArXG4gICAgICB0aGlzLmxvICogeC5oaTtcbiAgICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG4gIH1cblxuICBpc1plcm8oKSB7XG4gICAgcmV0dXJuICh0aGlzLmxvIHwgdGhpcy5taSB8IHRoaXMuaGkpID09PSAwO1xuICB9XG5cbiAgaXNOZWcoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGkgPDwgMTYgPCAwO1xuICB9XG5cbiAgYW5kKHgpIHtcbiAgICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sbyAmIHgubG8sIHRoaXMubWkgJiB4Lm1pLCB0aGlzLmhpICYgeC5oaSk7XG4gIH1cblxuICBvcih4KSB7XG4gICAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG8gfCB4LmxvLCB0aGlzLm1pIHwgeC5taSwgdGhpcy5oaSB8IHguaGkpO1xuICB9XG5cbiAgeG9yKHgpIHtcbiAgICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sbyBeIHgubG8sIHRoaXMubWkgXiB4Lm1pLCB0aGlzLmhpIF4geC5oaSk7XG4gIH1cblxuICBzaGlmdF9sZWZ0KHMpIHtcbiAgICBzID0gcyAmIDYzO1xuICAgIGlmIChzID09PSAwKSByZXR1cm4gdGhpcztcbiAgICBpZiAocyA8IDI0KSB7XG4gICAgICByZXR1cm4gbmV3IE1sSW50NjQoXG4gICAgICAgIHRoaXMubG8gPDwgcyxcbiAgICAgICAgKHRoaXMubWkgPDwgcykgfCAodGhpcy5sbyA+PiAoMjQgLSBzKSksXG4gICAgICAgICh0aGlzLmhpIDw8IHMpIHwgKHRoaXMubWkgPj4gKDI0IC0gcykpLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHMgPCA0OClcbiAgICAgIHJldHVybiBuZXcgTWxJbnQ2NChcbiAgICAgICAgMCxcbiAgICAgICAgdGhpcy5sbyA8PCAocyAtIDI0KSxcbiAgICAgICAgKHRoaXMubWkgPDwgKHMgLSAyNCkpIHwgKHRoaXMubG8gPj4gKDQ4IC0gcykpLFxuICAgICAgKTtcbiAgICByZXR1cm4gbmV3IE1sSW50NjQoMCwgMCwgdGhpcy5sbyA8PCAocyAtIDQ4KSk7XG4gIH1cblxuICBzaGlmdF9yaWdodF91bnNpZ25lZChzKSB7XG4gICAgcyA9IHMgJiA2MztcbiAgICBpZiAocyA9PT0gMCkgcmV0dXJuIHRoaXM7XG4gICAgaWYgKHMgPCAyNClcbiAgICAgIHJldHVybiBuZXcgTWxJbnQ2NChcbiAgICAgICAgKHRoaXMubG8gPj4gcykgfCAodGhpcy5taSA8PCAoMjQgLSBzKSksXG4gICAgICAgICh0aGlzLm1pID4+IHMpIHwgKHRoaXMuaGkgPDwgKDI0IC0gcykpLFxuICAgICAgICB0aGlzLmhpID4+IHMsXG4gICAgICApO1xuICAgIGlmIChzIDwgNDgpXG4gICAgICByZXR1cm4gbmV3IE1sSW50NjQoXG4gICAgICAgICh0aGlzLm1pID4+IChzIC0gMjQpKSB8ICh0aGlzLmhpIDw8ICg0OCAtIHMpKSxcbiAgICAgICAgdGhpcy5oaSA+PiAocyAtIDI0KSxcbiAgICAgICAgMCxcbiAgICAgICk7XG4gICAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMuaGkgPj4gKHMgLSA0OCksIDAsIDApO1xuICB9XG5cbiAgc2hpZnRfcmlnaHQocykge1xuICAgIHMgPSBzICYgNjM7XG4gICAgaWYgKHMgPT09IDApIHJldHVybiB0aGlzO1xuICAgIHZhciBoID0gKHRoaXMuaGkgPDwgMTYpID4+IDE2O1xuICAgIGlmIChzIDwgMjQpXG4gICAgICByZXR1cm4gbmV3IE1sSW50NjQoXG4gICAgICAgICh0aGlzLmxvID4+IHMpIHwgKHRoaXMubWkgPDwgKDI0IC0gcykpLFxuICAgICAgICAodGhpcy5taSA+PiBzKSB8IChoIDw8ICgyNCAtIHMpKSxcbiAgICAgICAgKCh0aGlzLmhpIDw8IDE2KSA+PiBzKSA+Pj4gMTYsXG4gICAgICApO1xuICAgIHZhciBzaWduID0gKHRoaXMuaGkgPDwgMTYpID4+IDMxO1xuICAgIGlmIChzIDwgNDgpXG4gICAgICByZXR1cm4gbmV3IE1sSW50NjQoXG4gICAgICAgICh0aGlzLm1pID4+IChzIC0gMjQpKSB8ICh0aGlzLmhpIDw8ICg0OCAtIHMpKSxcbiAgICAgICAgKCh0aGlzLmhpIDw8IDE2KSA+PiAocyAtIDI0KSkgPj4gMTYsXG4gICAgICAgIHNpZ24gJiAweGZmZmYsXG4gICAgICApO1xuICAgIHJldHVybiBuZXcgTWxJbnQ2NCgodGhpcy5oaSA8PCAxNikgPj4gKHMgLSAzMiksIHNpZ24sIHNpZ24pO1xuICB9XG5cbiAgbHNsMSgpIHtcbiAgICB0aGlzLmhpID0gKHRoaXMuaGkgPDwgMSkgfCAodGhpcy5taSA+PiAyMyk7XG4gICAgdGhpcy5taSA9ICgodGhpcy5taSA8PCAxKSB8ICh0aGlzLmxvID4+IDIzKSkgJiAweGZmZmZmZjtcbiAgICB0aGlzLmxvID0gKHRoaXMubG8gPDwgMSkgJiAweGZmZmZmZjtcbiAgfVxuXG4gIGxzcjEoKSB7XG4gICAgdGhpcy5sbyA9ICgodGhpcy5sbyA+Pj4gMSkgfCAodGhpcy5taSA8PCAyMykpICYgMHhmZmZmZmY7XG4gICAgdGhpcy5taSA9ICgodGhpcy5taSA+Pj4gMSkgfCAodGhpcy5oaSA8PCAyMykpICYgMHhmZmZmZmY7XG4gICAgdGhpcy5oaSA9IHRoaXMuaGkgPj4+IDE7XG4gIH1cblxuICB1ZGl2bW9kKHgpIHtcbiAgICB2YXIgb2Zmc2V0ID0gMDtcbiAgICB2YXIgbW9kdWx1cyA9IHRoaXMuc2xpY2UoKTtcbiAgICB2YXIgZGl2aXNvciA9IHguc2xpY2UoKTtcbiAgICB2YXIgcXVvdGllbnQgPSBuZXcgTWxJbnQ2NCgwLCAwLCAwKTtcbiAgICB3aGlsZSAobW9kdWx1cy51Y29tcGFyZShkaXZpc29yKSA+IDApIHtcbiAgICAgIG9mZnNldCsrO1xuICAgICAgZGl2aXNvci5sc2wxKCk7XG4gICAgfVxuICAgIHdoaWxlIChvZmZzZXQgPj0gMCkge1xuICAgICAgb2Zmc2V0LS07XG4gICAgICBxdW90aWVudC5sc2wxKCk7XG4gICAgICBpZiAobW9kdWx1cy51Y29tcGFyZShkaXZpc29yKSA+PSAwKSB7XG4gICAgICAgIHF1b3RpZW50LmxvKys7XG4gICAgICAgIG1vZHVsdXMgPSBtb2R1bHVzLnN1YihkaXZpc29yKTtcbiAgICAgIH1cbiAgICAgIGRpdmlzb3IubHNyMSgpO1xuICAgIH1cbiAgICByZXR1cm4geyBxdW90aWVudDogcXVvdGllbnQsIG1vZHVsdXM6IG1vZHVsdXMgfTtcbiAgfVxuXG4gIGRpdih5KSB7XG4gICAgdmFyIHggPSB0aGlzO1xuICAgIGlmICh5LmlzWmVybygpKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlKCk7XG4gICAgdmFyIHNpZ24gPSB4LmhpIF4geS5oaTtcbiAgICBpZiAoeC5oaSAmIDB4ODAwMCkgeCA9IHgubmVnKCk7XG4gICAgaWYgKHkuaGkgJiAweDgwMDApIHkgPSB5Lm5lZygpO1xuICAgIHZhciBxID0geC51ZGl2bW9kKHkpLnF1b3RpZW50O1xuICAgIGlmIChzaWduICYgMHg4MDAwKSBxID0gcS5uZWcoKTtcbiAgICByZXR1cm4gcTtcbiAgfVxuXG4gIG1vZCh5KSB7XG4gICAgdmFyIHggPSB0aGlzO1xuICAgIGlmICh5LmlzWmVybygpKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlKCk7XG4gICAgdmFyIHNpZ24gPSB4LmhpO1xuICAgIGlmICh4LmhpICYgMHg4MDAwKSB4ID0geC5uZWcoKTtcbiAgICBpZiAoeS5oaSAmIDB4ODAwMCkgeSA9IHkubmVnKCk7XG4gICAgdmFyIHIgPSB4LnVkaXZtb2QoeSkubW9kdWx1cztcbiAgICBpZiAoc2lnbiAmIDB4ODAwMCkgciA9IHIubmVnKCk7XG4gICAgcmV0dXJuIHI7XG4gIH1cblxuICB0b0ludCgpIHtcbiAgICByZXR1cm4gdGhpcy5sbyB8ICh0aGlzLm1pIDw8IDI0KTtcbiAgfVxuXG4gIHRvRmxvYXQoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgICh0aGlzLmhpIDw8IDE2KSAqIE1hdGgucG93KDIsIDMyKSArIHRoaXMubWkgKiBNYXRoLnBvdygyLCAyNCkgKyB0aGlzLmxvXG4gICAgKTtcbiAgfVxuXG4gIHRvQXJyYXkoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHRoaXMuaGkgPj4gOCxcbiAgICAgIHRoaXMuaGkgJiAweGZmLFxuICAgICAgdGhpcy5taSA+PiAxNixcbiAgICAgICh0aGlzLm1pID4+IDgpICYgMHhmZixcbiAgICAgIHRoaXMubWkgJiAweGZmLFxuICAgICAgdGhpcy5sbyA+PiAxNixcbiAgICAgICh0aGlzLmxvID4+IDgpICYgMHhmZixcbiAgICAgIHRoaXMubG8gJiAweGZmLFxuICAgIF07XG4gIH1cblxuICBsbzMyKCkge1xuICAgIHJldHVybiB0aGlzLmxvIHwgKCh0aGlzLm1pICYgMHhmZikgPDwgMjQpO1xuICB9XG5cbiAgaGkzMigpIHtcbiAgICByZXR1cm4gKCh0aGlzLm1pID4+PiA4KSAmIDB4ZmZmZikgfCAodGhpcy5oaSA8PCAxNik7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF91bHQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdWx0KHgsIHkpIHtcbiAgcmV0dXJuIHgudWNvbXBhcmUoeSkgPCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2NvbXBhcmUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfY29tcGFyZSh4LCB5LCBfdG90YWwpIHtcbiAgcmV0dXJuIHguY29tcGFyZSh5KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9uZWcgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbmVnKHgpIHtcbiAgcmV0dXJuIHgubmVnKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfYWRkIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2FkZCh4LCB5KSB7XG4gIHJldHVybiB4LmFkZCh5KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zdWIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc3ViKHgsIHkpIHtcbiAgcmV0dXJuIHguc3ViKHkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X211bCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbXVsKHgsIHkpIHtcbiAgcmV0dXJuIHgubXVsKHkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2lzX3plcm8gY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaXNfemVybyh4KSB7XG4gIHJldHVybiAreC5pc1plcm8oKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSh4KSB7XG4gIHJldHVybiAreC5pc05lZygpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2FuZCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9hbmQoeCwgeSkge1xuICByZXR1cm4geC5hbmQoeSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb3IgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb3IoeCwgeSkge1xuICByZXR1cm4geC5vcih5KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF94b3IgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfeG9yKHgsIHkpIHtcbiAgcmV0dXJuIHgueG9yKHkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3NoaWZ0X2xlZnQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc2hpZnRfbGVmdCh4LCBzKSB7XG4gIHJldHVybiB4LnNoaWZ0X2xlZnQocyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgcykge1xuICByZXR1cm4geC5zaGlmdF9yaWdodF91bnNpZ25lZChzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zaGlmdF9yaWdodCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodCh4LCBzKSB7XG4gIHJldHVybiB4LnNoaWZ0X3JpZ2h0KHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2RpdlxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9kaXYoeCwgeSkge1xuICByZXR1cm4geC5kaXYoeSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbW9kXG5mdW5jdGlvbiBjYW1sX2ludDY0X21vZCh4LCB5KSB7XG4gIHJldHVybiB4Lm1vZCh5KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9pbnQzMiBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuLy9BbGlhczogY2FtbF9pbnQ2NF9vZl9pbnRcbi8vQWxpYXM6IGNhbWxfaW50NjRfb2ZfbmF0aXZlaW50XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX2ludDMyKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHggJiAweGZmZmZmZiwgKHggPj4gMjQpICYgMHhmZmZmZmYsICh4ID4+IDMxKSAmIDB4ZmZmZik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdG9faW50MzIgY29uc3Rcbi8vQWxpYXM6IGNhbWxfaW50NjRfdG9faW50XG4vL0FsaWFzOiBjYW1sX2ludDY0X3RvX25hdGl2ZWludFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF90b19pbnQzMih4KSB7XG4gIHJldHVybiB4LnRvSW50KCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdG9fZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdG9fZmxvYXQoeCkge1xuICByZXR1cm4geC50b0Zsb2F0KCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zmc2V0LCBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX2Zsb2F0KHgpIHtcbiAgaWYgKHggPCAwKSB4ID0gTWF0aC5jZWlsKHgpO1xuICByZXR1cm4gbmV3IE1sSW50NjQoXG4gICAgeCAmIDB4ZmZmZmZmLFxuICAgIE1hdGguZmxvb3IoeCAqIGNhbWxfaW50NjRfb2Zmc2V0KSAmIDB4ZmZmZmZmLFxuICAgIE1hdGguZmxvb3IoeCAqIGNhbWxfaW50NjRfb2Zmc2V0ICogY2FtbF9pbnQ2NF9vZmZzZXQpICYgMHhmZmZmLFxuICApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2Zvcm1hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9mb3JtYXQsIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfaXNfbmVnYXRpdmUsIGNhbWxfaW50NjRfbmVnXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2ludDMyLCBjYW1sX2ludDY0X3RvX2ludDMyXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2lzX3plcm8sIGNhbWxfc3RyX3JlcGVhdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9mb3JtYXQoZm10LCB4KSB7XG4gIHZhciBmID0gY2FtbF9wYXJzZV9mb3JtYXQoZm10KTtcbiAgaWYgKGYuc2lnbmVkY29udiAmJiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlKHgpKSB7XG4gICAgZi5zaWduID0gLTE7XG4gICAgeCA9IGNhbWxfaW50NjRfbmVnKHgpO1xuICB9XG4gIHZhciBidWZmZXIgPSBcIlwiO1xuICB2YXIgd2Jhc2UgPSBjYW1sX2ludDY0X29mX2ludDMyKGYuYmFzZSk7XG4gIHZhciBjdnRibCA9IFwiMDEyMzQ1Njc4OWFiY2RlZlwiO1xuICBkbyB7XG4gICAgdmFyIHAgPSB4LnVkaXZtb2Qod2Jhc2UpO1xuICAgIHggPSBwLnF1b3RpZW50O1xuICAgIGJ1ZmZlciA9IGN2dGJsLmNoYXJBdChjYW1sX2ludDY0X3RvX2ludDMyKHAubW9kdWx1cykpICsgYnVmZmVyO1xuICB9IHdoaWxlICghY2FtbF9pbnQ2NF9pc196ZXJvKHgpKTtcbiAgaWYgKGYucHJlYyA+PSAwKSB7XG4gICAgZi5maWxsZXIgPSBcIiBcIjtcbiAgICB2YXIgbiA9IGYucHJlYyAtIGJ1ZmZlci5sZW5ndGg7XG4gICAgaWYgKG4gPiAwKSBidWZmZXIgPSBjYW1sX3N0cl9yZXBlYXQobiwgXCIwXCIpICsgYnVmZmVyO1xuICB9XG4gIHJldHVybiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nKGYsIGJ1ZmZlcik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UsIGNhbWxfZmFpbHdpdGgsIGNhbWxfcGFyc2VfZGlnaXRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfaW50MzIsIGNhbWxfaW50NjRfdWx0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2FkZCwgY2FtbF9pbnQ2NF9tdWwsIGNhbWxfaW50NjRfbmVnXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGgsY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vZl9zdHJpbmcocykge1xuICB2YXIgciA9IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZShzKTtcbiAgdmFyIGkgPSByWzBdLFxuICAgIHNpZ24gPSByWzFdLFxuICAgIGJhc2UgPSByWzJdLFxuICAgIHNpZ25lZG5lc3MgPSByWzNdO1xuICB2YXIgYmFzZTY0ID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihiYXNlKTtcbiAgdmFyIHRocmVzaG9sZCA9IE1sSW50NjQuVU5TSUdORURfTUFYLnVkaXZtb2QoYmFzZTY0KS5xdW90aWVudDtcbiAgdmFyIGMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpO1xuICB2YXIgZCA9IGNhbWxfcGFyc2VfZGlnaXQoYyk7XG4gIGlmIChkIDwgMCB8fCBkID49IGJhc2UpIGNhbWxfZmFpbHdpdGgoXCJJbnQ2NC5vZl9zdHJpbmdcIik7XG4gIHZhciByZXMgPSBjYW1sX2ludDY0X29mX2ludDMyKGQpO1xuICBmb3IgKDs7KSB7XG4gICAgaSsrO1xuICAgIGMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpO1xuICAgIGlmIChjID09PSA5NSkgY29udGludWU7XG4gICAgZCA9IGNhbWxfcGFyc2VfZGlnaXQoYyk7XG4gICAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgYnJlYWs7XG4gICAgLyogRGV0ZWN0IG92ZXJmbG93IGluIG11bHRpcGxpY2F0aW9uIGJhc2UgKiByZXMgKi9cbiAgICBpZiAoY2FtbF9pbnQ2NF91bHQodGhyZXNob2xkLCByZXMpKSBjYW1sX2ZhaWx3aXRoKFwiSW50NjQub2Zfc3RyaW5nXCIpO1xuICAgIGQgPSBjYW1sX2ludDY0X29mX2ludDMyKGQpO1xuICAgIHJlcyA9IGNhbWxfaW50NjRfYWRkKGNhbWxfaW50NjRfbXVsKGJhc2U2NCwgcmVzKSwgZCk7XG4gICAgLyogRGV0ZWN0IG92ZXJmbG93IGluIGFkZGl0aW9uIChiYXNlICogcmVzKSArIGQgKi9cbiAgICBpZiAoY2FtbF9pbnQ2NF91bHQocmVzLCBkKSkgY2FtbF9mYWlsd2l0aChcIkludDY0Lm9mX3N0cmluZ1wiKTtcbiAgfVxuICBpZiAoaSAhPT0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKSBjYW1sX2ZhaWx3aXRoKFwiSW50NjQub2Zfc3RyaW5nXCIpO1xuICBpZiAoXG4gICAgc2lnbmVkbmVzcyAmJlxuICAgIGNhbWxfaW50NjRfdWx0KHNpZ24gPCAwID8gTWxJbnQ2NC5TSUdORURfTUlOIDogTWxJbnQ2NC5TSUdORURfTUFYLCByZXMpXG4gIClcbiAgICBjYW1sX2ZhaWx3aXRoKFwiSW50NjQub2Zfc3RyaW5nXCIpO1xuICBpZiAoc2lnbiA8IDApIHJlcyA9IGNhbWxfaW50NjRfbmVnKHJlcyk7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaShsbywgbWksIGhpKSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaShsbywgaGkpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KFxuICAgIGxvICYgMHhmZmZmZmYsXG4gICAgKChsbyA+Pj4gMjQpICYgMHhmZikgfCAoKGhpICYgMHhmZmZmKSA8PCA4KSxcbiAgICAoaGkgPj4+IDE2KSAmIDB4ZmZmZixcbiAgKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbG8zMiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9sbzMyKHYpIHtcbiAgcmV0dXJuIHYubG8zMigpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2hpMzIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaGkzMih2KSB7XG4gIHJldHVybiB2LmhpMzIoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9ieXRlcyBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vZl9ieXRlcyhhKSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChcbiAgICAoYVs3XSA8PCAwKSB8IChhWzZdIDw8IDgpIHwgKGFbNV0gPDwgMTYpLFxuICAgIChhWzRdIDw8IDApIHwgKGFbM10gPDwgOCkgfCAoYVsyXSA8PCAxNiksXG4gICAgKGFbMV0gPDwgMCkgfCAoYVswXSA8PCA4KSxcbiAgKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXMgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdG9fYnl0ZXMoeCkge1xuICByZXR1cm4geC50b0FycmF5KCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfaGFzaCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9oYXNoKHYpIHtcbiAgcmV0dXJuIHYubG8zMigpIF4gdi5oaTMyKCk7XG59XG4iLCIvL1Byb3ZpZGVzOiBNbE11dGV4XG5jbGFzcyBNbE11dGV4IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5sb2NrZWQgPSBmYWxzZTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX211dGV4X25ld1xuLy9SZXF1aXJlczogTWxNdXRleFxuZnVuY3Rpb24gY2FtbF9tbF9tdXRleF9uZXcoX3VuaXQpIHtcbiAgcmV0dXJuIG5ldyBNbE11dGV4KCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfbXV0ZXhfbG9ja1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9tbF9tdXRleF9sb2NrKHQpIHtcbiAgaWYgKHQubG9ja2VkKSBjYW1sX2ZhaWx3aXRoKFwiTXV0ZXgubG9jazogbXV0ZXggYWxyZWFkeSBsb2NrZWQuIENhbm5vdCB3YWl0LlwiKTtcbiAgZWxzZSB0LmxvY2tlZCA9IHRydWU7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX211dGV4X3RyeV9sb2NrXG5mdW5jdGlvbiBjYW1sX21sX211dGV4X3RyeV9sb2NrKHQpIHtcbiAgaWYgKCF0LmxvY2tlZCkge1xuICAgIHQubG9ja2VkID0gdHJ1ZTtcbiAgICByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9tdXRleF91bmxvY2tcbmZ1bmN0aW9uIGNhbWxfbWxfbXV0ZXhfdW5sb2NrKHQpIHtcbiAgdC5sb2NrZWQgPSBmYWxzZTtcbiAgcmV0dXJuIDA7XG59XG4iLCIvL1Byb3ZpZGVzOiBpbml0aWFsaXplX25hdFxuLy9SZXF1aXJlczogY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBzZXJpYWxpemVfbmF0LCBkZXNlcmlhbGl6ZV9uYXQsIGNhbWxfaGFzaF9uYXRcbmZ1bmN0aW9uIGluaXRpYWxpemVfbmF0KCkge1xuICBjYW1sX2N1c3RvbV9vcHMuX25hdCA9IHtcbiAgICBkZXNlcmlhbGl6ZTogZGVzZXJpYWxpemVfbmF0LFxuICAgIHNlcmlhbGl6ZTogc2VyaWFsaXplX25hdCxcbiAgICBoYXNoOiBjYW1sX2hhc2hfbmF0LFxuICB9O1xufVxuXG4vL1Byb3ZpZGVzOiBNbE5hdFxuY2xhc3MgTWxOYXQge1xuICBjb25zdHJ1Y3Rvcih4KSB7XG4gICAgdGhpcy5kYXRhID0gbmV3IEludDMyQXJyYXkoeCk7XG4gICAgLy8gRm9yIG51bSA8IDEuNVxuICAgIC8vIGxlbmd0aF9uYXQgaXNuJ3QgZXh0ZXJuYWwsIHNvIHdlIGhhdmUgdG8gbWFrZSB0aGUgT2JqLnNpemVcbiAgICAvLyB3b3JrIG91dCByaWdodC5cbiAgICAvLyBXZSBhZGQgKzIgdG8gdGhlIGFycmF5IGxlbmd0aDpcbiAgICAvLyAtICsxIGZvciB0aGUgdGFnXG4gICAgLy8gLSArMSBmb3IgdGhlIGN1c3RvbV9vcHMgc2xvdFxuICAgIHRoaXMubGVuZ3RoID0gdGhpcy5kYXRhLmxlbmd0aCArIDI7XG4gICAgdGhpcy5jYW1sX2N1c3RvbSA9IFwiX25hdFwiO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9uYXRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50LCBudW1fZGlnaXRzX25hdFxuZnVuY3Rpb24gY2FtbF9oYXNoX25hdCh4KSB7XG4gIHZhciBsZW4gPSBudW1fZGlnaXRzX25hdCh4LCAwLCB4LmRhdGEubGVuZ3RoKTtcbiAgdmFyIGggPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHguZGF0YVtpXSk7XG4gIH1cbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGxlbmd0aF9uYXRcbmZ1bmN0aW9uIGxlbmd0aF9uYXQoeCkge1xuICByZXR1cm4geC5kYXRhLmxlbmd0aDtcbn1cblxuLy9Qcm92aWRlczogbmF0X29mX2FycmF5XG4vL1JlcXVpcmVzOiBNbE5hdFxuZnVuY3Rpb24gbmF0X29mX2FycmF5KGwpIHtcbiAgcmV0dXJuIG5ldyBNbE5hdChsKTtcbn1cblxuLy9Qcm92aWRlczogY3JlYXRlX25hdFxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIGNyZWF0ZV9uYXQoc2l6ZSkge1xuICB2YXIgYXJyID0gbmV3IE1sTmF0KHNpemUpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgIGFyci5kYXRhW2ldID0gLTE7XG4gIH1cbiAgcmV0dXJuIGFycjtcbn1cblxuLy9Qcm92aWRlczogc2V0X3RvX3plcm9fbmF0XG5mdW5jdGlvbiBzZXRfdG9femVyb19uYXQobmF0LCBvZnMsIGxlbikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgbmF0LmRhdGFbb2ZzICsgaV0gPSAwO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBibGl0X25hdFxuZnVuY3Rpb24gYmxpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMiwgbGVuKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBuYXQxLmRhdGFbb2ZzMSArIGldID0gbmF0Mi5kYXRhW29mczIgKyBpXTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogc2V0X2RpZ2l0X25hdFxuZnVuY3Rpb24gc2V0X2RpZ2l0X25hdChuYXQsIG9mcywgZGlnaXQpIHtcbiAgbmF0LmRhdGFbb2ZzXSA9IGRpZ2l0O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbnRoX2RpZ2l0X25hdFxuZnVuY3Rpb24gbnRoX2RpZ2l0X25hdChuYXQsIG9mcykge1xuICByZXR1cm4gbmF0LmRhdGFbb2ZzXTtcbn1cblxuLy9Qcm92aWRlczogc2V0X2RpZ2l0X25hdF9uYXRpdmVcbmZ1bmN0aW9uIHNldF9kaWdpdF9uYXRfbmF0aXZlKG5hdCwgb2ZzLCBkaWdpdCkge1xuICBuYXQuZGF0YVtvZnNdID0gZGlnaXQ7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBudGhfZGlnaXRfbmF0X25hdGl2ZVxuZnVuY3Rpb24gbnRoX2RpZ2l0X25hdF9uYXRpdmUobmF0LCBvZnMpIHtcbiAgcmV0dXJuIG5hdC5kYXRhW29mc107XG59XG5cbi8vUHJvdmlkZXM6IG51bV9kaWdpdHNfbmF0XG5mdW5jdGlvbiBudW1fZGlnaXRzX25hdChuYXQsIG9mcywgbGVuKSB7XG4gIGZvciAodmFyIGkgPSBsZW4gLSAxOyBpID49IDA7IGktLSkge1xuICAgIGlmIChuYXQuZGF0YVtvZnMgKyBpXSAhPT0gMCkgcmV0dXJuIGkgKyAxO1xuICB9XG4gIHJldHVybiAxOyAvLyAwIGNvdW50cyBhcyAxIGRpZ2l0XG59XG5cbi8vUHJvdmlkZXM6IG51bV9sZWFkaW5nX3plcm9fYml0c19pbl9kaWdpdFxuZnVuY3Rpb24gbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0KG5hdCwgb2ZzKSB7XG4gIHZhciBhID0gbmF0LmRhdGFbb2ZzXTtcbiAgdmFyIGIgPSAwO1xuICBpZiAoYSAmIDB4ZmZmZjAwMDApIHtcbiAgICBiICs9IDE2O1xuICAgIGEgPj4+PSAxNjtcbiAgfVxuICBpZiAoYSAmIDB4ZmYwMCkge1xuICAgIGIgKz0gODtcbiAgICBhID4+Pj0gODtcbiAgfVxuICBpZiAoYSAmIDB4ZjApIHtcbiAgICBiICs9IDQ7XG4gICAgYSA+Pj49IDQ7XG4gIH1cbiAgaWYgKGEgJiAxMikge1xuICAgIGIgKz0gMjtcbiAgICBhID4+Pj0gMjtcbiAgfVxuICBpZiAoYSAmIDIpIHtcbiAgICBiICs9IDE7XG4gICAgYSA+Pj49IDE7XG4gIH1cbiAgaWYgKGEgJiAxKSB7XG4gICAgYiArPSAxO1xuICB9XG4gIHJldHVybiAzMiAtIGI7XG59XG5cbi8vUHJvdmlkZXM6IGlzX2RpZ2l0X2ludFxuZnVuY3Rpb24gaXNfZGlnaXRfaW50KG5hdCwgb2ZzKSB7XG4gIGlmIChuYXQuZGF0YVtvZnNdID49IDApIHJldHVybiAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogaXNfZGlnaXRfemVyb1xuZnVuY3Rpb24gaXNfZGlnaXRfemVybyhuYXQsIG9mcykge1xuICBpZiAobmF0LmRhdGFbb2ZzXSA9PT0gMCkgcmV0dXJuIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBpc19kaWdpdF9ub3JtYWxpemVkXG5mdW5jdGlvbiBpc19kaWdpdF9ub3JtYWxpemVkKF9uYXQsIF9vZnMpIHtcbiAgcmV0dXJuIDE7XG59XG5cbi8vUHJvdmlkZXM6IGlzX2RpZ2l0X29kZFxuZnVuY3Rpb24gaXNfZGlnaXRfb2RkKG5hdCwgb2ZzKSB7XG4gIGlmIChuYXQuZGF0YVtvZnNdICYgMSkgcmV0dXJuIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBpbmNyX25hdFxuZnVuY3Rpb24gaW5jcl9uYXQobmF0LCBvZnMsIGxlbiwgY2FycnlfaW4pIHtcbiAgdmFyIGNhcnJ5ID0gY2FycnlfaW47XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgeCA9IChuYXQuZGF0YVtvZnMgKyBpXSA+Pj4gMCkgKyBjYXJyeTtcbiAgICBuYXQuZGF0YVtvZnMgKyBpXSA9IHggfCAwO1xuICAgIGlmICh4ID09PSB4ID4+PiAwKSB7XG4gICAgICBjYXJyeSA9IDA7XG4gICAgICBicmVhaztcbiAgICB9IGVsc2Uge1xuICAgICAgY2FycnkgPSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY2Fycnk7XG59XG5cbi8vIGxlbjEgPj0gbGVuMlxuLy9Qcm92aWRlczogYWRkX25hdFxuLy9SZXF1aXJlczogaW5jcl9uYXRcbmZ1bmN0aW9uIGFkZF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgY2FycnlfaW4pIHtcbiAgdmFyIGNhcnJ5ID0gY2FycnlfaW47XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuMjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0MS5kYXRhW29mczEgKyBpXSA+Pj4gMCkgKyAobmF0Mi5kYXRhW29mczIgKyBpXSA+Pj4gMCkgKyBjYXJyeTtcbiAgICBuYXQxLmRhdGFbb2ZzMSArIGldID0geDtcbiAgICBpZiAoeCA9PT0geCA+Pj4gMCkge1xuICAgICAgY2FycnkgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYXJyeSA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiBpbmNyX25hdChuYXQxLCBvZnMxICsgbGVuMiwgbGVuMSAtIGxlbjIsIGNhcnJ5KTtcbn1cblxuLy9Qcm92aWRlczogY29tcGxlbWVudF9uYXRcbmZ1bmN0aW9uIGNvbXBsZW1lbnRfbmF0KG5hdCwgb2ZzLCBsZW4pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG5hdC5kYXRhW29mcyArIGldID0gKC0xID4+PiAwKSAtIChuYXQuZGF0YVtvZnMgKyBpXSA+Pj4gMCk7XG4gIH1cbn1cblxuLy8gb2NhbWwgZmxpcHMgY2FycnlfaW5cbi8vUHJvdmlkZXM6IGRlY3JfbmF0XG5mdW5jdGlvbiBkZWNyX25hdChuYXQsIG9mcywgbGVuLCBjYXJyeV9pbikge1xuICB2YXIgYm9ycm93ID0gY2FycnlfaW4gPT09IDEgPyAwIDogMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciB4ID0gKG5hdC5kYXRhW29mcyArIGldID4+PiAwKSAtIGJvcnJvdztcbiAgICBuYXQuZGF0YVtvZnMgKyBpXSA9IHg7XG4gICAgaWYgKHggPj0gMCkge1xuICAgICAgYm9ycm93ID0gMDtcbiAgICAgIGJyZWFrO1xuICAgIH0gZWxzZSB7XG4gICAgICBib3Jyb3cgPSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYm9ycm93ID09PSAxID8gMCA6IDE7XG59XG5cbi8vIG9jYW1sIGZsaXBzIGNhcnJ5X2luXG4vLyBsZW4xID49IGxlbjJcbi8vUHJvdmlkZXM6IHN1Yl9uYXRcbi8vUmVxdWlyZXM6IGRlY3JfbmF0XG5mdW5jdGlvbiBzdWJfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIGNhcnJ5X2luKSB7XG4gIHZhciBib3Jyb3cgPSBjYXJyeV9pbiA9PT0gMSA/IDAgOiAxO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjI7IGkrKykge1xuICAgIHZhciB4ID0gKG5hdDEuZGF0YVtvZnMxICsgaV0gPj4+IDApIC0gKG5hdDIuZGF0YVtvZnMyICsgaV0gPj4+IDApIC0gYm9ycm93O1xuICAgIG5hdDEuZGF0YVtvZnMxICsgaV0gPSB4O1xuICAgIGlmICh4ID49IDApIHtcbiAgICAgIGJvcnJvdyA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJvcnJvdyA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiBkZWNyX25hdChuYXQxLCBvZnMxICsgbGVuMiwgbGVuMSAtIGxlbjIsIGJvcnJvdyA9PT0gMSA/IDAgOiAxKTtcbn1cblxuLy8gbmF0MSArPSBuYXQyICogbmF0M1tvZnMzXVxuLy8gbGVuMSA+PSBsZW4yXG4vL1Byb3ZpZGVzOiBtdWx0X2RpZ2l0X25hdFxuLy9SZXF1aXJlczogYWRkX25hdCwgbmF0X29mX2FycmF5XG5mdW5jdGlvbiBtdWx0X2RpZ2l0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXQzLCBvZnMzKSB7XG4gIHZhciBjYXJyeSA9IDA7XG4gIHZhciBhID0gbmF0My5kYXRhW29mczNdID4+PiAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjI7IGkrKykge1xuICAgIHZhciB4MSA9XG4gICAgICAobmF0MS5kYXRhW29mczEgKyBpXSA+Pj4gMCkgK1xuICAgICAgKG5hdDIuZGF0YVtvZnMyICsgaV0gPj4+IDApICogKGEgJiAweDAwMDBmZmZmKSArXG4gICAgICBjYXJyeTtcbiAgICB2YXIgeDIgPSAobmF0Mi5kYXRhW29mczIgKyBpXSA+Pj4gMCkgKiAoYSA+Pj4gMTYpO1xuICAgIGNhcnJ5ID0gTWF0aC5mbG9vcih4MiAvIDY1NTM2KTtcbiAgICB2YXIgeDMgPSB4MSArICh4MiAlIDY1NTM2KSAqIDY1NTM2O1xuICAgIG5hdDEuZGF0YVtvZnMxICsgaV0gPSB4MztcbiAgICBjYXJyeSArPSBNYXRoLmZsb29yKHgzIC8gNDI5NDk2NzI5Nik7XG4gIH1cblxuICBpZiAobGVuMiA8IGxlbjEgJiYgY2FycnkpIHtcbiAgICByZXR1cm4gYWRkX25hdChcbiAgICAgIG5hdDEsXG4gICAgICBvZnMxICsgbGVuMixcbiAgICAgIGxlbjEgLSBsZW4yLFxuICAgICAgbmF0X29mX2FycmF5KFtjYXJyeV0pLFxuICAgICAgMCxcbiAgICAgIDEsXG4gICAgICAwLFxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNhcnJ5O1xuICB9XG59XG5cbi8vIG5hdDEgKz0gbmF0MiAqIG5hdDNcbi8vIGxlbjEgPj0gbGVuMiArIGxlbjMuXG4vL1Byb3ZpZGVzOiBtdWx0X25hdFxuLy9SZXF1aXJlczogbXVsdF9kaWdpdF9uYXRcbmZ1bmN0aW9uIG11bHRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdDMsIG9mczMsIGxlbjMpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW4zOyBpKyspIHtcbiAgICBjYXJyeSArPSBtdWx0X2RpZ2l0X25hdChcbiAgICAgIG5hdDEsXG4gICAgICBvZnMxICsgaSxcbiAgICAgIGxlbjEgLSBpLFxuICAgICAgbmF0MixcbiAgICAgIG9mczIsXG4gICAgICBsZW4yLFxuICAgICAgbmF0MyxcbiAgICAgIG9mczMgKyBpLFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGNhcnJ5O1xufVxuXG4vLyBuYXQxID0gMiAqIG5hdDEgKyBuYXQyICogbmF0MlxuLy8gbGVuMSA+PSAyICogbGVuMlxuLy9Qcm92aWRlczogc3F1YXJlX25hdFxuLy9SZXF1aXJlczogbXVsdF9uYXQsIGFkZF9uYXRcbmZ1bmN0aW9uIHNxdWFyZV9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMikge1xuICB2YXIgY2FycnkgPSAwO1xuICBjYXJyeSArPSBhZGRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDEsIG9mczEsIGxlbjEsIDApO1xuICBjYXJyeSArPSBtdWx0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXQyLCBvZnMyLCBsZW4yKTtcbiAgcmV0dXJuIGNhcnJ5O1xufVxuXG4vLyAwIDw9IHNoaWZ0IDwgMzJcbi8vUHJvdmlkZXM6IHNoaWZ0X2xlZnRfbmF0XG5mdW5jdGlvbiBzaGlmdF9sZWZ0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBuYml0cykge1xuICBpZiAobmJpdHMgPT09IDApIHtcbiAgICBuYXQyLmRhdGFbb2ZzMl0gPSAwO1xuICAgIHJldHVybiAwO1xuICB9XG4gIHZhciB3cmFwID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW4xOyBpKyspIHtcbiAgICB2YXIgYSA9IG5hdDEuZGF0YVtvZnMxICsgaV0gPj4+IDA7XG4gICAgbmF0MS5kYXRhW29mczEgKyBpXSA9IChhIDw8IG5iaXRzKSB8IHdyYXA7XG4gICAgd3JhcCA9IGEgPj4+ICgzMiAtIG5iaXRzKTtcbiAgfVxuICBuYXQyLmRhdGFbb2ZzMl0gPSB3cmFwO1xuICByZXR1cm4gMDtcbn1cblxuLy8gQXNzdW1pbmcgYyA+IGEsIHJldHVybnMgW3F1b3RpZW50LCByZW1haW5kZXJdIG9mIChhPDwzMiArIGIpL2Ncbi8vUHJvdmlkZXM6IGRpdl9oZWxwZXJcbmZ1bmN0aW9uIGRpdl9oZWxwZXIoYSwgYiwgYykge1xuICB2YXIgeCA9IGEgKiA2NTUzNiArIChiID4+PiAxNik7XG4gIHZhciB5ID0gTWF0aC5mbG9vcih4IC8gYykgKiA2NTUzNjtcbiAgdmFyIHogPSAoeCAlIGMpICogNjU1MzY7XG4gIHZhciB3ID0geiArIChiICYgMHgwMDAwZmZmZik7XG4gIHJldHVybiBbeSArIE1hdGguZmxvb3IodyAvIGMpLCB3ICUgY107XG59XG5cbi8vIG5hdDFbb2ZzMStsZW5dIDwgbmF0MltvZnMyXVxuLy9Qcm92aWRlczogZGl2X2RpZ2l0X25hdFxuLy9SZXF1aXJlczogZGl2X2hlbHBlclxuZnVuY3Rpb24gZGl2X2RpZ2l0X25hdChuYXRxLCBvZnNxLCBuYXRyLCBvZnNyLCBuYXQxLCBvZnMxLCBsZW4sIG5hdDIsIG9mczIpIHtcbiAgdmFyIHJlbSA9IG5hdDEuZGF0YVtvZnMxICsgbGVuIC0gMV0gPj4+IDA7XG4gIC8vIG5hdHFbb2ZzcStsZW4tMV0gaXMgZ3VhcmFudGVlZCB0byBiZSB6ZXJvIChkdWUgdG8gdGhlIE1TRCByZXF1aXJlbWVudCksXG4gIC8vIGFuZCBzaG91bGQgbm90IGJlIHdyaXR0ZW4gdG8uXG4gIGZvciAodmFyIGkgPSBsZW4gLSAyOyBpID49IDA7IGktLSkge1xuICAgIHZhciB4ID0gZGl2X2hlbHBlcihyZW0sIG5hdDEuZGF0YVtvZnMxICsgaV0gPj4+IDAsIG5hdDIuZGF0YVtvZnMyXSA+Pj4gMCk7XG4gICAgbmF0cS5kYXRhW29mc3EgKyBpXSA9IHhbMF07XG4gICAgcmVtID0geFsxXTtcbiAgfVxuICBuYXRyLmRhdGFbb2Zzcl0gPSByZW07XG4gIHJldHVybiAwO1xufVxuXG4vLyBuYXQxW25hdDI6XSA6PSBuYXQxIC8gbmF0MlxuLy8gbmF0MVs6bmF0Ml0gOj0gbmF0MSAlIG5hdDJcbi8vIGxlbjEgPiBsZW4yLCBuYXQyW29mczIrbGVuMi0xXSA+IG5hdDFbb2ZzMStsZW4xLTFdXG4vL1Byb3ZpZGVzOiBkaXZfbmF0XG4vL1JlcXVpcmVzOiBkaXZfZGlnaXRfbmF0LCBkaXZfaGVscGVyLCBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQsIHNoaWZ0X2xlZnRfbmF0LCBzaGlmdF9yaWdodF9uYXQsIGNyZWF0ZV9uYXQsIHNldF90b196ZXJvX25hdCwgbXVsdF9kaWdpdF9uYXQsIHN1Yl9uYXQsIGNvbXBhcmVfbmF0LCBuYXRfb2ZfYXJyYXlcbmZ1bmN0aW9uIGRpdl9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMikge1xuICBpZiAobGVuMiA9PT0gMSkge1xuICAgIGRpdl9kaWdpdF9uYXQobmF0MSwgb2ZzMSArIDEsIG5hdDEsIG9mczEsIG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIpO1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgdmFyIHMgPSBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQobmF0Miwgb2ZzMiArIGxlbjIgLSAxKTtcbiAgc2hpZnRfbGVmdF9uYXQobmF0Miwgb2ZzMiwgbGVuMiwgbmF0X29mX2FycmF5KFswXSksIDAsIHMpO1xuICBzaGlmdF9sZWZ0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7XG5cbiAgdmFyIGQgPSAobmF0Mi5kYXRhW29mczIgKyBsZW4yIC0gMV0gPj4+IDApICsgMTtcbiAgdmFyIGEgPSBjcmVhdGVfbmF0KGxlbjIgKyAxKTtcbiAgZm9yICh2YXIgaSA9IGxlbjEgLSAxOyBpID49IGxlbjI7IGktLSkge1xuICAgIC8vIERlY2VudCBsb3dlciBib3VuZCBvbiBxdW9cbiAgICB2YXIgcXVvID1cbiAgICAgIGQgPT09IDQyOTQ5NjcyOTZcbiAgICAgICAgPyBuYXQxLmRhdGFbb2ZzMSArIGldID4+PiAwXG4gICAgICAgIDogZGl2X2hlbHBlcihcbiAgICAgICAgICAgIG5hdDEuZGF0YVtvZnMxICsgaV0gPj4+IDAsXG4gICAgICAgICAgICBuYXQxLmRhdGFbb2ZzMSArIGkgLSAxXSA+Pj4gMCxcbiAgICAgICAgICAgIGQsXG4gICAgICAgICAgKVswXTtcbiAgICBzZXRfdG9femVyb19uYXQoYSwgMCwgbGVuMiArIDEpO1xuICAgIG11bHRfZGlnaXRfbmF0KGEsIDAsIGxlbjIgKyAxLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXRfb2ZfYXJyYXkoW3F1b10pLCAwKTtcbiAgICBzdWJfbmF0KG5hdDEsIG9mczEgKyBpIC0gbGVuMiwgbGVuMiArIDEsIGEsIDAsIGxlbjIgKyAxLCAxKTtcblxuICAgIHdoaWxlIChcbiAgICAgIG5hdDEuZGF0YVtvZnMxICsgaV0gIT09IDAgfHxcbiAgICAgIGNvbXBhcmVfbmF0KG5hdDEsIG9mczEgKyBpIC0gbGVuMiwgbGVuMiwgbmF0Miwgb2ZzMiwgbGVuMikgPj0gMFxuICAgICkge1xuICAgICAgcXVvID0gcXVvICsgMTtcbiAgICAgIHN1Yl9uYXQobmF0MSwgb2ZzMSArIGkgLSBsZW4yLCBsZW4yICsgMSwgbmF0Miwgb2ZzMiwgbGVuMiwgMSk7XG4gICAgfVxuXG4gICAgbmF0MS5kYXRhW29mczEgKyBpXSA9IHF1bztcbiAgfVxuXG4gIHNoaWZ0X3JpZ2h0X25hdChuYXQxLCBvZnMxLCBsZW4yLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7IC8vIHNoaWZ0IHJlbWFpbmRlclxuICBzaGlmdF9yaWdodF9uYXQobmF0Miwgb2ZzMiwgbGVuMiwgbmF0X29mX2FycmF5KFswXSksIDAsIHMpOyAvLyByZXN0b3JlXG4gIHJldHVybiAwO1xufVxuXG4vLyAwIDw9IHNoaWZ0IDwgMzJcbi8vUHJvdmlkZXM6IHNoaWZ0X3JpZ2h0X25hdFxuZnVuY3Rpb24gc2hpZnRfcmlnaHRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIG5iaXRzKSB7XG4gIGlmIChuYml0cyA9PT0gMCkge1xuICAgIG5hdDIuZGF0YVtvZnMyXSA9IDA7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgdmFyIHdyYXAgPSAwO1xuICBmb3IgKHZhciBpID0gbGVuMSAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIGEgPSBuYXQxLmRhdGFbb2ZzMSArIGldID4+PiAwO1xuICAgIG5hdDEuZGF0YVtvZnMxICsgaV0gPSAoYSA+Pj4gbmJpdHMpIHwgd3JhcDtcbiAgICB3cmFwID0gYSA8PCAoMzIgLSBuYml0cyk7XG4gIH1cbiAgbmF0Mi5kYXRhW29mczJdID0gd3JhcDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNvbXBhcmVfZGlnaXRzX25hdFxuZnVuY3Rpb24gY29tcGFyZV9kaWdpdHNfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgaWYgKG5hdDEuZGF0YVtvZnMxXSA+IG5hdDIuZGF0YVtvZnMyXSkgcmV0dXJuIDE7XG4gIGlmIChuYXQxLmRhdGFbb2ZzMV0gPCBuYXQyLmRhdGFbb2ZzMl0pIHJldHVybiAtMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNvbXBhcmVfbmF0XG4vL1JlcXVpcmVzOiBudW1fZGlnaXRzX25hdFxuZnVuY3Rpb24gY29tcGFyZV9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMikge1xuICB2YXIgYSA9IG51bV9kaWdpdHNfbmF0KG5hdDEsIG9mczEsIGxlbjEpO1xuICB2YXIgYiA9IG51bV9kaWdpdHNfbmF0KG5hdDIsIG9mczIsIGxlbjIpO1xuICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgZm9yICh2YXIgaSA9IGxlbjEgLSAxOyBpID49IDA7IGktLSkge1xuICAgIGlmIChuYXQxLmRhdGFbb2ZzMSArIGldID4+PiAwID4gbmF0Mi5kYXRhW29mczIgKyBpXSA+Pj4gMCkgcmV0dXJuIDE7XG4gICAgaWYgKG5hdDEuZGF0YVtvZnMxICsgaV0gPj4+IDAgPCBuYXQyLmRhdGFbb2ZzMiArIGldID4+PiAwKSByZXR1cm4gLTE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGxhbmRfZGlnaXRfbmF0XG5mdW5jdGlvbiBsYW5kX2RpZ2l0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIG5hdDEuZGF0YVtvZnMxXSAmPSBuYXQyLmRhdGFbb2ZzMl07XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBsb3JfZGlnaXRfbmF0XG5mdW5jdGlvbiBsb3JfZGlnaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgbmF0MS5kYXRhW29mczFdIHw9IG5hdDIuZGF0YVtvZnMyXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGx4b3JfZGlnaXRfbmF0XG5mdW5jdGlvbiBseG9yX2RpZ2l0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIG5hdDEuZGF0YVtvZnMxXSBePSBuYXQyLmRhdGFbb2ZzMl07XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBzZXJpYWxpemVfbmF0XG5mdW5jdGlvbiBzZXJpYWxpemVfbmF0KHdyaXRlciwgbmF0LCBzeikge1xuICB2YXIgbGVuID0gbmF0LmRhdGEubGVuZ3RoO1xuICB3cml0ZXIud3JpdGUoMzIsIGxlbik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB3cml0ZXIud3JpdGUoMzIsIG5hdC5kYXRhW2ldKTtcbiAgfVxuICBzelswXSA9IGxlbiAqIDQ7XG4gIHN6WzFdID0gbGVuICogODtcbn1cblxuLy9Qcm92aWRlczogZGVzZXJpYWxpemVfbmF0XG4vL1JlcXVpcmVzOiBNbE5hdFxuZnVuY3Rpb24gZGVzZXJpYWxpemVfbmF0KHJlYWRlciwgc3opIHtcbiAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIHZhciBuYXQgPSBuZXcgTWxOYXQobGVuKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG5hdC5kYXRhW2ldID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgfVxuICBzelswXSA9IGxlbiAqIDQ7XG4gIHJldHVybiBuYXQ7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBqc29vX2lzX3dpbjMyXG52YXIganNvb19pc193aW4zMiA9XG4gIGdsb2JhbFRoaXMuRGVubz8uYnVpbGQ/Lm9zID09PSBcIndpbmRvd3NcIiB8fFxuICBnbG9iYWxUaGlzLnByb2Nlc3M/LnBsYXRmb3JtID09PSBcIndpbjMyXCI7XG5cbi8vUHJvdmlkZXM6IGZzX25vZGVfc3VwcG9ydGVkXG5mdW5jdGlvbiBmc19ub2RlX3N1cHBvcnRlZCgpIHtcbiAgcmV0dXJuIGdsb2JhbFRoaXMucHJvY2Vzcz8udmVyc2lvbnM/Lm5vZGUgIT09IHVuZGVmaW5lZDtcbn1cbi8vUHJvdmlkZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBmc19ub2RlX3N1cHBvcnRlZCgpIHtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVEZXZpY2Vcbi8vUmVxdWlyZXM6IE1sTm9kZUZkLCBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yLCBvY2FtbF9zdGF0c19mcm9tX25vZGVfc3RhdHNcbi8vUmVxdWlyZXM6IGpzb29faXNfd2luMzJcbmNsYXNzIE1sTm9kZURldmljZSB7XG4gIGNvbnN0cnVjdG9yKHJvb3QpIHtcbiAgICB0aGlzLmZzID0gcmVxdWlyZShcIm5vZGU6ZnNcIik7XG4gICAgdGhpcy5yb290ID0gcm9vdDtcbiAgfVxuXG4gIG5tKG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5yb290ICsgbmFtZTtcbiAgfVxuXG4gIGV4aXN0cyhuYW1lKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB0aGlzLmZzLmV4aXN0c1N5bmModGhpcy5ubShuYW1lKSkgPyAxIDogMDtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgfVxuXG4gIGlzRmlsZShuYW1lKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB0aGlzLmZzLnN0YXRTeW5jKHRoaXMubm0obmFtZSkpLmlzRmlsZSgpID8gMSA6IDA7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gICAgfVxuICB9XG5cbiAgbWtkaXIobmFtZSwgbW9kZSwgcmFpc2VfdW5peCkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmZzLm1rZGlyU3luYyh0aGlzLm5tKG5hbWUpLCB7IG1vZGU6IG1vZGUgfSk7XG4gICAgICByZXR1cm4gMDtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gICAgfVxuICB9XG5cbiAgcm1kaXIobmFtZSwgcmFpc2VfdW5peCkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmZzLnJtZGlyU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICAgIHJldHVybiAwO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY2FtbF9yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgICB9XG4gIH1cblxuICByZWFkZGlyKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMuZnMucmVhZGRpclN5bmModGhpcy5ubShuYW1lKSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjYW1sX3JhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICAgIH1cbiAgfVxuXG4gIGlzX2RpcihuYW1lKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB0aGlzLmZzLnN0YXRTeW5jKHRoaXMubm0obmFtZSkpLmlzRGlyZWN0b3J5KCkgPyAxIDogMDtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgICB9XG4gIH1cblxuICB1bmxpbmsobmFtZSwgcmFpc2VfdW5peCkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmZzLnVubGlua1N5bmModGhpcy5ubShuYW1lKSk7XG4gICAgICByZXR1cm4gMDtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gICAgfVxuICB9XG5cbiAgdXRpbWVzKG5hbWUsIGF0aW1lLCBtdGltZSwgcmFpc2VfdW5peCkge1xuICAgIHRyeSB7XG4gICAgICBpZiAoYXRpbWUgPT09IDAgJiYgbXRpbWUgPT09IDApIHtcbiAgICAgICAgYXRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDA7XG4gICAgICAgIG10aW1lID0gYXRpbWU7XG4gICAgICB9XG4gICAgICB0aGlzLmZzLnV0aW1lc1N5bmModGhpcy5ubShuYW1lKSwgYXRpbWUsIG10aW1lKTtcbiAgICAgIHJldHVybiAwO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY2FtbF9yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgICB9XG4gIH1cblxuICB0cnVuY2F0ZShuYW1lLCBsZW4sIHJhaXNlX3VuaXgpIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5mcy50cnVuY2F0ZVN5bmModGhpcy5ubShuYW1lKSwgbGVuIHwgMCk7XG4gICAgICByZXR1cm4gMDtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gICAgfVxuICB9XG5cbiAgYWNjZXNzKG5hbWUsIGYsIHJhaXNlX3VuaXgpIHtcbiAgICB2YXIgY29uc3RzID0gdGhpcy5mcy5jb25zdGFudHM7XG4gICAgdmFyIHJlcyA9IDA7XG4gICAgZm9yICh2YXIga2V5IGluIGYpIHtcbiAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgIGNhc2UgXCJyXCI6XG4gICAgICAgICAgcmVzIHw9IGNvbnN0cy5SX09LO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwid1wiOlxuICAgICAgICAgIHJlcyB8PSBjb25zdHMuV19PSztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInhcIjpcbiAgICAgICAgICByZXMgfD0ganNvb19pc193aW4zMiA/IGNvbnN0cy5SX09LIDogY29uc3RzLlhfT0s7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJmXCI6XG4gICAgICAgICAgcmVzIHw9IGNvbnN0cy5GX09LO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICB0cnkge1xuICAgICAgdGhpcy5mcy5hY2Nlc3NTeW5jKHRoaXMubm0obmFtZSksIHJlcyk7XG4gICAgICByZXR1cm4gMDtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gICAgfVxuICB9XG5cbiAgb3BlbihuYW1lLCBmLCBwZXJtcywgcmFpc2VfdW5peCkge1xuICAgIHZhciBjb25zdHMgPSB0aGlzLmZzLmNvbnN0YW50cztcbiAgICB2YXIgcmVzID0gMDtcbiAgICBmb3IgKHZhciBrZXkgaW4gZikge1xuICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgY2FzZSBcInJkb25seVwiOlxuICAgICAgICAgIHJlcyB8PSBjb25zdHMuT19SRE9OTFk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJ3cm9ubHlcIjpcbiAgICAgICAgICByZXMgfD0gY29uc3RzLk9fV1JPTkxZO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwicmR3clwiOlxuICAgICAgICAgIHJlcyB8PSBjb25zdHMuT19SRFdSO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiYXBwZW5kXCI6XG4gICAgICAgICAgcmVzIHw9IGNvbnN0cy5PX0FQUEVORDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcImNyZWF0ZVwiOlxuICAgICAgICAgIHJlcyB8PSBjb25zdHMuT19DUkVBVDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInRydW5jYXRlXCI6XG4gICAgICAgICAgcmVzIHw9IGNvbnN0cy5PX1RSVU5DO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiZXhjbFwiOlxuICAgICAgICAgIHJlcyB8PSBjb25zdHMuT19FWENMO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiYmluYXJ5XCI6XG4gICAgICAgICAgcmVzIHw9IGNvbnN0cy5PX0JJTkFSWTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInRleHRcIjpcbiAgICAgICAgICByZXMgfD0gY29uc3RzLk9fVEVYVDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIm5vbmJsb2NrXCI6XG4gICAgICAgICAgcmVzIHw9IGNvbnN0cy5PX05PTkJMT0NLO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwibm9jdHR5XCI6XG4gICAgICAgICAgcmVzIHw9IGNvbnN0cy5PX05PQ1RUWTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcImRzeW5jXCI6XG4gICAgICAgICAgcmVzIHw9IGNvbnN0cy5PX0RTWU5DO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwic3luY1wiOlxuICAgICAgICAgIHJlcyB8PSBjb25zdHMuT19TWU5DO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICB0cnkge1xuICAgICAgdmFyIGZkID0gdGhpcy5mcy5vcGVuU3luYyh0aGlzLm5tKG5hbWUpLCByZXMsIHBlcm1zKTtcbiAgICAgIHJldHVybiBuZXcgTWxOb2RlRmQoZmQsIGYpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY2FtbF9yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgICB9XG4gIH1cblxuICBzbGFzaChuYW1lKSB7XG4gICAgcmV0dXJuIC9cXC8kLy50ZXN0KG5hbWUpID8gbmFtZSA6IG5hbWUgKyBcIi9cIjtcbiAgfVxuXG4gIHJlbmFtZShvLCBuLCByYWlzZV91bml4KSB7XG4gICAgaWYgKGpzb29faXNfd2luMzIpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhciB0YXJnZXQgPSB0aGlzLm5tKG4pO1xuICAgICAgICB2YXIgc291cmNlID0gdGhpcy5ubShvKTtcbiAgICAgICAgdmFyIHRhcmdldF9zdGF0cywgc291cmNlX3N0YXRzO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgKHRhcmdldF9zdGF0cyA9IHRoaXMuZnMuc3RhdFN5bmModGFyZ2V0LCB7XG4gICAgICAgICAgICB0aHJvd0lmTm9FbnRyeTogZmFsc2UsXG4gICAgICAgICAgfSkpICYmXG4gICAgICAgICAgKHNvdXJjZV9zdGF0cyA9IHRoaXMuZnMuc3RhdFN5bmMoc291cmNlLCB7XG4gICAgICAgICAgICB0aHJvd0lmTm9FbnRyeTogZmFsc2UsXG4gICAgICAgICAgfSkpICYmXG4gICAgICAgICAgc291cmNlX3N0YXRzLmlzRGlyZWN0b3J5KClcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKHRhcmdldF9zdGF0cy5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuc2xhc2godGFyZ2V0KS5zdGFydHNXaXRoKHRoaXMuc2xhc2goc291cmNlKSkpXG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mcy5ybWRpclN5bmModGFyZ2V0KTtcbiAgICAgICAgICAgICAgfSBjYXRjaCB7fVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgZXJyID0gbmV3IEVycm9yKFxuICAgICAgICAgICAgICBgRU5PVERJUjogbm90IGEgZGlyZWN0b3J5LCByZW5hbWUgJyR7c291cmNlfScgLT4gJyR7dGFyZ2V0fSdgLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRocm93IE9iamVjdC5hc3NpZ24oZXJyLCB7XG4gICAgICAgICAgICAgIGVycm5vOiAtMjAsXG4gICAgICAgICAgICAgIGNvZGU6IFwiRU5PVERJUlwiLFxuICAgICAgICAgICAgICBzeXNjYWxsOiBcInJlbmFtZVwiLFxuICAgICAgICAgICAgICBwYXRoOiB0YXJnZXQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5mcy5yZW5hbWVTeW5jKHRoaXMubm0obyksIHRoaXMubm0obikpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuZnMucmVuYW1lU3luYyh0aGlzLm5tKG8pLCB0aGlzLm5tKG4pKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBjYW1sX3JhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHN0YXQobmFtZSwgbGFyZ2UsIHJhaXNlX3VuaXgpIHtcbiAgICB0cnkge1xuICAgICAgdmFyIGpzX3N0YXRzID0gdGhpcy5mcy5zdGF0U3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICAgIHJldHVybiBvY2FtbF9zdGF0c19mcm9tX25vZGVfc3RhdHMoanNfc3RhdHMsIGxhcmdlKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gICAgfVxuICB9XG5cbiAgbHN0YXQobmFtZSwgbGFyZ2UsIHJhaXNlX3VuaXgpIHtcbiAgICB0cnkge1xuICAgICAgdmFyIGpzX3N0YXRzID0gdGhpcy5mcy5sc3RhdFN5bmModGhpcy5ubShuYW1lKSk7XG4gICAgICByZXR1cm4gb2NhbWxfc3RhdHNfZnJvbV9ub2RlX3N0YXRzKGpzX3N0YXRzLCBsYXJnZSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjYW1sX3JhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICAgIH1cbiAgfVxuXG4gIGNobW9kKG5hbWUsIHBlcm1zLCByYWlzZV91bml4KSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuZnMuY2htb2RTeW5jKHRoaXMubm0obmFtZSksIHBlcm1zKTtcbiAgICAgIHJldHVybiAwO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY2FtbF9yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgICB9XG4gIH1cblxuICBsaW5rKHRhcmdldCwgcGF0aCwgcmFpc2VfdW5peCkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmZzLmxpbmtTeW5jKHRoaXMubm0odGFyZ2V0KSwgdGhpcy5ubShwYXRoKSk7XG4gICAgICByZXR1cm4gMDtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gICAgfVxuICB9XG5cbiAgc3ltbGluayh0b19kaXIsIHRhcmdldCwgcGF0aCwgcmFpc2VfdW5peCkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmZzLnN5bWxpbmtTeW5jKFxuICAgICAgICB0YXJnZXQsXG4gICAgICAgIHRoaXMubm0ocGF0aCksXG4gICAgICAgIHRvX2RpciA9PT0gMCA/IG51bGwgOiB0b19kaXJbMV0gPyBcImRpclwiIDogXCJmaWxlXCIsXG4gICAgICApO1xuICAgICAgcmV0dXJuIDA7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjYW1sX3JhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICAgIH1cbiAgfVxuXG4gIHJlYWRsaW5rKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgICB0cnkge1xuICAgICAgdmFyIGxpbmsgPSB0aGlzLmZzLnJlYWRsaW5rU3luYyh0aGlzLm5tKG5hbWUpLCBcInV0ZjhcIik7XG4gICAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcobGluayk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjYW1sX3JhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5kaXIobmFtZSwgcmFpc2VfdW5peCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gdGhpcy5mcy5vcGVuZGlyU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gICAgfVxuICB9XG59XG5cbi8vUHJvdmlkZXM6IG9jYW1sX3N0YXRzX2Zyb21fbm9kZV9zdGF0c1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9mbG9hdFxuZnVuY3Rpb24gb2NhbWxfc3RhdHNfZnJvbV9ub2RlX3N0YXRzKGpzX3N0YXRzLCBsYXJnZSkge1xuICAvKiA9PT1Vbml4LmZpbGVfa2luZD09PVxuICAgKiB0eXBlIGZpbGVfa2luZCA9XG4gICAqICAgICBTX1JFRyAgICAgICAgICAgICAgICAgICAgICAgKCoqIFJlZ3VsYXIgZmlsZSAqKVxuICAgKiAgIHwgU19ESVIgICAgICAgICAgICAgICAgICAgICAgICgqKiBEaXJlY3RvcnkgKilcbiAgICogICB8IFNfQ0hSICAgICAgICAgICAgICAgICAgICAgICAoKiogQ2hhcmFjdGVyIGRldmljZSAqKVxuICAgKiAgIHwgU19CTEsgICAgICAgICAgICAgICAgICAgICAgICgqKiBCbG9jayBkZXZpY2UgKilcbiAgICogICB8IFNfTE5LICAgICAgICAgICAgICAgICAgICAgICAoKiogU3ltYm9saWMgbGluayAqKVxuICAgKiAgIHwgU19GSUZPICAgICAgICAgICAgICAgICAgICAgICgqKiBOYW1lZCBwaXBlICopXG4gICAqICAgfCBTX1NPQ0sgICAgICAgICAgICAgICAgICAgICAgKCoqIFNvY2tldCAqKVxuICAgKi9cbiAgdmFyIGZpbGVfa2luZDtcbiAgaWYgKGpzX3N0YXRzLmlzRmlsZSgpKSB7XG4gICAgZmlsZV9raW5kID0gMDtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0RpcmVjdG9yeSgpKSB7XG4gICAgZmlsZV9raW5kID0gMTtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0NoYXJhY3RlckRldmljZSgpKSB7XG4gICAgZmlsZV9raW5kID0gMjtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0Jsb2NrRGV2aWNlKCkpIHtcbiAgICBmaWxlX2tpbmQgPSAzO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzU3ltYm9saWNMaW5rKCkpIHtcbiAgICBmaWxlX2tpbmQgPSA0O1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzRklGTygpKSB7XG4gICAgZmlsZV9raW5kID0gNTtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc1NvY2tldCgpKSB7XG4gICAgZmlsZV9raW5kID0gNjtcbiAgfVxuICAvKiA9PT1Vbml4LnN0YXRzPT09XG4gICAqIHR5cGUgc3RhdHMgPVxuICAgKiAgeyBzdF9kZXYgOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIERldmljZSBudW1iZXIgKilcbiAgICogICAgc3RfaW5vIDogaW50OyAgICAgICAgICAgICAgICgqKiBJbm9kZSBudW1iZXIgKilcbiAgICogICAgc3Rfa2luZCA6IGZpbGVfa2luZDsgICAgICAgICgqKiBLaW5kIG9mIHRoZSBmaWxlICopXG4gICAqICAgIHN0X3Blcm0gOiBmaWxlX3Blcm07ICAgICAgICAoKiogQWNjZXNzIHJpZ2h0cyAqKVxuICAgKiAgICBzdF9ubGluayA6IGludDsgICAgICAgICAgICAgKCoqIE51bWJlciBvZiBsaW5rcyAqKVxuICAgKiAgICBzdF91aWQgOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIFVzZXIgaWQgb2YgdGhlIG93bmVyICopXG4gICAqICAgIHN0X2dpZCA6IGludDsgICAgICAgICAgICAgICAoKiogR3JvdXAgSUQgb2YgdGhlIGZpbGUncyBncm91cCAqKVxuICAgKiAgICBzdF9yZGV2IDogaW50OyAgICAgICAgICAgICAgKCoqIERldmljZSBJRCAoaWYgc3BlY2lhbCBmaWxlKSAqKVxuICAgKiAgICBzdF9zaXplIDogaW50OyAgICAgICAgICAgICAgKCoqIFNpemUgaW4gYnl0ZXMgKilcbiAgICogICAgc3RfYXRpbWUgOiBmbG9hdDsgICAgICAgICAgICgqKiBMYXN0IGFjY2VzcyB0aW1lICopXG4gICAqICAgIHN0X210aW1lIDogZmxvYXQ7ICAgICAgICAgICAoKiogTGFzdCBtb2RpZmljYXRpb24gdGltZSAqKVxuICAgKiAgICBzdF9jdGltZSA6IGZsb2F0OyAgICAgICAgICAgKCoqIExhc3Qgc3RhdHVzIGNoYW5nZSB0aW1lICopXG4gICAqICB9XG4gICAqL1xuICByZXR1cm4gQkxPQ0soXG4gICAgMCxcbiAgICBqc19zdGF0cy5kZXYsXG4gICAganNfc3RhdHMuaW5vIHwgMCxcbiAgICBmaWxlX2tpbmQsXG4gICAganNfc3RhdHMubW9kZSxcbiAgICBqc19zdGF0cy5ubGluayxcbiAgICBqc19zdGF0cy51aWQsXG4gICAganNfc3RhdHMuZ2lkLFxuICAgIGpzX3N0YXRzLnJkZXYsXG4gICAgbGFyZ2UgPyBjYW1sX2ludDY0X29mX2Zsb2F0KGpzX3N0YXRzLnNpemUpIDoganNfc3RhdHMuc2l6ZSB8IDAsXG4gICAganNfc3RhdHMuYXRpbWVNcyAvIDEwMDAsXG4gICAganNfc3RhdHMubXRpbWVNcyAvIDEwMDAsXG4gICAganNfc3RhdHMuY3RpbWVNcyAvIDEwMDAsXG4gICk7XG59XG5cbi8vUHJvdmlkZXM6IE1sTm9kZURldmljZVxuLy9JZjogYnJvd3NlclxuY2xhc3MgTWxOb2RlRGV2aWNlIHt9XG5cbi8vUHJvdmlkZXM6IE1sTm9kZUZkXG4vL1JlcXVpcmVzOiBNbEZpbGUsIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nLCBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzLCBjYW1sX2J5dGVzX3NldCwgY2FtbF9yYWlzZV9zeXNfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yLCBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvciwgb2NhbWxfc3RhdHNfZnJvbV9ub2RlX3N0YXRzXG5jbGFzcyBNbE5vZGVGZCBleHRlbmRzIE1sRmlsZSB7XG4gIGNvbnN0cnVjdG9yKGZkLCBmbGFncykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5mcyA9IHJlcXVpcmUoXCJub2RlOmZzXCIpO1xuICAgIHRoaXMuZmQgPSBmZDtcbiAgICB0aGlzLmZsYWdzID0gZmxhZ3M7XG4gICAgdHJ5IHtcbiAgICAgIHZhciBzdGF0cyA9IHRoaXMuZnMuZnN0YXRTeW5jKGZkKTtcbiAgICAgIGZsYWdzLm5vU2VlayA9XG4gICAgICAgIHN0YXRzLmlzQ2hhcmFjdGVyRGV2aWNlKCkgfHwgc3RhdHMuaXNGSUZPKCkgfHwgc3RhdHMuaXNTb2NrZXQoKTtcbiAgICAgIHRoaXMub2Zmc2V0ID0gdGhpcy5mbGFncy5hcHBlbmQgPyBzdGF0cy5zaXplIDogMDtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIFRoZSBmc3RhdCB3aWxsIGZhaWwgb24gc3RhbmRhcmQgc3RyZWFtcyB1bmRlciBXaW5kb3dzIHdpdGggbm9kZVxuICAgICAgLy8gMTggKGFuZCBsb3dlcikuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbGlidXYvbGlidXYvcHVsbC8zODExLlxuICAgICAgZmxhZ3Mubm9TZWVrID0gdHJ1ZTtcbiAgICAgIHRoaXMub2Zmc2V0ID0gMDtcbiAgICB9XG4gICAgdGhpcy5zZWVrZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHRydW5jYXRlKGxlbiwgcmFpc2VfdW5peCkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmZzLmZ0cnVuY2F0ZVN5bmModGhpcy5mZCwgbGVuIHwgMCk7XG4gICAgICBpZiAodGhpcy5vZmZzZXQgPiBsZW4pIHRoaXMub2Zmc2V0ID0gbGVuO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY2FtbF9yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgICB9XG4gIH1cblxuICBpc2F0dHkoKSB7XG4gICAgdmFyIHR0eSA9IHJlcXVpcmUoXCJub2RlOnR0eVwiKTtcbiAgICByZXR1cm4gdHR5LmlzYXR0eSh0aGlzLmZkKSA/IDEgOiAwO1xuICB9XG5cbiAgbGVuZ3RoKCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gdGhpcy5mcy5mc3RhdFN5bmModGhpcy5mZCkuc2l6ZTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgICB9XG4gIH1cblxuICB3cml0ZShidWYsIGJ1Zl9vZmZzZXQsIGxlbiwgcmFpc2VfdW5peCkge1xuICAgIHRyeSB7XG4gICAgICBpZiAodGhpcy5mbGFncy5ub1NlZWsgfHwgIXRoaXMuc2Vla2VkKSB7XG4gICAgICAgIHZhciB3cml0dGVuID0gdGhpcy5mcy53cml0ZVN5bmModGhpcy5mZCwgYnVmLCBidWZfb2Zmc2V0LCBsZW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHdyaXR0ZW4gPSB0aGlzLmZzLndyaXRlU3luYyhcbiAgICAgICAgICB0aGlzLmZkLFxuICAgICAgICAgIGJ1ZixcbiAgICAgICAgICBidWZfb2Zmc2V0LFxuICAgICAgICAgIGxlbixcbiAgICAgICAgICB0aGlzLm9mZnNldCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMub2Zmc2V0ICs9IHdyaXR0ZW47XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjYW1sX3JhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICAgIH1cbiAgICByZXR1cm4gd3JpdHRlbjtcbiAgfVxuXG4gIHJlYWQoYSwgYnVmX29mZnNldCwgbGVuLCByYWlzZV91bml4KSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICh0aGlzLmZsYWdzLm5vU2VlayB8fCAhdGhpcy5zZWVrZWQpIHtcbiAgICAgICAgdmFyIHJlYWQgPSB0aGlzLmZzLnJlYWRTeW5jKHRoaXMuZmQsIGEsIGJ1Zl9vZmZzZXQsIGxlbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcmVhZCA9IHRoaXMuZnMucmVhZFN5bmModGhpcy5mZCwgYSwgYnVmX29mZnNldCwgbGVuLCB0aGlzLm9mZnNldCk7XG4gICAgICB9XG4gICAgICB0aGlzLm9mZnNldCArPSByZWFkO1xuICAgICAgcmV0dXJuIHJlYWQ7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjYW1sX3JhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICAgIH1cbiAgfVxuXG4gIHNlZWsob2Zmc2V0LCB3aGVuY2UsIHJhaXNlX3VuaXgpIHtcbiAgICBpZiAodGhpcy5mbGFncy5ub1NlZWspIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKHJhaXNlX3VuaXgsIFwiRVNQSVBFXCIsIFwibHNlZWtcIiwgXCJpbGxlZ2FsIHNlZWtcIik7XG4gICAgfVxuICAgIHN3aXRjaCAod2hlbmNlKSB7XG4gICAgICBjYXNlIDA6XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxOlxuICAgICAgICBvZmZzZXQgKz0gdGhpcy5vZmZzZXQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICBvZmZzZXQgKz0gdGhpcy5sZW5ndGgoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGlmIChvZmZzZXQgPCAwKSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcihcbiAgICAgICAgcmFpc2VfdW5peCxcbiAgICAgICAgXCJFSU5WQUxcIixcbiAgICAgICAgXCJsc2Vla1wiLFxuICAgICAgICBcImludmFsaWQgYXJndW1lbnRcIixcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMub2Zmc2V0ID0gb2Zmc2V0O1xuICAgIHRoaXMuc2Vla2VkID0gdHJ1ZTtcbiAgICByZXR1cm4gdGhpcy5vZmZzZXQ7XG4gIH1cblxuICBwb3MoKSB7XG4gICAgcmV0dXJuIHRoaXMub2Zmc2V0O1xuICB9XG5cbiAgc3RhdChsYXJnZSkge1xuICAgIHRyeSB7XG4gICAgICB2YXIganNfc3RhdHMgPSB0aGlzLmZzLmZzdGF0U3luYyh0aGlzLmZkKTtcbiAgICAgIHJldHVybiBvY2FtbF9zdGF0c19mcm9tX25vZGVfc3RhdHMoanNfc3RhdHMsIGxhcmdlKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgLyogcmFpc2UgVW5peF9lcnJvciAqLyAxKTtcbiAgICB9XG4gIH1cblxuICBjaG1vZChwZXJtcykge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmZzLmZjaG1vZFN5bmModGhpcy5mZCwgcGVybXMpO1xuICAgICAgcmV0dXJuIDA7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjYW1sX3JhaXNlX25vZGVqc19lcnJvcihlcnIsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gMSk7XG4gICAgfVxuICB9XG5cbiAgc3luYygpIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5mcy5mc3luY1N5bmModGhpcy5mZCk7XG4gICAgICByZXR1cm4gMDtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgLyogcmFpc2UgVW5peF9lcnJvciAqLyAxKTtcbiAgICB9XG4gIH1cblxuICBjbG9zZShyYWlzZV91bml4KSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuZnMuY2xvc2VTeW5jKHRoaXMuZmQpO1xuICAgICAgcmV0dXJuIDA7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjYW1sX3JhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICAgIH1cbiAgfVxuXG4gIGNoZWNrX3N0cmVhbV9zZW1hbnRpY3MoY21kKSB7XG4gICAgdHJ5IHtcbiAgICAgIHZhciBqc19zdGF0cyA9IHRoaXMuZnMuZnN0YXRTeW5jKHRoaXMuZmQpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY2FtbF9yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCAvKiByYWlzZSBVbml4X2Vycm9yICovIDEsIGNtZCk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgICEoXG4gICAgICAgIGpzX3N0YXRzLmlzRmlsZSgpIHx8XG4gICAgICAgIGpzX3N0YXRzLmlzQ2hhcmFjdGVyRGV2aWNlKCkgfHxcbiAgICAgICAganNfc3RhdHMuaXNGSUZPKCkgfHxcbiAgICAgICAganNfc3RhdHMuaXNTb2NrZXQoKVxuICAgICAgKVxuICAgIClcbiAgICAgIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKFxuICAgICAgICAvKiByYWlzZSBVbml4X2Vycm9yICovIDEsXG4gICAgICAgIFwiRUlOVkFMXCIsXG4gICAgICAgIGNtZCxcbiAgICAgICAgXCJpbnZhbGlkIGFyZ3VtZW50XCIsXG4gICAgICApO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IE1sTm9kZUZkXG4vL0lmOiBicm93c2VyXG5jbGFzcyBNbE5vZGVGZCB7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlXG4vL1JlcXVpcmVzOiBNbE5vZGVGZFxuZnVuY3Rpb24gY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZShmZCwgZmxhZ3MpIHtcbiAgaWYgKGZsYWdzLmFsdG5hbWUpIHtcbiAgICB0cnkge1xuICAgICAgdmFyIGZzID0gcmVxdWlyZShcIm5vZGU6ZnNcIik7XG4gICAgICB2YXIgZmQyID0gZnMub3BlblN5bmMoZmxhZ3MuYWx0bmFtZSwgXCJyc1wiKTtcbiAgICAgIHJldHVybiBuZXcgTWxOb2RlRmQoZmQyLCBmbGFncyk7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgfVxuICByZXR1cm4gbmV3IE1sTm9kZUZkKGZkLCBmbGFncyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX29wZW5fZm9yX25vZGVcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW5fZm9yX25vZGUoX2ZkLCBfZmxhZ3MpIHtcbiAgcmV0dXJuIG51bGw7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfYXJncywgbWFrZV91bml4X2Vycl9hcmdzLCBjYW1sX25hbWVkX3ZhbHVlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gY2FtbF9yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4LCBjbWQpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSBjYW1sX25hbWVkX3ZhbHVlKFwiVW5peC5Vbml4X2Vycm9yXCIpO1xuICBpZiAocmFpc2VfdW5peCAmJiB1bml4X2Vycm9yKSB7XG4gICAgdmFyIGFyZ3MgPSBtYWtlX3VuaXhfZXJyX2FyZ3MoXG4gICAgICBlcnIuY29kZSxcbiAgICAgIGNtZCB8fCBlcnIuc3lzY2FsbCxcbiAgICAgIGVyci5wYXRoLFxuICAgICAgZXJyLmVycm5vLFxuICAgICk7XG4gICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZCwgQW5keSBSYXlcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbi8vXG4vLyBCaWdhcnJheS5cbi8vXG4vLyAtIGFsbCBiaWdhcnJheSB0eXBlcyBpbmNsdWRpbmcgSW50NjQgYW5kIENvbXBsZXguXG4vLyAtIGZvcnRyYW4gKyBjIGxheW91dHNcbi8vIC0gc3ViL3NsaWNlL3Jlc2hhcGVcbi8vIC0gcmV0YWluIGZhc3QgcGF0aCBmb3IgMWQgYXJyYXkgYWNjZXNzXG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfaW5pdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9iYV9pbml0KCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2dldF9zaXplKGRpbXMpIHtcbiAgdmFyIG5fZGltcyA9IGRpbXMubGVuZ3RoO1xuICB2YXIgc2l6ZSA9IDE7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbl9kaW1zOyBpKyspIHtcbiAgICBpZiAoZGltc1tpXSA8IDApXG4gICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5jcmVhdGU6IG5lZ2F0aXZlIGRpbWVuc2lvblwiKTtcbiAgICBzaXplID0gc2l6ZSAqIGRpbXNbaV07XG4gIH1cbiAgcmV0dXJuIHNpemU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5wYWNrRmxvYXQxNlxudmFyIGNhbWxfdW5wYWNrRmxvYXQxNiA9IChmdW5jdGlvbiAoKSB7XG4gIHZhciBwb3cgPSBNYXRoLnBvdztcblxuICB2YXIgRVhQX01BU0sxNiA9IDMxOyAvLyAyICoqIDUgLSAxXG4gIHZhciBTSUdOSUZJQ0FORF9NQVNLMTYgPSAxMDIzOyAvLyAyICoqIDEwIC0gMVxuICB2YXIgTUlOX1NVQk5PUk1BTDE2ID0gcG93KDIsIC0yNCk7IC8vIDIgKiogLTEwICogMiAqKiAtMTRcbiAgdmFyIFNJR05JRklDQU5EX0RFTk9NMTYgPSAwLjAwMDk3NjU2MjU7IC8vIDIgKiogLTEwXG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChieXRlcykge1xuICAgIHZhciBzaWduID0gYnl0ZXMgPj4+IDE1O1xuICAgIHZhciBleHBvbmVudCA9IChieXRlcyA+Pj4gMTApICYgRVhQX01BU0sxNjtcbiAgICB2YXIgc2lnbmlmaWNhbmQgPSBieXRlcyAmIFNJR05JRklDQU5EX01BU0sxNjtcbiAgICBpZiAoZXhwb25lbnQgPT09IEVYUF9NQVNLMTYpXG4gICAgICByZXR1cm4gc2lnbmlmaWNhbmQgPT09IDBcbiAgICAgICAgPyBzaWduID09PSAwXG4gICAgICAgICAgPyBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFlcbiAgICAgICAgICA6IE51bWJlci5ORUdBVElWRV9JTkZJTklUWVxuICAgICAgICA6IE51bWJlci5OYU47XG4gICAgaWYgKGV4cG9uZW50ID09PSAwKVxuICAgICAgcmV0dXJuIHNpZ25pZmljYW5kICogKHNpZ24gPT09IDAgPyBNSU5fU1VCTk9STUFMMTYgOiAtTUlOX1NVQk5PUk1BTDE2KTtcbiAgICB2YXIgciA9XG4gICAgICBwb3coMiwgZXhwb25lbnQgLSAxNSkgKlxuICAgICAgKHNpZ24gPT09IDBcbiAgICAgICAgPyAxICsgc2lnbmlmaWNhbmQgKiBTSUdOSUZJQ0FORF9ERU5PTTE2XG4gICAgICAgIDogLTEgLSBzaWduaWZpY2FuZCAqIFNJR05JRklDQU5EX0RFTk9NMTYpO1xuICAgIHJldHVybiByO1xuICB9O1xufSkoKTtcblxuLy9Qcm92aWRlczogY2FtbF9wYWNrRmxvYXQxNlxudmFyIGNhbWxfcGFja0Zsb2F0MTYgPSAoZnVuY3Rpb24gKCkge1xuICBjb25zdCBJTlZFUlNFX09GX0VQU0lMT04gPSAxIC8gTnVtYmVyLkVQU0lMT047XG5cbiAgZnVuY3Rpb24gcm91bmRUaWVzVG9FdmVuKG51bSkge1xuICAgIHJldHVybiBudW0gKyBJTlZFUlNFX09GX0VQU0lMT04gLSBJTlZFUlNFX09GX0VQU0lMT047XG4gIH1cblxuICBjb25zdCBGTE9BVDE2X01JTl9WQUxVRSA9IDYuMTAzNTE1NjI1ZS01O1xuICBjb25zdCBGTE9BVDE2X01BWF9WQUxVRSA9IDY1NTA0O1xuICBjb25zdCBGTE9BVDE2X0VQU0lMT04gPSAwLjAwMDk3NjU2MjU7XG5cbiAgY29uc3QgRkxPQVQxNl9FUFNJTE9OX01VTFRJUExJRURfQllfRkxPQVQxNl9NSU5fVkFMVUUgPVxuICAgIEZMT0FUMTZfRVBTSUxPTiAqIEZMT0FUMTZfTUlOX1ZBTFVFO1xuICBjb25zdCBGTE9BVDE2X0VQU0lMT05fREVWSURFRF9CWV9FUFNJTE9OID1cbiAgICBGTE9BVDE2X0VQU0lMT04gKiBJTlZFUlNFX09GX0VQU0lMT047XG5cbiAgZnVuY3Rpb24gcm91bmRUb0Zsb2F0MTYobnVtKSB7XG4gICAgY29uc3QgbnVtYmVyID0gK251bTtcblxuICAgIC8vIE5hTiwgSW5maW5pdHksIC1JbmZpbml0eSwgMCwgLTBcbiAgICBpZiAoIU51bWJlci5pc0Zpbml0ZShudW1iZXIpIHx8IG51bWJlciA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICB9XG5cbiAgICAvLyBmaW5pdGUgZXhjZXB0IDAsIC0wXG4gICAgY29uc3Qgc2lnbiA9IG51bWJlciA+IDAgPyAxIDogLTE7XG4gICAgY29uc3QgYWJzb2x1dGUgPSBNYXRoLmFicyhudW1iZXIpO1xuXG4gICAgLy8gc21hbGwgbnVtYmVyXG4gICAgaWYgKGFic29sdXRlIDwgRkxPQVQxNl9NSU5fVkFMVUUpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHNpZ24gKlxuICAgICAgICByb3VuZFRpZXNUb0V2ZW4oXG4gICAgICAgICAgYWJzb2x1dGUgLyBGTE9BVDE2X0VQU0lMT05fTVVMVElQTElFRF9CWV9GTE9BVDE2X01JTl9WQUxVRSxcbiAgICAgICAgKSAqXG4gICAgICAgIEZMT0FUMTZfRVBTSUxPTl9NVUxUSVBMSUVEX0JZX0ZMT0FUMTZfTUlOX1ZBTFVFXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHRlbXAgPSAoMSArIEZMT0FUMTZfRVBTSUxPTl9ERVZJREVEX0JZX0VQU0lMT04pICogYWJzb2x1dGU7XG4gICAgY29uc3QgcmVzdWx0ID0gdGVtcCAtICh0ZW1wIC0gYWJzb2x1dGUpO1xuXG4gICAgLy8gbGFyZ2UgbnVtYmVyXG4gICAgaWYgKHJlc3VsdCA+IEZMT0FUMTZfTUFYX1ZBTFVFIHx8IE51bWJlci5pc05hTihyZXN1bHQpKSB7XG4gICAgICByZXR1cm4gc2lnbiAqIE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2lnbiAqIHJlc3VsdDtcbiAgfVxuXG4gIC8vIGJhc2UgYWxnb3JpdGhtOiBodHRwOi8vZm94LXRvb2xraXQub3JnL2Z0cC9mYXN0aGFsZmZsb2F0Y29udmVyc2lvbi5wZGZcblxuICBjb25zdCBiYXNlVGFibGUgPSBuZXcgVWludDE2QXJyYXkoNTEyKTtcbiAgY29uc3Qgc2hpZnRUYWJsZSA9IG5ldyBVaW50OEFycmF5KDUxMik7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCAyNTY7ICsraSkge1xuICAgIGNvbnN0IGUgPSBpIC0gMTI3O1xuXG4gICAgLy8gdmVyeSBzbWFsbCBudW1iZXIgKDAsIC0wKVxuICAgIGlmIChlIDwgLTI0KSB7XG4gICAgICBiYXNlVGFibGVbaV0gPSAweDAwMDA7XG4gICAgICBiYXNlVGFibGVbaSB8IDB4MTAwXSA9IDB4ODAwMDtcbiAgICAgIHNoaWZ0VGFibGVbaV0gPSAyNDtcbiAgICAgIHNoaWZ0VGFibGVbaSB8IDB4MTAwXSA9IDI0O1xuXG4gICAgICAvLyBzbWFsbCBudW1iZXIgKGRlbm9ybSlcbiAgICB9IGVsc2UgaWYgKGUgPCAtMTQpIHtcbiAgICAgIGJhc2VUYWJsZVtpXSA9IDB4MDQwMCA+PiAoLWUgLSAxNCk7XG4gICAgICBiYXNlVGFibGVbaSB8IDB4MTAwXSA9ICgweDA0MDAgPj4gKC1lIC0gMTQpKSB8IDB4ODAwMDtcbiAgICAgIHNoaWZ0VGFibGVbaV0gPSAtZSAtIDE7XG4gICAgICBzaGlmdFRhYmxlW2kgfCAweDEwMF0gPSAtZSAtIDE7XG5cbiAgICAgIC8vIG5vcm1hbCBudW1iZXJcbiAgICB9IGVsc2UgaWYgKGUgPD0gMTUpIHtcbiAgICAgIGJhc2VUYWJsZVtpXSA9IChlICsgMTUpIDw8IDEwO1xuICAgICAgYmFzZVRhYmxlW2kgfCAweDEwMF0gPSAoKGUgKyAxNSkgPDwgMTApIHwgMHg4MDAwO1xuICAgICAgc2hpZnRUYWJsZVtpXSA9IDEzO1xuICAgICAgc2hpZnRUYWJsZVtpIHwgMHgxMDBdID0gMTM7XG5cbiAgICAgIC8vIGxhcmdlIG51bWJlciAoSW5maW5pdHksIC1JbmZpbml0eSlcbiAgICB9IGVsc2UgaWYgKGUgPCAxMjgpIHtcbiAgICAgIGJhc2VUYWJsZVtpXSA9IDB4N2MwMDtcbiAgICAgIGJhc2VUYWJsZVtpIHwgMHgxMDBdID0gMHhmYzAwO1xuICAgICAgc2hpZnRUYWJsZVtpXSA9IDI0O1xuICAgICAgc2hpZnRUYWJsZVtpIHwgMHgxMDBdID0gMjQ7XG5cbiAgICAgIC8vIHN0YXkgKE5hTiwgSW5maW5pdHksIC1JbmZpbml0eSlcbiAgICB9IGVsc2Uge1xuICAgICAgYmFzZVRhYmxlW2ldID0gMHg3YzAwO1xuICAgICAgYmFzZVRhYmxlW2kgfCAweDEwMF0gPSAweGZjMDA7XG4gICAgICBzaGlmdFRhYmxlW2ldID0gMTM7XG4gICAgICBzaGlmdFRhYmxlW2kgfCAweDEwMF0gPSAxMztcbiAgICB9XG4gIH1cblxuICBjb25zdCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoNCk7XG4gIGNvbnN0IGZsb2F0VmlldyA9IG5ldyBGbG9hdDMyQXJyYXkoYnVmZmVyKTtcbiAgY29uc3QgdWludDMyVmlldyA9IG5ldyBVaW50MzJBcnJheShidWZmZXIpO1xuXG4gIHJldHVybiBmdW5jdGlvbiAobnVtKSB7XG4gICAgZmxvYXRWaWV3WzBdID0gcm91bmRUb0Zsb2F0MTYobnVtKTtcbiAgICBjb25zdCBmID0gdWludDMyVmlld1swXTtcbiAgICBjb25zdCBlID0gKGYgPj4gMjMpICYgMHgxZmY7XG4gICAgcmV0dXJuIGJhc2VUYWJsZVtlXSArICgoZiAmIDB4MDA3ZmZmZmYpID4+IHNoaWZ0VGFibGVbZV0pO1xuICB9O1xufSkoKTtcblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChraW5kKSB7XG4gIHN3aXRjaCAoa2luZCkge1xuICAgIGNhc2UgNzpcbiAgICBjYXNlIDEwOlxuICAgIGNhc2UgMTE6XG4gICAgICByZXR1cm4gMjtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIDE7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVfYnVmZmVyXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX2J1ZmZlcihraW5kLCBzaXplKSB7XG4gIHZhciB2aWV3O1xuICBzd2l0Y2ggKGtpbmQpIHtcbiAgICBjYXNlIDA6XG4gICAgICB2aWV3ID0gRmxvYXQzMkFycmF5O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxOlxuICAgICAgdmlldyA9IEZsb2F0NjRBcnJheTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMjpcbiAgICAgIHZpZXcgPSBJbnQ4QXJyYXk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDM6XG4gICAgICB2aWV3ID0gVWludDhBcnJheTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgNDpcbiAgICAgIHZpZXcgPSBJbnQxNkFycmF5O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA1OlxuICAgICAgdmlldyA9IFVpbnQxNkFycmF5O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA2OlxuICAgICAgdmlldyA9IEludDMyQXJyYXk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDc6XG4gICAgICB2aWV3ID0gSW50MzJBcnJheTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgODpcbiAgICAgIHZpZXcgPSBJbnQzMkFycmF5O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA5OlxuICAgICAgdmlldyA9IEludDMyQXJyYXk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDEwOlxuICAgICAgdmlldyA9IEZsb2F0MzJBcnJheTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTE6XG4gICAgICB2aWV3ID0gRmxvYXQ2NEFycmF5O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxMjpcbiAgICAgIHZpZXcgPSBVaW50OEFycmF5O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxMzpcbiAgICAgIHZpZXcgPSBVaW50MTZBcnJheTtcbiAgICAgIGJyZWFrO1xuICB9XG4gIGlmICghdmlldykgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuY3JlYXRlOiB1bnN1cHBvcnRlZCBraW5kXCIpO1xuICB2YXIgZGF0YSA9IG5ldyB2aWV3KHNpemUgKiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpKTtcbiAgcmV0dXJuIGRhdGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3VzdG9tX25hbWVcbnZhciBjYW1sX2JhX2N1c3RvbV9uYW1lID0gXCJfYmlnYXJyMDJcIjtcblxuLy9Qcm92aWRlczogTWxfQmlnYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jdXN0b21fbmFtZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGksIGNhbWxfaW50NjRfaGkzMiwgY2FtbF9pbnQ2NF9sbzMyXG4vL1JlcXVpcmVzOiBjYW1sX3BhY2tGbG9hdDE2LCBjYW1sX3VucGFja0Zsb2F0MTZcbmNsYXNzIE1sX0JpZ2FycmF5IHtcbiAgY29uc3RydWN0b3Ioa2luZCwgbGF5b3V0LCBkaW1zLCBidWZmZXIpIHtcbiAgICB0aGlzLmtpbmQgPSBraW5kO1xuICAgIHRoaXMubGF5b3V0ID0gbGF5b3V0O1xuICAgIHRoaXMuZGltcyA9IGRpbXM7XG4gICAgdGhpcy5kYXRhID0gYnVmZmVyO1xuICAgIHRoaXMuY2FtbF9jdXN0b20gPSBjYW1sX2JhX2N1c3RvbV9uYW1lO1xuICB9XG5cbiAgb2Zmc2V0KGFyZykge1xuICAgIHZhciBvZnMgPSAwO1xuICAgIGlmICh0eXBlb2YgYXJnID09PSBcIm51bWJlclwiKSBhcmcgPSBbYXJnXTtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoYXJnKSlcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImJpZ2FycmF5LmpzOiBpbnZhbGlkIG9mZnNldFwiKTtcbiAgICBpZiAodGhpcy5kaW1zLmxlbmd0aCAhPT0gYXJnLmxlbmd0aClcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmdldC9zZXQ6IGJhZCBudW1iZXIgb2YgZGltZW5zaW9uc1wiKTtcbiAgICBpZiAodGhpcy5sYXlvdXQgPT09IDAgLyogY19sYXlvdXQgKi8pIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kaW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChhcmdbaV0gPCAwIHx8IGFyZ1tpXSA+PSB0aGlzLmRpbXNbaV0pIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgICAgICAgb2ZzID0gb2ZzICogdGhpcy5kaW1zW2ldICsgYXJnW2ldO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy5kaW1zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIGlmIChhcmdbaV0gPCAxIHx8IGFyZ1tpXSA+IHRoaXMuZGltc1tpXSkge1xuICAgICAgICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgICAgICAgfVxuICAgICAgICBvZnMgPSBvZnMgKiB0aGlzLmRpbXNbaV0gKyAoYXJnW2ldIC0gMSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvZnM7XG4gIH1cblxuICBnZXQob2ZzKSB7XG4gICAgc3dpdGNoICh0aGlzLmtpbmQpIHtcbiAgICAgIGNhc2UgNzpcbiAgICAgICAgLy8gSW50NjRcbiAgICAgICAgdmFyIGwgPSB0aGlzLmRhdGFbb2ZzICogMiArIDBdO1xuICAgICAgICB2YXIgaCA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMV07XG4gICAgICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaShsLCBoKTtcbiAgICAgIGNhc2UgMTA6XG4gICAgICBjYXNlIDExOlxuICAgICAgICAvLyBDb21wbGV4MzIsIENvbXBsZXg2NFxuICAgICAgICB2YXIgciA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMF07XG4gICAgICAgIHZhciBpID0gdGhpcy5kYXRhW29mcyAqIDIgKyAxXTtcbiAgICAgICAgcmV0dXJuIFsyNTQsIHIsIGldO1xuICAgICAgY2FzZSAxMzpcbiAgICAgICAgcmV0dXJuIGNhbWxfdW5wYWNrRmxvYXQxNih0aGlzLmRhdGFbb2ZzXSk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdGhpcy5kYXRhW29mc107XG4gICAgfVxuICB9XG5cbiAgc2V0KG9mcywgdikge1xuICAgIHN3aXRjaCAodGhpcy5raW5kKSB7XG4gICAgICBjYXNlIDc6XG4gICAgICAgIC8vIEludDY0XG4gICAgICAgIHRoaXMuZGF0YVtvZnMgKiAyICsgMF0gPSBjYW1sX2ludDY0X2xvMzIodik7XG4gICAgICAgIHRoaXMuZGF0YVtvZnMgKiAyICsgMV0gPSBjYW1sX2ludDY0X2hpMzIodik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMDpcbiAgICAgIGNhc2UgMTE6XG4gICAgICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgICAgIHRoaXMuZGF0YVtvZnMgKiAyICsgMF0gPSB2WzFdO1xuICAgICAgICB0aGlzLmRhdGFbb2ZzICogMiArIDFdID0gdlsyXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEzOlxuICAgICAgICB0aGlzLmRhdGFbb2ZzXSA9IGNhbWxfcGFja0Zsb2F0MTYodik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5kYXRhW29mc10gPSB2O1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBmaWxsKHYpIHtcbiAgICBzd2l0Y2ggKHRoaXMua2luZCkge1xuICAgICAgY2FzZSA3OlxuICAgICAgICAvLyBJbnQ2NFxuICAgICAgICB2YXIgYSA9IGNhbWxfaW50NjRfbG8zMih2KTtcbiAgICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X2hpMzIodik7XG4gICAgICAgIGlmIChhID09PSBiKSB7XG4gICAgICAgICAgdGhpcy5kYXRhLmZpbGwoYSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YVtpXSA9IGkgJSAyID09PSAwID8gYSA6IGI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMDpcbiAgICAgIGNhc2UgMTE6XG4gICAgICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgICAgIHZhciBpbSA9IHZbMV07XG4gICAgICAgIHZhciByZSA9IHZbMl07XG4gICAgICAgIGlmIChpbSA9PT0gcmUpIHtcbiAgICAgICAgICB0aGlzLmRhdGEuZmlsbChpbSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YVtpXSA9IGkgJSAyID09PSAwID8gaW0gOiByZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEzOlxuICAgICAgICB0aGlzLmRhdGEuZmlsbChjYW1sX3BhY2tGbG9hdDE2KHYpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLmRhdGEuZmlsbCh2KTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgY29tcGFyZShiLCB0b3RhbCkge1xuICAgIGlmICh0aGlzLmxheW91dCAhPT0gYi5sYXlvdXQgfHwgdGhpcy5raW5kICE9PSBiLmtpbmQpIHtcbiAgICAgIHZhciBrMSA9IHRoaXMua2luZCB8ICh0aGlzLmxheW91dCA8PCA4KTtcbiAgICAgIHZhciBrMiA9IGIua2luZCB8IChiLmxheW91dCA8PCA4KTtcbiAgICAgIHJldHVybiBrMiAtIGsxO1xuICAgIH1cbiAgICBpZiAodGhpcy5kaW1zLmxlbmd0aCAhPT0gYi5kaW1zLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGIuZGltcy5sZW5ndGggLSB0aGlzLmRpbXMubGVuZ3RoO1xuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGltcy5sZW5ndGg7IGkrKylcbiAgICAgIGlmICh0aGlzLmRpbXNbaV0gIT09IGIuZGltc1tpXSkgcmV0dXJuIHRoaXMuZGltc1tpXSA8IGIuZGltc1tpXSA/IC0xIDogMTtcbiAgICBzd2l0Y2ggKHRoaXMua2luZCkge1xuICAgICAgY2FzZSAwOlxuICAgICAgY2FzZSAxOlxuICAgICAgY2FzZSAxMDpcbiAgICAgIGNhc2UgMTE6XG4gICAgICAgIC8vIEZsb2F0c1xuICAgICAgICB2YXIgeCwgeTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB4ID0gdGhpcy5kYXRhW2ldO1xuICAgICAgICAgIHkgPSBiLmRhdGFbaV07XG4gICAgICAgICAgaWYgKHggPCB5KSByZXR1cm4gLTE7XG4gICAgICAgICAgaWYgKHggPiB5KSByZXR1cm4gMTtcbiAgICAgICAgICBpZiAoeCAhPT0geSkge1xuICAgICAgICAgICAgaWYgKCF0b3RhbCkgcmV0dXJuIE51bWJlci5OYU47XG4gICAgICAgICAgICBpZiAoIU51bWJlci5pc05hTih4KSkgcmV0dXJuIDE7XG4gICAgICAgICAgICBpZiAoIU51bWJlci5pc05hTih5KSkgcmV0dXJuIC0xO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNzpcbiAgICAgICAgLy8gSW50NjRcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgICAgICAvLyBDaGVjayBoaWdoZXN0IGJpdHMgZmlyc3RcbiAgICAgICAgICBpZiAodGhpcy5kYXRhW2kgKyAxXSA8IGIuZGF0YVtpICsgMV0pIHJldHVybiAtMTtcbiAgICAgICAgICBpZiAodGhpcy5kYXRhW2kgKyAxXSA+IGIuZGF0YVtpICsgMV0pIHJldHVybiAxO1xuICAgICAgICAgIGlmICh0aGlzLmRhdGFbaV0gPj4+IDAgPCBiLmRhdGFbaV0gPj4+IDApIHJldHVybiAtMTtcbiAgICAgICAgICBpZiAodGhpcy5kYXRhW2ldID4+PiAwID4gYi5kYXRhW2ldID4+PiAwKSByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTM6XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIGFhID0gY2FtbF91bnBhY2tGbG9hdDE2KHRoaXMuZGF0YVtpXSk7XG4gICAgICAgICAgdmFyIGJiID0gY2FtbF91bnBhY2tGbG9hdDE2KGIuZGF0YVtpXSk7XG4gICAgICAgICAgaWYgKGFhIDwgYmIpIHJldHVybiAtMTtcbiAgICAgICAgICBpZiAoYWEgPiBiYikgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI6XG4gICAgICBjYXNlIDM6XG4gICAgICBjYXNlIDQ6XG4gICAgICBjYXNlIDU6XG4gICAgICBjYXNlIDY6XG4gICAgICBjYXNlIDg6XG4gICAgICBjYXNlIDk6XG4gICAgICBjYXNlIDEyOlxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmICh0aGlzLmRhdGFbaV0gPCBiLmRhdGFbaV0pIHJldHVybiAtMTtcbiAgICAgICAgICBpZiAodGhpcy5kYXRhW2ldID4gYi5kYXRhW2ldKSByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogTWxfQmlnYXJyYXlfY18xXzFcbi8vUmVxdWlyZXM6IE1sX0JpZ2FycmF5LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmNsYXNzIE1sX0JpZ2FycmF5X2NfMV8xIGV4dGVuZHMgTWxfQmlnYXJyYXkge1xuICBvZmZzZXQoYXJnKSB7XG4gICAgaWYgKHR5cGVvZiBhcmcgIT09IFwibnVtYmVyXCIpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGFyZykgJiYgYXJnLmxlbmd0aCA9PT0gMSkgYXJnID0gYXJnWzBdO1xuICAgICAgZWxzZSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJNbF9CaWdhcnJheV9jXzFfMS5vZmZzZXRcIik7XG4gICAgfVxuICAgIGlmIChhcmcgPCAwIHx8IGFyZyA+PSB0aGlzLmRpbXNbMF0pIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgICByZXR1cm4gYXJnO1xuICB9XG5cbiAgZ2V0KG9mcykge1xuICAgIHJldHVybiB0aGlzLmRhdGFbb2ZzXTtcbiAgfVxuXG4gIHNldChvZnMsIHYpIHtcbiAgICB0aGlzLmRhdGFbb2ZzXSA9IHY7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBmaWxsKHYpIHtcbiAgICB0aGlzLmRhdGEuZmlsbCh2KTtcbiAgICByZXR1cm4gMDtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NvbXBhcmVcbmZ1bmN0aW9uIGNhbWxfYmFfY29tcGFyZShhLCBiLCB0b3RhbCkge1xuICByZXR1cm4gYS5jb21wYXJlKGIsIHRvdGFsKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG4vL1JlcXVpcmVzOiBNbF9CaWdhcnJheSwgTWxfQmlnYXJyYXlfY18xXzEsIGNhbWxfYmFfZ2V0X3NpemUsIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSkge1xuICB2YXIgc2l6ZV9wZXJfZWxlbWVudCA9IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCk7XG4gIGlmIChjYW1sX2JhX2dldF9zaXplKGRpbXMpICogc2l6ZV9wZXJfZWxlbWVudCAhPT0gZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJsZW5ndGggZG9lc24ndCBtYXRjaCBkaW1zXCIpO1xuICB9XG4gIGlmIChcbiAgICBsYXlvdXQgPT09IDAgJiYgLy8gY19sYXlvdXRcbiAgICBkaW1zLmxlbmd0aCA9PT0gMSAmJiAvLyBBcnJheTFcbiAgICBzaXplX3Blcl9lbGVtZW50ID09PSAxICYmXG4gICAga2luZCAhPT0gMTMgLy8gZmxvYXQxNlxuICApXG4gICAgLy8gMS10by0xIG1hcHBpbmdcbiAgICByZXR1cm4gbmV3IE1sX0JpZ2FycmF5X2NfMV8xKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG4gIHJldHVybiBuZXcgTWxfQmlnYXJyYXkoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZSwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV9idWZmZXJcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlKGtpbmQsIGxheW91dCwgZGltc19tbCkge1xuICB2YXIgZGltcyA9IGNhbWxfanNfZnJvbV9hcnJheShkaW1zX21sKTtcbiAgdmFyIGRhdGEgPSBjYW1sX2JhX2NyZWF0ZV9idWZmZXIoa2luZCwgY2FtbF9iYV9nZXRfc2l6ZShkaW1zKSk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGNhbWxfYmFfY2hhbmdlX2xheW91dChiYSwgbGF5b3V0KSB7XG4gIGlmIChiYS5sYXlvdXQgPT09IGxheW91dCkgcmV0dXJuIGJhO1xuICB2YXIgbmV3X2RpbXMgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKVxuICAgIG5ld19kaW1zW2ldID0gYmEuZGltc1tiYS5kaW1zLmxlbmd0aCAtIGkgLSAxXTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiYS5raW5kLCBsYXlvdXQsIG5ld19kaW1zLCBiYS5kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9raW5kXG5mdW5jdGlvbiBjYW1sX2JhX2tpbmQoYmEpIHtcbiAgcmV0dXJuIGJhLmtpbmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbGF5b3V0XG5mdW5jdGlvbiBjYW1sX2JhX2xheW91dChiYSkge1xuICByZXR1cm4gYmEubGF5b3V0O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX251bV9kaW1zXG5mdW5jdGlvbiBjYW1sX2JhX251bV9kaW1zKGJhKSB7XG4gIHJldHVybiBiYS5kaW1zLmxlbmd0aDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9kaW1cbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9kaW0oYmEsIGkpIHtcbiAgaWYgKGkgPCAwIHx8IGkgPj0gYmEuZGltcy5sZW5ndGgpIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmRpbVwiKTtcbiAgcmV0dXJuIGJhLmRpbXNbaV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXzFcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZGltXG5mdW5jdGlvbiBjYW1sX2JhX2RpbV8xKGJhKSB7XG4gIHJldHVybiBjYW1sX2JhX2RpbShiYSwgMCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXzJcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZGltXG5mdW5jdGlvbiBjYW1sX2JhX2RpbV8yKGJhKSB7XG4gIHJldHVybiBjYW1sX2JhX2RpbShiYSwgMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXzNcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZGltXG5mdW5jdGlvbiBjYW1sX2JhX2RpbV8zKGJhKSB7XG4gIHJldHVybiBjYW1sX2JhX2RpbShiYSwgMik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0X2dlbmVyaWNcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfZ2VuZXJpYyhiYSwgaSkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGNhbWxfanNfZnJvbV9hcnJheShpKSk7XG4gIHJldHVybiBiYS5nZXQob2ZzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9nZXQxNlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9nZXQxNihiYSwgaTApIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmIChvZnMgKyAxID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMpO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzICsgMSk7XG4gIHJldHVybiBiMSB8IChiMiA8PCA4KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9nZXQzMlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9nZXQzMihiYSwgaTApIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmIChvZnMgKyAzID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMgKyAwKTtcbiAgdmFyIGIyID0gYmEuZ2V0KG9mcyArIDEpO1xuICB2YXIgYjMgPSBiYS5nZXQob2ZzICsgMik7XG4gIHZhciBiNCA9IGJhLmdldChvZnMgKyAzKTtcbiAgcmV0dXJuIChiMSA8PCAwKSB8IChiMiA8PCA4KSB8IChiMyA8PCAxNikgfCAoYjQgPDwgMjQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X2dldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X2dldDY0KGJhLCBpMCkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYgKG9mcyArIDcgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gYmEuZ2V0KG9mcyArIDApO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzICsgMSk7XG4gIHZhciBiMyA9IGJhLmdldChvZnMgKyAyKTtcbiAgdmFyIGI0ID0gYmEuZ2V0KG9mcyArIDMpO1xuICB2YXIgYjUgPSBiYS5nZXQob2ZzICsgNCk7XG4gIHZhciBiNiA9IGJhLmdldChvZnMgKyA1KTtcbiAgdmFyIGI3ID0gYmEuZ2V0KG9mcyArIDYpO1xuICB2YXIgYjggPSBiYS5nZXQob2ZzICsgNyk7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKFtiOCwgYjcsIGI2LCBiNSwgYjQsIGIzLCBiMiwgYjFdKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfMVxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfMShiYSwgaTApIHtcbiAgcmV0dXJuIGJhLmdldChiYS5vZmZzZXQoaTApKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfMlxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfMihiYSwgaTAsIGkxKSB7XG4gIHJldHVybiBiYS5nZXQoYmEub2Zmc2V0KFtpMCwgaTFdKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0XzNcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0XzMoYmEsIGkwLCBpMSwgaTIpIHtcbiAgcmV0dXJuIGJhLmdldChiYS5vZmZzZXQoW2kwLCBpMSwgaTJdKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0X2dlbmVyaWNcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9iYV9zZXRfZ2VuZXJpYyhiYSwgaSwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KGNhbWxfanNfZnJvbV9hcnJheShpKSksIHYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9zZXQxNlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9zZXQxNihiYSwgaTAsIHYpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmIChvZnMgKyAxID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIGJhLnNldChvZnMgKyAwLCB2ICYgMHhmZik7XG4gIGJhLnNldChvZnMgKyAxLCAodiA+Pj4gOCkgJiAweGZmKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfc2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfc2V0MzIoYmEsIGkwLCB2KSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZiAob2ZzICsgMyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICBiYS5zZXQob2ZzICsgMCwgdiAmIDB4ZmYpO1xuICBiYS5zZXQob2ZzICsgMSwgKHYgPj4+IDgpICYgMHhmZik7XG4gIGJhLnNldChvZnMgKyAyLCAodiA+Pj4gMTYpICYgMHhmZik7XG4gIGJhLnNldChvZnMgKyAzLCAodiA+Pj4gMjQpICYgMHhmZik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X3NldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2ludDY0X3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X3NldDY0KGJhLCBpMCwgdikge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYgKG9mcyArIDcgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIHYgPSBjYW1sX2ludDY0X3RvX2J5dGVzKHYpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IDg7IGkrKykgYmEuc2V0KG9mcyArIGksIHZbNyAtIGldKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzFcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzEoYmEsIGkwLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoaTApLCB2KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzJcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzIoYmEsIGkwLCBpMSwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KFtpMCwgaTFdKSwgdik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NldF8zXG5mdW5jdGlvbiBjYW1sX2JhX3NldF8zKGJhLCBpMCwgaTEsIGkyLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoW2kwLCBpMSwgaTJdKSwgdik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2ZpbGxcbmZ1bmN0aW9uIGNhbWxfYmFfZmlsbChiYSwgdikge1xuICBiYS5maWxsKHYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9ibGl0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfYmxpdChzcmMsIGRzdCkge1xuICBpZiAoZHN0LmRpbXMubGVuZ3RoICE9PSBzcmMuZGltcy5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuYmxpdDogZGltZW5zaW9uIG1pc21hdGNoXCIpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGRzdC5kaW1zLmxlbmd0aDsgaSsrKVxuICAgIGlmIChkc3QuZGltc1tpXSAhPT0gc3JjLmRpbXNbaV0pXG4gICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5ibGl0OiBkaW1lbnNpb24gbWlzbWF0Y2hcIik7XG4gIGRzdC5kYXRhLnNldChzcmMuZGF0YSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3N1YlxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfc3ViKGJhLCBvZnMsIGxlbikge1xuICB2YXIgY2hhbmdlZF9kaW07XG4gIHZhciBtdWwgPSAxO1xuICBpZiAoYmEubGF5b3V0ID09PSAwKSB7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSBtdWwgPSBtdWwgKiBiYS5kaW1zW2ldO1xuICAgIGNoYW5nZWRfZGltID0gMDtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoIC0gMTsgaSsrKSBtdWwgPSBtdWwgKiBiYS5kaW1zW2ldO1xuICAgIGNoYW5nZWRfZGltID0gYmEuZGltcy5sZW5ndGggLSAxO1xuICAgIG9mcyA9IG9mcyAtIDE7XG4gIH1cbiAgaWYgKG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgKyBsZW4gPiBiYS5kaW1zW2NoYW5nZWRfZGltXSkge1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnN1YjogYmFkIHN1Yi1hcnJheVwiKTtcbiAgfVxuICB2YXIgbmV3X2RpbXMgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSBuZXdfZGltc1tpXSA9IGJhLmRpbXNbaV07XG4gIG5ld19kaW1zW2NoYW5nZWRfZGltXSA9IGxlbjtcbiAgbXVsICo9IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoYmEua2luZCk7XG4gIHZhciBuZXdfZGF0YSA9IGJhLmRhdGEuc3ViYXJyYXkob2ZzICogbXVsLCAob2ZzICsgbGVuKSAqIG11bCk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmEua2luZCwgYmEubGF5b3V0LCBuZXdfZGltcywgbmV3X2RhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NsaWNlXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXksIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2dldF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX3NsaWNlKGJhLCB2aW5kKSB7XG4gIHZpbmQgPSBjYW1sX2pzX2Zyb21fYXJyYXkodmluZCk7XG4gIHZhciBudW1faW5kcyA9IHZpbmQubGVuZ3RoO1xuICB2YXIgaW5kZXggPSBbXTtcbiAgdmFyIHN1Yl9kaW1zID0gW107XG4gIHZhciBvZnM7XG5cbiAgaWYgKG51bV9pbmRzID4gYmEuZGltcy5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuc2xpY2U6IHRvbyBtYW55IGluZGljZXNcIik7XG5cbiAgLy8gQ29tcHV0ZSBvZmZzZXQgYW5kIGNoZWNrIGJvdW5kc1xuICBpZiAoYmEubGF5b3V0ID09PSAwKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1faW5kczsgaSsrKSBpbmRleFtpXSA9IHZpbmRbaV07XG4gICAgZm9yICg7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSBpbmRleFtpXSA9IDA7XG4gICAgc3ViX2RpbXMgPSBiYS5kaW1zLnNsaWNlKG51bV9pbmRzKTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9pbmRzOyBpKyspXG4gICAgICBpbmRleFtiYS5kaW1zLmxlbmd0aCAtIG51bV9pbmRzICsgaV0gPSB2aW5kW2ldO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGggLSBudW1faW5kczsgaSsrKSBpbmRleFtpXSA9IDE7XG4gICAgc3ViX2RpbXMgPSBiYS5kaW1zLnNsaWNlKDAsIGJhLmRpbXMubGVuZ3RoIC0gbnVtX2luZHMpO1xuICB9XG4gIG9mcyA9IGJhLm9mZnNldChpbmRleCk7XG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShzdWJfZGltcyk7XG4gIHZhciBzaXplX3Blcl9lbGVtZW50ID0gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChiYS5raW5kKTtcbiAgdmFyIG5ld19kYXRhID0gYmEuZGF0YS5zdWJhcnJheShcbiAgICBvZnMgKiBzaXplX3Blcl9lbGVtZW50LFxuICAgIChvZnMgKyBzaXplKSAqIHNpemVfcGVyX2VsZW1lbnQsXG4gICk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmEua2luZCwgYmEubGF5b3V0LCBzdWJfZGltcywgbmV3X2RhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3Jlc2hhcGVcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfYmFfZ2V0X3NpemVcbmZ1bmN0aW9uIGNhbWxfYmFfcmVzaGFwZShiYSwgdmluZCkge1xuICB2aW5kID0gY2FtbF9qc19mcm9tX2FycmF5KHZpbmQpO1xuICB2YXIgbmV3X2RpbSA9IFtdO1xuICB2YXIgbnVtX2RpbXMgPSB2aW5kLmxlbmd0aDtcblxuICBpZiAobnVtX2RpbXMgPCAwIHx8IG51bV9kaW1zID4gMTYpIHtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5yZXNoYXBlOiBiYWQgbnVtYmVyIG9mIGRpbWVuc2lvbnNcIik7XG4gIH1cbiAgdmFyIG51bV9lbHRzID0gMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZGltczsgaSsrKSB7XG4gICAgbmV3X2RpbVtpXSA9IHZpbmRbaV07XG4gICAgaWYgKG5ld19kaW1baV0gPCAwKVxuICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkucmVzaGFwZTogbmVnYXRpdmUgZGltZW5zaW9uXCIpO1xuICAgIG51bV9lbHRzID0gbnVtX2VsdHMgKiBuZXdfZGltW2ldO1xuICB9XG5cbiAgdmFyIHNpemUgPSBjYW1sX2JhX2dldF9zaXplKGJhLmRpbXMpO1xuICAvLyBDaGVjayB0aGF0IHNpemVzIGFncmVlXG4gIGlmIChudW1fZWx0cyAhPT0gc2l6ZSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5yZXNoYXBlOiBzaXplIG1pc21hdGNoXCIpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGJhLmxheW91dCwgbmV3X2RpbSwgYmEuZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2VyaWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaW50NjRfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdFxuLy9SZXF1aXJlczogY2FtbF9wYWNrRmxvYXQxNlxuZnVuY3Rpb24gY2FtbF9iYV9zZXJpYWxpemUod3JpdGVyLCBiYSwgc3opIHtcbiAgd3JpdGVyLndyaXRlKDMyLCBiYS5kaW1zLmxlbmd0aCk7XG4gIHdyaXRlci53cml0ZSgzMiwgYmEua2luZCB8IChiYS5sYXlvdXQgPDwgOCkpO1xuICBpZiAoYmEuY2FtbF9jdXN0b20gPT09IFwiX2JpZ2FycjAyXCIpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoYmEuZGltc1tpXSA8IDB4ZmZmZikgd3JpdGVyLndyaXRlKDE2LCBiYS5kaW1zW2ldKTtcbiAgICAgIGVsc2Uge1xuICAgICAgICB3cml0ZXIud3JpdGUoMTYsIDB4ZmZmZik7XG4gICAgICAgIHdyaXRlci53cml0ZSgzMiwgMCk7XG4gICAgICAgIHdyaXRlci53cml0ZSgzMiwgYmEuZGltc1tpXSk7XG4gICAgICB9XG4gICAgfVxuICBlbHNlIGZvciAodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKykgd3JpdGVyLndyaXRlKDMyLCBiYS5kaW1zW2ldKTtcbiAgc3dpdGNoIChiYS5raW5kKSB7XG4gICAgY2FzZSAyOiAvL0ludDhBcnJheVxuICAgIGNhc2UgMzogLy9VaW50OEFycmF5XG4gICAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgd3JpdGVyLndyaXRlKDgsIGJhLmRhdGFbaV0pO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSA0OiAvLyBJbnQxNkFycmF5XG4gICAgY2FzZSA1OiAvLyBVaW50MTZBcnJheVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHdyaXRlci53cml0ZSgxNiwgYmEuZGF0YVtpXSk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIDY6IC8vIEludDMyQXJyYXkgKGludDMyKVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHdyaXRlci53cml0ZSgzMiwgYmEuZGF0YVtpXSk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIDg6IC8vIEludDMyQXJyYXkgKGludClcbiAgICBjYXNlIDk6IC8vIEludDMyQXJyYXkgKG5hdGl2ZWludClcbiAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICB3cml0ZXIud3JpdGUoMzIsIGJhLmRhdGFbaV0pO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSA3OiAvLyBJbnQzMkFycmF5IChpbnQ2NClcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGggLyAyOyBpKyspIHtcbiAgICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGJhLmdldChpKSk7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUoOCwgYltqXSk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIDE6IC8vIEZsb2F0NjRBcnJheVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQoYmEuZ2V0KGkpKSk7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUoOCwgYltqXSk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIDEzOiAvLyBGbG9hdDE2QXJyYXlcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICB3cml0ZXIud3JpdGUoMTYsIGJhLmRhdGFbaV0pO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAwOiAvLyBGbG9hdDMyQXJyYXlcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgYiA9IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChiYS5nZXQoaSkpO1xuICAgICAgICB3cml0ZXIud3JpdGUoMzIsIGIpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxMDogLy8gRmxvYXQzMkFycmF5IChjb21wbGV4MzIpXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoIC8gMjsgaSsrKSB7XG4gICAgICAgIHZhciBqID0gYmEuZ2V0KGkpO1xuICAgICAgICB3cml0ZXIud3JpdGUoMzIsIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChqWzFdKSk7XG4gICAgICAgIHdyaXRlci53cml0ZSgzMiwgY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0KGpbMl0pKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTE6IC8vIEZsb2F0NjRBcnJheSAoY29tcGxleDY0KVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aCAvIDI7IGkrKykge1xuICAgICAgICB2YXIgY29tcGxleCA9IGJhLmdldChpKTtcbiAgICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdChjb21wbGV4WzFdKSk7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUoOCwgYltqXSk7XG4gICAgICAgIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQoY29tcGxleFsyXSkpO1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgd3JpdGVyLndyaXRlKDgsIGJbal0pO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gIH1cbiAgc3pbMF0gPSAoNCArIGJhLmRpbXMubGVuZ3RoKSAqIDQ7XG4gIHN6WzFdID0gKDQgKyBiYS5kaW1zLmxlbmd0aCkgKiA4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2Rlc2VyaWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXMsIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1xuLy9SZXF1aXJlczogY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV9idWZmZXJcbi8vUmVxdWlyZXM6IGNhbWxfdW5wYWNrRmxvYXQxNlxuZnVuY3Rpb24gY2FtbF9iYV9kZXNlcmlhbGl6ZShyZWFkZXIsIHN6LCBuYW1lKSB7XG4gIHZhciBudW1fZGltcyA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIGlmIChudW1fZGltcyA8IDAgfHwgbnVtX2RpbXMgPiAxNilcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHdyb25nIG51bWJlciBvZiBiaWdhcnJheSBkaW1lbnNpb25zXCIpO1xuICB2YXIgdGFnID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgdmFyIGtpbmQgPSB0YWcgJiAweGZmO1xuICB2YXIgbGF5b3V0ID0gKHRhZyA+PiA4KSAmIDE7XG4gIHZhciBkaW1zID0gW107XG4gIGlmIChuYW1lID09PSBcIl9iaWdhcnIwMlwiKVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2RpbXM7IGkrKykge1xuICAgICAgdmFyIHNpemVfZGltID0gcmVhZGVyLnJlYWQxNnUoKTtcbiAgICAgIGlmIChzaXplX2RpbSA9PT0gMHhmZmZmKSB7XG4gICAgICAgIHZhciBzaXplX2RpbV9oaSA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgIHZhciBzaXplX2RpbV9sbyA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgIGlmIChzaXplX2RpbV9oaSAhPT0gMClcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGJpZ2FycmF5IGRpbWVuc2lvbiBvdmVyZmxvdyBpbiAzMmJpdFwiKTtcbiAgICAgICAgc2l6ZV9kaW0gPSBzaXplX2RpbV9sbztcbiAgICAgIH1cbiAgICAgIGRpbXMucHVzaChzaXplX2RpbSk7XG4gICAgfVxuICBlbHNlIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2RpbXM7IGkrKykgZGltcy5wdXNoKHJlYWRlci5yZWFkMzJ1KCkpO1xuICB2YXIgc2l6ZSA9IGNhbWxfYmFfZ2V0X3NpemUoZGltcyk7XG4gIHZhciBkYXRhID0gY2FtbF9iYV9jcmVhdGVfYnVmZmVyKGtpbmQsIHNpemUpO1xuICB2YXIgYmEgPSBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcbiAgc3dpdGNoIChraW5kKSB7XG4gICAgY2FzZSAyOiAvL0ludDhBcnJheVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkOHMoKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMzogLy9VaW50OEFycmF5XG4gICAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSA0OiAvLyBJbnQxNkFycmF5XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQxNnMoKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgNTogLy8gVWludDE2QXJyYXlcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDE2dSgpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSA2OiAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDMycygpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSA4OiAvLyBJbnQzMkFycmF5IChpbnQpXG4gICAgY2FzZSA5OiAvLyBJbnQzMkFycmF5IChuYXRpdmVpbnQpXG4gICAgICB2YXIgc2l4dHkgPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICBpZiAoc2l4dHkpXG4gICAgICAgIGNhbWxfZmFpbHdpdGgoXG4gICAgICAgICAgXCJpbnB1dF92YWx1ZTogY2Fubm90IHJlYWQgYmlnYXJyYXkgd2l0aCA2NC1iaXQgT0NhbWwgaW50c1wiLFxuICAgICAgICApO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMzJzKCk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIDc6IC8vIChpbnQ2NClcbiAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgIHZhciBpbnQ2NCA9IGNhbWxfaW50NjRfb2ZfYnl0ZXModCk7XG4gICAgICAgIGJhLnNldChpLCBpbnQ2NCk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIDE6IC8vIEZsb2F0NjRBcnJheVxuICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgdmFyIGYgPSBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KSk7XG4gICAgICAgIGJhLnNldChpLCBmKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTM6IC8vIEZsb2F0MTZBcnJheVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMTZ1KCk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIDA6IC8vIEZsb2F0MzJBcnJheVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgdmFyIGYgPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMocmVhZGVyLnJlYWQzMnMoKSk7XG4gICAgICAgIGJhLnNldChpLCBmKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgdmFyIHJlID0gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzKHJlYWRlci5yZWFkMzJzKCkpO1xuICAgICAgICB2YXIgaW0gPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMocmVhZGVyLnJlYWQzMnMoKSk7XG4gICAgICAgIGJhLnNldChpLCBbMjU0LCByZSwgaW1dKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTE6IC8vIEZsb2F0NjRBcnJheSAoY29tcGxleDY0KVxuICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgdmFyIHJlID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgdmFyIGltID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgICBiYS5zZXQoaSwgWzI1NCwgcmUsIGltXSk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgfVxuICBzelswXSA9ICg0ICsgbnVtX2RpbXMpICogNDtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NyZWF0ZV9mcm9tXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuLy9EZXByZWNhdGVkOiBVc2UgW2NhbWxfYmFfY3JlYXRlX3Vuc2FmZV0gaW5zdGVhZFxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGVfZnJvbShkYXRhMSwgZGF0YTIsIF9qc3R5cCwga2luZCwgbGF5b3V0LCBkaW1zKSB7XG4gIGlmIChkYXRhMiB8fCBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpID09PSAyKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFxuICAgICAgXCJjYW1sX2JhX2NyZWF0ZV9mcm9tOiB1c2UgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVwiLFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGExKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9oYXNoIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplLCBjYW1sX2hhc2hfbWl4X2ludCwgY2FtbF9oYXNoX21peF9mbG9hdFxuLy9SZXF1aXJlczogY2FtbF91bnBhY2tGbG9hdDE2LCBjYW1sX2hhc2hfbWl4X2Zsb2F0MTYsIGNhbWxfaGFzaF9taXhfZmxvYXQzMlxuZnVuY3Rpb24gY2FtbF9iYV9oYXNoKGJhKSB7XG4gIHZhciBudW1fZWx0cyA9IGNhbWxfYmFfZ2V0X3NpemUoYmEuZGltcyk7XG4gIHZhciBoID0gMDtcbiAgc3dpdGNoIChiYS5raW5kKSB7XG4gICAgY2FzZSAyOiAvL0ludDhBcnJheVxuICAgIGNhc2UgMzogLy9VaW50OEFycmF5XG4gICAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgICBpZiAobnVtX2VsdHMgPiAyNTYpIG51bV9lbHRzID0gMjU2O1xuICAgICAgdmFyIHcgPSAwLFxuICAgICAgICBpID0gMDtcbiAgICAgIGZvciAoaSA9IDA7IGkgKyA0IDw9IG51bV9lbHRzOyBpICs9IDQpIHtcbiAgICAgICAgdyA9XG4gICAgICAgICAgKGJhLmRhdGFbaSArIDBdICYgMHhmZikgfFxuICAgICAgICAgICgoYmEuZGF0YVtpICsgMV0gJiAweGZmKSA8PCA4KSB8XG4gICAgICAgICAgKChiYS5kYXRhW2kgKyAyXSAmIDB4ZmYpIDw8IDE2KSB8XG4gICAgICAgICAgKGJhLmRhdGFbaSArIDNdIDw8IDI0KTtcbiAgICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICAgICAgfVxuICAgICAgdyA9IDA7XG4gICAgICBzd2l0Y2ggKG51bV9lbHRzICYgMykge1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0ZhbGx0aHJvdWdoU3dpdGNoQ2xhdXNlOlxuICAgICAgICAgIHcgPSBiYS5kYXRhW2kgKyAyXSA8PCAxNjtcbiAgICAgICAgLy8gZmFsbHRocm91Z2hcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9GYWxsdGhyb3VnaFN3aXRjaENsYXVzZTpcbiAgICAgICAgICB3IHw9IGJhLmRhdGFbaSArIDFdIDw8IDg7XG4gICAgICAgIC8vIGZhbGx0aHJvdWdoXG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICB3IHw9IGJhLmRhdGFbaSArIDBdO1xuICAgICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgNDogLy8gSW50MTZBcnJheVxuICAgIGNhc2UgNTogLy8gVWludDE2QXJyYXlcbiAgICAgIGlmIChudW1fZWx0cyA+IDEyOCkgbnVtX2VsdHMgPSAxMjg7XG4gICAgICB2YXIgdyA9IDAsXG4gICAgICAgIGkgPSAwO1xuICAgICAgZm9yIChpID0gMDsgaSArIDIgPD0gbnVtX2VsdHM7IGkgKz0gMikge1xuICAgICAgICB3ID0gKGJhLmRhdGFbaSArIDBdICYgMHhmZmZmKSB8IChiYS5kYXRhW2kgKyAxXSA8PCAxNik7XG4gICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgICAgIH1cbiAgICAgIGlmICgobnVtX2VsdHMgJiAxKSAhPT0gMCkgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA2OiAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICAgIGlmIChudW1fZWx0cyA+IDY0KSBudW1fZWx0cyA9IDY0O1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDg6IC8vIEludDMyQXJyYXkgKGludClcbiAgICBjYXNlIDk6IC8vIEludDMyQXJyYXkgKG5hdGl2ZWludClcbiAgICAgIGlmIChudW1fZWx0cyA+IDY0KSBudW1fZWx0cyA9IDY0O1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDc6IC8vIEludDMyQXJyYXkgKGludDY0KVxuICAgICAgaWYgKG51bV9lbHRzID4gMzIpIG51bV9lbHRzID0gMzI7XG4gICAgICBudW1fZWx0cyAqPSAyO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSB7XG4gICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0ZhbGx0aHJvdWdoU3dpdGNoQ2xhdXNlOlxuICAgICAgbnVtX2VsdHMgKj0gMjtcbiAgICAvLyBmYWxsdGhyb3VnaFxuICAgIGNhc2UgMDogLy8gRmxvYXQzMkFycmF5XG4gICAgICBpZiAobnVtX2VsdHMgPiA2NCkgbnVtX2VsdHMgPSA2NDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKylcbiAgICAgICAgaCA9IGNhbWxfaGFzaF9taXhfZmxvYXQzMihoLCBiYS5kYXRhW2ldKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTE6IC8vIEZsb2F0NjRBcnJheSAoY29tcGxleDY0KVxuICAgICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0ZhbGx0aHJvdWdoU3dpdGNoQ2xhdXNlOlxuICAgICAgbnVtX2VsdHMgKj0gMjtcbiAgICAvLyBmYWxsdGhyb3VnaFxuICAgIGNhc2UgMTogLy8gRmxvYXQ2NEFycmF5XG4gICAgICBpZiAobnVtX2VsdHMgPiAzMikgbnVtX2VsdHMgPSAzMjtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykgaCA9IGNhbWxfaGFzaF9taXhfZmxvYXQoaCwgYmEuZGF0YVtpXSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDEzOlxuICAgICAgaWYgKG51bV9lbHRzID4gMTI4KSBudW1fZWx0cyA9IDEyODtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykge1xuICAgICAgICBoID0gY2FtbF9oYXNoX21peF9mbG9hdDE2KGgsIGJhLmRhdGFbaV0pO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfZmxvYXQxNlxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfZmxvYXQxNihoYXNoLCBkKSB7XG4gIC8qIE5vcm1hbGl6ZSBOYU5zICovXG4gIGlmICgoZCAmIDB4N2MwMCkgPT09IDB4N2MwMCAmJiAoZCAmIDB4MDNmZikgIT09IDApIHtcbiAgICBkID0gMHg3YzAxO1xuICB9IGVsc2UgaWYgKGQgPT09IDB4ODAwMCkge1xuICAgIC8qIE5vcm1hbGl6ZSAtMCBpbnRvICswICovXG4gICAgZCA9IDA7XG4gIH1cbiAgcmV0dXJuIGNhbWxfaGFzaF9taXhfaW50KGhhc2gsIGQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2Zsb2F0MzJcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfZmxvYXQzMihoYXNoLCB2KSB7XG4gIHZhciBpID0gY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0KHYpO1xuICAvKiBOb3JtYWxpemUgTmFOcyAqL1xuICBpZiAoKGkgJiAweDdmODAwMDAwKSA9PT0gMHg3ZjgwMDAwMCAmJiAoaSAmIDB4N2ZmZmZmKSAhPT0gMCkge1xuICAgIGkgPSAweDdmODAwMDAxO1xuICB9IGVsc2UgaWYgKGkgPT09ICgweDgwMDAwMDAwIHwgMCkpIHtcbiAgICAvKiBOb3JtYWxpemUgLTAgaW50byArMCAqL1xuICAgIC8vIFRoaXMgY29kZSBwYXRoIGlzIG5vdCB1c2VkIGJ5IGNhbWxfaGFzaCBiZWNhdXNlIDAgYW5kIC0wIGxvb2tcbiAgICAvLyBsaWtlIGludGVnZXJzXG4gICAgaSA9IDA7XG4gIH1cbiAgaGFzaCA9IGNhbWxfaGFzaF9taXhfaW50KGhhc2gsIGkpO1xuICByZXR1cm4gaGFzaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV90b190eXBlZF9hcnJheSBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5KGJhKSB7XG4gIHJldHVybiBiYS5kYXRhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkodGEpIHtcbiAgdmFyIGtpbmQ7XG4gIGlmICh0YSBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheSkga2luZCA9IDA7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgRmxvYXQ2NEFycmF5KSBraW5kID0gMTtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBJbnQ4QXJyYXkpIGtpbmQgPSAyO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIGtpbmQgPSAzO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIFVpbnQ4Q2xhbXBlZEFycmF5KSBraW5kID0gMztcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBJbnQxNkFycmF5KSBraW5kID0gNDtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBVaW50MTZBcnJheSkga2luZCA9IDU7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgSW50MzJBcnJheSkga2luZCA9IDY7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgVWludDMyQXJyYXkpIGtpbmQgPSA2O1xuICBlbHNlIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheTogdW5zdXBwb3J0ZWQga2luZFwiKTtcbiAgcmV0dXJuIGtpbmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZnJvbV90eXBlZF9hcnJheSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5KHRhKSB7XG4gIHZhciBraW5kID0gY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5KHRhKTtcbiAgdmFyIHRhID1cbiAgICAvKiBOZWVkZWQgdG8gYXZvaWQgdW5zaWduZWQgc2V0dGVycyBvdmVyZmxvd2luZ1xuICAgICAgICAgdGhlIHJhbmdlIG9mIE9DYW1sIFtpbnQzMl0gdmFsdWVzLiAqL1xuICAgIHRhIGluc3RhbmNlb2YgVWludDMyQXJyYXlcbiAgICAgID8gbmV3IEludDMyQXJyYXkodGEuYnVmZmVyLCB0YS5ieXRlT2Zmc2V0LCB0YS5sZW5ndGgpXG4gICAgICA6IHRhO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIDAsIFt0YS5sZW5ndGhdLCB0YSk7XG59XG4iLCIvLy8vLy8vLy8gQklHU1RSSU5HXG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfYmlnc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FyclxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9iaWdzdHJpbmcoaCwgYnMpIHtcbiAgcmV0dXJuIGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyKGgsIGJzLmRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyIG11dGFibGVcbmZ1bmN0aW9uIGJpZ3N0cmluZ190b19hcnJheV9idWZmZXIoYnMpIHtcbiAgcmV0dXJuIGJzLmRhdGEuYnVmZmVyO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXkgbXV0YWJsZVxuZnVuY3Rpb24gYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5KGJzKSB7XG4gIHJldHVybiBicy5kYXRhO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlcihhYikge1xuICB2YXIgdGEgPSBuZXcgVWludDhBcnJheShhYik7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoMTIsIDAsIFt0YS5sZW5ndGhdLCB0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheShiYSkge1xuICB2YXIgdGEgPSBuZXcgVWludDhBcnJheShcbiAgICBiYS5idWZmZXIsXG4gICAgYmEuYnl0ZU9mZnNldCxcbiAgICBiYS5sZW5ndGggKiBiYS5CWVRFU19QRVJfRUxFTUVOVCxcbiAgKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSgxMiwgMCwgW3RhLmxlbmd0aF0sIHRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfbWVtY21wXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19tZW1jbXAoczEsIHBvczEsIHMyLCBwb3MyLCBsZW4pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBhID0gY2FtbF9iYV9nZXRfMShzMSwgcG9zMSArIGkpO1xuICAgIHZhciBiID0gY2FtbF9iYV9nZXRfMShzMiwgcG9zMiArIGkpO1xuICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmFcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYShiYTEsIHBvczEsIGJhMiwgcG9zMiwgbGVuKSB7XG4gIGlmICgxMiAhPT0gYmExLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYgKDEyICE9PSBiYTIua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZiAobGVuID09PSAwKSByZXR1cm4gMDtcbiAgdmFyIG9mczEgPSBiYTEub2Zmc2V0KHBvczEpO1xuICB2YXIgb2ZzMiA9IGJhMi5vZmZzZXQocG9zMik7XG4gIGlmIChvZnMxICsgbGVuID4gYmExLmRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmIChvZnMyICsgbGVuID4gYmEyLmRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIHZhciBzbGljZSA9IGJhMS5kYXRhLnN1YmFycmF5KG9mczEsIG9mczEgKyBsZW4pO1xuICBiYTIuZGF0YS5zZXQoc2xpY2UsIHBvczIpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmFcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmEoc3RyMSwgcG9zMSwgYmEyLCBwb3MyLCBsZW4pIHtcbiAgaWYgKDEyICE9PSBiYTIua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYgKGxlbiA9PT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYgKHBvczEgKyBsZW4gPiBjYW1sX21sX3N0cmluZ19sZW5ndGgoc3RyMSkpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYgKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcoc3RyMSkuc3ViYXJyYXkocG9zMSwgcG9zMSArIGxlbik7XG4gIGJhMi5kYXRhLnNldChzbGljZSwgb2ZzMik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2J5dGVzX3RvX2JhXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X2J5dGVzX3RvX2JhKHN0cjEsIHBvczEsIGJhMiwgcG9zMiwgbGVuKSB7XG4gIGlmICgxMiAhPT0gYmEyLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmIChsZW4gPT09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMiA9IGJhMi5vZmZzZXQocG9zMik7XG4gIGlmIChwb3MxICsgbGVuID4gY2FtbF9tbF9ieXRlc19sZW5ndGgoc3RyMSkpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYgKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhzdHIxKS5zdWJhcnJheShwb3MxLCBwb3MxICsgbGVuKTtcbiAgYmEyLmRhdGEuc2V0KHNsaWNlLCBvZnMyKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX3VpbnQ4X2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyhiYTEsIHBvczEsIGJ5dGVzMiwgcG9zMiwgbGVuKSB7XG4gIGlmICgxMiAhPT0gYmExLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmIChsZW4gPT09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMSA9IGJhMS5vZmZzZXQocG9zMSk7XG4gIGlmIChvZnMxICsgbGVuID4gYmExLmRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmIChwb3MyICsgbGVuID4gY2FtbF9tbF9ieXRlc19sZW5ndGgoYnl0ZXMyKSkge1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBiYTEuZGF0YS5zdWJhcnJheShvZnMxLCBvZnMxICsgbGVuKTtcbiAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2ZfdWludDhfYXJyYXkoc2xpY2UpLCAwLCBieXRlczIsIHBvczIsIGxlbik7XG4gIHJldHVybiAwO1xufVxuIiwiLy9Qcm92aWRlczogYmxha2UyYlxuLy9WZXJzaW9uOiA+PSA1LjJcbnZhciBibGFrZTJiID0gKGZ1bmN0aW9uICgpIHtcbiAgLy8gQmxha2UyQiBpbiBwdXJlIEphdmFzY3JpcHRcbiAgLy8gQWRhcHRlZCBmcm9tIHRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gaW4gUkZDNzY5M1xuICAvLyBQb3J0ZWQgdG8gSmF2YXNjcmlwdCBieSBEQyAtIGh0dHBzOi8vZ2l0aHViLmNvbS9kY3Bvc2NoXG5cbiAgLy8gNjQtYml0IHVuc2lnbmVkIGFkZGl0aW9uXG4gIC8vIFNldHMgdlthLGErMV0gKz0gdltiLGIrMV1cbiAgLy8gdiBzaG91bGQgYmUgYSBVaW50MzJBcnJheVxuICBmdW5jdGlvbiBBREQ2NEFBKHYsIGEsIGIpIHtcbiAgICBjb25zdCBvMCA9IHZbYV0gKyB2W2JdO1xuICAgIGxldCBvMSA9IHZbYSArIDFdICsgdltiICsgMV07XG4gICAgaWYgKG8wID49IDB4MTAwMDAwMDAwKSB7XG4gICAgICBvMSsrO1xuICAgIH1cbiAgICB2W2FdID0gbzA7XG4gICAgdlthICsgMV0gPSBvMTtcbiAgfVxuXG4gIC8vIDY0LWJpdCB1bnNpZ25lZCBhZGRpdGlvblxuICAvLyBTZXRzIHZbYSxhKzFdICs9IGJcbiAgLy8gYjAgaXMgdGhlIGxvdyAzMiBiaXRzIG9mIGIsIGIxIHJlcHJlc2VudHMgdGhlIGhpZ2ggMzIgYml0c1xuICBmdW5jdGlvbiBBREQ2NEFDKHYsIGEsIGIwLCBiMSkge1xuICAgIGxldCBvMCA9IHZbYV0gKyBiMDtcbiAgICBpZiAoYjAgPCAwKSB7XG4gICAgICBvMCArPSAweDEwMDAwMDAwMDtcbiAgICB9XG4gICAgbGV0IG8xID0gdlthICsgMV0gKyBiMTtcbiAgICBpZiAobzAgPj0gMHgxMDAwMDAwMDApIHtcbiAgICAgIG8xKys7XG4gICAgfVxuICAgIHZbYV0gPSBvMDtcbiAgICB2W2EgKyAxXSA9IG8xO1xuICB9XG5cbiAgLy8gTGl0dGxlLWVuZGlhbiBieXRlIGFjY2Vzc1xuICBmdW5jdGlvbiBCMkJfR0VUMzIoYXJyLCBpKSB7XG4gICAgcmV0dXJuIGFycltpXSBeIChhcnJbaSArIDFdIDw8IDgpIF4gKGFycltpICsgMl0gPDwgMTYpIF4gKGFycltpICsgM10gPDwgMjQpO1xuICB9XG5cbiAgLy8gRyBNaXhpbmcgZnVuY3Rpb25cbiAgLy8gVGhlIFJPVFJzIGFyZSBpbmxpbmVkIGZvciBzcGVlZFxuICBmdW5jdGlvbiBCMkJfRyhhLCBiLCBjLCBkLCBpeCwgaXkpIHtcbiAgICBjb25zdCB4MCA9IG1baXhdO1xuICAgIGNvbnN0IHgxID0gbVtpeCArIDFdO1xuICAgIGNvbnN0IHkwID0gbVtpeV07XG4gICAgY29uc3QgeTEgPSBtW2l5ICsgMV07XG5cbiAgICBBREQ2NEFBKHYsIGEsIGIpOyAvLyB2W2EsYSsxXSArPSB2W2IsYisxXSAuLi4gaW4gSlMgd2UgbXVzdCBzdG9yZSBhIHVpbnQ2NCBhcyB0d28gdWludDMyc1xuICAgIEFERDY0QUModiwgYSwgeDAsIHgxKTsgLy8gdlthLCBhKzFdICs9IHggLi4uIHgwIGlzIHRoZSBsb3cgMzIgYml0cyBvZiB4LCB4MSBpcyB0aGUgaGlnaCAzMiBiaXRzXG5cbiAgICAvLyB2W2QsZCsxXSA9ICh2W2QsZCsxXSB4b3IgdlthLGErMV0pIHJvdGF0ZWQgdG8gdGhlIHJpZ2h0IGJ5IDMyIGJpdHNcbiAgICBsZXQgeG9yMCA9IHZbZF0gXiB2W2FdO1xuICAgIGxldCB4b3IxID0gdltkICsgMV0gXiB2W2EgKyAxXTtcbiAgICB2W2RdID0geG9yMTtcbiAgICB2W2QgKyAxXSA9IHhvcjA7XG5cbiAgICBBREQ2NEFBKHYsIGMsIGQpO1xuXG4gICAgLy8gdltiLGIrMV0gPSAodltiLGIrMV0geG9yIHZbYyxjKzFdKSByb3RhdGVkIHJpZ2h0IGJ5IDI0IGJpdHNcbiAgICB4b3IwID0gdltiXSBeIHZbY107XG4gICAgeG9yMSA9IHZbYiArIDFdIF4gdltjICsgMV07XG4gICAgdltiXSA9ICh4b3IwID4+PiAyNCkgXiAoeG9yMSA8PCA4KTtcbiAgICB2W2IgKyAxXSA9ICh4b3IxID4+PiAyNCkgXiAoeG9yMCA8PCA4KTtcblxuICAgIEFERDY0QUEodiwgYSwgYik7XG4gICAgQURENjRBQyh2LCBhLCB5MCwgeTEpO1xuXG4gICAgLy8gdltkLGQrMV0gPSAodltkLGQrMV0geG9yIHZbYSxhKzFdKSByb3RhdGVkIHJpZ2h0IGJ5IDE2IGJpdHNcbiAgICB4b3IwID0gdltkXSBeIHZbYV07XG4gICAgeG9yMSA9IHZbZCArIDFdIF4gdlthICsgMV07XG4gICAgdltkXSA9ICh4b3IwID4+PiAxNikgXiAoeG9yMSA8PCAxNik7XG4gICAgdltkICsgMV0gPSAoeG9yMSA+Pj4gMTYpIF4gKHhvcjAgPDwgMTYpO1xuXG4gICAgQURENjRBQSh2LCBjLCBkKTtcblxuICAgIC8vIHZbYixiKzFdID0gKHZbYixiKzFdIHhvciB2W2MsYysxXSkgcm90YXRlZCByaWdodCBieSA2MyBiaXRzXG4gICAgeG9yMCA9IHZbYl0gXiB2W2NdO1xuICAgIHhvcjEgPSB2W2IgKyAxXSBeIHZbYyArIDFdO1xuICAgIHZbYl0gPSAoeG9yMSA+Pj4gMzEpIF4gKHhvcjAgPDwgMSk7XG4gICAgdltiICsgMV0gPSAoeG9yMCA+Pj4gMzEpIF4gKHhvcjEgPDwgMSk7XG4gIH1cblxuICAvLyBJbml0aWFsaXphdGlvbiBWZWN0b3JcbiAgY29uc3QgQkxBS0UyQl9JVjMyID0gbmV3IFVpbnQzMkFycmF5KFtcbiAgICAweGYzYmNjOTA4LCAweDZhMDllNjY3LCAweDg0Y2FhNzNiLCAweGJiNjdhZTg1LCAweGZlOTRmODJiLCAweDNjNmVmMzcyLFxuICAgIDB4NWYxZDM2ZjEsIDB4YTU0ZmY1M2EsIDB4YWRlNjgyZDEsIDB4NTEwZTUyN2YsIDB4MmIzZTZjMWYsIDB4OWIwNTY4OGMsXG4gICAgMHhmYjQxYmQ2YiwgMHgxZjgzZDlhYiwgMHgxMzdlMjE3OSwgMHg1YmUwY2QxOSxcbiAgXSk7XG5cbiAgY29uc3QgU0lHTUE4ID0gW1xuICAgIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE0LCAxMCwgNCwgOCwgOSwgMTUsXG4gICAgMTMsIDYsIDEsIDEyLCAwLCAyLCAxMSwgNywgNSwgMywgMTEsIDgsIDEyLCAwLCA1LCAyLCAxNSwgMTMsIDEwLCAxNCwgMywgNixcbiAgICA3LCAxLCA5LCA0LCA3LCA5LCAzLCAxLCAxMywgMTIsIDExLCAxNCwgMiwgNiwgNSwgMTAsIDQsIDAsIDE1LCA4LCA5LCAwLCA1LFxuICAgIDcsIDIsIDQsIDEwLCAxNSwgMTQsIDEsIDExLCAxMiwgNiwgOCwgMywgMTMsIDIsIDEyLCA2LCAxMCwgMCwgMTEsIDgsIDMsIDQsXG4gICAgMTMsIDcsIDUsIDE1LCAxNCwgMSwgOSwgMTIsIDUsIDEsIDE1LCAxNCwgMTMsIDQsIDEwLCAwLCA3LCA2LCAzLCA5LCAyLCA4LFxuICAgIDExLCAxMywgMTEsIDcsIDE0LCAxMiwgMSwgMywgOSwgNSwgMCwgMTUsIDQsIDgsIDYsIDIsIDEwLCA2LCAxNSwgMTQsIDksIDExLFxuICAgIDMsIDAsIDgsIDEyLCAyLCAxMywgNywgMSwgNCwgMTAsIDUsIDEwLCAyLCA4LCA0LCA3LCA2LCAxLCA1LCAxNSwgMTEsIDksIDE0LFxuICAgIDMsIDEyLCAxMywgMCwgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTQsIDEwLFxuICAgIDQsIDgsIDksIDE1LCAxMywgNiwgMSwgMTIsIDAsIDIsIDExLCA3LCA1LCAzLFxuICBdO1xuXG4gIC8vIFRoZXNlIGFyZSBvZmZzZXRzIGludG8gYSB1aW50NjQgYnVmZmVyLlxuICAvLyBNdWx0aXBseSB0aGVtIGFsbCBieSAyIHRvIG1ha2UgdGhlbSBvZmZzZXRzIGludG8gYSB1aW50MzIgYnVmZmVyLFxuICAvLyBiZWNhdXNlIHRoaXMgaXMgSmF2YXNjcmlwdCBhbmQgd2UgZG9uJ3QgaGF2ZSB1aW50NjRzXG4gIGNvbnN0IFNJR01BODIgPSBuZXcgVWludDhBcnJheShcbiAgICBTSUdNQTgubWFwKGZ1bmN0aW9uICh4KSB7XG4gICAgICByZXR1cm4geCAqIDI7XG4gICAgfSksXG4gICk7XG5cbiAgLy8gQ29tcHJlc3Npb24gZnVuY3Rpb24uICdsYXN0JyBmbGFnIGluZGljYXRlcyBsYXN0IGJsb2NrLlxuICAvLyBOb3RlIHdlJ3JlIHJlcHJlc2VudGluZyAxNiB1aW50NjRzIGFzIDMyIHVpbnQzMnNcbiAgY29uc3QgdiA9IG5ldyBVaW50MzJBcnJheSgzMik7XG4gIGNvbnN0IG0gPSBuZXcgVWludDMyQXJyYXkoMzIpO1xuICBmdW5jdGlvbiBibGFrZTJiQ29tcHJlc3MoY3R4LCBsYXN0KSB7XG4gICAgbGV0IGkgPSAwO1xuXG4gICAgLy8gaW5pdCB3b3JrIHZhcmlhYmxlc1xuICAgIGZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKSB7XG4gICAgICB2W2ldID0gY3R4LmhbaV07XG4gICAgICB2W2kgKyAxNl0gPSBCTEFLRTJCX0lWMzJbaV07XG4gICAgfVxuXG4gICAgLy8gbG93IDY0IGJpdHMgb2Ygb2Zmc2V0XG4gICAgdlsyNF0gPSB2WzI0XSBeIGN0eC50O1xuICAgIHZbMjVdID0gdlsyNV0gXiAoY3R4LnQgLyAweDEwMDAwMDAwMCk7XG4gICAgLy8gaGlnaCA2NCBiaXRzIG5vdCBzdXBwb3J0ZWQsIG9mZnNldCBtYXkgbm90IGJlIGhpZ2hlciB0aGFuIDIqKjUzLTFcblxuICAgIC8vIGxhc3QgYmxvY2sgZmxhZyBzZXQgP1xuICAgIGlmIChsYXN0KSB7XG4gICAgICB2WzI4XSA9IH52WzI4XTtcbiAgICAgIHZbMjldID0gfnZbMjldO1xuICAgIH1cblxuICAgIC8vIGdldCBsaXR0bGUtZW5kaWFuIHdvcmRzXG4gICAgZm9yIChpID0gMDsgaSA8IDMyOyBpKyspIHtcbiAgICAgIG1baV0gPSBCMkJfR0VUMzIoY3R4LmIsIDQgKiBpKTtcbiAgICB9XG5cbiAgICAvLyB0d2VsdmUgcm91bmRzIG9mIG1peGluZ1xuICAgIC8vIHVuY29tbWVudCB0aGUgRGVidWdQcmludCBjYWxscyB0byBsb2cgdGhlIGNvbXB1dGF0aW9uXG4gICAgLy8gYW5kIG1hdGNoIHRoZSBSRkMgc2FtcGxlIGRvY3VtZW50YXRpb25cbiAgICBmb3IgKGkgPSAwOyBpIDwgMTI7IGkrKykge1xuICAgICAgQjJCX0coMCwgOCwgMTYsIDI0LCBTSUdNQTgyW2kgKiAxNiArIDBdLCBTSUdNQTgyW2kgKiAxNiArIDFdKTtcbiAgICAgIEIyQl9HKDIsIDEwLCAxOCwgMjYsIFNJR01BODJbaSAqIDE2ICsgMl0sIFNJR01BODJbaSAqIDE2ICsgM10pO1xuICAgICAgQjJCX0coNCwgMTIsIDIwLCAyOCwgU0lHTUE4MltpICogMTYgKyA0XSwgU0lHTUE4MltpICogMTYgKyA1XSk7XG4gICAgICBCMkJfRyg2LCAxNCwgMjIsIDMwLCBTSUdNQTgyW2kgKiAxNiArIDZdLCBTSUdNQTgyW2kgKiAxNiArIDddKTtcbiAgICAgIEIyQl9HKDAsIDEwLCAyMCwgMzAsIFNJR01BODJbaSAqIDE2ICsgOF0sIFNJR01BODJbaSAqIDE2ICsgOV0pO1xuICAgICAgQjJCX0coMiwgMTIsIDIyLCAyNCwgU0lHTUE4MltpICogMTYgKyAxMF0sIFNJR01BODJbaSAqIDE2ICsgMTFdKTtcbiAgICAgIEIyQl9HKDQsIDE0LCAxNiwgMjYsIFNJR01BODJbaSAqIDE2ICsgMTJdLCBTSUdNQTgyW2kgKiAxNiArIDEzXSk7XG4gICAgICBCMkJfRyg2LCA4LCAxOCwgMjgsIFNJR01BODJbaSAqIDE2ICsgMTRdLCBTSUdNQTgyW2kgKiAxNiArIDE1XSk7XG4gICAgfVxuXG4gICAgZm9yIChpID0gMDsgaSA8IDE2OyBpKyspIHtcbiAgICAgIGN0eC5oW2ldID0gY3R4LmhbaV0gXiB2W2ldIF4gdltpICsgMTZdO1xuICAgIH1cbiAgfVxuXG4gIC8vIHJldXNhYmxlIHBhcmFtZXRlckJsb2NrXG4gIGNvbnN0IHBhcmFtZXRlckJsb2NrID0gbmV3IFVpbnQ4QXJyYXkoW1xuICAgIDAsXG4gICAgMCxcbiAgICAwLFxuICAgIDAsIC8vICAwOiBvdXRsZW4sIGtleWxlbiwgZmFub3V0LCBkZXB0aFxuICAgIDAsXG4gICAgMCxcbiAgICAwLFxuICAgIDAsIC8vICA0OiBsZWFmIGxlbmd0aCwgc2VxdWVudGlhbCBtb2RlXG4gICAgMCxcbiAgICAwLFxuICAgIDAsXG4gICAgMCwgLy8gIDg6IG5vZGUgb2Zmc2V0XG4gICAgMCxcbiAgICAwLFxuICAgIDAsXG4gICAgMCwgLy8gMTI6IG5vZGUgb2Zmc2V0XG4gICAgMCxcbiAgICAwLFxuICAgIDAsXG4gICAgMCwgLy8gMTY6IG5vZGUgZGVwdGgsIGlubmVyIGxlbmd0aCwgcmZ1XG4gICAgMCxcbiAgICAwLFxuICAgIDAsXG4gICAgMCwgLy8gMjA6IHJmdVxuICAgIDAsXG4gICAgMCxcbiAgICAwLFxuICAgIDAsIC8vIDI0OiByZnVcbiAgICAwLFxuICAgIDAsXG4gICAgMCxcbiAgICAwLCAvLyAyODogcmZ1XG4gICAgMCxcbiAgICAwLFxuICAgIDAsXG4gICAgMCwgLy8gMzI6IHNhbHRcbiAgICAwLFxuICAgIDAsXG4gICAgMCxcbiAgICAwLCAvLyAzNjogc2FsdFxuICAgIDAsXG4gICAgMCxcbiAgICAwLFxuICAgIDAsIC8vIDQwOiBzYWx0XG4gICAgMCxcbiAgICAwLFxuICAgIDAsXG4gICAgMCwgLy8gNDQ6IHNhbHRcbiAgICAwLFxuICAgIDAsXG4gICAgMCxcbiAgICAwLCAvLyA0ODogcGVyc29uYWxcbiAgICAwLFxuICAgIDAsXG4gICAgMCxcbiAgICAwLCAvLyA1MjogcGVyc29uYWxcbiAgICAwLFxuICAgIDAsXG4gICAgMCxcbiAgICAwLCAvLyA1NjogcGVyc29uYWxcbiAgICAwLFxuICAgIDAsXG4gICAgMCxcbiAgICAwLCAvLyA2MDogcGVyc29uYWxcbiAgXSk7XG5cbiAgLy8gQ3JlYXRlcyBhIEJMQUtFMmIgaGFzaGluZyBjb250ZXh0XG4gIC8vIFJlcXVpcmVzIGFuIG91dHB1dCBsZW5ndGggYmV0d2VlbiAxIGFuZCA2NCBieXRlc1xuICAvLyBUYWtlcyBhbiBvcHRpb25hbCBVaW50OEFycmF5IGtleVxuICBmdW5jdGlvbiBibGFrZTJiSW5pdChvdXRsZW4sIGtleSkge1xuICAgIGlmIChvdXRsZW4gPT09IDAgfHwgb3V0bGVuID4gNjQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIklsbGVnYWwgb3V0cHV0IGxlbmd0aCwgZXhwZWN0ZWQgMCA8IGxlbmd0aCA8PSA2NFwiKTtcbiAgICB9XG4gICAgaWYgKGtleS5sZW5ndGggPiA2NCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSWxsZWdhbCBrZXksIGV4cGVjdGVkIFVpbnQ4QXJyYXkgd2l0aCAwIDwgbGVuZ3RoIDw9IDY0XCIpO1xuICAgIH1cblxuICAgIC8vIHN0YXRlLCAncGFyYW0gYmxvY2snXG4gICAgY29uc3QgY3R4ID0ge1xuICAgICAgYjogbmV3IFVpbnQ4QXJyYXkoMTI4KSxcbiAgICAgIGg6IG5ldyBVaW50MzJBcnJheSgxNiksXG4gICAgICB0OiAwLCAvLyBpbnB1dCBjb3VudFxuICAgICAgYzogMCwgLy8gcG9pbnRlciB3aXRoaW4gYnVmZmVyXG4gICAgICBvdXRsZW46IG91dGxlbiwgLy8gb3V0cHV0IGxlbmd0aCBpbiBieXRlc1xuICAgIH07XG5cbiAgICAvLyBpbml0aWFsaXplIHBhcmFtZXRlckJsb2NrIGJlZm9yZSB1c2FnZVxuICAgIHBhcmFtZXRlckJsb2NrLmZpbGwoMCk7XG4gICAgcGFyYW1ldGVyQmxvY2tbMF0gPSBvdXRsZW47XG4gICAgcGFyYW1ldGVyQmxvY2tbMV0gPSBrZXkubGVuZ3RoO1xuICAgIHBhcmFtZXRlckJsb2NrWzJdID0gMTsgLy8gZmFub3V0XG4gICAgcGFyYW1ldGVyQmxvY2tbM10gPSAxOyAvLyBkZXB0aFxuXG4gICAgLy8gaW5pdGlhbGl6ZSBoYXNoIHN0YXRlXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxNjsgaSsrKSB7XG4gICAgICBjdHguaFtpXSA9IEJMQUtFMkJfSVYzMltpXSBeIEIyQl9HRVQzMihwYXJhbWV0ZXJCbG9jaywgaSAqIDQpO1xuICAgIH1cblxuICAgIGlmIChrZXkubGVuZ3RoID4gMCkge1xuICAgICAgYmxha2UyYlVwZGF0ZShjdHgsIGtleSk7XG4gICAgICAvLyBhdCB0aGUgZW5kXG4gICAgICBjdHguYyA9IDEyODtcbiAgICB9XG5cbiAgICByZXR1cm4gY3R4O1xuICB9XG5cbiAgLy8gVXBkYXRlcyBhIEJMQUtFMmIgc3RyZWFtaW5nIGhhc2hcbiAgLy8gUmVxdWlyZXMgaGFzaCBjb250ZXh0IGFuZCBVaW50OEFycmF5IChieXRlIGFycmF5KVxuICBmdW5jdGlvbiBibGFrZTJiVXBkYXRlKGN0eCwgaW5wdXQpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoY3R4LmMgPT09IDEyOCkge1xuICAgICAgICAvLyBidWZmZXIgZnVsbCA/XG4gICAgICAgIGN0eC50ICs9IGN0eC5jOyAvLyBhZGQgY291bnRlcnNcbiAgICAgICAgYmxha2UyYkNvbXByZXNzKGN0eCwgZmFsc2UpOyAvLyBjb21wcmVzcyAobm90IGxhc3QpXG4gICAgICAgIGN0eC5jID0gMDsgLy8gY291bnRlciB0byB6ZXJvXG4gICAgICB9XG4gICAgICBjdHguYltjdHguYysrXSA9IGlucHV0W2ldO1xuICAgIH1cbiAgfVxuXG4gIC8vIENvbXBsZXRlcyBhIEJMQUtFMmIgc3RyZWFtaW5nIGhhc2hcbiAgLy8gUmV0dXJucyBhIFVpbnQ4QXJyYXkgY29udGFpbmluZyB0aGUgbWVzc2FnZSBkaWdlc3RcbiAgZnVuY3Rpb24gYmxha2UyYkZpbmFsKGN0eCkge1xuICAgIGN0eC50ICs9IGN0eC5jOyAvLyBtYXJrIGxhc3QgYmxvY2sgb2Zmc2V0XG5cbiAgICB3aGlsZSAoY3R4LmMgPCAxMjgpIHtcbiAgICAgIC8vIGZpbGwgdXAgd2l0aCB6ZXJvc1xuICAgICAgY3R4LmJbY3R4LmMrK10gPSAwO1xuICAgIH1cbiAgICBibGFrZTJiQ29tcHJlc3MoY3R4LCB0cnVlKTsgLy8gZmluYWwgYmxvY2sgZmxhZyA9IDFcblxuICAgIC8vIGxpdHRsZSBlbmRpYW4gY29udmVydCBhbmQgc3RvcmVcbiAgICBjb25zdCBvdXQgPSBuZXcgVWludDhBcnJheShjdHgub3V0bGVuKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGN0eC5vdXRsZW47IGkrKykge1xuICAgICAgb3V0W2ldID0gY3R4LmhbaSA+PiAyXSA+PiAoOCAqIChpICYgMykpO1xuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9XG4gIHJldHVybiB7IEluaXQ6IGJsYWtlMmJJbml0LCBVcGRhdGU6IGJsYWtlMmJVcGRhdGUsIEZpbmFsOiBibGFrZTJiRmluYWwgfTtcbn0pKCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmxha2UyX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGJsYWtlMmJcbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBjYW1sX2JsYWtlMl9jcmVhdGUoaGFzaGxlbiwga2V5KSB7XG4gIGtleSA9IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nKGtleSk7XG4gIGlmIChrZXkubGVuZ3RoID4gNjQpIHtcbiAgICBrZXkuc3ViYXJyYXkoMCwgNjQpO1xuICB9XG4gIHJldHVybiBibGFrZTJiLkluaXQoaGFzaGxlbiwga2V5KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGFrZTJfZmluYWxcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX3VpbnQ4X2FycmF5XG4vL1JlcXVpcmVzOiBibGFrZTJiXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9ibGFrZTJfZmluYWwoY3R4LCBfaGFzaGxlbikge1xuICAvLyBjdHgub3V0bGVuID09PSBoYXNobGVuXG4gIHZhciByID0gYmxha2UyYi5GaW5hbChjdHgpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfdWludDhfYXJyYXkocik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmxha2UyX3VwZGF0ZVxuLy9SZXF1aXJlczogYmxha2UyYlxuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmdcbi8vVmVyc2lvbjogPj0gNS4yLCA8IDUuM1xuZnVuY3Rpb24gY2FtbF9ibGFrZTJfdXBkYXRlKGN0eCwgYnVmLCBvZnMsIGxlbikge1xuICB2YXIgaW5wdXQgPSBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyhidWYpO1xuICBpbnB1dCA9IGlucHV0LnN1YmFycmF5KG9mcywgb2ZzICsgbGVuKTtcbiAgYmxha2UyYi5VcGRhdGUoY3R4LCBpbnB1dCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JsYWtlMl91cGRhdGVcbi8vUmVxdWlyZXM6IGJsYWtlMmJcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbi8vVmVyc2lvbjogPj0gNS4zXG5mdW5jdGlvbiBjYW1sX2JsYWtlMl91cGRhdGUoY3R4LCBidWYsIG9mcywgbGVuKSB7XG4gIHZhciBpbnB1dCA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoYnVmKTtcbiAgaW5wdXQgPSBpbnB1dC5zdWJhcnJheShvZnMsIG9mcyArIGxlbik7XG4gIGJsYWtlMmIuVXBkYXRlKGN0eCwgaW5wdXQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGFrZTJfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2JsYWtlMl9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfYmxha2UyX3VwZGF0ZVxuLy9SZXF1aXJlczogY2FtbF9ibGFrZTJfZmluYWxcbi8vVmVyc2lvbjogPj0gNS4yLCA8IDUuM1xuZnVuY3Rpb24gY2FtbF9ibGFrZTJfc3RyaW5nKGhhc2hsZW4sIGtleSwgYnVmLCBvZnMsIGxlbikge1xuICB2YXIgY3R4ID0gY2FtbF9ibGFrZTJfY3JlYXRlKGhhc2hsZW4sIGtleSk7XG4gIGNhbWxfYmxha2UyX3VwZGF0ZShjdHgsIGJ1Ziwgb2ZzLCBsZW4pO1xuICByZXR1cm4gY2FtbF9ibGFrZTJfZmluYWwoY3R4LCBoYXNobGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGFrZTJfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2JsYWtlMl9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfYmxha2UyX3VwZGF0ZVxuLy9SZXF1aXJlczogY2FtbF9ibGFrZTJfZmluYWxcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nXG4vL1ZlcnNpb246ID49IDUuM1xuZnVuY3Rpb24gY2FtbF9ibGFrZTJfc3RyaW5nKGhhc2hsZW4sIGtleSwgYnVmX3N0ciwgb2ZzLCBsZW4pIHtcbiAgdmFyIGN0eCA9IGNhbWxfYmxha2UyX2NyZWF0ZShoYXNobGVuLCBrZXkpO1xuICB2YXIgYnVmID0gY2FtbF9ieXRlc19vZl9zdHJpbmcoYnVmX3N0cik7XG4gIGNhbWxfYmxha2UyX3VwZGF0ZShjdHgsIGJ1Ziwgb2ZzLCBsZW4pO1xuICByZXR1cm4gY2FtbF9ibGFrZTJfZmluYWwoY3R4LCBoYXNobGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGFrZTJfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfYmxha2UyX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9ibGFrZTJfdXBkYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2JsYWtlMl9maW5hbFxuLy9WZXJzaW9uOiA+PSA1LjNcbmZ1bmN0aW9uIGNhbWxfYmxha2UyX2J5dGVzKGhhc2hsZW4sIGtleSwgYnVmLCBvZnMsIGxlbikge1xuICB2YXIgY3R4ID0gY2FtbF9ibGFrZTJfY3JlYXRlKGhhc2hsZW4sIGtleSk7XG4gIGNhbWxfYmxha2UyX3VwZGF0ZShjdHgsIGJ1Ziwgb2ZzLCBsZW4pO1xuICByZXR1cm4gY2FtbF9ibGFrZTJfZmluYWwoY3R4LCBoYXNobGVuKTtcbn1cblxuLy9Qcm92aWRlczogYmxha2UyX2pzX2Zvcl93YXNtX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9ibGFrZTJfY3JlYXRlLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL0lmOiB3YXNtXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gYmxha2UyX2pzX2Zvcl93YXNtX2NyZWF0ZShoYXNobGVuLCBrZXkpIHtcbiAgY29uc3Qga2V5X2pzb29fc3RyaW5nID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhrZXkpO1xuICByZXR1cm4gY2FtbF9ibGFrZTJfY3JlYXRlKGhhc2hsZW4sIGtleV9qc29vX3N0cmluZyk7XG59XG5cbi8vUHJvdmlkZXM6IGJsYWtlMl9qc19mb3Jfd2FzbV9maW5hbFxuLy9SZXF1aXJlczogY2FtbF9ibGFrZTJfZmluYWwsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbi8vSWY6IHdhc21cbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBibGFrZTJfanNfZm9yX3dhc21fZmluYWwoY3R4LCBoYXNobGVuKSB7XG4gIHJldHVybiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGNhbWxfYmxha2UyX2ZpbmFsKGN0eCwgaGFzaGxlbikpO1xufVxuXG4vL1Byb3ZpZGVzOiBibGFrZTJfanNfZm9yX3dhc21fdXBkYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2JsYWtlMl91cGRhdGUsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vSWY6IHdhc21cbi8vVmVyc2lvbjogPj0gNS4yLCA8IDUuM1xuZnVuY3Rpb24gYmxha2UyX2pzX2Zvcl93YXNtX3VwZGF0ZShjdHgsIGJ1Ziwgb2ZzLCBsZW4pIHtcbiAgY29uc3QgYnVmX2pzb29fc3RyaW5nID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhidWYpO1xuICByZXR1cm4gY2FtbF9ibGFrZTJfdXBkYXRlKGN0eCwgYnVmX2pzb29fc3RyaW5nLCBvZnMsIGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJsYWtlMl9qc19mb3Jfd2FzbV91cGRhdGVcbi8vUmVxdWlyZXM6IGNhbWxfYmxha2UyX3VwZGF0ZSwgY2FtbF9ieXRlc19vZl9qc2J5dGVzXG4vL0lmOiB3YXNtXG4vL1ZlcnNpb246ID49IDUuM1xuZnVuY3Rpb24gYmxha2UyX2pzX2Zvcl93YXNtX3VwZGF0ZShjdHgsIGJ1Ziwgb2ZzLCBsZW4pIHtcbiAgY29uc3QgYnVmX2pzb29fc3RyaW5nID0gY2FtbF9ieXRlc19vZl9qc2J5dGVzKGJ1Zik7XG4gIHJldHVybiBjYW1sX2JsYWtlMl91cGRhdGUoY3R4LCBidWZfanNvb19zdHJpbmcsIG9mcywgbGVuKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX21kNV9jaGFuXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl91aW50OF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSwgY2FtbF9tbF9pbnB1dF9ibG9ja1xuLy9SZXF1aXJlczogY2FtbF9NRDVJbml0LCBjYW1sX01ENVVwZGF0ZSwgY2FtbF9NRDVGaW5hbFxuZnVuY3Rpb24gY2FtbF9tZDVfY2hhbihjaGFuaWQsIHRvcmVhZCkge1xuICB2YXIgY3R4ID0gY2FtbF9NRDVJbml0KCk7XG4gIHZhciBidWZmZXIgPSBuZXcgVWludDhBcnJheSg0MDk2KTtcbiAgaWYgKHRvcmVhZCA8IDApIHtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgdmFyIHJlYWQgPSBjYW1sX21sX2lucHV0X2Jsb2NrKGNoYW5pZCwgYnVmZmVyLCAwLCBidWZmZXIubGVuZ3RoKTtcbiAgICAgIGlmIChyZWFkID09PSAwKSBicmVhaztcbiAgICAgIGNhbWxfTUQ1VXBkYXRlKGN0eCwgYnVmZmVyLnN1YmFycmF5KDAsIHJlYWQpLCByZWFkKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHRvcmVhZCA+IDApIHtcbiAgICAgIHZhciByZWFkID0gY2FtbF9tbF9pbnB1dF9ibG9jayhcbiAgICAgICAgY2hhbmlkLFxuICAgICAgICBidWZmZXIsXG4gICAgICAgIDAsXG4gICAgICAgIHRvcmVhZCA+IGJ1ZmZlci5sZW5ndGggPyBidWZmZXIubGVuZ3RoIDogdG9yZWFkLFxuICAgICAgKTtcbiAgICAgIGlmIChyZWFkID09PSAwKSBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gICAgICBjYW1sX01ENVVwZGF0ZShjdHgsIGJ1ZmZlci5zdWJhcnJheSgwLCByZWFkKSwgcmVhZCk7XG4gICAgICB0b3JlYWQgLT0gcmVhZDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX3VpbnQ4X2FycmF5KGNhbWxfTUQ1RmluYWwoY3R4KSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWQ1X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9zdHJpbmcsIGNhbWxfbWQ1X2J5dGVzXG5mdW5jdGlvbiBjYW1sX21kNV9zdHJpbmcocywgb2ZzLCBsZW4pIHtcbiAgcmV0dXJuIGNhbWxfbWQ1X2J5dGVzKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKHMpLCBvZnMsIGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfTUQ1VHJhbnNmb3JtXG52YXIgY2FtbF9NRDVUcmFuc2Zvcm0gPSAoZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBhZGQoeCwgeSkge1xuICAgIHJldHVybiAoeCArIHkpIHwgMDtcbiAgfVxuICBmdW5jdGlvbiB4eChxLCBhLCBiLCB4LCBzLCB0KSB7XG4gICAgYSA9IGFkZChhZGQoYSwgcSksIGFkZCh4LCB0KSk7XG4gICAgcmV0dXJuIGFkZCgoYSA8PCBzKSB8IChhID4+PiAoMzIgLSBzKSksIGIpO1xuICB9XG4gIGZ1bmN0aW9uIGZmKGEsIGIsIGMsIGQsIHgsIHMsIHQpIHtcbiAgICByZXR1cm4geHgoKGIgJiBjKSB8ICh+YiAmIGQpLCBhLCBiLCB4LCBzLCB0KTtcbiAgfVxuICBmdW5jdGlvbiBnZyhhLCBiLCBjLCBkLCB4LCBzLCB0KSB7XG4gICAgcmV0dXJuIHh4KChiICYgZCkgfCAoYyAmIH5kKSwgYSwgYiwgeCwgcywgdCk7XG4gIH1cbiAgZnVuY3Rpb24gaGgoYSwgYiwgYywgZCwgeCwgcywgdCkge1xuICAgIHJldHVybiB4eChiIF4gYyBeIGQsIGEsIGIsIHgsIHMsIHQpO1xuICB9XG4gIGZ1bmN0aW9uIGlpKGEsIGIsIGMsIGQsIHgsIHMsIHQpIHtcbiAgICByZXR1cm4geHgoYyBeIChiIHwgfmQpLCBhLCBiLCB4LCBzLCB0KTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAodywgYnVmZmVyKSB7XG4gICAgdmFyIGEgPSB3WzBdLFxuICAgICAgYiA9IHdbMV0sXG4gICAgICBjID0gd1syXSxcbiAgICAgIGQgPSB3WzNdO1xuXG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlclswXSwgNywgMHhkNzZhYTQ3OCk7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlclsxXSwgMTIsIDB4ZThjN2I3NTYpO1xuICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbMl0sIDE3LCAweDI0MjA3MGRiKTtcbiAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyWzNdLCAyMiwgMHhjMWJkY2VlZSk7XG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlcls0XSwgNywgMHhmNTdjMGZhZik7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlcls1XSwgMTIsIDB4NDc4N2M2MmEpO1xuICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbNl0sIDE3LCAweGE4MzA0NjEzKTtcbiAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyWzddLCAyMiwgMHhmZDQ2OTUwMSk7XG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlcls4XSwgNywgMHg2OTgwOThkOCk7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlcls5XSwgMTIsIDB4OGI0NGY3YWYpO1xuICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbMTBdLCAxNywgMHhmZmZmNWJiMSk7XG4gICAgYiA9IGZmKGIsIGMsIGQsIGEsIGJ1ZmZlclsxMV0sIDIyLCAweDg5NWNkN2JlKTtcbiAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyWzEyXSwgNywgMHg2YjkwMTEyMik7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlclsxM10sIDEyLCAweGZkOTg3MTkzKTtcbiAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyWzE0XSwgMTcsIDB4YTY3OTQzOGUpO1xuICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbMTVdLCAyMiwgMHg0OWI0MDgyMSk7XG5cbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWzFdLCA1LCAweGY2MWUyNTYyKTtcbiAgICBkID0gZ2coZCwgYSwgYiwgYywgYnVmZmVyWzZdLCA5LCAweGMwNDBiMzQwKTtcbiAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyWzExXSwgMTQsIDB4MjY1ZTVhNTEpO1xuICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbMF0sIDIwLCAweGU5YjZjN2FhKTtcbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWzVdLCA1LCAweGQ2MmYxMDVkKTtcbiAgICBkID0gZ2coZCwgYSwgYiwgYywgYnVmZmVyWzEwXSwgOSwgMHgwMjQ0MTQ1Myk7XG4gICAgYyA9IGdnKGMsIGQsIGEsIGIsIGJ1ZmZlclsxNV0sIDE0LCAweGQ4YTFlNjgxKTtcbiAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyWzRdLCAyMCwgMHhlN2QzZmJjOCk7XG4gICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlcls5XSwgNSwgMHgyMWUxY2RlNik7XG4gICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlclsxNF0sIDksIDB4YzMzNzA3ZDYpO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbM10sIDE0LCAweGY0ZDUwZDg3KTtcbiAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyWzhdLCAyMCwgMHg0NTVhMTRlZCk7XG4gICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlclsxM10sIDUsIDB4YTllM2U5MDUpO1xuICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbMl0sIDksIDB4ZmNlZmEzZjgpO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbN10sIDE0LCAweDY3NmYwMmQ5KTtcbiAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyWzEyXSwgMjAsIDB4OGQyYTRjOGEpO1xuXG4gICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlcls1XSwgNCwgMHhmZmZhMzk0Mik7XG4gICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlcls4XSwgMTEsIDB4ODc3MWY2ODEpO1xuICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbMTFdLCAxNiwgMHg2ZDlkNjEyMik7XG4gICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlclsxNF0sIDIzLCAweGZkZTUzODBjKTtcbiAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyWzFdLCA0LCAweGE0YmVlYTQ0KTtcbiAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyWzRdLCAxMSwgMHg0YmRlY2ZhOSk7XG4gICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlcls3XSwgMTYsIDB4ZjZiYjRiNjApO1xuICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbMTBdLCAyMywgMHhiZWJmYmM3MCk7XG4gICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlclsxM10sIDQsIDB4Mjg5YjdlYzYpO1xuICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbMF0sIDExLCAweGVhYTEyN2ZhKTtcbiAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyWzNdLCAxNiwgMHhkNGVmMzA4NSk7XG4gICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlcls2XSwgMjMsIDB4MDQ4ODFkMDUpO1xuICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbOV0sIDQsIDB4ZDlkNGQwMzkpO1xuICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbMTJdLCAxMSwgMHhlNmRiOTllNSk7XG4gICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlclsxNV0sIDE2LCAweDFmYTI3Y2Y4KTtcbiAgICBiID0gaGgoYiwgYywgZCwgYSwgYnVmZmVyWzJdLCAyMywgMHhjNGFjNTY2NSk7XG5cbiAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyWzBdLCA2LCAweGY0MjkyMjQ0KTtcbiAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyWzddLCAxMCwgMHg0MzJhZmY5Nyk7XG4gICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlclsxNF0sIDE1LCAweGFiOTQyM2E3KTtcbiAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyWzVdLCAyMSwgMHhmYzkzYTAzOSk7XG4gICAgYSA9IGlpKGEsIGIsIGMsIGQsIGJ1ZmZlclsxMl0sIDYsIDB4NjU1YjU5YzMpO1xuICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbM10sIDEwLCAweDhmMGNjYzkyKTtcbiAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyWzEwXSwgMTUsIDB4ZmZlZmY0N2QpO1xuICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbMV0sIDIxLCAweDg1ODQ1ZGQxKTtcbiAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyWzhdLCA2LCAweDZmYTg3ZTRmKTtcbiAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyWzE1XSwgMTAsIDB4ZmUyY2U2ZTApO1xuICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbNl0sIDE1LCAweGEzMDE0MzE0KTtcbiAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyWzEzXSwgMjEsIDB4NGUwODExYTEpO1xuICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbNF0sIDYsIDB4Zjc1MzdlODIpO1xuICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbMTFdLCAxMCwgMHhiZDNhZjIzNSk7XG4gICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlclsyXSwgMTUsIDB4MmFkN2QyYmIpO1xuICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbOV0sIDIxLCAweGViODZkMzkxKTtcblxuICAgIHdbMF0gPSBhZGQoYSwgd1swXSk7XG4gICAgd1sxXSA9IGFkZChiLCB3WzFdKTtcbiAgICB3WzJdID0gYWRkKGMsIHdbMl0pO1xuICAgIHdbM10gPSBhZGQoZCwgd1szXSk7XG4gIH07XG59KSgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX01ENUluaXRcbmZ1bmN0aW9uIGNhbWxfTUQ1SW5pdCgpIHtcbiAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcig2NCk7XG4gIHZhciBiMzIgPSBuZXcgVWludDMyQXJyYXkoYnVmZmVyKTtcbiAgdmFyIGI4ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTtcbiAgcmV0dXJuIHtcbiAgICBsZW46IDAsXG4gICAgdzogbmV3IFVpbnQzMkFycmF5KFsweDY3NDUyMzAxLCAweGVmY2RhYjg5LCAweDk4YmFkY2ZlLCAweDEwMzI1NDc2XSksXG4gICAgYjMyOiBiMzIsXG4gICAgYjg6IGI4LFxuICB9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX01ENVVwZGF0ZVxuLy9SZXF1aXJlczogY2FtbF9NRDVUcmFuc2Zvcm1cbmZ1bmN0aW9uIGNhbWxfTUQ1VXBkYXRlKGN0eCwgaW5wdXQsIGlucHV0X2xlbikge1xuICB2YXIgaW5fYnVmID0gY3R4LmxlbiAmIDB4M2Y7XG4gIHZhciBpbnB1dF9wb3MgPSAwO1xuICBjdHgubGVuICs9IGlucHV0X2xlbjtcbiAgaWYgKGluX2J1Zikge1xuICAgIHZhciBtaXNzaW5nID0gNjQgLSBpbl9idWY7XG4gICAgaWYgKGlucHV0X2xlbiA8IG1pc3NpbmcpIHtcbiAgICAgIGN0eC5iOC5zZXQoaW5wdXQuc3ViYXJyYXkoMCwgaW5wdXRfbGVuKSwgaW5fYnVmKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY3R4LmI4LnNldChpbnB1dC5zdWJhcnJheSgwLCBtaXNzaW5nKSwgaW5fYnVmKTtcbiAgICBjYW1sX01ENVRyYW5zZm9ybShjdHgudywgY3R4LmIzMik7XG4gICAgaW5wdXRfbGVuIC09IG1pc3Npbmc7XG4gICAgaW5wdXRfcG9zICs9IG1pc3Npbmc7XG4gIH1cbiAgd2hpbGUgKGlucHV0X2xlbiA+PSA2NCkge1xuICAgIGN0eC5iOC5zZXQoaW5wdXQuc3ViYXJyYXkoaW5wdXRfcG9zLCBpbnB1dF9wb3MgKyA2NCksIDApO1xuICAgIGNhbWxfTUQ1VHJhbnNmb3JtKGN0eC53LCBjdHguYjMyKTtcbiAgICBpbnB1dF9sZW4gLT0gNjQ7XG4gICAgaW5wdXRfcG9zICs9IDY0O1xuICB9XG4gIGlmIChpbnB1dF9sZW4pXG4gICAgY3R4LmI4LnNldChpbnB1dC5zdWJhcnJheShpbnB1dF9wb3MsIGlucHV0X3BvcyArIGlucHV0X2xlbiksIDApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX01ENUZpbmFsXG4vL1JlcXVpcmVzOiBjYW1sX01ENVRyYW5zZm9ybVxuZnVuY3Rpb24gY2FtbF9NRDVGaW5hbChjdHgpIHtcbiAgdmFyIGluX2J1ZiA9IGN0eC5sZW4gJiAweDNmO1xuICBjdHguYjhbaW5fYnVmXSA9IDB4ODA7XG4gIGluX2J1ZisrO1xuICBpZiAoaW5fYnVmID4gNTYpIHtcbiAgICBmb3IgKHZhciBqID0gaW5fYnVmOyBqIDwgNjQ7IGorKykge1xuICAgICAgY3R4LmI4W2pdID0gMDtcbiAgICB9XG4gICAgY2FtbF9NRDVUcmFuc2Zvcm0oY3R4LncsIGN0eC5iMzIpO1xuICAgIGZvciAodmFyIGogPSAwOyBqIDwgNTY7IGorKykge1xuICAgICAgY3R4LmI4W2pdID0gMDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaiA9IGluX2J1ZjsgaiA8IDU2OyBqKyspIHtcbiAgICAgIGN0eC5iOFtqXSA9IDA7XG4gICAgfVxuICB9XG4gIGN0eC5iMzJbMTRdID0gY3R4LmxlbiA8PCAzO1xuICBjdHguYjMyWzE1XSA9IChjdHgubGVuID4+IDI5KSAmIDB4MWZmZmZmZmY7XG4gIGNhbWxfTUQ1VHJhbnNmb3JtKGN0eC53LCBjdHguYjMyKTtcbiAgdmFyIHQgPSBuZXcgVWludDhBcnJheSgxNik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKVxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgNDsgaisrKSB0W2kgKiA0ICsgal0gPSAoY3R4LndbaV0gPj4gKDggKiBqKSkgJiAweGZmO1xuICByZXR1cm4gdDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZDVfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMsIGNhbWxfc3RyaW5nX29mX3VpbnQ4X2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX01ENUluaXQsIGNhbWxfTUQ1VXBkYXRlLCBjYW1sX01ENUZpbmFsXG5mdW5jdGlvbiBjYW1sX21kNV9ieXRlcyhzLCBvZnMsIGxlbikge1xuICB2YXIgY3R4ID0gY2FtbF9NRDVJbml0KCk7XG4gIHZhciBhID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhzKTtcbiAgY2FtbF9NRDVVcGRhdGUoY3R4LCBhLnN1YmFycmF5KG9mcywgb2ZzICsgbGVuKSwgbGVuKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX3VpbnQ4X2FycmF5KGNhbWxfTUQ1RmluYWwoY3R4KSk7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczoganNvb19kYXRhdmlld1xudmFyIGpzb29fZGF0YXZpZXcgPSBuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDgpKTtcblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaVxuLy9SZXF1aXJlczoganNvb19kYXRhdmlld1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KHgpIHtcbiAganNvb19kYXRhdmlldy5zZXRGbG9hdDY0KDAsIHgsIHRydWUpO1xuICB2YXIgbG8zMiA9IGpzb29fZGF0YXZpZXcuZ2V0VWludDMyKDAsIHRydWUpO1xuICB2YXIgaGkzMiA9IGpzb29fZGF0YXZpZXcuZ2V0VWludDMyKDQsIHRydWUpO1xuICB2YXIgbG8gPSBsbzMyICYgMHhmZmZmZmY7XG4gIHZhciBtaSA9IChsbzMyID4+PiAyNCkgfCAoKGhpMzIgPDwgOCkgJiAweGZmZmZmZik7XG4gIHZhciBoaSA9IChoaTMyID4+PiAxNikgJiAweGZmZmY7XG4gIC8vIFY4IHVzZXMgc2lnbmFsaW5nIE5hTnMgYXMgc2VudGluZWwuIFNvLCBOYU5zIGFyZSBtYWRlIHF1aWV0IHdoZW5cbiAgLy8gdGhleSBhcmUgc3RvcmVkIGluIGFuIGFycmF5LiBNYWtlIHRoZW0gcXVpZXQgaGVyZSBzbyB0aGF0IHdlIGdldFxuICAvLyBjb25zaXN0ZW50IHJlc3VsdHMuXG4gIGlmICgoaGkgJiAweDdmZjgpID09PSAweDdmZjAgJiYgKG1pIHwgbG8gfCAoaGkgJiAweGYpKSAhPT0gMCkgaGkgfD0gODtcbiAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKGxvLCBtaSwgaGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29fZGF0YXZpZXdcbmZ1bmN0aW9uIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdCh4KSB7XG4gIGpzb29fZGF0YXZpZXcuc2V0RmxvYXQzMigwLCB4LCB0cnVlKTtcbiAgcmV0dXJuIGpzb29fZGF0YXZpZXcuZ2V0VWludDMyKDAsIHRydWUpIHwgMDtcbn1cblxuLy9GUCBsaXRlcmFscyBjYW4gYmUgd3JpdHRlbiB1c2luZyB0aGUgaGV4YWRlY2ltYWxcbi8vbm90YXRpb24gMHg8bWFudGlzc2EgaW4gaGV4PnA8ZXhwb25lbnQ+IGZyb20gSVNPIEM5OS5cbi8vaHR0cHM6Ly9naXRodWIuY29tL2RhbmtvZ2FpL2pzLWhleGZsb2F0L2Jsb2IvbWFzdGVyL2hleGZsb2F0LmpzXG4vL1Byb3ZpZGVzOiBjYW1sX2hleHN0cmluZ19vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcsIGNhbWxfc3RyX3JlcGVhdFxuZnVuY3Rpb24gY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXQoeCwgcHJlYywgc3R5bGUpIHtcbiAgaWYgKCFOdW1iZXIuaXNGaW5pdGUoeCkpIHtcbiAgICBpZiAoTnVtYmVyLmlzTmFOKHgpKSByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoXCJuYW5cIik7XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHggPiAwID8gXCJpbmZpbml0eVwiIDogXCItaW5maW5pdHlcIik7XG4gIH1cbiAgdmFyIHNpZ24gPSB4ID09PSAwICYmIDEgLyB4ID09PSBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkgPyAxIDogeCA+PSAwID8gMCA6IDE7XG4gIGlmIChzaWduKSB4ID0gLXg7XG4gIHZhciBleHAgPSAwO1xuICBpZiAoeCA9PT0gMCkge1xuICB9IGVsc2UgaWYgKHggPCAxKSB7XG4gICAgd2hpbGUgKHggPCAxICYmIGV4cCA+IC0xMDIyKSB7XG4gICAgICB4ICo9IDI7XG4gICAgICBleHAtLTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHggPj0gMikge1xuICAgICAgeCAvPSAyO1xuICAgICAgZXhwKys7XG4gICAgfVxuICB9XG4gIHZhciBleHBfc2lnbiA9IGV4cCA8IDAgPyBcIlwiIDogXCIrXCI7XG4gIHZhciBzaWduX3N0ciA9IFwiXCI7XG4gIGlmIChzaWduKSBzaWduX3N0ciA9IFwiLVwiO1xuICBlbHNlIHtcbiAgICBzd2l0Y2ggKHN0eWxlKSB7XG4gICAgICBjYXNlIDQzIC8qICcrJyAqLzpcbiAgICAgICAgc2lnbl9zdHIgPSBcIitcIjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDMyIC8qICcgJyAqLzpcbiAgICAgICAgc2lnbl9zdHIgPSBcIiBcIjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKHByZWMgPj0gMCAmJiBwcmVjIDwgMTMpIHtcbiAgICAvKiBJZiBhIHByZWNpc2lvbiBpcyBnaXZlbiwgYW5kIGlzIHNtYWxsLCByb3VuZCBtYW50aXNzYSBhY2NvcmRpbmdseSAqL1xuICAgIHZhciBjc3QgPSBNYXRoLnBvdygyLCBwcmVjICogNCk7XG4gICAgeCA9IE1hdGgucm91bmQoeCAqIGNzdCkgLyBjc3Q7XG4gIH1cbiAgdmFyIHhfc3RyID0geC50b1N0cmluZygxNik7XG4gIGlmIChwcmVjID49IDApIHtcbiAgICB2YXIgaWR4ID0geF9zdHIuaW5kZXhPZihcIi5cIik7XG4gICAgaWYgKGlkeCA8IDApIHtcbiAgICAgIHhfc3RyICs9IFwiLlwiICsgY2FtbF9zdHJfcmVwZWF0KHByZWMsIFwiMFwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHNpemUgPSBpZHggKyAxICsgcHJlYztcbiAgICAgIGlmICh4X3N0ci5sZW5ndGggPCBzaXplKVxuICAgICAgICB4X3N0ciArPSBjYW1sX3N0cl9yZXBlYXQoc2l6ZSAtIHhfc3RyLmxlbmd0aCwgXCIwXCIpO1xuICAgICAgZWxzZSB4X3N0ciA9IHhfc3RyLnNsaWNlKDAsIHNpemUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoXG4gICAgc2lnbl9zdHIgKyBcIjB4XCIgKyB4X3N0ciArIFwicFwiICsgZXhwX3NpZ24gKyBleHAudG9TdHJpbmcoMTApLFxuICApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29fZGF0YXZpZXdcbmZ1bmN0aW9uIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyh4KSB7XG4gIHZhciBsbyA9IHgubG87XG4gIHZhciBtaSA9IHgubWk7XG4gIHZhciBoaSA9IHguaGk7XG4gIC8vIFY4IHVzZXMgc2lnbmFsaW5nIE5hTnMgYXMgc2VudGluZWwuIFNvLCBOYU5zIGFyZSBtYWRlIHF1aWV0IHdoZW5cbiAgLy8gdGhleSBhcmUgc3RvcmVkIGluIGFuIGFycmF5LiBNYWtlIHRoZW0gcXVpZXQgaGVyZSBzbyB0aGF0IHdlIGdldFxuICAvLyBjb25zaXN0ZW50IHJlc3VsdHMuXG4gIGlmICgoaGkgJiAweDdmZjgpID09PSAweDdmZjAgJiYgKG1pIHwgbG8gfCAoaGkgJiAweGYpKSAhPT0gMCkgaGkgfD0gODtcbiAganNvb19kYXRhdmlldy5zZXRVaW50MzIoMCwgbG8gfCAobWkgPDwgMjQpLCB0cnVlKTtcbiAganNvb19kYXRhdmlldy5zZXRVaW50MzIoNCwgKG1pID4+PiA4KSB8IChoaSA8PCAxNiksIHRydWUpO1xuICByZXR1cm4ganNvb19kYXRhdmlldy5nZXRGbG9hdDY0KDAsIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25leHRhZnRlcl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzLCBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaW50NjRfYWRkLCBjYW1sX2ludDY0X3N1YixjYW1sX2ludDY0X29mX2ludDMyXG5mdW5jdGlvbiBjYW1sX25leHRhZnRlcl9mbG9hdCh4LCB5KSB7XG4gIGlmIChOdW1iZXIuaXNOYU4oeCkgfHwgTnVtYmVyLmlzTmFOKHkpKSByZXR1cm4gTnVtYmVyLk5hTjtcbiAgaWYgKHggPT09IHkpIHJldHVybiB5O1xuICBpZiAoeCA9PT0gMCkge1xuICAgIGlmICh5IDwgMCkgcmV0dXJuIC1NYXRoLnBvdygyLCAtMTA3NCk7XG4gICAgZWxzZSByZXR1cm4gTWF0aC5wb3coMiwgLTEwNzQpO1xuICB9XG4gIHZhciBiaXRzID0gY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KHgpO1xuICB2YXIgb25lID0gY2FtbF9pbnQ2NF9vZl9pbnQzMigxKTtcbiAgaWYgKHggPCB5ID09PSB4ID4gMCkgYml0cyA9IGNhbWxfaW50NjRfYWRkKGJpdHMsIG9uZSk7XG4gIGVsc2UgYml0cyA9IGNhbWxfaW50NjRfc3ViKGJpdHMsIG9uZSk7XG4gIHJldHVybiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoYml0cyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdHJ1bmNfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfdHJ1bmNfZmxvYXQoeCkge1xuICByZXR1cm4gTWF0aC50cnVuYyh4KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzIGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2RhdGF2aWV3XG5mdW5jdGlvbiBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMoeCkge1xuICBqc29vX2RhdGF2aWV3LnNldFVpbnQzMigwLCB4LCB0cnVlKTtcbiAgcmV0dXJuIGpzb29fZGF0YXZpZXcuZ2V0RmxvYXQzMigwLCB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jbGFzc2lmeV9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9jbGFzc2lmeV9mbG9hdCh4KSB7XG4gIGlmIChOdW1iZXIuaXNGaW5pdGUoeCkpIHtcbiAgICBpZiAoTWF0aC5hYnMoeCkgPj0gMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDgpIHJldHVybiAwO1xuICAgIGlmICh4ICE9PSAwKSByZXR1cm4gMTtcbiAgICByZXR1cm4gMjtcbiAgfVxuICByZXR1cm4gTnVtYmVyLmlzTmFOKHgpID8gNCA6IDM7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX21vZGZfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbW9kZl9mbG9hdCh4KSB7XG4gIGlmIChOdW1iZXIuaXNGaW5pdGUoeCkpIHtcbiAgICB2YXIgbmVnID0gMSAvIHggPCAwO1xuICAgIHggPSBNYXRoLmFicyh4KTtcbiAgICB2YXIgaSA9IE1hdGguZmxvb3IoeCk7XG4gICAgdmFyIGYgPSB4IC0gaTtcbiAgICBpZiAobmVnKSB7XG4gICAgICBpID0gLWk7XG4gICAgICBmID0gLWY7XG4gICAgfVxuICAgIHJldHVybiBbMCwgZiwgaV07XG4gIH1cbiAgaWYgKE51bWJlci5pc05hTih4KSkgcmV0dXJuIFswLCBOdW1iZXIuTmFOLCBOdW1iZXIuTmFOXTtcbiAgcmV0dXJuIFswLCAxIC8geCwgeF07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2xkZXhwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xkZXhwX2Zsb2F0KHgsIGV4cCkge1xuICBleHAgfD0gMDtcbiAgaWYgKGV4cCA+IDEwMjMpIHtcbiAgICBleHAgLT0gMTAyMztcbiAgICB4ICo9IE1hdGgucG93KDIsIDEwMjMpO1xuICAgIGlmIChleHAgPiAxMDIzKSB7XG4gICAgICAvLyBpbiBjYXNlIHggaXMgc3Vibm9ybWFsXG4gICAgICBleHAgLT0gMTAyMztcbiAgICAgIHggKj0gTWF0aC5wb3coMiwgMTAyMyk7XG4gICAgfVxuICB9XG4gIGlmIChleHAgPCAtMTAyMykge1xuICAgIGV4cCArPSAxMDIzO1xuICAgIHggKj0gTWF0aC5wb3coMiwgLTEwMjMpO1xuICB9XG4gIHggKj0gTWF0aC5wb3coMiwgZXhwKTtcbiAgcmV0dXJuIHg7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ZyZXhwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ZyZXhwX2Zsb2F0KHgpIHtcbiAgaWYgKHggPT09IDAgfHwgIU51bWJlci5pc0Zpbml0ZSh4KSkgcmV0dXJuIFswLCB4LCAwXTtcbiAgdmFyIG5lZyA9IHggPCAwO1xuICBpZiAobmVnKSB4ID0gLXg7XG4gIHZhciBleHAgPSBNYXRoLm1heCgtMTAyMywgTWF0aC5mbG9vcihNYXRoLmxvZzIoeCkpICsgMSk7XG4gIHggKj0gTWF0aC5wb3coMiwgLWV4cCk7XG4gIHdoaWxlICh4IDwgMC41KSB7XG4gICAgeCAqPSAyO1xuICAgIGV4cC0tO1xuICB9XG4gIHdoaWxlICh4ID49IDEpIHtcbiAgICB4ICo9IDAuNTtcbiAgICBleHArKztcbiAgfVxuICBpZiAobmVnKSB4ID0gLXg7XG4gIHJldHVybiBbMCwgeCwgZXhwXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdF9jb21wYXJlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2Zsb2F0X2NvbXBhcmUoeCwgeSkge1xuICBpZiAoeCA9PT0geSkgcmV0dXJuIDA7XG4gIGlmICh4IDwgeSkgcmV0dXJuIC0xO1xuICBpZiAoeCA+IHkpIHJldHVybiAxO1xuICBpZiAoIU51bWJlci5pc05hTih4KSkgcmV0dXJuIDE7XG4gIGlmICghTnVtYmVyLmlzTmFOKHkpKSByZXR1cm4gLTE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvcHlzaWduX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NvcHlzaWduX2Zsb2F0KHgsIHkpIHtcbiAgaWYgKHkgPT09IDApIHkgPSAxIC8geTtcbiAgeCA9IE1hdGguYWJzKHgpO1xuICByZXR1cm4geSA8IDAgPyAteCA6IHg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2lnbmJpdF9mbG9hdCBjb25zdFxuLy9BbGlhczogY2FtbF9zaWduYml0XG5mdW5jdGlvbiBjYW1sX3NpZ25iaXRfZmxvYXQoeCkge1xuICBpZiAoeCA9PT0gMCkgeCA9IDEgLyB4O1xuICByZXR1cm4geCA8IDAgPyAxIDogMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9leHBtMV9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9leHBtMV9mbG9hdCh4KSB7XG4gIHJldHVybiBNYXRoLmV4cG0xKHgpO1xufVxuLy9Qcm92aWRlczogY2FtbF9leHAyX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2V4cDJfZmxvYXQoeCkge1xuICByZXR1cm4gTWF0aC5wb3coMiwgeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2xvZzFwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xvZzFwX2Zsb2F0KHgpIHtcbiAgcmV0dXJuIE1hdGgubG9nMXAoeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2xvZzJfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbG9nMl9mbG9hdCh4KSB7XG4gIHJldHVybiBNYXRoLmxvZzIoeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2h5cG90X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2h5cG90X2Zsb2F0KHgsIHkpIHtcbiAgcmV0dXJuIE1hdGguaHlwb3QoeCwgeSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2xvZzEwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xvZzEwX2Zsb2F0KHgpIHtcbiAgcmV0dXJuIE1hdGgubG9nMTAoeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2Nvc2hfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29zaF9mbG9hdCh4KSB7XG4gIHJldHVybiBNYXRoLmNvc2goeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2Fjb3NoX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2Fjb3NoX2Zsb2F0KHgpIHtcbiAgcmV0dXJuIE1hdGguYWNvc2goeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3NpbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc2luaF9mbG9hdCh4KSB7XG4gIHJldHVybiBNYXRoLnNpbmgoeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2FzaW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2FzaW5oX2Zsb2F0KHgpIHtcbiAgcmV0dXJuIE1hdGguYXNpbmgoeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3RhbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfdGFuaF9mbG9hdCh4KSB7XG4gIHJldHVybiBNYXRoLnRhbmgoeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2F0YW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2F0YW5oX2Zsb2F0KHgpIHtcbiAgcmV0dXJuIE1hdGguYXRhbmgoeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3JvdW5kX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3JvdW5kX2Zsb2F0KHgpIHtcbiAgaWYgKHggPj0gMCkge1xuICAgIHZhciB5ID0gTWF0aC5mbG9vcih4KTtcbiAgICByZXR1cm4geCAtIHkgPj0gMC41ID8geSArIDEgOiB5O1xuICB9IGVsc2Uge1xuICAgIHZhciB5ID0gTWF0aC5jZWlsKHgpO1xuICAgIHJldHVybiB5IC0geCA+PSAwLjUgPyB5IC0gMSA6IHk7XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfY2JydF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9jYnJ0X2Zsb2F0KHgpIHtcbiAgcmV0dXJuIE1hdGguY2JydCh4KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcmZfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZXJmX2Zsb2F0KHgpIHtcbiAgdmFyIGExID0gMC4yNTQ4Mjk1OTI7XG4gIHZhciBhMiA9IC0wLjI4NDQ5NjczNjtcbiAgdmFyIGEzID0gMS40MjE0MTM3NDE7XG4gIHZhciBhNCA9IC0xLjQ1MzE1MjAyNztcbiAgdmFyIGE1ID0gMS4wNjE0MDU0Mjk7XG4gIHZhciBwID0gMC4zMjc1OTExO1xuXG4gIHZhciBzaWduID0gMTtcbiAgaWYgKHggPCAwKSB7XG4gICAgc2lnbiA9IC0xO1xuICB9XG4gIHggPSBNYXRoLmFicyh4KTtcbiAgdmFyIHQgPSAxLjAgLyAoMS4wICsgcCAqIHgpO1xuICB2YXIgeSA9XG4gICAgMS4wIC0gKCgoKGE1ICogdCArIGE0KSAqIHQgKyBhMykgKiB0ICsgYTIpICogdCArIGExKSAqIHQgKiBNYXRoLmV4cCgteCAqIHgpO1xuXG4gIHJldHVybiBzaWduICogeTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcmZjX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2VyZl9mbG9hdFxuZnVuY3Rpb24gY2FtbF9lcmZjX2Zsb2F0KHgpIHtcbiAgcmV0dXJuIDEgLSBjYW1sX2VyZl9mbG9hdCh4KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbWFfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZm1hX2Zsb2F0KHgsIHksIHopIHtcbiAgdmFyIFNQTElUID0gTWF0aC5wb3coMiwgMjcpICsgMTtcbiAgdmFyIE1JTl9WQUxVRSA9IE1hdGgucG93KDIsIC0xMDIyKTtcbiAgdmFyIEVQU0lMT04gPSBNYXRoLnBvdygyLCAtNTIpO1xuICB2YXIgQyA9IDQxNjtcbiAgdmFyIEEgPSBNYXRoLnBvdygyLCArQyk7XG4gIHZhciBCID0gTWF0aC5wb3coMiwgLUMpO1xuXG4gIGZ1bmN0aW9uIG11bHRpcGx5KGEsIGIpIHtcbiAgICB2YXIgYXQgPSBTUExJVCAqIGE7XG4gICAgdmFyIGFoaSA9IGF0IC0gKGF0IC0gYSk7XG4gICAgdmFyIGFsbyA9IGEgLSBhaGk7XG4gICAgdmFyIGJ0ID0gU1BMSVQgKiBiO1xuICAgIHZhciBiaGkgPSBidCAtIChidCAtIGIpO1xuICAgIHZhciBibG8gPSBiIC0gYmhpO1xuICAgIHZhciBwID0gYSAqIGI7XG4gICAgdmFyIGUgPSBhaGkgKiBiaGkgLSBwICsgYWhpICogYmxvICsgYWxvICogYmhpICsgYWxvICogYmxvO1xuICAgIHJldHVybiB7XG4gICAgICBwOiBwLFxuICAgICAgZTogZSxcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gYWRkKGEsIGIpIHtcbiAgICB2YXIgcyA9IGEgKyBiO1xuICAgIHZhciB2ID0gcyAtIGE7XG4gICAgdmFyIGUgPSBhIC0gKHMgLSB2KSArIChiIC0gdik7XG4gICAgcmV0dXJuIHtcbiAgICAgIHM6IHMsXG4gICAgICBlOiBlLFxuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiBhZGp1c3QoeCwgeSkge1xuICAgIHJldHVybiB4ICE9PSAwICYmIHkgIT09IDAgJiYgU1BMSVQgKiB4IC0gKFNQTElUICogeCAtIHgpID09PSB4XG4gICAgICA/IHggKiAoMSArICh4IDwgMCA/IC0xIDogKzEpICogKHkgPCAwID8gLTEgOiArMSkgKiBFUFNJTE9OKVxuICAgICAgOiB4O1xuICB9XG5cbiAgaWYgKHggPT09IDAgfHwgeSA9PT0gMCB8fCAhTnVtYmVyLmlzRmluaXRlKHgpIHx8ICFOdW1iZXIuaXNGaW5pdGUoeSkpIHtcbiAgICByZXR1cm4geCAqIHkgKyB6O1xuICB9XG4gIGlmICh6ID09PSAwKSB7XG4gICAgcmV0dXJuIHggKiB5O1xuICB9XG4gIGlmICghTnVtYmVyLmlzRmluaXRlKHopKSB7XG4gICAgcmV0dXJuIHo7XG4gIH1cblxuICB2YXIgc2NhbGUgPSAxO1xuICB3aGlsZSAoTWF0aC5hYnMoeCkgPiBBKSB7XG4gICAgc2NhbGUgKj0gQTtcbiAgICB4ICo9IEI7XG4gIH1cbiAgd2hpbGUgKE1hdGguYWJzKHkpID4gQSkge1xuICAgIHNjYWxlICo9IEE7XG4gICAgeSAqPSBCO1xuICB9XG4gIGlmIChzY2FsZSA9PT0gMSAvIDApIHtcbiAgICByZXR1cm4geCAqIHkgKiBzY2FsZTtcbiAgfVxuICB3aGlsZSAoTWF0aC5hYnMoeCkgPCBCKSB7XG4gICAgc2NhbGUgKj0gQjtcbiAgICB4ICo9IEE7XG4gIH1cbiAgd2hpbGUgKE1hdGguYWJzKHkpIDwgQikge1xuICAgIHNjYWxlICo9IEI7XG4gICAgeSAqPSBBO1xuICB9XG4gIGlmIChzY2FsZSA9PT0gMCkge1xuICAgIHJldHVybiB6O1xuICB9XG5cbiAgdmFyIHhzID0geDtcbiAgdmFyIHlzID0geTtcbiAgdmFyIHpzID0geiAvIHNjYWxlO1xuXG4gIGlmIChNYXRoLmFicyh6cykgPiAoTWF0aC5hYnMoeHMgKiB5cykgKiA0KSAvIEVQU0lMT04pIHtcbiAgICByZXR1cm4gejtcbiAgfVxuICBpZiAoTWF0aC5hYnMoenMpIDwgKCgoTWF0aC5hYnMoeHMgKiB5cykgKiBFUFNJTE9OKSAvIDQpICogRVBTSUxPTikgLyA0KSB7XG4gICAgenMgPSAoeiA8IDAgPyAtMSA6ICsxKSAqIE1JTl9WQUxVRTtcbiAgfVxuXG4gIHZhciB4eSA9IG11bHRpcGx5KHhzLCB5cyk7XG4gIHZhciBzID0gYWRkKHh5LnAsIHpzKTtcbiAgdmFyIHUgPSBhZGQoeHkuZSwgcy5lKTtcbiAgdmFyIGkgPSBhZGQocy5zLCB1LnMpO1xuXG4gIHZhciBmID0gaS5zICsgYWRqdXN0KGkuZSwgdS5lKTtcbiAgaWYgKGYgPT09IDApIHtcbiAgICByZXR1cm4gZjtcbiAgfVxuXG4gIHZhciBmcyA9IGYgKiBzY2FsZTtcbiAgaWYgKE1hdGguYWJzKGZzKSA+IE1JTl9WQUxVRSkge1xuICAgIHJldHVybiBmcztcbiAgfVxuXG4gIC8vIEl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlcmUgd2FzIGV4dHJhIHJvdW5kaW5nIGZvciBhIGRlbm9ybWFsaXplZCB2YWx1ZS5cbiAgcmV0dXJuIGZzICsgYWRqdXN0KGYgLSBmcyAvIHNjYWxlLCBpLmUpICogc2NhbGU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZm9ybWF0X2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cl9yZXBlYXQsIGNhbWxfcGFyc2VfZm9ybWF0LCBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nXG5mdW5jdGlvbiBjYW1sX2Zvcm1hdF9mbG9hdChmbXQsIHgpIHtcbiAgZnVuY3Rpb24gdG9GaXhlZCh4LCBkcCkge1xuICAgIGlmIChNYXRoLmFicyh4KSA8IDEuMCkge1xuICAgICAgcmV0dXJuIHgudG9GaXhlZChkcCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBlID0gTnVtYmVyLnBhcnNlSW50KHgudG9TdHJpbmcoKS5zcGxpdChcIitcIilbMV0pO1xuICAgICAgaWYgKGUgPiAyMCkge1xuICAgICAgICBlIC09IDIwO1xuICAgICAgICB4IC89IE1hdGgucG93KDEwLCBlKTtcbiAgICAgICAgeCArPSBjYW1sX3N0cl9yZXBlYXQoZSwgXCIwXCIpO1xuICAgICAgICBpZiAoZHAgPiAwKSB7XG4gICAgICAgICAgeCA9IHggKyBcIi5cIiArIGNhbWxfc3RyX3JlcGVhdChkcCwgXCIwXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB4O1xuICAgICAgfSBlbHNlIHJldHVybiB4LnRvRml4ZWQoZHApO1xuICAgIH1cbiAgfVxuICB2YXIgcyxcbiAgICBmID0gY2FtbF9wYXJzZV9mb3JtYXQoZm10KTtcbiAgdmFyIHByZWMgPSBmLnByZWMgPCAwID8gNiA6IGYucHJlYztcbiAgaWYgKHggPCAwIHx8ICh4ID09PSAwICYmIDEgLyB4ID09PSBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkpKSB7XG4gICAgZi5zaWduID0gLTE7XG4gICAgeCA9IC14O1xuICB9XG4gIGlmIChOdW1iZXIuaXNOYU4oeCkpIHtcbiAgICBzID0gXCJuYW5cIjtcbiAgICBmLmZpbGxlciA9IFwiIFwiO1xuICB9IGVsc2UgaWYgKCFOdW1iZXIuaXNGaW5pdGUoeCkpIHtcbiAgICBzID0gXCJpbmZcIjtcbiAgICBmLmZpbGxlciA9IFwiIFwiO1xuICB9IGVsc2VcbiAgICBzd2l0Y2ggKGYuY29udikge1xuICAgICAgY2FzZSBcImVcIjpcbiAgICAgICAgdmFyIHMgPSB4LnRvRXhwb25lbnRpYWwocHJlYyk7XG4gICAgICAgIC8vIGV4cG9uZW50IHNob3VsZCBiZSBhdCBsZWFzdCB0d28gZGlnaXRzXG4gICAgICAgIHZhciBpID0gcy5sZW5ndGg7XG4gICAgICAgIGlmIChzLmNoYXJBdChpIC0gMykgPT09IFwiZVwiKVxuICAgICAgICAgIHMgPSBzLnNsaWNlKDAsIGkgLSAxKSArIFwiMFwiICsgcy5zbGljZShpIC0gMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImZcIjpcbiAgICAgICAgcyA9IHRvRml4ZWQoeCwgcHJlYyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImdcIjpcbiAgICAgICAgcHJlYyA9IHByZWMgPyBwcmVjIDogMTtcbiAgICAgICAgcyA9IHgudG9FeHBvbmVudGlhbChwcmVjIC0gMSk7XG4gICAgICAgIHZhciBqID0gcy5pbmRleE9mKFwiZVwiKTtcbiAgICAgICAgdmFyIGV4cCA9ICtzLnNsaWNlKGogKyAxKTtcbiAgICAgICAgaWYgKGV4cCA8IC00IHx8IHggPj0gMWUyMSB8fCB4LnRvRml4ZWQoMCkubGVuZ3RoID4gcHJlYykge1xuICAgICAgICAgIC8vIHJlbW92ZSB0cmFpbGluZyB6ZXJvZXNcbiAgICAgICAgICB2YXIgaSA9IGogLSAxO1xuICAgICAgICAgIHdoaWxlIChzLmNoYXJBdChpKSA9PT0gXCIwXCIpIGktLTtcbiAgICAgICAgICBpZiAocy5jaGFyQXQoaSkgPT09IFwiLlwiKSBpLS07XG4gICAgICAgICAgcyA9IHMuc2xpY2UoMCwgaSArIDEpICsgcy5zbGljZShqKTtcbiAgICAgICAgICBpID0gcy5sZW5ndGg7XG4gICAgICAgICAgaWYgKHMuY2hhckF0KGkgLSAzKSA9PT0gXCJlXCIpXG4gICAgICAgICAgICBzID0gcy5zbGljZSgwLCBpIC0gMSkgKyBcIjBcIiArIHMuc2xpY2UoaSAtIDEpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBwID0gcHJlYztcbiAgICAgICAgICBpZiAoZXhwIDwgMCkge1xuICAgICAgICAgICAgcCAtPSBleHAgKyAxO1xuICAgICAgICAgICAgcyA9IHgudG9GaXhlZChwKTtcbiAgICAgICAgICB9IGVsc2Ugd2hpbGUgKCgocyA9IHgudG9GaXhlZChwKSksIHMubGVuZ3RoID4gcHJlYyArIDEpKSBwLS07XG4gICAgICAgICAgaWYgKHApIHtcbiAgICAgICAgICAgIC8vIHJlbW92ZSB0cmFpbGluZyB6ZXJvZXNcbiAgICAgICAgICAgIHZhciBpID0gcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgd2hpbGUgKHMuY2hhckF0KGkpID09PSBcIjBcIikgaS0tO1xuICAgICAgICAgICAgaWYgKHMuY2hhckF0KGkpID09PSBcIi5cIikgaS0tO1xuICAgICAgICAgICAgcyA9IHMuc2xpY2UoMCwgaSArIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICB9XG4gIHJldHVybiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nKGYsIHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0X29mX3N0cmluZyAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2Zsb2F0X29mX3N0cmluZyhzKSB7XG4gIHZhciByZXM7XG4gIHZhciByX2Zsb2F0ID0gL14gKlstK10/KD86XFxkKlxcLj9cXGQrfFxcZCtcXC4/XFxkKikoPzpbZUVdWy0rXT9cXGQrKT8kLztcbiAgcyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocyk7XG4gIHJlcyA9ICtzO1xuICAvL0Zhc3QgcGF0aFxuICBpZiAoIU51bWJlci5pc05hTihyZXMpICYmIHJfZmxvYXQudGVzdChzKSkgcmV0dXJuIHJlcztcbiAgcyA9IHMucmVwbGFjZSgvXy9nLCBcIlwiKTtcbiAgcmVzID0gK3M7XG4gIGlmICgoIU51bWJlci5pc05hTihyZXMpICYmIHJfZmxvYXQudGVzdChzKSkgfHwgL15bKy1dP25hbiQvaS50ZXN0KHMpKVxuICAgIHJldHVybiByZXM7XG4gIHZhciBtID0gL14gKihbKy1dPykweChbMC05YS1mXSspXFwuPyhbMC05YS1mXSopKHAoWystXT9bMC05XSspKT8kL2kuZXhlYyhzKTtcbiAgLy8gICAgICAgICAgMSAgICAgICAgMiAgICAgICAgICAgICAzICAgICAgICAgICA1XG4gIGlmIChtKSB7XG4gICAgdmFyIG0zID0gbVszXS5yZXBsYWNlKC8wKyQvLCBcIlwiKTtcbiAgICB2YXIgbWFudGlzc2EgPSBOdW1iZXIucGFyc2VJbnQobVsxXSArIG1bMl0gKyBtMywgMTYpO1xuICAgIHZhciBleHBvbmVudCA9ICgrbVs1XSB8fCAwKSAtIDQgKiBtMy5sZW5ndGg7XG4gICAgcmVzID0gbWFudGlzc2EgKiBNYXRoLnBvdygyLCBleHBvbmVudCk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuICBpZiAoL15cXCs/aW5mKGluaXR5KT8kL2kudGVzdChzKSkgcmV0dXJuIE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgaWYgKC9eLWluZihpbml0eSk/JC9pLnRlc3QocykpIHJldHVybiBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7XG4gIGNhbWxfZmFpbHdpdGgoXCJmbG9hdF9vZl9zdHJpbmdcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VwZGF0ZV9kdW1teVxuZnVuY3Rpb24gY2FtbF91cGRhdGVfZHVtbXkoeCwgeSkge1xuICBpZiAoeS5mdW4pIHtcbiAgICB4LmZ1biA9IHkuZnVuO1xuICAgIHJldHVybiAwO1xuICB9XG4gIGlmICh0eXBlb2YgeSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgeC5mdW4gPSB5O1xuICAgIHJldHVybiAwO1xuICB9XG4gIHZhciBpID0geS5sZW5ndGg7XG4gIHdoaWxlIChpLS0pIHhbaV0gPSB5W2ldO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hbGxvY19kdW1teV9pbmZpeFxuLy9SZXF1aXJlczogY2FtbF9jYWxsX2dlblxuLy9WZXJzaW9uOiA8IDUuNFxuZnVuY3Rpb24gY2FtbF9hbGxvY19kdW1teV9pbmZpeCgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGYoeCkge1xuICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYuZnVuLCBbeF0pO1xuICB9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FsbG9jX2R1bW15X2xhenlcbi8vVmVyc2lvbjogPj0gNS40XG5mdW5jdGlvbiBjYW1sX2FsbG9jX2R1bW15X2xhenkoX3VuaXQpIHtcbiAgcmV0dXJuIFswLCAwXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91cGRhdGVfZHVtbXlfbGF6eVxuLy9SZXF1aXJlczogY2FtbF9vYmpfdGFnXG4vL1JlcXVpcmVzOiBjYW1sX3VwZGF0ZV9kdW1teVxuLy9WZXJzaW9uOiA+PSA1LjRcbmZ1bmN0aW9uIGNhbWxfdXBkYXRlX2R1bW15X2xhenkoZHVtbXksIG5ld3ZhbCkge1xuICBzd2l0Y2ggKGNhbWxfb2JqX3RhZyhuZXd2YWwpKSB7XG4gICAgY2FzZSAyNDY6IC8vIExhenlcbiAgICBjYXNlIDI0NDogLy8gRm9yY2luZ1xuICAgIGNhc2UgMjUwOiAvLyBGb3J3YXJkXG4gICAgICBjYW1sX3VwZGF0ZV9kdW1teShkdW1teSwgbmV3dmFsKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBkdW1teVsxXSA9IG5ld3ZhbDtcbiAgICAgIGR1bW15WzBdID0gMjUwO1xuICAgICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3RhZ1xuLy9SZXF1aXJlczogY2FtbF9pc19tbF9ieXRlcywgY2FtbF9pc19tbF9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfb2JqX3RhZyh4KSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHgpICYmIHhbMF0gPT09IHhbMF0gPj4+IDApIHJldHVybiB4WzBdO1xuICBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKHgpKSByZXR1cm4gMjUyO1xuICBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyh4KSkgcmV0dXJuIDI1MjtcbiAgZWxzZSBpZiAoeCBpbnN0YW5jZW9mIEZ1bmN0aW9uIHx8IHR5cGVvZiB4ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiAyNDc7XG4gIGVsc2UgaWYgKHg/LmNhbWxfY3VzdG9tKSByZXR1cm4gMjU1O1xuICBlbHNlIHJldHVybiAxMDAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9zZXRfdGFnIChtdXRhYmxlLCBjb25zdClcbi8vVmVyc2lvbjogPCA1LjBcbmZ1bmN0aW9uIGNhbWxfb2JqX3NldF90YWcoeCwgdGFnKSB7XG4gIHhbMF0gPSB0YWc7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9vYmpfYmxvY2sgY29uc3QgKGNvbnN0LGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9vYmpfYmxvY2sodGFnLCBzaXplKSB7XG4gIC8vIFRPRE86IGZhaWwgZm9yIHZhbHVlIHRoYXQgYXJlIG5vdCByZXByZXNlbnRlZCBhcyBhbiBhcnJheVxuICB2YXIgbyA9IG5ldyBBcnJheShzaXplICsgMSk7XG4gIG9bMF0gPSB0YWc7XG4gIGZvciAodmFyIGkgPSAxOyBpIDw9IHNpemU7IGkrKykgb1tpXSA9IDA7XG4gIHJldHVybiBvO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial93aXRoX3RhZ1xuZnVuY3Rpb24gY2FtbF9vYmpfd2l0aF90YWcodGFnLCB4KSB7XG4gIHZhciBsID0geC5sZW5ndGg7XG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBhWzBdID0gdGFnO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGw7IGkrKykgYVtpXSA9IHhbaV07XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9kdXAgbXV0YWJsZSAobXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfb2JqX2R1cCh4KSB7XG4gIHJldHVybiB0eXBlb2YgeCA9PT0gXCJudW1iZXJcIiA/IHggOiB4LnNsaWNlKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3RydW5jYXRlIChtdXRhYmxlLCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9WZXJzaW9uOiA8IDUuMFxuZnVuY3Rpb24gY2FtbF9vYmpfdHJ1bmNhdGUoeCwgcykge1xuICBpZiAocyA8PSAwIHx8IHMgKyAxID4geC5sZW5ndGgpIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIk9iai50cnVuY2F0ZVwiKTtcbiAgaWYgKHgubGVuZ3RoICE9PSBzICsgMSkgeC5sZW5ndGggPSBzICsgMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX21ha2VfZm9yd2FyZFxuLy9WZXJzaW9uOiA8IDUuMFxuZnVuY3Rpb24gY2FtbF9vYmpfbWFrZV9mb3J3YXJkKGIsIHYpIHtcbiAgYlswXSA9IDI1MDtcbiAgYlsxXSA9IHY7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9jb21wYXJlX2FuZF9zd2FwXG4vL1ZlcnNpb246ID49IDUuMFxuZnVuY3Rpb24gY2FtbF9vYmpfY29tcGFyZV9hbmRfc3dhcCh4LCBpLCBvbGQsIG4pIHtcbiAgaWYgKHhbaSArIDFdID09PSBvbGQpIHtcbiAgICB4W2kgKyAxXSA9IG47XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2lzX3NoYXJlZFxuLy9WZXJzaW9uOiA+PSA1LjBcbmZ1bmN0aW9uIGNhbWxfb2JqX2lzX3NoYXJlZChfeCkge1xuICByZXR1cm4gMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X21ha2VfZm9yd2FyZCBjb25zdCAobXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfbGF6eV9tYWtlX2ZvcndhcmQodikge1xuICByZXR1cm4gWzI1MCwgdl07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWV0aG9kX2NhY2hlXG52YXIgY2FtbF9tZXRob2RfY2FjaGUgPSBbXTtcblxuLy9Qcm92aWRlczogY2FtbF9vb19jYWNoZV9pZCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9tZXRob2RfY2FjaGVcbmZ1bmN0aW9uIGNhbWxfb29fY2FjaGVfaWQoKSB7XG4gIHZhciBjYWNoZWlkID0gY2FtbF9tZXRob2RfY2FjaGUubGVuZ3RoO1xuICBjYW1sX21ldGhvZF9jYWNoZVtjYWNoZWlkXSA9IDA7XG4gIGNhY2hlaWQ7XG59XG5cbi8vLy8vLy8vLy8vLy8gQ2FtbGludGVybmFsT09cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2NhY2hlZF9tZXRob2QgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfbWV0aG9kX2NhY2hlXG5mdW5jdGlvbiBjYW1sX2dldF9jYWNoZWRfbWV0aG9kKG9iaiwgdGFnLCBjYWNoZWlkKSB7XG4gIHZhciBtZXRocyA9IG9ialsxXTtcbiAgdmFyIG9mcyA9IGNhbWxfbWV0aG9kX2NhY2hlW2NhY2hlaWRdO1xuICBpZiAobWV0aHNbb2ZzICsgNF0gPT09IHRhZykge1xuICAgIHJldHVybiBtZXRoc1tvZnMgKyAzXTtcbiAgfVxuICB2YXIgbGkgPSAzLFxuICAgIGhpID0gbWV0aHNbMV0gKiAyICsgMSxcbiAgICBtaTtcbiAgd2hpbGUgKGxpIDwgaGkpIHtcbiAgICBtaSA9ICgobGkgKyBoaSkgPj4gMSkgfCAxO1xuICAgIGlmICh0YWcgPCBtZXRoc1ttaSArIDFdKSBoaSA9IG1pIC0gMjtcbiAgICBlbHNlIGxpID0gbWk7XG4gIH1cbiAgY2FtbF9tZXRob2RfY2FjaGVbY2FjaGVpZF0gPSBsaSAtIDM7XG4gIHJldHVybiBtZXRoc1tsaV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X3B1YmxpY19tZXRob2QgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZ2V0X3B1YmxpY19tZXRob2Qob2JqLCB0YWcpIHtcbiAgdmFyIG1ldGhzID0gb2JqWzFdO1xuICB2YXIgbGkgPSAzLFxuICAgIGhpID0gbWV0aHNbMV0gKiAyICsgMSxcbiAgICBtaTtcbiAgd2hpbGUgKGxpIDwgaGkpIHtcbiAgICBtaSA9ICgobGkgKyBoaSkgPj4gMSkgfCAxO1xuICAgIGlmICh0YWcgPCBtZXRoc1ttaSArIDFdKSBoaSA9IG1pIC0gMjtcbiAgICBlbHNlIGxpID0gbWk7XG4gIH1cbiAgLyogcmV0dXJuIDAgaWYgdGFnIGlzIG5vdCB0aGVyZSAqL1xuICByZXR1cm4gdGFnID09PSBtZXRoc1tsaSArIDFdID8gbWV0aHNbbGldIDogMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vb19sYXN0X2lkXG52YXIgY2FtbF9vb19sYXN0X2lkID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9zZXRfb29faWRcbi8vUmVxdWlyZXM6IGNhbWxfb29fbGFzdF9pZFxuZnVuY3Rpb24gY2FtbF9zZXRfb29faWQoYikge1xuICBiWzJdID0gY2FtbF9vb19sYXN0X2lkKys7XG4gIHJldHVybiBiO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZyZXNoX29vX2lkIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX29vX2xhc3RfaWRcbmZ1bmN0aW9uIGNhbWxfZnJlc2hfb29faWQoKSB7XG4gIHJldHVybiBjYW1sX29vX2xhc3RfaWQrKztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfcmF3X2ZpZWxkXG5mdW5jdGlvbiBjYW1sX29ial9yYXdfZmllbGQobywgaSkge1xuICByZXR1cm4gb1tpICsgMV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3NldF9yYXdfZmllbGRcbmZ1bmN0aW9uIGNhbWxfb2JqX3NldF9yYXdfZmllbGQobywgaSwgdikge1xuICByZXR1cm4gKG9baSArIDFdID0gdik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3JlYWNoYWJsZV93b3Jkc1xuZnVuY3Rpb24gY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzKF9vKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9hZGRfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX29ial9hZGRfb2Zmc2V0KF92LCBfb2Zmc2V0KSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJPYmouYWRkX29mZnNldCBpcyBub3Qgc3VwcG9ydGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial91cGRhdGVfdGFnXG4vL1ZlcnNpb246ID49IDUuMFxuZnVuY3Rpb24gY2FtbF9vYmpfdXBkYXRlX3RhZyhiLCBvLCBuKSB7XG4gIGlmIChiWzBdID09PSBvKSB7XG4gICAgYlswXSA9IG47XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yY2luZ1xuLy9SZXF1aXJlczogY2FtbF9vYmpfdXBkYXRlX3RhZ1xuLy9WZXJzaW9uOiA+PSA1LjBcbmZ1bmN0aW9uIGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yY2luZyhvKSB7XG4gIGlmIChcbiAgICBBcnJheS5pc0FycmF5KG8pICYmXG4gICAgb1swXSA9PT0gb1swXSA+Pj4gMCAmJlxuICAgIGNhbWxfb2JqX3VwZGF0ZV90YWcobywgMjQ2LCAyNDQpXG4gICkge1xuICAgIHJldHVybiAwO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAxO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yd2FyZFxuLy9SZXF1aXJlczogY2FtbF9vYmpfdXBkYXRlX3RhZ1xuLy9WZXJzaW9uOiA+PSA1LjBcbmZ1bmN0aW9uIGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yd2FyZChvKSB7XG4gIGNhbWxfb2JqX3VwZGF0ZV90YWcobywgMjQ0LCAyNTApO1xuICByZXR1cm4gMDsgLy8gdW5pdFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfcmVzZXRfdG9fbGF6eVxuLy9SZXF1aXJlczogY2FtbF9vYmpfdXBkYXRlX3RhZ1xuLy9WZXJzaW9uOiA+PSA1LjBcbmZ1bmN0aW9uIGNhbWxfbGF6eV9yZXNldF90b19sYXp5KG8pIHtcbiAgY2FtbF9vYmpfdXBkYXRlX3RhZyhvLCAyNDQsIDI0Nik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfcmVhZF9yZXN1bHRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX3RhZ1xuLy9WZXJzaW9uOiA+PSA1LjBcbmZ1bmN0aW9uIGNhbWxfbGF6eV9yZWFkX3Jlc3VsdChvKSB7XG4gIHJldHVybiBjYW1sX29ial90YWcobykgPT09IDI1MCA/IG9bMV0gOiBvO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWdcbi8vVmVyc2lvbjogPCA1XG5mdW5jdGlvbiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcoX3QpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xuLy9WZXJzaW9uOiA+PSA1XG5mdW5jdGlvbiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodCkge1xuICByZXR1cm4gdCA9PT0gMjQ1ID8gMSA6IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3VzdG9tX2lkZW50aWZpZXJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2N1c3RvbV9pZGVudGlmaWVyKG8pIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKG8uY2FtbF9jdXN0b20gfHwgXCJcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZ2NfcmFtcF91cFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuLy9WZXJzaW9uOiA+PSA1LjRcbmZ1bmN0aW9uIGNhbWxfbWxfZ2NfcmFtcF91cChmKSB7XG4gIHZhciBhID0gY2FtbF9jYWxsYmFjayhmLCBbMF0pO1xuICB2YXIgc3VzcGVuZGVkID0gMDtcbiAgcmV0dXJuIFswLCBhLCBzdXNwZW5kZWRdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2djX3JhbXBfZG93blxuLy9WZXJzaW9uOiA+PSA1LjRcbmZ1bmN0aW9uIGNhbWxfbWxfZ2NfcmFtcF9kb3duKF9zdXNwZW5kZWRfY29sbGVjdGlvbl93b3JrKSB7XG4gIHJldHVybiAwO1xufVxuIiwiLypcblRvIGRlYWwgd2l0aCBlZmZlY3RzLCB0aGUgZXhlY3V0aW9uIGNvbnRleHQgaXMgaW50dWl0aXZlbHkgY29tcG9zZWQgb2ZcbmEgc3RhY2sgb2YgZmliZXJzLiBFYWNoIGZpYmVyIGhhcyBhIGN1cnJlbnQgbG93LWxldmVsIGNvbnRpbnVhdGlvblxuKG9uZS1hcmd1bWVudCBKYXZhU2NyaXB0IGZ1bmN0aW9uKSwgYSBzdGFjayBvZiBleGNlcHRpb24gaGFuZGxlcnMgYW5kXG5hIHRyaXBsZSBvZiBoYW5kbGVycywgd2hpY2ggYXJlIGludm9rZWQgd2hlbiB0aGUgZmliZXIgdGVybWluYXRlc1xuKGVpdGhlciB3aXRoIGEgdmFsdWUgb3IgYW4gZXhjZXB0aW9uKSBvciB3aGVuIGFuIGVmZmVjdCBpcyBwZXJmb3JtZWQuXG5UaGUgbG93LWxldmVsIGNvbnRpbnVhdGlvbiBvZiB0aGUgdG9wbW9zdCBmaWJlciAod2hpY2ggaXMgY3VycmVudGx5XG5leGVjdXRpbmcpIGlzIHBhc3NlZCBmcm9tIGZ1bmN0aW9uIHRvIGZ1bmN0aW9uIGFzIGFuIGFkZGl0aW9uYWxcbmFyZ3VtZW50LiBJdHMgc3RhY2sgb2YgZXhjZXB0aW9uIGhhbmRsZXJzIGlzIHN0b3JlZCBpblxuW2NhbWxfY3VycmVudF9zdGFjay54XS5cbkV4Y2VwdGlvbiBoYW5kbGVycyBhcmUgcHVzaGVkIGludG8gdGhpcyBzdGFja1xud2hlbiBlbnRlcmluZyBhIFt0cnkgLi4uIHdpdGggLi4uXSBhbmQgcG9wcGVkIG9uIGV4aXQuXG5IYW5kbGVycyBhcmUgc3RvcmVkIGluIFtjYW1sX2N1cnJlbnRfc3RhY2suaF1cbmFuZCB0aGUgcmVtYWluaW5nIGZpYmVycyBhcmUgc3RvcmVkIGluIFtjYW1sX2N1cnJlbnRfc3RhY2suZV0uXG5UbyBpbnN0YWxsIGFuIGVmZmVjdCBoYW5kbGVyLCB3ZSBwdXNoIGEgbmV3IGZpYmVyIGludG8gdGhlIGV4ZWN1dGlvbiBjb250ZXh0LlxuXG5XZSBoYXZlIGJhc2ljYWxseSB0aGUgZm9sbG93aW5nIHR5cGUgZm9yIHJlaWZpZWQgY29udGludWF0aW9ucyAodHlwZVxuW2NvbnRpbnVhdGlvbl0gaW4gbW9kdWxlIFtFZmZlY3RdIG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJ5KTpcblxuICB0eXBlICgnYSwgJ2IpIGNvbnRpbnVhdGlvbiA9ICgnYSwgJ2IpIHN0YWNrIHJlZlxuXG4gIGFuZCAoXywgXykgc3RhY2sgPVxuICAgICAgQ29ucyA6ICgnYiAtPiB1bml0KSAqICAgICAgICAgICAgICgqIGxvdy1sZXZlbCBjb250aW51YXRpb24gKilcbiAgICAgICAgICAgICAoZXhuIC0+IHVuaXQpIGxpc3QgKiAgICAgICAoKiBleGNlcHRpb24gaGFuZGxlcnMgKilcbiAgICAgICAgICAgICAoJ2IsICdjKSBoYW5kbGVyICpcbiAgICAgICAgICAgICAoJ2EsICdiKSBzdGFja1xuICAgICAgICAgICAgIC0+ICgnYSwgJ2MpIHN0YWNrXG4gICAgfCBFbXB0eSA6ICgnYSwgJ2EpIHN0YWNrXG5cbiAgYW5kICgnYSwnYikgaGFuZGxlciA9ICAgKCogQXMgaW4gbW9kdWxlIEVmZmVjdCBmcm9tIHRoZSBzdGFuZGFyZCBsaWJyYXJ5ICopXG4gICAgeyByZXRjOiAnYSAtPiAnYjtcbiAgICAgIGV4bmM6IGV4biAtPiAnYjtcbiAgICAgIGVmZmM6ICdjLidjIEVmZmVjdC50IC0+ICgoJ2MsJ2IpIGNvbnRpbnVhdGlvbiAtPiAnYikgb3B0aW9uIH1cblxuQ29udGludWF0aW9ucyBhcmUgb25lLXNob3QuIEEgY29udGludWF0aW9uIFtyZWYgRW1wdHldIGhhcyBhbHJlYWR5XG5iZWVuIHJlc3VtZWQuXG5cbkEgY29udGludWF0aW9uIGlzIGJhc2ljYWxseSBjb21wb3NlZCBvZiBhIGxpc3Qgb2YgZmliZXJzLCB3aGljaCBlYWNoXG5oYXMgaXRzIGxvdy1sZXZlbCBjb250aW51YXRpb24sIGl0cyBzdGFjayBvZiBleGNlcHRpb24gaGFuZGxlcnMgYW5kIGFcbnRyaXBsZSBvZiBoYW5kbGVycyB0byBkZWFsIHdpdGggd2hlbiB0aGUgZmliZXIgdGVybWluYXRlcyBvciBhblxuZWZmZWN0IGlzIHBlcmZvcm1lZC4gV2hlbiByZXN1bWluZyBhIGNvbnRpbnVhdGlvbiwgdGhlIGlubmVybW9zdCBmaWJlclxuaXMgcmVzdW1lZCBmaXJzdC5cblxuVGhlIGhhbmRsZXJzIGFyZSBDUFMtdHJhbnNmb3JtZWQgZnVuY3Rpb25zOiB0aGV5IGFjdHVhbGx5IHRha2UgYW5cbmFkZGl0aW9uYWwgcGFyYW1ldGVyIHdoaWNoIGlzIHRoZSBjdXJyZW50IGxvdy1sZXZlbCBjb250aW51YXRpb24uXG4qL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2N1cnJlbnRfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbi8vIFRoaXMgaGFzIHRoZSBzaGFwZSB7aywgeCwgaCwgZX0gd2hlcmVcbi8vIC0gaCBpcyBhIHRyaXBsZSBvZiBoYW5kbGVycyAoc2VlIGVmZmVjdC5tbClcbi8vIC0gayBpcyB0aGUgbG93IGxldmVsIGNvbnRpbnVhdGlvblxuLy8gLSB4IGlzIHRoZSBleGNlcHRpb24gc3RhY2tcbi8vIC0gZSBpcyB0aGUgZmliZXIgc3RhY2sgb2YgdGhlIHBhcmVudCBmaWJlci5cbnZhciBjYW1sX2N1cnJlbnRfc3RhY2sgPSB7IGs6IDAsIHg6IDAsIGg6IDAsIGU6IDAgfTtcblxuLy9Qcm92aWRlczogY2FtbF9wdXNoX3RyYXBcbi8vUmVxdWlyZXM6IGNhbWxfY3VycmVudF9zdGFja1xuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9wdXNoX3RyYXAoaGFuZGxlcikge1xuICBjYW1sX2N1cnJlbnRfc3RhY2sueCA9IHsgaDogaGFuZGxlciwgdDogY2FtbF9jdXJyZW50X3N0YWNrLnggfTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wb3BfdHJhcFxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3BvcF90cmFwKCkge1xuICBpZiAoIWNhbWxfY3VycmVudF9zdGFjay54KVxuICAgIHJldHVybiBmdW5jdGlvbiAoeCkge1xuICAgICAgdGhyb3cgeDtcbiAgICB9O1xuICB2YXIgaCA9IGNhbWxfY3VycmVudF9zdGFjay54Lmg7XG4gIGNhbWxfY3VycmVudF9zdGFjay54ID0gY2FtbF9jdXJyZW50X3N0YWNrLngudDtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2VfdW5oYW5kbGVkXG4vL1JlcXVpcmVzOiBjYW1sX21ha2VfdW5oYW5kbGVkX2VmZmVjdF9leG5cbi8vSWY6IGVmZmVjdHNcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3VuaGFuZGxlZChlZmYpIHtcbiAgdmFyIGV4biA9IGNhbWxfbWFrZV91bmhhbmRsZWRfZWZmZWN0X2V4bihlZmYpO1xuICB0aHJvdyBleG47XG59XG5cbi8vUHJvdmlkZXM6Y2FtbF9yZXN1bWVfc3RhY2tcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfcmFpc2VfY29uc3RhbnRcbi8vUmVxdWlyZXM6IGNhbWxfcG9wX2ZpYmVyLCBjYW1sX2N1cnJlbnRfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX3Jlc3VtZV9zdGFjayhzdGFjaywgbGFzdCwgaykge1xuICBpZiAoIXN0YWNrKVxuICAgIGNhbWxfcmFpc2VfY29uc3RhbnQoXG4gICAgICBjYW1sX25hbWVkX3ZhbHVlKFwiRWZmZWN0LkNvbnRpbnVhdGlvbl9hbHJlYWR5X3Jlc3VtZWRcIiksXG4gICAgKTtcbiAgaWYgKGxhc3QgPT09IDApIHtcbiAgICBsYXN0ID0gc3RhY2s7XG4gICAgLy8gUHJlIE9DYW1sIDUuMiwgbGFzdCB3YXMgbm90IHBvcHVsYXRlZC5cbiAgICB3aGlsZSAobGFzdC5lICE9PSAwKSBsYXN0ID0gbGFzdC5lO1xuICB9XG4gIGNhbWxfY3VycmVudF9zdGFjay5rID0gaztcbiAgbGFzdC5lID0gY2FtbF9jdXJyZW50X3N0YWNrO1xuICBjYW1sX2N1cnJlbnRfc3RhY2sgPSBzdGFjaztcbiAgcmV0dXJuIHN0YWNrLms7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcG9wX2ZpYmVyXG4vL1JlcXVpcmVzOiBjYW1sX2N1cnJlbnRfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX3BvcF9maWJlcigpIHtcbiAgLy8gTW92ZSB0byB0aGUgcGFyZW50IGZpYmVyLCByZXR1cm5pbmcgdGhlIHBhcmVudCdzIGxvdy1sZXZlbCBjb250aW51YXRpb25cbiAgdmFyIGMgPSBjYW1sX2N1cnJlbnRfc3RhY2suZTtcbiAgY2FtbF9jdXJyZW50X3N0YWNrLmUgPSAwO1xuICBjYW1sX2N1cnJlbnRfc3RhY2sgPSBjO1xuICByZXR1cm4gYy5rO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21ha2VfdW5oYW5kbGVkX2VmZmVjdF9leG5cbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfZnJlc2hfb29faWRcbi8vSWY6IGVmZmVjdHNcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX21ha2VfdW5oYW5kbGVkX2VmZmVjdF9leG4oZWZmKSB7XG4gIHZhciBleG4gPSBjYW1sX25hbWVkX3ZhbHVlKFwiRWZmZWN0LlVuaGFuZGxlZFwiKTtcbiAgaWYgKGV4bikgZXhuID0gWzAsIGV4biwgZWZmXTtcbiAgZWxzZSB7XG4gICAgZXhuID0gW1xuICAgICAgMjQ4LFxuICAgICAgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIkVmZmVjdC5VbmhhbmRsZWRcIiksXG4gICAgICBjYW1sX2ZyZXNoX29vX2lkKDApLFxuICAgIF07XG4gIH1cbiAgcmV0dXJuIGV4bjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wZXJmb3JtX2VmZmVjdFxuLy9SZXF1aXJlczogY2FtbF9wb3BfZmliZXIsIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgsIGNhbWxfdHJhbXBvbGluZV9yZXR1cm5cbi8vUmVxdWlyZXM6IGNhbWxfbWFrZV91bmhhbmRsZWRfZWZmZWN0X2V4biwgY2FtbF9jdXJyZW50X3N0YWNrXG4vL1JlcXVpcmVzOiBjYW1sX2dldF9jcHNfZnVuXG4vL0lmOiBlZmZlY3RzXG4vL1ZlcnNpb246ID49IDUuMFxuZnVuY3Rpb24gY2FtbF9wZXJmb3JtX2VmZmVjdChlZmYsIGswKSB7XG4gIGlmIChjYW1sX2N1cnJlbnRfc3RhY2suZSA9PT0gMCkge1xuICAgIHZhciBleG4gPSBjYW1sX21ha2VfdW5oYW5kbGVkX2VmZmVjdF9leG4oZWZmKTtcbiAgICB0aHJvdyBleG47XG4gIH1cbiAgLy8gR2V0IGN1cnJlbnQgZWZmZWN0IGhhbmRsZXJcbiAgdmFyIGhhbmRsZXIgPSBjYW1sX2N1cnJlbnRfc3RhY2suaFszXTtcbiAgdmFyIGxhc3RfZmliZXIgPSBjYW1sX2N1cnJlbnRfc3RhY2s7XG4gIGxhc3RfZmliZXIuayA9IGswO1xuICB2YXIgY29udCA9IFsyNDUgLypjb250aW51YXRpb24qLywgbGFzdF9maWJlciwgbGFzdF9maWJlcl07XG4gIC8vIE1vdmUgdG8gcGFyZW50IGZpYmVyIGFuZCBleGVjdXRlIHRoZSBlZmZlY3QgaGFuZGxlciB0aGVyZVxuICAvLyBUaGUgaGFuZGxlciBpcyBkZWZpbmVkIGluIFN0ZGxpYi5FZmZlY3QsIHNvIHdlIGtub3cgdGhhdCB0aGUgYXJpdHkgbWF0Y2hlc1xuICB2YXIgazEgPSBjYW1sX3BvcF9maWJlcigpO1xuICByZXR1cm4gY2FtbF9zdGFja19jaGVja19kZXB0aCgpXG4gICAgPyBjYW1sX2dldF9jcHNfZnVuKGhhbmRsZXIpKGVmZiwgY29udCwgbGFzdF9maWJlciwgazEpXG4gICAgOiBjYW1sX3RyYW1wb2xpbmVfcmV0dXJuKGhhbmRsZXIsIFtlZmYsIGNvbnQsIGxhc3RfZmliZXIsIGsxXSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVwZXJmb3JtX2VmZmVjdFxuLy9SZXF1aXJlczogY2FtbF9wb3BfZmliZXIsIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgsIGNhbWxfdHJhbXBvbGluZV9yZXR1cm5cbi8vUmVxdWlyZXM6IGNhbWxfbWFrZV91bmhhbmRsZWRfZWZmZWN0X2V4biwgY2FtbF9jdXJyZW50X3N0YWNrXG4vL1JlcXVpcmVzOiBjYW1sX3Jlc3VtZV9zdGFjaywgY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjXG4vL1JlcXVpcmVzOiBjYW1sX2dldF9jcHNfZnVuXG4vL0lmOiBlZmZlY3RzXG4vL1ZlcnNpb246ID49IDUuMFxuZnVuY3Rpb24gY2FtbF9yZXBlcmZvcm1fZWZmZWN0KGVmZiwgY29udCwgbGFzdCwgazApIHtcbiAgaWYgKGNhbWxfY3VycmVudF9zdGFjay5lID09PSAwKSB7XG4gICAgdmFyIGV4biA9IGNhbWxfbWFrZV91bmhhbmRsZWRfZWZmZWN0X2V4bihlZmYpO1xuICAgIHZhciBzdGFjayA9IGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Yyhjb250KTtcbiAgICBjYW1sX3Jlc3VtZV9zdGFjayhzdGFjaywgbGFzdCwgazApO1xuICAgIHRocm93IGV4bjtcbiAgfVxuICAvLyBHZXQgY3VycmVudCBlZmZlY3QgaGFuZGxlclxuICB2YXIgaGFuZGxlciA9IGNhbWxfY3VycmVudF9zdGFjay5oWzNdO1xuICB2YXIgbGFzdF9maWJlciA9IGNhbWxfY3VycmVudF9zdGFjaztcbiAgbGFzdF9maWJlci5rID0gazA7XG4gIGxhc3QuZSA9IGxhc3RfZmliZXI7XG4gIGNvbnRbMl0gPSBsYXN0X2ZpYmVyO1xuICAvLyBNb3ZlIHRvIHBhcmVudCBmaWJlciBhbmQgZXhlY3V0ZSB0aGUgZWZmZWN0IGhhbmRsZXIgdGhlcmVcbiAgLy8gVGhlIGhhbmRsZXIgaXMgZGVmaW5lZCBpbiBTdGRsaWIuRWZmZWN0LCBzbyB3ZSBrbm93IHRoYXQgdGhlIGFyaXR5IG1hdGNoZXNcbiAgdmFyIGsxID0gY2FtbF9wb3BfZmliZXIoKTtcbiAgcmV0dXJuIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgoKVxuICAgID8gY2FtbF9nZXRfY3BzX2Z1bihoYW5kbGVyKShlZmYsIGNvbnQsIGxhc3RfZmliZXIsIGsxKVxuICAgIDogY2FtbF90cmFtcG9saW5lX3JldHVybihoYW5kbGVyLCBbZWZmLCBjb250LCBsYXN0X2ZpYmVyLCBrMV0pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9jcHNfZnVuXG4vL0lmOiBlZmZlY3RzXG4vL0lmOiAhZG91YmxldHJhbnNsYXRlXG5mdW5jdGlvbiBjYW1sX2dldF9jcHNfZnVuKGYpIHtcbiAgcmV0dXJuIGY7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2Nwc19mdW5cbi8vSWY6IGVmZmVjdHNcbi8vSWY6IGRvdWJsZXRyYW5zbGF0ZVxuZnVuY3Rpb24gY2FtbF9nZXRfY3BzX2Z1bihmKSB7XG4gIC8vIFRoaXMgZnVuY3Rpb24gaXMgb25seSB1c2VkIHRvIGdldCB0aGUgZWZmZWN0IGhhbmRsZXIuIElmIHRoZVxuICAvLyBlZmZlY3QgaGFuZGxlciBoYXMgbm8gQ1BTIGZ1bmN0aW9uLCB3ZSBrbm93IHRoYXQgd2UgY2FuIGRpcmVjdGx5XG4gIC8vIGNhbGwgdGhlIGRpcmVjdCB2ZXJzaW9uIGluc3RlYWQuXG4gIHJldHVybiBmLmNwcyA/IGYuY3BzIDogZjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hbGxvY19zdGFja1xuLy9SZXF1aXJlczogY2FtbF9wb3BfZmliZXIsIGNhbWxfY2FsbF9nZW4sIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgsIGNhbWxfdHJhbXBvbGluZV9yZXR1cm5cbi8vUmVxdWlyZXM6IGNhbWxfY2FsbF9nZW5fY3BzLCBjYW1sX2N1cnJlbnRfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX2FsbG9jX3N0YWNrX2NhbGwoZiwgeCkge1xuICB2YXIgYXJncyA9IFt4LCBjYW1sX3BvcF9maWJlcigpXTtcbiAgcmV0dXJuIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgoKVxuICAgID8gY2FtbF9jYWxsX2dlbl9jcHMoZiwgYXJncylcbiAgICA6IGNhbWxfdHJhbXBvbGluZV9yZXR1cm4oZiwgYXJncywgMCk7XG59XG5mdW5jdGlvbiBjYW1sX2FsbG9jX3N0YWNrX2h2YWwoeCkge1xuICAvLyBDYWxsIFtodl0gaW4gdGhlIHBhcmVudCBmaWJlclxuICB2YXIgZiA9IGNhbWxfY3VycmVudF9zdGFjay5oWzFdO1xuICByZXR1cm4gY2FtbF9hbGxvY19zdGFja19jYWxsKGYsIHgpO1xufVxuZnVuY3Rpb24gY2FtbF9hbGxvY19zdGFja19oZXhuKGUpIHtcbiAgLy8gQ2FsbCBbaHhdIGluIHRoZSBwYXJlbnQgZmliZXJcbiAgdmFyIGYgPSBjYW1sX2N1cnJlbnRfc3RhY2suaFsyXTtcbiAgcmV0dXJuIGNhbWxfYWxsb2Nfc3RhY2tfY2FsbChmLCBlKTtcbn1cbmZ1bmN0aW9uIGNhbWxfYWxsb2Nfc3RhY2soaHYsIGh4LCBoZikge1xuICB2YXIgaGFuZGxlcnMgPSBbMCwgaHYsIGh4LCBoZl07XG4gIHJldHVybiB7XG4gICAgazogY2FtbF9hbGxvY19zdGFja19odmFsLFxuICAgIHg6IHsgaDogY2FtbF9hbGxvY19zdGFja19oZXhuLCB0OiAwIH0sXG4gICAgaDogaGFuZGxlcnMsXG4gICAgZTogMCxcbiAgfTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hbGxvY19zdGFja1xuLy9JZjogIWVmZmVjdHNcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX2FsbG9jX3N0YWNrKF9odiwgX2h4LCBfaGYpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Y1xuLy9WZXJzaW9uOiA+PSA1LjBcbmZ1bmN0aW9uIGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Yyhjb250KSB7XG4gIHZhciBzdGFjayA9IGNvbnRbMV07XG4gIGNvbnRbMV0gPSAwO1xuICByZXR1cm4gc3RhY2s7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udGludWF0aW9uX3VzZV9hbmRfdXBkYXRlX2hhbmRsZXJfbm9leGNcbi8vUmVxdWlyZXM6IGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Y1xuLy9WZXJzaW9uOiA+PSA1LjBcbmZ1bmN0aW9uIGNhbWxfY29udGludWF0aW9uX3VzZV9hbmRfdXBkYXRlX2hhbmRsZXJfbm9leGMoXG4gIGNvbnQsXG4gIGh2YWwsXG4gIGhleG4sXG4gIGhlZmYsXG4pIHtcbiAgdmFyIHN0YWNrID0gY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjKGNvbnQpO1xuICBpZiAoc3RhY2sgPT09IDApIHJldHVybiBzdGFjaztcbiAgdmFyIGxhc3QgPSBjb250WzJdO1xuICBsYXN0LmhbMV0gPSBodmFsO1xuICBsYXN0LmhbMl0gPSBoZXhuO1xuICBsYXN0LmhbM10gPSBoZWZmO1xuICByZXR1cm4gc3RhY2s7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2NvbnRpbnVhdGlvbl9jYWxsc3RhY2tcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX2dldF9jb250aW51YXRpb25fY2FsbHN0YWNrKCkge1xuICByZXR1cm4gWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NvbmRpdGlvbl9uZXdcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX21sX2NvbmRpdGlvbl9uZXcoX3VuaXQpIHtcbiAgcmV0dXJuIHsgY29uZGl0aW9uOiAxIH07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY29uZGl0aW9uX3dhaXRcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX21sX2NvbmRpdGlvbl93YWl0KF90LCBfbXV0ZXh0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NvbmRpdGlvbl9icm9hZGNhc3Rcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX21sX2NvbmRpdGlvbl9icm9hZGNhc3QoX3QpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY29uZGl0aW9uX3NpZ25hbFxuLy9WZXJzaW9uOiA+PSA1LjBcbmZ1bmN0aW9uIGNhbWxfbWxfY29uZGl0aW9uX3NpZ25hbChfdCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczoganNvb19lZmZlY3Rfbm90X3N1cHBvcnRlZFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy8hSWY6IGVmZmVjdHNcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBqc29vX2VmZmVjdF9ub3Rfc3VwcG9ydGVkKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiRWZmZWN0IGhhbmRsZXJzIGFyZSBub3Qgc3VwcG9ydGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3Jlc3VtZVxuLy9SZXF1aXJlczpjYW1sX3N0YWNrX2RlcHRoLCBjYW1sX2NhbGxfZ2VuX2NwcywgY2FtbF9jdXJyZW50X3N0YWNrLCBjYW1sX3dyYXBfZXhjZXB0aW9uLCBjYW1sX3Jlc3VtZV9zdGFja1xuLy9JZjogZWZmZWN0c1xuLy9JZjogZG91YmxldHJhbnNsYXRlXG4vL1ZlcnNpb246ID49IDUuMFxuZnVuY3Rpb24gY2FtbF9yZXN1bWUoZiwgYXJnLCBzdGFjaywgbGFzdCkge1xuICB2YXIgc2F2ZWRfc3RhY2tfZGVwdGggPSBjYW1sX3N0YWNrX2RlcHRoO1xuICB2YXIgc2F2ZWRfY3VycmVudF9zdGFjayA9IGNhbWxfY3VycmVudF9zdGFjaztcbiAgdHJ5IHtcbiAgICBjYW1sX2N1cnJlbnRfc3RhY2sgPSB7IGs6IDAsIHg6IDAsIGg6IDAsIGU6IDAgfTtcbiAgICB2YXIgayA9IGNhbWxfcmVzdW1lX3N0YWNrKHN0YWNrLCBsYXN0LCBmdW5jdGlvbiAoeCkge1xuICAgICAgcmV0dXJuIHg7XG4gICAgfSk7XG4gICAgLyogTm90ZTogZiBpcyBub3QgYW4gb3JkaW5hcnkgZnVuY3Rpb24gYnV0IGEgKGRpcmVjdC1zdHlsZSwgQ1BTKSBjbG9zdXJlIHBhaXIgKi9cbiAgICB2YXIgcmVzID0geyBqb29fdHJhbXA6IGYsIGpvb19hcmdzOiBbYXJnLCBrXSwgam9vX2RpcmVjdDogMCB9O1xuICAgIGRvIHtcbiAgICAgIC8qIEF2b2lkcyB0cmFtcG9saW5pbmcgdG9vIG9mdGVuIHdoaWxlIHN0aWxsIGF2b2lkaW5nIHN0YWNrIG92ZXJmbG93LiBTZWVcbiAgICAgICAgIFtjYW1sX2NhbGxiYWNrXS4gKi9cbiAgICAgIGNhbWxfc3RhY2tfZGVwdGggPSA0MDtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJlcyA9IHJlcy5qb29fZGlyZWN0XG4gICAgICAgICAgPyByZXMuam9vX3RyYW1wLmFwcGx5KG51bGwsIHJlcy5qb29fYXJncylcbiAgICAgICAgICA6IGNhbWxfY2FsbF9nZW5fY3BzKHJlcy5qb29fdHJhbXAsIHJlcy5qb29fYXJncyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8qIEhhbmRsZSBleGNlcHRpb24gY29taW5nIGZyb20gSmF2YVNjcmlwdCBvciBmcm9tIHRoZSBydW50aW1lLiAqL1xuICAgICAgICBpZiAoIWNhbWxfY3VycmVudF9zdGFjay54KSB0aHJvdyBlO1xuICAgICAgICB2YXIgaGFuZGxlciA9IGNhbWxfY3VycmVudF9zdGFjay54Lmg7XG4gICAgICAgIGNhbWxfY3VycmVudF9zdGFjay54ID0gY2FtbF9jdXJyZW50X3N0YWNrLngudDtcbiAgICAgICAgcmVzID0ge1xuICAgICAgICAgIGpvb190cmFtcDogaGFuZGxlcixcbiAgICAgICAgICBqb29fYXJnczogW2NhbWxfd3JhcF9leGNlcHRpb24oZSldLFxuICAgICAgICAgIGpvb19kaXJlY3Q6IDEsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSB3aGlsZSAocmVzPy5qb29fYXJncyk7XG4gICAgcmV0dXJuIHJlcztcbiAgfSBmaW5hbGx5IHtcbiAgICBjYW1sX3N0YWNrX2RlcHRoID0gc2F2ZWRfc3RhY2tfZGVwdGg7XG4gICAgY2FtbF9jdXJyZW50X3N0YWNrID0gc2F2ZWRfY3VycmVudF9zdGFjaztcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Nwc19jbG9zdXJlXG4vL0lmOiBlZmZlY3RzXG4vL0lmOiBkb3VibGV0cmFuc2xhdGVcbmZ1bmN0aW9uIGNhbWxfY3BzX2Nsb3N1cmUoZGlyZWN0X2YsIGNwc19mKSB7XG4gIGRpcmVjdF9mLmNwcyA9IGNwc19mO1xuICByZXR1cm4gZGlyZWN0X2Y7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXNzdW1lX25vX3BlcmZvcm1cbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbi8vSWY6IGVmZmVjdHNcbi8vSWY6ICFkb3VibGV0cmFuc2xhdGVcbmZ1bmN0aW9uIGNhbWxfYXNzdW1lX25vX3BlcmZvcm0oZikge1xuICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBbMF0pO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBBcnJheVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X3N1YiBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2FycmF5X3N1YihhLCBpLCBsZW4pIHtcbiAgdmFyIGEyID0gbmV3IEFycmF5KGxlbiArIDEpO1xuICBhMlswXSA9IDA7XG4gIGZvciAodmFyIGkyID0gMSwgaTEgPSBpICsgMTsgaTIgPD0gbGVuOyBpMisrLCBpMSsrKSB7XG4gICAgYTJbaTJdID0gYVtpMV07XG4gIH1cbiAgcmV0dXJuIGEyO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0YXJyYXlfc3ViIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfc3ViXG4vL1ZlcnNpb246ID49IDUuM1xuZnVuY3Rpb24gY2FtbF9mbG9hdGFycmF5X3N1YihhLCBpLCBsZW4pIHtcbiAgcmV0dXJuIGNhbWxfYXJyYXlfc3ViKGEsIGksIGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5pZm9ybV9hcnJheV9zdWIgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9zdWJcbi8vVmVyc2lvbjogPj0gNS4zXG5mdW5jdGlvbiBjYW1sX3VuaWZvcm1fYXJyYXlfc3ViKGEsIGksIGxlbikge1xuICByZXR1cm4gY2FtbF9hcnJheV9zdWIoYSwgaSwgbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9hcHBlbmQgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9hcnJheV9hcHBlbmQoYTEsIGEyKSB7XG4gIHZhciBsMSA9IGExLmxlbmd0aCxcbiAgICBsMiA9IGEyLmxlbmd0aDtcbiAgdmFyIGwgPSBsMSArIGwyIC0gMTtcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGFbMF0gPSAwO1xuICB2YXIgaSA9IDEsXG4gICAgaiA9IDE7XG4gIGZvciAoOyBpIDwgbDE7IGkrKykgYVtpXSA9IGExW2ldO1xuICBmb3IgKDsgaSA8IGw7IGkrKywgaisrKSBhW2ldID0gYTJbal07XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0YXJyYXlfYXBwZW5kIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYXBwZW5kXG4vL1ZlcnNpb246ID49IDUuM1xuZnVuY3Rpb24gY2FtbF9mbG9hdGFycmF5X2FwcGVuZChhMSwgYTIpIHtcbiAgcmV0dXJuIGNhbWxfYXJyYXlfYXBwZW5kKGExLCBhMik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5pZm9ybV9hcnJheV9hcHBlbmQgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9hcHBlbmRcbi8vVmVyc2lvbjogPj0gNS4zXG5mdW5jdGlvbiBjYW1sX3VuaWZvcm1fYXJyYXlfYXBwZW5kKGExLCBhMikge1xuICByZXR1cm4gY2FtbF9hcnJheV9hcHBlbmQoYTEsIGEyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9jb25jYXQgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9hcnJheV9jb25jYXQobCkge1xuICB2YXIgYSA9IFswXTtcbiAgd2hpbGUgKGwgIT09IDApIHtcbiAgICB2YXIgYiA9IGxbMV07XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBiLmxlbmd0aDsgaSsrKSBhLnB1c2goYltpXSk7XG4gICAgbCA9IGxbMl07XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRhcnJheV9jb25jYXQgbXV0YWJsZVxuLy9WZXJzaW9uOiA+PSA1LjRcbmZ1bmN0aW9uIGNhbWxfZmxvYXRhcnJheV9jb25jYXQobCkge1xuICB2YXIgYSA9IFswXTtcbiAgd2hpbGUgKGwgIT09IDApIHtcbiAgICB2YXIgYiA9IGxbMV07XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBiLmxlbmd0aDsgaSsrKSBhLnB1c2goYltpXSk7XG4gICAgbCA9IGxbMl07XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5pZm9ybV9hcnJheV9jb25jYXQgbXV0YWJsZVxuLy9WZXJzaW9uOiA+PSA1LjRcbmZ1bmN0aW9uIGNhbWxfdW5pZm9ybV9hcnJheV9jb25jYXQobCkge1xuICB2YXIgYSA9IFswXTtcbiAgd2hpbGUgKGwgIT09IDApIHtcbiAgICB2YXIgYiA9IGxbMV07XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBiLmxlbmd0aDsgaSsrKSBhLnB1c2goYltpXSk7XG4gICAgbCA9IGxbMl07XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfYmxpdFxuZnVuY3Rpb24gY2FtbF9hcnJheV9ibGl0KGExLCBpMSwgYTIsIGkyLCBsZW4pIHtcbiAgaWYgKGkyIDw9IGkxKSB7XG4gICAgZm9yICh2YXIgaiA9IDE7IGogPD0gbGVuOyBqKyspIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGogPSBsZW47IGogPj0gMTsgai0tKSBhMltpMiArIGpdID0gYTFbaTEgKyBqXTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X2JsaXRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYmxpdFxuZnVuY3Rpb24gY2FtbF9mbG9hdGFycmF5X2JsaXQoYTEsIGkxLCBhMiwgaTIsIGxlbikge1xuICByZXR1cm4gY2FtbF9hcnJheV9ibGl0KGExLCBpMSwgYTIsIGkyLCBsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaWZvcm1fYXJyYXlfYmxpdFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ibGl0XG4vL1ZlcnNpb246ID49IDUuM1xuZnVuY3Rpb24gY2FtbF91bmlmb3JtX2FycmF5X2JsaXQoYTEsIGkxLCBhMiwgaTIsIGxlbikge1xuICByZXR1cm4gY2FtbF9hcnJheV9ibGl0KGExLCBpMSwgYTIsIGkyLCBsZW4pO1xufVxuXG4vLy8vLy8vLy8vLy8vIFBlcnZhc2l2ZVxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9zZXQgKG11dGFibGUsIGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9BbGlhczogY2FtbF9hcnJheV9zZXRfZmxvYXRcbi8vQWxpYXM6IGNhbWxfZmxvYXRhcnJheV9zZXRcbi8vQWxpYXM6IGNhbWxfYXJyYXlfc2V0X2FkZHJcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfc2V0KGFycmF5LCBpbmRleCwgbmV3dmFsKSB7XG4gIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gYXJyYXkubGVuZ3RoIC0gMSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICBhcnJheVtpbmRleCArIDFdID0gbmV3dmFsO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9nZXQgbXV0YWJsZSAobXV0YWJsZSwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL0FsaWFzOiBjYW1sX2FycmF5X2dldF9mbG9hdFxuLy9BbGlhczogY2FtbF9mbG9hdGFycmF5X2dldFxuLy9BbGlhczogY2FtbF9hcnJheV9nZXRfYWRkclxuZnVuY3Rpb24gY2FtbF9hcnJheV9nZXQoYXJyYXksIGluZGV4KSB7XG4gIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gYXJyYXkubGVuZ3RoIC0gMSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gYXJyYXlbaW5kZXggKyAxXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9maWxsXG5mdW5jdGlvbiBjYW1sX2FycmF5X2ZpbGwoYXJyYXksIG9mcywgbGVuLCB2KSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBhcnJheVtvZnMgKyBpICsgMV0gPSB2O1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0YXJyYXlfZmlsbFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9maWxsXG4vL1ZlcnNpb246ID49IDUuM1xuZnVuY3Rpb24gY2FtbF9mbG9hdGFycmF5X2ZpbGwoYXJyYXksIG9mcywgbGVuLCB2KSB7XG4gIHJldHVybiBjYW1sX2FycmF5X2ZpbGwoYXJyYXksIG9mcywgbGVuLCB2KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X2ZpbGxfdW5ib3hlZFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9maWxsXG4vL1ZlcnNpb246ID49IDUuM1xuZnVuY3Rpb24gY2FtbF9mbG9hdGFycmF5X2ZpbGxfdW5ib3hlZChhcnJheSwgb2ZzLCBsZW4sIHYpIHtcbiAgcmV0dXJuIGNhbWxfYXJyYXlfZmlsbChhcnJheSwgb2ZzLCBsZW4sIHYpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaWZvcm1fYXJyYXlfZmlsbFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9maWxsXG4vL1ZlcnNpb246ID49IDUuM1xuZnVuY3Rpb24gY2FtbF91bmlmb3JtX2FycmF5X2ZpbGwoYXJyYXksIG9mcywgbGVuLCB2KSB7XG4gIHJldHVybiBjYW1sX2FycmF5X2ZpbGwoYXJyYXksIG9mcywgbGVuLCB2KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jaGVja19ib3VuZCAobXV0YWJsZSwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL0FsaWFzOiBjYW1sX2NoZWNrX2JvdW5kX2dlblxuLy9BbGlhczogY2FtbF9jaGVja19ib3VuZF9mbG9hdFxuZnVuY3Rpb24gY2FtbF9jaGVja19ib3VuZChhcnJheSwgaW5kZXgpIHtcbiAgaWYgKGluZGV4ID4+PiAwID49IGFycmF5Lmxlbmd0aCAtIDEpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGFycmF5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X21ha2UgY29uc3QgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9hcnJheV9tYWtlKGxlbiwgaW5pdCkge1xuICBpZiAobGVuID4+PiAwID49ICgoMHg3ZmZmZmZmZiAvIDQpIHwgMCkpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGxlbiA9IChsZW4gKyAxKSB8IDA7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbik7XG4gIGJbMF0gPSAwO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGxlbjsgaSsrKSBiW2ldID0gaW5pdDtcbiAgcmV0dXJuIGI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFrZV92ZWN0IGNvbnN0IChjb25zdCwgbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfbWFrZVxuZnVuY3Rpb24gY2FtbF9tYWtlX3ZlY3QobGVuLCBpbml0KSB7XG4gIHJldHVybiBjYW1sX2FycmF5X21ha2UobGVuLCBpbml0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYWtlX2Zsb2F0X3ZlY3QgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9tYWtlX2Zsb2F0X3ZlY3QobGVuKSB7XG4gIGlmIChsZW4gPj4+IDAgPj0gKCgweDdmZmZmZmZmIC8gOCkgfCAwKSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgbGVuID0gKGxlbiArIDEpIHwgMDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKTtcbiAgYlswXSA9IDI1NDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBsZW47IGkrKykgYltpXSA9IDA7XG4gIHJldHVybiBiO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2NyZWF0ZV9mbG9hdCBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1ZlcnNpb246ID49IDUuM1xuZnVuY3Rpb24gY2FtbF9hcnJheV9jcmVhdGVfZmxvYXQobGVuKSB7XG4gIGlmIChsZW4gPj4+IDAgPj0gKCgweDdmZmZmZmZmIC8gOCkgfCAwKSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgbGVuID0gKGxlbiArIDEpIHwgMDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKTtcbiAgYlswXSA9IDI1NDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBsZW47IGkrKykgYltpXSA9IDA7XG4gIHJldHVybiBiO1xufVxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X2NyZWF0ZSBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlKGxlbikge1xuICBpZiAobGVuID4+PiAwID49ICgoMHg3ZmZmZmZmZiAvIDgpIHwgMCkpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGxlbiA9IChsZW4gKyAxKSB8IDA7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbik7XG4gIGJbMF0gPSAyNTQ7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuOyBpKyspIGJbaV0gPSAwO1xuICByZXR1cm4gYjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X21ha2UgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9WZXJzaW9uOiA+PSA1LjNcbmZ1bmN0aW9uIGNhbWxfZmxvYXRhcnJheV9tYWtlKGxlbiwgaW5pdCkge1xuICBpZiAobGVuID4+PiAwID49ICgoMHg3ZmZmZmZmZiAvIDgpIHwgMCkpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGxlbiA9IChsZW4gKyAxKSB8IDA7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbik7XG4gIGJbMF0gPSAyNTQ7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuOyBpKyspIGJbaV0gPSBpbml0O1xuICByZXR1cm4gYjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X21ha2VfdW5ib3hlZCBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2Zsb2F0YXJyYXlfbWFrZVxuLy9WZXJzaW9uOiA+PSA1LjNcbmZ1bmN0aW9uIGNhbWxfZmxvYXRhcnJheV9tYWtlX3VuYm94ZWQobGVuLCBpbml0KSB7XG4gIHJldHVybiBjYW1sX2Zsb2F0YXJyYXlfbWFrZShsZW4sIGluaXQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaWZvcm1fYXJyYXlfbWFrZSBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X21ha2Vcbi8vVmVyc2lvbjogPj0gNS4zXG5mdW5jdGlvbiBjYW1sX3VuaWZvcm1fYXJyYXlfbWFrZShsZW4sIGluaXQpIHtcbiAgcmV0dXJuIGNhbWxfYXJyYXlfbWFrZShsZW4sIGluaXQpO1xufVxuIiwiLy9Qcm92aWRlczogY2FtbF9kb21haW5fZGxzXG4vL1ZlcnNpb246ID49IDVcbnZhciBjYW1sX2RvbWFpbl9kbHMgPSBbMF07XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2Rsc19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2Rsc1xuLy9WZXJzaW9uOiA+PSA1XG5mdW5jdGlvbiBjYW1sX2RvbWFpbl9kbHNfc2V0KGEpIHtcbiAgY2FtbF9kb21haW5fZGxzID0gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5fZGxzX2NvbXBhcmVfYW5kX3NldFxuLy9SZXF1aXJlczogY2FtbF9kb21haW5fZGxzXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9kb21haW5fZGxzX2NvbXBhcmVfYW5kX3NldChvbGQsIG4pIHtcbiAgaWYgKGNhbWxfZG9tYWluX2RscyAhPT0gb2xkKSByZXR1cm4gMDtcbiAgY2FtbF9kb21haW5fZGxzID0gbjtcbiAgcmV0dXJuIDE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2Rsc19nZXRcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2Rsc1xuLy9WZXJzaW9uOiA+PSA1XG5mdW5jdGlvbiBjYW1sX2RvbWFpbl9kbHNfZ2V0KF91bml0KSB7XG4gIHJldHVybiBjYW1sX2RvbWFpbl9kbHM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2xvYWRcbi8vVmVyc2lvbjogPj0gNVxuZnVuY3Rpb24gY2FtbF9hdG9taWNfbG9hZChyZWYpIHtcbiAgcmV0dXJuIHJlZlsxXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfbG9hZF9maWVsZFxuLy9WZXJzaW9uOiA+PSA1LjRcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX2xvYWRfZmllbGQoYiwgaSkge1xuICByZXR1cm4gYltpICsgMV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2Nhc1xuLy9WZXJzaW9uOiA+PSA1XG5mdW5jdGlvbiBjYW1sX2F0b21pY19jYXMocmVmLCBvLCBuKSB7XG4gIGlmIChyZWZbMV0gPT09IG8pIHtcbiAgICByZWZbMV0gPSBuO1xuICAgIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19jYXNfZmllbGRcbi8vVmVyc2lvbjogPj0gNS40XG5mdW5jdGlvbiBjYW1sX2F0b21pY19jYXNfZmllbGQoYiwgaSwgbywgbikge1xuICBpZiAoYltpICsgMV0gPT09IG8pIHtcbiAgICBiW2kgKyAxXSA9IG47XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2ZldGNoX2FkZFxuLy9WZXJzaW9uOiA+PSA1XG5mdW5jdGlvbiBjYW1sX2F0b21pY19mZXRjaF9hZGQocmVmLCBpKSB7XG4gIHZhciBvbGQgPSByZWZbMV07XG4gIHJlZlsxXSArPSBpO1xuICByZXR1cm4gb2xkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19mZXRjaF9hZGRfZmllbGRcbi8vVmVyc2lvbjogPj0gNS40XG5mdW5jdGlvbiBjYW1sX2F0b21pY19mZXRjaF9hZGRfZmllbGQoYiwgaSwgbikge1xuICB2YXIgb2xkID0gYltpICsgMV07XG4gIGJbaSArIDFdICs9IG47XG4gIHJldHVybiBvbGQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2V4Y2hhbmdlXG4vL1ZlcnNpb246ID49IDVcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX2V4Y2hhbmdlKHJlZiwgdikge1xuICB2YXIgciA9IHJlZlsxXTtcbiAgcmVmWzFdID0gdjtcbiAgcmV0dXJuIHI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2V4Y2hhbmdlX2ZpZWxkXG4vL1ZlcnNpb246ID49IDUuNFxuZnVuY3Rpb24gY2FtbF9hdG9taWNfZXhjaGFuZ2VfZmllbGQoYiwgaSwgdikge1xuICB2YXIgciA9IGJbaSArIDFdO1xuICBiW2kgKyAxXSA9IHY7XG4gIHJldHVybiByO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19tYWtlX2NvbnRlbmRlZFxuLy9WZXJzaW9uOiA+PSA1LjJcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkKGEpIHtcbiAgcmV0dXJuIFswLCBhXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuXG4vL1ZlcnNpb246ID49IDUuMCwgPCA1LjJcbnZhciBjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW5fID0gWzBdO1xuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuKF91bml0KSB7XG4gIHJldHVybiBjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW5fO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudFxuLy9WZXJzaW9uOiA+PSA1XG5mdW5jdGlvbiBjYW1sX3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudChfdW5pdCkge1xuICByZXR1cm4gMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kb21haW5faW5kZXhcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2lkXG4vL1ZlcnNpb246ID49IDUuMDNcbmZ1bmN0aW9uIGNhbWxfbWxfZG9tYWluX2luZGV4KF91bml0KSB7XG4gIHJldHVybiBjYW1sX2RvbWFpbl9pZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5faWRcbi8vVmVyc2lvbjogPj0gNVxudmFyIGNhbWxfZG9tYWluX2lkID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5fc3Bhd25cbi8vUmVxdWlyZXM6IGNhbWxfbWxfbXV0ZXhfdW5sb2NrXG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9pZFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuLy9WZXJzaW9uOiA+PSA1LjJcbnZhciBjYW1sX2RvbWFpbl9sYXRlc3RfaWR4ID0gMTtcbmZ1bmN0aW9uIGNhbWxfZG9tYWluX3NwYXduKGYsIHRlcm1fc3luYykge1xuICB2YXIgaWQgPSBjYW1sX2RvbWFpbl9sYXRlc3RfaWR4Kys7XG4gIHZhciBvbGQgPSBjYW1sX2RvbWFpbl9pZDtcbiAgY2FtbF9kb21haW5faWQgPSBpZDtcbiAgdmFyIHJlcyA9IGNhbWxfY2FsbGJhY2soZiwgWzBdKTtcbiAgY2FtbF9kb21haW5faWQgPSBvbGQ7XG4gIGNhbWxfbWxfbXV0ZXhfdW5sb2NrKHRlcm1fc3luY1syXSk7XG4gIC8vVE9ETzogZml4IGV4biBjYXNlXG4gIHRlcm1fc3luY1sxXSA9IFswLCBbMCwgcmVzXV07XG4gIHJldHVybiBpZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5fc3Bhd25cbi8vUmVxdWlyZXM6IGNhbWxfbWxfbXV0ZXhfdW5sb2NrXG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9pZFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuLy9WZXJzaW9uOiA+PSA1LjAsIDwgNS4yXG52YXIgY2FtbF9kb21haW5fbGF0ZXN0X2lkeCA9IDE7XG5mdW5jdGlvbiBjYW1sX2RvbWFpbl9zcGF3bihmLCBtdXRleCkge1xuICB2YXIgaWQgPSBjYW1sX2RvbWFpbl9sYXRlc3RfaWR4Kys7XG4gIHZhciBvbGQgPSBjYW1sX2RvbWFpbl9pZDtcbiAgY2FtbF9kb21haW5faWQgPSBpZDtcbiAgdmFyIF9yZXMgPSBjYW1sX2NhbGxiYWNrKGYsIFswXSk7XG4gIGNhbWxfZG9tYWluX2lkID0gb2xkO1xuICBjYW1sX21sX211dGV4X3VubG9jayhtdXRleCk7XG4gIHJldHVybiBpZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kb21haW5faWRcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2lkXG4vL1ZlcnNpb246ID49IDUuMFxuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5faWQoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfZG9tYWluX2lkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RvbWFpbl9jcHVfcmVsYXhcbi8vVmVyc2lvbjogPj0gNVxuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5fY3B1X3JlbGF4KF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9mb3JtYXRfaW50IGNvbnN0IChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX2Zvcm1hdCwgY2FtbF9maW5pc2hfZm9ybWF0dGluZywgY2FtbF9zdHJfcmVwZWF0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL0FsaWFzOiBjYW1sX2ludDMyX2Zvcm1hdFxuLy9BbGlhczogY2FtbF9uYXRpdmVpbnRfZm9ybWF0XG5mdW5jdGlvbiBjYW1sX2Zvcm1hdF9pbnQoZm10LCBpKSB7XG4gIGlmIChjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGZtdCkgPT09IFwiJWRcIilcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiICsgaSk7XG4gIHZhciBmID0gY2FtbF9wYXJzZV9mb3JtYXQoZm10KTtcbiAgaWYgKGkgPCAwKSB7XG4gICAgaWYgKGYuc2lnbmVkY29udikge1xuICAgICAgZi5zaWduID0gLTE7XG4gICAgICBpID0gLWk7XG4gICAgfSBlbHNlIGkgPj4+PSAwO1xuICB9XG4gIHZhciBzID0gaS50b1N0cmluZyhmLmJhc2UpO1xuICBpZiAoZi5wcmVjID49IDApIHtcbiAgICBmLmZpbGxlciA9IFwiIFwiO1xuICAgIHZhciBuID0gZi5wcmVjIC0gcy5sZW5ndGg7XG4gICAgaWYgKG4gPiAwKSBzID0gY2FtbF9zdHJfcmVwZWF0KG4sIFwiMFwiKSArIHM7XG4gIH1cbiAgcmV0dXJuIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2Uocykge1xuICB2YXIgaSA9IDAsXG4gICAgbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpLFxuICAgIGJhc2UgPSAxMCxcbiAgICBzaWduID0gMSxcbiAgICBzaWduZWRuZXNzID0gMTtcbiAgaWYgKGxlbiA+IDApIHtcbiAgICBzd2l0Y2ggKGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSkpIHtcbiAgICAgIGNhc2UgNDU6XG4gICAgICAgIGkrKztcbiAgICAgICAgc2lnbiA9IC0xO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNDM6XG4gICAgICAgIGkrKztcbiAgICAgICAgc2lnbiA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAoaSArIDEgPCBsZW4gJiYgY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKSA9PT0gNDgpXG4gICAgc3dpdGNoIChjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkgKyAxKSkge1xuICAgICAgY2FzZSAxMjA6XG4gICAgICBjYXNlIDg4OlxuICAgICAgICBzaWduZWRuZXNzID0gMDtcbiAgICAgICAgYmFzZSA9IDE2O1xuICAgICAgICBpICs9IDI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMTE6XG4gICAgICBjYXNlIDc5OlxuICAgICAgICBzaWduZWRuZXNzID0gMDtcbiAgICAgICAgYmFzZSA9IDg7XG4gICAgICAgIGkgKz0gMjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDk4OlxuICAgICAgY2FzZSA2NjpcbiAgICAgICAgc2lnbmVkbmVzcyA9IDA7XG4gICAgICAgIGJhc2UgPSAyO1xuICAgICAgICBpICs9IDI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMTc6XG4gICAgICBjYXNlIDg1OlxuICAgICAgICBzaWduZWRuZXNzID0gMDtcbiAgICAgICAgaSArPSAyO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIHJldHVybiBbaSwgc2lnbiwgYmFzZSwgc2lnbmVkbmVzc107XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2VfZGlnaXRcbmZ1bmN0aW9uIGNhbWxfcGFyc2VfZGlnaXQoYykge1xuICBpZiAoYyA+PSA0OCAmJiBjIDw9IDU3KSByZXR1cm4gYyAtIDQ4O1xuICBpZiAoYyA+PSA2NSAmJiBjIDw9IDkwKSByZXR1cm4gYyAtIDU1O1xuICBpZiAoYyA+PSA5NyAmJiBjIDw9IDEyMikgcmV0dXJuIGMgLSA4NztcbiAgcmV0dXJuIC0xO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludF9vZl9zdHJpbmcgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UsIGNhbWxfcGFyc2VfZGlnaXQsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IGNhbWxfaW50MzJfb2Zfc3RyaW5nXG4vL0FsaWFzOiBjYW1sX25hdGl2ZWludF9vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfaW50X29mX3N0cmluZyhzKSB7XG4gIHZhciByID0gY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlKHMpO1xuICB2YXIgaSA9IHJbMF0sXG4gICAgc2lnbiA9IHJbMV0sXG4gICAgYmFzZSA9IHJbMl0sXG4gICAgc2lnbmVkbmVzcyA9IHJbM107XG4gIHZhciBsZW4gPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocyk7XG4gIHZhciB0aHJlc2hvbGQgPSAtMSA+Pj4gMDtcbiAgdmFyIGMgPSBpIDwgbGVuID8gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKSA6IDA7XG4gIHZhciBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIHZhciByZXMgPSBkO1xuICBmb3IgKGkrKzsgaSA8IGxlbjsgaSsrKSB7XG4gICAgYyA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk7XG4gICAgaWYgKGMgPT09IDk1KSBjb250aW51ZTtcbiAgICBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBicmVhaztcbiAgICByZXMgPSBiYXNlICogcmVzICsgZDtcbiAgICBpZiAocmVzID4gdGhyZXNob2xkKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgfVxuICBpZiAoaSAhPT0gbGVuKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgLy8gRm9yIGJhc2UgZGlmZmVyZW50IGZyb20gMTAsIHdlIGV4cGVjdCBhbiB1bnNpZ25lZCByZXByZXNlbnRhdGlvbixcbiAgLy8gaGVuY2UgYW55IHZhbHVlIG9mICdyZXMnIChsZXNzIHRoYW4gJ3RocmVzaG9sZCcpIGlzIGFjY2VwdGFibGUuXG4gIC8vIEJ1dCB3ZSBoYXZlIHRvIGNvbnZlcnQgdGhlIHJlc3VsdCBiYWNrIHRvIGEgc2lnbmVkIGludGVnZXIuXG4gIHJlcyA9IHNpZ24gKiByZXM7XG4gIGlmIChzaWduZWRuZXNzICYmIChyZXMgfCAwKSAhPT0gcmVzKVxuICAgIC8qIFNpZ25lZCByZXByZXNlbnRhdGlvbiBleHBlY3RlZCwgYWxsb3cgLTJeKG5iaXRzLTEpIHRvIDJeKG5iaXRzLTEpIC0gMSAqL1xuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICByZXR1cm4gcmVzIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tdWwgY29uc3Rcbi8vQWxpYXM6IGNhbWxfaW50MzJfbXVsXG4vL0FsaWFzOiBjYW1sX25hdGl2ZWludF9tdWxcbi8vQWxpYXM6ICVpbnRfbXVsXG5mdW5jdGlvbiBjYW1sX211bChhLCBiKSB7XG4gIHJldHVybiBNYXRoLmltdWwoYSwgYik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZGl2XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG4vL0FsaWFzOiBjYW1sX2ludDMyX2RpdlxuLy9BbGlhczogY2FtbF9uYXRpdmVpbnRfZGl2XG4vL0FsaWFzOiAlaW50X2RpdlxuZnVuY3Rpb24gY2FtbF9kaXYoeCwgeSkge1xuICBpZiAoeSA9PT0gMCkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSgpO1xuICByZXR1cm4gKHggLyB5KSB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbW9kXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG4vL0FsaWFzOiBjYW1sX2ludDMyX21vZFxuLy9BbGlhczogY2FtbF9uYXRpdmVpbnRfbW9kXG4vL0FsaWFzOiAlaW50X21vZFxuZnVuY3Rpb24gY2FtbF9tb2QoeCwgeSkge1xuICBpZiAoeSA9PT0gMCkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSgpO1xuICByZXR1cm4geCAlIHk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnN3YXAxNiBjb25zdFxuZnVuY3Rpb24gY2FtbF9ic3dhcDE2KHgpIHtcbiAgcmV0dXJuICgoeCAmIDB4MDBmZikgPDwgOCkgfCAoKHggJiAweGZmMDApID4+IDgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX2Jzd2FwIGNvbnN0XG4vL0FsaWFzOiBjYW1sX25hdGl2ZWludF9ic3dhcFxuZnVuY3Rpb24gY2FtbF9pbnQzMl9ic3dhcCh4KSB7XG4gIHJldHVybiAoXG4gICAgKCh4ICYgMHgwMDAwMDBmZikgPDwgMjQpIHxcbiAgICAoKHggJiAweDAwMDBmZjAwKSA8PCA4KSB8XG4gICAgKCh4ICYgMHgwMGZmMDAwMCkgPj4+IDgpIHxcbiAgICAoKHggJiAweGZmMDAwMDAwKSA+Pj4gMjQpXG4gICk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2Jzd2FwIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzLCBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ludDY0X2Jzd2FwKHgpIHtcbiAgdmFyIHkgPSBjYW1sX2ludDY0X3RvX2J5dGVzKHgpO1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhbeVs3XSwgeVs2XSwgeVs1XSwgeVs0XSwgeVszXSwgeVsyXSwgeVsxXSwgeVswXV0pO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBIYXNodGJsXG5cbi8vZnVuY3Rpb24gUk9UTDMyKHgsbikgeyByZXR1cm4gKCh4IDw8IG4pIHwgKHggPj4+ICgzMi1uKSkpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2ludFxuLy9SZXF1aXJlczogY2FtbF9tdWxcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfaW50KGgsIGQpIHtcbiAgZCA9IGNhbWxfbXVsKGQsIDB4Y2M5ZTJkNTEgfCAwKTtcbiAgZCA9IChkIDw8IDE1KSB8IChkID4+PiAoMzIgLSAxNSkpOyAvLyBST1RMMzIoZCwgMTUpO1xuICBkID0gY2FtbF9tdWwoZCwgMHgxYjg3MzU5Myk7XG4gIGggXj0gZDtcbiAgaCA9IChoIDw8IDEzKSB8IChoID4+PiAoMzIgLSAxMykpOyAvL1JPVEwzMihoLCAxMyk7XG4gIHJldHVybiAoKChoICsgKGggPDwgMikpIHwgMCkgKyAoMHhlNjU0NmI2NCB8IDApKSB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfZmluYWxcbi8vUmVxdWlyZXM6IGNhbWxfbXVsXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2ZpbmFsKGgpIHtcbiAgaCBePSBoID4+PiAxNjtcbiAgaCA9IGNhbWxfbXVsKGgsIDB4ODVlYmNhNmIgfCAwKTtcbiAgaCBePSBoID4+PiAxMztcbiAgaCA9IGNhbWxfbXVsKGgsIDB4YzJiMmFlMzUgfCAwKTtcbiAgaCBePSBoID4+PiAxNjtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfZmxvYXRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfbG8zMiwgY2FtbF9pbnQ2NF9oaTMyXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2Zsb2F0KGhhc2gsIHYwKSB7XG4gIHZhciBpNjQgPSBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQodjApO1xuICB2YXIgbCA9IGNhbWxfaW50NjRfbG8zMihpNjQpO1xuICB2YXIgaCA9IGNhbWxfaW50NjRfaGkzMihpNjQpO1xuICAvKiBOb3JtYWxpemUgTmFOcyAqL1xuICBpZiAoKGggJiAweDdmZjAwMDAwKSA9PT0gMHg3ZmYwMDAwMCAmJiAobCB8IChoICYgMHhmZmZmZikpICE9PSAwKSB7XG4gICAgaCA9IDB4N2ZmMDAwMDA7XG4gICAgbCA9IDB4MDAwMDAwMDE7XG4gIH0gZWxzZSBpZiAoaCA9PT0gKDB4ODAwMDAwMDAgfCAwKSAmJiBsID09PSAwKSB7XG4gICAgLyogTm9ybWFsaXplIC0wIGludG8gKzAgKi9cbiAgICAvLyBUaGlzIGNvZGUgcGF0aCBpcyBub3QgdXNlZCBieSBjYW1sX2hhc2ggYmVjYXVzZSAwIGFuZCAtMCBsb29rXG4gICAgLy8gbGlrZSBpbnRlZ2Vyc1xuICAgIGggPSAwO1xuICB9XG4gIGhhc2ggPSBjYW1sX2hhc2hfbWl4X2ludChoYXNoLCBsKTtcbiAgaGFzaCA9IGNhbWxfaGFzaF9taXhfaW50KGhhc2gsIGgpO1xuICByZXR1cm4gaGFzaDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfaW50NjRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2xvMzIsIGNhbWxfaW50NjRfaGkzMlxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9pbnQ2NChoLCB2KSB7XG4gIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBjYW1sX2ludDY0X2xvMzIodikpO1xuICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgY2FtbF9pbnQ2NF9oaTMyKHYpKTtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfanNieXRlcyhoLCBzKSB7XG4gIHZhciBsZW4gPSBzLmxlbmd0aCxcbiAgICBpLFxuICAgIHc7XG4gIGZvciAoaSA9IDA7IGkgKyA0IDw9IGxlbjsgaSArPSA0KSB7XG4gICAgdyA9XG4gICAgICBzLmNoYXJDb2RlQXQoaSkgfFxuICAgICAgKHMuY2hhckNvZGVBdChpICsgMSkgPDwgOCkgfFxuICAgICAgKHMuY2hhckNvZGVBdChpICsgMikgPDwgMTYpIHxcbiAgICAgIChzLmNoYXJDb2RlQXQoaSArIDMpIDw8IDI0KTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIH1cbiAgdyA9IDA7XG4gIHN3aXRjaCAobGVuICYgMykge1xuICAgIGNhc2UgMzpcbiAgICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9GYWxsdGhyb3VnaFN3aXRjaENsYXVzZTpcbiAgICAgIHcgPSBzLmNoYXJDb2RlQXQoaSArIDIpIDw8IDE2O1xuICAgIC8vIGZhbGx0aHJvdWdoXG4gICAgY2FzZSAyOlxuICAgICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0ZhbGx0aHJvdWdoU3dpdGNoQ2xhdXNlOlxuICAgICAgdyB8PSBzLmNoYXJDb2RlQXQoaSArIDEpIDw8IDg7XG4gICAgLy8gZmFsbHRocm91Z2hcbiAgICBjYXNlIDE6XG4gICAgICB3IHw9IHMuY2hhckNvZGVBdChpKTtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgfVxuICBoIF49IGxlbjtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9ieXRlc19hcnIoaCwgcykge1xuICB2YXIgbGVuID0gcy5sZW5ndGgsXG4gICAgaSxcbiAgICB3O1xuICBmb3IgKGkgPSAwOyBpICsgNCA8PSBsZW47IGkgKz0gNCkge1xuICAgIHcgPSBzW2ldIHwgKHNbaSArIDFdIDw8IDgpIHwgKHNbaSArIDJdIDw8IDE2KSB8IChzW2kgKyAzXSA8PCAyNCk7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICB9XG4gIHcgPSAwO1xuICBzd2l0Y2ggKGxlbiAmIDMpIHtcbiAgICBjYXNlIDM6XG4gICAgICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRmFsbHRocm91Z2hTd2l0Y2hDbGF1c2U6XG4gICAgICB3ID0gc1tpICsgMl0gPDwgMTY7XG4gICAgLy8gZmFsbHRocm91Z2hcbiAgICBjYXNlIDI6XG4gICAgICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRmFsbHRocm91Z2hTd2l0Y2hDbGF1c2U6XG4gICAgICB3IHw9IHNbaSArIDFdIDw8IDg7XG4gICAgLy8gZmFsbHRocm91Z2hcbiAgICBjYXNlIDE6XG4gICAgICB3IHw9IHNbaV07XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIH1cbiAgaCBePSBsZW47XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9ieXRlc19hcnJcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfYnl0ZXMoaCwgdikge1xuICB2YXIgY29udGVudCA9IGNhbWxfbWxfYnl0ZXNfY29udGVudCh2KTtcbiAgaWYgKHR5cGVvZiBjb250ZW50ID09PSBcInN0cmluZ1wiKSByZXR1cm4gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsIGNvbnRlbnQpO1xuICAvKiBBUlJBWSAqLyBlbHNlIHJldHVybiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FycihoLCBjb250ZW50KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9zdHJpbmcoaCwgdikge1xuICByZXR1cm4gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsIGNhbWxfanNieXRlc19vZl9zdHJpbmcodikpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2ggbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9pc19tbF9zdHJpbmcsIGNhbWxfaXNfbWxfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50LCBjYW1sX2hhc2hfbWl4X2ZpbmFsXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2Zsb2F0LCBjYW1sX2hhc2hfbWl4X3N0cmluZywgY2FtbF9oYXNoX21peF9ieXRlcywgY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xuZnVuY3Rpb24gY2FtbF9oYXNoKGNvdW50LCBsaW1pdCwgc2VlZCwgb2JqKSB7XG4gIHZhciBxdWV1ZSwgcmQsIHdyLCBzeiwgbnVtLCBoLCB2LCBpLCBsZW47XG4gIHN6ID0gbGltaXQ7XG4gIGlmIChzeiA8IDAgfHwgc3ogPiAyNTYpIHN6ID0gMjU2O1xuICBudW0gPSBjb3VudDtcbiAgaCA9IHNlZWQ7XG4gIHF1ZXVlID0gW29ial07XG4gIHJkID0gMDtcbiAgd3IgPSAxO1xuICB3aGlsZSAocmQgPCB3ciAmJiBudW0gPiAwKSB7XG4gICAgdiA9IHF1ZXVlW3JkKytdO1xuICAgIGlmICh2Py5jYW1sX2N1c3RvbSkge1xuICAgICAgaWYgKFxuICAgICAgICBjYW1sX2N1c3RvbV9vcHNbdi5jYW1sX2N1c3RvbV0gJiZcbiAgICAgICAgY2FtbF9jdXN0b21fb3BzW3YuY2FtbF9jdXN0b21dLmhhc2hcbiAgICAgICkge1xuICAgICAgICB2YXIgaGggPSBjYW1sX2N1c3RvbV9vcHNbdi5jYW1sX2N1c3RvbV0uaGFzaCh2KTtcbiAgICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGhoKTtcbiAgICAgICAgbnVtLS07XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHYpICYmIHZbMF0gPT09ICh2WzBdIHwgMCkpIHtcbiAgICAgIHN3aXRjaCAodlswXSkge1xuICAgICAgICBjYXNlIDI0ODpcbiAgICAgICAgICAvLyBPYmplY3RcbiAgICAgICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdlsyXSk7XG4gICAgICAgICAgbnVtLS07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjUwOlxuICAgICAgICAgIC8vIEZvcndhcmRcbiAgICAgICAgICBxdWV1ZVstLXJkXSA9IHZbMV07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgaWYgKGNhbWxfaXNfY29udGludWF0aW9uX3RhZyh2WzBdKSkge1xuICAgICAgICAgICAgLyogQWxsIGNvbnRpbnVhdGlvbnMgaGFzaCB0byB0aGUgc2FtZSB2YWx1ZSxcbiAgICAgICAgICAgICBzaW5jZSB3ZSBoYXZlIG5vIGlkZWEgaG93IHRvIGRpc3Rpbmd1aXNoIHRoZW0uICovXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIHRhZyA9ICgodi5sZW5ndGggLSAxKSA8PCAxMCkgfCB2WzBdO1xuICAgICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB0YWcpO1xuICAgICAgICAgIGZvciAoaSA9IDEsIGxlbiA9IHYubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh3ciA+PSBzeikgYnJlYWs7XG4gICAgICAgICAgICBxdWV1ZVt3cisrXSA9IHZbaV07XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyh2KSkge1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfYnl0ZXMoaCwgdik7XG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKHYpKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9zdHJpbmcoaCwgdik7XG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsIHYpO1xuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmICh2ID09PSAodiB8IDApKSB7XG4gICAgICAvLyBJbnRlZ2VyXG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdiArIHYgKyAxKTtcbiAgICAgIG51bS0tO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHYgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgIC8vIEZsb2F0XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9mbG9hdChoLCB2KTtcbiAgICAgIG51bS0tO1xuICAgIH1cbiAgfVxuICBoID0gY2FtbF9oYXNoX21peF9maW5hbChoKTtcbiAgcmV0dXJuIGggJiAweDNmZmZmZmZmO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19oYXNoXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ZpbmFsLCBjYW1sX2hhc2hfbWl4X3N0cmluZ1xuLy9WZXJzaW9uOiA+PSA1LjBcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2hhc2goaCwgdikge1xuICB2YXIgaCA9IGNhbWxfaGFzaF9taXhfc3RyaW5nKGgsIHYpO1xuICB2YXIgaCA9IGNhbWxfaGFzaF9taXhfZmluYWwoaCk7XG4gIHJldHVybiBoICYgMHgzZmZmZmZmZjtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWxfdGFnXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9pc19tbF9ieXRlc1xuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbF90YWcoYSkge1xuICBpZiAodHlwZW9mIGEgPT09IFwibnVtYmVyXCIpXG4gICAgcmV0dXJuIDEwMDA7IC8vIGludF90YWcgKHdlIHVzZSBpdCBmb3IgYWxsIG51bWJlcnMpXG4gIGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXMoYSkpXG4gICAgcmV0dXJuIDI1MjsgLy8gc3RyaW5nX3RhZ1xuICBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyhhKSlcbiAgICByZXR1cm4gMTI1MjsgLy8gb2NhbWwgc3RyaW5nIChpZiBkaWZmZXJlbnQgZnJvbSBieXRlcylcbiAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhKSAmJiBhWzBdID09PSBhWzBdID4+PiAwICYmIGFbMF0gPD0gMjU1KSB7XG4gICAgLy8gTG9vayBsaWtlIGFuIG9jYW1sIGJsb2NrXG4gICAgdmFyIHRhZyA9IGFbMF0gfCAwO1xuICAgIC8vIGlnbm9yZSBkb3VibGVfYXJyYXlfdGFnIGJlY2F1c2Ugd2UgY2Fubm90IGFjY3VyYXRlbHkgc2V0XG4gICAgLy8gdGhpcyB0YWcgd2hlbiB3ZSBjcmVhdGUgYW4gYXJyYXkgb2YgZmxvYXQuXG4gICAgcmV0dXJuIHRhZyA9PT0gMjU0ID8gMCA6IHRhZztcbiAgfSBlbHNlIGlmIChhIGluc3RhbmNlb2YgU3RyaW5nKVxuICAgIHJldHVybiAxMjUyMDsgLy8gamF2YXNjcmlwdCBzdHJpbmcsIGxpa2Ugc3RyaW5nX3RhZyAoMjUyKVxuICBlbHNlIGlmICh0eXBlb2YgYSA9PT0gXCJzdHJpbmdcIilcbiAgICByZXR1cm4gMTI1MjA7IC8vIGphdmFzY3JpcHQgc3RyaW5nLCBsaWtlIHN0cmluZ190YWcgKDI1MilcbiAgZWxzZSBpZiAoYSBpbnN0YW5jZW9mIE51bWJlcilcbiAgICByZXR1cm4gMTAwMDsgLy8gaW50X3RhZyAod2UgdXNlIGl0IGZvciBhbGwgbnVtYmVycylcbiAgZWxzZSBpZiAoYT8uY2FtbF9jdXN0b20pXG4gICAgcmV0dXJuIDEyNTU7IC8vIGxpa2UgY3VzdG9tX3RhZyAoMjU1KVxuICBlbHNlIGlmIChhPy5jb21wYXJlKVxuICAgIHJldHVybiAxMjU2OyAvLyBsaWtlIGN1c3RvbV90YWcgKDI1NSlcbiAgZWxzZSBpZiAodHlwZW9mIGEgPT09IFwiZnVuY3Rpb25cIilcbiAgICByZXR1cm4gMTI0NzsgLy8gbGlrZSBjbG9zdXJlX3RhZyAoMjQ3KVxuICBlbHNlIGlmICh0eXBlb2YgYSA9PT0gXCJzeW1ib2xcIikgcmV0dXJuIDEyNTE7XG4gIHJldHVybiAxMDAxOyAvL291dF9vZl9oZWFwX3RhZ1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b21cbi8vUmVxdWlyZXM6IGNhbWxfY3VzdG9tX29wc1xuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGEpIHtcbiAgcmV0dXJuIChcbiAgICBjYW1sX2N1c3RvbV9vcHNbYS5jYW1sX2N1c3RvbV0gJiYgY2FtbF9jdXN0b21fb3BzW2EuY2FtbF9jdXN0b21dLmNvbXBhcmVcbiAgKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b21cbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShudW0sIGN1c3RvbSwgc3dhcCwgdG90YWwpIHtcbiAgdmFyIGNvbXAgPSBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oY3VzdG9tKTtcbiAgaWYgKGNvbXApIHtcbiAgICB2YXIgeCA9IHN3YXAgPiAwID8gY29tcChjdXN0b20sIG51bSwgdG90YWwpIDogY29tcChudW0sIGN1c3RvbSwgdG90YWwpO1xuICAgIGlmICh0b3RhbCAmJiBOdW1iZXIuaXNOYU4oeCkpIHJldHVybiBzd2FwOyAvLyB0b3RhbCAmJiBuYW5cbiAgICBpZiAoTnVtYmVyLmlzTmFOKCt4KSkgcmV0dXJuICt4OyAvLyBuYW5cbiAgICBpZiAoKHggfCAwKSAhPT0gMCkgcmV0dXJuIHggfCAwOyAvLyAhbmFuXG4gIH1cbiAgcmV0dXJuIHN3YXA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWwgKGNvbnN0LCBjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2ludF9jb21wYXJlLCBjYW1sX3N0cmluZ19jb21wYXJlLCBjYW1sX2J5dGVzX2NvbXBhcmVcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tLCBjYW1sX2NvbXBhcmVfdmFsX3RhZ1xuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWdcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWwoYSwgYiwgdG90YWwpIHtcbiAgdmFyIHN0YWNrID0gW107XG4gIGZvciAoOzspIHtcbiAgICBpZiAoISh0b3RhbCAmJiBhID09PSBiKSkge1xuICAgICAgdmFyIHRhZ19hID0gY2FtbF9jb21wYXJlX3ZhbF90YWcoYSk7XG4gICAgICAvLyBmb3J3YXJkX3RhZyA/XG4gICAgICBpZiAodGFnX2EgPT09IDI1MCkge1xuICAgICAgICBhID0gYVsxXTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZhciB0YWdfYiA9IGNhbWxfY29tcGFyZV92YWxfdGFnKGIpO1xuICAgICAgLy8gZm9yd2FyZF90YWcgP1xuICAgICAgaWYgKHRhZ19iID09PSAyNTApIHtcbiAgICAgICAgYiA9IGJbMV07XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyB0YWdzIGFyZSBkaWZmZXJlbnRcbiAgICAgIGlmICh0YWdfYSAhPT0gdGFnX2IpIHtcbiAgICAgICAgaWYgKHRhZ19hID09PSAxMDAwKSB7XG4gICAgICAgICAgaWYgKHRhZ19iID09PSAxMjU1KSB7XG4gICAgICAgICAgICAvL2ltbWVkaWF0ZSBjYW4gY29tcGFyZSBhZ2FpbnN0IGN1c3RvbVxuICAgICAgICAgICAgcmV0dXJuIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShhLCBiLCAtMSwgdG90YWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRhZ19iID09PSAxMDAwKSB7XG4gICAgICAgICAgaWYgKHRhZ19hID09PSAxMjU1KSB7XG4gICAgICAgICAgICAvL2ltbWVkaWF0ZSBjYW4gY29tcGFyZSBhZ2FpbnN0IGN1c3RvbVxuICAgICAgICAgICAgcmV0dXJuIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShiLCBhLCAxLCB0b3RhbCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0YWdfYSA8IHRhZ19iID8gLTEgOiAxO1xuICAgICAgfVxuICAgICAgLy8gdGFnX2EgPSB0YWdfYlxuICAgICAgc3dpdGNoICh0YWdfYSkge1xuICAgICAgICAvLyAyNDY6IExhenlfdGFnIGhhbmRsZWQgYmVsbG93XG4gICAgICAgIGNhc2UgMjQ3OiAvLyBDbG9zdXJlX3RhZ1xuICAgICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBmdW5jdGlvbmFsIHZhbHVlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI0ODogLy8gT2JqZWN0XG4gICAgICAgICAgdmFyIHggPSBjYW1sX2ludF9jb21wYXJlKGFbMl0sIGJbMl0pIHwgMDtcbiAgICAgICAgICBpZiAoeCAhPT0gMCkgcmV0dXJuIHg7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjQ5OiAvLyBJbmZpeFxuICAgICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBmdW5jdGlvbmFsIHZhbHVlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI1MDogLy8gRm9yd2FyZCB0YWdcbiAgICAgICAgICAvLyBDYW5ub3QgaGFwcGVuLCBoYW5kbGVkIGFib3ZlXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBGb3J3YXJkX3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjUxOiAvL0Fic3RyYWN0XG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGFic3RyYWN0IHZhbHVlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI1MjogLy8gT0NhbWwgYnl0ZXNcbiAgICAgICAgICBpZiAoYSAhPT0gYikge1xuICAgICAgICAgICAgdmFyIHggPSBjYW1sX2J5dGVzX2NvbXBhcmUoYSwgYikgfCAwO1xuICAgICAgICAgICAgaWYgKHggIT09IDApIHJldHVybiB4O1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyNTM6IC8vIERvdWJsZV90YWdcbiAgICAgICAgICAvLyBDYW5ub3QgaGFwcGVuXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBEb3VibGVfdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyNTQ6IC8vIERvdWJsZV9hcnJheV90YWdcbiAgICAgICAgICAvLyBDYW5ub3QgaGFwcGVuLCBoYW5kbGVkIGluIGNhbWxfY29tcGFyZV92YWxfdGFnXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFxuICAgICAgICAgICAgXCJlcXVhbDogZ290IERvdWJsZV9hcnJheV90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyNTU6IC8vIEN1c3RvbV90YWdcbiAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogZ290IEN1c3RvbV90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDEyNDc6IC8vIEZ1bmN0aW9uXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogZnVuY3Rpb25hbCB2YWx1ZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxMjU1OiAvLyBDdXN0b21cbiAgICAgICAgICB2YXIgY29tcCA9IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShhKTtcbiAgICAgICAgICBpZiAoY29tcCAhPT0gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGIpKSB7XG4gICAgICAgICAgICByZXR1cm4gYS5jYW1sX2N1c3RvbSA8IGIuY2FtbF9jdXN0b20gPyAtMSA6IDE7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghY29tcCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogYWJzdHJhY3QgdmFsdWVcIik7XG4gICAgICAgICAgdmFyIHggPSBjb21wKGEsIGIsIHRvdGFsKTtcbiAgICAgICAgICBpZiAoTnVtYmVyLmlzTmFOKHgpKSB7XG4gICAgICAgICAgICAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCBVTk9SREVSRURcbiAgICAgICAgICAgIHJldHVybiB0b3RhbCA/IC0xIDogeDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHggIT09ICh4IHwgMCkpIHtcbiAgICAgICAgICAgIC8vIFByb3RlY3QgYWdhaW5zdCBpbnZhbGlkIHJldHVybiB2YWx1ZVxuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoeCAhPT0gMCkgcmV0dXJuIHggfCAwO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDEyNTY6IC8vIGNvbXBhcmUgZnVuY3Rpb25cbiAgICAgICAgICB2YXIgeCA9IGEuY29tcGFyZShiLCB0b3RhbCk7XG4gICAgICAgICAgaWYgKE51bWJlci5pc05hTih4KSkge1xuICAgICAgICAgICAgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgVU5PUkRFUkVEXG4gICAgICAgICAgICByZXR1cm4gdG90YWwgPyAtMSA6IHg7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh4ICE9PSAoeCB8IDApKSB7XG4gICAgICAgICAgICAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCByZXR1cm4gdmFsdWVcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHggIT09IDApIHJldHVybiB4IHwgMDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxMDAwOiAvLyBOdW1iZXJcbiAgICAgICAgICBhID0gK2E7XG4gICAgICAgICAgYiA9ICtiO1xuICAgICAgICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gICAgICAgICAgaWYgKGEgIT09IGIpIHtcbiAgICAgICAgICAgIGlmICghdG90YWwpIHJldHVybiBOdW1iZXIuTmFOO1xuICAgICAgICAgICAgaWYgKCFOdW1iZXIuaXNOYU4oYSkpIHJldHVybiAxO1xuICAgICAgICAgICAgaWYgKCFOdW1iZXIuaXNOYU4oYikpIHJldHVybiAtMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTAwMTogLy8gVGhlIHJlc3RcbiAgICAgICAgICAvLyBIZXJlIHdlIGNhbiBiZSBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOlxuICAgICAgICAgIC8vIDEuIEphdmFTY3JpcHQgcHJpbWl0aXZlIHR5cGVzXG4gICAgICAgICAgLy8gMi4gSmF2YVNjcmlwdCBvYmplY3QgdGhhdCBjYW4gYmUgY29lcmNlZCB0byBwcmltaXRpdmUgdHlwZXNcbiAgICAgICAgICAvLyAzLiBKYXZhU2NyaXB0IG9iamVjdCB0aGFuIGNhbm5vdCBiZSBjb2VyY2VkIHRvIHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAgIC8vXG4gICAgICAgICAgLy8gKDMpIHdpbGwgcmFpc2UgYSBbVHlwZUVycm9yXVxuICAgICAgICAgIC8vICgyKSB3aWxsIGNvZXJjZSB0byBwcmltaXRpdmUgdHlwZXMgdXNpbmcgW3ZhbHVlT2ZdIG9yIFt0b1N0cmluZ11cbiAgICAgICAgICAvLyAoMikgYW5kICgzKSwgYWZ0ZXIgZXZlbnR1YWwgY29lcmNpb25cbiAgICAgICAgICAvLyAtIGlmIGEgYW5kIGIgYXJlIHN0cmluZ3MsIGFwcGx5IGxleGljb2dyYXBoaWMgY29tcGFyaXNvblxuICAgICAgICAgIC8vIC0gaWYgYSBvciBiIGFyZSBub3Qgc3RyaW5ncywgY29udmVydCBhIGFuZCBiIHRvIG51bWJlclxuICAgICAgICAgIC8vICAgYW5kIGFwcGx5IHN0YW5kYXJkIGNvbXBhcmlzb25cbiAgICAgICAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICAgIGlmIChhICE9PSBiKSB7XG4gICAgICAgICAgICByZXR1cm4gdG90YWwgPyAxIDogTnVtYmVyLk5hTjtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTI1MTogLy8gSmF2YVNjcmlwdCBTeW1ib2wsIG5vIG9yZGVyaW5nLlxuICAgICAgICAgIGlmIChhICE9PSBiKSB7XG4gICAgICAgICAgICByZXR1cm4gdG90YWwgPyAxIDogTnVtYmVyLk5hTjtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTI1MjogLy8gb2NhbWwgc3RyaW5nc1xuICAgICAgICAgIHZhciBhID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhhKTtcbiAgICAgICAgICB2YXIgYiA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoYik7XG4gICAgICAgICAgaWYgKGEgIT09IGIpIHtcbiAgICAgICAgICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICAgICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTI1MjA6IC8vIGphdmFzY3JpcHQgc3RyaW5nc1xuICAgICAgICAgIHZhciBhID0gYS50b1N0cmluZygpO1xuICAgICAgICAgIHZhciBiID0gYi50b1N0cmluZygpO1xuICAgICAgICAgIGlmIChhICE9PSBiKSB7XG4gICAgICAgICAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OiAvLyBMYXp5X3RhZyBvciBCbG9jayB3aXRoIG90aGVyIHRhZ1xuICAgICAgICAgIGlmIChjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodGFnX2EpKSB7XG4gICAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBjb250aW51YXRpb24gdmFsdWVcIik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkgcmV0dXJuIGEubGVuZ3RoIDwgYi5sZW5ndGggPyAtMSA6IDE7XG4gICAgICAgICAgaWYgKGEubGVuZ3RoID4gMSkgc3RhY2sucHVzaChhLCBiLCAxKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHN0YWNrLmxlbmd0aCA9PT0gMCkgcmV0dXJuIDA7XG4gICAgdmFyIGkgPSBzdGFjay5wb3AoKTtcbiAgICBiID0gc3RhY2sucG9wKCk7XG4gICAgYSA9IHN0YWNrLnBvcCgpO1xuICAgIGlmIChpICsgMSA8IGEubGVuZ3RoKSBzdGFjay5wdXNoKGEsIGIsIGkgKyAxKTtcbiAgICBhID0gYVtpXTtcbiAgICBiID0gYltpXTtcbiAgfVxufVxuXG4vLyBNYXkgcmFpc2Vcbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9jb21wYXJlKGEsIGIpIHtcbiAgcmV0dXJuIGNhbWxfY29tcGFyZV92YWwoYSwgYiwgdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50X2NvbXBhcmUgY29uc3Rcbi8vQWxpYXM6IGNhbWxfaW50MzJfY29tcGFyZVxuLy9BbGlhczogY2FtbF9uYXRpdmVpbnRfY29tcGFyZVxuZnVuY3Rpb24gY2FtbF9pbnRfY29tcGFyZShhLCBiKSB7XG4gIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICBpZiAoYSA9PT0gYikgcmV0dXJuIDA7XG4gIHJldHVybiAxO1xufVxuXG4vLyBNYXkgcmFpc2Vcbi8vUHJvdmlkZXM6IGNhbWxfZXF1YWwgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfZXF1YWwoeCwgeSkge1xuICByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgsIHksIGZhbHNlKSA9PT0gMCk7XG59XG5cbi8vIE1heSByYWlzZVxuLy9Qcm92aWRlczogY2FtbF9ub3RlcXVhbCAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9ub3RlcXVhbCh4LCB5KSB7XG4gIHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCwgeSwgZmFsc2UpICE9PSAwKTtcbn1cblxuLy8gTWF5IHJhaXNlXG4vL1Byb3ZpZGVzOiBjYW1sX2dyZWF0ZXJlcXVhbCAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9ncmVhdGVyZXF1YWwoeCwgeSkge1xuICByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgsIHksIGZhbHNlKSA+PSAwKTtcbn1cblxuLy8gTWF5IHJhaXNlXG4vL1Byb3ZpZGVzOiBjYW1sX2dyZWF0ZXJ0aGFuIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2dyZWF0ZXJ0aGFuKHgsIHkpIHtcbiAgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LCB5LCBmYWxzZSkgPiAwKTtcbn1cblxuLy8gTWF5IHJhaXNlXG4vL1Byb3ZpZGVzOiBjYW1sX2xlc3NlcXVhbCAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9sZXNzZXF1YWwoeCwgeSkge1xuICByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgsIHksIGZhbHNlKSA8PSAwKTtcbn1cblxuLy8gTWF5IHJhaXNlXG4vL1Byb3ZpZGVzOiBjYW1sX2xlc3N0aGFuIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2xlc3N0aGFuKHgsIHkpIHtcbiAgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LCB5LCBmYWxzZSkgPCAwKTtcbn1cbiIsIi8vUHJvdmlkZXM6IGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4XG4vL1ZlcnNpb246ID49IDUuMVxudmFyIGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4ID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3JlZ2lzdGVyXG4vL1JlcXVpcmVzOiBjYW1sX2N1c3RvbV9ldmVudF9pbmRleFxuLy9WZXJzaW9uOiA+PSA1LjFcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZWdpc3RlcihldmVudF9uYW1lLCBldmVudF90YWcsIGV2ZW50X3R5cGUpIHtcbiAgY2FtbF9jdXN0b21fZXZlbnRfaW5kZXggKz0gMTtcbiAgcmV0dXJuIFswLCBjYW1sX2N1c3RvbV9ldmVudF9pbmRleCwgZXZlbnRfbmFtZSwgZXZlbnRfdHlwZSwgZXZlbnRfdGFnXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3dyaXRlXG4vL1ZlcnNpb246ID49IDUuMVxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3dyaXRlKF9ldmVudCwgX2V2ZW50X2NvbnRlbnQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZXNvbHZlXG4vL1ZlcnNpb246ID49IDUuMFxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3Jlc29sdmUoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3N0YXJ0XG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX2V2ZW50c19zdGFydCgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfc3RhcnRcbi8vVmVyc2lvbjogPj0gNS4wLCA8IDUuMlxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c19zdGFydCgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcnVudGltZV9ldmVudHNfcGF1c2Vcbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3BhdXNlKCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c19wYXVzZVxuLy9WZXJzaW9uOiA+PSA1LjAsIDwgNS4yXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX3BhdXNlKCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ydW50aW1lX2V2ZW50c19hcmVfYWN0aXZlXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX2V2ZW50c19hcmVfYWN0aXZlKCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c19yZXN1bWVcbi8vVmVyc2lvbjogPj01LjAsIDwgNS4yXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX3Jlc3VtZSgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcnVudGltZV9ldmVudHNfcmVzdW1lXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX2V2ZW50c19yZXN1bWUoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX2NyZWF0ZV9jdXJzb3Jcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX2NyZWF0ZV9jdXJzb3IoX3RhcmdldCkge1xuICByZXR1cm4ge307XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfZnJlZV9jdXJzb3Jcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX2ZyZWVfY3Vyc29yKF9jdXJzb3IpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfcmVhZF9wb2xsXG4vL1ZlcnNpb246ID49IDUuMFxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c19yZWFkX3BvbGwoX2N1cnNvciwgX2NhbGxiYWNrcywgX251bSkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ydW50aW1lX2V2ZW50c19wYXRoIGNvbnN0XG4vL1ZlcnNpb246ID49IDUuM1xuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX2V2ZW50c19wYXRoKF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuIiwiLy9Qcm92aWRlczogenN0ZF9kZWNvbXByZXNzXG4vL1ZlcnNpb246ID49IDUuMVxudmFyIHpzdGRfZGVjb21wcmVzcyA9IChmdW5jdGlvbiAoKSB7XG4gIC8vIGFsaWFzZXMgZm9yIHNob3J0ZXIgY29tcHJlc3NlZCBjb2RlIChtb3N0IG1pbmlmZXJzIGRvbid0IGRvIHRoaXMpXG4gIHZhciBhYiA9IEFycmF5QnVmZmVyLFxuICAgIHU4ID0gVWludDhBcnJheSxcbiAgICB1MTYgPSBVaW50MTZBcnJheSxcbiAgICBpMTYgPSBJbnQxNkFycmF5LFxuICAgIGkzMiA9IEludDMyQXJyYXk7XG4gIHZhciBzbGMgPSBmdW5jdGlvbiAodiwgcywgZSkge1xuICAgIGlmICh1OC5wcm90b3R5cGUuc2xpY2UpIHJldHVybiB1OC5wcm90b3R5cGUuc2xpY2UuY2FsbCh2LCBzLCBlKTtcbiAgICBpZiAocyA9PSBudWxsIHx8IHMgPCAwKSBzID0gMDtcbiAgICBpZiAoZSA9PSBudWxsIHx8IGUgPiB2Lmxlbmd0aCkgZSA9IHYubGVuZ3RoO1xuICAgIHZhciBuID0gbmV3IHU4KGUgLSBzKTtcbiAgICBuLnNldCh2LnN1YmFycmF5KHMsIGUpKTtcbiAgICByZXR1cm4gbjtcbiAgfTtcbiAgdmFyIGZpbGwgPSBmdW5jdGlvbiAodiwgbiwgcywgZSkge1xuICAgIGlmICh1OC5wcm90b3R5cGUuZmlsbCkgcmV0dXJuIHU4LnByb3RvdHlwZS5maWxsLmNhbGwodiwgbiwgcywgZSk7XG4gICAgaWYgKHMgPT0gbnVsbCB8fCBzIDwgMCkgcyA9IDA7XG4gICAgaWYgKGUgPT0gbnVsbCB8fCBlID4gdi5sZW5ndGgpIGUgPSB2Lmxlbmd0aDtcbiAgICBmb3IgKDsgcyA8IGU7ICsrcykgdltzXSA9IG47XG4gICAgcmV0dXJuIHY7XG4gIH07XG4gIHZhciBjcHcgPSBmdW5jdGlvbiAodiwgdCwgcywgZSkge1xuICAgIGlmICh1OC5wcm90b3R5cGUuY29weVdpdGhpbilcbiAgICAgIHJldHVybiB1OC5wcm90b3R5cGUuY29weVdpdGhpbi5jYWxsKHYsIHQsIHMsIGUpO1xuICAgIGlmIChzID09IG51bGwgfHwgcyA8IDApIHMgPSAwO1xuICAgIGlmIChlID09IG51bGwgfHwgZSA+IHYubGVuZ3RoKSBlID0gdi5sZW5ndGg7XG4gICAgd2hpbGUgKHMgPCBlKSB7XG4gICAgICB2W3QrK10gPSB2W3MrK107XG4gICAgfVxuICB9O1xuICAvKipcbiAgICogQ29kZXMgZm9yIGVycm9ycyBnZW5lcmF0ZWQgd2l0aGluIHRoaXMgbGlicmFyeVxuICAgKi9cbiAgLy8gZXJyb3IgY29kZXNcbiAgdmFyIGVjID0gW1xuICAgIFwiaW52YWxpZCB6c3RkIGRhdGFcIixcbiAgICBcIndpbmRvdyBzaXplIHRvbyBsYXJnZSAoPjIwNDZNQilcIixcbiAgICBcImludmFsaWQgYmxvY2sgdHlwZVwiLFxuICAgIFwiRlNFIGFjY3VyYWN5IHRvbyBoaWdoXCIsXG4gICAgXCJtYXRjaCBkaXN0YW5jZSB0b28gZmFyIGJhY2tcIixcbiAgICBcInVuZXhwZWN0ZWQgRU9GXCIsXG4gIF07XG4gIHZhciBlcnIgPSBmdW5jdGlvbiAoaW5kLCBtc2csIG50KSB7XG4gICAgdmFyIGUgPSBuZXcgRXJyb3IobXNnIHx8IGVjW2luZF0pO1xuICAgIGUuY29kZSA9IGluZDtcbiAgICBpZiAoIW50KSB0aHJvdyBlO1xuICAgIHJldHVybiBlO1xuICB9O1xuICB2YXIgcmIgPSBmdW5jdGlvbiAoZCwgYiwgbikge1xuICAgIHZhciBpID0gMCxcbiAgICAgIG8gPSAwO1xuICAgIGZvciAoOyBpIDwgbjsgKytpKSBvIHw9IGRbYisrXSA8PCAoaSA8PCAzKTtcbiAgICByZXR1cm4gbztcbiAgfTtcbiAgdmFyIGI0ID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICByZXR1cm4gKGRbYl0gfCAoZFtiICsgMV0gPDwgOCkgfCAoZFtiICsgMl0gPDwgMTYpIHwgKGRbYiArIDNdIDw8IDI0KSkgPj4+IDA7XG4gIH07XG4gIC8vIHJlYWQgWnN0YW5kYXJkIGZyYW1lIGhlYWRlclxuICB2YXIgcnpmaCA9IGZ1bmN0aW9uIChkYXQsIHcpIHtcbiAgICB2YXIgbjMgPSBkYXRbMF0gfCAoZGF0WzFdIDw8IDgpIHwgKGRhdFsyXSA8PCAxNik7XG4gICAgaWYgKG4zID09PSAweDJmYjUyOCAmJiBkYXRbM10gPT09IDI1Mykge1xuICAgICAgLy8gWnN0YW5kYXJkXG4gICAgICB2YXIgZmxnID0gZGF0WzRdO1xuICAgICAgLy8gICAgc2luZ2xlIHNlZ21lbnQgICAgICAgY2hlY2tzdW0gICAgICAgICAgICAgZGljdCBmbGFnICAgICBmcmFtZSBjb250ZW50IGZsYWdcbiAgICAgIHZhciBzcyA9IChmbGcgPj4gNSkgJiAxLFxuICAgICAgICBjYyA9IChmbGcgPj4gMikgJiAxLFxuICAgICAgICBkZiA9IGZsZyAmIDMsXG4gICAgICAgIGZjZiA9IGZsZyA+PiA2O1xuICAgICAgaWYgKGZsZyAmIDgpIGVycigwKTtcbiAgICAgIC8vIGJ5dGVcbiAgICAgIHZhciBidCA9IDYgLSBzcztcbiAgICAgIC8vIGRpY3QgYnl0ZXNcbiAgICAgIHZhciBkYiA9IGRmID09PSAzID8gNCA6IGRmO1xuICAgICAgLy8gZGljdGlvbmFyeSBpZFxuICAgICAgdmFyIGRpID0gcmIoZGF0LCBidCwgZGIpO1xuICAgICAgYnQgKz0gZGI7XG4gICAgICAvLyBmcmFtZSBzaXplIGJ5dGVzXG4gICAgICB2YXIgZnNiID0gZmNmID8gMSA8PCBmY2YgOiBzcztcbiAgICAgIC8vIGZyYW1lIHNvdXJjZSBzaXplXG4gICAgICB2YXIgZnNzID0gcmIoZGF0LCBidCwgZnNiKSArIChmY2YgPT09IDEgJiYgMjU2KTtcbiAgICAgIC8vIHdpbmRvdyBzaXplXG4gICAgICB2YXIgd3MgPSBmc3M7XG4gICAgICBpZiAoIXNzKSB7XG4gICAgICAgIC8vIHdpbmRvdyBkZXNjcmlwdG9yXG4gICAgICAgIHZhciB3YiA9IDEgPDwgKDEwICsgKGRhdFs1XSA+PiAzKSk7XG4gICAgICAgIHdzID0gd2IgKyAod2IgPj4gMykgKiAoZGF0WzVdICYgNyk7XG4gICAgICB9XG4gICAgICBpZiAod3MgPiAyMTQ1Mzg2NDk2KSBlcnIoMSk7XG4gICAgICB2YXIgYnVmID0gbmV3IHU4KCh3ID09PSAxID8gZnNzIHx8IHdzIDogdyA/IDAgOiB3cykgKyAxMik7XG4gICAgICAoYnVmWzBdID0gMSksIChidWZbNF0gPSA0KSwgKGJ1Zls4XSA9IDgpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYjogYnQgKyBmc2IsXG4gICAgICAgIHk6IDAsXG4gICAgICAgIGw6IDAsXG4gICAgICAgIGQ6IGRpLFxuICAgICAgICB3OiB3ICYmIHcgIT09IDEgPyB3IDogYnVmLnN1YmFycmF5KDEyKSxcbiAgICAgICAgZTogd3MsXG4gICAgICAgIG86IG5ldyBpMzIoYnVmLmJ1ZmZlciwgMCwgMyksXG4gICAgICAgIHU6IGZzcyxcbiAgICAgICAgYzogY2MsXG4gICAgICAgIG06IE1hdGgubWluKDEzMTA3Miwgd3MpLFxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKCgobjMgPj4gNCkgfCAoZGF0WzNdIDw8IDIwKSkgPT09IDB4MTg0ZDJhNSkge1xuICAgICAgLy8gc2tpcHBhYmxlXG4gICAgICByZXR1cm4gYjQoZGF0LCA0KSArIDg7XG4gICAgfVxuICAgIGVycigwKTtcbiAgfTtcbiAgLy8gbW9zdCBzaWduaWZpY2FudCBiaXQgZm9yIG5vbnplcm9cbiAgdmFyIG1zYiA9IGZ1bmN0aW9uICh2YWwpIHtcbiAgICB2YXIgYml0cyA9IDA7XG4gICAgZm9yICg7IDEgPDwgYml0cyA8PSB2YWw7ICsrYml0cyk7XG4gICAgcmV0dXJuIGJpdHMgLSAxO1xuICB9O1xuICAvLyByZWFkIGZpbml0ZSBzdGF0ZSBlbnRyb3B5XG4gIHZhciByZnNlID0gZnVuY3Rpb24gKGRhdCwgYnQsIG1hbCkge1xuICAgIC8vIHRhYmxlIHBvc1xuICAgIHZhciB0cG9zID0gKGJ0IDw8IDMpICsgNDtcbiAgICAvLyBhY2N1cmFjeSBsb2dcbiAgICB2YXIgYWwgPSAoZGF0W2J0XSAmIDE1KSArIDU7XG4gICAgaWYgKGFsID4gbWFsKSBlcnIoMyk7XG4gICAgLy8gc2l6ZVxuICAgIHZhciBzeiA9IDEgPDwgYWw7XG4gICAgLy8gcHJvYmFiaWxpdGllcyBzeW1ib2xzICByZXBlYXQgICBpbmRleCAgIGhpZ2ggdGhyZXNob2xkXG4gICAgdmFyIHByb2JzID0gc3osXG4gICAgICBzeW0gPSAtMSxcbiAgICAgIHJlID0gLTEsXG4gICAgICBpID0gLTEsXG4gICAgICBodCA9IHN6O1xuICAgIC8vIG9wdGltaXphdGlvbjogc2luZ2xlIGFsbG9jYXRpb24gaXMgbXVjaCBmYXN0ZXJcbiAgICB2YXIgYnVmID0gbmV3IGFiKDUxMiArIChzeiA8PCAyKSk7XG4gICAgdmFyIGZyZXEgPSBuZXcgaTE2KGJ1ZiwgMCwgMjU2KTtcbiAgICAvLyBzYW1lIHZpZXcgYXMgZnJlcVxuICAgIHZhciBkc3RhdGUgPSBuZXcgdTE2KGJ1ZiwgMCwgMjU2KTtcbiAgICB2YXIgbnN0YXRlID0gbmV3IHUxNihidWYsIDUxMiwgc3opO1xuICAgIHZhciBiYjEgPSA1MTIgKyAoc3ogPDwgMSk7XG4gICAgdmFyIHN5bXMgPSBuZXcgdTgoYnVmLCBiYjEsIHN6KTtcbiAgICB2YXIgbmJpdHMgPSBuZXcgdTgoYnVmLCBiYjEgKyBzeik7XG4gICAgd2hpbGUgKHN5bSA8IDI1NSAmJiBwcm9icyA+IDApIHtcbiAgICAgIHZhciBiaXRzID0gbXNiKHByb2JzICsgMSk7XG4gICAgICB2YXIgY2J0ID0gdHBvcyA+PiAzO1xuICAgICAgLy8gbWFza1xuICAgICAgdmFyIG1zayA9ICgxIDw8IChiaXRzICsgMSkpIC0gMTtcbiAgICAgIHZhciB2YWwgPVxuICAgICAgICAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpKSA+PlxuICAgICAgICAgICh0cG9zICYgNykpICZcbiAgICAgICAgbXNrO1xuICAgICAgLy8gbWFzayAoMSBmZXdlciBiaXQpXG4gICAgICB2YXIgbXNrMWZiID0gKDEgPDwgYml0cykgLSAxO1xuICAgICAgLy8gbWF4IHNtYWxsIHZhbHVlXG4gICAgICB2YXIgbXN2ID0gbXNrIC0gcHJvYnMgLSAxO1xuICAgICAgLy8gc21hbGwgdmFsdWVcbiAgICAgIHZhciBzdmFsID0gdmFsICYgbXNrMWZiO1xuICAgICAgaWYgKHN2YWwgPCBtc3YpICh0cG9zICs9IGJpdHMpLCAodmFsID0gc3ZhbCk7XG4gICAgICBlbHNlIHtcbiAgICAgICAgdHBvcyArPSBiaXRzICsgMTtcbiAgICAgICAgaWYgKHZhbCA+IG1zazFmYikgdmFsIC09IG1zdjtcbiAgICAgIH1cbiAgICAgIGZyZXFbKytzeW1dID0gLS12YWw7XG4gICAgICBpZiAodmFsID09PSAtMSkge1xuICAgICAgICBwcm9icyArPSB2YWw7XG4gICAgICAgIHN5bXNbLS1odF0gPSBzeW07XG4gICAgICB9IGVsc2UgcHJvYnMgLT0gdmFsO1xuICAgICAgaWYgKCF2YWwpIHtcbiAgICAgICAgZG8ge1xuICAgICAgICAgIC8vIHJlcGVhdCBieXRlXG4gICAgICAgICAgdmFyIHJidCA9IHRwb3MgPj4gMztcbiAgICAgICAgICByZSA9ICgoZGF0W3JidF0gfCAoZGF0W3JidCArIDFdIDw8IDgpKSA+PiAodHBvcyAmIDcpKSAmIDM7XG4gICAgICAgICAgdHBvcyArPSAyO1xuICAgICAgICAgIHN5bSArPSByZTtcbiAgICAgICAgfSB3aGlsZSAocmUgPT09IDMpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoc3ltID4gMjU1IHx8IHByb2JzKSBlcnIoMCk7XG4gICAgdmFyIHN5bXBvcyA9IDA7XG4gICAgLy8gc3ltIHN0ZXAgKGNvcHJpbWUgd2l0aCBzeiAtIGZvcm11bGEgZnJvbSB6c3RkIHNvdXJjZSlcbiAgICB2YXIgc3N0ZXAgPSAoc3ogPj4gMSkgKyAoc3ogPj4gMykgKyAzO1xuICAgIC8vIHN5bSBtYXNrXG4gICAgdmFyIHNtYXNrID0gc3ogLSAxO1xuICAgIGZvciAodmFyIHMgPSAwOyBzIDw9IHN5bTsgKytzKSB7XG4gICAgICB2YXIgc2YgPSBmcmVxW3NdO1xuICAgICAgaWYgKHNmIDwgMSkge1xuICAgICAgICBkc3RhdGVbc10gPSAtc2Y7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgLy8gVGhpcyBpcyBzcGxpdCBpbnRvIHR3byBsb29wcyBpbiB6c3RkIHRvIGF2b2lkIGJyYW5jaGluZywgYnV0IGFzIEpTIGlzIGhpZ2hlci1sZXZlbCB0aGF0IGlzIHVubmVjZXNzYXJ5XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgc2Y7ICsraSkge1xuICAgICAgICBzeW1zW3N5bXBvc10gPSBzO1xuICAgICAgICBkbyB7XG4gICAgICAgICAgc3ltcG9zID0gKHN5bXBvcyArIHNzdGVwKSAmIHNtYXNrO1xuICAgICAgICB9IHdoaWxlIChzeW1wb3MgPj0gaHQpO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBBZnRlciBzcHJlYWRpbmcgc3ltYm9scywgc2hvdWxkIGJlIHplcm8gYWdhaW5cbiAgICBpZiAoc3ltcG9zKSBlcnIoMCk7XG4gICAgZm9yIChpID0gMDsgaSA8IHN6OyArK2kpIHtcbiAgICAgIC8vIG5leHQgc3RhdGVcbiAgICAgIHZhciBucyA9IGRzdGF0ZVtzeW1zW2ldXSsrO1xuICAgICAgLy8gbnVtIGJpdHNcbiAgICAgIHZhciBuYiA9IChuYml0c1tpXSA9IGFsIC0gbXNiKG5zKSk7XG4gICAgICBuc3RhdGVbaV0gPSAobnMgPDwgbmIpIC0gc3o7XG4gICAgfVxuICAgIHJldHVybiBbXG4gICAgICAodHBvcyArIDcpID4+IDMsXG4gICAgICB7XG4gICAgICAgIGI6IGFsLFxuICAgICAgICBzOiBzeW1zLFxuICAgICAgICBuOiBuYml0cyxcbiAgICAgICAgdDogbnN0YXRlLFxuICAgICAgfSxcbiAgICBdO1xuICB9O1xuICAvLyByZWFkIGh1ZmZtYW5cbiAgdmFyIHJodSA9IGZ1bmN0aW9uIChkYXQsIGJ0KSB7XG4gICAgLy8gIGluZGV4ICB3ZWlnaHQgY291bnRcbiAgICB2YXIgaSA9IDAsXG4gICAgICB3YyA9IC0xO1xuICAgIC8vICAgIGJ1ZmZlciAgICAgICAgICAgICBoZWFkZXIgYnl0ZVxuICAgIHZhciBidWYgPSBuZXcgdTgoMjkyKSxcbiAgICAgIGhiID0gZGF0W2J0XTtcbiAgICAvLyBodWZmbWFuIHdlaWdodHNcbiAgICB2YXIgaHcgPSBidWYuc3ViYXJyYXkoMCwgMjU2KTtcbiAgICAvLyByYW5rIGNvdW50XG4gICAgdmFyIHJjID0gYnVmLnN1YmFycmF5KDI1NiwgMjY4KTtcbiAgICAvLyByYW5rIGluZGV4XG4gICAgdmFyIHJpID0gbmV3IHUxNihidWYuYnVmZmVyLCAyNjgpO1xuICAgIC8vIE5PVEU6IGF0IHRoaXMgcG9pbnQgYnQgaXMgMSBsZXNzIHRoYW4gZXhwZWN0ZWRcbiAgICBpZiAoaGIgPCAxMjgpIHtcbiAgICAgIC8vIGVuZCBieXRlLCBmc2UgZGVjb2RlIHRhYmxlXG4gICAgICB2YXIgX2EgPSByZnNlKGRhdCwgYnQgKyAxLCA2KSxcbiAgICAgICAgZWJ0ID0gX2FbMF0sXG4gICAgICAgIGZkdCA9IF9hWzFdO1xuICAgICAgYnQgKz0gaGI7XG4gICAgICB2YXIgZXBvcyA9IGVidCA8PCAzO1xuICAgICAgLy8gbGFzdCBieXRlXG4gICAgICB2YXIgbGIgPSBkYXRbYnRdO1xuICAgICAgaWYgKCFsYikgZXJyKDApO1xuICAgICAgLy8gIHN0YXRlMSAgIHN0YXRlMiAgIHN0YXRlMSBiaXRzICAgc3RhdGUyIGJpdHNcbiAgICAgIHZhciBzdDEgPSAwLFxuICAgICAgICBzdDIgPSAwLFxuICAgICAgICBidHIxID0gZmR0LmIsXG4gICAgICAgIGJ0cjIgPSBidHIxO1xuICAgICAgLy8gZnNlIHBvc1xuICAgICAgLy8gcHJlLWluY3JlbWVudCB0byBhY2NvdW50IGZvciBvcmlnaW5hbCBkZWZpY2l0IG9mIDFcbiAgICAgIHZhciBmcG9zID0gKCsrYnQgPDwgMykgLSA4ICsgbXNiKGxiKTtcbiAgICAgIGZvciAoOzspIHtcbiAgICAgICAgZnBvcyAtPSBidHIxO1xuICAgICAgICBpZiAoZnBvcyA8IGVwb3MpIGJyZWFrO1xuICAgICAgICB2YXIgY2J0ID0gZnBvcyA+PiAzO1xuICAgICAgICBzdDEgKz1cbiAgICAgICAgICAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKGZwb3MgJiA3KSkgJiAoKDEgPDwgYnRyMSkgLSAxKTtcbiAgICAgICAgaHdbKyt3Y10gPSBmZHQuc1tzdDFdO1xuICAgICAgICBmcG9zIC09IGJ0cjI7XG4gICAgICAgIGlmIChmcG9zIDwgZXBvcykgYnJlYWs7XG4gICAgICAgIGNidCA9IGZwb3MgPj4gMztcbiAgICAgICAgc3QyICs9XG4gICAgICAgICAgKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChmcG9zICYgNykpICYgKCgxIDw8IGJ0cjIpIC0gMSk7XG4gICAgICAgIGh3Wysrd2NdID0gZmR0LnNbc3QyXTtcbiAgICAgICAgYnRyMSA9IGZkdC5uW3N0MV07XG4gICAgICAgIHN0MSA9IGZkdC50W3N0MV07XG4gICAgICAgIGJ0cjIgPSBmZHQubltzdDJdO1xuICAgICAgICBzdDIgPSBmZHQudFtzdDJdO1xuICAgICAgfVxuICAgICAgaWYgKCsrd2MgPiAyNTUpIGVycigwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2MgPSBoYiAtIDEyNztcbiAgICAgIGZvciAoOyBpIDwgd2M7IGkgKz0gMikge1xuICAgICAgICB2YXIgYnl0ZSA9IGRhdFsrK2J0XTtcbiAgICAgICAgaHdbaV0gPSBieXRlID4+IDQ7XG4gICAgICAgIGh3W2kgKyAxXSA9IGJ5dGUgJiAxNTtcbiAgICAgIH1cbiAgICAgICsrYnQ7XG4gICAgfVxuICAgIC8vIHdlaWdodCBleHBvbmVudGlhbCBzdW1cbiAgICB2YXIgd2VzID0gMDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgd2M7ICsraSkge1xuICAgICAgdmFyIHd0ID0gaHdbaV07XG4gICAgICAvLyBiaXRzIG11c3QgYmUgYXQgbW9zdCAxMSwgc2FtZSBhcyB3ZWlnaHRcbiAgICAgIGlmICh3dCA+IDExKSBlcnIoMCk7XG4gICAgICB3ZXMgKz0gd3QgJiYgMSA8PCAod3QgLSAxKTtcbiAgICB9XG4gICAgLy8gbWF4IGJpdHNcbiAgICB2YXIgbWIgPSBtc2Iod2VzKSArIDE7XG4gICAgLy8gdGFibGUgc2l6ZVxuICAgIHZhciB0cyA9IDEgPDwgbWI7XG4gICAgLy8gcmVtYWluaW5nIHN1bVxuICAgIHZhciByZW0gPSB0cyAtIHdlcztcbiAgICAvLyBtdXN0IGJlIHBvd2VyIG9mIDJcbiAgICBpZiAocmVtICYgKHJlbSAtIDEpKSBlcnIoMCk7XG4gICAgaHdbd2MrK10gPSBtc2IocmVtKSArIDE7XG4gICAgZm9yIChpID0gMDsgaSA8IHdjOyArK2kpIHtcbiAgICAgIHZhciB3dCA9IGh3W2ldO1xuICAgICAgKytyY1soaHdbaV0gPSB3dCAmJiBtYiArIDEgLSB3dCldO1xuICAgIH1cbiAgICAvLyBodWYgYnVmXG4gICAgdmFyIGhidWYgPSBuZXcgdTgodHMgPDwgMSk7XG4gICAgLy8gICAgc3ltYm9scyAgICAgICAgICAgICAgICAgICAgICBudW0gYml0c1xuICAgIHZhciBzeW1zID0gaGJ1Zi5zdWJhcnJheSgwLCB0cyksXG4gICAgICBuYiA9IGhidWYuc3ViYXJyYXkodHMpO1xuICAgIHJpW21iXSA9IDA7XG4gICAgZm9yIChpID0gbWI7IGkgPiAwOyAtLWkpIHtcbiAgICAgIHZhciBwdiA9IHJpW2ldO1xuICAgICAgZmlsbChuYiwgaSwgcHYsIChyaVtpIC0gMV0gPSBwdiArIHJjW2ldICogKDEgPDwgKG1iIC0gaSkpKSk7XG4gICAgfVxuICAgIGlmIChyaVswXSAhPT0gdHMpIGVycigwKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgd2M7ICsraSkge1xuICAgICAgdmFyIGJpdHMgPSBod1tpXTtcbiAgICAgIGlmIChiaXRzKSB7XG4gICAgICAgIHZhciBjb2RlID0gcmlbYml0c107XG4gICAgICAgIGZpbGwoc3ltcywgaSwgY29kZSwgKHJpW2JpdHNdID0gY29kZSArICgxIDw8IChtYiAtIGJpdHMpKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gW1xuICAgICAgYnQsXG4gICAgICB7XG4gICAgICAgIG46IG5iLFxuICAgICAgICBiOiBtYixcbiAgICAgICAgczogc3ltcyxcbiAgICAgIH0sXG4gICAgXTtcbiAgfTtcbiAgLy8gVGFibGVzIGdlbmVyYXRlZCB1c2luZyB0aGlzOlxuICAvLyBodHRwczovL2dpc3QuZ2l0aHViLmNvbS8xMDFhcnJvd3ovYTk3OTQ1MmQ0MzU1OTkyY2JmOGYyNTdjYmZmYzllZGRcbiAgLy8gZGVmYXVsdCBsaXRlcmFsIGxlbmd0aCB0YWJsZVxuICB2YXIgZGxsdCA9IC8qI19fUFVSRV9fKi8gcmZzZShcbiAgICAvKiNfX1BVUkVfXyovIG5ldyB1OChbXG4gICAgICA4MSwgMTYsIDk5LCAxNDAsIDQ5LCAxOTgsIDI0LCA5OSwgMTIsIDMzLCAxOTYsIDI0LCA5OSwgMTAyLCAxMDIsIDEzNCwgNzAsXG4gICAgICAxNDYsIDQsXG4gICAgXSksXG4gICAgMCxcbiAgICA2LFxuICApWzFdO1xuICAvLyBkZWZhdWx0IG1hdGNoIGxlbmd0aCB0YWJsZVxuICB2YXIgZG1sdCA9IC8qI19fUFVSRV9fKi8gcmZzZShcbiAgICAvKiNfX1BVUkVfXyovIG5ldyB1OChbXG4gICAgICAzMywgMjAsIDE5NiwgMjQsIDk5LCAxNDAsIDMzLCAxMzIsIDE2LCA2NiwgOCwgMzMsIDEzMiwgMTYsIDY2LCA4LCAzMywgNjgsXG4gICAgICA2OCwgNjgsIDY4LCA2OCwgNjgsIDY4LCA2OCwgMzYsIDksXG4gICAgXSksXG4gICAgMCxcbiAgICA2LFxuICApWzFdO1xuICAvLyBkZWZhdWx0IG9mZnNldCBjb2RlIHRhYmxlXG4gIHZhciBkb2N0ID0gLyojX19QVVJFX18gKi8gcmZzZShcbiAgICAvKiNfX1BVUkVfXyovIG5ldyB1OChbMzIsIDEzMiwgMTYsIDY2LCAxMDIsIDcwLCA2OCwgNjgsIDY4LCA2OCwgMzYsIDczLCAyXSksXG4gICAgMCxcbiAgICA1LFxuICApWzFdO1xuICAvLyBiaXRzIHRvIGJhc2VsaW5lXG4gIHZhciBiMmJsID0gZnVuY3Rpb24gKGIsIHMpIHtcbiAgICB2YXIgbGVuID0gYi5sZW5ndGgsXG4gICAgICBibCA9IG5ldyBpMzIobGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICBibFtpXSA9IHM7XG4gICAgICBzICs9IDEgPDwgYltpXTtcbiAgICB9XG4gICAgcmV0dXJuIGJsO1xuICB9O1xuICAvLyBsaXRlcmFsIGxlbmd0aCBiaXRzXG4gIHZhciBsbGIgPSAvKiNfX1BVUkVfXyAqLyBuZXcgdTgoXG4gICAgLyojX19QVVJFX18gKi8gbmV3IGkzMihbXG4gICAgICAwLCAwLCAwLCAwLCAxNjg0MzAwOSwgNTA1Mjg3NzAsIDEzNDY3ODAyMCwgMjAyMDUwMDU3LCAyNjk0MjIwOTMsXG4gICAgXSkuYnVmZmVyLFxuICAgIDAsXG4gICAgMzYsXG4gICk7XG4gIC8vIGxpdGVyYWwgbGVuZ3RoIGJhc2VsaW5lXG4gIHZhciBsbGJsID0gLyojX19QVVJFX18gKi8gYjJibChsbGIsIDApO1xuICAvLyBtYXRjaCBsZW5ndGggYml0c1xuICB2YXIgbWxiID0gLyojX19QVVJFX18gKi8gbmV3IHU4KFxuICAgIC8qI19fUFVSRV9fICovIG5ldyBpMzIoW1xuICAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY4NDMwMDksIDUwNTI4NzcwLCAxMTc3NjkyMjAsIDE4NTIwNzA0OCxcbiAgICAgIDI1MjU3OTA4NCwgMTYsXG4gICAgXSkuYnVmZmVyLFxuICAgIDAsXG4gICAgNTMsXG4gICk7XG4gIC8vIG1hdGNoIGxlbmd0aCBiYXNlbGluZVxuICB2YXIgbWxibCA9IC8qI19fUFVSRV9fICovIGIyYmwobWxiLCAzKTtcbiAgLy8gZGVjb2RlIGh1ZmZtYW4gc3RyZWFtXG4gIHZhciBkaHUgPSBmdW5jdGlvbiAoZGF0LCBvdXQsIGh1KSB7XG4gICAgdmFyIGxlbiA9IGRhdC5sZW5ndGgsXG4gICAgICBzcyA9IG91dC5sZW5ndGgsXG4gICAgICBsYiA9IGRhdFtsZW4gLSAxXSxcbiAgICAgIG1zayA9ICgxIDw8IGh1LmIpIC0gMSxcbiAgICAgIGViID0gLWh1LmI7XG4gICAgaWYgKCFsYikgZXJyKDApO1xuICAgIHZhciBzdCA9IDAsXG4gICAgICBidHIgPSBodS5iLFxuICAgICAgcG9zID0gKGxlbiA8PCAzKSAtIDggKyBtc2IobGIpIC0gYnRyLFxuICAgICAgaSA9IC0xO1xuICAgIHdoaWxlIChwb3MgPiBlYiAmJiBpIDwgc3MpIHtcbiAgICAgIHZhciBjYnQgPSBwb3MgPj4gMztcbiAgICAgIHZhciB2YWwgPVxuICAgICAgICAoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpIHwgKGRhdFtjYnQgKyAyXSA8PCAxNikpID4+IChwb3MgJiA3KTtcbiAgICAgIHN0ID0gKChzdCA8PCBidHIpIHwgdmFsKSAmIG1zaztcbiAgICAgIG91dFsrK2ldID0gaHUuc1tzdF07XG4gICAgICBwb3MgLT0gYnRyID0gaHUubltzdF07XG4gICAgfVxuICAgIGlmIChwb3MgIT09IGViIHx8IGkgKyAxICE9PSBzcykgZXJyKDApO1xuICB9O1xuICAvLyBkZWNvZGUgaHVmZm1hbiBzdHJlYW0gNHhcbiAgLy8gVE9ETzogdXNlIHdvcmtlcnMgdG8gcGFyYWxsZWxpemVcbiAgdmFyIGRodTQgPSBmdW5jdGlvbiAoZGF0LCBvdXQsIGh1KSB7XG4gICAgdmFyIGJ0ID0gNjtcbiAgICB2YXIgc3MgPSBvdXQubGVuZ3RoLFxuICAgICAgc3oxID0gKHNzICsgMykgPj4gMixcbiAgICAgIHN6MiA9IHN6MSA8PCAxLFxuICAgICAgc3ozID0gc3oxICsgc3oyO1xuICAgIGRodShcbiAgICAgIGRhdC5zdWJhcnJheShidCwgKGJ0ICs9IGRhdFswXSB8IChkYXRbMV0gPDwgOCkpKSxcbiAgICAgIG91dC5zdWJhcnJheSgwLCBzejEpLFxuICAgICAgaHUsXG4gICAgKTtcbiAgICBkaHUoXG4gICAgICBkYXQuc3ViYXJyYXkoYnQsIChidCArPSBkYXRbMl0gfCAoZGF0WzNdIDw8IDgpKSksXG4gICAgICBvdXQuc3ViYXJyYXkoc3oxLCBzejIpLFxuICAgICAgaHUsXG4gICAgKTtcbiAgICBkaHUoXG4gICAgICBkYXQuc3ViYXJyYXkoYnQsIChidCArPSBkYXRbNF0gfCAoZGF0WzVdIDw8IDgpKSksXG4gICAgICBvdXQuc3ViYXJyYXkoc3oyLCBzejMpLFxuICAgICAgaHUsXG4gICAgKTtcbiAgICBkaHUoZGF0LnN1YmFycmF5KGJ0KSwgb3V0LnN1YmFycmF5KHN6MyksIGh1KTtcbiAgfTtcbiAgLy8gcmVhZCBac3RhbmRhcmQgYmxvY2tcbiAgdmFyIHJ6YiA9IGZ1bmN0aW9uIChkYXQsIHN0LCBvdXQpIHtcbiAgICB2YXIgX2E7XG4gICAgdmFyIGJ0ID0gc3QuYjtcbiAgICAvLyAgICBieXRlIDAgICAgICAgIGJsb2NrIHR5cGVcbiAgICB2YXIgYjAgPSBkYXRbYnRdLFxuICAgICAgYnR5cGUgPSAoYjAgPj4gMSkgJiAzO1xuICAgIHN0LmwgPSBiMCAmIDE7XG4gICAgdmFyIHN6ID0gKGIwID4+IDMpIHwgKGRhdFtidCArIDFdIDw8IDUpIHwgKGRhdFtidCArIDJdIDw8IDEzKTtcbiAgICAvLyBlbmQgYnl0ZSBmb3IgYmxvY2tcbiAgICB2YXIgZWJ0ID0gKGJ0ICs9IDMpICsgc3o7XG4gICAgaWYgKGJ0eXBlID09PSAxKSB7XG4gICAgICBpZiAoYnQgPj0gZGF0Lmxlbmd0aCkgcmV0dXJuO1xuICAgICAgc3QuYiA9IGJ0ICsgMTtcbiAgICAgIGlmIChvdXQpIHtcbiAgICAgICAgZmlsbChvdXQsIGRhdFtidF0sIHN0LnksIChzdC55ICs9IHN6KSk7XG4gICAgICAgIHJldHVybiBvdXQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmlsbChuZXcgdTgoc3opLCBkYXRbYnRdKTtcbiAgICB9XG4gICAgaWYgKGVidCA+IGRhdC5sZW5ndGgpIHJldHVybjtcbiAgICBpZiAoYnR5cGUgPT09IDApIHtcbiAgICAgIHN0LmIgPSBlYnQ7XG4gICAgICBpZiAob3V0KSB7XG4gICAgICAgIG91dC5zZXQoZGF0LnN1YmFycmF5KGJ0LCBlYnQpLCBzdC55KTtcbiAgICAgICAgc3QueSArPSBzejtcbiAgICAgICAgcmV0dXJuIG91dDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzbGMoZGF0LCBidCwgZWJ0KTtcbiAgICB9XG4gICAgaWYgKGJ0eXBlID09PSAyKSB7XG4gICAgICAvLyAgICBieXRlIDMgICAgICAgIGxpdCBidHlwZSAgICAgc2l6ZSBmb3JtYXRcbiAgICAgIHZhciBiMyA9IGRhdFtidF0sXG4gICAgICAgIGxidCA9IGIzICYgMyxcbiAgICAgICAgc2YgPSAoYjMgPj4gMikgJiAzO1xuICAgICAgLy8gbGl0IHNyYyBzaXplICBsaXQgY21wIHN6IDQgc3RyZWFtc1xuICAgICAgdmFyIGxzcyA9IGIzID4+IDQsXG4gICAgICAgIGxjcyA9IDAsXG4gICAgICAgIHM0ID0gMDtcbiAgICAgIGlmIChsYnQgPCAyKSB7XG4gICAgICAgIGlmIChzZiAmIDEpIGxzcyB8PSAoZGF0WysrYnRdIDw8IDQpIHwgKHNmICYgMiAmJiBkYXRbKytidF0gPDwgMTIpO1xuICAgICAgICBlbHNlIGxzcyA9IGIzID4+IDM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzNCA9IHNmO1xuICAgICAgICBpZiAoc2YgPCAyKVxuICAgICAgICAgIChsc3MgfD0gKGRhdFsrK2J0XSAmIDYzKSA8PCA0KSxcbiAgICAgICAgICAgIChsY3MgPSAoZGF0W2J0XSA+PiA2KSB8IChkYXRbKytidF0gPDwgMikpO1xuICAgICAgICBlbHNlIGlmIChzZiA9PT0gMilcbiAgICAgICAgICAobHNzIHw9IChkYXRbKytidF0gPDwgNCkgfCAoKGRhdFsrK2J0XSAmIDMpIDw8IDEyKSksXG4gICAgICAgICAgICAobGNzID0gKGRhdFtidF0gPj4gMikgfCAoZGF0WysrYnRdIDw8IDYpKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIChsc3MgfD0gKGRhdFsrK2J0XSA8PCA0KSB8ICgoZGF0WysrYnRdICYgNjMpIDw8IDEyKSksXG4gICAgICAgICAgICAobGNzID0gKGRhdFtidF0gPj4gNikgfCAoZGF0WysrYnRdIDw8IDIpIHwgKGRhdFsrK2J0XSA8PCAxMCkpO1xuICAgICAgfVxuICAgICAgKytidDtcbiAgICAgIC8vIGFkZCBsaXRlcmFscyB0byBlbmQgLSBjYW4gbmV2ZXIgb3ZlcmxhcCB3aXRoIGJhY2tyZWZlcmVuY2VzIGJlY2F1c2UgdW51c2VkIGxpdGVyYWxzIGFsd2F5cyBhcHBlbmRlZFxuICAgICAgdmFyIGJ1ZiA9IG91dCA/IG91dC5zdWJhcnJheShzdC55LCBzdC55ICsgc3QubSkgOiBuZXcgdTgoc3QubSk7XG4gICAgICAvLyBzdGFydGluZyBwb2ludCBmb3IgbGl0ZXJhbHNcbiAgICAgIHZhciBzcGwgPSBidWYubGVuZ3RoIC0gbHNzO1xuICAgICAgaWYgKGxidCA9PT0gMCkgYnVmLnNldChkYXQuc3ViYXJyYXkoYnQsIChidCArPSBsc3MpKSwgc3BsKTtcbiAgICAgIGVsc2UgaWYgKGxidCA9PT0gMSkgZmlsbChidWYsIGRhdFtidCsrXSwgc3BsKTtcbiAgICAgIGVsc2Uge1xuICAgICAgICAvLyBodWZmbWFuIHRhYmxlXG4gICAgICAgIHZhciBodSA9IHN0Lmg7XG4gICAgICAgIGlmIChsYnQgPT09IDIpIHtcbiAgICAgICAgICB2YXIgaHVkID0gcmh1KGRhdCwgYnQpO1xuICAgICAgICAgIC8vIHN1YnRyYWN0IGRlc2NyaXB0aW9uIGxlbmd0aFxuICAgICAgICAgIGxjcyArPSBidCAtIChidCA9IGh1ZFswXSk7XG4gICAgICAgICAgc3QuaCA9IGh1ID0gaHVkWzFdO1xuICAgICAgICB9IGVsc2UgaWYgKCFodSkgZXJyKDApO1xuICAgICAgICAoczQgPyBkaHU0IDogZGh1KShkYXQuc3ViYXJyYXkoYnQsIChidCArPSBsY3MpKSwgYnVmLnN1YmFycmF5KHNwbCksIGh1KTtcbiAgICAgIH1cbiAgICAgIC8vIG51bSBzZXF1ZW5jZXNcbiAgICAgIHZhciBucyA9IGRhdFtidCsrXTtcbiAgICAgIGlmIChucykge1xuICAgICAgICBpZiAobnMgPT09IDI1NSkgbnMgPSAoZGF0W2J0KytdIHwgKGRhdFtidCsrXSA8PCA4KSkgKyAweDdmMDA7XG4gICAgICAgIGVsc2UgaWYgKG5zID4gMTI3KSBucyA9ICgobnMgLSAxMjgpIDw8IDgpIHwgZGF0W2J0KytdO1xuICAgICAgICAvLyBzeW1ib2wgY29tcHJlc3Npb24gbW9kZXNcbiAgICAgICAgdmFyIHNjbSA9IGRhdFtidCsrXTtcbiAgICAgICAgaWYgKHNjbSAmIDMpIGVycigwKTtcbiAgICAgICAgdmFyIGR0cyA9IFtkbWx0LCBkb2N0LCBkbGx0XTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDI7IGkgPiAtMTsgLS1pKSB7XG4gICAgICAgICAgdmFyIG1kID0gKHNjbSA+PiAoKGkgPDwgMSkgKyAyKSkgJiAzO1xuICAgICAgICAgIGlmIChtZCA9PT0gMSkge1xuICAgICAgICAgICAgLy8gcmxlIGJ1ZlxuICAgICAgICAgICAgdmFyIHJidWYgPSBuZXcgdTgoWzAsIDAsIGRhdFtidCsrXV0pO1xuICAgICAgICAgICAgZHRzW2ldID0ge1xuICAgICAgICAgICAgICBzOiByYnVmLnN1YmFycmF5KDIsIDMpLFxuICAgICAgICAgICAgICBuOiByYnVmLnN1YmFycmF5KDAsIDEpLFxuICAgICAgICAgICAgICB0OiBuZXcgdTE2KHJidWYuYnVmZmVyLCAwLCAxKSxcbiAgICAgICAgICAgICAgYjogMCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSBlbHNlIGlmIChtZCA9PT0gMikge1xuICAgICAgICAgICAgLy8gYWNjdXJhY3kgbG9nIDggZm9yIG9mZnNldHMsIDkgZm9yIG90aGVyc1xuICAgICAgICAgICAgKF9hID0gcmZzZShkYXQsIGJ0LCA5IC0gKGkgJiAxKSkpLCAoYnQgPSBfYVswXSksIChkdHNbaV0gPSBfYVsxXSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChtZCA9PT0gMykge1xuICAgICAgICAgICAgaWYgKCFzdC50KSBlcnIoMCk7XG4gICAgICAgICAgICBkdHNbaV0gPSBzdC50W2ldO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgX2IgPSAoc3QudCA9IGR0cyksXG4gICAgICAgICAgbWx0ID0gX2JbMF0sXG4gICAgICAgICAgb2N0ID0gX2JbMV0sXG4gICAgICAgICAgbGx0ID0gX2JbMl07XG4gICAgICAgIHZhciBsYiA9IGRhdFtlYnQgLSAxXTtcbiAgICAgICAgaWYgKCFsYikgZXJyKDApO1xuICAgICAgICB2YXIgc3BvcyA9IChlYnQgPDwgMykgLSA4ICsgbXNiKGxiKSAtIGxsdC5iLFxuICAgICAgICAgIGNidCA9IHNwb3MgPj4gMyxcbiAgICAgICAgICBvdWJ0ID0gMDtcbiAgICAgICAgdmFyIGxzdCA9XG4gICAgICAgICAgKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IGxsdC5iKSAtIDEpO1xuICAgICAgICBjYnQgPSAoc3BvcyAtPSBvY3QuYikgPj4gMztcbiAgICAgICAgdmFyIG9zdCA9XG4gICAgICAgICAgKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG9jdC5iKSAtIDEpO1xuICAgICAgICBjYnQgPSAoc3BvcyAtPSBtbHQuYikgPj4gMztcbiAgICAgICAgdmFyIG1zdCA9XG4gICAgICAgICAgKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG1sdC5iKSAtIDEpO1xuICAgICAgICBmb3IgKCsrbnM7IC0tbnM7ICkge1xuICAgICAgICAgIHZhciBsbGMgPSBsbHQuc1tsc3RdO1xuICAgICAgICAgIHZhciBsYnRyID0gbGx0Lm5bbHN0XTtcbiAgICAgICAgICB2YXIgbWxjID0gbWx0LnNbbXN0XTtcbiAgICAgICAgICB2YXIgbWJ0ciA9IG1sdC5uW21zdF07XG4gICAgICAgICAgdmFyIG9mYyA9IG9jdC5zW29zdF07XG4gICAgICAgICAgdmFyIG9idHIgPSBvY3Qubltvc3RdO1xuICAgICAgICAgIGNidCA9IChzcG9zIC09IG9mYykgPj4gMztcbiAgICAgICAgICB2YXIgb2ZwID0gMSA8PCBvZmM7XG4gICAgICAgICAgdmFyIG9mZiA9XG4gICAgICAgICAgICBvZnAgK1xuICAgICAgICAgICAgKCgoZGF0W2NidF0gfFxuICAgICAgICAgICAgICAoZGF0W2NidCArIDFdIDw8IDgpIHxcbiAgICAgICAgICAgICAgKGRhdFtjYnQgKyAyXSA8PCAxNikgfFxuICAgICAgICAgICAgICAoZGF0W2NidCArIDNdIDw8IDI0KSkgPj4+XG4gICAgICAgICAgICAgIChzcG9zICYgNykpICZcbiAgICAgICAgICAgICAgKG9mcCAtIDEpKTtcbiAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBtbGJbbWxjXSkgPj4gMztcbiAgICAgICAgICB2YXIgbWwgPVxuICAgICAgICAgICAgbWxibFttbGNdICtcbiAgICAgICAgICAgICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpKSA+PlxuICAgICAgICAgICAgICAoc3BvcyAmIDcpKSAmXG4gICAgICAgICAgICAgICgoMSA8PCBtbGJbbWxjXSkgLSAxKSk7XG4gICAgICAgICAgY2J0ID0gKHNwb3MgLT0gbGxiW2xsY10pID4+IDM7XG4gICAgICAgICAgdmFyIGxsID1cbiAgICAgICAgICAgIGxsYmxbbGxjXSArXG4gICAgICAgICAgICAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSkgPj5cbiAgICAgICAgICAgICAgKHNwb3MgJiA3KSkgJlxuICAgICAgICAgICAgICAoKDEgPDwgbGxiW2xsY10pIC0gMSkpO1xuICAgICAgICAgIGNidCA9IChzcG9zIC09IGxidHIpID4+IDM7XG4gICAgICAgICAgbHN0ID1cbiAgICAgICAgICAgIGxsdC50W2xzdF0gK1xuICAgICAgICAgICAgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmXG4gICAgICAgICAgICAgICgoMSA8PCBsYnRyKSAtIDEpKTtcbiAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBtYnRyKSA+PiAzO1xuICAgICAgICAgIG1zdCA9XG4gICAgICAgICAgICBtbHQudFttc3RdICtcbiAgICAgICAgICAgICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJlxuICAgICAgICAgICAgICAoKDEgPDwgbWJ0cikgLSAxKSk7XG4gICAgICAgICAgY2J0ID0gKHNwb3MgLT0gb2J0cikgPj4gMztcbiAgICAgICAgICBvc3QgPVxuICAgICAgICAgICAgb2N0LnRbb3N0XSArXG4gICAgICAgICAgICAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICZcbiAgICAgICAgICAgICAgKCgxIDw8IG9idHIpIC0gMSkpO1xuICAgICAgICAgIGlmIChvZmYgPiAzKSB7XG4gICAgICAgICAgICBzdC5vWzJdID0gc3Qub1sxXTtcbiAgICAgICAgICAgIHN0Lm9bMV0gPSBzdC5vWzBdO1xuICAgICAgICAgICAgc3Qub1swXSA9IG9mZiAtPSAzO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgaWR4ID0gb2ZmIC0gKGxsICE9PSAwKTtcbiAgICAgICAgICAgIGlmIChpZHgpIHtcbiAgICAgICAgICAgICAgb2ZmID0gaWR4ID09PSAzID8gc3Qub1swXSAtIDEgOiBzdC5vW2lkeF07XG4gICAgICAgICAgICAgIGlmIChpZHggPiAxKSBzdC5vWzJdID0gc3Qub1sxXTtcbiAgICAgICAgICAgICAgc3Qub1sxXSA9IHN0Lm9bMF07XG4gICAgICAgICAgICAgIHN0Lm9bMF0gPSBvZmY7XG4gICAgICAgICAgICB9IGVsc2Ugb2ZmID0gc3Qub1swXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsbDsgKytpKSB7XG4gICAgICAgICAgICBidWZbb3VidCArIGldID0gYnVmW3NwbCArIGldO1xuICAgICAgICAgIH1cbiAgICAgICAgICAob3VidCArPSBsbCksIChzcGwgKz0gbGwpO1xuICAgICAgICAgIHZhciBzdGluID0gb3VidCAtIG9mZjtcbiAgICAgICAgICBpZiAoc3RpbiA8IDApIHtcbiAgICAgICAgICAgIHZhciBsZW4gPSAtc3RpbjtcbiAgICAgICAgICAgIHZhciBicyA9IHN0LmUgKyBzdGluO1xuICAgICAgICAgICAgaWYgKGxlbiA+IG1sKSBsZW4gPSBtbDtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgICAgICAgICAgYnVmW291YnQgKyBpXSA9IHN0LndbYnMgKyBpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIChvdWJ0ICs9IGxlbiksIChtbCAtPSBsZW4pLCAoc3RpbiA9IDApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1sOyArK2kpIHtcbiAgICAgICAgICAgIGJ1ZltvdWJ0ICsgaV0gPSBidWZbc3RpbiArIGldO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvdWJ0ICs9IG1sO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvdWJ0ICE9PSBzcGwpIHtcbiAgICAgICAgICB3aGlsZSAoc3BsIDwgYnVmLmxlbmd0aCkge1xuICAgICAgICAgICAgYnVmW291YnQrK10gPSBidWZbc3BsKytdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIG91YnQgPSBidWYubGVuZ3RoO1xuICAgICAgICBpZiAob3V0KSBzdC55ICs9IG91YnQ7XG4gICAgICAgIGVsc2UgYnVmID0gc2xjKGJ1ZiwgMCwgb3VidCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAob3V0KSB7XG4gICAgICAgICAgc3QueSArPSBsc3M7XG4gICAgICAgICAgaWYgKHNwbCkge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsc3M7ICsraSkge1xuICAgICAgICAgICAgICBidWZbaV0gPSBidWZbc3BsICsgaV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHNwbCkgYnVmID0gc2xjKGJ1Ziwgc3BsKTtcbiAgICAgIH1cbiAgICAgIHN0LmIgPSBlYnQ7XG4gICAgICByZXR1cm4gYnVmO1xuICAgIH1cbiAgICBlcnIoMik7XG4gIH07XG4gIC8vIGNvbmNhdFxuICB2YXIgY2N0ID0gZnVuY3Rpb24gKGJ1ZnMsIG9sKSB7XG4gICAgaWYgKGJ1ZnMubGVuZ3RoID09PSAxKSByZXR1cm4gYnVmc1swXTtcbiAgICB2YXIgYnVmID0gbmV3IHU4KG9sKTtcbiAgICBmb3IgKHZhciBpID0gMCwgYiA9IDA7IGkgPCBidWZzLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YXIgY2hrID0gYnVmc1tpXTtcbiAgICAgIGJ1Zi5zZXQoY2hrLCBiKTtcbiAgICAgIGIgKz0gY2hrLmxlbmd0aDtcbiAgICB9XG4gICAgcmV0dXJuIGJ1ZjtcbiAgfTtcbiAgLyoqXG4gICAqIERlY29tcHJlc3NlcyBac3RhbmRhcmQgZGF0YVxuICAgKiBAcGFyYW0gZGF0IFRoZSBpbnB1dCBkYXRhXG4gICAqIEBwYXJhbSBidWYgVGhlIG91dHB1dCBidWZmZXIuIElmIHVuc3BlY2lmaWVkLCB0aGUgZnVuY3Rpb24gd2lsbCBhbGxvY2F0ZVxuICAgKiAgICAgICAgICAgIGV4YWN0bHkgZW5vdWdoIG1lbW9yeSB0byBmaXQgdGhlIGRlY29tcHJlc3NlZCBkYXRhLiBJZiB5b3VyXG4gICAqICAgICAgICAgICAgZGF0YSBoYXMgbXVsdGlwbGUgZnJhbWVzIGFuZCB5b3Uga25vdyB0aGUgb3V0cHV0IHNpemUsIHNwZWNpZnlpbmdcbiAgICogICAgICAgICAgICBpdCB3aWxsIHlpZWxkIGJldHRlciBwZXJmb3JtYW5jZS5cbiAgICogQHJldHVybnMgVGhlIGRlY29tcHJlc3NlZCBkYXRhXG4gICAqL1xuICByZXR1cm4gZnVuY3Rpb24gZGVjb21wcmVzcyhkYXQsIGJ1Zikge1xuICAgIHZhciBidCA9IDAsXG4gICAgICBidWZzID0gW10sXG4gICAgICBuYiA9ICshYnVmLFxuICAgICAgb2wgPSAwO1xuICAgIHdoaWxlIChkYXQubGVuZ3RoKSB7XG4gICAgICB2YXIgc3QgPSByemZoKGRhdCwgbmIgfHwgYnVmKTtcbiAgICAgIGlmICh0eXBlb2Ygc3QgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgaWYgKG5iKSB7XG4gICAgICAgICAgYnVmID0gbnVsbDtcbiAgICAgICAgICBpZiAoc3Qudy5sZW5ndGggPT09IHN0LnUpIHtcbiAgICAgICAgICAgIGJ1ZnMucHVzaCgoYnVmID0gc3QudykpO1xuICAgICAgICAgICAgb2wgKz0gc3QudTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYnVmcy5wdXNoKGJ1Zik7XG4gICAgICAgICAgc3QuZSA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKCFzdC5sKSB7XG4gICAgICAgICAgdmFyIGJsayA9IHJ6YihkYXQsIHN0LCBidWYpO1xuICAgICAgICAgIGlmICghYmxrKSBlcnIoNSk7XG4gICAgICAgICAgaWYgKGJ1Zikgc3QuZSA9IHN0Lnk7XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBidWZzLnB1c2goYmxrKTtcbiAgICAgICAgICAgIG9sICs9IGJsay5sZW5ndGg7XG4gICAgICAgICAgICBjcHcoc3QudywgMCwgYmxrLmxlbmd0aCk7XG4gICAgICAgICAgICBzdC53LnNldChibGssIHN0LncubGVuZ3RoIC0gYmxrLmxlbmd0aCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJ0ID0gc3QuYiArIHN0LmMgKiA0O1xuICAgICAgfSBlbHNlIGJ0ID0gc3Q7XG4gICAgICBkYXQgPSBkYXQuc3ViYXJyYXkoYnQpO1xuICAgIH1cbiAgICByZXR1cm4gY2N0KGJ1ZnMsIG9sKTtcbiAgfTtcbn0pKCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuLy9WZXJzaW9uOiA8IDUuMS4wXG52YXIgY2FtbF9kZWNvbXByZXNzX2lucHV0ID0gbnVsbDtcblxuLy9Qcm92aWRlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1ZlcnNpb246ID49IDUuMS4wXG4vL1ZlcnNpb246IDwgNS4xLjFcbi8vUmVxdWlyZXM6IHpzdGRfZGVjb21wcmVzc1xudmFyIGNhbWxfZGVjb21wcmVzc19pbnB1dCA9IHpzdGRfZGVjb21wcmVzcztcblxuLy9Qcm92aWRlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1ZlcnNpb246ID49IDUuMS4xXG4vL1ZlcnNpb246IDwgNS4yLjBcbnZhciBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSBudWxsO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vVmVyc2lvbjogPj0gNS4yXG4vL1JlcXVpcmVzOiB6c3RkX2RlY29tcHJlc3NcbnZhciBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSB6c3RkX2RlY29tcHJlc3M7XG5cbi8vUHJvdmlkZXM6IGNhbWxfenN0ZF9pbml0aWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vUmVxdWlyZXM6IHpzdGRfZGVjb21wcmVzc1xuLy9WZXJzaW9uOiA+PSA1LjEuMVxuZnVuY3Rpb24gY2FtbF96c3RkX2luaXRpYWxpemUoX3VuaXQpIHtcbiAgY2FtbF9kZWNvbXByZXNzX2lucHV0ID0genN0ZF9kZWNvbXByZXNzO1xuICByZXR1cm4gMTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLyBXZWFrIEFQSVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfa2V5X29mZnNldFxudmFyIGNhbWxfZXBoZV9rZXlfb2Zmc2V0ID0gMztcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG52YXIgY2FtbF9lcGhlX2RhdGFfb2Zmc2V0ID0gMjtcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX25vbmVcbnZhciBjYW1sX2VwaGVfbm9uZSA9IHsgY2FtbF9lcGhlX25vbmU6IDAgfTtcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3NldF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZ2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9zZXRfZGF0YV9vcHRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9zZXRfa2V5KHgsIGksIHYpIHtcbiAgdmFyIG9sZCA9IGNhbWxfZXBoZV9nZXRfZGF0YSh4KTtcbiAgaWYgKGdsb2JhbFRoaXMuV2Vha1JlZiAmJiB2IGluc3RhbmNlb2YgT2JqZWN0KSB2ID0gbmV3IGdsb2JhbFRoaXMuV2Vha1JlZih2KTtcbiAgeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldID0gdjtcbiAgY2FtbF9lcGhlX3NldF9kYXRhX29wdCh4LCBvbGQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3Vuc2V0X2tleVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9nZXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX3NldF9kYXRhX29wdFxuLy9SZXF1aXJlczogY2FtbF9lcGhlX25vbmVcbmZ1bmN0aW9uIGNhbWxfZXBoZV91bnNldF9rZXkoeCwgaSkge1xuICB2YXIgb2xkID0gY2FtbF9lcGhlX2dldF9kYXRhKHgpO1xuICB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gPSBjYW1sX2VwaGVfbm9uZTtcbiAgY2FtbF9lcGhlX3NldF9kYXRhX29wdCh4LCBvbGQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF93ZWFrX2NyZWF0ZVxuZnVuY3Rpb24gY2FtbF9lcGhlX2NyZWF0ZShuKSB7XG4gIHJldHVybiBjYW1sX3dlYWtfY3JlYXRlKG4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dlYWtfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldFxuLy9SZXF1aXJlczogY2FtbF9lcGhlX25vbmVcbmZ1bmN0aW9uIGNhbWxfd2Vha19jcmVhdGUobikge1xuICB2YXIgYWxlbiA9IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgbjtcbiAgdmFyIHggPSBuZXcgQXJyYXkoYWxlbik7XG4gIHhbMF0gPSAyNTE7XG4gIHhbMV0gPSBcImNhbWxfZXBoZV9saXN0X2hlYWRcIjtcbiAgZm9yICh2YXIgaSA9IDI7IGkgPCBhbGVuOyBpKyspIHtcbiAgICB4W2ldID0gY2FtbF9lcGhlX25vbmU7XG4gIH1cbiAgcmV0dXJuIHg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfd2Vha19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9zZXRfa2V5LCBjYW1sX2VwaGVfdW5zZXRfa2V5XG5mdW5jdGlvbiBjYW1sX3dlYWtfc2V0KHgsIGksIHYpIHtcbiAgaWYgKHYgPT09IDApIGNhbWxfZXBoZV91bnNldF9rZXkoeCwgaSk7XG4gIGVsc2UgY2FtbF9lcGhlX3NldF9rZXkoeCwgaSwgdlsxXSk7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0LCBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9ub25lXG4vL0FsaWFzOiBjYW1sX3dlYWtfZ2V0XG5cbmZ1bmN0aW9uIGNhbWxfZXBoZV9nZXRfa2V5KHgsIGkpIHtcbiAgdmFyIHdlYWsgPSB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV07XG4gIGlmICh3ZWFrID09PSBjYW1sX2VwaGVfbm9uZSkgcmV0dXJuIDA7XG4gIGlmIChnbG9iYWxUaGlzLldlYWtSZWYgJiYgd2VhayBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgIHdlYWsgPSB3ZWFrLmRlcmVmKCk7XG4gICAgaWYgKHdlYWsgPT09IHVuZGVmaW5lZCkge1xuICAgICAgeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldID0gY2FtbF9lcGhlX25vbmU7XG4gICAgICB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPSBjYW1sX2VwaGVfbm9uZTtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgfVxuICByZXR1cm4gWzAsIHdlYWtdO1xufVxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9rZXlfY29weVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2dldF9rZXksY2FtbF9lcGhlX2tleV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX2R1cFxuLy9BbGlhczogY2FtbF93ZWFrX2dldF9jb3B5XG5mdW5jdGlvbiBjYW1sX2VwaGVfZ2V0X2tleV9jb3B5KHgsIGkpIHtcbiAgdmFyIHkgPSBjYW1sX2VwaGVfZ2V0X2tleSh4LCBpKTtcbiAgaWYgKHkgPT09IDApIHJldHVybiB5O1xuICB2YXIgeiA9IHlbMV07XG4gIGlmIChBcnJheS5pc0FycmF5KHopKSByZXR1cm4gWzAsIGNhbWxfb2JqX2R1cCh6KV07XG4gIHJldHVybiB5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfY2hlY2tfa2V5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0LCBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9ub25lXG4vL0FsaWFzOiBjYW1sX3dlYWtfY2hlY2tcbmZ1bmN0aW9uIGNhbWxfZXBoZV9jaGVja19rZXkoeCwgaSkge1xuICB2YXIgd2VhayA9IHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXTtcbiAgaWYgKHdlYWsgPT09IGNhbWxfZXBoZV9ub25lKSByZXR1cm4gMDtcbiAgaWYgKGdsb2JhbFRoaXMuV2Vha1JlZiAmJiB3ZWFrIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgd2VhayA9IHdlYWsuZGVyZWYoKTtcbiAgICBpZiAod2VhayA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gPSBjYW1sX2VwaGVfbm9uZTtcbiAgICAgIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9IGNhbWxfZXBoZV9ub25lO1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICB9XG4gIHJldHVybiAxO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfYmxpdF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYmxpdFxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9nZXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX3NldF9kYXRhX29wdFxuLy9BbGlhczogY2FtbF93ZWFrX2JsaXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9ibGl0X2tleShhMSwgaTEsIGEyLCBpMiwgbGVuKSB7XG4gIHZhciBvbGQgPSBjYW1sX2VwaGVfZ2V0X2RhdGEoYTEpO1xuICAvLyBtaW51cyBvbmUgYmVjYXVzZSBjYW1sX2FycmF5X2JsaXQgd29ya3Mgb24gb2NhbWwgYXJyYXlcbiAgY2FtbF9hcnJheV9ibGl0KFxuICAgIGExLFxuICAgIGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaTEgLSAxLFxuICAgIGEyLFxuICAgIGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaTIgLSAxLFxuICAgIGxlbixcbiAgKTtcbiAgY2FtbF9lcGhlX3NldF9kYXRhX29wdChhMiwgb2xkKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9ibGl0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9nZXRfZGF0YSwgY2FtbF9lcGhlX3NldF9kYXRhX29wdFxuZnVuY3Rpb24gY2FtbF9lcGhlX2JsaXRfZGF0YShzcmMsIGRzdCkge1xuICB2YXIgb2xkID0gY2FtbF9lcGhlX2dldF9kYXRhKHNyYyk7XG4gIGNhbWxfZXBoZV9zZXRfZGF0YV9vcHQoZHN0LCBvbGQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXQsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfbm9uZVxuZnVuY3Rpb24gY2FtbF9lcGhlX2dldF9kYXRhKHgpIHtcbiAgdmFyIGRhdGEgPSB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF07XG4gIGlmIChkYXRhID09PSBjYW1sX2VwaGVfbm9uZSkgcmV0dXJuIDA7XG4gIGZvciAodmFyIGkgPSBjYW1sX2VwaGVfa2V5X29mZnNldDsgaSA8IHgubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgayA9IHhbaV07XG4gICAgaWYgKGdsb2JhbFRoaXMuV2Vha1JlZiAmJiBrIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgICB2YXIgZCA9IGsuZGVyZWYoKTtcbiAgICAgIGlmIChkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgeFtpXSA9IGNhbWxfZXBoZV9ub25lO1xuICAgICAgICB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPSBjYW1sX2VwaGVfbm9uZTtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgICBpZiAoZ2xvYmFsVGhpcy5XZWFrTWFwKSB7XG4gICAgICAgIGRhdGEgPSBkYXRhLmdldChrKTtcbiAgICAgICAgaWYgKGRhdGEgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9IGNhbWxfZXBoZV9ub25lO1xuICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBbMCwgZGF0YV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZ2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX2R1cFxuZnVuY3Rpb24gY2FtbF9lcGhlX2dldF9kYXRhX2NvcHkoeCkge1xuICB2YXIgciA9IGNhbWxfZXBoZV9nZXRfZGF0YSh4KTtcbiAgaWYgKHIgPT09IDApIHJldHVybiAwO1xuICB2YXIgeiA9IHJbMV07XG4gIGlmIChBcnJheS5pc0FycmF5KHopKSByZXR1cm4gWzAsIGNhbWxfb2JqX2R1cCh6KV07XG4gIHJldHVybiByO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfc2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldCwgY2FtbF9lcGhlX2tleV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9ub25lXG5mdW5jdGlvbiBjYW1sX2VwaGVfc2V0X2RhdGEoeCwgZGF0YSkge1xuICBmb3IgKHZhciBpID0geC5sZW5ndGggLSAxOyBpID49IGNhbWxfZXBoZV9rZXlfb2Zmc2V0OyBpLS0pIHtcbiAgICB2YXIgayA9IHhbaV07XG4gICAgaWYgKGdsb2JhbFRoaXMuV2Vha1JlZiAmJiBrIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgICB2YXIgZCA9IGsuZGVyZWYoKTtcbiAgICAgIGlmIChkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgeFtpXSA9IGNhbWxfZXBoZV9ub25lO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmIChnbG9iYWxUaGlzLldlYWtNYXApIHtcbiAgICAgICAgZGF0YSA9IG5ldyBnbG9iYWxUaGlzLldlYWtNYXAoKS5zZXQoaywgZGF0YSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9IGRhdGE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfc2V0X2RhdGFfb3B0XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfc2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV91bnNldF9kYXRhXG5mdW5jdGlvbiBjYW1sX2VwaGVfc2V0X2RhdGFfb3B0KHgsIGRhdGFfb3B0KSB7XG4gIGlmIChkYXRhX29wdCA9PT0gMCkgY2FtbF9lcGhlX3Vuc2V0X2RhdGEoeCk7XG4gIGVsc2UgY2FtbF9lcGhlX3NldF9kYXRhKHgsIGRhdGFfb3B0WzFdKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV91bnNldF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9ub25lXG5mdW5jdGlvbiBjYW1sX2VwaGVfdW5zZXRfZGF0YSh4KSB7XG4gIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9IGNhbWxfZXBoZV9ub25lO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2NoZWNrX2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9nZXRfZGF0YVxuZnVuY3Rpb24gY2FtbF9lcGhlX2NoZWNrX2RhdGEoeCkge1xuICB2YXIgZGF0YSA9IGNhbWxfZXBoZV9nZXRfZGF0YSh4KTtcbiAgaWYgKGRhdGEgPT09IDApIHJldHVybiAwO1xuICBlbHNlIHJldHVybiAxO1xufVxuIiwiLy9Qcm92aWRlczogY2FtbF9nY19taW5vclxuZnVuY3Rpb24gY2FtbF9nY19taW5vcihfdW5pdCkge1xuICAvL2F2YWlsYWJsZSB3aXRoIFtub2RlIC0tZXhwb3NlLWdjXVxuICBpZiAodHlwZW9mIGdsb2JhbFRoaXMuZ2MgPT09IFwiZnVuY3Rpb25cIikgZ2xvYmFsVGhpcy5nYyh0cnVlKTtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX21ham9yXG5mdW5jdGlvbiBjYW1sX2djX21ham9yKF91bml0KSB7XG4gIC8vYXZhaWxhYmxlIHdpdGggW25vZGUgLS1leHBvc2UtZ2NdXG4gIGlmICh0eXBlb2YgZ2xvYmFsVGhpcy5nYyA9PT0gXCJmdW5jdGlvblwiKSBnbG9iYWxUaGlzLmdjKCk7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9nY19mdWxsX21ham9yXG5mdW5jdGlvbiBjYW1sX2djX2Z1bGxfbWFqb3IoX3VuaXQpIHtcbiAgLy9hdmFpbGFibGUgd2l0aCBbbm9kZSAtLWV4cG9zZS1nY11cbiAgaWYgKHR5cGVvZiBnbG9iYWxUaGlzLmdjID09PSBcImZ1bmN0aW9uXCIpIGdsb2JhbFRoaXMuZ2MoKTtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX2NvbXBhY3Rpb25cbmZ1bmN0aW9uIGNhbWxfZ2NfY29tcGFjdGlvbihfdW5pdCkge1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfY291bnRlcnNcbmZ1bmN0aW9uIGNhbWxfZ2NfY291bnRlcnMoX3VuaXQpIHtcbiAgcmV0dXJuIFsyNTQsIDAsIDAsIDBdO1xufVxuLy9Qcm92aWRlczogY2FtbF9nY19xdWlja19zdGF0XG5mdW5jdGlvbiBjYW1sX2djX3F1aWNrX3N0YXQoX3VuaXQpIHtcbiAgcmV0dXJuIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nY19zdGF0XG4vL1JlcXVpcmVzOiBjYW1sX2djX3F1aWNrX3N0YXRcbmZ1bmN0aW9uIGNhbWxfZ2Nfc3RhdCh1bml0KSB7XG4gIHJldHVybiBjYW1sX2djX3F1aWNrX3N0YXQodW5pdCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2Nfc2V0XG5mdW5jdGlvbiBjYW1sX2djX3NldChfY29udHJvbCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nY19nZXRcbmZ1bmN0aW9uIGNhbWxfZ2NfZ2V0KF91bml0KSB7XG4gIHJldHVybiBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluYWxfcmVnaXN0ZXIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZmluYWxfcmVnaXN0ZXIoX2YsIF94KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlXG52YXIgYWxsX2ZpbmFsaXplcnMgPSBuZXcgZ2xvYmFsVGhpcy5TZXQoKTtcbmZ1bmN0aW9uIGNhbWxfZmluYWxfcmVnaXN0ZXJfY2FsbGVkX3dpdGhvdXRfdmFsdWUoY2IsIGEpIHtcbiAgaWYgKGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkgJiYgYSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgIHZhciB4ID0gbmV3IGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkoZnVuY3Rpb24gKHgpIHtcbiAgICAgIGFsbF9maW5hbGl6ZXJzLmRlbGV0ZSh4KTtcbiAgICAgIGNiKDApO1xuICAgICAgcmV0dXJuO1xuICAgIH0pO1xuICAgIHgucmVnaXN0ZXIoYSwgeCk7XG4gICAgYWxsX2ZpbmFsaXplcnMuYWRkKHgpO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmFsX3JlbGVhc2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZmluYWxfcmVsZWFzZShfdW5pdCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3N0YXJ0XG5mdW5jdGlvbiBjYW1sX21lbXByb2Zfc3RhcnQoX3JhdGUsIF9zdGFja19zaXplLCBfdHJhY2tlcikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3N0b3BcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9zdG9wKF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21lbXByb2ZfZGlzY2FyZFxuLy9WZXJzaW9uOiA+PSA1LjJcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9kaXNjYXJkKF90KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V2ZW50bG9nX3Jlc3VtZVxuLy9WZXJzaW9uOiA8IDUuMFxuZnVuY3Rpb24gY2FtbF9ldmVudGxvZ19yZXN1bWUoX3VuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXZlbnRsb2dfcGF1c2Vcbi8vVmVyc2lvbjogPCA1LjBcbmZ1bmN0aW9uIGNhbWxfZXZlbnRsb2dfcGF1c2UoX3VuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudFxuLy9WZXJzaW9uOiA8IDUuMFxuZnVuY3Rpb24gY2FtbF9nY19odWdlX2ZhbGxiYWNrX2NvdW50KF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX21ham9yX3NsaWNlXG5mdW5jdGlvbiBjYW1sX2djX21ham9yX3NsaWNlKF93b3JrKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX21pbm9yX3dvcmRzXG5mdW5jdGlvbiBjYW1sX2djX21pbm9yX3dvcmRzKF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9taW5vcl9mcmVlXG5mdW5jdGlvbiBjYW1sX2dldF9taW5vcl9mcmVlKF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9tYWpvcl9idWNrZXRcbi8vVmVyc2lvbjogPCA1LjBcbmZ1bmN0aW9uIGNhbWxfZ2V0X21ham9yX2J1Y2tldChfbikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfbWFqb3JfY3JlZGl0XG4vL1ZlcnNpb246IDwgNS4wXG5mdW5jdGlvbiBjYW1sX2dldF9tYWpvcl9jcmVkaXQoX24pIHtcbiAgcmV0dXJuIDA7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEZvcm1hdFxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX2Zvcm1hdFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3BhcnNlX2Zvcm1hdChmbXQpIHtcbiAgZm10ID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhmbXQpO1xuICB2YXIgbGVuID0gZm10Lmxlbmd0aDtcbiAgaWYgKGxlbiA+IDMxKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJmb3JtYXRfaW50OiBmb3JtYXQgdG9vIGxvbmdcIik7XG4gIHZhciBmID0ge1xuICAgIGp1c3RpZnk6IFwiK1wiLFxuICAgIHNpZ25zdHlsZTogXCItXCIsXG4gICAgZmlsbGVyOiBcIiBcIixcbiAgICBhbHRlcm5hdGU6IGZhbHNlLFxuICAgIGJhc2U6IDAsXG4gICAgc2lnbmVkY29udjogZmFsc2UsXG4gICAgd2lkdGg6IDAsXG4gICAgdXBwZXJjYXNlOiBmYWxzZSxcbiAgICBzaWduOiAxLFxuICAgIHByZWM6IC0xLFxuICAgIGNvbnY6IFwiZlwiLFxuICB9O1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGMgPSBmbXQuY2hhckF0KGkpO1xuICAgIHN3aXRjaCAoYykge1xuICAgICAgY2FzZSBcIi1cIjpcbiAgICAgICAgZi5qdXN0aWZ5ID0gXCItXCI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIitcIjpcbiAgICAgIGNhc2UgXCIgXCI6XG4gICAgICAgIGYuc2lnbnN0eWxlID0gYztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiMFwiOlxuICAgICAgICBmLmZpbGxlciA9IFwiMFwiO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCIjXCI6XG4gICAgICAgIGYuYWx0ZXJuYXRlID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiMVwiOlxuICAgICAgY2FzZSBcIjJcIjpcbiAgICAgIGNhc2UgXCIzXCI6XG4gICAgICBjYXNlIFwiNFwiOlxuICAgICAgY2FzZSBcIjVcIjpcbiAgICAgIGNhc2UgXCI2XCI6XG4gICAgICBjYXNlIFwiN1wiOlxuICAgICAgY2FzZSBcIjhcIjpcbiAgICAgIGNhc2UgXCI5XCI6XG4gICAgICAgIGYud2lkdGggPSAwO1xuICAgICAgICB3aGlsZSAoKChjID0gZm10LmNoYXJDb2RlQXQoaSkgLSA0OCksIGMgPj0gMCAmJiBjIDw9IDkpKSB7XG4gICAgICAgICAgZi53aWR0aCA9IGYud2lkdGggKiAxMCArIGM7XG4gICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgICAgIGktLTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiLlwiOlxuICAgICAgICBmLnByZWMgPSAwO1xuICAgICAgICBpKys7XG4gICAgICAgIHdoaWxlICgoKGMgPSBmbXQuY2hhckNvZGVBdChpKSAtIDQ4KSwgYyA+PSAwICYmIGMgPD0gOSkpIHtcbiAgICAgICAgICBmLnByZWMgPSBmLnByZWMgKiAxMCArIGM7XG4gICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgICAgIGktLTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiZFwiOlxuICAgICAgY2FzZSBcImlcIjpcbiAgICAgICAgZi5zaWduZWRjb252ID0gdHJ1ZTtcbiAgICAgICAgZi5iYXNlID0gMTA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInVcIjpcbiAgICAgICAgZi5iYXNlID0gMTA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInhcIjpcbiAgICAgICAgZi5iYXNlID0gMTY7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIlhcIjpcbiAgICAgICAgZi5iYXNlID0gMTY7XG4gICAgICAgIGYudXBwZXJjYXNlID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwib1wiOlxuICAgICAgICBmLmJhc2UgPSA4O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJlXCI6XG4gICAgICBjYXNlIFwiZlwiOlxuICAgICAgY2FzZSBcImdcIjpcbiAgICAgICAgZi5zaWduZWRjb252ID0gdHJ1ZTtcbiAgICAgICAgZi5jb252ID0gYztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiRVwiOlxuICAgICAgY2FzZSBcIkZcIjpcbiAgICAgIGNhc2UgXCJHXCI6XG4gICAgICAgIGYuc2lnbmVkY29udiA9IHRydWU7XG4gICAgICAgIGYudXBwZXJjYXNlID0gdHJ1ZTtcbiAgICAgICAgZi5jb252ID0gYy50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGY7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluaXNoX2Zvcm1hdHRpbmdcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgcmF3YnVmZmVyKSB7XG4gIGlmIChmLnVwcGVyY2FzZSkgcmF3YnVmZmVyID0gcmF3YnVmZmVyLnRvVXBwZXJDYXNlKCk7XG4gIHZhciBsZW4gPSByYXdidWZmZXIubGVuZ3RoO1xuICAvKiBBZGp1c3QgbGVuIHRvIHJlZmxlY3QgYWRkaXRpb25hbCBjaGFycyAoc2lnbiwgZXRjKSAqL1xuICBpZiAoZi5zaWduZWRjb252ICYmIChmLnNpZ24gPCAwIHx8IGYuc2lnbnN0eWxlICE9PSBcIi1cIikpIGxlbisrO1xuICBpZiAoZi5hbHRlcm5hdGUpIHtcbiAgICBpZiAoZi5iYXNlID09PSA4KSBsZW4gKz0gMTtcbiAgICBpZiAoZi5iYXNlID09PSAxNikgbGVuICs9IDI7XG4gIH1cbiAgLyogRG8gdGhlIGZvcm1hdHRpbmcgKi9cbiAgdmFyIGJ1ZmZlciA9IFwiXCI7XG4gIGlmIChmLmp1c3RpZnkgPT09IFwiK1wiICYmIGYuZmlsbGVyID09PSBcIiBcIilcbiAgICBmb3IgKHZhciBpID0gbGVuOyBpIDwgZi53aWR0aDsgaSsrKSBidWZmZXIgKz0gXCIgXCI7XG4gIGlmIChmLnNpZ25lZGNvbnYpIHtcbiAgICBpZiAoZi5zaWduIDwgMCkgYnVmZmVyICs9IFwiLVwiO1xuICAgIGVsc2UgaWYgKGYuc2lnbnN0eWxlICE9PSBcIi1cIikgYnVmZmVyICs9IGYuc2lnbnN0eWxlO1xuICB9XG4gIGlmIChmLmFsdGVybmF0ZSAmJiBmLmJhc2UgPT09IDgpIGJ1ZmZlciArPSBcIjBcIjtcbiAgaWYgKGYuYWx0ZXJuYXRlICYmIGYuYmFzZSA9PT0gMTYpIGJ1ZmZlciArPSBmLnVwcGVyY2FzZSA/IFwiMFhcIiA6IFwiMHhcIjtcbiAgaWYgKGYuanVzdGlmeSA9PT0gXCIrXCIgJiYgZi5maWxsZXIgPT09IFwiMFwiKVxuICAgIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSBcIjBcIjtcbiAgYnVmZmVyICs9IHJhd2J1ZmZlcjtcbiAgaWYgKGYuanVzdGlmeSA9PT0gXCItXCIpIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSBcIiBcIjtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoYnVmZmVyKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcblxuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVcbnZhciBjYW1sX2dyX3N0YXRlO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZVxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX2dldCgpIHtcbiAgaWYgKGNhbWxfZ3Jfc3RhdGUpIHtcbiAgICByZXR1cm4gY2FtbF9ncl9zdGF0ZTtcbiAgfVxuICB0aHJvdyBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UoW1xuICAgIDAsXG4gICAgY2FtbF9uYW1lZF92YWx1ZShcIkdyYXBoaWNzLkdyYXBoaWNfZmFpbHVyZVwiKSxcbiAgICBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiTm90IGluaXRpYWxpemVkXCIpLFxuICBdKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlLGNhbWxfZ3Jfc3RhdGVfaW5pdFxuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9zZXQoY3R4KSB7XG4gIGNhbWxfZ3Jfc3RhdGUgPSBjdHg7XG4gIGNhbWxfZ3Jfc3RhdGVfaW5pdCgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9vcGVuX2dyYXBoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX29wZW5fZ3JhcGgoaW5mbykge1xuICB2YXIgaW5mbyA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKGluZm8pO1xuICBmdW5jdGlvbiBnZXQobmFtZSkge1xuICAgIHZhciByZXMgPSBpbmZvLm1hdGNoKFwiKF58LCkgKlwiICsgbmFtZSArIFwiICo9ICooW2EtekEtWjAtOV9dKykgKigsfCQpXCIpO1xuICAgIGlmIChyZXMpIHJldHVybiByZXNbMl07XG4gIH1cbiAgdmFyIHNwZWNzID0gW107XG4gIGlmICghKGluZm8gPT09IFwiXCIpKSBzcGVjcy5wdXNoKGluZm8pO1xuICB2YXIgdGFyZ2V0ID0gZ2V0KFwidGFyZ2V0XCIpO1xuICBpZiAoIXRhcmdldCkgdGFyZ2V0ID0gXCJcIjtcbiAgdmFyIHN0YXR1cyA9IGdldChcInN0YXR1c1wiKTtcbiAgaWYgKCFzdGF0dXMpIHNwZWNzLnB1c2goXCJzdGF0dXM9MVwiKTtcblxuICB2YXIgdyA9IGdldChcIndpZHRoXCIpO1xuICB3ID0gdyA/IE51bWJlci5wYXJzZUludCh3KSA6IDIwMDtcbiAgc3BlY3MucHVzaChcIndpZHRoPVwiICsgdyk7XG5cbiAgdmFyIGggPSBnZXQoXCJoZWlnaHRcIik7XG4gIGggPSBoID8gTnVtYmVyLnBhcnNlSW50KGgpIDogMjAwO1xuICBzcGVjcy5wdXNoKFwiaGVpZ2h0PVwiICsgaCk7XG5cbiAgdmFyIHdpbiA9IGdsb2JhbFRoaXMub3BlbihcImFib3V0OmJsYW5rXCIsIHRhcmdldCwgc3BlY3Muam9pbihcIixcIikpO1xuICBpZiAoIXdpbikge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJHcmFwaGljcy5vcGVuX2dyYXBoOiBjYW5ub3Qgb3BlbiB0aGUgd2luZG93XCIpO1xuICB9XG4gIHZhciBkb2MgPSB3aW4uZG9jdW1lbnQ7XG4gIHZhciBjYW52YXMgPSBkb2MuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgY2FudmFzLndpZHRoID0gdztcbiAgY2FudmFzLmhlaWdodCA9IGg7XG4gIHZhciBjdHggPSBjYW1sX2dyX3N0YXRlX2NyZWF0ZShjYW52YXMsIHcsIGgpO1xuICBjdHguc2V0X3RpdGxlID0gZnVuY3Rpb24gKHRpdGxlKSB7XG4gICAgZG9jLnRpdGxlID0gdGl0bGU7XG4gIH07XG4gIGNhbWxfZ3Jfc3RhdGVfc2V0KGN0eCk7XG4gIHZhciBib2R5ID0gZG9jLmJvZHk7XG4gIGJvZHkuc3R5bGUubWFyZ2luID0gXCIwcHhcIjtcbiAgYm9keS5hcHBlbmRDaGlsZChjYW52YXMpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9pbml0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3NldF9jb2xvcixjYW1sX2dyX21vdmV0byxjYW1sX2dyX3Jlc2l6ZV93aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgsY2FtbF9ncl9zZXRfdGV4dF9zaXplLGNhbWxfZ3Jfc2V0X2ZvbnRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZVxuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9pbml0KCkge1xuICBjYW1sX2dyX21vdmV0byhjYW1sX2dyX3N0YXRlLngsIGNhbWxfZ3Jfc3RhdGUueSk7XG4gIGNhbWxfZ3JfcmVzaXplX3dpbmRvdyhjYW1sX2dyX3N0YXRlLndpZHRoLCBjYW1sX2dyX3N0YXRlLmhlaWdodCk7XG4gIGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgoY2FtbF9ncl9zdGF0ZS5saW5lX3dpZHRoKTtcbiAgY2FtbF9ncl9zZXRfdGV4dF9zaXplKGNhbWxfZ3Jfc3RhdGUudGV4dF9zaXplKTtcbiAgY2FtbF9ncl9zZXRfZm9udChjYW1sX2dyX3N0YXRlLmZvbnQpO1xuICBjYW1sX2dyX3NldF9jb2xvcihjYW1sX2dyX3N0YXRlLmNvbG9yKTtcbiAgY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlKGNhbWxfZ3Jfc3RhdGUudGl0bGUpO1xuICAvL2NhbWxfZ3JfcmVzaXplX3dpbmRvdyBtaWdodCByZXNldCBzb21lIGNhbnZhcycgcHJvcGVydGllc1xuICBjYW1sX2dyX3N0YXRlLmNvbnRleHQudGV4dEJhc2VsaW5lID0gXCJib3R0b21cIjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfY3JlYXRlKGNhbnZhcywgdywgaCkge1xuICB2YXIgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XG4gIHJldHVybiB7XG4gICAgY29udGV4dDogY29udGV4dCxcbiAgICBjYW52YXM6IGNhbnZhcyxcbiAgICB4OiAwLFxuICAgIHk6IDAsXG4gICAgd2lkdGg6IHcsXG4gICAgaGVpZ2h0OiBoLFxuICAgIGxpbmVfd2lkdGg6IDEsXG4gICAgZm9udDogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcImZpeGVkXCIpLFxuICAgIHRleHRfc2l6ZTogMjYsXG4gICAgY29sb3I6IDB4MDAwMDAwLFxuICAgIHRpdGxlOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpLFxuICB9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RvY19vZl9zdGF0ZVxuZnVuY3Rpb24gY2FtbF9ncl9kb2Nfb2Zfc3RhdGUoc3RhdGUpIHtcbiAgaWYgKHN0YXRlLmNhbnZhcy5vd25lckRvY3VtZW50KSByZXR1cm4gc3RhdGUuY2FudmFzLm93bmVyRG9jdW1lbnQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY2xvc2VfZ3JhcGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2Nsb3NlX2dyYXBoKCkge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY2FudmFzLndpZHRoID0gMDtcbiAgcy5jYW52YXMuaGVpZ2h0ID0gMDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGUobmFtZSkge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMudGl0bGUgPSBuYW1lO1xuICB2YXIganNuYW1lID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZSk7XG4gIGlmIChzLnNldF90aXRsZSkgcy5zZXRfdGl0bGUoanNuYW1lKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcmVzaXplX3dpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcmVzaXplX3dpbmRvdyh3LCBoKSB7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy53aWR0aCA9IHc7XG4gIHMuaGVpZ2h0ID0gaDtcbiAgaWYgKHcgIT09IHMuY2FudmFzLndpZHRoKSBzLmNhbnZhcy53aWR0aCA9IHc7XG4gIGlmIChoICE9PSBzLmNhbnZhcy5oZWlnaHQpIHMuY2FudmFzLmhlaWdodCA9IGg7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2NsZWFyX2dyYXBoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jbGVhcl9ncmFwaCgpIHtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIHMuY2FudmFzLndpZHRoLCBzLmNhbnZhcy5oZWlnaHQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zaXplX3hcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NpemVfeCgpIHtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy53aWR0aDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2l6ZV95XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zaXplX3koKSB7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMuaGVpZ2h0O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF9jb2xvclxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X2NvbG9yKGNvbG9yKSB7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgZnVuY3Rpb24gY29udmVydChudW1iZXIpIHtcbiAgICB2YXIgc3RyID0gXCJcIiArIG51bWJlci50b1N0cmluZygxNik7XG4gICAgd2hpbGUgKHN0ci5sZW5ndGggPCAyKSBzdHIgPSBcIjBcIiArIHN0cjtcbiAgICByZXR1cm4gc3RyO1xuICB9XG4gIHZhciByID0gKGNvbG9yID4+IDE2KSAmIDB4ZmYsXG4gICAgZyA9IChjb2xvciA+PiA4KSAmIDB4ZmYsXG4gICAgYiA9IChjb2xvciA+PiAwKSAmIDB4ZmY7XG4gIHMuY29sb3IgPSBjb2xvcjtcbiAgdmFyIGNfc3RyID0gXCIjXCIgKyBjb252ZXJ0KHIpICsgY29udmVydChnKSArIGNvbnZlcnQoYik7XG4gIHMuY29udGV4dC5maWxsU3R5bGUgPSBjX3N0cjtcbiAgcy5jb250ZXh0LnN0cm9rZVN0eWxlID0gY19zdHI7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9wbG90XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9wbG90KHgsIHkpIHtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaW0gPSBzLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKDEsIDEpO1xuICB2YXIgZCA9IGltLmRhdGE7XG4gIHZhciBjb2xvciA9IHMuY29sb3I7XG4gIGRbMF0gPSAoY29sb3IgPj4gMTYpICYgMHhmZjsgLy9yXG4gIChkWzFdID1cbiAgICAoY29sb3IgPj4gOCkgJlxuICAgIDB4ZmYpLCAvL2dcbiAgICAoZFsyXSA9IChjb2xvciA+PiAwKSAmIDB4ZmYpOyAvL2JcbiAgZFszXSA9IDB4ZmY7IC8vYVxuICBzLnggPSB4O1xuICBzLnkgPSB5O1xuICBzLmNvbnRleHQucHV0SW1hZ2VEYXRhKGltLCB4LCBzLmhlaWdodCAtIHkpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9wb2ludF9jb2xvclxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcG9pbnRfY29sb3IoeCwgeSkge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBpbSA9IHMuY29udGV4dC5nZXRJbWFnZURhdGEoeCwgcy5oZWlnaHQgLSB5LCAxLCAxKTtcbiAgdmFyIGQgPSBpbS5kYXRhO1xuICByZXR1cm4gKGRbMF0gPDwgMTYpICsgKGRbMV0gPDwgOCkgKyBkWzJdO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9tb3ZldG9cbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX21vdmV0byh4LCB5KSB7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy54ID0geDtcbiAgcy55ID0geTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3VycmVudF94XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jdXJyZW50X3goKSB7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMueDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3VycmVudF95XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jdXJyZW50X3koKSB7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMueTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfbGluZXRvXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9saW5ldG8oeCwgeSkge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgcy5jb250ZXh0Lm1vdmVUbyhzLngsIHMuaGVpZ2h0IC0gcy55KTtcbiAgcy5jb250ZXh0LmxpbmVUbyh4LCBzLmhlaWdodCAtIHkpO1xuICBzLmNvbnRleHQuc3Ryb2tlKCk7XG4gIHMueCA9IHg7XG4gIHMueSA9IHk7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X3JlY3Rcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfcmVjdCh4LCB5LCB3LCBoKSB7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LnN0cm9rZVJlY3QoeCwgcy5oZWlnaHQgLSB5LCB3LCAtaCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2FyY19hdXhcbmZ1bmN0aW9uIGNhbWxfZ3JfYXJjX2F1eChjdHgsIGN4LCBjeSwgcnksIHJ4LCBhMSwgYTIpIHtcbiAgd2hpbGUgKGExID4gYTIpIGEyICs9IDM2MDtcbiAgYTEgLz0gMTgwO1xuICBhMiAvPSAxODA7XG4gIHZhciByb3QgPSAwLFxuICAgIHhQb3MsXG4gICAgeVBvcyxcbiAgICB4UG9zX3ByZXYsXG4gICAgeVBvc19wcmV2O1xuICB2YXIgc3BhY2UgPSAyO1xuICB2YXIgbnVtID0gKCgoYTIgLSBhMSkgKiBNYXRoLlBJICogKChyeCArIHJ5KSAvIDIpKSAvIHNwYWNlKSB8IDA7XG4gIHZhciBkZWx0YSA9ICgoYTIgLSBhMSkgKiBNYXRoLlBJKSAvIG51bTtcbiAgdmFyIGkgPSBhMSAqIE1hdGguUEk7XG4gIGZvciAodmFyIGogPSAwOyBqIDw9IG51bTsgaisrKSB7XG4gICAgeFBvcyA9XG4gICAgICBjeCAtXG4gICAgICByeCAqIE1hdGguc2luKGkpICogTWF0aC5zaW4ocm90ICogTWF0aC5QSSkgK1xuICAgICAgcnkgKiBNYXRoLmNvcyhpKSAqIE1hdGguY29zKHJvdCAqIE1hdGguUEkpO1xuICAgIHhQb3MgPSB4UG9zLnRvRml4ZWQoMik7XG4gICAgeVBvcyA9XG4gICAgICBjeSArXG4gICAgICByeSAqIE1hdGguY29zKGkpICogTWF0aC5zaW4ocm90ICogTWF0aC5QSSkgK1xuICAgICAgcnggKiBNYXRoLnNpbihpKSAqIE1hdGguY29zKHJvdCAqIE1hdGguUEkpO1xuICAgIHlQb3MgPSB5UG9zLnRvRml4ZWQoMik7XG4gICAgaWYgKGogPT09IDApIHtcbiAgICAgIGN0eC5tb3ZlVG8oeFBvcywgeVBvcyk7XG4gICAgfSBlbHNlIGlmICh4UG9zX3ByZXYgIT09IHhQb3MgfHwgeVBvc19wcmV2ICE9PSB5UG9zKSB7XG4gICAgICBjdHgubGluZVRvKHhQb3MsIHlQb3MpO1xuICAgIH1cbiAgICB4UG9zX3ByZXYgPSB4UG9zO1xuICAgIHlQb3NfcHJldiA9IHlQb3M7XG4gICAgaSAtPSBkZWx0YTsgLy9jY3dcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2FyY1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXQsIGNhbWxfZ3JfYXJjX2F1eFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X2FyYyh4LCB5LCByeCwgcnksIGExLCBhMikge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgY2FtbF9ncl9hcmNfYXV4KHMuY29udGV4dCwgeCwgcy5oZWlnaHQgLSB5LCByeCwgcnksIGExLCBhMik7XG4gIHMuY29udGV4dC5zdHJva2UoKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NldF9saW5lX3dpZHRoKHcpIHtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmxpbmVfd2lkdGggPSB3O1xuICBzLmNvbnRleHQubGluZVdpZHRoID0gdztcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZmlsbF9yZWN0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9maWxsX3JlY3QoeCwgeSwgdywgaCkge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5maWxsUmVjdCh4LCBzLmhlaWdodCAtIHksIHcsIC1oKTtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfcG9seVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZmlsbF9wb2x5KGFyKSB7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBzLmNvbnRleHQubW92ZVRvKGFyWzFdWzFdLCBzLmhlaWdodCAtIGFyWzFdWzJdKTtcbiAgZm9yICh2YXIgaSA9IDI7IGkgPCBhci5sZW5ndGg7IGkrKylcbiAgICBzLmNvbnRleHQubGluZVRvKGFyW2ldWzFdLCBzLmhlaWdodCAtIGFyW2ldWzJdKTtcbiAgcy5jb250ZXh0LmxpbmVUbyhhclsxXVsxXSwgcy5oZWlnaHQgLSBhclsxXVsyXSk7XG4gIHMuY29udGV4dC5maWxsKCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfYXJjXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldCwgY2FtbF9ncl9hcmNfYXV4XG5mdW5jdGlvbiBjYW1sX2dyX2ZpbGxfYXJjKHgsIHksIHJ4LCByeSwgYTEsIGEyKSB7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBjYW1sX2dyX2FyY19hdXgocy5jb250ZXh0LCB4LCBzLmhlaWdodCAtIHksIHJ4LCByeSwgYTEsIGEyKTtcbiAgcy5jb250ZXh0LmZpbGwoKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19zdHJcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfc3RyKHN0cikge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBtID0gcy5jb250ZXh0Lm1lYXN1cmVUZXh0KHN0cik7XG4gIHZhciBkeCA9IG0ud2lkdGg7XG4gIHMuY29udGV4dC5maWxsVGV4dChzdHIsIHMueCwgcy5oZWlnaHQgLSBzLnkpO1xuICBzLnggKz0gZHggfCAwO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2NoYXJcbi8vUmVxdWlyZXM6IGNhbWxfZ3JfZHJhd19zdHJcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19jaGFyKGMpIHtcbiAgY2FtbF9ncl9kcmF3X3N0cihTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfZ3JfZHJhd19zdHJcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfc3RyaW5nKHN0cikge1xuICBjYW1sX2dyX2RyYXdfc3RyKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHN0cikpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfZm9udFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX3NldF9mb250KGYpIHtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmZvbnQgPSBmO1xuICBzLmNvbnRleHQuZm9udCA9IHMudGV4dF9zaXplICsgXCJweCBcIiArIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMuZm9udCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF90ZXh0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9zZXRfdGV4dF9zaXplKHNpemUpIHtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLnRleHRfc2l6ZSA9IHNpemU7XG4gIHMuY29udGV4dC5mb250ID0gcy50ZXh0X3NpemUgKyBcInB4IFwiICsgY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocy5mb250KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfdGV4dF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3JfdGV4dF9zaXplKHR4dCkge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciB3ID0gcy5jb250ZXh0Lm1lYXN1cmVUZXh0KGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHR4dCkpLndpZHRoO1xuICByZXR1cm4gWzAsIHcsIHMudGV4dF9zaXplXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9tYWtlX2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9tYWtlX2ltYWdlKGFycikge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBoID0gYXJyLmxlbmd0aCAtIDE7XG4gIHZhciB3ID0gYXJyWzFdLmxlbmd0aCAtIDE7XG4gIHZhciBpbSA9IHMuY29udGV4dC5jcmVhdGVJbWFnZURhdGEodywgaCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaDsgaSsrKSB7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCB3OyBqKyspIHtcbiAgICAgIHZhciBjID0gYXJyW2kgKyAxXVtqICsgMV07XG4gICAgICB2YXIgbyA9IGkgKiAodyAqIDQpICsgaiAqIDQ7XG4gICAgICBpZiAoYyA9PT0gLTEpIHtcbiAgICAgICAgaW0uZGF0YVtvICsgMF0gPSAwO1xuICAgICAgICBpbS5kYXRhW28gKyAxXSA9IDA7XG4gICAgICAgIGltLmRhdGFbbyArIDJdID0gMDtcbiAgICAgICAgaW0uZGF0YVtvICsgM10gPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW0uZGF0YVtvICsgMF0gPSAoYyA+PiAxNikgJiAweGZmO1xuICAgICAgICBpbS5kYXRhW28gKyAxXSA9IChjID4+IDgpICYgMHhmZjtcbiAgICAgICAgaW0uZGF0YVtvICsgMl0gPSAoYyA+PiAwKSAmIDB4ZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDNdID0gMHhmZjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGltO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kdW1wX2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kdW1wX2ltYWdlKGltKSB7XG4gIHZhciBkYXRhID0gWzBdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGltLmhlaWdodDsgaSsrKSB7XG4gICAgZGF0YVtpICsgMV0gPSBbMF07XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBpbS53aWR0aDsgaisrKSB7XG4gICAgICB2YXIgbyA9IGkgKiAoaW0ud2lkdGggKiA0KSArIGogKiA0LFxuICAgICAgICByID0gaW0uZGF0YVtvICsgMF0sXG4gICAgICAgIGcgPSBpbS5kYXRhW28gKyAxXSxcbiAgICAgICAgYiA9IGltLmRhdGFbbyArIDJdO1xuICAgICAgZGF0YVtpICsgMV1baiArIDFdID0gKHIgPDwgMTYpICsgKGcgPDwgOCkgKyBiO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZGF0YTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19pbWFnZShpbSwgeCwgeSkge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIGlmICghaW0uaW1hZ2UpIHtcbiAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgICBjYW52YXMud2lkdGggPSBzLndpZHRoO1xuICAgIGNhbnZhcy5oZWlnaHQgPSBzLmhlaWdodDtcbiAgICBjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpLnB1dEltYWdlRGF0YShpbSwgMCwgMCk7XG4gICAgdmFyIGltYWdlID0gbmV3IGdsb2JhbFRoaXMuSW1hZ2UoKTtcbiAgICBpbWFnZS5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBzLmNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCB4LCBzLmhlaWdodCAtIGltLmhlaWdodCAtIHkpO1xuICAgICAgaW0uaW1hZ2UgPSBpbWFnZTtcbiAgICB9O1xuICAgIGltYWdlLnNyYyA9IGNhbnZhcy50b0RhdGFVUkwoXCJpbWFnZS9wbmdcIik7XG4gIH0gZWxzZSB7XG4gICAgcy5jb250ZXh0LmRyYXdJbWFnZShpbS5pbWFnZSwgeCwgcy5oZWlnaHQgLSBpbS5oZWlnaHQgLSB5KTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3JlYXRlX2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jcmVhdGVfaW1hZ2UoeCwgeSkge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKHgsIHkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9ibGl0X2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9ibGl0X2ltYWdlKGltLCB4LCB5KSB7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIGltMiA9IHMuY29udGV4dC5nZXRJbWFnZURhdGEoXG4gICAgeCxcbiAgICBzLmhlaWdodCAtIGltLmhlaWdodCAtIHksXG4gICAgaW0ud2lkdGgsXG4gICAgaW0uaGVpZ2h0LFxuICApO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGltMi5kYXRhLmxlbmd0aDsgaSArPSA0KSB7XG4gICAgaW0uZGF0YVtpXSA9IGltMi5kYXRhW2ldO1xuICAgIGltLmRhdGFbaSArIDFdID0gaW0yLmRhdGFbaSArIDFdO1xuICAgIGltLmRhdGFbaSArIDJdID0gaW0yLmRhdGFbaSArIDJdO1xuICAgIGltLmRhdGFbaSArIDNdID0gaW0yLmRhdGFbaSArIDNdO1xuICB9XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9zaWdpb19oYW5kbGVyXG5mdW5jdGlvbiBjYW1sX2dyX3NpZ2lvX2hhbmRsZXIoKSB7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9zaWdpb19zaWduYWxcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2lnaW9fc2lnbmFsKCkge1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfd2FpdF9ldmVudFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl93YWl0X2V2ZW50KF9ldmwpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3Jfd2FpdF9ldmVudCBub3QgSW1wbGVtZW50ZWQ6IHVzZSBHcmFwaGljc19qcyBpbnN0ZWFkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N5bmNocm9uaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX3N5bmNocm9uaXplKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9zeW5jaHJvbml6ZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3JlbWVtYmVyX21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3JfcmVtZW1iZXJfbW9kZSgpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3JfcmVtZW1iZXJfbW9kZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2Rpc3BsYXlfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9kaXNwbGF5X21vZGUoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX2Rpc3BsYXlfbW9kZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfd2luZG93X2lkXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX3dpbmRvd19pZChfYSkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl93aW5kb3dfaWQgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX29wZW5fc3Vid2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX29wZW5fc3Vid2luZG93KF9hLCBfYiwgX2MsIF9kKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX29wZW5fc3Vid2luZG93IG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9jbG9zZV9zdWJ3aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3JfY2xvc2Vfc3Vid2luZG93KF9hKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBsaWJyYXJ5XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSnNsaWI6IGNvZGUgc3BlY2lmaWMgdG8gSnNfb2Zfb2NhbWxcblxuLy9Qcm92aWRlczogY2FtbF9qc19odG1sX2VzY2FwZSBjb25zdCAoY29uc3QpXG52YXIgY2FtbF9qc19yZWdleHBzID0geyBhbXA6IC8mL2csIGx0OiAvPC9nLCBxdW90OiAvXCIvZywgYWxsOiAvWyY8XCJdLyB9O1xuZnVuY3Rpb24gY2FtbF9qc19odG1sX2VzY2FwZShzKSB7XG4gIGlmICghY2FtbF9qc19yZWdleHBzLmFsbC50ZXN0KHMpKSByZXR1cm4gcztcbiAgcmV0dXJuIHNcbiAgICAucmVwbGFjZShjYW1sX2pzX3JlZ2V4cHMuYW1wLCBcIiZhbXA7XCIpXG4gICAgLnJlcGxhY2UoY2FtbF9qc19yZWdleHBzLmx0LCBcIiZsdDtcIilcbiAgICAucmVwbGFjZShjYW1sX2pzX3JlZ2V4cHMucXVvdCwgXCImcXVvdDtcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfaHRtbF9lbnRpdGllc1xuZnVuY3Rpb24gY2FtbF9qc19odG1sX2VudGl0aWVzKHMpIHtcbiAgdmFyIGVudGl0eSA9IC9eJiM/WzAtOWEtekEtWl0rOyQvO1xuICBpZiAocy5tYXRjaChlbnRpdHkpKSB7XG4gICAgdmFyIHN0cixcbiAgICAgIHRlbXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwicFwiKTtcbiAgICB0ZW1wLmlubmVySFRNTCA9IHM7XG4gICAgc3RyID0gdGVtcC50ZXh0Q29udGVudCB8fCB0ZW1wLmlubmVyVGV4dDtcbiAgICB0ZW1wID0gbnVsbDtcbiAgICByZXR1cm4gc3RyO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZ2V0X2NvbnNvbGUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfanNfZ2V0X2NvbnNvbGUoKSB7XG4gIHZhciBjID0gY29uc29sZTtcbiAgdmFyIG0gPSBbXG4gICAgXCJsb2dcIixcbiAgICBcImRlYnVnXCIsXG4gICAgXCJpbmZvXCIsXG4gICAgXCJ3YXJuXCIsXG4gICAgXCJlcnJvclwiLFxuICAgIFwiYXNzZXJ0XCIsXG4gICAgXCJkaXJcIixcbiAgICBcImRpcnhtbFwiLFxuICAgIFwidHJhY2VcIixcbiAgICBcImdyb3VwXCIsXG4gICAgXCJncm91cENvbGxhcHNlZFwiLFxuICAgIFwiZ3JvdXBFbmRcIixcbiAgICBcInRpbWVcIixcbiAgICBcInRpbWVFbmRcIixcbiAgXTtcbiAgZnVuY3Rpb24gZigpIHt9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbS5sZW5ndGg7IGkrKykgaWYgKCFjW21baV1dKSBjW21baV1dID0gZjtcbiAgcmV0dXJuIGM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL1dlYWtkZWZcbmZ1bmN0aW9uIGNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlKF91bml0KSB7XG4gIGlmICh0eXBlb2YgWE1MSHR0cFJlcXVlc3QgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiWE1MSHR0cFJlcXVlc3QgaXMgbm90IGF2YWlsYWJsZVwiKTtcbiAgfVxuICB0cnkge1xuICAgIHJldHVybiBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgfSBjYXRjaCB7XG4gICAgY2FtbF9mYWlsd2l0aChcIkZhaWxlZCB0byBjcmVhdGUgWE1MSHR0cFJlcXVlc3RcIik7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19lcnJvcl9vZl9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uKGV4bikge1xuICBpZiAoZXhuLmpzX2Vycm9yKSB7XG4gICAgcmV0dXJuIGV4bi5qc19lcnJvcjtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKi9cbi8qICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKi9cbi8qICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgd2l0aCAgICAgKi9cbi8qICB0aGUgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gZmlsZSAuLi9MSUNFTlNFLiAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyogJElkOiBsZXhpbmcuYyA2MDQ1IDIwMDQtMDEtMDEgMTY6NDI6NDNaIGRvbGlnZXogJCAqL1xuXG4vKiBUaGUgdGFibGUtZHJpdmVuIGF1dG9tYXRvbiBmb3IgbGV4ZXJzIGdlbmVyYXRlZCBieSBjYW1sbGV4LiAqL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2xleF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9sZXhfYXJyYXkocykge1xuICBzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKTtcbiAgdmFyIGwgPSBzLmxlbmd0aCAvIDI7XG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKylcbiAgICBhW2ldID0gKChzLmNoYXJDb2RlQXQoMiAqIGkpIHwgKHMuY2hhckNvZGVBdCgyICogaSArIDEpIDw8IDgpKSA8PCAxNikgPj4gMTY7XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xleF9lbmdpbmVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfbGV4X2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbmZ1bmN0aW9uIGNhbWxfbGV4X2VuZ2luZSh0YmwsIHN0YXJ0X3N0YXRlLCBsZXhidWYpIHtcbiAgdmFyIGxleF9idWZmZXIgPSAyO1xuICB2YXIgbGV4X2J1ZmZlcl9sZW4gPSAzO1xuICB2YXIgbGV4X3N0YXJ0X3BvcyA9IDU7XG4gIHZhciBsZXhfY3Vycl9wb3MgPSA2O1xuICB2YXIgbGV4X2xhc3RfcG9zID0gNztcbiAgdmFyIGxleF9sYXN0X2FjdGlvbiA9IDg7XG4gIHZhciBsZXhfZW9mX3JlYWNoZWQgPSA5O1xuICB2YXIgbGV4X2Jhc2UgPSAxO1xuICB2YXIgbGV4X2JhY2t0cmsgPSAyO1xuICB2YXIgbGV4X2RlZmF1bHQgPSAzO1xuICB2YXIgbGV4X3RyYW5zID0gNDtcbiAgdmFyIGxleF9jaGVjayA9IDU7XG5cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHQpIHtcbiAgICB0YmwubGV4X2Jhc2UgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X2Jhc2VdKTtcbiAgICB0YmwubGV4X2JhY2t0cmsgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X2JhY2t0cmtdKTtcbiAgICB0YmwubGV4X2NoZWNrID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF9jaGVja10pO1xuICAgIHRibC5sZXhfdHJhbnMgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X3RyYW5zXSk7XG4gICAgdGJsLmxleF9kZWZhdWx0ID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF9kZWZhdWx0XSk7XG4gIH1cblxuICB2YXIgYyxcbiAgICBzdGF0ZSA9IHN0YXJ0X3N0YXRlO1xuXG4gIHZhciBidWZmZXIgPSBsZXhidWZbbGV4X2J1ZmZlcl07XG5cbiAgaWYgKHN0YXRlID49IDApIHtcbiAgICAvKiBGaXJzdCBlbnRyeSAqL1xuICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9zdGFydF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSAtMTtcbiAgfSBlbHNlIHtcbiAgICAvKiBSZWVudHJ5IGFmdGVyIHJlZmlsbCAqL1xuICAgIHN0YXRlID0gLXN0YXRlIC0gMTtcbiAgfVxuICBmb3IgKDs7KSB7XG4gICAgLyogTG9va3VwIGJhc2UgYWRkcmVzcyBvciBhY3Rpb24gbnVtYmVyIGZvciBjdXJyZW50IHN0YXRlICovXG4gICAgdmFyIGJhc2UgPSB0YmwubGV4X2Jhc2Vbc3RhdGVdO1xuICAgIGlmIChiYXNlIDwgMCkgcmV0dXJuIC1iYXNlIC0gMTtcbiAgICAvKiBTZWUgaWYgaXQncyBhIGJhY2t0cmFjayBwb2ludCAqL1xuICAgIHZhciBiYWNrdHJrID0gdGJsLmxleF9iYWNrdHJrW3N0YXRlXTtcbiAgICBpZiAoYmFja3RyayA+PSAwKSB7XG4gICAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSBiYWNrdHJrO1xuICAgIH1cbiAgICAvKiBTZWUgaWYgd2UgbmVlZCBhIHJlZmlsbCAqL1xuICAgIGlmIChsZXhidWZbbGV4X2N1cnJfcG9zXSA+PSBsZXhidWZbbGV4X2J1ZmZlcl9sZW5dKSB7XG4gICAgICBpZiAobGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPT09IDApIHJldHVybiAtc3RhdGUgLSAxO1xuICAgICAgZWxzZSBjID0gMjU2O1xuICAgIH0gZWxzZSB7XG4gICAgICAvKiBSZWFkIG5leHQgaW5wdXQgY2hhciAqL1xuICAgICAgYyA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldChidWZmZXIsIGxleGJ1ZltsZXhfY3Vycl9wb3NdKTtcbiAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdKys7XG4gICAgfVxuICAgIC8qIERldGVybWluZSBuZXh0IHN0YXRlICovXG4gICAgaWYgKHRibC5sZXhfY2hlY2tbYmFzZSArIGNdID09PSBzdGF0ZSkgc3RhdGUgPSB0YmwubGV4X3RyYW5zW2Jhc2UgKyBjXTtcbiAgICBlbHNlIHN0YXRlID0gdGJsLmxleF9kZWZhdWx0W3N0YXRlXTtcbiAgICAvKiBJZiBubyB0cmFuc2l0aW9uIG9uIHRoaXMgY2hhciwgcmV0dXJuIHRvIGxhc3QgYmFja3RyYWNrIHBvaW50ICovXG4gICAgaWYgKHN0YXRlIDwgMCkge1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gPSBsZXhidWZbbGV4X2xhc3RfcG9zXTtcbiAgICAgIGlmIChsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9PT0gLTEpIGNhbWxfZmFpbHdpdGgoXCJsZXhpbmc6IGVtcHR5IHRva2VuXCIpO1xuICAgICAgZWxzZSByZXR1cm4gbGV4YnVmW2xleF9sYXN0X2FjdGlvbl07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8qIEVyYXNlIHRoZSBFT0YgY29uZGl0aW9uIG9ubHkgaWYgdGhlIEVPRiBwc2V1ZG8tY2hhcmFjdGVyIHdhc1xuICAgICAgICAgY29uc3VtZWQgYnkgdGhlIGF1dG9tYXRvbiAoaS5lLiB0aGVyZSB3YXMgbm8gYmFja3RyYWNrIGFib3ZlKVxuICAgICAgKi9cbiAgICAgIGlmIChjID09PSAyNTYpIGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID0gMDtcbiAgICB9XG4gIH1cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogTmV3IGxleGVyIGVuZ2luZSwgd2l0aCBtZW1vcnkgb2YgcG9zaXRpb25zICAqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX25ld19sZXhfZW5naW5lXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2xleF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0XG5mdW5jdGlvbiBjYW1sX2xleF9ydW5fbWVtKHMsIGksIG1lbSwgY3Vycl9wb3MpIHtcbiAgZm9yICg7Oykge1xuICAgIHZhciBkc3QgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgaSsrO1xuICAgIGlmIChkc3QgPT09IDB4ZmYpIHJldHVybjtcbiAgICB2YXIgc3JjID0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIGkrKztcbiAgICBpZiAoc3JjID09PSAweGZmKSBtZW1bZHN0ICsgMV0gPSBjdXJyX3BvcztcbiAgICBlbHNlIG1lbVtkc3QgKyAxXSA9IG1lbVtzcmMgKyAxXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjYW1sX2xleF9ydW5fdGFnKHMsIGksIG1lbSkge1xuICBmb3IgKDs7KSB7XG4gICAgdmFyIGRzdCA9IHMuY2hhckNvZGVBdChpKTtcbiAgICBpKys7XG4gICAgaWYgKGRzdCA9PT0gMHhmZikgcmV0dXJuO1xuICAgIHZhciBzcmMgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgaSsrO1xuICAgIGlmIChzcmMgPT09IDB4ZmYpIG1lbVtkc3QgKyAxXSA9IC0xO1xuICAgIGVsc2UgbWVtW2RzdCArIDFdID0gbWVtW3NyYyArIDFdO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhbWxfbmV3X2xleF9lbmdpbmUodGJsLCBzdGFydF9zdGF0ZSwgbGV4YnVmKSB7XG4gIHZhciBsZXhfYnVmZmVyID0gMjtcbiAgdmFyIGxleF9idWZmZXJfbGVuID0gMztcbiAgdmFyIGxleF9zdGFydF9wb3MgPSA1O1xuICB2YXIgbGV4X2N1cnJfcG9zID0gNjtcbiAgdmFyIGxleF9sYXN0X3BvcyA9IDc7XG4gIHZhciBsZXhfbGFzdF9hY3Rpb24gPSA4O1xuICB2YXIgbGV4X2VvZl9yZWFjaGVkID0gOTtcbiAgdmFyIGxleF9tZW0gPSAxMDtcbiAgdmFyIGxleF9iYXNlID0gMTtcbiAgdmFyIGxleF9iYWNrdHJrID0gMjtcbiAgdmFyIGxleF9kZWZhdWx0ID0gMztcbiAgdmFyIGxleF90cmFucyA9IDQ7XG4gIHZhciBsZXhfY2hlY2sgPSA1O1xuICB2YXIgbGV4X2Jhc2VfY29kZSA9IDY7XG4gIHZhciBsZXhfYmFja3Rya19jb2RlID0gNztcbiAgdmFyIGxleF9kZWZhdWx0X2NvZGUgPSA4O1xuICB2YXIgbGV4X3RyYW5zX2NvZGUgPSA5O1xuICB2YXIgbGV4X2NoZWNrX2NvZGUgPSAxMDtcbiAgdmFyIGxleF9jb2RlID0gMTE7XG5cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHQpIHtcbiAgICB0YmwubGV4X2Jhc2UgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X2Jhc2VdKTtcbiAgICB0YmwubGV4X2JhY2t0cmsgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X2JhY2t0cmtdKTtcbiAgICB0YmwubGV4X2NoZWNrID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF9jaGVja10pO1xuICAgIHRibC5sZXhfdHJhbnMgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X3RyYW5zXSk7XG4gICAgdGJsLmxleF9kZWZhdWx0ID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF9kZWZhdWx0XSk7XG4gIH1cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHRfY29kZSkge1xuICAgIHRibC5sZXhfYmFzZV9jb2RlID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF9iYXNlX2NvZGVdKTtcbiAgICB0YmwubGV4X2JhY2t0cmtfY29kZSA9IGNhbWxfbGV4X2FycmF5KHRibFtsZXhfYmFja3Rya19jb2RlXSk7XG4gICAgdGJsLmxleF9jaGVja19jb2RlID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF9jaGVja19jb2RlXSk7XG4gICAgdGJsLmxleF90cmFuc19jb2RlID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF90cmFuc19jb2RlXSk7XG4gICAgdGJsLmxleF9kZWZhdWx0X2NvZGUgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X2RlZmF1bHRfY29kZV0pO1xuICB9XG4gIGlmICh0YmwubGV4X2NvZGUgPT0gbnVsbClcbiAgICB0YmwubGV4X2NvZGUgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHRibFtsZXhfY29kZV0pO1xuXG4gIHZhciBjLFxuICAgIHN0YXRlID0gc3RhcnRfc3RhdGU7XG5cbiAgdmFyIGJ1ZmZlciA9IGxleGJ1ZltsZXhfYnVmZmVyXTtcblxuICBpZiAoc3RhdGUgPj0gMCkge1xuICAgIC8qIEZpcnN0IGVudHJ5ICovXG4gICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X3N0YXJ0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IC0xO1xuICB9IGVsc2Uge1xuICAgIC8qIFJlZW50cnkgYWZ0ZXIgcmVmaWxsICovXG4gICAgc3RhdGUgPSAtc3RhdGUgLSAxO1xuICB9XG4gIGZvciAoOzspIHtcbiAgICAvKiBMb29rdXAgYmFzZSBhZGRyZXNzIG9yIGFjdGlvbiBudW1iZXIgZm9yIGN1cnJlbnQgc3RhdGUgKi9cbiAgICB2YXIgYmFzZSA9IHRibC5sZXhfYmFzZVtzdGF0ZV07XG4gICAgaWYgKGJhc2UgPCAwKSB7XG4gICAgICB2YXIgcGNfb2ZmID0gdGJsLmxleF9iYXNlX2NvZGVbc3RhdGVdO1xuICAgICAgY2FtbF9sZXhfcnVuX3RhZyh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dKTtcbiAgICAgIHJldHVybiAtYmFzZSAtIDE7XG4gICAgfVxuICAgIC8qIFNlZSBpZiBpdCdzIGEgYmFja3RyYWNrIHBvaW50ICovXG4gICAgdmFyIGJhY2t0cmsgPSB0YmwubGV4X2JhY2t0cmtbc3RhdGVdO1xuICAgIGlmIChiYWNrdHJrID49IDApIHtcbiAgICAgIHZhciBwY19vZmYgPSB0YmwubGV4X2JhY2t0cmtfY29kZVtzdGF0ZV07XG4gICAgICBjYW1sX2xleF9ydW5fdGFnKHRibC5sZXhfY29kZSwgcGNfb2ZmLCBsZXhidWZbbGV4X21lbV0pO1xuICAgICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gYmFja3RyaztcbiAgICB9XG4gICAgLyogU2VlIGlmIHdlIG5lZWQgYSByZWZpbGwgKi9cbiAgICBpZiAobGV4YnVmW2xleF9jdXJyX3Bvc10gPj0gbGV4YnVmW2xleF9idWZmZXJfbGVuXSkge1xuICAgICAgaWYgKGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID09PSAwKSByZXR1cm4gLXN0YXRlIC0gMTtcbiAgICAgIGVsc2UgYyA9IDI1NjtcbiAgICB9IGVsc2Uge1xuICAgICAgLyogUmVhZCBuZXh0IGlucHV0IGNoYXIgKi9cbiAgICAgIGMgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQoYnVmZmVyLCBsZXhidWZbbGV4X2N1cnJfcG9zXSk7XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSsrO1xuICAgIH1cbiAgICAvKiBEZXRlcm1pbmUgbmV4dCBzdGF0ZSAqL1xuICAgIHZhciBwc3RhdGUgPSBzdGF0ZTtcbiAgICBpZiAodGJsLmxleF9jaGVja1tiYXNlICsgY10gPT09IHN0YXRlKSBzdGF0ZSA9IHRibC5sZXhfdHJhbnNbYmFzZSArIGNdO1xuICAgIGVsc2Ugc3RhdGUgPSB0YmwubGV4X2RlZmF1bHRbc3RhdGVdO1xuICAgIC8qIElmIG5vIHRyYW5zaXRpb24gb24gdGhpcyBjaGFyLCByZXR1cm4gdG8gbGFzdCBiYWNrdHJhY2sgcG9pbnQgKi9cbiAgICBpZiAoc3RhdGUgPCAwKSB7XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSA9IGxleGJ1ZltsZXhfbGFzdF9wb3NdO1xuICAgICAgaWYgKGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID09PSAtMSkgY2FtbF9mYWlsd2l0aChcImxleGluZzogZW1wdHkgdG9rZW5cIik7XG4gICAgICBlbHNlIHJldHVybiBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXTtcbiAgICB9IGVsc2Uge1xuICAgICAgLyogSWYgc29tZSB0cmFuc2l0aW9uLCBnZXQgYW5kIHBlcmZvcm0gbWVtb3J5IG1vdmVzICovXG4gICAgICB2YXIgYmFzZV9jb2RlID0gdGJsLmxleF9iYXNlX2NvZGVbcHN0YXRlXSxcbiAgICAgICAgcGNfb2ZmO1xuICAgICAgaWYgKHRibC5sZXhfY2hlY2tfY29kZVtiYXNlX2NvZGUgKyBjXSA9PT0gcHN0YXRlKVxuICAgICAgICBwY19vZmYgPSB0YmwubGV4X3RyYW5zX2NvZGVbYmFzZV9jb2RlICsgY107XG4gICAgICBlbHNlIHBjX29mZiA9IHRibC5sZXhfZGVmYXVsdF9jb2RlW3BzdGF0ZV07XG4gICAgICBpZiAocGNfb2ZmID4gMClcbiAgICAgICAgY2FtbF9sZXhfcnVuX21lbShcbiAgICAgICAgICB0YmwubGV4X2NvZGUsXG4gICAgICAgICAgcGNfb2ZmLFxuICAgICAgICAgIGxleGJ1ZltsZXhfbWVtXSxcbiAgICAgICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSxcbiAgICAgICAgKTtcbiAgICAgIC8qIEVyYXNlIHRoZSBFT0YgY29uZGl0aW9uIG9ubHkgaWYgdGhlIEVPRiBwc2V1ZG8tY2hhcmFjdGVyIHdhc1xuICAgICAgICAgY29uc3VtZWQgYnkgdGhlIGF1dG9tYXRvbiAoaS5lLiB0aGVyZSB3YXMgbm8gYmFja3RyYWNrIGFib3ZlKVxuICAgICAgKi9cbiAgICAgIGlmIChjID09PSAyNTYpIGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID0gMDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vUHJvdmlkZXM6IGNhbWxfbHhtX01cbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9WZXJzaW9uOiA+PSA1XG52YXIgY2FtbF9seG1fTSA9IGNhbWxfaW50NjRfb2Zfc3RyaW5nKFxuICBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhcIjB4ZDEzNDI1NDNkZTgyZWY5NVwiKSxcbik7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbHhtX2RhYmFcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9WZXJzaW9uOiA+PSA1XG52YXIgY2FtbF9seG1fZGFiYSA9IGNhbWxfaW50NjRfb2Zfc3RyaW5nKFxuICBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhcIjB4ZGFiYTBiNmViMDkzMjJlM1wiKSxcbik7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbHhtX25leHQgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3hvclxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9hZGRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfbXVsXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3NldF8xXG4vL1JlcXVpcmVzOiBjYW1sX2x4bV9NXG4vL1JlcXVpcmVzOiBjYW1sX2x4bV9kYWJhXG4vL1ZlcnNpb246ID49IDVcbmZ1bmN0aW9uIGNhbWxfbHhtX25leHQodikge1xuICBmdW5jdGlvbiBzaGlmdF9sKHgsIGspIHtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0KHgsIGspO1xuICB9XG4gIGZ1bmN0aW9uIHNoaWZ0X3IoeCwgaykge1xuICAgIHJldHVybiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIGspO1xuICB9XG4gIGZ1bmN0aW9uIG9yKGEsIGIpIHtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9vcihhLCBiKTtcbiAgfVxuICBmdW5jdGlvbiB4b3IoYSwgYikge1xuICAgIHJldHVybiBjYW1sX2ludDY0X3hvcihhLCBiKTtcbiAgfVxuICBmdW5jdGlvbiBhZGQoYSwgYikge1xuICAgIHJldHVybiBjYW1sX2ludDY0X2FkZChhLCBiKTtcbiAgfVxuICBmdW5jdGlvbiBtdWwoYSwgYikge1xuICAgIHJldHVybiBjYW1sX2ludDY0X211bChhLCBiKTtcbiAgfVxuICBmdW5jdGlvbiByb3RsKHgsIGspIHtcbiAgICByZXR1cm4gb3Ioc2hpZnRfbCh4LCBrKSwgc2hpZnRfcih4LCA2NCAtIGspKTtcbiAgfVxuICBmdW5jdGlvbiBnZXQoYSwgaSkge1xuICAgIHJldHVybiBjYW1sX2JhX2dldF8xKGEsIGkpO1xuICB9XG4gIGZ1bmN0aW9uIHNldChhLCBpLCB4KSB7XG4gICAgcmV0dXJuIGNhbWxfYmFfc2V0XzEoYSwgaSwgeCk7XG4gIH1cbiAgdmFyIE0gPSBjYW1sX2x4bV9NO1xuICB2YXIgZGFiYSA9IGNhbWxfbHhtX2RhYmE7XG4gIHZhciB6LCBxMCwgcTE7XG4gIHZhciBzdCA9IHY7XG4gIHZhciBhID0gZ2V0KHN0LCAwKTtcbiAgdmFyIHMgPSBnZXQoc3QsIDEpO1xuICB2YXIgeDAgPSBnZXQoc3QsIDIpO1xuICB2YXIgeDEgPSBnZXQoc3QsIDMpO1xuICAvKiBDb21iaW5pbmcgb3BlcmF0aW9uICovXG4gIHogPSBhZGQocywgeDApO1xuICAvKiBNaXhpbmcgZnVuY3Rpb24gKi9cbiAgeiA9IG11bCh4b3Ioeiwgc2hpZnRfcih6LCAzMikpLCBkYWJhKTtcbiAgeiA9IG11bCh4b3Ioeiwgc2hpZnRfcih6LCAzMikpLCBkYWJhKTtcbiAgeiA9IHhvcih6LCBzaGlmdF9yKHosIDMyKSk7XG4gIC8qIExDRyB1cGRhdGUgKi9cbiAgc2V0KHN0LCAxLCBhZGQobXVsKHMsIE0pLCBhKSk7XG4gIC8qIFhCRyB1cGRhdGUgKi9cbiAgdmFyIHEwID0geDA7XG4gIHZhciBxMSA9IHgxO1xuICBxMSA9IHhvcihxMSwgcTApO1xuICBxMCA9IHJvdGwocTAsIDI0KTtcbiAgcTAgPSB4b3IoeG9yKHEwLCBxMSksIHNoaWZ0X2wocTEsIDE2KSk7XG4gIHExID0gcm90bChxMSwgMzcpO1xuICBzZXQoc3QsIDIsIHEwKTtcbiAgc2V0KHN0LCAzLCBxMSk7XG4gIC8qIFJldHVybiByZXN1bHQgKi9cbiAgcmV0dXJuIHo7XG59XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICovXG4vKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICovXG4vKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgICovXG4vKiAgdGhlIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIGZpbGUgLi4vTElDRU5TRS4gICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qICRJZDogcGFyc2luZy5jIDg5ODMgMjAwOC0wOC0wNiAwOTozODoyNVogeGxlcm95ICQgKi9cblxuLyogVGhlIFBEQSBhdXRvbWF0b24gZm9yIHBhcnNlcnMgZ2VuZXJhdGVkIGJ5IGNhbWx5YWNjICovXG5cbi8qIFRoZSBwdXNoZG93biBhdXRvbWF0YSAqL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlcl90cmFjZVxudmFyIGNhbWxfcGFyc2VyX3RyYWNlID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9lbmdpbmVcbi8vUmVxdWlyZXM6IGNhbWxfbGV4X2FycmF5LCBjYW1sX3BhcnNlcl90cmFjZSxjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9tbF9vdXRwdXQsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgTWxCeXRlc1xuLy9SZXF1aXJlczogY2FtbF9zeXNfZmRzXG5mdW5jdGlvbiBjYW1sX3BhcnNlX2VuZ2luZSh0YWJsZXMsIGVudiwgY21kLCBhcmcpIHtcbiAgdmFyIEVSUkNPREUgPSAyNTY7XG5cbiAgLy92YXIgU1RBUlQgPSAwO1xuICAvL3ZhciBUT0tFTl9SRUFEID0gMTtcbiAgLy92YXIgU1RBQ0tTX0dST1dOXzEgPSAyO1xuICAvL3ZhciBTVEFDS1NfR1JPV05fMiA9IDM7XG4gIC8vdmFyIFNFTUFOVElDX0FDVElPTl9DT01QVVRFRCA9IDQ7XG4gIC8vdmFyIEVSUk9SX0RFVEVDVEVEID0gNTtcbiAgdmFyIGxvb3AgPSA2O1xuICB2YXIgdGVzdHNoaWZ0ID0gNztcbiAgdmFyIHNoaWZ0ID0gODtcbiAgdmFyIHNoaWZ0X3JlY292ZXIgPSA5O1xuICB2YXIgcmVkdWNlID0gMTA7XG5cbiAgdmFyIFJFQURfVE9LRU4gPSAwO1xuICB2YXIgUkFJU0VfUEFSU0VfRVJST1IgPSAxO1xuICB2YXIgR1JPV19TVEFDS1NfMSA9IDI7XG4gIHZhciBHUk9XX1NUQUNLU18yID0gMztcbiAgdmFyIENPTVBVVEVfU0VNQU5USUNfQUNUSU9OID0gNDtcbiAgdmFyIENBTExfRVJST1JfRlVOQ1RJT04gPSA1O1xuXG4gIHZhciBlbnZfc19zdGFjayA9IDE7XG4gIHZhciBlbnZfdl9zdGFjayA9IDI7XG4gIHZhciBlbnZfc3ltYl9zdGFydF9zdGFjayA9IDM7XG4gIHZhciBlbnZfc3ltYl9lbmRfc3RhY2sgPSA0O1xuICB2YXIgZW52X3N0YWNrc2l6ZSA9IDU7XG4gIHZhciBlbnZfc3RhY2tiYXNlID0gNjtcbiAgdmFyIGVudl9jdXJyX2NoYXIgPSA3O1xuICB2YXIgZW52X2x2YWwgPSA4O1xuICB2YXIgZW52X3N5bWJfc3RhcnQgPSA5O1xuICB2YXIgZW52X3N5bWJfZW5kID0gMTA7XG4gIHZhciBlbnZfYXNwID0gMTE7XG4gIHZhciBlbnZfcnVsZV9sZW4gPSAxMjtcbiAgdmFyIGVudl9ydWxlX251bWJlciA9IDEzO1xuICB2YXIgZW52X3NwID0gMTQ7XG4gIHZhciBlbnZfc3RhdGUgPSAxNTtcbiAgdmFyIGVudl9lcnJmbGFnID0gMTY7XG5cbiAgLy8gdmFyIF90YmxfYWN0aW9ucyA9IDE7XG4gIHZhciB0YmxfdHJhbnNsX2NvbnN0ID0gMjtcbiAgdmFyIHRibF90cmFuc2xfYmxvY2sgPSAzO1xuICB2YXIgdGJsX2xocyA9IDQ7XG4gIHZhciB0YmxfbGVuID0gNTtcbiAgdmFyIHRibF9kZWZyZWQgPSA2O1xuICB2YXIgdGJsX2Rnb3RvID0gNztcbiAgdmFyIHRibF9zaW5kZXggPSA4O1xuICB2YXIgdGJsX3JpbmRleCA9IDk7XG4gIHZhciB0YmxfZ2luZGV4ID0gMTA7XG4gIHZhciB0YmxfdGFibGVzaXplID0gMTE7XG4gIHZhciB0YmxfdGFibGUgPSAxMjtcbiAgdmFyIHRibF9jaGVjayA9IDEzO1xuICAvLyB2YXIgX3RibF9lcnJvcl9mdW5jdGlvbiA9IDE0O1xuICB2YXIgdGJsX25hbWVzX2NvbnN0ID0gMTU7XG4gIHZhciB0YmxfbmFtZXNfYmxvY2sgPSAxNjtcblxuICBmdW5jdGlvbiBsb2coeCkge1xuICAgIHZhciBzID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh4ICsgXCJcXG5cIik7XG4gICAgY2FtbF9tbF9vdXRwdXQoY2FtbF9zeXNfZmRzWzJdLmNoYW5pZCwgcywgMCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRva2VuX25hbWUobmFtZXMsIG51bWJlcikge1xuICAgIHZhciBzdHIgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhuYW1lcyk7XG4gICAgaWYgKHN0clswXSA9PT0gXCJcXHgwMFwiKSByZXR1cm4gXCI8dW5rbm93biB0b2tlbj5cIjtcbiAgICByZXR1cm4gc3RyLnNwbGl0KFwiXFx4MDBcIilbbnVtYmVyXTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHByaW50X3Rva2VuKHN0YXRlLCB0b2spIHtcbiAgICB2YXIgdG9rZW4sIGtpbmQ7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodG9rKSkge1xuICAgICAgdG9rZW4gPSB0b2tlbl9uYW1lKHRhYmxlc1t0YmxfbmFtZXNfYmxvY2tdLCB0b2tbMF0pO1xuICAgICAgaWYgKHR5cGVvZiB0b2tbMV0gPT09IFwibnVtYmVyXCIpIGtpbmQgPSBcIlwiICsgdG9rWzFdO1xuICAgICAgZWxzZSBpZiAodHlwZW9mIHRva1sxXSA9PT0gXCJzdHJpbmdcIikga2luZCA9IHRva1sxXTtcbiAgICAgIGVsc2UgaWYgKHRva1sxXSBpbnN0YW5jZW9mIE1sQnl0ZXMpIGtpbmQgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHRva1sxXSk7XG4gICAgICBlbHNlIGtpbmQgPSBcIl9cIjtcbiAgICAgIGxvZyhcIlN0YXRlIFwiICsgc3RhdGUgKyBcIjogcmVhZCB0b2tlbiBcIiArIHRva2VuICsgXCIoXCIgKyBraW5kICsgXCIpXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0b2tlbiA9IHRva2VuX25hbWUodGFibGVzW3RibF9uYW1lc19jb25zdF0sIHRvayk7XG4gICAgICBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHJlYWQgdG9rZW4gXCIgKyB0b2tlbik7XG4gICAgfVxuICB9XG5cbiAgaWYgKCF0YWJsZXMuZGdvdG8pIHtcbiAgICB0YWJsZXMuZGVmcmVkID0gY2FtbF9sZXhfYXJyYXkodGFibGVzW3RibF9kZWZyZWRdKTtcbiAgICB0YWJsZXMuc2luZGV4ID0gY2FtbF9sZXhfYXJyYXkodGFibGVzW3RibF9zaW5kZXhdKTtcbiAgICB0YWJsZXMuY2hlY2sgPSBjYW1sX2xleF9hcnJheSh0YWJsZXNbdGJsX2NoZWNrXSk7XG4gICAgdGFibGVzLnJpbmRleCA9IGNhbWxfbGV4X2FycmF5KHRhYmxlc1t0YmxfcmluZGV4XSk7XG4gICAgdGFibGVzLnRhYmxlID0gY2FtbF9sZXhfYXJyYXkodGFibGVzW3RibF90YWJsZV0pO1xuICAgIHRhYmxlcy5sZW4gPSBjYW1sX2xleF9hcnJheSh0YWJsZXNbdGJsX2xlbl0pO1xuICAgIHRhYmxlcy5saHMgPSBjYW1sX2xleF9hcnJheSh0YWJsZXNbdGJsX2xoc10pO1xuICAgIHRhYmxlcy5naW5kZXggPSBjYW1sX2xleF9hcnJheSh0YWJsZXNbdGJsX2dpbmRleF0pO1xuICAgIHRhYmxlcy5kZ290byA9IGNhbWxfbGV4X2FycmF5KHRhYmxlc1t0YmxfZGdvdG9dKTtcbiAgfVxuXG4gIHZhciByZXMgPSAwLFxuICAgIG4sXG4gICAgbjEsXG4gICAgbjIsXG4gICAgc3RhdGUxO1xuXG4gIC8vIFJFU1RPUkVcbiAgdmFyIHNwID0gZW52W2Vudl9zcF07XG4gIHZhciBzdGF0ZSA9IGVudltlbnZfc3RhdGVdO1xuICB2YXIgZXJyZmxhZyA9IGVudltlbnZfZXJyZmxhZ107XG5cbiAgdGhlX2xvb3A6IGZvciAoOzspIHtcbiAgICBzd2l0Y2ggKGNtZCkge1xuICAgICAgY2FzZSAwOiAvL1NUQVJUOlxuICAgICAgICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRmFsbHRocm91Z2hTd2l0Y2hDbGF1c2U6XG4gICAgICAgIHN0YXRlID0gMDtcbiAgICAgICAgZXJyZmxhZyA9IDA7XG4gICAgICAvLyBmYWxsdGhyb3VnaFxuXG4gICAgICBjYXNlIDY6IC8vbG9vcDpcbiAgICAgICAgbiA9IHRhYmxlcy5kZWZyZWRbc3RhdGVdO1xuICAgICAgICBpZiAobiAhPT0gMCkge1xuICAgICAgICAgIGNtZCA9IHJlZHVjZTtcbiAgICAgICAgICBjb250aW51ZSB0aGVfbG9vcDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW52W2Vudl9jdXJyX2NoYXJdID49IDApIHtcbiAgICAgICAgICBjbWQgPSB0ZXN0c2hpZnQ7XG4gICAgICAgICAgY29udGludWUgdGhlX2xvb3A7XG4gICAgICAgIH1cbiAgICAgICAgcmVzID0gUkVBRF9UT0tFTjtcbiAgICAgICAgYnJlYWsgdGhlX2xvb3A7XG4gICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgbGV4ZXIgYW5kIHVwZGF0ZXMgKi9cbiAgICAgIC8qIHN5bWJfc3RhcnQgYW5kIHN5bWJfZW5kICovXG4gICAgICBjYXNlIDE6IC8vVE9LRU5fUkVBRDpcbiAgICAgICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0ZhbGx0aHJvdWdoU3dpdGNoQ2xhdXNlOlxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7XG4gICAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gdGFibGVzW3RibF90cmFuc2xfYmxvY2tdW2FyZ1swXSArIDFdO1xuICAgICAgICAgIGVudltlbnZfbHZhbF0gPSBhcmdbMV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gdGFibGVzW3RibF90cmFuc2xfY29uc3RdW2FyZyArIDFdO1xuICAgICAgICAgIGVudltlbnZfbHZhbF0gPSAwO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSkgcHJpbnRfdG9rZW4oc3RhdGUsIGFyZyk7XG4gICAgICAvLyBmYWxsdGhyb3VnaFxuXG4gICAgICBjYXNlIDc6IC8vdGVzdHNoaWZ0OlxuICAgICAgICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRmFsbHRocm91Z2hTd2l0Y2hDbGF1c2U6XG4gICAgICAgIG4xID0gdGFibGVzLnNpbmRleFtzdGF0ZV07XG4gICAgICAgIG4yID0gbjEgKyBlbnZbZW52X2N1cnJfY2hhcl07XG4gICAgICAgIGlmIChcbiAgICAgICAgICBuMSAhPT0gMCAmJlxuICAgICAgICAgIG4yID49IDAgJiZcbiAgICAgICAgICBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09PSBlbnZbZW52X2N1cnJfY2hhcl1cbiAgICAgICAgKSB7XG4gICAgICAgICAgY21kID0gc2hpZnQ7XG4gICAgICAgICAgY29udGludWUgdGhlX2xvb3A7XG4gICAgICAgIH1cbiAgICAgICAgbjEgPSB0YWJsZXMucmluZGV4W3N0YXRlXTtcbiAgICAgICAgbjIgPSBuMSArIGVudltlbnZfY3Vycl9jaGFyXTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIG4xICE9PSAwICYmXG4gICAgICAgICAgbjIgPj0gMCAmJlxuICAgICAgICAgIG4yIDw9IHRhYmxlc1t0YmxfdGFibGVzaXplXSAmJlxuICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT09IGVudltlbnZfY3Vycl9jaGFyXVxuICAgICAgICApIHtcbiAgICAgICAgICBuID0gdGFibGVzLnRhYmxlW24yXTtcbiAgICAgICAgICBjbWQgPSByZWR1Y2U7XG4gICAgICAgICAgY29udGludWUgdGhlX2xvb3A7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVycmZsYWcgPD0gMCkge1xuICAgICAgICAgIHJlcyA9IENBTExfRVJST1JfRlVOQ1RJT047XG4gICAgICAgICAgYnJlYWsgdGhlX2xvb3A7XG4gICAgICAgIH1cbiAgICAgIC8vIGZhbGx0aHJvdWdoXG4gICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgZXJyb3IgZnVuY3Rpb24gKi9cbiAgICAgIGNhc2UgNTogLy9FUlJPUl9ERVRFQ1RFRDpcbiAgICAgICAgaWYgKGVycmZsYWcgPCAzKSB7XG4gICAgICAgICAgZXJyZmxhZyA9IDM7XG4gICAgICAgICAgZm9yICg7Oykge1xuICAgICAgICAgICAgc3RhdGUxID0gZW52W2Vudl9zX3N0YWNrXVtzcCArIDFdO1xuICAgICAgICAgICAgbjEgPSB0YWJsZXMuc2luZGV4W3N0YXRlMV07XG4gICAgICAgICAgICBuMiA9IG4xICsgRVJSQ09ERTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgbjEgIT09IDAgJiZcbiAgICAgICAgICAgICAgbjIgPj0gMCAmJlxuICAgICAgICAgICAgICBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PT0gRVJSQ09ERVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSkgbG9nKFwiUmVjb3ZlcmluZyBpbiBzdGF0ZSBcIiArIHN0YXRlMSk7XG4gICAgICAgICAgICAgIGNtZCA9IHNoaWZ0X3JlY292ZXI7XG4gICAgICAgICAgICAgIGNvbnRpbnVlIHRoZV9sb29wO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKSBsb2coXCJEaXNjYXJkaW5nIHN0YXRlIFwiICsgc3RhdGUxKTtcbiAgICAgICAgICAgICAgaWYgKHNwIDw9IGVudltlbnZfc3RhY2tiYXNlXSkge1xuICAgICAgICAgICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSkgbG9nKFwiTm8gbW9yZSBzdGF0ZXMgdG8gZGlzY2FyZFwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgLyogVGhlIE1MIGNvZGUgcmFpc2VzIFBhcnNlX2Vycm9yICovXG4gICAgICAgICAgICAgIHNwLS07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChlbnZbZW52X2N1cnJfY2hhcl0gPT09IDApXG4gICAgICAgICAgICByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7IC8qIFRoZSBNTCBjb2RlIHJhaXNlcyBQYXJzZV9lcnJvciAqL1xuICAgICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSkgbG9nKFwiRGlzY2FyZGluZyBsYXN0IHRva2VuIHJlYWRcIik7XG4gICAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gLTE7XG4gICAgICAgICAgY21kID0gbG9vcDtcbiAgICAgICAgICBjb250aW51ZSB0aGVfbG9vcDtcbiAgICAgICAgfVxuICAgICAgLy8gVW5yZWFjaGFibGVcbiAgICAgIGNhc2UgODogLy9zaGlmdDpcbiAgICAgICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0ZhbGx0aHJvdWdoU3dpdGNoQ2xhdXNlOlxuICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSAtMTtcbiAgICAgICAgaWYgKGVycmZsYWcgPiAwKSBlcnJmbGFnLS07XG4gICAgICAvLyBmYWxsdGhyb3VnaFxuICAgICAgY2FzZSA5OiAvL3NoaWZ0X3JlY292ZXI6XG4gICAgICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9GYWxsdGhyb3VnaFN3aXRjaENsYXVzZTpcbiAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICAgIGxvZyhcIlN0YXRlIFwiICsgc3RhdGUgKyBcIjogc2hpZnQgdG8gc3RhdGUgXCIgKyB0YWJsZXMudGFibGVbbjJdKTtcbiAgICAgICAgc3RhdGUgPSB0YWJsZXMudGFibGVbbjJdO1xuICAgICAgICBzcCsrO1xuICAgICAgICBpZiAoc3AgPj0gZW52W2Vudl9zdGFja3NpemVdKSB7XG4gICAgICAgICAgcmVzID0gR1JPV19TVEFDS1NfMTtcbiAgICAgICAgICBicmVhayB0aGVfbG9vcDtcbiAgICAgICAgfVxuICAgICAgLy8gZmFsbHRocm91Z2hcbiAgICAgIC8qIFRoZSBNTCBjb2RlIHJlc2l6ZXMgdGhlIHN0YWNrcyAqL1xuICAgICAgY2FzZSAyOiAvL1NUQUNLU19HUk9XTl8xOlxuICAgICAgICBlbnZbZW52X3Nfc3RhY2tdW3NwICsgMV0gPSBzdGF0ZTtcbiAgICAgICAgZW52W2Vudl92X3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9sdmFsXTtcbiAgICAgICAgZW52W2Vudl9zeW1iX3N0YXJ0X3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9zeW1iX3N0YXJ0XTtcbiAgICAgICAgZW52W2Vudl9zeW1iX2VuZF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9lbmRdO1xuICAgICAgICBjbWQgPSBsb29wO1xuICAgICAgICBjb250aW51ZSB0aGVfbG9vcDtcblxuICAgICAgY2FzZSAxMDogLy9yZWR1Y2U6XG4gICAgICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9GYWxsdGhyb3VnaFN3aXRjaENsYXVzZTpcbiAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKSBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHJlZHVjZSBieSBydWxlIFwiICsgbik7XG4gICAgICAgIHZhciBtID0gdGFibGVzLmxlbltuXTtcbiAgICAgICAgZW52W2Vudl9hc3BdID0gc3A7XG4gICAgICAgIGVudltlbnZfcnVsZV9udW1iZXJdID0gbjtcbiAgICAgICAgZW52W2Vudl9ydWxlX2xlbl0gPSBtO1xuICAgICAgICBzcCA9IHNwIC0gbSArIDE7XG4gICAgICAgIG0gPSB0YWJsZXMubGhzW25dO1xuICAgICAgICBzdGF0ZTEgPSBlbnZbZW52X3Nfc3RhY2tdW3NwXTtcbiAgICAgICAgbjEgPSB0YWJsZXMuZ2luZGV4W21dO1xuICAgICAgICBuMiA9IG4xICsgc3RhdGUxO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgbjEgIT09IDAgJiZcbiAgICAgICAgICBuMiA+PSAwICYmXG4gICAgICAgICAgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PT0gc3RhdGUxXG4gICAgICAgIClcbiAgICAgICAgICBzdGF0ZSA9IHRhYmxlcy50YWJsZVtuMl07XG4gICAgICAgIGVsc2Ugc3RhdGUgPSB0YWJsZXMuZGdvdG9bbV07XG4gICAgICAgIGlmIChzcCA+PSBlbnZbZW52X3N0YWNrc2l6ZV0pIHtcbiAgICAgICAgICByZXMgPSBHUk9XX1NUQUNLU18yO1xuICAgICAgICAgIGJyZWFrIHRoZV9sb29wO1xuICAgICAgICB9XG4gICAgICAvLyBmYWxsdGhyb3VnaFxuICAgICAgLyogVGhlIE1MIGNvZGUgcmVzaXplcyB0aGUgc3RhY2tzICovXG4gICAgICBjYXNlIDM6IC8vU1RBQ0tTX0dST1dOXzI6XG4gICAgICAgIHJlcyA9IENPTVBVVEVfU0VNQU5USUNfQUNUSU9OO1xuICAgICAgICBicmVhayB0aGVfbG9vcDtcbiAgICAgIC8qIFRoZSBNTCBjb2RlIGNhbGxzIHRoZSBzZW1hbnRpYyBhY3Rpb24gKi9cbiAgICAgIGNhc2UgNDogLy9TRU1BTlRJQ19BQ1RJT05fQ09NUFVURUQ6XG4gICAgICAgIGVudltlbnZfc19zdGFja11bc3AgKyAxXSA9IHN0YXRlO1xuICAgICAgICBlbnZbZW52X3Zfc3RhY2tdW3NwICsgMV0gPSBhcmc7XG4gICAgICAgIHZhciBhc3AgPSBlbnZbZW52X2FzcF07XG4gICAgICAgIGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVthc3AgKyAxXTtcbiAgICAgICAgaWYgKHNwID4gYXNwKSB7XG4gICAgICAgICAgLyogVGhpcyBpcyBhbiBlcHNpbG9uIHByb2R1Y3Rpb24uIFRha2Ugc3ltYl9zdGFydCBlcXVhbCB0byBzeW1iX2VuZC4gKi9cbiAgICAgICAgICBlbnZbZW52X3N5bWJfc3RhcnRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVthc3AgKyAxXTtcbiAgICAgICAgfVxuICAgICAgICBjbWQgPSBsb29wO1xuICAgICAgICBjb250aW51ZSB0aGVfbG9vcDtcbiAgICAgIC8qIFNob3VsZCBub3QgaGFwcGVuICovXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7XG4gICAgfVxuICB9XG4gIC8vIFNBVkVcbiAgZW52W2Vudl9zcF0gPSBzcDtcbiAgZW52W2Vudl9zdGF0ZV0gPSBzdGF0ZTtcbiAgZW52W2Vudl9lcnJmbGFnXSA9IGVycmZsYWc7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2V0X3BhcnNlcl90cmFjZVxuLy9SZXF1aXJlczogY2FtbF9wYXJzZXJfdHJhY2VcbmZ1bmN0aW9uIGNhbWxfc2V0X3BhcnNlcl90cmFjZShib29sKSB7XG4gIHZhciBvbGRmbGFnID0gY2FtbF9wYXJzZXJfdHJhY2U7XG4gIGNhbWxfcGFyc2VyX3RyYWNlID0gYm9vbDtcbiAgcmV0dXJuIG9sZGZsYWc7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMjAgLSBIdWdvIEhldXphcmRcbi8vIENvcHlyaWdodCAoQykgMjAyMCAtIFNoYWNoYXIgSXR6aGFreVxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8gQmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL2Jsb2IvNC4wNy9vdGhlcmxpYnMvc3RyL3N0cnN0dWJzLmNcbi8vIENvcGllZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9qc2NvcS9qc2NvcS9ibG9iL3Y4LjExL2NvcS1qcy9qc19zdHViL3N0ci5qc1xuXG4vL1Byb3ZpZGVzOiByZV9tYXRjaFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfZ2V0XG5cbnZhciByZV9tYXRjaCA9IChmdW5jdGlvbiAoKSB7XG4gIHZhciByZV93b3JkX2xldHRlcnMgPSBbXG4gICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCAvKiAweDAwLTB4MUY6IG5vbmUgKi8sIDB4MDAsIDB4MDAsIDB4ZmYsXG4gICAgMHgwMyAvKiAweDIwLTB4M0Y6IGRpZ2l0cyAwLTkgKi8sIDB4ZmUsIDB4ZmYsIDB4ZmYsXG4gICAgMHg4NyAvKiAweDQwLTB4NUY6IEEgdG8gWiwgXyAqLywgMHhmZSwgMHhmZiwgMHhmZixcbiAgICAweDA3IC8qIDB4NjAtMHg3RjogYSB0byB6ICovLCAweDAwLCAweDAwLCAweDAwLCAweDAwIC8qIDB4ODAtMHg5Rjogbm9uZSAqLyxcbiAgICAweDAwLCAweDAwLCAweDAwLCAweDAwIC8qIDB4QTAtMHhCRjogbm9uZSAqLywgMHhmZiwgMHhmZiwgMHg3ZixcbiAgICAweGZmIC8qIDB4QzAtMHhERjogTGF0aW4tMSBhY2NlbnRlZCB1cHBlcmNhc2UgKi8sIDB4ZmYsIDB4ZmYsIDB4N2YsXG4gICAgMHhmZiAvKiAweEUwLTB4RkY6IExhdGluLTEgYWNjZW50ZWQgbG93ZXJjYXNlICovLFxuICBdO1xuXG4gIHZhciBvcGNvZGVzID0ge1xuICAgIENIQVI6IDAsXG4gICAgQ0hBUk5PUk06IDEsXG4gICAgU1RSSU5HOiAyLFxuICAgIFNUUklOR05PUk06IDMsXG4gICAgQ0hBUkNMQVNTOiA0LFxuICAgIEJPTDogNSxcbiAgICBFT0w6IDYsXG4gICAgV09SREJPVU5EQVJZOiA3LFxuICAgIEJFR0dST1VQOiA4LFxuICAgIEVOREdST1VQOiA5LFxuICAgIFJFRkdST1VQOiAxMCxcbiAgICBBQ0NFUFQ6IDExLFxuICAgIFNJTVBMRU9QVDogMTIsXG4gICAgU0lNUExFU1RBUjogMTMsXG4gICAgU0lNUExFUExVUzogMTQsXG4gICAgR09UTzogMTUsXG4gICAgUFVTSEJBQ0s6IDE2LFxuICAgIFNFVE1BUks6IDE3LFxuICAgIENIRUNLUFJPR1JFU1M6IDE4LFxuICB9O1xuXG4gIGZ1bmN0aW9uIGlzX3dvcmRfbGV0dGVyKGMpIHtcbiAgICByZXR1cm4gKHJlX3dvcmRfbGV0dGVyc1tjID4+IDNdID4+IChjICYgNykpICYgMTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluX2JpdHNldChzLCBpKSB7XG4gICAgcmV0dXJuIChjYW1sX3N0cmluZ19nZXQocywgaSA+PiAzKSA+PiAoaSAmIDcpKSAmIDE7XG4gIH1cblxuICBmdW5jdGlvbiByZV9tYXRjaF9pbXBsKHJlLCBzLCBwb3MsIHBhcnRpYWwpIHtcbiAgICB2YXIgcHJvZyA9IGNhbWxfanNfZnJvbV9hcnJheShyZVsxXSksXG4gICAgICBjcG9vbCA9IGNhbWxfanNfZnJvbV9hcnJheShyZVsyXSksXG4gICAgICBub3JtdGFibGUgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHJlWzNdKSxcbiAgICAgIG51bWdyb3VwcyA9IHJlWzRdIHwgMCxcbiAgICAgIG51bXJlZ2lzdGVycyA9IHJlWzVdIHwgMDtcblxuICAgIHZhciBzID0gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcocyk7XG5cbiAgICB2YXIgcGMgPSAwLFxuICAgICAgcXVpdCA9IGZhbHNlLFxuICAgICAgc3RhY2sgPSBbXSxcbiAgICAgIGdyb3VwcyA9IG5ldyBBcnJheShudW1ncm91cHMpLFxuICAgICAgcmVfcmVnaXN0ZXIgPSBuZXcgQXJyYXkobnVtcmVnaXN0ZXJzKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZ3JvdXBzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBncm91cHNbaV0gPSB7IHN0YXJ0OiAtMSwgZW5kOiAtMSB9O1xuICAgIH1cbiAgICBncm91cHNbMF0uc3RhcnQgPSBwb3M7XG5cbiAgICB2YXIgYmFja3RyYWNrID0gZnVuY3Rpb24gKCkge1xuICAgICAgd2hpbGUgKHN0YWNrLmxlbmd0aCkge1xuICAgICAgICB2YXIgaXRlbSA9IHN0YWNrLnBvcCgpO1xuICAgICAgICBpZiAoaXRlbS51bmRvKSB7XG4gICAgICAgICAgaXRlbS51bmRvLm9ialtpdGVtLnVuZG8ucHJvcF0gPSBpdGVtLnVuZG8udmFsdWU7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS5wb3MpIHtcbiAgICAgICAgICBwYyA9IGl0ZW0ucG9zLnBjO1xuICAgICAgICAgIHBvcyA9IGl0ZW0ucG9zLnR4dDtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHF1aXQgPSB0cnVlO1xuICAgIH07XG5cbiAgICB2YXIgcHVzaCA9IGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICBzdGFjay5wdXNoKGl0ZW0pO1xuICAgIH07XG5cbiAgICB2YXIgYWNjZXB0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgZ3JvdXBzWzBdLmVuZCA9IHBvcztcbiAgICAgIHZhciByZXN1bHQgPSBuZXcgQXJyYXkoMSArIGdyb3Vwcy5sZW5ndGggKiAyKTtcbiAgICAgIHJlc3VsdFswXSA9IDA7IC8vIHRhZ1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBncm91cHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGcgPSBncm91cHNbaV07XG4gICAgICAgIGlmIChnLnN0YXJ0IDwgMCB8fCBnLmVuZCA8IDApIHtcbiAgICAgICAgICBnLnN0YXJ0ID0gZy5lbmQgPSAtMTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHRbMiAqIGkgKyAxXSA9IGcuc3RhcnQ7XG4gICAgICAgIHJlc3VsdFsyICogaSArIDEgKyAxXSA9IGcuZW5kO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuXG4gICAgdmFyIHByZWZpeF9tYXRjaCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChwYXJ0aWFsKSByZXR1cm4gYWNjZXB0KCk7XG4gICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgIH07XG5cbiAgICAvKiBNYWluIERGQSBpbnRlcnByZXRlciBsb29wICovXG4gICAgd2hpbGUgKCFxdWl0KSB7XG4gICAgICB2YXIgb3AgPSBwcm9nW3BjXSAmIDB4ZmYsXG4gICAgICAgIHNhcmcgPSBwcm9nW3BjXSA+PiA4LFxuICAgICAgICB1YXJnID0gc2FyZyAmIDB4ZmYsXG4gICAgICAgIGMgPSBzW3Bvc10sXG4gICAgICAgIGdyb3VwO1xuXG4gICAgICBwYysrO1xuXG4gICAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEFSOlxuICAgICAgICAgIGlmIChwb3MgPT09IHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBwcmVmaXhfbWF0Y2goKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoYyA9PT0gdWFyZykgcG9zKys7XG4gICAgICAgICAgZWxzZSBiYWNrdHJhY2soKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBvcGNvZGVzLkNIQVJOT1JNOlxuICAgICAgICAgIGlmIChwb3MgPT09IHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBwcmVmaXhfbWF0Y2goKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobm9ybXRhYmxlLmNoYXJDb2RlQXQoYykgPT09IHVhcmcpIHBvcysrO1xuICAgICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2Ugb3Bjb2Rlcy5TVFJJTkc6XG4gICAgICAgICAgZm9yIChcbiAgICAgICAgICAgIHZhciBhcmcgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGNwb29sW3VhcmddKSwgaSA9IDA7XG4gICAgICAgICAgICBpIDwgYXJnLmxlbmd0aDtcbiAgICAgICAgICAgIGkrK1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgaWYgKHBvcyA9PT0gcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgcHJlZml4X21hdGNoKCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGMgPT09IGFyZy5jaGFyQ29kZUF0KGkpKSBjID0gc1srK3Bvc107XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgYmFja3RyYWNrKCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBvcGNvZGVzLlNUUklOR05PUk06XG4gICAgICAgICAgZm9yIChcbiAgICAgICAgICAgIHZhciBhcmcgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGNwb29sW3VhcmddKSwgaSA9IDA7XG4gICAgICAgICAgICBpIDwgYXJnLmxlbmd0aDtcbiAgICAgICAgICAgIGkrK1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgaWYgKHBvcyA9PT0gcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgcHJlZml4X21hdGNoKCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG5vcm10YWJsZS5jaGFyQ29kZUF0KGMpID09PSBhcmcuY2hhckNvZGVBdChpKSkgYyA9IHNbKytwb3NdO1xuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgIGJhY2t0cmFjaygpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEFSQ0xBU1M6XG4gICAgICAgICAgaWYgKHBvcyA9PT0gcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHByZWZpeF9tYXRjaCgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKSBwb3MrKztcbiAgICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIG9wY29kZXMuQk9MOlxuICAgICAgICAgIGlmIChwb3MgPiAwICYmIHNbcG9zIC0gMV0gIT09IDEwIC8qIFxcbiAqLykge1xuICAgICAgICAgICAgYmFja3RyYWNrKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIG9wY29kZXMuRU9MOlxuICAgICAgICAgIGlmIChwb3MgPCBzLmxlbmd0aCAmJiBzW3Bvc10gIT09IDEwIC8qIFxcbiAqLykge1xuICAgICAgICAgICAgYmFja3RyYWNrKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIG9wY29kZXMuV09SREJPVU5EQVJZOlxuICAgICAgICAgIGlmIChwb3MgPT09IDApIHtcbiAgICAgICAgICAgIGlmIChwb3MgPT09IHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHByZWZpeF9tYXRjaCgpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc193b3JkX2xldHRlcihzWzBdKSkgYnJlYWs7XG4gICAgICAgICAgICBiYWNrdHJhY2soKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHBvcyA9PT0gcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmIChpc193b3JkX2xldHRlcihzW3BvcyAtIDFdKSkgYnJlYWs7XG4gICAgICAgICAgICBiYWNrdHJhY2soKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzX3dvcmRfbGV0dGVyKHNbcG9zIC0gMV0pICE9PSBpc193b3JkX2xldHRlcihzW3Bvc10pKSBicmVhaztcbiAgICAgICAgICAgIGJhY2t0cmFjaygpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBvcGNvZGVzLkJFR0dST1VQOlxuICAgICAgICAgIGdyb3VwID0gZ3JvdXBzW3VhcmddO1xuICAgICAgICAgIHB1c2goeyB1bmRvOiB7IG9iajogZ3JvdXAsIHByb3A6IFwic3RhcnRcIiwgdmFsdWU6IGdyb3VwLnN0YXJ0IH0gfSk7XG4gICAgICAgICAgZ3JvdXAuc3RhcnQgPSBwb3M7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2Ugb3Bjb2Rlcy5FTkRHUk9VUDpcbiAgICAgICAgICBncm91cCA9IGdyb3Vwc1t1YXJnXTtcbiAgICAgICAgICBwdXNoKHsgdW5kbzogeyBvYmo6IGdyb3VwLCBwcm9wOiBcImVuZFwiLCB2YWx1ZTogZ3JvdXAuZW5kIH0gfSk7XG4gICAgICAgICAgZ3JvdXAuZW5kID0gcG9zO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIG9wY29kZXMuUkVGR1JPVVA6XG4gICAgICAgICAgZ3JvdXAgPSBncm91cHNbdWFyZ107XG4gICAgICAgICAgaWYgKGdyb3VwLnN0YXJ0IDwgMCB8fCBncm91cC5lbmQgPCAwKSB7XG4gICAgICAgICAgICBiYWNrdHJhY2soKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmb3IgKHZhciBpID0gZ3JvdXAuc3RhcnQ7IGkgPCBncm91cC5lbmQ7IGkrKykge1xuICAgICAgICAgICAgaWYgKHBvcyA9PT0gcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgcHJlZml4X21hdGNoKCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNbaV0gIT09IHNbcG9zXSkge1xuICAgICAgICAgICAgICBiYWNrdHJhY2soKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwb3MrKztcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2Ugb3Bjb2Rlcy5TSU1QTEVPUFQ6XG4gICAgICAgICAgaWYgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpIHBvcysrO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIG9wY29kZXMuU0lNUExFU1RBUjpcbiAgICAgICAgICB3aGlsZSAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkgYyA9IHNbKytwb3NdO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIG9wY29kZXMuU0lNUExFUExVUzpcbiAgICAgICAgICBpZiAocG9zID09PSBzLmxlbmd0aCkge1xuICAgICAgICAgICAgcHJlZml4X21hdGNoKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpIHtcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgYyA9IHNbKytwb3NdO1xuICAgICAgICAgICAgfSB3aGlsZSAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSk7XG4gICAgICAgICAgfSBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIG9wY29kZXMuQUNDRVBUOlxuICAgICAgICAgIHJldHVybiBhY2NlcHQoKTtcbiAgICAgICAgY2FzZSBvcGNvZGVzLkdPVE86XG4gICAgICAgICAgcGMgPSBwYyArIHNhcmc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2Ugb3Bjb2Rlcy5QVVNIQkFDSzpcbiAgICAgICAgICBwdXNoKHsgcG9zOiB7IHBjOiBwYyArIHNhcmcsIHR4dDogcG9zIH0gfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2Ugb3Bjb2Rlcy5TRVRNQVJLOlxuICAgICAgICAgIHB1c2goe1xuICAgICAgICAgICAgdW5kbzogeyBvYmo6IHJlX3JlZ2lzdGVyLCBwcm9wOiB1YXJnLCB2YWx1ZTogcmVfcmVnaXN0ZXJbdWFyZ10gfSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZV9yZWdpc3Rlclt1YXJnXSA9IHBvcztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBvcGNvZGVzLkNIRUNLUFJPR1JFU1M6XG4gICAgICAgICAgaWYgKHJlX3JlZ2lzdGVyW3VhcmddID09PSBwb3MpIGJhY2t0cmFjaygpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYnl0ZWNvZGVcIik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9XG5cbiAgcmV0dXJuIHJlX21hdGNoX2ltcGw7XG59KSgpO1xuXG4vL1Byb3ZpZGVzOiByZV9zZWFyY2hfZm9yd2FyZFxuLy9SZXF1aXJlczogcmVfbWF0Y2gsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19nZXRcbmZ1bmN0aW9uIHJlX3NlYXJjaF9mb3J3YXJkKHJlLCBzLCBwb3MpIHtcbiAgaWYgKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zZWFyY2hfZm9yd2FyZFwiKTtcbiAgdmFyIHN0YXJ0Y2hhcnMgPSByZVs2XSB8IDA7XG4gIHZhciBsZW4gPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocyk7XG4gIGlmIChzdGFydGNoYXJzID49IDApIHtcbiAgICBzdGFydGNoYXJzID0gcmVbMl1bc3RhcnRjaGFycyArIDFdO1xuICAgIGRvIHtcbiAgICAgIHdoaWxlIChcbiAgICAgICAgcG9zIDwgbGVuICYmXG4gICAgICAgIGNhbWxfc3RyaW5nX2dldChzdGFydGNoYXJzLCBjYW1sX3N0cmluZ19nZXQocywgcG9zKSkgPT09IDBcbiAgICAgIClcbiAgICAgICAgcG9zKys7XG4gICAgICB2YXIgcmVzID0gcmVfbWF0Y2gocmUsIHMsIHBvcywgMCk7XG4gICAgICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICAgICAgcG9zKys7XG4gICAgfSB3aGlsZSAocG9zIDw9IGxlbik7XG4gIH0gZWxzZSB7XG4gICAgZG8ge1xuICAgICAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICAgICAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgICAgIHBvcysrO1xuICAgIH0gd2hpbGUgKHBvcyA8PSBsZW4pO1xuICB9XG4gIHJldHVybiBbMF07IC8qIFt8fF0gOiBpbnQgYXJyYXkgKi9cbn1cblxuLy9Qcm92aWRlczogcmVfc2VhcmNoX2JhY2t3YXJkXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2dldFxuZnVuY3Rpb24gcmVfc2VhcmNoX2JhY2t3YXJkKHJlLCBzLCBwb3MpIHtcbiAgaWYgKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zZWFyY2hfYmFja3dhcmRcIik7XG4gIHZhciBzdGFydGNoYXJzID0gcmVbNl0gfCAwO1xuICBpZiAoc3RhcnRjaGFycyA+PSAwKSB7XG4gICAgc3RhcnRjaGFycyA9IHJlWzJdW3N0YXJ0Y2hhcnMgKyAxXTtcbiAgICB2YXIgbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpO1xuICAgIGRvIHtcbiAgICAgIHdoaWxlIChcbiAgICAgICAgcG9zID4gMCAmJlxuICAgICAgICBwb3MgPCBsZW4gJiZcbiAgICAgICAgY2FtbF9zdHJpbmdfZ2V0KHN0YXJ0Y2hhcnMsIGNhbWxfc3RyaW5nX2dldChzLCBwb3MpKSA9PT0gMFxuICAgICAgKVxuICAgICAgICBwb3MtLTtcbiAgICAgIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAwKTtcbiAgICAgIGlmIChyZXMpIHJldHVybiByZXM7XG4gICAgICBwb3MtLTtcbiAgICB9IHdoaWxlIChwb3MgPj0gMCk7XG4gIH0gZWxzZSB7XG4gICAgZG8ge1xuICAgICAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICAgICAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgICAgIHBvcy0tO1xuICAgIH0gd2hpbGUgKHBvcyA+PSAwKTtcbiAgfVxuICByZXR1cm4gWzBdOyAvKiBbfHxdIDogaW50IGFycmF5ICovXG59XG5cbi8vUHJvdmlkZXM6IHJlX3N0cmluZ19tYXRjaFxuLy9SZXF1aXJlczogcmVfbWF0Y2gsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiByZV9zdHJpbmdfbWF0Y2gocmUsIHMsIHBvcykge1xuICBpZiAocG9zIDwgMCB8fCBwb3MgPiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyLnN0cmluZ19tYXRjaFwiKTtcbiAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICBlbHNlIHJldHVybiBbMF07XG59XG5cbi8vUHJvdmlkZXM6IHJlX3BhcnRpYWxfbWF0Y2hcbi8vUmVxdWlyZXM6IHJlX21hdGNoLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gcmVfcGFydGlhbF9tYXRjaChyZSwgcywgcG9zKSB7XG4gIGlmIChwb3MgPCAwIHx8IHBvcyA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHIucGFydGlhbF9tYXRjaFwiKTtcbiAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDEpO1xuICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICBlbHNlIHJldHVybiBbMF07XG59XG5cbi8vUHJvdmlkZXM6IHJlX3JlcGxhY2VtZW50X3RleHRcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vLyBleHRlcm5hbCByZV9yZXBsYWNlbWVudF90ZXh0OiBzdHJpbmcgLT4gaW50IGFycmF5IC0+IHN0cmluZyAtPiBzdHJpbmdcbmZ1bmN0aW9uIHJlX3JlcGxhY2VtZW50X3RleHQocmVwbCwgZ3JvdXBzLCBvcmlnKSB7XG4gIHZhciByZXBsID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhyZXBsKTtcbiAgdmFyIGxlbiA9IHJlcGwubGVuZ3RoO1xuICB2YXIgb3JpZyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcob3JpZyk7XG4gIHZhciByZXMgPSBcIlwiOyAvL3Jlc3VsdFxuICB2YXIgbiA9IDA7IC8vIGN1cnJlbnQgcG9zaXRpb25cbiAgdmFyIGN1cjsgLy9jdXJyZW50IGNoYXJcbiAgdmFyIHN0YXJ0LCBlbmQsIGM7XG4gIHdoaWxlIChuIDwgbGVuKSB7XG4gICAgY3VyID0gcmVwbC5jaGFyQXQobisrKTtcbiAgICBpZiAoY3VyICE9PSBcIlxcXFxcIikge1xuICAgICAgcmVzICs9IGN1cjtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG4gPT09IGxlbikgY2FtbF9mYWlsd2l0aChcIlN0ci5yZXBsYWNlOiBpbGxlZ2FsIGJhY2tzbGFzaCBzZXF1ZW5jZVwiKTtcbiAgICAgIGN1ciA9IHJlcGwuY2hhckF0KG4rKyk7XG4gICAgICBzd2l0Y2ggKGN1cikge1xuICAgICAgICBjYXNlIFwiXFxcXFwiOlxuICAgICAgICAgIHJlcyArPSBjdXI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCIwXCI6XG4gICAgICAgIGNhc2UgXCIxXCI6XG4gICAgICAgIGNhc2UgXCIyXCI6XG4gICAgICAgIGNhc2UgXCIzXCI6XG4gICAgICAgIGNhc2UgXCI0XCI6XG4gICAgICAgIGNhc2UgXCI1XCI6XG4gICAgICAgIGNhc2UgXCI2XCI6XG4gICAgICAgIGNhc2UgXCI3XCI6XG4gICAgICAgIGNhc2UgXCI4XCI6XG4gICAgICAgIGNhc2UgXCI5XCI6XG4gICAgICAgICAgYyA9ICtjdXI7XG4gICAgICAgICAgaWYgKGMgKiAyID49IGdyb3Vwcy5sZW5ndGggLSAxKVxuICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcIlN0ci5yZXBsYWNlOiByZWZlcmVuY2UgdG8gdW5tYXRjaGVkIGdyb3VwXCIpO1xuICAgICAgICAgIHN0YXJ0ID0gY2FtbF9hcnJheV9nZXQoZ3JvdXBzLCBjICogMik7XG4gICAgICAgICAgZW5kID0gY2FtbF9hcnJheV9nZXQoZ3JvdXBzLCBjICogMiArIDEpO1xuICAgICAgICAgIGlmIChzdGFydCA9PT0gLTEpXG4gICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IHJlZmVyZW5jZSB0byB1bm1hdGNoZWQgZ3JvdXBcIik7XG4gICAgICAgICAgcmVzICs9IG9yaWcuc2xpY2Uoc3RhcnQsIGVuZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmVzICs9IFwiXFxcXFwiICsgY3VyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhyZXMpO1xufVxuIl0sIm5hbWVzIjpbImNzdF9PdXRfb2ZfbWVtb3J5IiwiY3N0X1N5c19lcnJvciIsImNzdF9GYWlsdXJlIiwiY3N0X0ludmFsaWRfYXJndW1lbnQiLCJjc3RfRW5kX29mX2ZpbGUiLCJjc3RfRGl2aXNpb25fYnlfemVybyIsImNzdF9Ob3RfZm91bmQiLCJjc3RfTWF0Y2hfZmFpbHVyZSIsImNzdF9TdGFja19vdmVyZmxvdyIsImNzdF9TeXNfYmxvY2tlZF9pbyIsImNzdF9Bc3NlcnRfZmFpbHVyZSIsImNzdF9VbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZSJdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQTtBQUFBO0FBQUEsR0FBQTtBQUFBO0FBQUE7QUFBQSxRQUFBO0FBQUEsU0FBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGlCQUFBO0FBQUEsSUFBQTtBQUFBLElBQUE7QUFBQSxHQUFBO0FBQUEsRUFB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R3FCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsV0FNUjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxtQkFlRyxlQUNkLHVCQUNFLFlBQVksQ0FESDtBQUFBLGFBT0g7QUFBQSxhQUNBO0FBQUE7QUFBQSxpQkFFRjtBQUFBLFNBR047QUFBQSxVQUNFO0FBQUEsVUFDQTtBQUFBO0FBQUEsU0FJRjtBQUFBLFNBQ0E7QUFBQSxTQUlBLFNBQ0UsaUJBQ0E7QUFBQSxTQUlGLHdCQUF5QixPQUNoQjtBQUFBLFNBTVQ7QUFBQSxVQUNFO0FBQUEsVUFDQTtBQUFBLFVBQ0E7QUFBQSxVQUNBO0FBQUEsVUFDQTtBQUFBLFVBQ0E7QUFBQSxVQUNBO0FBQUEsVUFDQTtBQUFBO0FBQUEsU0FHRix3QkFBeUI7QUFBQSxRQUczQjtBQUFBO0FBQUE7QUFBQSxXQUd1QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFNBdUVyQjtBQUFBLFVBQWlDLE1BQ3pCO0FBQUEsU0FFUjtBQUFBLFVBQXFCLE1BQ2I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBSUUsSUFDTDtBQUFBLGdCQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUEsU0FPTDtBQUFBLFNBQ0E7QUFBQSxTQUNBO0FBQUEsU0FDQTtBQUFBLFNBQ0E7QUFBQSxTQUdBLFlBQVc7QUFBQSxVQUFrQiw2QkFDRTtBQUFBLFNBRy9CLG1CQUNFLHlCQUVBO0FBQUEsU0FHRixVQUFVO0FBQUEsUUFDWjtBQUFBO0FBQUEsU0FLRSxZQUFXO0FBQUEsVUFDVDtBQUFBLFdBRUU7QUFBQSxXQUNBO0FBQUEsV0FDQTtBQUFBO0FBQUEsVUFFRjtBQUFBO0FBQUEsUUFFSjtBQUFBO0FBQUEsU0FLRTtBQUFBLFNBRUEsbUJBQW9CO0FBQUEsU0FJcEI7QUFBQSxxQkFHWTtBQUFBLFNBQ1osWUFBVztBQUFBLFVBQTBCO0FBQUEsU0FHckMsVUFBVTtBQUFBLFFBQ1o7QUFBQSxRQUNBLHNFQUF3RTtBQUFBLE9BM1MzRDtBQUFBLE9BQUQ7QUFBQTtBQUFBLElKa0VaLFlBQVcsaUJBQW1CO0FBQUEsSUFHOUIsUUFBUTtBQUFBLEdBQ1Y7QUFBQTtBQUFBO0FBQUEsTUtqQndCO0FBQUEsMkJBRXBCLGdCQUFrQixDQUNwQjtBQUFBO0FBQUEsU0FFRSxJQUFJLElBQUksV0FBVztBQUFBLFNBQ25CLE9BQU8sNkJBQW1DO0FBQUEsUUFDNUM7QUFBQTtBQUFBLFNBRUUsT0FBTyxrQ0FBcUM7QUFBQSxRQUM5QztBQUFBO0FBQUEsU0FFRSxPQUFPLGtDQUFxQztBQUFBLFFBQzlDO0FBQUEseUNBRUUsT0FBTyw0QkFBNEIsQ0FDckM7QUFBQTtBQUFBLFNBRUUsT0FBTyxnQ0FBK0I7QUFBQSxRQUN4QztBQUFBLFFBRUE7QUFBQSxpQkFDUSxVQUNGLFVBQ0EsVUFDQTtBQUFBLFNBRUosSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBRUosSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBRUosSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBRUosSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBRUosT0FBTztBQUFBLFNBQ1AsT0FBTztBQUFBLFNBQ1AsT0FBTztBQUFBLFNBQ1AsT0FBTyxhQTdFRixDQThFTjtBQUFBLE9BbkdzQjtBQUFBLE9BQUQ7QUFBQTtBQUFBLGlCQWlKWDtBQUFB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QUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEdKemFBO0FBQUEsT0FBQUEsb0JBQUE7QUFBQTtBQUFBLE9BQUFDLGdCQUFBO0FBQUE7QUFBQSxPQUFBQyxjQUFBO0FBQUE7QUFBQSxPQUFBQyx1QkFBQTtBQUFBO0FBQUE7QUFBQSxPQUFBQyxrQkFBQTtBQUFBO0FBQUEsT0FBQUMsdUJBQUE7QUFBQTtBQUFBO0FBQUEsT0FBQUMsZ0JBQUE7QUFBQTtBQUFBLE9BQUFDLG9CQUFBO0FBQUE7QUFBQSxPQUFBQyxxQkFBQTtBQUFBO0FBQUEsT0FBQUMscUJBQUE7QUFBQTtBQUFBLE9BQUFDLHFCQUFBO0FBQUE7QUFBQTtBQUFBLE9BQUFDLGlDQUFBIiwiaWdub3JlTGlzdCI6WzAsMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTIsMTMsMTQsMTUsMTYsMTcsMTgsMTksMjAsMjEsMjIsMjMsMjQsMjUsMjYsMjcsMjgsMjksMzAsMzEsMzIsMzMsMzQsMzUsMzYsMzcsMzhdfX0seyJvZmZzZXQiOnsibGluZSI6OTQ0MCwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL2NhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICBCZW5vaXQgVmF1Z29uLCBFTlNUQSAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogUGFkZGluZyBwb3NpdGlvbi4gKilcbnR5cGUgcGFkdHkgPVxuICB8IExlZnQgICAoKiBUZXh0IGlzIGxlZnQganVzdGlmaWVkICgnLScgb3B0aW9uKS4gICAgICAgICAgICAgICAqKVxuICB8IFJpZ2h0ICAoKiBUZXh0IGlzIHJpZ2h0IGp1c3RpZmllZCAobm8gJy0nIG9wdGlvbikuICAgICAgICAgICAqKVxuICB8IFplcm9zICAoKiBUZXh0IGlzIHJpZ2h0IGp1c3RpZmllZCBieSB6ZXJvcyAoc2VlICcwJyBvcHRpb24pLiAqKVxuXG4oKioqKVxuXG4oKiBJbnRlZ2VyIGNvbnZlcnNpb24uICopXG50eXBlIGludF9jb252ID1cbiAgfCBJbnRfZCB8IEludF9wZCB8IEludF9zZCAgICAgICAgKCogICVkIHwgJStkIHwgJSBkICAqKVxuICB8IEludF9pIHwgSW50X3BpIHwgSW50X3NpICAgICAgICAoKiAgJWkgfCAlK2kgfCAlIGkgICopXG4gIHwgSW50X3ggfCBJbnRfQ3ggICAgICAgICAgICAgICAgICgqICAleCB8ICUjeCAgICAgICAgKilcbiAgfCBJbnRfWCB8IEludF9DWCAgICAgICAgICAgICAgICAgKCogICVYIHwgJSNYICAgICAgICAqKVxuICB8IEludF9vIHwgSW50X0NvICAgICAgICAgICAgICAgICAoKiAgJW8gfCAlI28gICAgICAgICopXG4gIHwgSW50X3UgICAgICAgICAgICAgICAgICAgICAgICAgICgqICAldSAgICAgICAgICAgICAgKilcbiAgfCBJbnRfQ2QgfCBJbnRfQ2kgfCBJbnRfQ3UgICAgICAgKCogICUjZCB8ICUjaSB8ICUjdSAqKVxuXG4oKiBGbG9hdCBjb252ZXJzaW9uLiAqKVxudHlwZSBmbG9hdF9mbGFnX2NvbnYgPVxuICB8IEZsb2F0X2ZsYWdfICAgICAgICAgICAgICAgICAgICAoKiAlW2ZlRWdHRmhIXSAqKVxuICB8IEZsb2F0X2ZsYWdfcCAgICAgICAgICAgICAgICAgICAoKiAlK1tmZUVnR0ZoSF0gKilcbiAgfCBGbG9hdF9mbGFnX3MgICAgICAgICAgICAgICAgICAgKCogJSBbZmVFZ0dGaEhdICopXG50eXBlIGZsb2F0X2tpbmRfY29udiA9XG4gIHwgRmxvYXRfZiAgICAgICAgICAgICAgICAgICAgICAgICgqICAlZiB8ICUrZiB8ICUgZiAgKilcbiAgfCBGbG9hdF9lICAgICAgICAgICAgICAgICAgICAgICAgKCogICVlIHwgJStlIHwgJSBlICAqKVxuICB8IEZsb2F0X0UgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJUUgfCAlK0UgfCAlIEUgICopXG4gIHwgRmxvYXRfZyAgICAgICAgICAgICAgICAgICAgICAgICgqICAlZyB8ICUrZyB8ICUgZyAgKilcbiAgfCBGbG9hdF9HICAgICAgICAgICAgICAgICAgICAgICAgKCogICVHIHwgJStHIHwgJSBHICAqKVxuICB8IEZsb2F0X0YgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJUYgfCAlK0YgfCAlIEYgICopXG4gIHwgRmxvYXRfaCAgICAgICAgICAgICAgICAgICAgICAgICgqICAlaCB8ICUraCB8ICUgaCAgKilcbiAgfCBGbG9hdF9IICAgICAgICAgICAgICAgICAgICAgICAgKCogICVIIHwgJStIIHwgJSBIICAqKVxuICB8IEZsb2F0X0NGICAgICAgICAgICAgICAgICAgICAgICAoKiAgJSNGfCAlKyNGfCAlICNGICopXG50eXBlIGZsb2F0X2NvbnYgPSBmbG9hdF9mbGFnX2NvbnYgKiBmbG9hdF9raW5kX2NvbnZcblxuKCoqKilcblxuKCogQ2hhciBzZXRzIChzZWUgJVsuLi5dKSBhcmUgYml0bWFwcyBpbXBsZW1lbnRlZCBhcyAzMi1jaGFyIHN0cmluZ3MuICopXG50eXBlIGNoYXJfc2V0ID0gc3RyaW5nXG5cbigqKiopXG5cbigqIENvdW50ZXIgdXNlZCBpbiBTY2FuZi4gKilcbnR5cGUgY291bnRlciA9XG4gIHwgTGluZV9jb3VudGVyICAgICAoKiAgJWwgICAgICAqKVxuICB8IENoYXJfY291bnRlciAgICAgKCogICVuICAgICAgKilcbiAgfCBUb2tlbl9jb3VudGVyICAgICgqICAlTiwgJUwgICopXG5cbigqKiopXG5cbigqIFBhZGRpbmcgb2Ygc3RyaW5ncyBhbmQgbnVtYmVycy4gKilcbnR5cGUgKCdhLCAnYikgcGFkZGluZyA9XG4gICgqIE5vIHBhZGRpbmcgKGV4OiBcIiVkXCIpICopXG4gIHwgTm9fcGFkZGluZyAgOiAoJ2EsICdhKSBwYWRkaW5nXG4gICgqIExpdGVyYWwgcGFkZGluZyAoZXg6IFwiJThkXCIpICopXG4gIHwgTGl0X3BhZGRpbmcgOiBwYWR0eSAqIGludCAtPiAoJ2EsICdhKSBwYWRkaW5nXG4gICgqIFBhZGRpbmcgYXMgZXh0cmEgYXJndW1lbnQgKGV4OiBcIiUqZFwiKSAqKVxuICB8IEFyZ19wYWRkaW5nIDogcGFkdHkgLT4gKGludCAtPiAnYSwgJ2EpIHBhZGRpbmdcblxuKCogU29tZSBmb3JtYXRzLCBzdWNoIGFzICVfZCxcbiAgIG9ubHkgYWNjZXB0IGFuIG9wdGlvbmFsIG51bWJlciBhcyBwYWRkaW5nIG9wdGlvbiAobm8gZXh0cmEgYXJndW1lbnQpICopXG50eXBlIHBhZF9vcHRpb24gPSBpbnQgb3B0aW9uXG5cbigqIFByZWNpc2lvbiBvZiBmbG9hdHMgYW5kICcwJy1wYWRkaW5nIG9mIGludGVnZXJzLiAqKVxudHlwZSAoJ2EsICdiKSBwcmVjaXNpb24gPVxuICAoKiBObyBwcmVjaXNpb24gKGV4OiBcIiVmXCIpICopXG4gIHwgTm9fcHJlY2lzaW9uIDogKCdhLCAnYSkgcHJlY2lzaW9uXG4gICgqIExpdGVyYWwgcHJlY2lzaW9uIChleDogXCIlLjNmXCIpICopXG4gIHwgTGl0X3ByZWNpc2lvbiA6IGludCAtPiAoJ2EsICdhKSBwcmVjaXNpb25cbiAgKCogUHJlY2lzaW9uIGFzIGV4dHJhIGFyZ3VtZW50IChleDogXCIlLipmXCIpICopXG4gIHwgQXJnX3ByZWNpc2lvbiA6IChpbnQgLT4gJ2EsICdhKSBwcmVjaXNpb25cblxuKCogU29tZSBmb3JtYXRzLCBzdWNoIGFzICVfZixcbiAgIG9ubHkgYWNjZXB0IGFuIG9wdGlvbmFsIG51bWJlciBhcyBwcmVjaXNpb24gb3B0aW9uIChubyBleHRyYSBhcmd1bWVudCkgKilcbnR5cGUgcHJlY19vcHRpb24gPSBpbnQgb3B0aW9uXG5cbigqIHNlZSB0aGUgQ3VzdG9tIGZvcm1hdCBjb21iaW5hdG9yICopXG50eXBlICgnYSwgJ2IsICdjKSBjdXN0b21fYXJpdHkgPVxuICB8IEN1c3RvbV96ZXJvIDogKCdhLCBzdHJpbmcsICdhKSBjdXN0b21fYXJpdHlcbiAgfCBDdXN0b21fc3VjYyA6ICgnYSwgJ2IsICdjKSBjdXN0b21fYXJpdHkgLT5cbiAgICAoJ2EsICd4IC0+ICdiLCAneCAtPiAnYykgY3VzdG9tX2FyaXR5XG5cbigqKiopXG5cbigqICAgICAgICBSZWxhdGlvbmFsIGZvcm1hdCB0eXBlc1xuXG5JbiB0aGUgZmlyc3QgZm9ybWF0K2dhZHRzIGltcGxlbWVudGF0aW9uLCB0aGUgdHlwZSBmb3IgJSguLiUpIGluIHRoZVxuZm10IEdBRFQgd2FzIGFzIGZvbGxvd3M6XG5cbnwgRm9ybWF0X3N1YnN0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgIHBhZF9vcHRpb24gKiAoJ2QxLCAncTEsICdkMiwgJ3EyKSByZWFkZXJfbmJfdW5pZmllciAqXG4gICAgKCd4LCAnYiwgJ2MsICdkMSwgJ3ExLCAndSkgZm10dHkgKlxuICAgICgndSwgJ2IsICdjLCAncTEsICdlMSwgJ2YpIGZtdCAtPlxuICAgICAgKCgneCwgJ2IsICdjLCAnZDIsICdxMiwgJ3UpIGZvcm1hdDYgLT4gJ3gsICdiLCAnYywgJ2QxLCAnZTEsICdmKSBmbXRcblxuTm90aWNlIHRoYXQgdGhlICd1IHBhcmFtZXRlciBpbiAnZiBwb3NpdGlvbiBpbiB0aGUgZm9ybWF0IGFyZ3VtZW50XG4oKCd4LCAuLiwgJ3UpIGZvcm1hdDYgLT4gLi4pIGlzIGVxdWFsIHRvIHRoZSAndSBwYXJhbWV0ZXIgaW4gJ2FcbnBvc2l0aW9uIGluIHRoZSBmb3JtYXQgdGFpbCAoKCd1LCAuLiwgJ2YpIGZtdCkuIFRoaXMgbWVhbnMgdGhhdCB0aGVcbnR5cGUgb2YgdGhlIGV4cGVjdGVkIGZvcm1hdCBwYXJhbWV0ZXIgZGVwZW5kcyBvZiB3aGVyZSB0aGUgJSguLi4lKVxuYXJlIGluIHRoZSBmb3JtYXQgc3RyaW5nOlxuXG4gICMgUHJpbnRmLnByaW50ZiBcIiUoJSlcIlxuICAtIDogKHVuaXQsIG91dF9jaGFubmVsLCB1bml0LCAnX2EsICdfYSwgdW5pdClcbiAgICAgIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2IC0+IHVuaXRcbiAgPSA8ZnVuPlxuICAjIFByaW50Zi5wcmludGYgXCIlKCUpJWRcIlxuICAtIDogKGludCAtPiB1bml0LCBvdXRfY2hhbm5lbCwgdW5pdCwgJ19hLCAnX2EsIGludCAtPiB1bml0KVxuICAgICAgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDYgLT4gaW50IC0+IHVuaXRcbiAgPSA8ZnVuPlxuXG5PbiB0aGUgY29udHJhcnksIHRoZSBsZWdhY3kgdHlwZXIgZ2l2ZXMgYSBjbGV2ZXIgdHlwZSB0aGF0IGRvZXMgbm90XG5kZXBlbmQgb24gdGhlIHBvc2l0aW9uIG9mICUoLi4lKSBpbiB0aGUgZm9ybWF0IHN0cmluZy4gRm9yIGV4YW1wbGUsXG4lKCUpIHdpbGwgaGF2ZSB0aGUgcG9seW1vcnBoaWMgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSk6IGl0IGNhblxuYmUgY29uY2F0ZW5hdGVkIHRvIGFueSBmb3JtYXQgdHlwZSwgYW5kIG9ubHkgZW5mb3JjZXMgdGhlIGNvbnN0cmFpbnRcbnRoYXQgaXRzICdhIGFuZCAnZiBwYXJhbWV0ZXJzIGFyZSBlcXVhbCAobm8gZm9ybWF0IGFyZ3VtZW50cykgYW5kICdkXG5hbmQgJ2UgYXJlIGVxdWFsIChubyByZWFkZXIgYXJndW1lbnQpLlxuXG5UaGUgd2Vha2VuaW5nIG9mIHRoaXMgcGFyYW1ldGVyIHR5cGUgaW4gdGhlIEdBRFQgdmVyc2lvbiBicm9rZSB1c2VyXG5jb2RlIChpbiBmYWN0IGl0IGVzc2VudGlhbGx5IG1hZGUgJSguLi4lKSB1bnVzYWJsZSBleGNlcHQgYXQgdGhlIGxhc3RcbnBvc2l0aW9uIG9mIGEgZm9ybWF0KS4gSW4gcGFydGljdWxhciwgdGhlIGZvbGxvd2luZyB3b3VsZCBub3Qgd29ya1xuYW55bW9yZTpcblxuICBmdW4gc2VwIC0+XG4gICAgRm9ybWF0LnByaW50ZiBcImZvbyUoJSliYXIlKCUpYmF6XCIgc2VwIHNlcFxuXG5BcyB0aGUgdHlwZS1jaGVja2VyIHdvdWxkIHJlcXVpcmUgdHdvICppbmNvbXBhdGlibGUqIHR5cGVzIGZvciB0aGUgJSglKVxuaW4gZGlmZmVyZW50IHBvc2l0aW9ucy5cblxuVGhlIHNvbHV0aW9uIHRvIHJlZ2FpbiBhIGdlbmVyYWwgdHlwZSBmb3IgJSguLiUpIGlzIHRvIGdlbmVyYWxpemUgdGhpc1xudGVjaG5pcXVlLCBub3Qgb25seSBvbiB0aGUgJ2QsICdlIHBhcmFtZXRlcnMsIGJ1dCBvbiBhbGwgc2l4XG5wYXJhbWV0ZXJzIG9mIGEgZm9ybWF0OiB3ZSBpbnRyb2R1Y2UgYSBcInJlbGF0aW9uYWxcIiB0eXBlXG4gICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG53aG9zZSB2YWx1ZXMgYXJlIHByb29mcyB0aGF0ICgnYTEsIC4uLCAnZjEpIGFuZCAoJ2EyLCAuLiwgJ2YyKSBtb3JhbGx5XG5jb3JyZXNwb25kIHRvIHRoZSBzYW1lIGZvcm1hdCB0eXBlOiAnYTEgaXMgb2J0YWluZWQgZnJvbSAnZjEsJ2IxLCdjMVxuaW4gdGhlIGV4YWN0IHNhbWUgd2F5IHRoYXQgJ2EyIGlzIG9idGFpbmVkIGZyb20gJ2YyLCdiMiwnYzIsIGV0Yy5cblxuRm9yIGV4YW1wbGUsIHRoZSByZWxhdGlvbiBiZXR3ZWVuIHR3byBmb3JtYXQgdHlwZXMgYmVnaW5uaW5nIHdpdGggYSBDaGFyXG5wYXJhbWV0ZXIgaXMgYXMgZm9sbG93czpcblxufCBDaGFyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWMgICopXG4gICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgIChjaGFyIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgIGNoYXIgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbkluIHRoZSBnZW5lcmFsIGNhc2UsIHRoZSB0ZXJtIHN0cnVjdHVyZSBvZiBmbXR0eV9yZWwgaXMgKGFsbW9zdFsxXSlcbmlzb21vcnBoaWMgdG8gdGhlIGZtdHR5IG9mIHRoZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbjogZXZlcnlcbmNvbnN0cnVjdG9yIGlzIHJlLXJlYWQgd2l0aCBhIGJpbmFyeSwgcmVsYXRpb25hbCB0eXBlLCBpbnN0ZWFkIG9mIHRoZVxucHJldmlvdXMgdW5hcnkgdHlwaW5nLiBmbXR0eSBjYW4gdGhlbiBiZSByZS1kZWZpbmVkIGFzIHRoZSBkaWFnb25hbCBvZlxuZm10dHlfcmVsOlxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5ID1cbiAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZixcbiAgICAgICAgJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHlfcmVsXG5cbk9uY2Ugd2UgaGF2ZSB0aGlzIGZtdHR5X3JlbCB0eXBlIGluIHBsYWNlLCB3ZSBjYW4gZ2l2ZSB0aGUgbW9yZVxuZ2VuZXJhbCB0eXBlIHRvICUoLi4uJSk6XG5cbnwgRm9ybWF0X3N1YnN0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgIHBhZF9vcHRpb24gKlxuICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAnZzIsICdiLCAnYywgJ2oyLCAnZCwgJ2EpIGZtdHR5X3JlbCAqXG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiLCAnYywgJ2oyLCAnZSwgJ2YpIGZtdFxuXG5XZSBhY2NlcHQgYW55IGZvcm1hdCAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYpICh0aGlzIGlzXG5jb21wbGV0ZWx5IHVucmVsYXRlZCB0byB0aGUgdHlwZSBvZiB0aGUgY3VycmVudCBmb3JtYXQpLCBidXQgYWxzb1xucmVxdWlyZSBhIHByb29mIHRoYXQgdGhpcyBmb3JtYXQgaXMgaW4gcmVsYXRpb24gdG8gYW5vdGhlciBmb3JtYXQgdGhhdFxuaXMgY29uY2F0ZW5hYmxlIHRvIHRoZSBmb3JtYXQgdGFpbC4gV2hlbiBleGVjdXRpbmcgYSAlKC4uLiUpIGZvcm1hdFxuKGluIGNhbWxpbnRlcm5hbEZvcm1hdC5tbDptYWtlX3ByaW50ZiBvciBzY2FuZi5tbDptYWtlX3NjYW5mKSwgd2VcbnRyYW5zdHlwZSB0aGUgZm9ybWF0IGFsb25nIHRoaXMgcmVsYXRpb24gdXNpbmcgdGhlICdyZWNhc3QnIGZ1bmN0aW9uXG50byB0cmFuc3Bvc2UgYmV0d2VlbiByZWxhdGVkIGZvcm1hdCB0eXBlcy5cblxuICB2YWwgcmVjYXN0IDpcbiAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEpIGZtdFxuICAtPiAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICAtPiAoJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10XG5cbk5PVEUgWzFdOiB0aGUgdHlwaW5nIG9mIEZvcm1hdF9zdWJzdF90eSByZXF1aXJlcyBub3Qgb25lIGZvcm1hdCB0eXBlLCBidXRcbnR3bywgb25lIHRvIGVzdGFibGlzaCB0aGUgbGluayBiZXR3ZWVuIHRoZSBmb3JtYXQgYXJndW1lbnQgYW5kIHRoZVxuZmlyc3Qgc2l4IHBhcmFtZXRlcnMsIGFuZCB0aGUgb3RoZXIgZm9yIHRoZSBsaW5rIGJldHdlZW4gdGhlIGZvcm1hdFxuYXJndW1lbnQgYW5kIHRoZSBsYXN0IHNpeCBwYXJhbWV0ZXJzLlxuXG58IEZvcm1hdF9zdWJzdF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICdnMSwgJ2IxLCAnYzEsICdqMSwgJ2QxLCAnYTEpIGZtdHR5X3JlbCAqXG4gICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICdnMiwgJ2IyLCAnYzIsICdqMiwgJ2QyLCAnYTIpIGZtdHR5X3JlbCAqXG4gICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzEsICdiMSwgJ2MxLCAnajEsICdlMSwgJ2YxLFxuICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiMiwgJ2MyLCAnajIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuV2hlbiB3ZSBnZW5lcmF0ZSBhIGZvcm1hdCBBU1QsIHdlIGdlbmVyYXRlIGV4YWN0bHkgdGhlIHNhbWUgd2l0bmVzc1xuZm9yIGJvdGggcmVsYXRpb25zLCBhbmQgdGhlIHdpdG5lc3MtY29udmVyc2lvbiBmdW5jdGlvbnMgaW5cbmNhbWxpbnRlcm5hbEZvcm1hdCBkbyByZWx5IG9uIHRoaXMgaW52YXJpYW50LiBGb3IgZXhhbXBsZSwgdGhlXG5mdW5jdGlvbiB0aGF0IHByb3ZlcyB0aGF0IHRoZSByZWxhdGlvbiBpcyB0cmFuc2l0aXZlXG5cbiAgdmFsIHRyYW5zIDpcbiAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgLT4gKCdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIsXG4gICAgICAnYTMsICdiMywgJ2MzLCAnZDMsICdlMywgJ2YzKSBmbXR0eV9yZWxcbiAgLT4gKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAnYTMsICdiMywgJ2MzLCAnZDMsICdlMywgJ2YzKSBmbXR0eV9yZWxcblxuZG9lcyBhc3N1bWUgdGhhdCB0aGUgdHdvIGlucHV0cyBoYXZlIGV4YWN0bHkgdGhlIHNhbWUgdGVybSBzdHJ1Y3R1cmVcbihhbmQgaXMgb25seSBldmVyeSB1c2VkIGZvciBhcmd1bWVudCB3aXRuZXNzZXMgb2YgdGhlXG5Gb3JtYXRfc3Vic3RfdHkgY29uc3RydWN0b3IpLlxuKilcblxuKCogVHlwZSBvZiBhIGJsb2NrIHVzZWQgYnkgdGhlIEZvcm1hdCBwcmV0dHktcHJpbnRlci4gKilcbnR5cGUgYmxvY2tfdHlwZSA9XG4gIHwgUHBfaGJveCAgICgqIEhvcml6b250YWwgYmxvY2sgbm8gbGluZSBicmVha2luZyAqKVxuICB8IFBwX3Zib3ggICAoKiBWZXJ0aWNhbCBibG9jayBlYWNoIGJyZWFrIGxlYWRzIHRvIGEgbmV3IGxpbmUgKilcbiAgfCBQcF9odmJveCAgKCogSG9yaXpvbnRhbC12ZXJ0aWNhbCBibG9jazogc2FtZSBhcyB2Ym94LCBleGNlcHQgaWYgdGhpcyBibG9ja1xuICAgICAgICAgICAgICAgICBpcyBzbWFsbCBlbm91Z2ggdG8gZml0IG9uIGEgc2luZ2xlIGxpbmUgKilcbiAgfCBQcF9ob3Zib3ggKCogSG9yaXpvbnRhbCBvciBWZXJ0aWNhbCBibG9jazogYnJlYWtzIGxlYWQgdG8gbmV3IGxpbmVcbiAgICAgICAgICAgICAgICAgb25seSB3aGVuIG5lY2Vzc2FyeSB0byBwcmludCB0aGUgY29udGVudCBvZiB0aGUgYmxvY2sgKilcbiAgfCBQcF9ib3ggICAgKCogSG9yaXpvbnRhbCBvciBJbmRlbnQgYmxvY2s6IGJyZWFrcyBsZWFkIHRvIG5ldyBsaW5lXG4gICAgICAgICAgICAgICAgIG9ubHkgd2hlbiBuZWNlc3NhcnkgdG8gcHJpbnQgdGhlIGNvbnRlbnQgb2YgdGhlIGJsb2NrLCBvclxuICAgICAgICAgICAgICAgICB3aGVuIGl0IGxlYWRzIHRvIGEgbmV3IGluZGVudGF0aW9uIG9mIHRoZSBjdXJyZW50IGxpbmUgKilcbiAgfCBQcF9maXRzICAgKCogSW50ZXJuYWwgdXNhZ2U6IHdoZW4gYSBibG9jayBmaXRzIG9uIGEgc2luZ2xlIGxpbmUgKilcblxuKCogRm9ybWF0dGluZyBlbGVtZW50IHVzZWQgYnkgdGhlIEZvcm1hdCBwcmV0dHktcHJpbnRlci4gKilcbnR5cGUgZm9ybWF0dGluZ19saXQgPVxuICB8IENsb3NlX2JveCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXSAgICopXG4gIHwgQ2xvc2VfdGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEB9ICAgKilcbiAgfCBCcmVhayBvZiBzdHJpbmcgKiBpbnQgKiBpbnQgICAgICAgICAgKCogQCwgfCBAICB8IEA7IHwgQDs8PiAqKVxuICB8IEZGbHVzaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAPyAgICopXG4gIHwgRm9yY2VfbmV3bGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBcXG4gICopXG4gIHwgRmx1c2hfbmV3bGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEAuICAgKilcbiAgfCBNYWdpY19zaXplIG9mIHN0cmluZyAqIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQDxuPiAqKVxuICB8IEVzY2FwZWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAQCAgICopXG4gIHwgRXNjYXBlZF9wZXJjZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEAlJSAgKilcbiAgfCBTY2FuX2luZGljIG9mIGNoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQFggICAqKVxuXG4oKiBGb3JtYXR0aW5nIGVsZW1lbnQgdXNlZCBieSB0aGUgRm9ybWF0IHByZXR0eS1wcmludGVyLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0dGluZ19nZW4gPVxuICB8IE9wZW5fdGFnIDogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT4gICAgICAoKiBAeyAgICopXG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdHRpbmdfZ2VuXG4gIHwgT3Blbl9ib3ggOiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPiAgICAgICgqIEBbICAgKilcbiAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0dGluZ19nZW5cblxuKCoqKilcblxuKCogTGlzdCBvZiBmb3JtYXQgdHlwZSBlbGVtZW50cy4gKilcbigqIEluIHBhcnRpY3VsYXIgdXNlZCB0byByZXByZXNlbnQgJSguLi4lKSBhbmQgJXsuLi4lfSBjb250ZW50cy4gKilcbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgPVxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZixcbiAgICAgICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X3JlbFxuYW5kICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgPVxuICB8IENoYXJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYyAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGNoYXIgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBjaGFyIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IFN0cmluZ190eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlcyAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKHN0cmluZyAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIHN0cmluZyAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBJbnRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWQgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChpbnQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBpbnQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSW50MzJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVsZCAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoaW50MzIgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBpbnQzMiAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBOYXRpdmVpbnRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJW5kICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChuYXRpdmVpbnQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBuYXRpdmVpbnQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSW50NjRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVMZCAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoaW50NjQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBpbnQ2NCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBGbG9hdF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWYgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChmbG9hdCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGZsb2F0IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEJvb2xfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlQiAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGJvb2wgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBib29sIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG4gIHwgRm9ybWF0X2FyZ190eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICV7Li4uJX0gKilcbiAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmbXR0eSAqXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpXG4gICAgICAgICAgIGZtdHR5X3JlbFxuICB8IEZvcm1hdF9zdWJzdF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgICAnZzEsICdiMSwgJ2MxLCAnajEsICdkMSwgJ2ExKSBmbXR0eV9yZWwgKlxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICAgJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZDIsICdhMikgZm10dHlfcmVsICpcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMSwgJ2IxLCAnYzEsICdqMSwgJ2UxLCAnZjEsXG4gICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZTIsICdmMilcbiAgICAgICAgICAgZm10dHlfcmVsXG5cbiAgKCogUHJpbnRmIGFuZCBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3JzLiAqKVxuICB8IEFscGhhX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYSAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCgnYjEgLT4gJ3ggLT4gJ2MxKSAtPiAneCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICgnYjIgLT4gJ3ggLT4gJ2MyKSAtPiAneCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBUaGV0YV90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXQgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2IxIC0+ICdjMSkgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAoJ2IyIC0+ICdjMikgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgQW55X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBVc2VkIGZvciBjdXN0b20gZm9ybWF0cyAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoJ3ggLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAneCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuICAoKiBTY2FuZiBzcGVjaWZpYyBjb25zdHJ1Y3Rvci4gKilcbiAgfCBSZWFkZXJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXIgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgneCAtPiAnYTEsICdiMSwgJ2MxLCAoJ2IxIC0+ICd4KSAtPiAnZDEsICdlMSwgJ2YxLFxuICAgICAgICd4IC0+ICdhMiwgJ2IyLCAnYzIsICgnYjIgLT4gJ3gpIC0+ICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IElnbm9yZWRfcmVhZGVyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3IgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgnYTEsICdiMSwgJ2MxLCAoJ2IxIC0+ICd4KSAtPiAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICgnYjIgLT4gJ3gpIC0+ICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG4gIHwgRW5kX29mX2ZtdHR5IDpcbiAgICAgICgnZjEsICdiMSwgJ2MxLCAnZDEsICdkMSwgJ2YxLFxuICAgICAgICdmMiwgJ2IyLCAnYzIsICdkMiwgJ2QyLCAnZjIpIGZtdHR5X3JlbFxuXG4oKioqKVxuXG4oKiBMaXN0IG9mIGZvcm1hdCBlbGVtZW50cy4gKilcbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10ID1cbiAgfCBDaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoY2hhciAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBDYW1sX2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlQyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoY2hhciAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTdHJpbmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlcyAqKVxuICAgICAgKCd4LCBzdHJpbmcgLT4gJ2EpIHBhZGRpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBDYW1sX3N0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlUyAqKVxuICAgICAgKCd4LCBzdHJpbmcgLT4gJ2EpIHBhZGRpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBJbnQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgaW50IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSW50MzIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWxbZGl4WHVvXSAqKVxuICAgICAgaW50X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBpbnQzMiAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IE5hdGl2ZWludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVuW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgbmF0aXZlaW50IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSW50NjQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJUxbZGl4WHVvXSAqKVxuICAgICAgaW50X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBpbnQ2NCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZsb2F0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbZmVFZ0dGaEhdICopXG4gICAgICBmbG9hdF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgZmxvYXQgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBCb29sIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW2JCXSAqKVxuICAgICAgKCd4LCBib29sIC0+ICdhKSBwYWRkaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgRmx1c2ggOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSEgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogYWJjICopXG4gICAgICBzdHJpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBDaGFyX2xpdGVyYWwgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiB4ICopXG4gICAgICBjaGFyICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgfCBGb3JtYXRfYXJnIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAley4uLiV9ICopXG4gICAgICBwYWRfb3B0aW9uICogKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZtdHR5ICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICAgIHBhZF9vcHRpb24gKlxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICAgJ2cyLCAnYiwgJ2MsICdqMiwgJ2QsICdhKSBmbXR0eV9yZWwgKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMiwgJ2IsICdjLCAnajIsICdlLCAnZikgZm10XG5cbiAgKCogUHJpbnRmIGFuZCBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3IuICopXG4gIHwgQWxwaGEgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWEgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCgnYiAtPiAneCAtPiAnYykgLT4gJ3ggLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgVGhldGEgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXQgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCgnYiAtPiAnYykgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgKCogRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9yOiAqKVxuICB8IEZvcm1hdHRpbmdfbGl0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBfICopXG4gICAgICBmb3JtYXR0aW5nX2xpdCAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZvcm1hdHRpbmdfZ2VuIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXyAqKVxuICAgICAgKCdhMSwgJ2IsICdjLCAnZDEsICdlMSwgJ2YxKSBmb3JtYXR0aW5nX2dlbiAqXG4gICAgICAoJ2YxLCAnYiwgJ2MsICdlMSwgJ2UyLCAnZjIpIGZtdCAtPiAoJ2ExLCAnYiwgJ2MsICdkMSwgJ2UyLCAnZjIpIGZtdFxuXG4gICgqIFNjYW5mIHNwZWNpZmljIGNvbnN0cnVjdG9yczogKilcbiAgfCBSZWFkZXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlciAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3ggLT4gJ2EsICdiLCAnYywgKCdiIC0+ICd4KSAtPiAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTY2FuX2NoYXJfc2V0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlWy4uLl0gKilcbiAgICAgIHBhZF9vcHRpb24gKiBjaGFyX3NldCAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKHN0cmluZyAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTY2FuX2dldF9jb3VudGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW25sTkxdICopXG4gICAgICBjb3VudGVyICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoaW50IC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IFNjYW5fbmV4dF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUwYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgKGNoYXIgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSWdub3JlZF9wYXJhbSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV8gKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ3ksICd4KSBpZ25vcmVkICogKCd4LCAnYiwgJ2MsICd5LCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgKCogQ3VzdG9tIHByaW50aW5nIGZvcm1hdCAoUFIjNjQ1MiwgR1BSIzE0MClcblxuICAgICBXZSBpbmNsdWRlIGEgdHlwZSBDdXN0b20gb2YgXCJjdXN0b20gY29udmVydGVyc1wiLCB3aGVyZSBhblxuICAgICBhcmJpdHJhcnkgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gY29udmVydCBvbmUgb3IgbW9yZVxuICAgICBhcmd1bWVudHMuIFRoZXJlIGlzIG5vIHN5bnRheCBmb3IgY3VzdG9tIGNvbnZlcnRlcnMsIGl0IGlzIG9ubHlcbiAgICAgaW50ZW5kZWQgZm9yIGN1c3RvbSBwcm9jZXNzb3JzIHRoYXQgd2lzaCB0byByZWx5IG9uIHRoZVxuICAgICBzdGRsaWItZGVmaW5lZCBmb3JtYXQgR0FEVHMuXG5cbiAgICAgRm9yIGluc3RhbmNlIGEgcHJlLXByb2Nlc3NvciBjb3VsZCBjaG9vc2UgdG8gaW50ZXJwcmV0IHN0cmluZ3NcbiAgICAgcHJlZml4ZWQgd2l0aCBbXCIhXCJdIGFzIGZvcm1hdCBzdHJpbmdzIHdoZXJlIFsle3sgLi4uIH19XSBpc1xuICAgICBhIHNwZWNpYWwgZm9ybSB0byBwYXNzIGEgdG9fc3RyaW5nIGZ1bmN0aW9uLCBzbyB0aGF0IG9uZSBjb3VsZFxuICAgICB3cml0ZTpcblxuICAgICB7W1xuICAgICAgIHR5cGUgdCA9IHsgeCA6IGludDsgeSA6IGludCB9XG5cbiAgICAgICBsZXQgc3RyaW5nX29mX3QgdCA9IFByaW50Zi5zcHJpbnRmIFwieyB4ID0gJWQ7IHkgPSAlZCB9XCIgdC54IHQueVxuXG4gICAgICAgUHJpbnRmLnByaW50ZiAhXCJ0ID0gJXt7c3RyaW5nX29mX3R9fVwiIHsgeCA9IDQyOyB5ID0gNDIgfVxuICAgICBdfVxuICAqKVxuICB8IEN1c3RvbSA6XG4gICAgICAoJ2EsICd4LCAneSkgY3VzdG9tX2FyaXR5ICogKHVuaXQgLT4gJ3gpICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgKCd5LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gICgqIGVuZCBvZiBhIGZvcm1hdCBzcGVjaWZpY2F0aW9uICopXG4gIHwgRW5kX29mX2Zvcm1hdCA6XG4gICAgICAgICgnZiwgJ2IsICdjLCAnZSwgJ2UsICdmKSBmbXRcblxuKCoqKilcblxuKCogVHlwZSBmb3IgaWdub3JlZCBwYXJhbWV0ZXJzIChzZWUgXCIlX1wiKS4gKilcbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgaWdub3JlZCA9XG4gIHwgSWdub3JlZF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9jICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfY2FtbF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfQyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3N0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3MgKilcbiAgICAgIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX1MgKilcbiAgICAgIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2ludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX2QgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfaW50MzIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfbGQgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfbmF0aXZlaW50IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfbmQgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfaW50NjQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfTGQgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfZmxvYXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfZiAqKVxuICAgICAgcGFkX29wdGlvbiAqIHByZWNfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9ib29sIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9CICopXG4gICAgICBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV97Li4uJX0gKilcbiAgICAgIHBhZF9vcHRpb24gKiAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm10dHkgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlXyguLi4lKSAqKVxuICAgICAgcGFkX29wdGlvbiAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgaWdub3JlZFxuICB8IElnbm9yZWRfcmVhZGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfciAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICgnYiAtPiAneCkgLT4gJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfWy4uLl0gKilcbiAgICAgIHBhZF9vcHRpb24gKiBjaGFyX3NldCAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfW25sTkxdICopXG4gICAgICBjb3VudGVyIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV8wYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcblxuYW5kICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID1cbiAgRm9ybWF0IG9mICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgKiBzdHJpbmdcblxubGV0IHJlYyBlcmFzZV9yZWwgOiB0eXBlIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIC5cbiAgKGEsIGIsIGMsIGQsIGUsIGYsXG4gICBnLCBoLCBpLCBqLCBrLCBsKSBmbXR0eV9yZWwgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5XG49IGZ1bmN0aW9uXG4gIHwgQ2hhcl90eSByZXN0IC0+XG4gICAgQ2hhcl90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgU3RyaW5nX3R5IHJlc3QgLT5cbiAgICBTdHJpbmdfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEludF90eSByZXN0IC0+XG4gICAgSW50X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJbnQzMl90eSByZXN0IC0+XG4gICAgSW50MzJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEludDY0X3R5IHJlc3QgLT5cbiAgICBJbnQ2NF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT5cbiAgICBOYXRpdmVpbnRfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEZsb2F0X3R5IHJlc3QgLT5cbiAgICBGbG9hdF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgQm9vbF90eSByZXN0IC0+XG4gICAgQm9vbF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgRm9ybWF0X2FyZ190eSAodHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIGVyYXNlX3JlbCByZXN0KVxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCBfdHkyLCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTEsIGVyYXNlX3JlbCByZXN0KVxuICB8IEFscGhhX3R5IHJlc3QgLT5cbiAgICBBbHBoYV90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgVGhldGFfdHkgcmVzdCAtPlxuICAgIFRoZXRhX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBBbnlfdHkgcmVzdCAtPlxuICAgIEFueV90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT5cbiAgICBSZWFkZXJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT5cbiAgICBJZ25vcmVkX3JlYWRlcl90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgRW5kX29mX2ZtdHR5IC0+IEVuZF9vZl9mbXR0eVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCB0eXBlIGNvbmNhdGVuYXRpb24gKilcblxuKCogQ29uY2F0ZW5hdGUgdHdvIGZvcm1hdCB0eXBlcy4gKilcbigqIFVzZWQgYnk6XG4gICAqIHJlYWRlcl9uYl91bmlmaWVyX29mX2ZtdHR5IHRvIGNvdW50IHJlYWRlcnMgaW4gYW4gZm10dHksXG4gICAqIFNjYW5mLnRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgdG8gZXh0cmFjdCByZWFkZXJzIGluc2lkZSAlKC4uLiUpLFxuICAgKiBDYW1saW50ZXJuYWxGb3JtYXQuZm10dHlfb2ZfaWdub3JlZF9mb3JtYXQgdG8gZXh0cmFjdCBmb3JtYXQgdHlwZS4gKilcblxuKCpcbmxldCByZWMgY29uY2F0X2ZtdHR5IDogdHlwZSBhIGIgYyBkIGUgZiBnIGggLlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAgIChmLCBiLCBjLCBlLCBnLCBoKSBmbXR0eSAtPlxuICAgIChhLCBiLCBjLCBkLCBnLCBoKSBmbXR0eSA9XG4qKVxubGV0IHJlYyBjb25jYXRfZm10dHkgOlxuICB0eXBlIGExIGIxIGMxIGQxIGUxIGYxXG4gICAgICAgYTIgYjIgYzIgZDIgZTIgZjJcbiAgICAgICBnMSBqMSBnMiBqMlxuICAuXG4gICAgKGcxLCBiMSwgYzEsIGoxLCBkMSwgYTEsXG4gICAgIGcyLCBiMiwgYzIsIGoyLCBkMiwgYTIpIGZtdHR5X3JlbCAtPlxuICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgICBhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWwgLT5cbiAgICAoZzEsIGIxLCBjMSwgajEsIGUxLCBmMSxcbiAgICAgZzIsIGIyLCBjMiwgajIsIGUyLCBmMikgZm10dHlfcmVsID1cbmZ1biBmbXR0eTEgZm10dHkyIC0+IG1hdGNoIGZtdHR5MSB3aXRoXG4gIHwgQ2hhcl90eSByZXN0IC0+XG4gICAgQ2hhcl90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IFN0cmluZ190eSByZXN0IC0+XG4gICAgU3RyaW5nX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSW50X3R5IHJlc3QgLT5cbiAgICBJbnRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBJbnQzMl90eSByZXN0IC0+XG4gICAgSW50MzJfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPlxuICAgIE5hdGl2ZWludF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEludDY0X3R5IHJlc3QgLT5cbiAgICBJbnQ2NF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEZsb2F0X3R5IHJlc3QgLT5cbiAgICBGbG9hdF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEJvb2xfdHkgcmVzdCAtPlxuICAgIEJvb2xfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBBbHBoYV90eSByZXN0IC0+XG4gICAgQWxwaGFfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBUaGV0YV90eSByZXN0IC0+XG4gICAgVGhldGFfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBBbnlfdHkgcmVzdCAtPlxuICAgIEFueV90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IFJlYWRlcl90eSByZXN0IC0+XG4gICAgUmVhZGVyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPlxuICAgIElnbm9yZWRfcmVhZGVyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgRm9ybWF0X2FyZ190eSAodHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBFbmRfb2ZfZm10dHkgLT4gZm10dHkyXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgY29uY2F0ZW5hdGlvbiAqKVxuXG4oKiBDb25jYXRlbmF0ZSB0d28gZm9ybWF0cy4gKilcbmxldCByZWMgY29uY2F0X2ZtdCA6IHR5cGUgYSBiIGMgZCBlIGYgZyBoIC5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgKGYsIGIsIGMsIGUsIGcsIGgpIGZtdCAtPlxuICAgIChhLCBiLCBjLCBkLCBnLCBoKSBmbXQgPVxuZnVuIGZtdDEgZm10MiAtPiBtYXRjaCBmbXQxIHdpdGhcbiAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBTdHJpbmcgKHBhZCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBDYW1sX3N0cmluZyAocGFkLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBJbnQgKGljb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEludDMyIChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgQ2hhciAocmVzdCkgLT5cbiAgICBDaGFyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgIENhbWxfY2hhciAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQm9vbCAocGFkLCByZXN0KSAtPlxuICAgIEJvb2wgKHBhZCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQWxwaGEgcmVzdCAtPlxuICAgIEFscGhhIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBUaGV0YSByZXN0IC0+XG4gICAgVGhldGEgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEN1c3RvbSAoYXJpdHksIGYsIHJlc3QpIC0+XG4gICAgQ3VzdG9tIChhcml0eSwgZiwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgUmVhZGVyIHJlc3QgLT5cbiAgICBSZWFkZXIgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZsdXNoIHJlc3QgLT5cbiAgICBGbHVzaCAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgIFN0cmluZ19saXRlcmFsIChzdHIsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCByZXN0KSAtPlxuICAgIENoYXJfbGl0ZXJhbCAgIChjaHIsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgRm9ybWF0X2FyZyAocGFkLCBmbXR0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnICAgKHBhZCwgZm10dHksIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZvcm1hdF9zdWJzdCAocGFkLCBmbXR0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3QgKHBhZCwgZm10dHksIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgcmVzdCkgLT5cbiAgICBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCByZXN0KSAtPlxuICAgIFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IFNjYW5fbmV4dF9jaGFyIChyZXN0KSAtPlxuICAgIFNjYW5fbmV4dF9jaGFyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgSWdub3JlZF9wYXJhbSAoaWduLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSAtPlxuICAgIEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgcmVzdCkgLT5cbiAgICBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBFbmRfb2ZfZm9ybWF0IC0+XG4gICAgZm10MlxuXG5cbnR5cGUgbmV1dHJhbF9jb25jYXQgPVxuICB7IGY6XG4gICAgICAnYSAnYiAnYyAnZCAnZSAnZi4gW2BTdHJpbmcgb2Ygc3RyaW5nIHwgYENoYXIgb2YgY2hhciBdIC0+XG4gICAgICAoJ2EsJ2IsJ2MsJ2QsJ2UsJ2YpIGZtdCAtPiAoJ2EsJ2IsJ2MsJ2QsJ2UsJ2YpIGZtdFxuICB9XG5cbmxldCByZWMgc3RyaW5nX2NvbmNhdF9tYXA6IHR5cGUgYSBiIGMgZCBlIGYuXG4gICBuZXV0cmFsX2NvbmNhdCAtPiAoYSxiLGMsZCxlLGYpIGZtdCAtPiAoYSxiLGMsZCxlLGYpIGZtdCA9XG4gIGZ1biBmIC0+IGZ1bmN0aW9uXG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+IFN0cmluZyAocGFkLCBzdHJpbmdfY29uY2F0X21hcCBmIHJlc3QpXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT4gQ2FtbF9zdHJpbmcgKHBhZCwgc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuXG4gIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEludCAoaWNvbnYsIHBhZCwgcHJlYywgIHN0cmluZ19jb25jYXRfbWFwIGYgcmVzdClcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgIHN0cmluZ19jb25jYXRfbWFwIGYgcmVzdClcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCAgc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEludDY0IChpY29udiwgcGFkLCBwcmVjLCAgc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCAgc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuXG4gIHwgQ2hhciAocmVzdCkgLT4gQ2hhciAoc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgQ2FtbF9jaGFyICggc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuICB8IEJvb2wgKHBhZCwgcmVzdCkgLT4gQm9vbCAocGFkLCAgc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuICB8IEFscGhhIHJlc3QgLT4gQWxwaGEgKHN0cmluZ19jb25jYXRfbWFwIGYgcmVzdClcbiAgfCBUaGV0YSByZXN0IC0+IFRoZXRhIChzdHJpbmdfY29uY2F0X21hcCBmIHJlc3QpXG4gIHwgQ3VzdG9tIChhcml0eSwgZmMsIHJlc3QpIC0+XG4gICAgQ3VzdG9tIChhcml0eSwgZmMsICBzdHJpbmdfY29uY2F0X21hcCBmIHJlc3QpXG4gIHwgUmVhZGVyIHJlc3QgLT4gUmVhZGVyIChzdHJpbmdfY29uY2F0X21hcCBmIHJlc3QpXG4gIHwgRmx1c2ggcmVzdCAtPiBGbHVzaCAoc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT4gZi5mIChgU3RyaW5nIHN0cikgKHN0cmluZ19jb25jYXRfbWFwIGYgcmVzdClcbiAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICAgIGYuZiAoYENoYXIgY2hyKSAoc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuICB8IEZvcm1hdF9hcmcgKHBhZCwgZm10dHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZyAgIChwYWQsIGZtdHR5LCBzdHJpbmdfY29uY2F0X21hcCBmIHJlc3QpXG4gIHwgRm9ybWF0X3N1YnN0IChwYWQsIGZtdHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdCAocGFkLCBmbXR0eSwgc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgcmVzdCkgLT5cbiAgICBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBzdHJpbmdfY29uY2F0X21hcCBmIHJlc3QpXG4gIHwgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgcmVzdCkgLT5cbiAgICBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLHN0cmluZ19jb25jYXRfbWFwIGYgcmVzdClcbiAgfCBTY2FuX25leHRfY2hhciAocmVzdCkgLT5cbiAgICBTY2FuX25leHRfY2hhciAoc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICBJZ25vcmVkX3BhcmFtIChpZ24sIHN0cmluZ19jb25jYXRfbWFwIGYgcmVzdClcblxuICB8IEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSAtPlxuICAgIEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCBzdHJpbmdfY29uY2F0X21hcCBmIHJlc3QpXG4gIHwgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIHJlc3QpIC0+XG4gICAgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIHN0cmluZ19jb25jYXRfbWFwIGYgcmVzdClcblxuICB8IEVuZF9vZl9mb3JtYXQgLT4gRW5kX29mX2Zvcm1hdFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwyIiwiZiIsImEwIiwiYTEiLCJlcmFzZV9yZWwiLCJwYXJhbSIsInJlc3QiLCJ0eSIsInR5MSIsImNvbmNhdF9mbXR0eSIsImZtdHR5MSIsImZtdHR5MiIsInR5MiIsImNvbmNhdF9mbXQiLCJmbXQxIiwiZm10MiIsInBhZCIsInByZWMiLCJpY29udiIsImZjb252Iiwic3RyIiwiY2hyIiwiZm10dHkiLCJmbXRpbmdfbGl0IiwiZm10aW5nX2dlbiIsImNoYXJfc2V0Iiwid2lkdGhfb3B0IiwiY291bnRlciIsImlnbiIsImFyaXR5Iiwic3RyaW5nX2NvbmNhdF9tYXAiLCJmYyJdLCJtYXBwaW5ncyI6Ik9BQUFBLFVBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQyxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsVUFBQUM7QUFBQUEsSUMrZ0JRLDhCQWtDWTtBQUFBLElBbENaO0FBQUE7QUFBQSxXQUFBQyxPQUFBLFVBS0ksMkJBQWdCO0FBQUE7QUFBQSxXQUFBQSxTQUxwQixVQU9NLDZCQUFnQjtBQUFBO0FBQUEsV0FBQUEsU0FQdEIsVUFTRyw2QkFBZ0I7QUFBQTtBQUFBLFdBQUFBLFNBVG5CLFVBV0ssNkJBQWdCO0FBQUE7QUFB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MERBQXdCO0FBQUE7QUFBQSxXQUFBVixVQWxDOUMsVUFxQmdCLDBDQUEwQjtBQUFBO0FBQUEsV0FBQUEsVUFyQjFDLFVBc0JnQiwwQ0FBMEI7QUFBQTtBQUFBLFdBQUFBLFVBdEIxQyxVQUFBaUIsYUFBQTtBQUFBLE9BOEN3QixzREFBd0I7QUFBQTtBQUFBLFdBQUFqQixVQTlDaEQsVUFBQWtCLGFBQUE7QUFBQSxPQWdEd0Isc0RBQXdCO0FBQUE7QUFBQSxXQUFBbEIsVUFoRGhELFVBeUJrQiwwQ0FBMEI7QUFBQTtBQUFBLFdBQUFBLFVBekI1QyxVQUFBbUIsV0FBQSxVQUFBQyxZQUFBO0FBQUEsT0FxQ2dDLCtEQUF3QjtBQUFBO0FBQUEsV0FBQXBCLFVBckN4RCxVQUFBcUIsVUFBQTtBQUFBLE9BdUNzQixtREFBd0I7QUFBQTtBQUFBLFdBQUFyQixVQXZDOUMsVUF5Q1csMENBQTBCO0FBQUE7QUFBQSxXQUFBQSxVQXpDckMsVUFBQXNCLE1BQUE7QUFBQSxPQTJDZ0IsK0NBQXdCO0FBQUE7QUFBQSxXQUFBdEIsVUEzQ3hDLFVBQUF5QixLQUFBLFVBQUFGLFFBQUE7QUFBQSxPQXdCZ0IscURBQXdCO0FBQUE7QUFBQSxHQTBCZDtBQUFBLEdENXVCbEMiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo5NzIxLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvc3RkbGliLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBFeGNlcHRpb25zICopXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+ICdhIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlXCJcblxubGV0ICgpID1cbiAgKCogZm9yIHJ1bnRpbWUvZmFpbF9uYXQuYyAqKVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBcIlBlcnZhc2l2ZXMuYXJyYXlfYm91bmRfZXJyb3JcIlxuICAgIChJbnZhbGlkX2FyZ3VtZW50IFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKVxuXG5leHRlcm5hbCByYWlzZSA6IGV4biAtPiAnYSA9IFwiJXJhaXNlXCJcbmV4dGVybmFsIHJhaXNlX25vdHJhY2UgOiBleG4gLT4gJ2EgPSBcIiVyYWlzZV9ub3RyYWNlXCJcblxubGV0IGZhaWx3aXRoIHMgPSByYWlzZShGYWlsdXJlIHMpXG5sZXQgaW52YWxpZF9hcmcgcyA9IHJhaXNlKEludmFsaWRfYXJndW1lbnQgcylcblxuZXhjZXB0aW9uIEV4aXRcbmV4Y2VwdGlvbiBNYXRjaF9mYWlsdXJlID0gTWF0Y2hfZmFpbHVyZVxuZXhjZXB0aW9uIEFzc2VydF9mYWlsdXJlID0gQXNzZXJ0X2ZhaWx1cmVcbmV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50ID0gSW52YWxpZF9hcmd1bWVudFxuZXhjZXB0aW9uIEZhaWx1cmUgPSBGYWlsdXJlXG5leGNlcHRpb24gTm90X2ZvdW5kID0gTm90X2ZvdW5kXG5leGNlcHRpb24gT3V0X29mX21lbW9yeSA9IE91dF9vZl9tZW1vcnlcbmV4Y2VwdGlvbiBTdGFja19vdmVyZmxvdyA9IFN0YWNrX292ZXJmbG93XG5leGNlcHRpb24gU3lzX2Vycm9yID0gU3lzX2Vycm9yXG5leGNlcHRpb24gRW5kX29mX2ZpbGUgPSBFbmRfb2ZfZmlsZVxuZXhjZXB0aW9uIERpdmlzaW9uX2J5X3plcm8gPSBEaXZpc2lvbl9ieV96ZXJvXG5leGNlcHRpb24gU3lzX2Jsb2NrZWRfaW8gPSBTeXNfYmxvY2tlZF9pb1xuZXhjZXB0aW9uIFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlID0gVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGVcblxuKCogQ29tcG9zaXRpb24gb3BlcmF0b3JzICopXG5cbmV4dGVybmFsICggfD4gKSA6ICdhIC0+ICgnYSAtPiAnYikgLT4gJ2IgPSBcIiVyZXZhcHBseVwiXG5leHRlcm5hbCAoIEBAICkgOiAoJ2EgLT4gJ2IpIC0+ICdhIC0+ICdiID0gXCIlYXBwbHlcIlxuXG4oKiBEZWJ1Z2dpbmcgKilcblxuZXh0ZXJuYWwgX19MT0NfXyA6IHN0cmluZyA9IFwiJWxvY19MT0NcIlxuZXh0ZXJuYWwgX19GSUxFX18gOiBzdHJpbmcgPSBcIiVsb2NfRklMRVwiXG5leHRlcm5hbCBfX0xJTkVfXyA6IGludCA9IFwiJWxvY19MSU5FXCJcbmV4dGVybmFsIF9fTU9EVUxFX18gOiBzdHJpbmcgPSBcIiVsb2NfTU9EVUxFXCJcbmV4dGVybmFsIF9fUE9TX18gOiBzdHJpbmcgKiBpbnQgKiBpbnQgKiBpbnQgPSBcIiVsb2NfUE9TXCJcbmV4dGVybmFsIF9fRlVOQ1RJT05fXyA6IHN0cmluZyA9IFwiJWxvY19GVU5DVElPTlwiXG5cbmV4dGVybmFsIF9fTE9DX09GX18gOiAnYSAtPiBzdHJpbmcgKiAnYSA9IFwiJWxvY19MT0NcIlxuZXh0ZXJuYWwgX19MSU5FX09GX18gOiAnYSAtPiBpbnQgKiAnYSA9IFwiJWxvY19MSU5FXCJcbmV4dGVybmFsIF9fUE9TX09GX18gOiAnYSAtPiAoc3RyaW5nICogaW50ICogaW50ICogaW50KSAqICdhID0gXCIlbG9jX1BPU1wiXG5cbigqIENvbXBhcmlzb25zICopXG5cbmV4dGVybmFsICggPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbmV4dGVybmFsICggPD4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG5leHRlcm5hbCAoIDwgKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5leHRlcm5hbCAoID4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5leHRlcm5hbCAoIDw9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcbmV4dGVybmFsICggPj0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuZXh0ZXJuYWwgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludCA9IFwiJWNvbXBhcmVcIlxuXG5sZXQgbWluIHggeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbmV4dGVybmFsICggPT0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcVwiXG5leHRlcm5hbCAoICE9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXFcIlxuXG4oKiBCb29sZWFuIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgbm90IDogYm9vbCAtPiBib29sID0gXCIlYm9vbG5vdFwiXG5leHRlcm5hbCAoICYmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuZXh0ZXJuYWwgKCB8fCApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxuXG4oKiBJbnRlZ2VyIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgKCB+LSApIDogaW50IC0+IGludCA9IFwiJW5lZ2ludFwiXG5leHRlcm5hbCAoIH4rICkgOiBpbnQgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgc3VjYyA6IGludCAtPiBpbnQgPSBcIiVzdWNjaW50XCJcbmV4dGVybmFsIHByZWQgOiBpbnQgLT4gaW50ID0gXCIlcHJlZGludFwiXG5leHRlcm5hbCAoICsgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYWRkaW50XCJcbmV4dGVybmFsICggLSApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVzdWJpbnRcIlxuZXh0ZXJuYWwgKCAqICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW11bGludFwiXG5leHRlcm5hbCAoIC8gKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlZGl2aW50XCJcbmV4dGVybmFsICggbW9kICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW1vZGludFwiXG5cbmxldCBhYnMgeCA9IGlmIHggPj0gMCB0aGVuIHggZWxzZSAteFxuXG5leHRlcm5hbCAoIGxhbmQgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYW5kaW50XCJcbmV4dGVybmFsICggbG9yICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW9yaW50XCJcbmV4dGVybmFsICggbHhvciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiV4b3JpbnRcIlxuXG5sZXQgbG5vdCB4ID0geCBseG9yICgtMSlcblxuZXh0ZXJuYWwgKCBsc2wgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNsaW50XCJcbmV4dGVybmFsICggbHNyICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzcmludFwiXG5leHRlcm5hbCAoIGFzciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhc3JpbnRcIlxuXG5sZXQgbWF4X2ludCA9ICgtMSkgbHNyIDFcbmxldCBtaW5faW50ID0gbWF4X2ludCArIDFcblxuKCogRmxvYXRpbmctcG9pbnQgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCAoIH4tLiApIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVuZWdmbG9hdFwiXG5leHRlcm5hbCAoIH4rLiApIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCAoICsuICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFkZGZsb2F0XCJcbmV4dGVybmFsICggLS4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlc3ViZmxvYXRcIlxuZXh0ZXJuYWwgKCAqLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVtdWxmbG9hdFwiXG5leHRlcm5hbCAoIC8uICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWRpdmZsb2F0XCJcbmV4dGVybmFsICggKiogKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Bvd2VyX2Zsb2F0XCIgXCJwb3dcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwX2Zsb2F0XCIgXCJleHBcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwbTEgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBtMV9mbG9hdFwiIFwiY2FtbF9leHBtMVwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc19mbG9hdFwiIFwiYWNvc1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbl9mbG9hdFwiIFwiYXNpblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbl9mbG9hdFwiIFwiYXRhblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuMiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW4yX2Zsb2F0XCIgXCJhdGFuMlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBoeXBvdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICAgICA9IFwiY2FtbF9oeXBvdF9mbG9hdFwiIFwiY2FtbF9oeXBvdFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NfZmxvYXRcIiBcImNvc1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zaF9mbG9hdFwiIFwiY29zaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NoX2Zsb2F0XCIgXCJjYW1sX2Fjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZ19mbG9hdFwiIFwibG9nXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzEwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMTBfZmxvYXRcIiBcImxvZzEwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzFwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMXBfZmxvYXRcIiBcImNhbWxfbG9nMXBcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luX2Zsb2F0XCIgXCJzaW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NpbmhfZmxvYXRcIiBcInNpbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luaF9mbG9hdFwiIFwiY2FtbF9hc2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzcXJ0IDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc3FydF9mbG9hdFwiIFwic3FydFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5fZmxvYXRcIiBcInRhblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuaF9mbG9hdFwiIFwidGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5oX2Zsb2F0XCIgXCJjYW1sX2F0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNlaWwgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jZWlsX2Zsb2F0XCIgXCJjZWlsXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb29yIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZmxvb3JfZmxvYXRcIiBcImZsb29yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFic19mbG9hdCA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWJzZmxvYXRcIlxuZXh0ZXJuYWwgY29weXNpZ24gOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICAgICAgICAgICAgICAgICAgPSBcImNhbWxfY29weXNpZ25fZmxvYXRcIiBcImNhbWxfY29weXNpZ25cIlxuICAgICAgICAgICAgICAgICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG1vZF9mbG9hdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Ztb2RfZmxvYXRcIiBcImZtb2RcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZnJleHAgOiBmbG9hdCAtPiBmbG9hdCAqIGludCA9IFwiY2FtbF9mcmV4cF9mbG9hdFwiXG5leHRlcm5hbCBsZGV4cCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiAoaW50IFtAdW50YWdnZWRdKSAtPiAoZmxvYXQgW0B1bmJveGVkXSkgPVxuICBcImNhbWxfbGRleHBfZmxvYXRcIiBcImNhbWxfbGRleHBfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtb2RmIDogZmxvYXQgLT4gZmxvYXQgKiBmbG9hdCA9IFwiY2FtbF9tb2RmX2Zsb2F0XCJcbmV4dGVybmFsIGZsb2F0IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCBmbG9hdF9vZl9pbnQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIHRydW5jYXRlIDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5leHRlcm5hbCBpbnRfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5sZXQgaW5maW5pdHkgPVxuICBmbG9hdF9vZl9iaXRzIDB4N0ZfRjBfMDBfMDBfMDBfMDBfMDBfMDBMXG5sZXQgbmVnX2luZmluaXR5ID1cbiAgZmxvYXRfb2ZfYml0cyAweEZGX0YwXzAwXzAwXzAwXzAwXzAwXzAwTFxubGV0IG5hbiA9XG4gIGZsb2F0X29mX2JpdHMgMHg3Rl9GOF8wMF8wMF8wMF8wMF8wMF8wMUxcbmxldCBtYXhfZmxvYXQgPVxuICBmbG9hdF9vZl9iaXRzIDB4N0ZfRUZfRkZfRkZfRkZfRkZfRkZfRkZMXG5sZXQgbWluX2Zsb2F0ID1cbiAgZmxvYXRfb2ZfYml0cyAweDAwXzEwXzAwXzAwXzAwXzAwXzAwXzAwTFxubGV0IGVwc2lsb25fZmxvYXQgPVxuICBmbG9hdF9vZl9iaXRzIDB4M0NfQjBfMDBfMDBfMDBfMDBfMDBfMDBMXG5cbnR5cGUgZnBjbGFzcyA9XG4gICAgRlBfbm9ybWFsXG4gIHwgRlBfc3Vibm9ybWFsXG4gIHwgRlBfemVyb1xuICB8IEZQX2luZmluaXRlXG4gIHwgRlBfbmFuXG5leHRlcm5hbCBjbGFzc2lmeV9mbG9hdCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiBmcGNsYXNzID1cbiAgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0XCIgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuXG4oKiBTdHJpbmcgYW5kIGJ5dGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyAtLSBtb3JlIGluIG1vZHVsZXMgU3RyaW5nIGFuZCBCeXRlcyAqKVxuXG5leHRlcm5hbCBzdHJpbmdfbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuZXh0ZXJuYWwgYnl0ZXNfbGVuZ3RoIDogYnl0ZXMgLT4gaW50ID0gXCIlYnl0ZXNfbGVuZ3RoXCJcbmV4dGVybmFsIGJ5dGVzX2NyZWF0ZSA6IGludCAtPiBieXRlcyA9IFwiY2FtbF9jcmVhdGVfYnl0ZXNcIlxuZXh0ZXJuYWwgc3RyaW5nX2JsaXQgOiBzdHJpbmcgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYnl0ZXNfYmxpdCA6IGJ5dGVzIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfYnl0ZXNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyA6IGJ5dGVzIC0+IHN0cmluZyA9IFwiJWJ5dGVzX3RvX3N0cmluZ1wiXG5cbmxldCAoIF4gKSBzMSBzMiA9XG4gIGxldCBsMSA9IHN0cmluZ19sZW5ndGggczEgYW5kIGwyID0gc3RyaW5nX2xlbmd0aCBzMiBpblxuICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSAobDEgKyBsMikgaW5cbiAgc3RyaW5nX2JsaXQgczEgMCBzIDAgbDE7XG4gIHN0cmluZ19ibGl0IHMyIDAgcyBsMSBsMjtcbiAgYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyBzXG5cbigqIENoYXJhY3RlciBvcGVyYXRpb25zIC0tIG1vcmUgaW4gbW9kdWxlIENoYXIgKilcblxuZXh0ZXJuYWwgaW50X29mX2NoYXIgOiBjaGFyIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHVuc2FmZV9jaGFyX29mX2ludCA6IGludCAtPiBjaGFyID0gXCIlaWRlbnRpdHlcIlxubGV0IGNoYXJfb2ZfaW50IG4gPVxuICBpZiBuIDwgMCB8fCBuID4gMjU1IHRoZW4gaW52YWxpZF9hcmcgXCJjaGFyX29mX2ludFwiIGVsc2UgdW5zYWZlX2NoYXJfb2ZfaW50IG5cblxuKCogVW5pdCBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGlnbm9yZSA6ICdhIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG4oKiBQYWlyIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgZnN0IDogJ2EgKiAnYiAtPiAnYSA9IFwiJWZpZWxkMFwiXG5leHRlcm5hbCBzbmQgOiAnYSAqICdiIC0+ICdiID0gXCIlZmllbGQxXCJcblxuKCogUmVmZXJlbmNlcyAqKVxuXG50eXBlICdhIHJlZiA9IHsgbXV0YWJsZSBjb250ZW50cyA6ICdhIH1cbmV4dGVybmFsIHJlZiA6ICdhIC0+ICdhIHJlZiA9IFwiJW1ha2VtdXRhYmxlXCJcbmV4dGVybmFsICggISApIDogJ2EgcmVmIC0+ICdhID0gXCIlZmllbGQwXCJcbmV4dGVybmFsICggOj0gKSA6ICdhIHJlZiAtPiAnYSAtPiB1bml0ID0gXCIlc2V0ZmllbGQwXCJcbmV4dGVybmFsIGluY3IgOiBpbnQgcmVmIC0+IHVuaXQgPSBcIiVpbmNyXCJcbmV4dGVybmFsIGRlY3IgOiBpbnQgcmVmIC0+IHVuaXQgPSBcIiVkZWNyXCJcblxuKCogUmVzdWx0IHR5cGUgKilcblxudHlwZSAoJ2EsJ2IpIHJlc3VsdCA9IE9rIG9mICdhIHwgRXJyb3Igb2YgJ2JcblxuKCogU3RyaW5nIGNvbnZlcnNpb24gZnVuY3Rpb25zICopXG5cbmV4dGVybmFsIGZvcm1hdF9pbnQgOiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfaW50XCJcbmV4dGVybmFsIGZvcm1hdF9mbG9hdCA6IHN0cmluZyAtPiBmbG9hdCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2Zsb2F0XCJcblxubGV0IHN0cmluZ19vZl9ib29sIGIgPVxuICBpZiBiIHRoZW4gXCJ0cnVlXCIgZWxzZSBcImZhbHNlXCJcbmxldCBib29sX29mX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgXCJ0cnVlXCIgLT4gdHJ1ZVxuICB8IFwiZmFsc2VcIiAtPiBmYWxzZVxuICB8IF8gLT4gaW52YWxpZF9hcmcgXCJib29sX29mX3N0cmluZ1wiXG5cbmxldCBib29sX29mX3N0cmluZ19vcHQgPSBmdW5jdGlvblxuICB8IFwidHJ1ZVwiIC0+IFNvbWUgdHJ1ZVxuICB8IFwiZmFsc2VcIiAtPiBTb21lIGZhbHNlXG4gIHwgXyAtPiBOb25lXG5cbmxldCBzdHJpbmdfb2ZfaW50IG4gPVxuICBmb3JtYXRfaW50IFwiJWRcIiBuXG5cbmV4dGVybmFsIGludF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50ID0gXCJjYW1sX2ludF9vZl9zdHJpbmdcIlxuXG5sZXQgaW50X29mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRyYXNoZXMgY3VycmVudCBiYWNrdHJhY2UgKilcbiAgdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5leHRlcm5hbCBzdHJpbmdfZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcblxubGV0IHZhbGlkX2Zsb2F0X2xleGVtIHMgPVxuICBsZXQgbCA9IHN0cmluZ19sZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA+PSBsIHRoZW4gcyBeIFwiLlwiIGVsc2VcbiAgICBtYXRjaCBzdHJpbmdfZ2V0IHMgaSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+IGxvb3AgKGkgKyAxKVxuICAgIHwgXyAtPiBzXG4gIGluXG4gIGxvb3AgMFxuXG5sZXQgc3RyaW5nX29mX2Zsb2F0IGYgPSB2YWxpZF9mbG9hdF9sZXhlbSAoZm9ybWF0X2Zsb2F0IFwiJS4xMmdcIiBmKVxuXG5leHRlcm5hbCBmbG9hdF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gZmxvYXQgPSBcImNhbWxfZmxvYXRfb2Zfc3RyaW5nXCJcblxubGV0IGZsb2F0X29mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRyYXNoZXMgY3VycmVudCBiYWNrdHJhY2UgKilcbiAgdHJ5IFNvbWUgKGZsb2F0X29mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbigqIExpc3Qgb3BlcmF0aW9ucyAtLSBtb3JlIGluIG1vZHVsZSBMaXN0ICopXG5cbmxldFtAdGFpbF9tb2RfY29uc10gcmVjICggQCApIGwxIGwyID1cbiAgbWF0Y2ggbDEgd2l0aFxuICB8IFtdIC0+IGwyXG4gIHwgaDEgOjogW10gLT4gaDEgOjogbDJcbiAgfCBoMSA6OiBoMiA6OiBbXSAtPiBoMSA6OiBoMiA6OiBsMlxuICB8IGgxIDo6IGgyIDo6IGgzIDo6IHRsIC0+IGgxIDo6IGgyIDo6IGgzIDo6ICh0bCBAIGwyKVxuXG4oKiBJL08gb3BlcmF0aW9ucyAqKVxuXG50eXBlIGluX2NoYW5uZWxcbnR5cGUgb3V0X2NoYW5uZWxcblxuZXh0ZXJuYWwgb3Blbl9kZXNjcmlwdG9yX291dCA6IGludCAtPiBvdXRfY2hhbm5lbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0XCJcbmV4dGVybmFsIG9wZW5fZGVzY3JpcHRvcl9pbiA6IGludCAtPiBpbl9jaGFubmVsID0gXCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pblwiXG5cbmxldCBzdGRpbiA9IG9wZW5fZGVzY3JpcHRvcl9pbiAwXG5sZXQgc3Rkb3V0ID0gb3Blbl9kZXNjcmlwdG9yX291dCAxXG5sZXQgc3RkZXJyID0gb3Blbl9kZXNjcmlwdG9yX291dCAyXG5cbigqIEdlbmVyYWwgb3V0cHV0IGZ1bmN0aW9ucyAqKVxuXG50eXBlIG9wZW5fZmxhZyA9XG4gICAgT3Blbl9yZG9ubHkgfCBPcGVuX3dyb25seSB8IE9wZW5fYXBwZW5kXG4gIHwgT3Blbl9jcmVhdCB8IE9wZW5fdHJ1bmMgfCBPcGVuX2V4Y2xcbiAgfCBPcGVuX2JpbmFyeSB8IE9wZW5fdGV4dCB8IE9wZW5fbm9uYmxvY2tcblxuZXh0ZXJuYWwgb3Blbl9kZXNjIDogc3RyaW5nIC0+IG9wZW5fZmxhZyBsaXN0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfc3lzX29wZW5cIlxuXG5leHRlcm5hbCBzZXRfb3V0X2NoYW5uZWxfbmFtZTogb3V0X2NoYW5uZWwgLT4gc3RyaW5nIC0+IHVuaXQgPVxuICBcImNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZVwiXG5cbmxldCBvcGVuX291dF9nZW4gbW9kZSBwZXJtIG5hbWUgPVxuICBsZXQgYyA9IG9wZW5fZGVzY3JpcHRvcl9vdXQob3Blbl9kZXNjIG5hbWUgbW9kZSBwZXJtKSBpblxuICBzZXRfb3V0X2NoYW5uZWxfbmFtZSBjIG5hbWU7XG4gIGNcblxubGV0IG9wZW5fb3V0IG5hbWUgPVxuICBvcGVuX291dF9nZW4gW09wZW5fd3Jvbmx5OyBPcGVuX2NyZWF0OyBPcGVuX3RydW5jOyBPcGVuX3RleHRdIDBvNjY2IG5hbWVcblxubGV0IG9wZW5fb3V0X2JpbiBuYW1lID1cbiAgb3Blbl9vdXRfZ2VuIFtPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgT3Blbl90cnVuYzsgT3Blbl9iaW5hcnldIDBvNjY2IG5hbWVcblxuZXh0ZXJuYWwgZmx1c2ggOiBvdXRfY2hhbm5lbCAtPiB1bml0ID0gXCJjYW1sX21sX2ZsdXNoXCJcblxuZXh0ZXJuYWwgb3V0X2NoYW5uZWxzX2xpc3QgOiB1bml0IC0+IG91dF9jaGFubmVsIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX291dF9jaGFubmVsc19saXN0XCJcblxubGV0IGZsdXNoX2FsbCAoKSA9XG4gIGxldCByZWMgaXRlciA9IGZ1bmN0aW9uXG4gICAgICBbXSAtPiAoKVxuICAgIHwgYTo6bCAtPlxuICAgICAgICBiZWdpbiB0cnlcbiAgICAgICAgICAgIGZsdXNoIGFcbiAgICAgICAgd2l0aCBTeXNfZXJyb3IgXyAtPlxuICAgICAgICAgICgpICgqIGlnbm9yZSBjaGFubmVscyBjbG9zZWQgZHVyaW5nIGEgcHJlY2VkaW5nIGZsdXNoLiAqKVxuICAgICAgICBlbmQ7XG4gICAgICAgIGl0ZXIgbFxuICBpbiBpdGVyIChvdXRfY2hhbm5lbHNfbGlzdCAoKSlcblxuZXh0ZXJuYWwgdW5zYWZlX291dHB1dCA6IG91dF9jaGFubmVsIC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9vdXRwdXRfYnl0ZXNcIlxuZXh0ZXJuYWwgdW5zYWZlX291dHB1dF9zdHJpbmcgOiBvdXRfY2hhbm5lbCAtPiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9vdXRwdXRcIlxuXG5leHRlcm5hbCBvdXRwdXRfY2hhciA6IG91dF9jaGFubmVsIC0+IGNoYXIgLT4gdW5pdCA9IFwiY2FtbF9tbF9vdXRwdXRfY2hhclwiXG5cbmxldCBvdXRwdXRfYnl0ZXMgb2MgcyA9XG4gIHVuc2FmZV9vdXRwdXQgb2MgcyAwIChieXRlc19sZW5ndGggcylcblxubGV0IG91dHB1dF9zdHJpbmcgb2MgcyA9XG4gIHVuc2FmZV9vdXRwdXRfc3RyaW5nIG9jIHMgMCAoc3RyaW5nX2xlbmd0aCBzKVxuXG5sZXQgb3V0cHV0IG9jIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBieXRlc19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwib3V0cHV0XCJcbiAgZWxzZSB1bnNhZmVfb3V0cHV0IG9jIHMgb2ZzIGxlblxuXG5sZXQgb3V0cHV0X3N1YnN0cmluZyBvYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gc3RyaW5nX2xlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJvdXRwdXRfc3Vic3RyaW5nXCJcbiAgZWxzZSB1bnNhZmVfb3V0cHV0X3N0cmluZyBvYyBzIG9mcyBsZW5cblxuZXh0ZXJuYWwgb3V0cHV0X2J5dGUgOiBvdXRfY2hhbm5lbCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9tbF9vdXRwdXRfY2hhclwiXG5leHRlcm5hbCBvdXRwdXRfYmluYXJ5X2ludCA6IG91dF9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX291dHB1dF9pbnRcIlxuXG5leHRlcm5hbCBtYXJzaGFsX3RvX2NoYW5uZWwgOiBvdXRfY2hhbm5lbCAtPiAnYSAtPiB1bml0IGxpc3QgLT4gdW5pdFxuICAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVcIlxubGV0IG91dHB1dF92YWx1ZSBjaGFuIHYgPSBtYXJzaGFsX3RvX2NoYW5uZWwgY2hhbiB2IFtdXG5cbmV4dGVybmFsIHNlZWtfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfbWxfc2Vla19vdXRcIlxuZXh0ZXJuYWwgcG9zX291dCA6IG91dF9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9wb3Nfb3V0XCJcbmV4dGVybmFsIG91dF9jaGFubmVsX2xlbmd0aCA6IG91dF9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9jaGFubmVsX3NpemVcIlxuZXh0ZXJuYWwgY2xvc2Vfb3V0X2NoYW5uZWwgOiBvdXRfY2hhbm5lbCAtPiB1bml0ID0gXCJjYW1sX21sX2Nsb3NlX2NoYW5uZWxcIlxubGV0IGNsb3NlX291dCBvYyA9IGZsdXNoIG9jOyBjbG9zZV9vdXRfY2hhbm5lbCBvY1xubGV0IGNsb3NlX291dF9ub2VyciBvYyA9XG4gICh0cnkgZmx1c2ggb2Mgd2l0aCBfIC0+ICgpKTtcbiAgKHRyeSBjbG9zZV9vdXRfY2hhbm5lbCBvYyB3aXRoIF8gLT4gKCkpXG5leHRlcm5hbCBzZXRfYmluYXJ5X21vZGVfb3V0IDogb3V0X2NoYW5uZWwgLT4gYm9vbCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX3NldF9iaW5hcnlfbW9kZVwiXG5cbigqIEdlbmVyYWwgaW5wdXQgZnVuY3Rpb25zICopXG5cbmV4dGVybmFsIHNldF9pbl9jaGFubmVsX25hbWU6IGluX2NoYW5uZWwgLT4gc3RyaW5nIC0+IHVuaXQgPVxuICBcImNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZVwiXG5cbmxldCBvcGVuX2luX2dlbiBtb2RlIHBlcm0gbmFtZSA9XG4gIGxldCBjID0gb3Blbl9kZXNjcmlwdG9yX2luKG9wZW5fZGVzYyBuYW1lIG1vZGUgcGVybSkgaW5cbiAgc2V0X2luX2NoYW5uZWxfbmFtZSBjIG5hbWU7XG4gIGNcblxubGV0IG9wZW5faW4gbmFtZSA9XG4gIG9wZW5faW5fZ2VuIFtPcGVuX3Jkb25seTsgT3Blbl90ZXh0XSAwIG5hbWVcblxubGV0IG9wZW5faW5fYmluIG5hbWUgPVxuICBvcGVuX2luX2dlbiBbT3Blbl9yZG9ubHk7IE9wZW5fYmluYXJ5XSAwIG5hbWVcblxuZXh0ZXJuYWwgaW5wdXRfY2hhciA6IGluX2NoYW5uZWwgLT4gY2hhciA9IFwiY2FtbF9tbF9pbnB1dF9jaGFyXCJcblxuZXh0ZXJuYWwgdW5zYWZlX2lucHV0IDogaW5fY2hhbm5lbCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IGludFxuICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX2lucHV0XCJcblxubGV0IGlucHV0IGljIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBieXRlc19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiaW5wdXRcIlxuICBlbHNlIHVuc2FmZV9pbnB1dCBpYyBzIG9mcyBsZW5cblxubGV0IHJlYyB1bnNhZmVfcmVhbGx5X2lucHV0IGljIHMgb2ZzIGxlbiA9XG4gIGlmIGxlbiA8PSAwIHRoZW4gKCkgZWxzZSBiZWdpblxuICAgIGxldCByID0gdW5zYWZlX2lucHV0IGljIHMgb2ZzIGxlbiBpblxuICAgIGlmIHIgPSAwXG4gICAgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZVxuICAgIGVsc2UgdW5zYWZlX3JlYWxseV9pbnB1dCBpYyBzIChvZnMgKyByKSAobGVuIC0gcilcbiAgZW5kXG5cbmxldCByZWFsbHlfaW5wdXQgaWMgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGJ5dGVzX2xlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJyZWFsbHlfaW5wdXRcIlxuICBlbHNlIHVuc2FmZV9yZWFsbHlfaW5wdXQgaWMgcyBvZnMgbGVuXG5cbmxldCByZWFsbHlfaW5wdXRfc3RyaW5nIGljIGxlbiA9XG4gIGxldCBzID0gYnl0ZXNfY3JlYXRlIGxlbiBpblxuICByZWFsbHlfaW5wdXQgaWMgcyAwIGxlbjtcbiAgYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyBzXG5cbmV4dGVybmFsIGlucHV0X3NjYW5fbGluZSA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2lucHV0X3NjYW5fbGluZVwiXG5cbmxldCBpbnB1dF9saW5lIGNoYW4gPVxuICBsZXQgcmVjIGJ1aWxkX3Jlc3VsdCBidWYgcG9zID0gZnVuY3Rpb25cbiAgICBbXSAtPiBidWZcbiAgfCBoZCA6OiB0bCAtPlxuICAgICAgbGV0IGxlbiA9IGJ5dGVzX2xlbmd0aCBoZCBpblxuICAgICAgYnl0ZXNfYmxpdCBoZCAwIGJ1ZiAocG9zIC0gbGVuKSBsZW47XG4gICAgICBidWlsZF9yZXN1bHQgYnVmIChwb3MgLSBsZW4pIHRsIGluXG4gIGxldCByZWMgc2NhbiBhY2N1IGxlbiA9XG4gICAgbGV0IG4gPSBpbnB1dF9zY2FuX2xpbmUgY2hhbiBpblxuICAgIGlmIG4gPSAwIHRoZW4gYmVnaW4gICAgICAgICAgICAgICAgICAgKCogbiA9IDA6IHdlIGFyZSBhdCBFT0YgKilcbiAgICAgIG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICBbXSAtPiByYWlzZSBFbmRfb2ZfZmlsZVxuICAgICAgfCBfICAtPiBidWlsZF9yZXN1bHQgKGJ5dGVzX2NyZWF0ZSBsZW4pIGxlbiBhY2N1XG4gICAgZW5kIGVsc2UgaWYgbiA+IDAgdGhlbiBiZWdpbiAgICAgICAgICAoKiBuID4gMDogbmV3bGluZSBmb3VuZCBpbiBidWZmZXIgKilcbiAgICAgIGxldCByZXMgPSBieXRlc19jcmVhdGUgKG4gLSAxKSBpblxuICAgICAgaWdub3JlICh1bnNhZmVfaW5wdXQgY2hhbiByZXMgMCAobiAtIDEpKTtcbiAgICAgIGlnbm9yZSAoaW5wdXRfY2hhciBjaGFuKTsgICAgICAgICAgICgqIHNraXAgdGhlIG5ld2xpbmUgKilcbiAgICAgIG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICBbXSAtPiByZXNcbiAgICAgIHwgIF8gLT4gbGV0IGxlbiA9IGxlbiArIG4gLSAxIGluXG4gICAgICAgICAgICAgIGJ1aWxkX3Jlc3VsdCAoYnl0ZXNfY3JlYXRlIGxlbikgbGVuIChyZXMgOjogYWNjdSlcbiAgICBlbmQgZWxzZSBiZWdpbiAgICAgICAgICAgICAgICAgICAgICAgICgqIG4gPCAwOiBuZXdsaW5lIG5vdCBmb3VuZCAqKVxuICAgICAgbGV0IGJlZyA9IGJ5dGVzX2NyZWF0ZSAoLW4pIGluXG4gICAgICBpZ25vcmUodW5zYWZlX2lucHV0IGNoYW4gYmVnIDAgKC1uKSk7XG4gICAgICBzY2FuIChiZWcgOjogYWNjdSkgKGxlbiAtIG4pXG4gICAgZW5kXG4gIGluIGJ5dGVzX3Vuc2FmZV90b19zdHJpbmcgKHNjYW4gW10gMClcblxuZXh0ZXJuYWwgaW5wdXRfYnl0ZSA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2lucHV0X2NoYXJcIlxuZXh0ZXJuYWwgaW5wdXRfYmluYXJ5X2ludCA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2lucHV0X2ludFwiXG5leHRlcm5hbCBpbnB1dF92YWx1ZSA6IGluX2NoYW5uZWwgLT4gJ2EgPSBcImNhbWxfaW5wdXRfdmFsdWVcIlxuZXh0ZXJuYWwgc2Vla19pbiA6IGluX2NoYW5uZWwgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfbWxfc2Vla19pblwiXG5leHRlcm5hbCBwb3NfaW4gOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9wb3NfaW5cIlxuZXh0ZXJuYWwgaW5fY2hhbm5lbF9sZW5ndGggOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9jaGFubmVsX3NpemVcIlxuZXh0ZXJuYWwgY2xvc2VfaW4gOiBpbl9jaGFubmVsIC0+IHVuaXQgPSBcImNhbWxfbWxfY2xvc2VfY2hhbm5lbFwiXG5sZXQgY2xvc2VfaW5fbm9lcnIgaWMgPSAodHJ5IGNsb3NlX2luIGljIHdpdGggXyAtPiAoKSlcbmV4dGVybmFsIHNldF9iaW5hcnlfbW9kZV9pbiA6IGluX2NoYW5uZWwgLT4gYm9vbCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlXCJcblxuKCogT3V0cHV0IGZ1bmN0aW9ucyBvbiBzdGFuZGFyZCBvdXRwdXQgKilcblxubGV0IHByaW50X2NoYXIgYyA9IG91dHB1dF9jaGFyIHN0ZG91dCBjXG5sZXQgcHJpbnRfc3RyaW5nIHMgPSBvdXRwdXRfc3RyaW5nIHN0ZG91dCBzXG5sZXQgcHJpbnRfYnl0ZXMgcyA9IG91dHB1dF9ieXRlcyBzdGRvdXQgc1xubGV0IHByaW50X2ludCBpID0gb3V0cHV0X3N0cmluZyBzdGRvdXQgKHN0cmluZ19vZl9pbnQgaSlcbmxldCBwcmludF9mbG9hdCBmID0gb3V0cHV0X3N0cmluZyBzdGRvdXQgKHN0cmluZ19vZl9mbG9hdCBmKVxubGV0IHByaW50X2VuZGxpbmUgcyA9XG4gIG91dHB1dF9zdHJpbmcgc3Rkb3V0IHM7IG91dHB1dF9jaGFyIHN0ZG91dCAnXFxuJzsgZmx1c2ggc3Rkb3V0XG5sZXQgcHJpbnRfbmV3bGluZSAoKSA9IG91dHB1dF9jaGFyIHN0ZG91dCAnXFxuJzsgZmx1c2ggc3Rkb3V0XG5cbigqIE91dHB1dCBmdW5jdGlvbnMgb24gc3RhbmRhcmQgZXJyb3IgKilcblxubGV0IHByZXJyX2NoYXIgYyA9IG91dHB1dF9jaGFyIHN0ZGVyciBjXG5sZXQgcHJlcnJfc3RyaW5nIHMgPSBvdXRwdXRfc3RyaW5nIHN0ZGVyciBzXG5sZXQgcHJlcnJfYnl0ZXMgcyA9IG91dHB1dF9ieXRlcyBzdGRlcnIgc1xubGV0IHByZXJyX2ludCBpID0gb3V0cHV0X3N0cmluZyBzdGRlcnIgKHN0cmluZ19vZl9pbnQgaSlcbmxldCBwcmVycl9mbG9hdCBmID0gb3V0cHV0X3N0cmluZyBzdGRlcnIgKHN0cmluZ19vZl9mbG9hdCBmKVxubGV0IHByZXJyX2VuZGxpbmUgcyA9XG4gIG91dHB1dF9zdHJpbmcgc3RkZXJyIHM7IG91dHB1dF9jaGFyIHN0ZGVyciAnXFxuJzsgZmx1c2ggc3RkZXJyXG5sZXQgcHJlcnJfbmV3bGluZSAoKSA9IG91dHB1dF9jaGFyIHN0ZGVyciAnXFxuJzsgZmx1c2ggc3RkZXJyXG5cbigqIElucHV0IGZ1bmN0aW9ucyBvbiBzdGFuZGFyZCBpbnB1dCAqKVxuXG5sZXQgcmVhZF9saW5lICgpID0gZmx1c2ggc3Rkb3V0OyBpbnB1dF9saW5lIHN0ZGluXG5sZXQgcmVhZF9pbnQgKCkgPSBpbnRfb2Zfc3RyaW5nKHJlYWRfbGluZSgpKVxubGV0IHJlYWRfaW50X29wdCAoKSA9IGludF9vZl9zdHJpbmdfb3B0KHJlYWRfbGluZSgpKVxubGV0IHJlYWRfZmxvYXQgKCkgPSBmbG9hdF9vZl9zdHJpbmcocmVhZF9saW5lKCkpXG5sZXQgcmVhZF9mbG9hdF9vcHQgKCkgPSBmbG9hdF9vZl9zdHJpbmdfb3B0KHJlYWRfbGluZSgpKVxuXG4oKiBPcGVyYXRpb25zIG9uIGxhcmdlIGZpbGVzICopXG5cbm1vZHVsZSBMYXJnZUZpbGUgPVxuICBzdHJ1Y3RcbiAgICBleHRlcm5hbCBzZWVrX291dCA6IG91dF9jaGFubmVsIC0+IGludDY0IC0+IHVuaXQgPSBcImNhbWxfbWxfc2Vla19vdXRfNjRcIlxuICAgIGV4dGVybmFsIHBvc19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQ2NCA9IFwiY2FtbF9tbF9wb3Nfb3V0XzY0XCJcbiAgICBleHRlcm5hbCBvdXRfY2hhbm5lbF9sZW5ndGggOiBvdXRfY2hhbm5lbCAtPiBpbnQ2NFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9jaGFubmVsX3NpemVfNjRcIlxuICAgIGV4dGVybmFsIHNlZWtfaW4gOiBpbl9jaGFubmVsIC0+IGludDY0IC0+IHVuaXQgPSBcImNhbWxfbWxfc2Vla19pbl82NFwiXG4gICAgZXh0ZXJuYWwgcG9zX2luIDogaW5fY2hhbm5lbCAtPiBpbnQ2NCA9IFwiY2FtbF9tbF9wb3NfaW5fNjRcIlxuICAgIGV4dGVybmFsIGluX2NoYW5uZWxfbGVuZ3RoIDogaW5fY2hhbm5lbCAtPiBpbnQ2NCA9IFwiY2FtbF9tbF9jaGFubmVsX3NpemVfNjRcIlxuICBlbmRcblxuKCogRm9ybWF0cyAqKVxuXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2XG4gICA9ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NlxuICAgPSBGb3JtYXQgb2YgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mbXRcbiAgICAgICAgICAgICAgICogc3RyaW5nXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0ID0gKCdhLCAnYiwgJ2MsICdjLCAnYywgJ2QpIGZvcm1hdDZcblxudHlwZSAoJ2EsICdiLCAnYykgZm9ybWF0ID0gKCdhLCAnYiwgJ2MsICdjKSBmb3JtYXQ0XG5cbmxldCBzdHJpbmdfb2ZfZm9ybWF0IChGb3JtYXQgKF9mbXQsIHN0cikpID0gc3RyXG5cbmV4dGVybmFsIGZvcm1hdF9vZl9zdHJpbmcgOlxuICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+XG4gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPSBcIiVpZGVudGl0eVwiXG5cbmxldCAoIF5eICkgKEZvcm1hdCAoZm10MSwgc3RyMSkpIChGb3JtYXQgKGZtdDIsIHN0cjIpKSA9XG4gIEZvcm1hdCAoQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmNvbmNhdF9mbXQgZm10MSBmbXQyLFxuICAgICAgICAgIHN0cjEgXiBcIiUsXCIgXiBzdHIyKVxuXG4oKiBNaXNjZWxsYW5lb3VzICopXG5cbmV4dGVybmFsIHN5c19leGl0IDogaW50IC0+ICdhID0gXCJjYW1sX3N5c19leGl0XCJcblxuKCogZm9yIGF0X2V4aXQgKilcbnR5cGUgJ2EgYXRvbWljX3RcbmV4dGVybmFsIGF0b21pY19tYWtlIDogJ2EgLT4gJ2EgYXRvbWljX3QgPSBcIiVtYWtlbXV0YWJsZVwiXG5leHRlcm5hbCBhdG9taWNfZ2V0IDogJ2EgYXRvbWljX3QgLT4gJ2EgPSBcIiVhdG9taWNfbG9hZFwiXG5leHRlcm5hbCBhdG9taWNfY29tcGFyZV9hbmRfc2V0IDogJ2EgYXRvbWljX3QgLT4gJ2EgLT4gJ2EgLT4gYm9vbFxuICA9IFwiJWF0b21pY19jYXNcIlxuXG5sZXQgZXhpdF9mdW5jdGlvbiA9IGF0b21pY19tYWtlIGZsdXNoX2FsbFxuXG5sZXQgcmVjIGF0X2V4aXQgZiA9XG4gICgqIE1QUiM3MjUzLCBNUFIjNzc5NjogbWFrZSBzdXJlIFwiZlwiIGlzIGV4ZWN1dGVkIG9ubHkgb25jZSAqKVxuICBsZXQgZl95ZXRfdG9fcnVuID0gYXRvbWljX21ha2UgdHJ1ZSBpblxuICBsZXQgb2xkX2V4aXQgPSBhdG9taWNfZ2V0IGV4aXRfZnVuY3Rpb24gaW5cbiAgbGV0IG5ld19leGl0ICgpID1cbiAgICBpZiBhdG9taWNfY29tcGFyZV9hbmRfc2V0IGZfeWV0X3RvX3J1biB0cnVlIGZhbHNlIHRoZW4gZiAoKSA7XG4gICAgb2xkX2V4aXQgKClcbiAgaW5cbiAgbGV0IHN1Y2Nlc3MgPSBhdG9taWNfY29tcGFyZV9hbmRfc2V0IGV4aXRfZnVuY3Rpb24gb2xkX2V4aXQgbmV3X2V4aXQgaW5cbiAgaWYgbm90IHN1Y2Nlc3MgdGhlbiBhdF9leGl0IGZcblxubGV0IGRvX2RvbWFpbl9sb2NhbF9hdF9leGl0ID0gcmVmIChmdW4gKCkgLT4gKCkpXG5cbmxldCBkb19hdF9leGl0ICgpID1cbiAgKCFkb19kb21haW5fbG9jYWxfYXRfZXhpdCkgKCk7XG4gIChhdG9taWNfZ2V0IGV4aXRfZnVuY3Rpb24pICgpXG5cbmxldCBleGl0IHJldGNvZGUgPVxuICBkb19hdF9leGl0ICgpO1xuICBzeXNfZXhpdCByZXRjb2RlXG5cbmxldCBfID0gcmVnaXN0ZXJfbmFtZWRfdmFsdWUgXCJQZXJ2YXNpdmVzLmRvX2F0X2V4aXRcIiBkb19hdF9leGl0XG5cbigqTU9EVUxFX0FMSUFTRVMqKVxubW9kdWxlIEFyZyAgICAgICAgICAgID0gQXJnXG5tb2R1bGUgQXJyYXkgICAgICAgICAgPSBBcnJheVxubW9kdWxlIEFycmF5TGFiZWxzICAgID0gQXJyYXlMYWJlbHNcbm1vZHVsZSBBdG9taWMgICAgICAgICA9IEF0b21pY1xubW9kdWxlIEJpZ2FycmF5ICAgICAgID0gQmlnYXJyYXlcbm1vZHVsZSBCb29sICAgICAgICAgICA9IEJvb2xcbm1vZHVsZSBCdWZmZXIgICAgICAgICA9IEJ1ZmZlclxubW9kdWxlIEJ5dGVzICAgICAgICAgID0gQnl0ZXNcbm1vZHVsZSBCeXRlc0xhYmVscyAgICA9IEJ5dGVzTGFiZWxzXG5tb2R1bGUgQ2FsbGJhY2sgICAgICAgPSBDYWxsYmFja1xubW9kdWxlIENoYXIgICAgICAgICAgID0gQ2hhclxubW9kdWxlIENvbXBsZXggICAgICAgID0gQ29tcGxleFxubW9kdWxlIENvbmRpdGlvbiAgICAgID0gQ29uZGl0aW9uXG5tb2R1bGUgRGlnZXN0ICAgICAgICAgPSBEaWdlc3Rcbm1vZHVsZSBEb21haW4gICAgICAgICA9IERvbWFpblxubW9kdWxlIER5bmFycmF5ICAgICAgID0gRHluYXJyYXlcbm1vZHVsZSBQcXVldWUgICAgICAgICA9IFBxdWV1ZVxubW9kdWxlIEVmZmVjdCAgICAgICAgID0gRWZmZWN0XG5tb2R1bGUgRWl0aGVyICAgICAgICAgPSBFaXRoZXJcbm1vZHVsZSBFcGhlbWVyb24gICAgICA9IEVwaGVtZXJvblxubW9kdWxlIEZpbGVuYW1lICAgICAgID0gRmlsZW5hbWVcbm1vZHVsZSBGbG9hdCAgICAgICAgICA9IEZsb2F0XG5tb2R1bGUgRm9ybWF0ICAgICAgICAgPSBGb3JtYXRcbm1vZHVsZSBGdW4gICAgICAgICAgICA9IEZ1blxubW9kdWxlIEdjICAgICAgICAgICAgID0gR2Ncbm1vZHVsZSBIYXNodGJsICAgICAgICA9IEhhc2h0Ymxcbm1vZHVsZSBJYXJyYXkgICAgICAgICA9IElhcnJheVxubW9kdWxlIEluX2NoYW5uZWwgICAgID0gSW5fY2hhbm5lbFxubW9kdWxlIEludCAgICAgICAgICAgID0gSW50XG5tb2R1bGUgSW50MzIgICAgICAgICAgPSBJbnQzMlxubW9kdWxlIEludDY0ICAgICAgICAgID0gSW50NjRcbm1vZHVsZSBMYXp5ICAgICAgICAgICA9IExhenlcbm1vZHVsZSBMZXhpbmcgICAgICAgICA9IExleGluZ1xubW9kdWxlIExpc3QgICAgICAgICAgID0gTGlzdFxubW9kdWxlIExpc3RMYWJlbHMgICAgID0gTGlzdExhYmVsc1xubW9kdWxlIE1hcCAgICAgICAgICAgID0gTWFwXG5tb2R1bGUgTWFyc2hhbCAgICAgICAgPSBNYXJzaGFsXG5tb2R1bGUgTW9yZUxhYmVscyAgICAgPSBNb3JlTGFiZWxzXG5tb2R1bGUgTXV0ZXggICAgICAgICAgPSBNdXRleFxubW9kdWxlIE5hdGl2ZWludCAgICAgID0gTmF0aXZlaW50XG5tb2R1bGUgT2JqICAgICAgICAgICAgPSBPYmpcbm1vZHVsZSBPbyAgICAgICAgICAgICA9IE9vXG5tb2R1bGUgT3B0aW9uICAgICAgICAgPSBPcHRpb25cbm1vZHVsZSBPdXRfY2hhbm5lbCAgICA9IE91dF9jaGFubmVsXG5tb2R1bGUgUGFpciAgICAgICAgICAgPSBQYWlyXG5tb2R1bGUgUGFyc2luZyAgICAgICAgPSBQYXJzaW5nXG5tb2R1bGUgUHJpbnRleGMgICAgICAgPSBQcmludGV4Y1xubW9kdWxlIFByaW50ZiAgICAgICAgID0gUHJpbnRmXG5tb2R1bGUgUXVldWUgICAgICAgICAgPSBRdWV1ZVxubW9kdWxlIFJhbmRvbSAgICAgICAgID0gUmFuZG9tXG5tb2R1bGUgUmVzdWx0ICAgICAgICAgPSBSZXN1bHRcbm1vZHVsZSBSZXByICAgICAgICAgICA9IFJlcHJcbm1vZHVsZSBTY2FuZiAgICAgICAgICA9IFNjYW5mXG5tb2R1bGUgU2VtYXBob3JlICAgICAgPSBTZW1hcGhvcmVcbm1vZHVsZSBTZXEgICAgICAgICAgICA9IFNlcVxubW9kdWxlIFNldCAgICAgICAgICAgID0gU2V0XG5tb2R1bGUgU3RhY2sgICAgICAgICAgPSBTdGFja1xubW9kdWxlIFN0ZExhYmVscyAgICAgID0gU3RkTGFiZWxzXG5tb2R1bGUgU3RyaW5nICAgICAgICAgPSBTdHJpbmdcbm1vZHVsZSBTdHJpbmdMYWJlbHMgICA9IFN0cmluZ0xhYmVsc1xubW9kdWxlIFN5cyAgICAgICAgICAgID0gU3lzXG5tb2R1bGUgVHlwZSAgICAgICAgICAgPSBUeXBlXG5tb2R1bGUgVWNoYXIgICAgICAgICAgPSBVY2hhclxubW9kdWxlIFVuaXQgICAgICAgICAgID0gVW5pdFxubW9kdWxlIFdlYWsgICAgICAgICAgID0gV2Vha1xuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2F0b21pY19jYXNfZmllbGQiLCJjYW1sX2NyZWF0ZV9ieXRlcyIsImNhbWxfZmxvYXRfb2Zfc3RyaW5nIiwiY2FtbF9pbnRfb2Zfc3RyaW5nIiwiY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlIiwiY2FtbF9tbF9ieXRlc19sZW5ndGgiLCJjYW1sX21sX2NoYW5uZWxfc2l6ZSIsImNhbWxfbWxfY2hhbm5lbF9zaXplXzY0IiwiY2FtbF9tbF9jbG9zZV9jaGFubmVsIiwiY2FtbF9tbF9mbHVzaCIsImNhbWxfbWxfaW5wdXQiLCJjYW1sX21sX2lucHV0X2NoYXIiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiIsImNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dCIsImNhbWxfbWxfb3V0cHV0IiwiY2FtbF9tbF9vdXRwdXRfYnl0ZXMiLCJjYW1sX21sX291dHB1dF9jaGFyIiwiY2FtbF9tbF9zZXRfYmluYXJ5X21vZGUiLCJjYW1sX21sX3NldF9jaGFubmVsX25hbWUiLCJjYW1sX21sX3N0cmluZ19sZW5ndGgiLCJjYW1sX3N0cmluZ19jb25jYXQiLCJjYW1sX3N0cmluZ19vZl9ieXRlcyIsImNhbWxfc3lzX29wZW4iLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImdsb2JhbF9kYXRhIiwiQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzIiwiSW52YWxpZF9hcmd1bWVudCIsIkZhaWx1cmUiLCJNYXRjaF9mYWlsdXJlIiwiQXNzZXJ0X2ZhaWx1cmUiLCJOb3RfZm91bmQiLCJPdXRfb2ZfbWVtb3J5IiwiU3RhY2tfb3ZlcmZsb3ciLCJTeXNfZXJyb3IiLCJFbmRfb2ZfZmlsZSIsIkRpdmlzaW9uX2J5X3plcm8iLCJTeXNfYmxvY2tlZF9pbyIsIlVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlIiwiZmFpbHdpdGgiLCJzIiwiaW52YWxpZF9hcmciLCJFeGl0IiwibWluIiwieCIsInkiLCJtYXgiLCJhYnMiLCJsbm90IiwiY2hhcl9vZl9pbnQiLCJuIiwiY3N0X2ZhbHNlIiwiY3N0X3RydWUiLCJzdHJpbmdfb2ZfYm9vbCIsImIiLCJib29sX29mX3N0cmluZyIsInBhcmFtIiwiYm9vbF9vZl9zdHJpbmdfb3B0Iiwic3RyaW5nX29mX2ludCIsImludF9vZl9zdHJpbmdfb3B0IiwiZXhuIiwidmFsaWRfZmxvYXRfbGV4ZW0iLCJzMSIsImwiLCJpIiwibWF0Y2giLCJzdHJpbmdfb2ZfZmxvYXQiLCJmbG9hdF9vZl9zdHJpbmdfb3B0Iiwic3ltYm9sIiwibDEiLCJsMiIsImgxIiwiaDIiLCJ0bCIsImgzIiwiYmxvY2siLCJkc3QiLCJvZmZzZXQiLCJzdGRpbiIsInN0ZG91dCIsInN0ZGVyciIsIm9wZW5fb3V0X2dlbiIsIm1vZGUiLCJwZXJtIiwibmFtZSIsImMiLCJvcGVuX291dCIsIm9wZW5fb3V0X2JpbiIsImZsdXNoX2FsbCIsImEiLCJvdXRwdXRfYnl0ZXMiLCJvYyIsIm91dHB1dF9zdHJpbmciLCJvdXRwdXQiLCJvZnMiLCJsZW4iLCJvdXRwdXRfc3Vic3RyaW5nIiwib3V0cHV0X3ZhbHVlIiwiY2hhbiIsInYiLCJjbG9zZV9vdXQiLCJjbG9zZV9vdXRfbm9lcnIiLCJvcGVuX2luX2dlbiIsIm9wZW5faW4iLCJvcGVuX2luX2JpbiIsImlucHV0IiwiaWMiLCJ1bnNhZmVfcmVhbGx5X2lucHV0IiwiciIsInJlYWxseV9pbnB1dCIsInJlYWxseV9pbnB1dF9zdHJpbmciLCJpbnB1dF9saW5lIiwiYnVpbGRfcmVzdWx0IiwiYnVmIiwicG9zIiwiaGQiLCJhY2N1IiwiYmVnIiwicmVzIiwiY2xvc2VfaW5fbm9lcnIiLCJwcmludF9jaGFyIiwicHJpbnRfc3RyaW5nIiwicHJpbnRfYnl0ZXMiLCJwcmludF9pbnQiLCJwcmludF9mbG9hdCIsInByaW50X2VuZGxpbmUiLCJwcmludF9uZXdsaW5lIiwicHJlcnJfY2hhciIsInByZXJyX3N0cmluZyIsInByZXJyX2J5dGVzIiwicHJlcnJfaW50IiwicHJlcnJfZmxvYXQiLCJwcmVycl9lbmRsaW5lIiwicHJlcnJfbmV3bGluZSIsInJlYWRfbGluZSIsInJlYWRfaW50IiwicmVhZF9pbnRfb3B0IiwicmVhZF9mbG9hdCIsInJlYWRfZmxvYXRfb3B0Iiwic3RyaW5nX29mX2Zvcm1hdCIsInN0ciIsInN0cjIiLCJmbXQyIiwic3RyMSIsImZtdDEiLCJzMiIsImV4aXRfZnVuY3Rpb24iLCJhdF9leGl0Iiwib2xkX2V4aXQiLCJmX3lldF90b19ydW4iLCJuZXdfZXhpdCIsInN1Y2Nlc3MiLCJkb19kb21haW5fbG9jYWxfYXRfZXhpdCIsImRvX2F0X2V4aXQiLCJleGl0IiwicmV0Y29kZSIsIlN0ZGxpYiJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyx3QkFBQTtBQUFBLElBQUFDLG9CQUFBO0FBQUEsSUFBQUMsdUJBQUE7QUFBQSxJQUFBQyxxQkFBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsSUFBQUMsdUJBQUE7QUFBQSxJQUFBQyx1QkFBQTtBQUFBLElBQUFDLDBCQUFBO0FBQUEsSUFBQUMsd0JBQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMscUJBQUE7QUFBQSxJQUFBQyw2QkFBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyx1QkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsSUFBQUMsMEJBQUE7QUFBQSxJQUFBQywyQkFBQTtBQUFBLElBQUFDLHdCQUFBO0FBQUEsSUFBQUMscUJBQUE7QUFBQSxJQUFBQyx1QkFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsc0JBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsMkJBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLFVBQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsWUFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxZQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyw2QkFBQTtBQUFBLFlBQUFDLFNBQUFDO0FBQUFBLElDNEJpQjtBQUFBLEdBQWdC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QkE5UEcsYUFBQWhHLE9BZ1FXLFNBQUU7QUFBQSxZQUFBaUcsV0FBQWpHO0FBQUFBLElBRzdDO0FBQUEsSUFBNkIsc0NBQ0E7QUFBQTtBQUFBLFlBQUFrRyxLQUFBQztBQUFBQSxJQUc3QjtBQUFBLElBQ0EscUNBQWdCO0FBQUE7QUFBQSxHQUVWO0FBQUE7QUFBQSxJQUFBQztBQUFBQSxNQUF1RDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRURya0IvRCIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjEwMTg4LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvc3lzLm1sLmluIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCogQGNvbmZpZ3VyZV9pbnB1dEAgKilcbiMzIFwic3lzLm1sLmluXCJcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBiYWNrZW5kX3R5cGUgPVxuICB8IE5hdGl2ZVxuICB8IEJ5dGVjb2RlXG4gIHwgT3RoZXIgb2Ygc3RyaW5nXG4oKiBTeXN0ZW0gaW50ZXJmYWNlICopXG5cbmV4dGVybmFsIGdldF9jb25maWc6IHVuaXQgLT4gc3RyaW5nICogaW50ICogYm9vbCA9IFwiY2FtbF9zeXNfZ2V0X2NvbmZpZ1wiXG5leHRlcm5hbCBnZXRfZXhlY3V0YWJsZV9uYW1lIDogdW5pdCAtPiBzdHJpbmcgPSBcImNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZVwiXG5leHRlcm5hbCBhcmd2IDogc3RyaW5nIGFycmF5ID0gXCIlc3lzX2FyZ3ZcIlxuZXh0ZXJuYWwgYmlnX2VuZGlhbiA6IHVuaXQgLT4gYm9vbCA9IFwiJWJpZ19lbmRpYW5cIlxuZXh0ZXJuYWwgd29yZF9zaXplIDogdW5pdCAtPiBpbnQgPSBcIiV3b3JkX3NpemVcIlxuZXh0ZXJuYWwgaW50X3NpemUgOiB1bml0IC0+IGludCA9IFwiJWludF9zaXplXCJcbmV4dGVybmFsIG1heF93b3NpemUgOiB1bml0IC0+IGludCA9IFwiJW1heF93b3NpemVcIlxuZXh0ZXJuYWwgdW5peCA6IHVuaXQgLT4gYm9vbCA9IFwiJW9zdHlwZV91bml4XCJcbmV4dGVybmFsIHdpbjMyIDogdW5pdCAtPiBib29sID0gXCIlb3N0eXBlX3dpbjMyXCJcbmV4dGVybmFsIGN5Z3dpbiA6IHVuaXQgLT4gYm9vbCA9IFwiJW9zdHlwZV9jeWd3aW5cIlxuZXh0ZXJuYWwgZ2V0X2JhY2tlbmRfdHlwZSA6IHVuaXQgLT4gYmFja2VuZF90eXBlID0gXCIlYmFja2VuZF90eXBlXCJcblxubGV0IGV4ZWN1dGFibGVfbmFtZSA9IGdldF9leGVjdXRhYmxlX25hbWUoKVxubGV0IChvc190eXBlLCBfLCBfKSA9IGdldF9jb25maWcoKVxubGV0IGJhY2tlbmRfdHlwZSA9IGdldF9iYWNrZW5kX3R5cGUgKClcbmxldCBiaWdfZW5kaWFuID0gYmlnX2VuZGlhbiAoKVxubGV0IHdvcmRfc2l6ZSA9IHdvcmRfc2l6ZSAoKVxubGV0IGludF9zaXplID0gaW50X3NpemUgKClcbmxldCB1bml4ID0gdW5peCAoKVxubGV0IHdpbjMyID0gd2luMzIgKClcbmxldCBjeWd3aW4gPSBjeWd3aW4gKClcbmxldCBtYXhfYXJyYXlfbGVuZ3RoID0gbWF4X3dvc2l6ZSAoKVxubGV0IG1heF9mbG9hdGFycmF5X2xlbmd0aCA9IG1heF9hcnJheV9sZW5ndGggLyAoNjQgLyB3b3JkX3NpemUpXG5sZXQgbWF4X3N0cmluZ19sZW5ndGggPSB3b3JkX3NpemUgLyA4ICogbWF4X2FycmF5X2xlbmd0aCAtIDFcbmV4dGVybmFsIHJ1bnRpbWVfdmFyaWFudCA6IHVuaXQgLT4gc3RyaW5nID0gXCJjYW1sX3J1bnRpbWVfdmFyaWFudFwiXG5leHRlcm5hbCBydW50aW1lX3BhcmFtZXRlcnMgOiB1bml0IC0+IHN0cmluZyA9IFwiY2FtbF9ydW50aW1lX3BhcmFtZXRlcnNcIlxuZXh0ZXJuYWwgcG9sbF9hY3Rpb25zIDogdW5pdCAtPiB1bml0ID0gXCIlcG9sbFwiXG5cbmV4dGVybmFsIGZpbGVfZXhpc3RzOiBzdHJpbmcgLT4gYm9vbCA9IFwiY2FtbF9zeXNfZmlsZV9leGlzdHNcIlxuZXh0ZXJuYWwgaXNfZGlyZWN0b3J5IDogc3RyaW5nIC0+IGJvb2wgPSBcImNhbWxfc3lzX2lzX2RpcmVjdG9yeVwiXG5leHRlcm5hbCBpc19yZWd1bGFyX2ZpbGUgOiBzdHJpbmcgLT4gYm9vbCA9IFwiY2FtbF9zeXNfaXNfcmVndWxhcl9maWxlXCJcbmV4dGVybmFsIHJlbW92ZTogc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfc3lzX3JlbW92ZVwiXG5leHRlcm5hbCByZW5hbWUgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfc3lzX3JlbmFtZVwiXG5leHRlcm5hbCBnZXRlbnY6IHN0cmluZyAtPiBzdHJpbmcgPSBcImNhbWxfc3lzX2dldGVudlwiXG5leHRlcm5hbCBnZXRlbnZfb3B0OiBzdHJpbmcgLT4gc3RyaW5nIG9wdGlvbiA9IFwiY2FtbF9zeXNfZ2V0ZW52X29wdFwiXG5cbmV4dGVybmFsIGNvbW1hbmQ6IHN0cmluZyAtPiBpbnQgPSBcImNhbWxfc3lzX3N5c3RlbV9jb21tYW5kXCJcbmV4dGVybmFsIHRpbWU6IHVuaXQgLT4gKGZsb2F0IFtAdW5ib3hlZF0pID1cbiAgXCJjYW1sX3N5c190aW1lXCIgXCJjYW1sX3N5c190aW1lX3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2hkaXI6IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX3N5c19jaGRpclwiXG5leHRlcm5hbCBta2Rpcjogc3RyaW5nIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX3N5c19ta2RpclwiXG5leHRlcm5hbCBybWRpcjogc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfc3lzX3JtZGlyXCJcbmV4dGVybmFsIGdldGN3ZDogdW5pdCAtPiBzdHJpbmcgPSBcImNhbWxfc3lzX2dldGN3ZFwiXG5leHRlcm5hbCByZWFkZGlyIDogc3RyaW5nIC0+IHN0cmluZyBhcnJheSA9IFwiY2FtbF9zeXNfcmVhZF9kaXJlY3RvcnlcIlxuXG5leHRlcm5hbCBpb19idWZmZXJfc2l6ZTogdW5pdCAtPiBpbnQgPSBcImNhbWxfc3lzX2lvX2J1ZmZlcl9zaXplXCJcbmxldCBpb19idWZmZXJfc2l6ZSA9IGlvX2J1ZmZlcl9zaXplICgpXG5cbmxldCBpbnRlcmFjdGl2ZSA9IHJlZiBmYWxzZVxuXG50eXBlIHNpZ25hbCA9IGludFxuXG50eXBlIHNpZ25hbF9iZWhhdmlvciA9XG4gICAgU2lnbmFsX2RlZmF1bHRcbiAgfCBTaWduYWxfaWdub3JlXG4gIHwgU2lnbmFsX2hhbmRsZSBvZiAoc2lnbmFsIC0+IHVuaXQpXG5cbmV4dGVybmFsIHNpZ25hbCA6IHNpZ25hbCAtPiBzaWduYWxfYmVoYXZpb3IgLT4gc2lnbmFsX2JlaGF2aW9yXG4gICAgICAgICAgICAgICAgPSBcImNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlclwiXG5cbmxldCBzZXRfc2lnbmFsIHNpZ19udW0gc2lnX2JlaCA9IGlnbm9yZShzaWduYWwgc2lnX251bSBzaWdfYmVoKVxuXG5sZXQgc2lnYWJydCA9IC0xXG5sZXQgc2lnYWxybSA9IC0yXG5sZXQgc2lnZnBlID0gLTNcbmxldCBzaWdodXAgPSAtNFxubGV0IHNpZ2lsbCA9IC01XG5sZXQgc2lnaW50ID0gLTZcbmxldCBzaWdraWxsID0gLTdcbmxldCBzaWdwaXBlID0gLThcbmxldCBzaWdxdWl0ID0gLTlcbmxldCBzaWdzZWd2ID0gLTEwXG5sZXQgc2lndGVybSA9IC0xMVxubGV0IHNpZ3VzcjEgPSAtMTJcbmxldCBzaWd1c3IyID0gLTEzXG5sZXQgc2lnY2hsZCA9IC0xNFxubGV0IHNpZ2NvbnQgPSAtMTVcbmxldCBzaWdzdG9wID0gLTE2XG5sZXQgc2lndHN0cCA9IC0xN1xubGV0IHNpZ3R0aW4gPSAtMThcbmxldCBzaWd0dG91ID0gLTE5XG5sZXQgc2lndnRhbHJtID0gLTIwXG5sZXQgc2lncHJvZiA9IC0yMVxubGV0IHNpZ2J1cyA9IC0yMlxubGV0IHNpZ3BvbGwgPSAtMjNcbmxldCBzaWdzeXMgPSAtMjRcbmxldCBzaWd0cmFwID0gLTI1XG5sZXQgc2lndXJnID0gLTI2XG5sZXQgc2lneGNwdSA9IC0yN1xubGV0IHNpZ3hmc3ogPSAtMjhcbmxldCBzaWdpbyA9IC0yOVxubGV0IHNpZ3dpbmNoID0gLTMwXG5cbmxldCBzaWduYWxfdG9fc3RyaW5nIHMgPVxuICBpZiBzID0gc2lnYWJydCB0aGVuIFwiU0lHQUJSVFwiXG4gIGVsc2UgaWYgcyA9IHNpZ2Fscm0gdGhlbiBcIlNJR0FMUk1cIlxuICBlbHNlIGlmIHMgPSBzaWdmcGUgdGhlbiBcIlNJR0ZQRVwiXG4gIGVsc2UgaWYgcyA9IHNpZ2h1cCB0aGVuIFwiU0lHSFVQXCJcbiAgZWxzZSBpZiBzID0gc2lnaWxsIHRoZW4gXCJTSUdJTExcIlxuICBlbHNlIGlmIHMgPSBzaWdpbnQgdGhlbiBcIlNJR0lOVFwiXG4gIGVsc2UgaWYgcyA9IHNpZ2tpbGwgdGhlbiBcIlNJR0tJTExcIlxuICBlbHNlIGlmIHMgPSBzaWdwaXBlIHRoZW4gXCJTSUdQSVBFXCJcbiAgZWxzZSBpZiBzID0gc2lncXVpdCB0aGVuIFwiU0lHUVVJVFwiXG4gIGVsc2UgaWYgcyA9IHNpZ3NlZ3YgdGhlbiBcIlNJR1NFR1ZcIlxuICBlbHNlIGlmIHMgPSBzaWd0ZXJtIHRoZW4gXCJTSUdURVJNXCJcbiAgZWxzZSBpZiBzID0gc2lndXNyMSB0aGVuIFwiU0lHVVNSMVwiXG4gIGVsc2UgaWYgcyA9IHNpZ3VzcjIgdGhlbiBcIlNJR1VTUjJcIlxuICBlbHNlIGlmIHMgPSBzaWdjaGxkIHRoZW4gXCJTSUdDSExEXCJcbiAgZWxzZSBpZiBzID0gc2lnY29udCB0aGVuIFwiU0lHQ09OVFwiXG4gIGVsc2UgaWYgcyA9IHNpZ3N0b3AgdGhlbiBcIlNJR1NUT1BcIlxuICBlbHNlIGlmIHMgPSBzaWd0c3RwIHRoZW4gXCJTSUdUU1RQXCJcbiAgZWxzZSBpZiBzID0gc2lndHRpbiB0aGVuIFwiU0lHVFRJTlwiXG4gIGVsc2UgaWYgcyA9IHNpZ3R0b3UgdGhlbiBcIlNJR1RUT1VcIlxuICBlbHNlIGlmIHMgPSBzaWd2dGFscm0gdGhlbiBcIlNJR1ZUQUxSTVwiXG4gIGVsc2UgaWYgcyA9IHNpZ3Byb2YgdGhlbiBcIlNJR1BST0ZcIlxuICBlbHNlIGlmIHMgPSBzaWdidXMgdGhlbiBcIlNJR0JVU1wiXG4gIGVsc2UgaWYgcyA9IHNpZ3BvbGwgdGhlbiBcIlNJR1BPTExcIlxuICBlbHNlIGlmIHMgPSBzaWdzeXMgdGhlbiBcIlNJR1NZU1wiXG4gIGVsc2UgaWYgcyA9IHNpZ3RyYXAgdGhlbiBcIlNJR1RSQVBcIlxuICBlbHNlIGlmIHMgPSBzaWd1cmcgdGhlbiBcIlNJR1VSR1wiXG4gIGVsc2UgaWYgcyA9IHNpZ3hjcHUgdGhlbiBcIlNJR1hDUFVcIlxuICBlbHNlIGlmIHMgPSBzaWd4ZnN6IHRoZW4gXCJTSUdYRlNaXCJcbiAgZWxzZSBpZiBzID0gc2lnaW8gdGhlbiBcIlNJR0lPXCJcbiAgZWxzZSBpZiBzID0gc2lnd2luY2ggdGhlbiBcIlNJR1dJTkNIXCJcbiAgZWxzZSBpZiBzIDwgc2lnd2luY2ggdGhlbiBpbnZhbGlkX2FyZyBcIlN5cy5zaWduYWxfdG9fc3RyaW5nXCJcbiAgZWxzZSBcIlNJRyhcIiBeIHN0cmluZ19vZl9pbnQgcyBeIFwiKVwiXG5cbmV4dGVybmFsIHJldl9jb252ZXJ0X3NpZ25hbF9udW1iZXI6IGludCAtPiBpbnQgPVxuICBcImNhbWxfc3lzX3Jldl9jb252ZXJ0X3NpZ25hbF9udW1iZXJcIlxuZXh0ZXJuYWwgY29udmVydF9zaWduYWxfbnVtYmVyOiBpbnQgLT4gaW50ID1cbiAgXCJjYW1sX3N5c19jb252ZXJ0X3NpZ25hbF9udW1iZXJcIlxuXG5sZXQgc2lnbmFsX29mX2ludCBpID1cbiAgaWYgaSA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlN5cy5zaWduYWxfb2ZfaW50XCJcbiAgZWxzZSByZXZfY29udmVydF9zaWduYWxfbnVtYmVyIGlcblxubGV0IHNpZ25hbF90b19pbnQgaSA9XG4gIGlmIGkgPCBzaWd3aW5jaCB0aGVuIGludmFsaWRfYXJnIFwiU3lzLnNpZ25hbF90b19pbnRcIlxuICBlbHNlIGNvbnZlcnRfc2lnbmFsX251bWJlciBpXG5cbmV4Y2VwdGlvbiBCcmVha1xuXG5sZXQgY2F0Y2hfYnJlYWsgb24gPVxuICBpZiBvbiB0aGVuXG4gICAgc2V0X3NpZ25hbCBzaWdpbnQgKFNpZ25hbF9oYW5kbGUoZnVuIF8gLT4gcmFpc2UgQnJlYWspKVxuICBlbHNlXG4gICAgc2V0X3NpZ25hbCBzaWdpbnQgU2lnbmFsX2RlZmF1bHRcblxuXG5leHRlcm5hbCBlbmFibGVfcnVudGltZV93YXJuaW5nczogYm9vbCAtPiB1bml0ID1cbiAgXCJjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzXCJcbmV4dGVybmFsIHJ1bnRpbWVfd2FybmluZ3NfZW5hYmxlZDogdW5pdCAtPiBib29sID1cbiAgXCJjYW1sX21sX3J1bnRpbWVfd2FybmluZ3NfZW5hYmxlZFwiXG5cbigqIFRoZSB2ZXJzaW9uIHN0cmluZyBpcyBmb3VuZCBpbiBmaWxlIC4uL1ZFUlNJT04gKilcblxubGV0IG9jYW1sX3ZlcnNpb24gPSBcIkBWRVJTSU9OQFwiXG5cbmxldCBkZXZlbG9wbWVudF92ZXJzaW9uID0gQE9DQU1MX0RFVkVMT1BNRU5UX1ZFUlNJT05AXG5cbnR5cGUgZXh0cmFfcHJlZml4ID0gUGx1cyB8IFRpbGRlXG5cbnR5cGUgZXh0cmFfaW5mbyA9IGV4dHJhX3ByZWZpeCAqIHN0cmluZ1xuXG50eXBlIG9jYW1sX3JlbGVhc2VfaW5mbyA9IHtcbiAgbWFqb3IgOiBpbnQ7XG4gIG1pbm9yIDogaW50O1xuICBwYXRjaGxldmVsIDogaW50O1xuICBleHRyYSA6IGV4dHJhX2luZm8gb3B0aW9uXG59XG5cbmxldCBvY2FtbF9yZWxlYXNlID0ge1xuICBtYWpvciA9IEBPQ0FNTF9WRVJTSU9OX01BSk9SQDtcbiAgbWlub3IgPSBAT0NBTUxfVkVSU0lPTl9NSU5PUkA7XG4gIHBhdGNobGV2ZWwgPSBAT0NBTUxfVkVSU0lPTl9QQVRDSExFVkVMQDtcbiAgZXh0cmEgPSBAT0NBTUxfUkVMRUFTRV9FWFRSQUBcbn1cblxuKCogT3B0aW1pemF0aW9uICopXG5cbmV4dGVybmFsIG9wYXF1ZV9pZGVudGl0eSA6ICdhIC0+ICdhID0gXCIlb3BhcXVlXCJcblxubW9kdWxlIEltbWVkaWF0ZTY0ID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIE5vbl9pbW1lZGlhdGUgPSBzaWdcbiAgICB0eXBlIHRcbiAgZW5kXG4gIG1vZHVsZSB0eXBlIEltbWVkaWF0ZSA9IHNpZ1xuICAgIHR5cGUgdCBbQEBpbW1lZGlhdGVdXG4gIGVuZFxuXG4gIG1vZHVsZSBNYWtlKEltbWVkaWF0ZSA6IEltbWVkaWF0ZSkoTm9uX2ltbWVkaWF0ZSA6IE5vbl9pbW1lZGlhdGUpID0gc3RydWN0XG4gICAgdHlwZSB0IFtAQGltbWVkaWF0ZTY0XVxuICAgIHR5cGUgJ2EgcmVwciA9XG4gICAgICB8IEltbWVkaWF0ZSA6IEltbWVkaWF0ZS50IHJlcHJcbiAgICAgIHwgTm9uX2ltbWVkaWF0ZSA6IE5vbl9pbW1lZGlhdGUudCByZXByXG4gICAgZXh0ZXJuYWwgbWFnaWMgOiBfIHJlcHIgLT4gdCByZXByID0gXCIlaWRlbnRpdHlcIlxuICAgIGxldCByZXByID1cbiAgICAgIGlmIHdvcmRfc2l6ZSA9IDY0IHRoZW5cbiAgICAgICAgbWFnaWMgSW1tZWRpYXRlXG4gICAgICBlbHNlXG4gICAgICAgIG1hZ2ljIE5vbl9pbW1lZGlhdGVcbiAgZW5kXG5lbmRcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiU3RkbGliIiwiZXhlY3V0YWJsZV9uYW1lIiwib3NfdHlwZSIsInVuaXgiLCJ3aW4zMiIsImN5Z3dpbiIsIm1heF9hcnJheV9sZW5ndGgiLCJtYXhfZmxvYXRhcnJheV9sZW5ndGgiLCJtYXhfc3RyaW5nX2xlbmd0aCIsImlvX2J1ZmZlcl9zaXplIiwic2V0X3NpZ25hbCIsInNpZ19udW0iLCJzaWdfYmVoIiwic2lnbmFsX3RvX3N0cmluZyIsInMiLCJzaWduYWxfb2ZfaW50IiwiaSIsInNpZ25hbF90b19pbnQiLCJCcmVhayIsImNhdGNoX2JyZWFrIiwib24iLCJNYWtlIiwiSW1tZWRpYXRlIiwiTm9uX2ltbWVkaWF0ZSIsIlN0ZGxpYl9TeXMiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDLGtCQ21Dc0I7QUFBQSxJQUFBQyxVQUNBO0FBQUEsSUFBQUMsT0FBWTtBQUFBLElBQUFDLFFBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyx3QkFBQTtBQUFBLElBQUFDLG9CQUFBO0FBQUEsSUFBQUMsaUJBaUNiO0FBQUEsWUFBQUMsV0FBQUMsU0FBQUMsU0FjMEM7QUFBQSxZQUFBQyxpQkFBQUM7QUFBQUEsSUFrQzdELGFBQW9CO0FBQUEsSUFDZixhQUFvQjtBQUFBLElBQ3BCLGFBQW1CO0FBQUEsSUFDbkIsYUFBbUI7QUFBQSxJQUNuQixhQUFtQjtBQUFBLElBQ25CLGFBQW1CO0FBQUEsSUFDbkIsYUFBb0I7QUFBQSxJQUNwQixhQUFvQjtBQUFBLElBQ3BCLGFBQW9CO0FBQUEsSUFDcEIsY0FBb0I7QUFBQSxJQUNwQixjQUFvQjtBQUFBLElBQ3BCLGNBQW9CO0FBQUEsSUFDcEIsY0FBb0I7QUFBQSxJQUNwQixjQUFvQjtBQUFBLElBQ3BCLGNBQW9CO0FBQUEsSUFDcEIsY0FBb0I7QUFBQSxJQUNwQixjQUFvQjtBQUFBLElBQ3BCLGNBQW9CO0FBQUEsSUFDcEIsY0FBb0I7QUFBQSxJQUNwQixjQUFzQjtBQUFBLElBQ3RCLGNBQW9CO0FBQUEsSUFDcEIsY0FBbUI7QUFBQSxJQUNuQixjQUFvQjtBQUFBLElBQ3BCLGNBQW1CO0FBQUEsSUFDbkIsY0FBb0I7QUFBQSxJQUNwQixjQUFtQjtBQUFBLElBQ25CLGNBQW9CO0FBQUEsSUFDcEIsY0FBb0I7QUFBQSxJQUNwQixjQUFrQjtBQUFBLElBQ2xCLGNBQXFCO0FBQUEsSUFDckIsWUFBcUIsbURBQ1M7QUFBQSxZQUFyQjtBQUFBLElBQXFCO0FBQUE7QUFBQSxZQUFBQyxjQUFBQztBQUFBQSxJQVFuQztBQUFBLGNBQ0s7QUFBQSxjQURTLHlDQUNrQjtBQUFBO0FBQUEsWUFBQUMsY0FBQUQ7QUFBQUEsSUFHaEM7QUFBQSxjQUFxQjtBQUFBLGNBQ2hCLHlDQUF1QjtBQUFBO0FBQUEsT0FBQUUsUUE1RlE7QUFBQSxZQUFBQyxZQUFBQyxJQWlHcEMsaUJBR2tDO0FBQUEsWUFBQUMsS0FBQUMsV0FBQUMsZUFzRDVCO0FBQUE7QUFBQSxJQUFBQztBQUFBQSxNQTFKOEI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRURyRXRDIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MTAzMTksImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9vYmoubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE9wZXJhdGlvbnMgb24gaW50ZXJuYWwgcmVwcmVzZW50YXRpb25zIG9mIHZhbHVlcyAqKVxuXG50eXBlIHRcblxudHlwZSByYXdfZGF0YSA9IG5hdGl2ZWludFxuXG5leHRlcm5hbCByZXByIDogJ2EgLT4gdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIG9iaiA6IHQgLT4gJ2EgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBtYWdpYyA6ICdhIC0+ICdiID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgaXNfaW50IDogdCAtPiBib29sID0gXCIlb2JqX2lzX2ludFwiXG5sZXQgW0BpbmxpbmUgYWx3YXlzXSBpc19ibG9jayBhID0gbm90IChpc19pbnQgYSlcbmV4dGVybmFsIHRhZyA6IHQgLT4gaW50ID0gXCJjYW1sX29ial90YWdcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2l6ZSA6IHQgLT4gaW50ID0gXCIlb2JqX3NpemVcIlxuZXh0ZXJuYWwgcmVhY2hhYmxlX3dvcmRzIDogdCAtPiBpbnQgPSBcImNhbWxfb2JqX3JlYWNoYWJsZV93b3Jkc1wiXG5leHRlcm5hbCBmaWVsZCA6IHQgLT4gaW50IC0+IHQgPSBcIiVvYmpfZmllbGRcIlxuZXh0ZXJuYWwgc2V0X2ZpZWxkIDogdCAtPiBpbnQgLT4gdCAtPiB1bml0ID0gXCIlb2JqX3NldF9maWVsZFwiXG5leHRlcm5hbCBmbG9hdGFycmF5X2dldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0ID0gXCJjYW1sX2Zsb2F0YXJyYXlfZ2V0XCJcbmV4dGVybmFsIGZsb2F0YXJyYXlfc2V0IDpcbiAgICBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCAtPiB1bml0ID0gXCJjYW1sX2Zsb2F0YXJyYXlfc2V0XCJcbmxldCBbQGlubGluZSBhbHdheXNdIGRvdWJsZV9maWVsZCB4IGkgPSBmbG9hdGFycmF5X2dldCAob2JqIHggOiBmbG9hdGFycmF5KSBpXG5sZXQgW0BpbmxpbmUgYWx3YXlzXSBzZXRfZG91YmxlX2ZpZWxkIHggaSB2ID1cbiAgZmxvYXRhcnJheV9zZXQgKG9iaiB4IDogZmxvYXRhcnJheSkgaSB2XG5leHRlcm5hbCByYXdfZmllbGQgOiB0IC0+IGludCAtPiByYXdfZGF0YSA9IFwiY2FtbF9vYmpfcmF3X2ZpZWxkXCJcbmV4dGVybmFsIHNldF9yYXdfZmllbGQgOiB0IC0+IGludCAtPiByYXdfZGF0YSAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9vYmpfc2V0X3Jhd19maWVsZFwiXG5cbmV4dGVybmFsIG5ld19ibG9jayA6IGludCAtPiBpbnQgLT4gdCA9IFwiY2FtbF9vYmpfYmxvY2tcIlxuZXh0ZXJuYWwgZHVwIDogdCAtPiB0ID0gXCJjYW1sX29ial9kdXBcIlxuZXh0ZXJuYWwgYWRkX29mZnNldCA6IHQgLT4gSW50MzIudCAtPiB0ID0gXCJjYW1sX29ial9hZGRfb2Zmc2V0XCJcbmV4dGVybmFsIHdpdGhfdGFnIDogaW50IC0+IHQgLT4gdCA9IFwiY2FtbF9vYmpfd2l0aF90YWdcIlxuXG5sZXQgZmlyc3Rfbm9uX2NvbnN0YW50X2NvbnN0cnVjdG9yX3RhZyA9IDBcbmxldCBsYXN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3Rvcl90YWcgPSAyNDNcblxubGV0IGZvcmNpbmdfdGFnID0gMjQ0XG5sZXQgY29udF90YWcgPSAyNDVcbmxldCBsYXp5X3RhZyA9IDI0NlxubGV0IGNsb3N1cmVfdGFnID0gMjQ3XG5sZXQgb2JqZWN0X3RhZyA9IDI0OFxubGV0IGluZml4X3RhZyA9IDI0OVxubGV0IGZvcndhcmRfdGFnID0gMjUwXG5cbmxldCBub19zY2FuX3RhZyA9IDI1MVxuXG5sZXQgYWJzdHJhY3RfdGFnID0gMjUxXG5sZXQgc3RyaW5nX3RhZyA9IDI1MlxubGV0IGRvdWJsZV90YWcgPSAyNTNcbmxldCBkb3VibGVfYXJyYXlfdGFnID0gMjU0XG5sZXQgY3VzdG9tX3RhZyA9IDI1NVxuXG5cbmxldCBpbnRfdGFnID0gMTAwMFxubGV0IG91dF9vZl9oZWFwX3RhZyA9IDEwMDFcbmxldCB1bmFsaWduZWRfdGFnID0gMTAwMlxuXG5tb2R1bGUgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbnN0cnVjdFxuICB0eXBlIHQgPSBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgbGV0IG9mX3ZhbCB4ID1cbiAgICBsZXQgeCA9IHJlcHIgeCBpblxuICAgIGxldCBzbG90ID1cbiAgICAgIGlmIChpc19ibG9jayB4KSAmJiAodGFnIHgpIDw+IG9iamVjdF90YWcgJiYgKHNpemUgeCkgPj0gMSB0aGVuIGZpZWxkIHggMFxuICAgICAgZWxzZSB4XG4gICAgaW5cbiAgICBsZXQgbmFtZSA9XG4gICAgICBpZiAoaXNfYmxvY2sgc2xvdCkgJiYgKHRhZyBzbG90KSA9IG9iamVjdF90YWcgdGhlbiBmaWVsZCBzbG90IDBcbiAgICAgIGVsc2UgaW52YWxpZF9hcmcgXCJPYmouZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXCJcbiAgICBpblxuICAgICAgaWYgKHRhZyBuYW1lKSA9IHN0cmluZ190YWcgdGhlbiAob2JqIHNsb3QgOiB0KVxuICAgICAgZWxzZSBpbnZhbGlkX2FyZyBcIk9iai5leHRlbnNpb25fY29uc3RydWN0b3JcIlxuXG4gIGxldCBbQGlubGluZSBhbHdheXNdIG5hbWUgKHNsb3QgOiB0KSA9XG4gICAgKG9iaiAoZmllbGQgKHJlcHIgc2xvdCkgMCkgOiBzdHJpbmcpXG5cbiAgbGV0IFtAaW5saW5lIGFsd2F5c10gaWQgKHNsb3QgOiB0KSA9XG4gICAgKG9iaiAoZmllbGQgKHJlcHIgc2xvdCkgMSkgOiBpbnQpXG5lbmRcblxubW9kdWxlIEVwaGVtZXJvbiA9IHN0cnVjdFxuICB0eXBlIG9ial90ID0gdFxuXG4gIHR5cGUgdCAoKiogZXBoZW1lcm9uICopXG5cbiAgICgqKiBUbyBjaGFuZ2UgaW4gc3luYyB3aXRoIHdlYWsuaCAqKVxuICBsZXQgYWRkaXRpb25hbF92YWx1ZXMgPSAyXG4gIGxldCBtYXhfZXBoZV9sZW5ndGggPSBTeXMubWF4X2FycmF5X2xlbmd0aCAtIGFkZGl0aW9uYWxfdmFsdWVzXG5cbiAgZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IHQgPSBcImNhbWxfZXBoZV9jcmVhdGVcIlxuICBsZXQgY3JlYXRlIGwgPVxuICAgIGlmIG5vdCAoMCA8PSBsICYmIGwgPD0gbWF4X2VwaGVfbGVuZ3RoKSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIk9iai5FcGhlbWVyb24uY3JlYXRlXCI7XG4gICAgY3JlYXRlIGxcblxuICBsZXQgbGVuZ3RoIHggPSBzaXplKHJlcHIgeCkgLSBhZGRpdGlvbmFsX3ZhbHVlc1xuXG4gIGxldCByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gbXNnID1cbiAgICBpZiBub3QgKDAgPD0gbyAmJiBvIDwgbGVuZ3RoIGUpIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIG1zZ1xuXG4gIGV4dGVybmFsIGdldF9rZXk6IHQgLT4gaW50IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9rZXlcIlxuICBsZXQgZ2V0X2tleSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uZ2V0X2tleVwiO1xuICAgIGdldF9rZXkgZSBvXG5cbiAgZXh0ZXJuYWwgZ2V0X2tleV9jb3B5OiB0IC0+IGludCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfa2V5X2NvcHlcIlxuICBsZXQgZ2V0X2tleV9jb3B5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5nZXRfa2V5X2NvcHlcIjtcbiAgICBnZXRfa2V5X2NvcHkgZSBvXG5cbiAgZXh0ZXJuYWwgc2V0X2tleTogdCAtPiBpbnQgLT4gb2JqX3QgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3NldF9rZXlcIlxuICBsZXQgc2V0X2tleSBlIG8geCA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5zZXRfa2V5XCI7XG4gICAgc2V0X2tleSBlIG8geFxuXG4gIGV4dGVybmFsIHVuc2V0X2tleTogdCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3Vuc2V0X2tleVwiXG4gIGxldCB1bnNldF9rZXkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLnVuc2V0X2tleVwiO1xuICAgIHVuc2V0X2tleSBlIG9cblxuICBleHRlcm5hbCBjaGVja19rZXk6IHQgLT4gaW50IC0+IGJvb2wgPSBcImNhbWxfZXBoZV9jaGVja19rZXlcIlxuICBsZXQgY2hlY2tfa2V5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5jaGVja19rZXlcIjtcbiAgICBjaGVja19rZXkgZSBvXG5cbiAgZXh0ZXJuYWwgYmxpdF9rZXkgOiB0IC0+IGludCAtPiB0IC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgID0gXCJjYW1sX2VwaGVfYmxpdF9rZXlcIlxuXG4gIGxldCBibGl0X2tleSBlMSBvMSBlMiBvMiBsID1cbiAgICBpZiBsIDwgMCB8fCBvMSA8IDAgfHwgbzEgPiBsZW5ndGggZTEgLSBsXG4gICAgICAgfHwgbzIgPCAwIHx8IG8yID4gbGVuZ3RoIGUyIC0gbFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJPYmouRXBoZW1lcm9uLmJsaXRfa2V5XCJcbiAgICBlbHNlIGlmIGwgPD4gMCB0aGVuIGJsaXRfa2V5IGUxIG8xIGUyIG8yIGxcblxuICBleHRlcm5hbCBnZXRfZGF0YTogdCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfZGF0YVwiXG4gIGV4dGVybmFsIGdldF9kYXRhX2NvcHk6IHQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2RhdGFfY29weVwiXG4gIGV4dGVybmFsIHNldF9kYXRhOiB0IC0+IG9ial90IC0+IHVuaXQgPSBcImNhbWxfZXBoZV9zZXRfZGF0YVwiXG4gIGV4dGVybmFsIHVuc2V0X2RhdGE6IHQgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3Vuc2V0X2RhdGFcIlxuICBleHRlcm5hbCBjaGVja19kYXRhOiB0IC0+IGJvb2wgPSBcImNhbWxfZXBoZV9jaGVja19kYXRhXCJcbiAgZXh0ZXJuYWwgYmxpdF9kYXRhIDogdCAtPiB0IC0+IHVuaXQgPSBcImNhbWxfZXBoZV9ibGl0X2RhdGFcIlxuXG5lbmRcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jaGVja19ib3VuZCIsImNhbWxfb2JqX3RhZyIsImdsb2JhbF9kYXRhIiwiU3RkbGliIiwiU3RkbGliX1N5cyIsImlzX2Jsb2NrIiwiYSIsImRvdWJsZV9maWVsZCIsIngiLCJpIiwic2V0X2RvdWJsZV9maWVsZCIsInYiLCJvZl92YWwiLCJzbG90IiwiY3N0X09ial9leHRlbnNpb25fY29uc3RydWN0b3IiLCJuYW1lIiwiaWQiLCJtYXhfZXBoZV9sZW5ndGgiLCJjcmVhdGUiLCJsIiwibGVuZ3RoIiwicmFpc2VfaWZfaW52YWxpZF9vZmZzZXQiLCJlIiwibyIsIm1zZyIsImdldF9rZXkiLCJnZXRfa2V5X2NvcHkiLCJzZXRfa2V5IiwidW5zZXRfa2V5IiwiY2hlY2tfa2V5IiwiYmxpdF9rZXkiLCJlMSIsIm8xIiwiZTIiLCJvMiIsIlN0ZGxpYl9PYmoiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsWUFBQUMsU0FBQUMsR0N5QmtDLG1DQUFjO0FBQUEsWUFBQUMsYUFBQUMsR0FBQUMsR0FTUixvQ0FBcUM7QUFBQSxZQUFBQyxpQkFBQUYsR0FBQUMsR0FBQUU7QUFBQUEsSUFFM0U7QUFBQSxJQUF1QztBQUFBO0FBQUEsWUFBQUMsT0FBQUo7QUFBQUE7QUFBQUEsS0FBQUs7QUFBQUEsT0F3Q2hDO0FBQUEsVUFBZ0I7QUFBQTtBQUFBLEtBQUFDLGdDRDVFekI7QUFBQTtBQUFBO0FBQUEsS0NnRlMscUJBQW1CLGdDQUFBQyxPQUF5QztBQUFBLFNBQUFBLE9BQzFEO0FBQUE7QUFBQSxJQUVGO0FBQUE7QUFBQSxjQUNFLG1EQUF1QztBQUFBO0FBQUEsWUFBQUEsS0FBQUYsTUFHcEI7QUFBQSxZQUFBRyxHQUFBSCxNQUdBO0FBQUEsT0FBQUksa0JEMUY5QjtBQUFBLFlBQUFDLE9BQUFDO0FBQUFBLFFBQUEsSUN3R0k7QUFBQSxjQUNFO0FBQUEsSUFDRixrQ0FBUTtBQUFBO0FBQUEsWUFBQUMsT0FBQVosR0FFSyx3QkFBZ0M7QUFBQSxZQUFBYSx3QkFBQUMsR0FBQUMsR0FBQUM7QUFBQUEsUUFBQSxJQUc3QyxvQkFBc0IsbUJBQXRCO0FBQUEsZUFDRSw2QkFBZTtBQUFBO0FBQUEsWUFBQUMsUUFBQUgsR0FBQUM7QUFBQUEsSUFJakI7QUFBQSxJQUNBLHNDQUFXO0FBQUE7QUFBQSxZQUFBRyxhQUFBSixHQUFBQztBQUFBQSxJQUlYO0FBQUEsSUFDQSwyQ0FBZ0I7QUFBQTtBQUFBLFlBQUFJLFFBQUFMLEdBQUFDLEdBQUFmO0FBQUFBLElBSWhCO0FBQUEsSUFDQSx5Q0FBYTtBQUFBO0FBQUEsWUFBQW9CLFVBQUFOLEdBQUFDO0FBQUFBLElBSWI7QUFBQSxJQUNBLHdDQUFhO0FBQUE7QUFBQSxZQUFBTSxVQUFBUCxHQUFBQztBQUFBQSxJQUliO0FBQUEsSUFDQSx3Q0FBYTtBQUFBO0FBQUEsWUFBQU8sU0FBQUMsSUFBQUMsSUFBQUMsSUFBQUMsSUFBQWY7QUFBQUEsSUFNYjtBQUFBO0FBQUE7QUFBQTtBQUFBLFdBQTJCLHlDQUNOO0FBQUE7QUFBQSxVQUVoQjtBQUFBLGNBQWU7QUFBQSxLQUFmO0FBQUE7QUFBQSxJQURBLHFEQUNxQztBQUFBO0FBQUE7QUFBQSxJQUFBZ0I7QUFBQUEsTURsSjlDIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MTA0NDUsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9hdG9taWMubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgU3RlcGhlbiBEb2xhbiwgVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2UgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3LTIwMTggVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2UuICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4dGVybmFsIGlnbm9yZSA6ICdhIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG5tb2R1bGUgTG9jID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIGF0b21pY19sb2NcblxuICBleHRlcm5hbCBnZXQgOiAnYSB0IC0+ICdhID0gXCIlYXRvbWljX2xvYWRfbG9jXCJcbiAgZXh0ZXJuYWwgZXhjaGFuZ2UgOiAnYSB0IC0+ICdhIC0+ICdhID0gXCIlYXRvbWljX2V4Y2hhbmdlX2xvY1wiXG4gIGV4dGVybmFsIGNvbXBhcmVfYW5kX3NldCA6ICdhIHQgLT4gJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWF0b21pY19jYXNfbG9jXCJcbiAgZXh0ZXJuYWwgZmV0Y2hfYW5kX2FkZCA6IGludCB0IC0+IGludCAtPiBpbnQgPSBcIiVhdG9taWNfZmV0Y2hfYWRkX2xvY1wiXG5cbiAgbGV0IHNldCB0IHYgPVxuICAgIGlnbm9yZSAoZXhjaGFuZ2UgdCB2KVxuICBsZXQgaW5jciB0ID1cbiAgICBpZ25vcmUgKGZldGNoX2FuZF9hZGQgdCAxKVxuICBsZXQgZGVjciB0ID1cbiAgICBpZ25vcmUgKGZldGNoX2FuZF9hZGQgdCAoLTEpKVxuZW5kXG5cbnR5cGUgISdhIHQgPVxuICB7IG11dGFibGUgY29udGVudHM6ICdhIFtAYXRvbWljXTtcbiAgfVxuXG5sZXQgbWFrZSB2ID1cbiAgeyBjb250ZW50cyA9IHYgfVxuXG5leHRlcm5hbCBtYWtlX2NvbnRlbmRlZCA6ICdhIC0+ICdhIHQgPSBcImNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkXCJcblxubGV0IGdldCB0ID1cbiAgdC5jb250ZW50c1xubGV0IHNldCB0IHYgPVxuICB0LmNvbnRlbnRzIDwtIHZcblxubGV0IGV4Y2hhbmdlIHQgdiA9XG4gIExvYy5leGNoYW5nZSBbJWF0b21pYy5sb2MgdC5jb250ZW50c10gdlxubGV0IGNvbXBhcmVfYW5kX3NldCB0IG9sZCBuZXdfID1cbiAgTG9jLmNvbXBhcmVfYW5kX3NldCBbJWF0b21pYy5sb2MgdC5jb250ZW50c10gb2xkIG5ld19cbmxldCBmZXRjaF9hbmRfYWRkIHQgaW5jciA9XG4gIExvYy5mZXRjaF9hbmRfYWRkIFslYXRvbWljLmxvYyB0LmNvbnRlbnRzXSBpbmNyXG5sZXQgaW5jciB0ID1cbiAgTG9jLmluY3IgWyVhdG9taWMubG9jIHQuY29udGVudHNdXG5sZXQgZGVjciB0ID1cbiAgTG9jLmRlY3IgWyVhdG9taWMubG9jIHQuY29udGVudHNdXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfYXRvbWljX2V4Y2hhbmdlX2ZpZWxkIiwiY2FtbF9hdG9taWNfZmV0Y2hfYWRkX2ZpZWxkIiwic2V0IiwidCIsInYiLCJpbmNyIiwiZGVjciIsIm1ha2UiLCJnZXQiLCJleGNoYW5nZSIsImNvbXBhcmVfYW5kX3NldCIsIm9sZCIsIm5ldyQiLCJmZXRjaF9hbmRfYWRkIiwiU3RkbGliX0F0b21pYyJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyw2QkFBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsWUFBQUMsSUFBQUMsR0FBQUMsR0N5Qkksb0RBQXFCO0FBQUEsWUFBQUMsS0FBQUYsR0FFckIscURBQTBCO0FBQUEsWUFBQUcsS0FBQUgsR0FFMUIsc0RBQTZCO0FBQUEsWUFBQUksS0FBQUgsR0FRL0IsY0FBZ0I7QUFBQSxZQUFBSSxJQUFBTCxHQUtoQixZQUFVO0FBQUEsWUFBQUQsTUFBQUMsR0FBQUMsR0FFViw4Q0FBZTtBQUFBLFlBQUFLLFNBQUFOLEdBQUFDLEdBR2YsMENBQXVDO0FBQUEsWUFBQU0sZ0JBQUFQLEdBQUFRLEtBQUFDO0FBQUFBLElBRXZDLHFEQUFxRDtBQUFBO0FBQUEsWUFBQUMsY0FBQVYsR0FBQUU7QUFBQUEsSUFFckQsOENBQStDO0FBQUE7QUFBQSxZQUFBQSxPQUFBRixHQUUvQyxzQkFBaUM7QUFBQSxZQUFBRyxPQUFBSCxHQUVqQyxzQkFBaUM7QUFBQTtBQUFBLElBQUFXO0FBQUFBLE1EdkRuQyIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjEwNDg3LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvY2FtbGludGVybmFsTGF6eS5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogSW50ZXJuYWxzIG9mIGZvcmNpbmcgbGF6eSB2YWx1ZXMuICopXG5cbnR5cGUgJ2EgdCA9ICdhIGxhenlfdFxuXG5leGNlcHRpb24gVW5kZWZpbmVkXG5cbigqIFt1cGRhdGVfdG9fZm9yY2luZyBibGtdIHRyaWVzIHRvIHVwZGF0ZSBhIFtibGtdIHdpdGggW2xhenlfdGFnXSB0b1xuICAgW2ZvcmNpbmdfdGFnXSB1c2luZyBjb21wYXJlLWFuZC1zd2FwIChDQVMpLCB0YWtpbmcgY2FyZSB0byBoYW5kbGUgY29uY3VycmVudFxuICAgbWFya2luZyBvZiB0aGUgaGVhZGVyIHdvcmQgYnkgYSBjb25jdXJyZW50IEdDIHRocmVhZC4gUmV0dXJucyBbMF0gaWYgdGhlXG4gICBDQVMgaXMgc3VjY2Vzc2Z1bC4gSWYgdGhlIENBUyBmYWlscywgdGhlbiB0aGUgdGFnIHdhcyBvYnNlcnZlZCB0byBiZVxuICAgc29tZXRoaW5nIG90aGVyIHRoYW4gW2xhenlfdGFnXSBkdWUgdG8gYSBjb25jdXJyZW50IG11dGF0b3IuIEluIHRoaXMgY2FzZSxcbiAgIHRoZSBmdW5jdGlvbiByZXR1cm5zIFsxXS4gKilcbmV4dGVybmFsIHVwZGF0ZV90b19mb3JjaW5nIDogT2JqLnQgLT4gaW50ID1cbiAgXCJjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcmNpbmdcIiBbQEBub2FsbG9jXVxuXG4oKiBbcmVzZXRfdG9fbGF6eSBibGtdIGV4cGVjdHMgW2Jsa10gdG8gYmUgYSBsYXp5IG9iamVjdCB3aXRoIFtPYmouZm9yY2luZ190YWddXG4gICBhbmQgdXBkYXRlcyB0aGUgdGFnIHRvIFtPYmoubGF6eV90YWddLCB0YWtpbmcgY2FyZSB0byBoYW5kbGUgY29uY3VycmVudFxuICAgbWFya2luZyBvZiB0aGlzIG9iamVjdCdzIGhlYWRlciBieSBhIGNvbmN1cnJlbnQgR0MgdGhyZWFkLiAqKVxuZXh0ZXJuYWwgcmVzZXRfdG9fbGF6eSA6IE9iai50IC0+IHVuaXQgPSBcImNhbWxfbGF6eV9yZXNldF90b19sYXp5XCIgW0BAbm9hbGxvY11cblxuKCogW3VwZGF0ZV90b19mb3J3YXJkIGJsa10gZXhwZWN0cyBbYmxrXSB0byBiZSBhIGxhenkgb2JqZWN0IHdpdGhcbiAgIFtPYmouZm9yY2luZ190YWddIGFuZCB1cGRhdGVzIHRoZSB0YWcgdG8gW09iai5mb3J3YXJkX3RhZ10sIHRha2luZyBjYXJlIHRvXG4gICBoYW5kbGUgY29uY3VycmVudCBtYXJraW5nIG9mIHRoaXMgb2JqZWN0J3MgaGVhZGVyIGJ5IGEgY29uY3VycmVudCBHQyB0aHJlYWQuXG4gKilcbmV4dGVybmFsIHVwZGF0ZV90b19mb3J3YXJkIDogT2JqLnQgLT4gdW5pdCA9XG4gIFwiY2FtbF9sYXp5X3VwZGF0ZV90b19mb3J3YXJkXCIgW0BAbm9hbGxvY11cblxuKCogQXNzdW1lcyBbYmxrXSBpcyBhIGJsb2NrIHdpdGggdGFnIGZvcmNpbmcgKilcbmxldCBkb19mb3JjZV9ibG9jayBibGsgPVxuICBsZXQgYiA9IE9iai5yZXByIGJsayBpblxuICBsZXQgY2xvc3VyZSA9IChPYmoub2JqIChPYmouZmllbGQgYiAwKSA6IHVuaXQgLT4gJ2FyZykgaW5cbiAgT2JqLnNldF9maWVsZCBiIDAgKE9iai5yZXByICgpKTsgKCogUmVsZWFzZSB0aGUgY2xvc3VyZSAqKVxuICB0cnlcbiAgICBsZXQgcmVzdWx0ID0gY2xvc3VyZSAoKSBpblxuICAgIE9iai5zZXRfZmllbGQgYiAwIChPYmoucmVwciByZXN1bHQpO1xuICAgIHVwZGF0ZV90b19mb3J3YXJkIGI7XG4gICAgcmVzdWx0XG4gIHdpdGggZSAtPlxuICAgIE9iai5zZXRfZmllbGQgYiAwIChPYmoucmVwciAoZnVuICgpIC0+IHJhaXNlIGUpKTtcbiAgICByZXNldF90b19sYXp5IGI7XG4gICAgcmFpc2UgZVxuXG4oKiBBc3N1bWVzIFtibGtdIGlzIGEgYmxvY2sgd2l0aCB0YWcgZm9yY2luZyAqKVxubGV0IGRvX2ZvcmNlX3ZhbF9ibG9jayBibGsgPVxuICBsZXQgYiA9IE9iai5yZXByIGJsayBpblxuICBsZXQgY2xvc3VyZSA9IChPYmoub2JqIChPYmouZmllbGQgYiAwKSA6IHVuaXQgLT4gJ2FyZykgaW5cbiAgT2JqLnNldF9maWVsZCBiIDAgKE9iai5yZXByICgpKTsgKCogUmVsZWFzZSB0aGUgY2xvc3VyZSAqKVxuICBsZXQgcmVzdWx0ID0gY2xvc3VyZSAoKSBpblxuICBPYmouc2V0X2ZpZWxkIGIgMCAoT2JqLnJlcHIgcmVzdWx0KTtcbiAgdXBkYXRlX3RvX2ZvcndhcmQgYjtcbiAgcmVzdWx0XG5cbigqIENhbGxlZCBieSBbZm9yY2VfZ2VuXSAqKVxubGV0IGZvcmNlX2dlbl9sYXp5X2Jsb2NrIH5vbmx5X3ZhbCAoYmxrIDogJ2FyZyBsYXp5X3QpID1cbiAgKCogV2UgZXhwZWN0IHRoZSB0YWcgdG8gYmUgW2xhenlfdGFnXSwgYnV0IG1heSBiZSBvdGhlciB0YWdzIGR1ZSB0b1xuICAgICBjb25jdXJyZW50IGZvcmNpbmcgb2YgbGF6eSB2YWx1ZXMuICopXG4gIG1hdGNoIHVwZGF0ZV90b19mb3JjaW5nIChPYmoucmVwciBibGspIHdpdGhcbiAgfCAwIHdoZW4gb25seV92YWwgLT4gZG9fZm9yY2VfdmFsX2Jsb2NrIGJsa1xuICB8IDAgLT4gZG9fZm9yY2VfYmxvY2sgYmxrXG4gIHwgXyAtPiByYWlzZSBVbmRlZmluZWRcblxuKCogdXNlZCBpbiB0aGUgJWxhenlfZm9yY2UgcHJpbWl0aXZlICopXG5sZXQgZm9yY2VfbGF6eV9ibG9jayBibGsgPSBmb3JjZV9nZW5fbGF6eV9ibG9jayB+b25seV92YWw6ZmFsc2UgYmxrXG5cbigqIFtmb3JjZV9nZW4gfm9ubHlfdmFsOmZhbHNlXSBpcyBub3QgdXNlZCwgc2luY2UgW0xhenkuZm9yY2VdIGlzXG4gICBkZWNsYXJlZCBhcyBhIHByaW1pdGl2ZSB3aG9zZSBjb2RlIGlubGluZXMgdGhlIHRhZyB0ZXN0cyBvZiBpdHNcbiAgIGFyZ3VtZW50LCBleGNlcHQgd2hlbiBhZmwgaW5zdHJ1bWVudGF0aW9uIGlzIHR1cm5lZCBvbi4gKilcbmxldCBmb3JjZV9nZW4gfm9ubHlfdmFsIChsenYgOiAnYXJnIGxhenlfdCkgPVxuICAoKiBVc2luZyBbU3lzLm9wYXF1ZV9pZGVudGl0eV0gcHJldmVudHMgdHdvIHBvdGVudGlhbCBwcm9ibGVtczpcbiAgICAgLSBJZiB0aGUgdmFsdWUgaXMga25vd24gdG8gaGF2ZSBGb3J3YXJkX3RhZywgdGhlbiBpdCBjb3VsZCBoYXZlIGJlZW5cbiAgICAgICBzaG9ydGN1dCBkdXJpbmcgR0MsIHNvIHRoYXQgaW5mb3JtYXRpb24gbXVzdCBiZSBmb3Jnb3R0ZW4gKHNlZSBHUFIjNzEzXG4gICAgICAgYW5kIGlzc3VlICM3MzAxKS4gVGhpcyBpcyBub3QgYW4gaXNzdWUgaGVyZSBhdCB0aGUgbW9tZW50IHNpbmNlXG4gICAgICAgW09iai50YWddIGlzIG5vdCBzaW1wbGlmaWVkIGJ5IHRoZSBjb21waWxlciwgYW5kIEdQUiM3MTMgYWxzb1xuICAgICAgIGVuc3VyZXMgdGhhdCBubyB2YWx1ZSB3aWxsIGJlIGtub3duIHRvIGhhdmUgRm9yd2FyZF90YWcuXG4gICAgIC0gSWYgdGhlIHZhbHVlIGlzIGtub3duIHRvIGJlIGltbXV0YWJsZSwgdGhlbiBpZiB0aGUgY29tcGlsZXJcbiAgICAgICBjYW5ub3QgcHJvdmUgdGhhdCB0aGUgbGFzdCBicmFuY2ggaXMgbm90IHRha2VuIGl0IHdpbGwgaXNzdWUgYVxuICAgICAgIHdhcm5pbmcgNTkgKG1vZGlmaWNhdGlvbiBvZiBhbiBpbW11dGFibGUgdmFsdWUpICopXG4gIGxldCBsenYgPSBTeXMub3BhcXVlX2lkZW50aXR5IGx6diBpblxuICBsZXQgeCA9IE9iai5yZXByIGx6diBpblxuICAoKiBTVEFSVCBubyBzYWZlIHBvaW50cy4gSWYgYSBHQyBvY2N1cnMgaGVyZSwgdGhlbiB0aGUgb2JqZWN0IFt4XSBtYXkgYmVcbiAgICAgc2hvcnQtY2lyY3VpdGVkLCBhbmQgZ2V0dGluZyB0aGUgZmlyc3QgZmllbGQgb2YgW3hdIHdvdWxkIGdldCB1cyB0aGUgd3JvbmdcbiAgICAgdmFsdWUuIEx1Y2tpbHksIHRoZSBjb21waWxlciBkb2VzIG5vdCBpbnNlcnQgR0Mgc2FmZSBwb2ludHMgYXQgdGhpcyBwbGFjZSxcbiAgICAgc28gaXQgaXMgb2suICopXG4gIGxldCB0ID0gT2JqLnRhZyB4IGluXG4gIGlmIHQgPSBPYmouZm9yd2FyZF90YWcgdGhlblxuICAgIChPYmoub2JqIChPYmouZmllbGQgeCAwKSA6ICdhcmcpXG4gICgqIEVORCBubyBzYWZlIHBvaW50cyAqKVxuICBlbHNlIGlmIHQgPSBPYmouZm9yY2luZ190YWcgdGhlbiByYWlzZSBVbmRlZmluZWRcbiAgZWxzZSBpZiB0IDw+IE9iai5sYXp5X3RhZyB0aGVuIChPYmoub2JqIHggOiAnYXJnKVxuICBlbHNlIGZvcmNlX2dlbl9sYXp5X2Jsb2NrIH5vbmx5X3ZhbCBsenZcblxuKCogSWYgW2x6dl0gaXMgYWxyZWFkeSBmb3JjZWQsIHRoZW4gW2luZGlyZWN0IGx6dl0gaXMgW2x6dl0uXG4gICBPdGhlcndpc2UgaXQgcmV0dXJucyBhIGZyZXNoIHRodW5rIHRoYXQsIHdoZW4gZm9yY2VkLCB3aWxsIGZvcmNlIFtsenZdLlxuXG4gICBUaGlzIHByb3ZpZGVzIGEgd2F5IHRvIGNvcHkvbW92ZSBbbHp2XSB0aGF0IHdvcmtzIGNvcnJlY3RseSBldmVuIGlmXG4gICBbbHp2XSBpcyBiZWluZyBmb3JjZWQgY29uY3VycmVudGx5LlxuKilcbmxldCBpbmRpcmVjdCAobHp2IDogJ2FyZyBsYXp5X3QpID1cbiAgKCogU3lzLm9wYXF1ZV9pZGVudGl0eTogc2VlIFtmb3JjZV9nZW5dIGNvbW1lbnQgYWJvdmUuICopXG4gIGxldCBsenYgPSBTeXMub3BhcXVlX2lkZW50aXR5IGx6diBpblxuICBsZXQgeCA9IE9iai5yZXByIGx6diBpblxuICBsZXQgdCA9IE9iai50YWcgeCBpblxuICBpZiB0ID0gT2JqLmxhenlfdGFnIHx8IHQgPSBPYmouZm9yY2luZ190YWdcbiAgdGhlbiBsYXp5IChmb3JjZV9sYXp5X2Jsb2NrIGx6dilcbiAgZWxzZSBsenZcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9sYXp5X3VwZGF0ZV90b19mb3J3YXJkIiwiY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlIiwiY2FtbF9vYmpfdGFnIiwiY2FtbF93cmFwX2V4Y2VwdGlvbiIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJTdGRsaWJfT2JqIiwiVW5kZWZpbmVkIiwiZm9yY2VfZ2VuX2xhenlfYmxvY2siLCJvbmx5X3ZhbCIsImJsayIsImNsb3N1cmUiLCJyZXN1bHQiLCJlIiwicGFyYW0iLCJmb3JjZV9sYXp5X2Jsb2NrIiwiZm9yY2VfZ2VuIiwibHp2IiwidCIsImluZGlyZWN0Il0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsc0JBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUM7QUFBQUEsTUFBQTtBQUFBLFlBQUFDLHFCQUFBQyxVQUFBQztBQUFBQSxJQ3VFUTtBQUFBLEtBR0M7QUFBQSxJQUZFO0FBQUEsU0FBQUMsWUFaYztBQUFBLEtBQ3ZCO0FBQUEsU0FBQUMsV0FDYTtBQUFBLEtBQ2I7QUFBQSxLQUNBO0FBQUEsS0FBbUI7QUFBQTtBQUFBLFFBQUFELFVBbkJJO0FBQUEsSUFDdkI7QUFBQSxJQUErQjtBQUFBLFNBQUFDLFNBRWhCO0FBQUEsS0FDYjtBQUFBLEtBQ0E7QUFBQTtBQUFBO0FBQUEsVUFBQUM7QUFBQUEsU0FBQUEsSURsREo7QUFBQSxLQ3FESSxrQkFBQUMsT0FBdUMsd0NBQU87QUFBQSxLQUM5QztBQUFBLEtBQWU7QUFBQTtBQUFBLEdBb0JLO0FBQUEsWUFBQUMsaUJBQUFMLEtBR0csbUNBQXdDO0FBQUEsWUFBQU0sVUFBQVAsVUFBQVE7QUFBQUEsUUFBQUMsSUFxQnpEO0FBQUEsSUFDUix5QkFDMEI7QUFBQSxJQUVyQix3QkFBNEI7QUFBQSxJQUM1QixtQ0FDQSxtQ0FBa0M7QUFBQTtBQUFBLFlBQUFDLFNBQUFGO0FBQUFBLFFBQUFDLElBWS9CO0FBQUEsSUFDUiwrQ0FFSztBQUFBLElBREEseUJEdEhQLCtCQ3NITztBQUFBLEdBQ0c7QUFBQSxHRHZIViIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjEwNTUyLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvbGF6eS5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtMYXp5XTogZGVmZXJyZWQgY29tcHV0YXRpb25zICopXG5cblxuKCpcbiAgIFdBUk5JTkc6IHNvbWUgcHVycGxlIG1hZ2ljIGlzIGdvaW5nIG9uIGhlcmUuICBEbyBub3QgdGFrZSB0aGlzIGZpbGVcbiAgIGFzIGFuIGV4YW1wbGUgb2YgaG93IHRvIHByb2dyYW0gaW4gT0NhbWwuXG4qKVxuXG5cbigqIFdlIG1ha2UgdXNlIG9mIHR3byBzcGVjaWFsIHRhZ3MgcHJvdmlkZWQgYnkgdGhlIHJ1bnRpbWU6XG4gICBbbGF6eV90YWddIGFuZCBbZm9yd2FyZF90YWddLlxuXG4gICBBIHZhbHVlIG9mIHR5cGUgWydhIExhenkudF0gY2FuIGJlIG9uZSBvZiB0aHJlZSB0aGluZ3M6XG4gICAxLiBBIGJsb2NrIG9mIHNpemUgMSB3aXRoIHRhZyBbbGF6eV90YWddLiAgSXRzIGZpZWxkIGlzIGEgY2xvc3VyZSBvZlxuICAgICAgdHlwZSBbdW5pdCAtPiAnYV0gdGhhdCBjb21wdXRlcyB0aGUgdmFsdWUuXG4gICAyLiBBIGJsb2NrIG9mIHNpemUgMSB3aXRoIHRhZyBbZm9yd2FyZF90YWddLiAgSXRzIGZpZWxkIGlzIHRoZSB2YWx1ZVxuICAgICAgb2YgdHlwZSBbJ2FdIHRoYXQgd2FzIGNvbXB1dGVkLlxuICAgMy4gQW55dGhpbmcgZWxzZSBleGNlcHQgYSBmbG9hdC4gIFRoaXMgaGFzIHR5cGUgWydhXSBhbmQgaXMgdGhlIHZhbHVlXG4gICAgICB0aGF0IHdhcyBjb21wdXRlZC5cbiAgIEV4Y2VwdGlvbnMgYXJlIHN0b3JlZCBpbiBmb3JtYXQgKDEpLlxuICAgVGhlIEdDIHdpbGwgbWFnaWNhbGx5IGNoYW5nZSB0aGluZ3MgZnJvbSAoMikgdG8gKDMpIGFjY29yZGluZyB0byBpdHNcbiAgIGZhbmN5LlxuXG4gICBJZiBPQ2FtbCB3YXMgY29uZmlndXJlZCB3aXRoIHRoZSAtZmxhdC1mbG9hdC1hcnJheSBvcHRpb24gKHdoaWNoIGlzXG4gICBjdXJyZW50bHkgdGhlIGRlZmF1bHQpLCB0aGUgZm9sbG93aW5nIGlzIGFsc28gdHJ1ZTpcbiAgIFdlIGNhbm5vdCB1c2UgcmVwcmVzZW50YXRpb24gKDMpIGZvciBhIFtmbG9hdCBMYXp5LnRdIGJlY2F1c2VcbiAgIFtjYW1sX2FycmF5X21ha2VdIGFzc3VtZXMgdGhhdCBvbmx5IGEgW2Zsb2F0XSB2YWx1ZSBjYW4gaGF2ZSB0YWdcbiAgIFtEb3VibGVfdGFnXS5cblxuICAgV2UgaGF2ZSB0byB1c2UgdGhlIGJ1aWx0LWluIHR5cGUgY29uc3RydWN0b3IgW2xhenlfdF0gdG9cbiAgIGxldCB0aGUgY29tcGlsZXIgaW1wbGVtZW50IHRoZSBzcGVjaWFsIHR5cGluZyBhbmQgY29tcGlsYXRpb25cbiAgIHJ1bGVzIGZvciB0aGUgW2xhenldIGtleXdvcmQuXG4qKVxuXG50eXBlICdhIHQgPSAnYSBDYW1saW50ZXJuYWxMYXp5LnRcblxuZXhjZXB0aW9uIFVuZGVmaW5lZCA9IENhbWxpbnRlcm5hbExhenkuVW5kZWZpbmVkXG5leHRlcm5hbCBtYWtlX2ZvcndhcmQgOiAnYSAtPiAnYSBsYXp5X3QgPSBcImNhbWxfbGF6eV9tYWtlX2ZvcndhcmRcIlxuZXh0ZXJuYWwgZm9yY2UgOiAnYSB0IC0+ICdhID0gXCIlbGF6eV9mb3JjZVwiXG5cbmxldCBmb3JjZV92YWwgbCA9IENhbWxpbnRlcm5hbExhenkuZm9yY2VfZ2VuIH5vbmx5X3ZhbDp0cnVlIGxcblxubGV0IGZyb21fZnVuIChmIDogdW5pdCAtPiAnYXJnKSA9XG4gIGxldCB4ID0gT2JqLm5ld19ibG9jayBPYmoubGF6eV90YWcgMSBpblxuICBPYmouc2V0X2ZpZWxkIHggMCAoT2JqLnJlcHIgZik7XG4gIChPYmoub2JqIHggOiAnYXJnIHQpXG5cbmxldCBmcm9tX3ZhbCAodiA6ICdhcmcpID1cbiAgbGV0IHQgPSBPYmoudGFnIChPYmoucmVwciB2KSBpblxuICBpZiB0ID0gT2JqLmZvcndhcmRfdGFnIHx8IHQgPSBPYmoubGF6eV90YWcgfHxcbiAgICAgdCA9IE9iai5mb3JjaW5nX3RhZyB8fCB0ID0gT2JqLmRvdWJsZV90YWcgdGhlbiBiZWdpblxuICAgIG1ha2VfZm9yd2FyZCB2XG4gIGVuZCBlbHNlIGJlZ2luXG4gICAgKE9iai5tYWdpYyB2IDogJ2FyZyB0KVxuICBlbmRcblxubGV0IGlzX3ZhbCAobCA6ICdhcmcgdCkgPSBPYmoudGFnIChPYmoucmVwciBsKSA8PiBPYmoubGF6eV90YWdcblxubGV0IG1hcCBmIHggPVxuICBsYXp5IChmIChmb3JjZSB4KSlcblxubGV0IG1hcF92YWwgZiB4ID1cbiAgaWYgaXNfdmFsIHhcbiAgdGhlbiBmcm9tX3ZhbCAoZiAoZm9yY2UgeCkpXG4gIGVsc2UgbGF6eSAoZiAoZm9yY2UgeCkpXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfb2JqX3RhZyIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJnbG9iYWxfZGF0YSIsIkNhbWxpbnRlcm5hbExhenkiLCJTdGRsaWJfT2JqIiwiVW5kZWZpbmVkIiwiZm9yY2VfdmFsIiwibCIsImZyb21fZnVuIiwieCIsImZyb21fdmFsIiwidiIsInQiLCJpc192YWwiLCJtYXAiLCJwYXJhbSIsIm1hcF92YWwiXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBLHlCQUFBQyxlQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLFlBQUE7QUFBQSxZQUFBQyxVQUFBQyxHQ3VEa0IsMkNBQTJDO0FBQUEsWUFBQUMsU0FBQVI7QUFBQUEsUUFBQVMsSUFHbkQ7QUFBQSxJQUNSO0FBQUEsSUFBOEI7QUFBQSxHQUNWO0FBQUEsWUFBQUMsU0FBQUM7QUFBQUEsUUFBQUMsSUFHWjtBQUFBLElBQ1I7QUFBQTtBQUFBO0FBQUEsS0FJRztBQUFBLElBSCtDLHdDQUkvQztBQUFBO0FBQUEsWUFBQUMsT0FBQU47QUFBQUEsUUFBQSxJQUVxQjtBQUFBLHdDQUFvQjtBQUFBLEdBQWdCO0FBQUEsWUFBQU8sSUFBQWQsR0FBQVM7QUFBQUEsSUFHNUQ7QUFBQSxxQkFBQU07QUFBQUEsaUJBQUEsSUQxRUY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsY0MwRUU7QUFBQSxHQUFrQjtBQUFBLFlBQUFDLFFBQUFoQixHQUFBUztBQUFBQSxJQUdmO0FBQUEsS0FFRTtBQUFBLHNCQUFBTTtBQUFBQSxrQkFBQSxJRC9FUDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxlQytFTztBQUFBLFlBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQVMsT0FBYSxTQUFiLGlCQUNTO0FBQUE7QUFBQSxHRC9FekIiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjoxMDYzMywiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL3NlcS5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICBTaW1vbiBDcnVhbmVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtTZXFdOiBmdW5jdGlvbmFsIGl0ZXJhdG9ycyAqKVxuXG50eXBlICsnYSBub2RlID1cbiAgfCBOaWxcbiAgfCBDb25zIG9mICdhICogJ2EgdFxuXG5hbmQgJ2EgdCA9IHVuaXQgLT4gJ2Egbm9kZVxuXG5sZXQgZW1wdHkgKCkgPSBOaWxcblxubGV0IHJldHVybiB4ICgpID0gQ29ucyAoeCwgZW1wdHkpXG5cbmxldCBjb25zIHggbmV4dCAoKSA9IENvbnMgKHgsIG5leHQpXG5cbmxldCBzaW5nbGV0b24geCAoKSA9IENvbnMgKHgsIGVtcHR5KVxuXG5sZXQgcmVjIGFwcGVuZCBzZXExIHNlcTIgKCkgPVxuICBtYXRjaCBzZXExKCkgd2l0aFxuICB8IE5pbCAtPiBzZXEyKClcbiAgfCBDb25zICh4LCBuZXh0KSAtPiBDb25zICh4LCBhcHBlbmQgbmV4dCBzZXEyKVxuXG5sZXQgcmVjIG1hcCBmIHNlcSAoKSA9IG1hdGNoIHNlcSgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gQ29ucyAoZiB4LCBtYXAgZiBuZXh0KVxuXG5sZXQgcmVjIGZpbHRlcl9tYXAgZiBzZXEgKCkgPSBtYXRjaCBzZXEoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcCBmIG5leHQgKClcbiAgICAgICAgfCBTb21lIHkgLT4gQ29ucyAoeSwgZmlsdGVyX21hcCBmIG5leHQpXG5cbmxldCByZWMgZmlsdGVyIGYgc2VxICgpID0gbWF0Y2ggc2VxKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgaWYgZiB4XG4gICAgICB0aGVuIENvbnMgKHgsIGZpbHRlciBmIG5leHQpXG4gICAgICBlbHNlIGZpbHRlciBmIG5leHQgKClcblxubGV0IHJlYyBmaWx0ZXJpX2F1eCBmIGkgc2VxICgpID0gbWF0Y2ggc2VxKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgbGV0IGknID0gaSArIDEgaW5cbiAgICAgIGlmIGYgaSB4XG4gICAgICB0aGVuIENvbnMgKHgsIGZpbHRlcmlfYXV4IGYgaScgbmV4dClcbiAgICAgIGVsc2UgZmlsdGVyaV9hdXggZiBpJyBuZXh0ICgpXG5cbmxldFtAaW5saW5lXSBmaWx0ZXJpIGYgc2VxICgpID1cbiAgZmlsdGVyaV9hdXggZiAwIHNlcSAoKVxuXG5sZXQgcmVjIGNvbmNhdCBzZXEgKCkgPSBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICBhcHBlbmQgeCAoY29uY2F0IG5leHQpICgpXG5cbmxldCByZWMgZmxhdF9tYXAgZiBzZXEgKCkgPSBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgIGFwcGVuZCAoZiB4KSAoZmxhdF9tYXAgZiBuZXh0KSAoKVxuXG5sZXQgY29uY2F0X21hcCA9IGZsYXRfbWFwXG5cbmxldCByZWMgZm9sZF9sZWZ0IGYgYWNjIHNlcSA9XG4gIG1hdGNoIHNlcSAoKSB3aXRoXG4gICAgfCBOaWwgLT4gYWNjXG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBsZXQgYWNjID0gZiBhY2MgeCBpblxuICAgICAgICBmb2xkX2xlZnQgZiBhY2MgbmV4dFxuXG5sZXQgcmVjIGl0ZXIgZiBzZXEgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICAgIHwgTmlsIC0+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+XG4gICAgICAgIHMgOj0geHM7XG4gICAgICAgIFNvbWUgeFxuXG5cblxubGV0IHJlYyBpbnRzIGkgKCkgPVxuICBDb25zIChpLCBpbnRzIChpICsgMSkpXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJjYW1sX2NhbGwzIiwiYTIiLCJnbG9iYWxfZGF0YSIsIkFzc2VydF9mYWlsdXJlIiwiU3RkbGliX0F0b21pYyIsIkNhbWxpbnRlcm5hbExhenkiLCJTdGRsaWIiLCJTdGRsaWJfTGF6eSIsImVtcHR5IiwicGFyYW0iLCJyZXR1cm4kIiwieCIsImNvbnMiLCJuZXh0Iiwic2luZ2xldG9uIiwiYXBwZW5kIiwic2VxMSIsInNlcTIiLCJtYXRjaCIsIm1hcCIsInNlcSIsImZpbHRlcl9tYXAiLCJ5IiwiZmlsdGVyIiwiZmlsdGVyaV9hdXgiLCJpIiwiZmlsdGVyaSIsImNvbmNhdCIsImZsYXRfbWFwIiwiZm9sZF9sZWZ0IiwiYWNjIiwiaXRlciIsInVuZm9sZCIsInUiLCJpc19lbXB0eSIsInhzIiwidW5jb25zIiwibGVuZ3RoIiwiYWNjdSIsIml0ZXJpIiwiZm9sZF9sZWZ0aSIsImZvcl9hbGwiLCJwIiwiZXhpc3RzIiwiZmluZCIsImZpbmRfaW5kZXgiLCJmaW5kX21hcCIsInJlc3VsdCIsImZpbmRfbWFwaSIsIml0ZXIyIiwieXMiLCJmb2xkX2xlZnQyIiwiZm9yX2FsbDIiLCJleGlzdHMyIiwiZXF1YWwiLCJlcSIsImNvbXBhcmUiLCJjbXAiLCJjIiwiaW5pdF9hdXgiLCJqIiwiaW5pdCIsIm4iLCJyZXBlYXQiLCJmb3JldmVyIiwiY3ljbGVfbm9uZW1wdHkiLCJjeWNsZSIsIml0ZXJhdGUxIiwiaXRlcmF0ZSIsIm1hcGlfYXV4IiwibWFwaSIsInRhaWxfc2NhbiIsInMiLCJzY2FuIiwidGFrZV9hdXgiLCJ0YWtlIiwiZHJvcCIsInRha2Vfd2hpbGUiLCJkcm9wX3doaWxlIiwibm9kZSIsImdyb3VwIiwiRm9yY2VkX3R3aWNlIiwidG9fbGF6eSIsImZhaWx1cmUiLCJtZW1vaXplIiwib25jZSIsImFjdGlvbiIsInppcCIsIm1hcDIiLCJpbnRlcmxlYXZlIiwic29ydGVkX21lcmdlMSIsInNvcnRlZF9tZXJnZSIsIm1hcF9mc3QiLCJ4eXMiLCJtYXBfc25kIiwidW56aXAiLCJmaWx0ZXJfbWFwX2ZpbmRfbGVmdF9tYXAiLCJmaWx0ZXJfbWFwX2ZpbmRfcmlnaHRfbWFwIiwieiIsInBhcnRpdGlvbl9tYXAiLCJwYXJ0aXRpb24iLCJwZWVsIiwieHNzIiwidHJhbnNwb3NlIiwidGFpbHMiLCJoZWFkcyIsInJlbWFpbmRlcnMiLCJtYXBfcHJvZHVjdCIsInByb2R1Y3QiLCJvZl9kaXNwZW5zZXIiLCJpdCIsInRvX2Rpc3BlbnNlciIsImludHMiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFKLEdBQUFDLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxpQkFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLFlBQUFDLE1BQUFDLE9DdUJlLFNBQUc7QUFBQSxZQUFBQyxRQUFBQyxHQUFBRixPQUVBLHFCQUFlO0FBQUEsWUFBQUcsS0FBQUQsR0FBQUUsTUFBQUosT0FFWixvQkFBYztBQUFBLFlBQUFLLFVBQUFILEdBQUFGLE9BRWQscUJBQWU7QUFBQSxZQUFBTSxPQUFBQyxNQUFBQyxNQUFBUjtBQUFBQSxRQUFBUyxRQUc1QjtBQUFBLElBQU0sWUFDSCwwQkFDcUM7QUFBQSxRQUFBTCxPQUZsQyxVQUFBRixJQUFBO0FBQUEsSUFFaUMsMEJBQWhCLCtCQUFnQjtBQUFBLEdBQUM7QUFBQSxZQUFBUSxJQUFBdkIsR0FBQXdCLEtBQUFYO0FBQUFBLFFBQUFTLFFBRW5CO0FBQUEsSUFBSyxZQUN2QjtBQUFBLFFBQUFMLE9BRHVCLFVBQUFGLElBQUE7QUFBQSxJQUVOLHlDQUFLLHlCQUFGO0FBQUEsR0FBYTtBQUFBLFlBQUFVLFdBQUF6QixHQUFBd0IsT0FBQVg7QUFBQUEsUUFBQVcsTUFFZDtBQUFBO0FBQUEsU0FBQUYsUUFBTTtBQUFBLEtBQUssWUFDOUI7QUFBQSxTQUFBTCxPQUQ4QixV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cmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjoxMTM0MiwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL29wdGlvbi5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnYSB0ID0gJ2Egb3B0aW9uID0gTm9uZSB8IFNvbWUgb2YgJ2FcblxubGV0IG5vbmUgPSBOb25lXG5sZXQgc29tZSB2ID0gU29tZSB2XG5sZXQgdmFsdWUgbyB+ZGVmYXVsdCA9IG1hdGNoIG8gd2l0aCBTb21lIHYgLT4gdiB8IE5vbmUgLT4gZGVmYXVsdFxubGV0IGdldCA9IGZ1bmN0aW9uIFNvbWUgdiAtPiB2IHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBcIm9wdGlvbiBpcyBOb25lXCJcbmxldCBiaW5kIG8gZiA9IG1hdGNoIG8gd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHYgLT4gZiB2XG5sZXQgam9pbiA9IGZ1bmN0aW9uIFNvbWUgbyAtPiBvIHwgTm9uZSAtPiBOb25lXG5sZXQgbWFwIGYgbyA9IG1hdGNoIG8gd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHYgLT4gU29tZSAoZiB2KVxubGV0IGZvbGQgfm5vbmUgfnNvbWUgPSBmdW5jdGlvbiBTb21lIHYgLT4gc29tZSB2IHwgTm9uZSAtPiBub25lXG5sZXQgaXRlciBmID0gZnVuY3Rpb24gU29tZSB2IC0+IGYgdiB8IE5vbmUgLT4gKClcbmxldCBpc19ub25lID0gZnVuY3Rpb24gTm9uZSAtPiB0cnVlIHwgU29tZSBfIC0+IGZhbHNlXG5sZXQgaXNfc29tZSA9IGZ1bmN0aW9uIE5vbmUgLT4gZmFsc2UgfCBTb21lIF8gLT4gdHJ1ZVxuXG5sZXQgZXF1YWwgZXEgbzAgbzEgPSBtYXRjaCBvMCwgbzEgd2l0aFxufCBTb21lIHYwLCBTb21lIHYxIC0+IGVxIHYwIHYxXG58IE5vbmUsIE5vbmUgLT4gdHJ1ZVxufCBfIC0+IGZhbHNlXG5cbmxldCBjb21wYXJlIGNtcCBvMCBvMSA9IG1hdGNoIG8wLCBvMSB3aXRoXG58IFNvbWUgdjAsIFNvbWUgdjEgLT4gY21wIHYwIHYxXG58IE5vbmUsIE5vbmUgLT4gMFxufCBOb25lLCBTb21lIF8gLT4gLTFcbnwgU29tZSBfLCBOb25lIC0+IDFcblxubGV0IHRvX3Jlc3VsdCB+bm9uZSA9IGZ1bmN0aW9uIE5vbmUgLT4gRXJyb3Igbm9uZSB8IFNvbWUgdiAtPiBPayB2XG5sZXQgdG9fbGlzdCA9IGZ1bmN0aW9uIE5vbmUgLT4gW10gfCBTb21lIHYgLT4gW3ZdXG5sZXQgdG9fc2VxID0gZnVuY3Rpb24gTm9uZSAtPiBTZXEuZW1wdHkgfCBTb21lIHYgLT4gU2VxLnJldHVybiB2XG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYl9TZXEiLCJTdGRsaWIiLCJzb21lIiwidiIsInZhbHVlIiwibyIsImRlZmF1bHQkIiwiZ2V0IiwicGFyYW0iLCJiaW5kIiwiam9pbiIsIm1hcCIsImZvbGQiLCJub25lIiwiaXRlciIsImlzX25vbmUiLCJpc19zb21lIiwiZXF1YWwiLCJlcSIsIm8wIiwibzEiLCJ2MSIsInYwIiwiY29tcGFyZSIsImNtcCIsInRvX3Jlc3VsdCIsInRvX2xpc3QiLCJ0b19zZXEiXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLFlBQUFDLEtBQUFDLEdDa0JhLGNBQU07QUFBQSxZQUFBQyxNQUFBQyxHQUFBQztBQUFBQSxJQUNJLFFBQW1DO0FBQUEsUUFBQUgsSUFBbkM7QUFBQSxJQUF1QjtBQUFBLEdBQW1CO0FBQUEsWUFBQUksSUFBQUM7QUFBQUEsSUFDdkQsWUFBK0IsNkNBQTRCO0FBQUEsUUFBQUwsSUFBM0Q7QUFBQSxJQUFtQjtBQUFBLEdBQXdDO0FBQUEsWUFBQU0sS0FBQUosR0FBQVY7QUFBQUEsSUFDdEQsUUFBcUI7QUFBQSxRQUFBUSxJQUFyQjtBQUFBLElBQXNDLHVCQUFHO0FBQUE7QUFBQSxZQUFBTyxLQUFBRixPQUM3QyxZQUErQixjQUFBSCxJQUEvQixVQUFtQixTQUFnQjtBQUFBLFlBQUFNLElBQUFoQixHQUFBVTtBQUFBQSxJQUNoQyxRQUFxQjtBQUFBLFFBQUFGLElBQXJCO0FBQUEsSUFBMkMsNEJBQUs7QUFBQTtBQUFBLFlBQUFTLEtBQUFDLE1BQUFYLE1BQUFNO0FBQUFBLElBQ3JELFlBQWtEO0FBQUEsUUFBQUwsSUFBbEQ7QUFBQSxJQUFpQywwQkFBcUI7QUFBQTtBQUFBLFlBQUFXLEtBQUFuQixHQUFBYTtBQUFBQSxJQUN0RCxZQUFxQztBQUFBLFFBQUFMLElBQXJDO0FBQUEsSUFBdUIsdUJBQWdCO0FBQUE7QUFBQSxZQUFBWSxRQUFBUCxPQUNsQyxvQkFBdUM7QUFBQSxZQUFBUSxRQUFBUixPQUN2QyxvQkFBdUM7QUFBQSxZQUFBUyxNQUFBQyxJQUFBQyxJQUFBQztBQUFBQSxJQUVoQztBQUFBLGdCQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FDQyw2QkFFVjtBQUFBO0FBQUEsa0JBREk7QUFBQSxJQUNUO0FBQUEsR0FBSztBQUFBLFlBQUFDLFFBQUFDLEtBQUFMLElBQUFDO0FBQUFBLElBRVksMkJBSUw7QUFBQSxRQUFBRSxLQUpLO0FBQUEsYUFJTjtBQUFBLFFBQUFELEtBSk07QUFBQSxJQUNGLDhCQUdIO0FBQUE7QUFBQSxZQUFBSSxVQUFBWixNQUFBTDtBQUFBQSxJQUVMLFlBQXlCO0FBQUEsUUFBQUwsSUFBekI7QUFBQSxJQUFnRDtBQUFBLEdBQUk7QUFBQSxZQUFBdUIsUUFBQWxCO0FBQUFBLElBQ3BELFlBQWlCO0FBQUEsUUFBQUwsSUFBakI7QUFBQSxJQUFnQztBQUFBLEdBQUc7QUFBQSxZQUFBd0IsT0FBQW5CO0FBQUFBLElBQ3BDLFlBQWlCO0FBQUEsUUFBQUwsSUFBakIsY0FBdUM7QUFBQSx1QkQxQ3BELGdCQzBDb0Q7QUFBQSxHQUFZO0FBQUEsR0QxQ2hFIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MTE0NDksImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9yZXN1bHQubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgKCdhLCAnZSkgdCA9ICgnYSwgJ2UpIHJlc3VsdCA9IE9rIG9mICdhIHwgRXJyb3Igb2YgJ2VcblxubGV0IG9rIHYgPSBPayB2XG5sZXQgZXJyb3IgZSA9IEVycm9yIGVcbmxldCB2YWx1ZSByIH5kZWZhdWx0ID0gbWF0Y2ggciB3aXRoIE9rIHYgLT4gdiB8IEVycm9yIF8gLT4gZGVmYXVsdFxubGV0IGdldF9vayA9IGZ1bmN0aW9uIE9rIHYgLT4gdiB8IEVycm9yIF8gLT4gaW52YWxpZF9hcmcgXCJyZXN1bHQgaXMgRXJyb3IgX1wiXG5sZXQgZ2V0X29rJyA9IGZ1bmN0aW9uIE9rIHYgLT4gdiB8IEVycm9yIGUgLT4gaW52YWxpZF9hcmcgZVxubGV0IGdldF9lcnJvciA9IGZ1bmN0aW9uIEVycm9yIGUgLT4gZSB8IE9rIF8gLT4gaW52YWxpZF9hcmcgXCJyZXN1bHQgaXMgT2sgX1wiXG5sZXQgZXJyb3JfdG9fZmFpbHVyZSA9IGZ1bmN0aW9uIE9rIHYgLT4gdiB8IEVycm9yIGUgLT4gZmFpbHdpdGggZVxubGV0IGJpbmQgciBmID0gbWF0Y2ggciB3aXRoIE9rIHYgLT4gZiB2IHwgRXJyb3IgXyBhcyBlIC0+IGVcbmxldCBqb2luID0gZnVuY3Rpb24gT2sgciAtPiByIHwgRXJyb3IgXyBhcyBlIC0+IGVcbmxldCBtYXAgZiA9IGZ1bmN0aW9uIE9rIHYgLT4gT2sgKGYgdikgfCBFcnJvciBfIGFzIGUgLT4gZVxubGV0IHByb2R1Y3QgcjAgcjEgPSBtYXRjaCByMCwgcjEgd2l0aFxufCAoRXJyb3IgXyBhcyByKSwgX1xufCBfLCAoRXJyb3IgXyBhcyByKSAtPiByXG58IE9rIHYwLCBPayB2MSAtPiBPayAodjAsIHYxKVxuXG5sZXQgbWFwX2Vycm9yIGYgPSBmdW5jdGlvbiBFcnJvciBlIC0+IEVycm9yIChmIGUpIHwgT2sgXyBhcyB2IC0+IHZcbmxldCBmb2xkIH5vayB+ZXJyb3IgPSBmdW5jdGlvbiBPayB2IC0+IG9rIHYgfCBFcnJvciBlIC0+IGVycm9yIGVcbmxldCByZXRyYWN0ID0gZnVuY3Rpb24gT2sgdiAtPiB2IHwgRXJyb3IgdiAtPiB2XG5sZXQgaXRlciBmID0gZnVuY3Rpb24gT2sgdiAtPiBmIHYgfCBFcnJvciBfIC0+ICgpXG5sZXQgaXRlcl9lcnJvciBmID0gZnVuY3Rpb24gRXJyb3IgZSAtPiBmIGUgfCBPayBfIC0+ICgpXG5sZXQgaXNfb2sgPSBmdW5jdGlvbiBPayBfIC0+IHRydWUgfCBFcnJvciBfIC0+IGZhbHNlXG5sZXQgaXNfZXJyb3IgPSBmdW5jdGlvbiBFcnJvciBfIC0+IHRydWUgfCBPayBfIC0+IGZhbHNlXG5cbmxldCBlcXVhbCB+b2sgfmVycm9yIHIwIHIxID0gbWF0Y2ggcjAsIHIxIHdpdGhcbnwgT2sgdjAsIE9rIHYxIC0+IG9rIHYwIHYxXG58IEVycm9yIGUwLCBFcnJvciBlMSAtPiBlcnJvciBlMCBlMVxufCBfLCBfIC0+IGZhbHNlXG5cbmxldCBjb21wYXJlIH5vayB+ZXJyb3IgcjAgcjEgPSBtYXRjaCByMCwgcjEgd2l0aFxufCBPayB2MCwgT2sgdjEgLT4gb2sgdjAgdjFcbnwgRXJyb3IgZTAsIEVycm9yIGUxIC0+IGVycm9yIGUwIGUxXG58IE9rIF8sIEVycm9yIF8gLT4gLTFcbnwgRXJyb3IgXywgT2sgXyAtPiAxXG5cbmxldCB0b19vcHRpb24gPSBmdW5jdGlvbiBPayB2IC0+IFNvbWUgdiB8IEVycm9yIF8gLT4gTm9uZVxubGV0IHRvX2xpc3QgPSBmdW5jdGlvbiBPayB2IC0+IFt2XSB8IEVycm9yIF8gLT4gW11cbmxldCB0b19zZXEgPSBmdW5jdGlvbiBPayB2IC0+IFNlcS5yZXR1cm4gdiB8IEVycm9yIF8gLT4gU2VxLmVtcHR5XG5cbm1vZHVsZSBTeW50YXggPSBzdHJ1Y3RcbiAgbGV0ICggbGV0KiApID0gYmluZFxuICBsZXQgKCBhbmQqICkgPSBwcm9kdWN0XG4gIGxldCAoIGxldCsgKSByIGYgPSBtYXAgZiByXG4gIGxldCAoIGFuZCsgKSA9IHByb2R1Y3RcbmVuZFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWJfU2VxIiwiU3RkbGliIiwib2siLCJ2IiwiZXJyb3IiLCJlIiwidmFsdWUiLCJyIiwiZGVmYXVsdCQiLCJnZXRfb2siLCJwYXJhbSIsImdldF9lcnJvciIsImVycm9yX3RvX2ZhaWx1cmUiLCJiaW5kIiwiam9pbiIsIm1hcCIsInByb2R1Y3QiLCJyMCIsInIxIiwidjAiLCJ2MSIsIm1hcF9lcnJvciIsImZvbGQiLCJyZXRyYWN0IiwiaXRlciIsIml0ZXJfZXJyb3IiLCJpc19vayIsImlzX2Vycm9yIiwiZXF1YWwiLCJlMCIsImUxIiwiY29tcGFyZSIsInRvX29wdGlvbiIsInRvX2xpc3QiLCJ0b19zZXEiLCJsZXQkIl0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxZQUFBQyxHQUFBQyxHQ2lCVyxjQUFJO0FBQUEsWUFBQUMsTUFBQUMsR0FDRCxjQUFPO0FBQUEsWUFBQUMsTUFBQUMsR0FBQUM7QUFBQUEsSUFDRSxlQUFvQztBQUFBLFFBQUFMLElBQXBDO0FBQUEsSUFBcUI7QUFBQSxHQUFzQjtBQUFBLFlBQUFNLE9BQUFDO0FBQUFBLElBQ3JELG1CQUFnQyxnREFBK0I7QUFBQSxRQUFBUCxJQUEvRDtBQUFBLElBQWlCO0FBQUEsR0FBOEM7QUFBQSxZQUFBTSxTQUFBQztBQUFBQSxJQUM5RCx1QkFBQVAsSUFBQSxVQUFpQjtBQUFBLFFBQUFFLElBQWpCO0FBQUEsSUFBZ0MsOEJBQWE7QUFBQTtBQUFBLFlBQUFNLFVBQUFEO0FBQUFBLElBQzNDLG1CQUFnQyw2Q0FBNEI7QUFBQSxRQUFBTCxJQUE1RDtBQUFBLElBQW9CO0FBQUEsR0FBd0M7QUFBQSxZQUFBTyxpQkFBQUY7QUFBQUEsSUFDckQsdUJBQUFQLElBQUEsVUFBaUI7QUFBQSxRQUFBRSxJQUFqQjtBQUFBLElBQWdDLDhCQUFVO0FBQUE7QUFBQSxZQUFBUSxLQUFBTixHQUFBWjtBQUFBQSxJQUNsRCxlQUEyQztBQUFBLFFBQUFRLElBQTNDO0FBQUEsSUFBcUIsdUJBQXVCO0FBQUE7QUFBQSxZQUFBVyxLQUFBVCxHQUNoRCxlQUFxQyxjQUFBRSxJQUFyQyxNQUFpQixTQUFxQjtBQUFBLFlBQUFRLElBQUFwQixHQUFBVTtBQUFBQSxJQUN6QyxlQUFnRDtBQUFBLFFBQUFGLElBQWhEO0FBQUEsSUFBd0IsNEJBQUs7QUFBQSxHQUFvQjtBQUFBLFlBQUFhLFFBQUFDLElBQUFDO0FBQUFBLElBQ3JDO0FBQUEsU0FBQUMsS0FBQTtBQUFBLHlCQUFBQyxLQUFBLE9BR0Y7QUFBQSxTQUFBYixJQUhFO0FBQUE7QUFBQTtBQUFBLFNBQUFBLElBQUE7QUFBQSxJQUVHO0FBQUEsR0FDTTtBQUFBLFlBQUFjLFVBQUExQixHQUFBUTtBQUFBQSxJQUVmLGVBQW1EO0FBQUEsUUFBQUUsSUFBbkQ7QUFBQSxJQUE4Qiw0QkFBSztBQUFBLEdBQWlCO0FBQUEsWUFBQWlCLEtBQUFwQixJQUFBRSxPQUFBTTtBQUFBQSxJQUN6RCx1QkFBQVAsSUFBQSxVQUE4Qix3QkFBeUI7QUFBQSxRQUFBRSxJQUF2RDtBQUFBLElBQWdELDJCQUFPO0FBQUE7QUFBQSxZQUFBa0IsUUFBQWI7QUFBQUEsSUFDbEQsdUJBQUFQLElBQUEsVUFBaUI7QUFBQSxRQUFBQSxNQUFqQjtBQUFBLElBQWdDO0FBQUEsR0FBQztBQUFBLFlBQUFxQixLQUFBN0IsR0FBQWU7QUFBQUEsSUFDdEMsbUJBQXNDO0FBQUEsUUFBQVAsSUFBdEM7QUFBQSxJQUFxQix1QkFBbUI7QUFBQTtBQUFBLFlBQUFzQixXQUFBOUIsR0FBQWU7QUFBQUEsSUFDbEMsbUJBQXNDO0FBQUEsUUFBQUwsSUFBdEM7QUFBQSxJQUF3Qix1QkFBZ0I7QUFBQTtBQUFBLFlBQUFxQixNQUFBaEIsT0FDM0MsNkJBQXdDO0FBQUEsWUFBQWlCLFNBQUFqQixPQUNyQyw2QkFBd0M7QUFBQSxZQUFBa0IsTUFBQTFCLElBQUFFLE9BQUFhLElBQUFDO0FBQUFBLElBRTFCO0FBQUEsU0FBQUMsS0FBQTtBQUFBLHlCQUFBQyxLQUFBLE9BQ1gsNkJBRUg7QUFBQTtBQUFBO0FBQUEsU0FBQVMsS0FIYztBQUFBLHlCQUFBQyxLQUFBLE9BRUwsZ0NBQ1Q7QUFBQTtBQUFBLElBQUw7QUFBQSxHQUFLO0FBQUEsWUFBQUMsUUFBQTdCLElBQUFFLE9BQUFhLElBQUFDO0FBQUFBLElBRWdCO0FBQUEsU0FBQUMsS0FBQTtBQUFBLHFCQUdaO0FBQUEsU0FBQUMsS0FIWTtBQUFBLEtBQ2IsNkJBR0U7QUFBQTtBQUFBLFFBQUFTLEtBSlc7QUFBQSxvQkFJWjtBQUFBLFFBQUFDLEtBSlk7QUFBQSxJQUVQLGdDQUVKO0FBQUE7QUFBQSxZQUFBRSxVQUFBdEI7QUFBQUEsSUFFSixtQkFBcUM7QUFBQSxRQUFBUCxJQUFyQztBQUFBLElBQWlCO0FBQUEsR0FBd0I7QUFBQSxZQUFBOEIsUUFBQXZCO0FBQUFBLElBQzNDLG1CQUFrQztBQUFBLFFBQUFQLElBQWxDO0FBQUEsSUFBaUI7QUFBQSxHQUFtQjtBQUFBLFlBQUErQixPQUFBeEI7QUFBQUEsSUFDckMsbUJBQTJDO0FBQUEsUUFBQVAsSUFBM0MsY0FBaUI7QUFBQSx1QkRyRDlCLGdCQ3FEOEI7QUFBQSxHQUFtQztBQUFBLFlBQUFnQyxLQUFBNUIsR0FBQVosR0FLNUMsZ0JBQU87QUFBQSxHRDFENUIiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjoxMTYxNiwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL2NoYXIubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIENoYXJhY3RlciBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGNvZGU6IGNoYXIgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgdW5zYWZlX2NocjogaW50IC0+IGNoYXIgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBjaHIgbiA9XG4gIGlmIG4gPCAwIHx8IG4gPiAyNTUgdGhlbiBpbnZhbGlkX2FyZyBcIkNoYXIuY2hyXCIgZWxzZSB1bnNhZmVfY2hyIG5cblxuZXh0ZXJuYWwgYnl0ZXNfY3JlYXRlOiBpbnQgLT4gYnl0ZXMgPSBcImNhbWxfY3JlYXRlX2J5dGVzXCJcbmV4dGVybmFsIGJ5dGVzX3Vuc2FmZV9zZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3RvX3N0cmluZyA6IGJ5dGVzIC0+IHN0cmluZyA9IFwiJWJ5dGVzX3RvX3N0cmluZ1wiXG5cbmxldCBlc2NhcGVkID0gZnVuY3Rpb25cbiAgfCAnXFwnJyAtPiBcIlxcXFwnXCJcbiAgfCAnXFxcXCcgLT4gXCJcXFxcXFxcXFwiXG4gIHwgJ1xcbicgLT4gXCJcXFxcblwiXG4gIHwgJ1xcdCcgLT4gXCJcXFxcdFwiXG4gIHwgJ1xccicgLT4gXCJcXFxcclwiXG4gIHwgJ1xcYicgLT4gXCJcXFxcYlwiXG4gIHwgJyAnIC4uICd+JyBhcyBjIC0+XG4gICAgICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSAxIGluXG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMCBjO1xuICAgICAgdW5zYWZlX3RvX3N0cmluZyBzXG4gIHwgYyAtPlxuICAgICAgbGV0IG4gPSBjb2RlIGMgaW5cbiAgICAgIGxldCBzID0gYnl0ZXNfY3JlYXRlIDQgaW5cbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAwICdcXFxcJztcbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAxICh1bnNhZmVfY2hyICg0OCArIG4gLyAxMDApKTtcbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAyICh1bnNhZmVfY2hyICg0OCArIChuIC8gMTApIG1vZCAxMCkpO1xuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDMgKHVuc2FmZV9jaHIgKDQ4ICsgbiBtb2QgMTApKTtcbiAgICAgIHVuc2FmZV90b19zdHJpbmcgc1xuXG5sZXQgbG93ZXJjYXNlX2FzY2lpID0gZnVuY3Rpb25cbiAgfCAnQScgLi4gJ1onIGFzIGMgLT4gdW5zYWZlX2Nocihjb2RlIGMgKyAzMilcbiAgfCBjIC0+IGNcblxubGV0IHVwcGVyY2FzZV9hc2NpaSA9IGZ1bmN0aW9uXG4gIHwgJ2EnIC4uICd6JyBhcyBjIC0+IHVuc2FmZV9jaHIoY29kZSBjIC0gMzIpXG4gIHwgYyAtPiBjXG5cbnR5cGUgdCA9IGNoYXJcblxubGV0IGNvbXBhcmUgYzEgYzIgPSBjb2RlIGMxIC0gY29kZSBjMlxubGV0IGVxdWFsIChjMTogdCkgKGMyOiB0KSA9IGNvbXBhcmUgYzEgYzIgPSAwXG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoX3BhcmFtIDpcbiAgaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gaW50ID0gXCJjYW1sX2hhc2hcIiBbQEBub2FsbG9jXVxubGV0IHNlZWRlZF9oYXNoIHNlZWQgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBzZWVkIHhcbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgMCB4XG5cbm1vZHVsZSBBc2NpaSA9IHN0cnVjdFxuXG4gICgqIENoYXJhY3RlcnMgKilcblxuICBsZXQgbWluID0gJ1xceDAwJ1xuICBsZXQgbWF4ID0gJ1xceDdGJ1xuXG4gICgqIFByZWRpY2F0ZXMgKilcblxuICBsZXQgaXNfdmFsaWQgPSBmdW5jdGlvbiAnXFx4MDAnIC4uICdcXHg3RicgLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcbiAgbGV0IGlzX3VwcGVyID0gZnVuY3Rpb24gJ0EnIC4uICdaJyAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuICBsZXQgaXNfbG93ZXIgPSBmdW5jdGlvbiAnYScgLi4gJ3onIC0+IHRydWUgfCBfIC0+IGZhbHNlXG4gIGxldCBpc19sZXR0ZXIgPSBmdW5jdGlvbiAnQScgLi4gJ1onIHwgJ2EnIC4uICd6JyAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuICBsZXQgaXNfYWxwaGFudW0gPSBmdW5jdGlvblxuICAgIHwgJzAnIC4uICc5JyB8ICdBJyAuLiAnWicgfCAnYScgLi4gJ3onIC0+IHRydWUgfCBfIC0+IGZhbHNlXG5cbiAgbGV0IGlzX3doaXRlID0gZnVuY3Rpb24gJyAnIHwgJ1xcdCcgLi4gJ1xccicgIC0+IHRydWUgfCBfIC0+IGZhbHNlXG4gIGxldCBpc19ibGFuayA9IGZ1bmN0aW9uICcgJyB8ICdcXHQnIC0+IHRydWUgfCBfIC0+IGZhbHNlXG4gIGxldCBpc19ncmFwaGljID0gZnVuY3Rpb24gJyEnIC4uICd+JyAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuICBsZXQgaXNfcHJpbnQgPSBmdW5jdGlvbiAnICcgLi4gJ34nIC0+IHRydWUgfCBfIC0+IGZhbHNlXG4gIGxldCBpc19jb250cm9sID0gZnVuY3Rpb24gJ1xceDAwJyAuLiAnXFx4MUYnIHwgJ1xceDdGJyAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuXG4gICgqIERlY2ltYWwgZGlnaXRzICopXG5cbiAgbGV0IGlzX2RpZ2l0ID0gZnVuY3Rpb24gJzAnIC4uICc5JyAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuICBsZXQgZGlnaXRfdG9faW50ID0gZnVuY3Rpb25cbiAgICB8ICcwJyAuLiAnOScgYXMgYyAtPiBjb2RlIGMgLSAweDMwXG4gICAgfCBjIC0+IGludmFsaWRfYXJnIChlc2NhcGVkIGMgXiBcIjogbm90IGEgZGVjaW1hbCBkaWdpdFwiKVxuXG4gIGxldCBkaWdpdF9vZl9pbnQgbiA9IHVuc2FmZV9jaHIgKDB4MzAgKyBhYnMgKG4gbW9kIDEwKSlcblxuICAoKiBIZXhhZGVjaW1hbCBkaWdpdHMgKilcblxuICBsZXQgaXNfaGV4X2RpZ2l0ID0gZnVuY3Rpb25cbiAgICB8ICcwJyAuLiAnOScgfCAnQScgLi4gJ0YnIHwgJ2EnIC4uICdmJyAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG5cbiAgbGV0IGhleF9kaWdpdF90b19pbnQgPSBmdW5jdGlvblxuICAgIHwgJzAnIC4uICc5JyBhcyBjIC0+IGNvZGUgYyAtIDB4MzBcbiAgICB8ICdBJyAuLiAnRicgYXMgYyAtPiAxMCArIGNvZGUgYyAtIDB4NDFcbiAgICB8ICdhJyAuLiAnZicgYXMgYyAtPiAxMCArIGNvZGUgYyAtIDB4NjFcbiAgICB8IGMgLT4gaW52YWxpZF9hcmcgKGVzY2FwZWQgYyBeIFwiOiBub3QgYSBoZXhhZGVjaW1hbCBkaWdpdFwiKVxuXG4gIGxldCBsb3dlcl9oZXhfZGlnaXRfb2ZfaW50IG4gPVxuICAgIGxldCBkID0gYWJzIChuIG1vZCAxNikgaW5cbiAgICB1bnNhZmVfY2hyIChpZiBkIDwgMTAgdGhlbiAweDMwICsgZCBlbHNlIDB4NTcgKyBkKVxuXG4gIGxldCB1cHBlcl9oZXhfZGlnaXRfb2ZfaW50IG4gPVxuICAgIGxldCBkID0gYWJzIChuIG1vZCAxNikgaW5cbiAgICB1bnNhZmVfY2hyIChpZiBkIDwgMTAgdGhlbiAweDMwICsgZCBlbHNlIDB4MzcgKyBkKVxuXG4gICgqIENhc2luZyB0cmFuc2Zvcm1zICopXG5cbiAgbGV0IGxvd2VyY2FzZSA9IGxvd2VyY2FzZV9hc2NpaVxuICBsZXQgdXBwZXJjYXNlID0gdXBwZXJjYXNlX2FzY2lpXG5lbmRcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9ieXRlc191bnNhZmVfc2V0IiwiY2FtbF9jcmVhdGVfYnl0ZXMiLCJjYW1sX2hhc2giLCJjYW1sX3N0cmluZ19vZl9ieXRlcyIsIlN0ZGxpYiIsImNociIsIm4iLCJlc2NhcGVkIiwiYyIsInMiLCJsb3dlcmNhc2VfYXNjaWkiLCJ1cHBlcmNhc2VfYXNjaWkiLCJjb21wYXJlIiwiYzEiLCJjMiIsImVxdWFsIiwic2VlZGVkX2hhc2giLCJzZWVkIiwieCIsImhhc2giLCJpc192YWxpZCIsInBhcmFtIiwiaXNfdXBwZXIiLCJpc19sb3dlciIsImlzX2xldHRlciIsImlzX2FscGhhbnVtIiwiaXNfd2hpdGUiLCJpc19ibGFuayIsImlzX2dyYXBoaWMiLCJpc19wcmludCIsImlzX2NvbnRyb2wiLCJpc19kaWdpdCIsImRpZ2l0X3RvX2ludCIsImRpZ2l0X29mX2ludCIsImlzX2hleF9kaWdpdCIsImhleF9kaWdpdF90b19pbnQiLCJsb3dlcl9oZXhfZGlnaXRfb2ZfaW50IiwiZCIsInVwcGVyX2hleF9kaWdpdF9vZl9pbnQiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsd0JBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLFlBQUE7QUFBQSxJQUFBQyx1QkFBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxZQUFBQyxJQUFBQztBQUFBQSxJQ3FCRSx1QkFBcUQ7QUFBQSxJQUE1Qix1Q0FBd0M7QUFBQTtBQUFBLFlBQUFDLFFBQUFDO0FBQUFBO0FBQUFBO0FBQUFBLEtBT3JEO0FBQUEsbUJBRUY7QUFBQSxNQUZFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsVUFNRjtBQUFBO0FBQUEsVUFGQTtBQUFBO0FBQUEsVUFEQTtBQUFBO0FBQUEsVUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BTEUsWUFDRjtBQUFBO0FBQUEsU0FBQUMsTUFPRTtBQUFBLEtBQ1I7QUFBQSxLQUNBLGdDQVFrQjtBQUFBO0FBQUEsUUFBQUEsSUFMVjtBQUFBLElBQ1I7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBLDhCQUFrQjtBQUFBO0FBQUEsWUFBQUMsZ0JBQUFGLEdBRUYseUNBRVo7QUFBQSxZQUFBRyxnQkFBQUgsR0FFWSx5Q0FFWjtBQUFBLFlBQUFJLFFBQUFDLElBQUFDLElBSVUsbUJBQWlCO0FBQUEsWUFBQUMsTUFBQUYsSUFBQUMsSUFDSSxtQ0FBSTtBQUFBLFlBQUFFLFlBQUFDLE1BQUFDLEdBSXBCLGtDQUErQjtBQUFBLFlBQUFDLEtBQUFELEdBQzNDLCtCQUE0QjtBQUFBLFlBQUFFLFNBQUFDLE9BV3hCLDJCQUE4QztBQUFBLFlBQUFDLFNBQUFELE9BQzlDLG9DQUF3QztBQUFBLFlBQUFFLFNBQUFGLE9BQ3hDLG9DQUF3QztBQUFBLFlBQUFHLFVBQUFIO0FBQUFBO0FBQUFBO0FBQUFBLEtBQ3ZDO0FBQUE7QUFBQTtBQUFBO0FBQUEsS0FBb0M7QUFBQTtBQUFBLElBQVk7QUFBQSxHQUFLO0FBQUEsWUFBQUksWUFBQUo7QUFBQUEsUUFBQSxJQUNuRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEtBQzBCO0FBQUE7QUFBQSxJQUFZO0FBQUEsR0FBSztBQUFBLFlBQUFLLFNBQUFMO0FBQUFBO0FBQUFBO0FBQUFBLEtBRTlDO0FBQUEsS0FBZ0M7QUFBQTtBQUFBLElBQVk7QUFBQSxHQUFLO0FBQUEsWUFBQU0sU0FBQU47QUFBQUEsSUFDakQsZ0NBQW1DO0FBQUEsSUFBWjtBQUFBLEdBQWlCO0FBQUEsWUFBQU8sV0FBQVAsT0FDdEMsb0NBQXdDO0FBQUEsWUFBQVEsU0FBQVIsT0FDMUMsb0NBQXdDO0FBQUEsWUFBQVMsV0FBQVQ7QUFBQUEsSUFDdEMsaUNBQWtEO0FBQUEsSUFBWjtBQUFBLEdBQWlCO0FBQUEsWUFBQVUsU0FBQVYsT0FJekQsbUNBQXdDO0FBQUEsWUFBQVcsYUFBQXhCO0FBQUFBLElBQ3BDLHNCQUNJO0FBQUEsWUFDRCxnQkFBRDtBQUFBLElBQXFDO0FBQUE7QUFBQSxZQUFBeUIsYUFBQTNCO0FBQUFBLElBRWxCLGlEQUFjO0FBQUEsR0FBQztBQUFBLFlBQUE0QixhQUFBYjtBQUFBQSxRQUFBLElBSXBDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsS0FDeUI7QUFBQTtBQUFBLElBQ25DO0FBQUEsR0FBSztBQUFBLFlBQUFjLGlCQUFBM0I7QUFBQUEsSUFFUztBQUFBO0FBQUEsa0JBR0E7QUFBQTtBQUFBLHFCQURBO0FBQUE7QUFBQSwrQkFEQTtBQUFBO0FBQUEsU0FHRDtBQUFBLFNBQUQ7QUFBQSxJQUF5QztBQUFBO0FBQUEsWUFBQTRCLHVCQUFBOUI7QUFBQUEsUUFBQStCLElBR3BEO0FBQUEsSUFDUix3Q0FBa0Q7QUFBQTtBQUFBLFlBQUFDLHVCQUFBaEM7QUFBQUEsUUFBQStCLElBRzFDO0FBQUEsSUFDUix3Q0FBa0Q7QUFBQTtBQUFBLEdEbkh0RCIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjExNzk3LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvdWNoYXIubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgIERhbmllbCBDLiBCdWVuemxpICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4dGVybmFsIGZvcm1hdF9pbnQgOiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfaW50XCJcblxubGV0IGVycl9ub19wcmVkID0gXCJVKzAwMDAgaGFzIG5vIHByZWRlY2Vzc29yXCJcbmxldCBlcnJfbm9fc3VjYyA9IFwiVSsxMEZGRkYgaGFzIG5vIHN1Y2Nlc3NvclwiXG5sZXQgZXJyX25vdF9zdiBpID0gZm9ybWF0X2ludCBcIiVYXCIgaSBeIFwiIGlzIG5vdCBhIFVuaWNvZGUgc2NhbGFyIHZhbHVlXCJcbmxldCBlcnJfbm90X2xhdGluMSB1ID0gXCJVK1wiIF4gZm9ybWF0X2ludCBcIiUwNFhcIiB1IF4gXCIgaXMgbm90IGEgbGF0aW4xIGNoYXJhY3RlclwiXG5cbnR5cGUgdCA9IGludFxuXG5sZXQgbWluID0gMHgwMDAwXG5sZXQgbWF4ID0gMHgxMEZGRkZcbmxldCBsb19ib3VuZCA9IDB4RDdGRlxubGV0IGhpX2JvdW5kID0gMHhFMDAwXG5cbmxldCBib20gPSAweEZFRkZcbmxldCByZXAgPSAweEZGRkRcblxubGV0IHN1Y2MgdSA9XG4gIGlmIHUgPSBsb19ib3VuZCB0aGVuIGhpX2JvdW5kIGVsc2VcbiAgaWYgdSA9IG1heCB0aGVuIGludmFsaWRfYXJnIGVycl9ub19zdWNjIGVsc2VcbiAgdSArIDFcblxubGV0IHByZWQgdSA9XG4gIGlmIHUgPSBoaV9ib3VuZCB0aGVuIGxvX2JvdW5kIGVsc2VcbiAgaWYgdSA9IG1pbiB0aGVuIGludmFsaWRfYXJnIGVycl9ub19wcmVkIGVsc2VcbiAgdSAtIDFcblxubGV0IGlzX3ZhbGlkIGkgPSAobWluIDw9IGkgJiYgaSA8PSBsb19ib3VuZCkgfHwgKGhpX2JvdW5kIDw9IGkgJiYgaSA8PSBtYXgpXG5sZXQgb2ZfaW50IGkgPSBpZiBpc192YWxpZCBpIHRoZW4gaSBlbHNlIGludmFsaWRfYXJnIChlcnJfbm90X3N2IGkpXG5leHRlcm5hbCB1bnNhZmVfb2ZfaW50IDogaW50IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB0b19pbnQgOiB0IC0+IGludCA9IFwiJWlkZW50aXR5XCJcblxubGV0IGlzX2NoYXIgdSA9IHUgPCAyNTZcbmxldCBvZl9jaGFyIGMgPSBDaGFyLmNvZGUgY1xubGV0IHRvX2NoYXIgdSA9XG4gIGlmIHUgPiAyNTUgdGhlbiBpbnZhbGlkX2FyZyAoZXJyX25vdF9sYXRpbjEgdSkgZWxzZVxuICBDaGFyLnVuc2FmZV9jaHIgdVxuXG5sZXQgdW5zYWZlX3RvX2NoYXIgPSBDaGFyLnVuc2FmZV9jaHJcblxubGV0IGVxdWFsIDogaW50IC0+IGludCAtPiBib29sID0gKCA9IClcbmxldCBjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQgPSBTdGRsaWIuY29tcGFyZVxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuXG4oKiBVVEYgY29kZWNzIHRvb2xzICopXG5cbnR5cGUgdXRmX2RlY29kZSA9IGludFxuKCogVGhpcyBpcyBhbiBpbnQgWzB4RFVVVVVVVV0gZGVjb21wb3NlZCBhcyBmb2xsb3dzOlxuICAgLSBbRF0gaXMgZm91ciBiaXRzIGZvciBkZWNvZGUgaW5mb3JtYXRpb24sIHRoZSBoaWdoZXN0IGJpdCBpcyBzZXQgaWYgdGhlXG4gICAgIGRlY29kZSBpcyB2YWxpZC4gVGhlIHRocmVlIGxvd2VyIGJpdHMgaW5kaWNhdGUgdGhlIG51bWJlciBvZiBlbGVtZW50c1xuICAgICBmcm9tIHRoZSBzb3VyY2UgdGhhdCB3ZXJlIGNvbnN1bWVkIGJ5IHRoZSBkZWNvZGUuXG4gICAtIFtVVVVVVVVdIGlzIHRoZSBkZWNvZGVkIFVuaWNvZGUgY2hhcmFjdGVyIG9yIHRoZSBVbmljb2RlIHJlcGxhY2VtZW50XG4gICAgIGNoYXJhY3RlciBVK0ZGRkQgaWYgZm9yIGludmFsaWQgZGVjb2Rlcy4gKilcblxubGV0IHZhbGlkX2JpdCA9IDI3XG5sZXQgZGVjb2RlX2JpdHMgPSAyNFxuXG5sZXRbQGlubGluZV0gdXRmX2RlY29kZV9pc192YWxpZCBkID0gKGQgbHNyIHZhbGlkX2JpdCkgPSAxXG5sZXRbQGlubGluZV0gdXRmX2RlY29kZV9sZW5ndGggZCA9IChkIGxzciBkZWNvZGVfYml0cykgbGFuZCAwYjExMVxubGV0W0BpbmxpbmVdIHV0Zl9kZWNvZGVfdWNoYXIgZCA9IHVuc2FmZV9vZl9pbnQgKGQgbGFuZCAweEZGRkZGRilcbmxldFtAaW5saW5lXSB1dGZfZGVjb2RlIG4gdSA9ICgoOCBsb3IgbikgbHNsIGRlY29kZV9iaXRzKSBsb3IgKHRvX2ludCB1KVxubGV0W0BpbmxpbmVdIHV0Zl9kZWNvZGVfaW52YWxpZCBuID0gKG4gbHNsIGRlY29kZV9iaXRzKSBsb3IgcmVwXG5cbmxldCB1dGZfOF9kZWNvZGVfbGVuZ3RoX29mX2J5dGUgPSBmdW5jdGlvblxuICB8ICdcXHgwMCcgLi4gJ1xceDdGJyAtPiAxXG4gIHwgJ1xceDgwJyAuLiAnXFx4QzEnIC0+IDBcbiAgfCAnXFx4QzInIC4uICdcXHhERicgLT4gMlxuICB8ICdcXHhFMCcgLi4gJ1xceEVGJyAtPiAzXG4gIHwgJ1xceEYwJyAuLiAnXFx4RjQnIC0+IDRcbiAgfCBfIC0+IDBcblxubGV0IG1heF91dGZfOF9kZWNvZGVfbGVuZ3RoID0gNFxuXG5sZXQgdXRmXzhfYnl0ZV9sZW5ndGggdSA9IG1hdGNoIHRvX2ludCB1IHdpdGhcbnwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxufCB1IHdoZW4gdSA8PSAweDAwN0YgLT4gMVxufCB1IHdoZW4gdSA8PSAweDA3RkYgLT4gMlxufCB1IHdoZW4gdSA8PSAweEZGRkYgLT4gM1xufCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPiA0XG58IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCB1dGZfMTZfYnl0ZV9sZW5ndGggdSA9IG1hdGNoIHRvX2ludCB1IHdpdGhcbnwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxufCB1IHdoZW4gdSA8PSAweEZGRkYgLT4gMlxufCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPiA0XG58IF8gLT4gYXNzZXJ0IGZhbHNlXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfZm9ybWF0X2ludCIsImNhbWxfaGFzaCIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImdsb2JhbF9kYXRhIiwiQXNzZXJ0X2ZhaWx1cmUiLCJTdGRsaWIiLCJzdWNjIiwidSIsInByZWQiLCJpc192YWxpZCIsImkiLCJvZl9pbnQiLCJpc19jaGFyIiwib2ZfY2hhciIsImMiLCJ0b19jaGFyIiwidW5zYWZlX3RvX2NoYXIiLCJlcXVhbCIsImNvbXBhcmUiLCJzZWVkZWRfaGFzaCIsInNlZWQiLCJ4IiwiaGFzaCIsInV0Zl9kZWNvZGVfaXNfdmFsaWQiLCJkIiwidXRmX2RlY29kZV9sZW5ndGgiLCJ1dGZfZGVjb2RlX3VjaGFyIiwidXRmX2RlY29kZSIsIm4iLCJ1dGZfZGVjb2RlX2ludmFsaWQiLCJ1dGZfOF9kZWNvZGVfbGVuZ3RoX29mX2J5dGUiLCJwYXJhbSIsImNzdF91Y2hhcl9tbCIsInV0Zl84X2J5dGVfbGVuZ3RoIiwidXRmXzE2X2J5dGVfbGVuZ3RoIiwiU3RkbGliX1VjaGFyIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLGtCQUFBO0FBQUEsSUFBQUMsWUFBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLFlBQUFDLEtBQUFDO0FBQUFBLElDaUNFO0FBQUE7QUFBQTtBQUFBO0FBQUEsZ0JBQ2dCO0FBQUEseUJBQ1g7QUFBQTtBQUFBLFlBQUFDLEtBQUFEO0FBQUFBLElBR0w7QUFBQTtBQUFBO0FBQUE7QUFBQSxnQkFDZ0I7QUFBQSx5QkFDWDtBQUFBO0FBQUEsWUFBQUUsU0FBQUM7QUFBQUEsUUFBQSxJQUVVO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEdBQTBEO0FBQUEsWUFBQUMsT0FBQUQ7QUFBQUEsSUFDekQsZ0JBQWdCO0FBQUE7QUFBQTtBQUFBLE9BeEJFO0FBQUEsZUFBakI7QUFBQSxJQXdCZ0Q7QUFBQTtBQUFBLFlBQUFFLFFBQUFMLEdBSW5ELHVCQUFPO0FBQUEsWUFBQU0sUUFBQUMsR0FDUCxTQUFXO0FBQUEsWUFBQUMsUUFBQVI7QUFBQUEsSUFFekIsYUFDQTtBQUFBO0FBQUE7QUFBQSxPQS9CNEI7QUFBQTtBQUFBLFNBQWtEO0FBQUEsSUE4QmhDLDhCQUM3QjtBQUFBO0FBQUEsWUFBQVMsZUFBQSxHRG5EbkI7QUFBQSxZQUFBQyxNQUFBO0FBQUEsT0FBQUMsVUFBQTtBQUFBLFlBQUFDLFlBQUFDLE1BQUFDLEdDNER5QixrQ0FBK0I7QUFBQSxZQUFBQyxLQUFBRCxHQUMzQywrQkFBNEI7QUFBQSxZQUFBRSxvQkFBQUMsR0FlSixvQ0FBcUI7QUFBQSxZQUFBQyxrQkFBQUQsR0FDdkIsMEJBQThCO0FBQUEsWUFBQUUsaUJBQUFGLEdBQy9CLG9CQUErQjtBQUFBLFlBQUFHLFdBQUFDLEdBQUFyQixHQUNuQyx5QkFBMEM7QUFBQSxZQUFBc0IsbUJBQUFELEdBQ3BDLHVCQUEyQjtBQUFBLFlBQUFFLDRCQUFBQztBQUFBQSxJQUU3QjtBQUFBO0FBQUEsa0NBTXhCO0FBQUE7QUFBQTtBQUFBLElBQUFDLGVEeEZWO0FBQUE7QUFBQTtBQUFBLFlBQUFDLGtCQUFBMUI7QUFBQUEsSUM2RlMsVUFBUztBQUFBLElBQ1QsYUFBZTtBQUFBLElBQ2YsY0FBZTtBQUFBLElBQ2YsZUFBZTtBQUFBLElBQ2Y7QUFBQSxLQUNGO0FBQUEsSUFEbUI7QUFBQSxHQUNQO0FBQUEsV0RsR25CO0FBQUEsWUFBQTJCLG1CQUFBM0I7QUFBQUEsSUNxR1MsVUFBUztBQUFBLElBQ1QsZUFBZTtBQUFBLElBQ2Y7QUFBQSxLQUNGO0FBQUEsSUFEbUI7QUFBQSxHQUNQO0FBQUE7QUFBQSxJQUFBNEI7QUFBQUEsTUR4R25CIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MTE5MjQsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9saXN0Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBbiBhbGlhcyBmb3IgdGhlIHR5cGUgb2YgbGlzdHMuICopXG50eXBlICdhIHQgPSAnYSBsaXN0ID0gW10gfCAoOjopIG9mICdhICogJ2EgbGlzdFxuXG4oKiBMaXN0IG9wZXJhdGlvbnMgKilcblxubGV0IHJlYyBsZW5ndGhfYXV4IGxlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gbGVuXG4gIHwgXzo6bCAtPiBsZW5ndGhfYXV4IChsZW4gKyAxKSBsXG5cbmxldCBsZW5ndGggbCA9IGxlbmd0aF9hdXggMCBsXG5cbmxldCBjb25zIGEgbCA9IGE6OmxcblxubGV0IHNpbmdsZXRvbiBhID0gW2FdXG5cbmxldCBoZCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFpbHdpdGggXCJoZFwiXG4gIHwgYTo6XyAtPiBhXG5cbmxldCB0bCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFpbHdpdGggXCJ0bFwiXG4gIHwgXzo6bCAtPiBsXG5cbmxldCBudGggbCBuID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkxpc3QubnRoXCIgZWxzZVxuICBsZXQgcmVjIG50aF9hdXggbCBuID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+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+IFtdXG4gIHwgeDo6eHMgLT4gcHJlcGVuZF9jb25jYXRfbWFwIChmIHgpIGYgeHNcbmFuZFtAdGFpbF9tb2RfY29uc10gcHJlcGVuZF9jb25jYXRfbWFwIHlzIGYgeHMgPVxuICBtYXRjaCB5cyB3aXRoXG4gIHwgW10gLT4gY29uY2F0X21hcCBmIHhzXG4gIHwgeSA6OiB5cyAtPiB5IDo6IHByZXBlbmRfY29uY2F0X21hcCB5cyBmIHhzXG5cbmxldCB0YWtlIG4gbCA9XG4gIGxldFtAdGFpbF9tb2RfY29uc10gcmVjIGF1eCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMCwgXyB8IF8sIFtdIC0+IFtdXG4gICAgfCBuLCB4OjpsIC0+IHg6OmF1eCAobiAtIDEpIGxcbiAgaW5cbiAgaWYgbiA8PSAwIHRoZW4gW10gZWxzZSBhdXggbiBsXG5cbmxldCBkcm9wIG4gbCA9XG4gIGxldCByZWMgYXV4IGkgPSBmdW5jdGlvblxuICAgIHwgX3g6Omwgd2hlbiBpIDwgbiAtPiBhdXggKGkgKyAxKSBsXG4gICAgfCByZXN0IC0+IHJlc3RcbiAgaW5cbiAgaWYgbiA8PSAwIHRoZW4gbCBlbHNlIGF1eCAwIGxcblxubGV0IHRha2Vfd2hpbGUgcCBsID1cbiAgbGV0W0B0YWlsX21vZF9jb25zXSByZWMgYXV4ID0gZnVuY3Rpb25cbiAgICB8IHg6Omwgd2hlbiBwIHggLT4geDo6YXV4IGxcbiAgICB8IF9yZXN0IC0+IFtdXG4gIGluXG4gIGF1eCBsXG5cbmxldCByZWMgZHJvcF93aGlsZSBwID0gZnVuY3Rpb25cbiAgfCB4OjpsIHdoZW4gcCB4IC0+IGRyb3Bfd2hpbGUgcCBsXG4gIHwgcmVzdCAtPiByZXN0XG5cbmxldCBmb2xkX2xlZnRfbWFwIGYgYWNjdSBsID1cbiAgbGV0IHJlYyBhdXggYWNjdSBsX2FjY3UgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjdSwgcmV2IGxfYWNjdVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIGxldCBhY2N1LCB4ID0gZiBhY2N1IHggaW5cbiAgICAgICAgYXV4IGFjY3UgKHggOjogbF9hY2N1KSBsIGluXG4gIGF1eCBhY2N1IFtdIGxcblxubGV0IHBhcnRpdGlvbiBwIGwgPVxuICBsZXQgcmVjIHBhcnQgeWVzIG5vID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAocmV2IHllcywgcmV2IG5vKVxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiBwYXJ0ICh4IDo6IHllcykgbm8gbCBlbHNlIHBhcnQgeWVzICh4IDo6IG5vKSBsIGluXG4gIHBhcnQgW10gW10gbFxuXG5sZXQgcGFydGl0aW9uX21hcCBwIGwgPVxuICBsZXQgcmVjIHBhcnQgbGVmdCByaWdodCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKHJldiBsZWZ0LCByZXYgcmlnaHQpXG4gIHwgeCA6OiBsIC0+XG4gICAgIGJlZ2luIG1hdGNoIHAgeCB3aXRoXG4gICAgICAgfCBFaXRoZXIuTGVmdCB2IC0+IHBhcnQgKHYgOjogbGVmdCkgcmlnaHQgbFxuICAgICAgIHwgRWl0aGVyLlJpZ2h0IHYgLT4gcGFydCBsZWZ0ICh2IDo6IHJpZ2h0KSBsXG4gICAgIGVuZFxuICBpblxuICBwYXJ0IFtdIFtdIGxcblxubGV0IHJlYyBzcGxpdCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKFtdLCBbXSlcbiAgfCAoeCx5KTo6bCAtPlxuICAgICAgbGV0IChyeCwgcnkpID0gc3BsaXQgbCBpbiAoeDo6cngsIHk6OnJ5KVxuXG5sZXQgcmVjIGNvbWJpbmUgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gW11cbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IChhMSwgYTIpIDo6IGNvbWJpbmUgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmNvbWJpbmVcIlxuXG4oKiogc29ydGluZyAqKVxuXG5sZXQgcmVjIG1lcmdlIGNtcCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIGwyIC0+IGwyXG4gIHwgbDEsIFtdIC0+IGwxXG4gIHwgaDEgOjogdDEsIGgyIDo6IHQyIC0+XG4gICAgICBpZiBjbXAgaDEgaDIgPD0gMFxuICAgICAgdGhlbiBoMSA6OiBtZXJnZSBjbXAgdDEgbDJcbiAgICAgIGVsc2UgaDIgOjogbWVyZ2UgY21wIGwxIHQyXG5cblxubGV0IHN0YWJsZV9zb3J0IGNtcCBsID1cbiAgbGV0IHJlYyByZXZfbWVyZ2UgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGlmIGNtcCBoMSBoMiA8PSAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlIHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2UgbDEgdDIgKGgyOjphY2N1KVxuICBpblxuICBsZXQgcmVjIHJldl9tZXJnZV9yZXYgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGlmIGNtcCBoMSBoMiA+IDBcbiAgICAgICAgdGhlbiByZXZfbWVyZ2VfcmV2IHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2VfcmV2IGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyBzb3J0IG4gbCA9XG4gICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgfCAyLCB4MSA6OiB4MiA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9IGlmIGNtcCB4MSB4MiA8PSAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXSBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgaWYgY21wIHgxIHgyIDw9IDAgdGhlblxuICAgICAgICAgICAgaWYgY21wIHgyIHgzIDw9IDAgdGhlbiBbeDE7IHgyOyB4M11cbiAgICAgICAgICAgIGVsc2UgaWYgY21wIHgxIHgzIDw9IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPD0gMCB0aGVuIFt4MjsgeDE7IHgzXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgyIHgzIDw9IDAgdGhlbiBbeDI7IHgzOyB4MV1cbiAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSByZXZfc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSByZXZfc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlX3JldiBzMSBzMiBbXSwgdGwpXG4gIGFuZCByZXZfc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPSBpZiBjbXAgeDEgeDIgPiAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXSBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgaWYgY21wIHgxIHgyID4gMCB0aGVuXG4gICAgICAgICAgICBpZiBjbXAgeDIgeDMgPiAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlIGlmIGNtcCB4MSB4MyA+IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPiAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDIgeDMgPiAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgZWxzZSBbeDM7IHgyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgbiwgbCAtPlxuICAgICAgICBsZXQgbjEgPSBuIGFzciAxIGluXG4gICAgICAgIGxldCBuMiA9IG4gLSBuMSBpblxuICAgICAgICBsZXQgczEsIGwyID0gc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSBzb3J0IG4yIGwyIGluXG4gICAgICAgIChyZXZfbWVyZ2UgczEgczIgW10sIHRsKVxuICBpblxuICBsZXQgbGVuID0gbGVuZ3RoIGwgaW5cbiAgaWYgbGVuIDwgMiB0aGVuIGwgZWxzZSBmc3QgKHNvcnQgbGVuIGwpXG5cblxubGV0IHNvcnQgPSBzdGFibGVfc29ydFxubGV0IGZhc3Rfc29ydCA9IHN0YWJsZV9zb3J0XG5cbigqIE5vdGU6IG9uIGEgdmVyeSBsb25nIGxpc3QgKGxlbmd0aCBvdmVyIGFib3V0IDEwMDAwMCksIGl0IHVzZWQgdG8gYmVcbiAgIGZhc3RlciB0byBjb252ZXJ0IHRoZSBsaXN0IHRvIGFuIGFycmF5LCBzb3J0IHRoZSBhcnJheSwgYW5kIGNvbnZlcnRcbiAgIGJhY2ssIHRydW5jYXRpbmcgdGhlIGFycmF5IG9iamVjdCBhZnRlciBwcmVwZW5kaW5nIGVhY2ggdGhvdXNhbmRcbiAgIGVudHJpZXMgdG8gdGhlIHJlc3VsdGluZyBsaXN0LiBJbXBvc3NpYmxlIG5vdyB0aGF0IE9iai50cnVuY2F0ZSBoYXNcbiAgIGJlZW4gcmVtb3ZlZC4gKilcblxuKCoqIHNvcnRpbmcgKyByZW1vdmluZyBub24tZmlyc3QgZHVwbGljYXRlcyAqKVxuXG5sZXQgc29ydF91bmlxIGNtcCBsID1cbiAgbGV0IHJlYyByZXZfbWVyZ2UgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGxldCBjID0gY21wIGgxIGgyIGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW4gcmV2X21lcmdlIHQxIHQyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIHJldl9tZXJnZSB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlIGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyByZXZfbWVyZ2VfcmV2IGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBsMiBhY2N1XG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBsMSBhY2N1XG4gICAgfCBoMTo6dDEsIGgyOjp0MiAtPlxuICAgICAgICBsZXQgYyA9IGNtcCBoMSBoMiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuIHJldl9tZXJnZV9yZXYgdDEgdDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIGlmIGMgPiAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlX3JldiB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlX3JldiBsMSB0MiAoaDI6OmFjY3UpXG4gIGluXG4gIGxldCByZWMgc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDFdIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MV0gZWxzZSBpZiBjIDwgMCB0aGVuIFt4MTsgeDNdIGVsc2UgW3gzOyB4MV1cbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSByZXZfc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSByZXZfc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlX3JldiBzMSBzMiBbXSwgdGwpXG4gIGFuZCByZXZfc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDFdIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MV0gZWxzZSBpZiBjID4gMCB0aGVuIFt4MTsgeDNdIGVsc2UgW3gzOyB4MV1cbiAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSBzb3J0IG4xIGwgaW5cbiAgICAgICAgbGV0IHMyLCB0bCA9IHNvcnQgbjIgbDIgaW5cbiAgICAgICAgKHJldl9tZXJnZSBzMSBzMiBbXSwgdGwpXG4gIGluXG4gIGxldCBsZW4gPSBsZW5ndGggbCBpblxuICBpZiBsZW4gPCAyIHRoZW4gbCBlbHNlIGZzdCAoc29ydCBsZW4gbClcblxuXG5sZXQgcmVjIGNvbXBhcmVfbGVuZ3RocyBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IDBcbiAgfCBbXSwgXyAtPiAtMVxuICB8IF8sIFtdIC0+IDFcbiAgfCBfIDo6IGwxLCBfIDo6IGwyIC0+IGNvbXBhcmVfbGVuZ3RocyBsMSBsMlxuXG5sZXQgcmVjIGNvbXBhcmVfbGVuZ3RoX3dpdGggbCBuID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT5cbiAgICBpZiBuID0gMCB0aGVuIDAgZWxzZVxuICAgICAgaWYgbiA+IDAgdGhlbiAtMSBlbHNlIDFcbiAgfCBfIDo6IGwgLT5cbiAgICBpZiBuIDw9IDAgdGhlbiAxIGVsc2VcbiAgICAgIGNvbXBhcmVfbGVuZ3RoX3dpdGggbCAobi0xKVxuXG5sZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICB8IFtdIC0+IHRydWVcbiAgfCBfIDo6IF8gLT4gZmFsc2VcblxuKCoqIHsxIENvbXBhcmlzb259ICopXG5cbigqIE5vdGU6IHdlIGFyZSAqbm90KiBzaG9ydGN1dHRpbmcgdGhlIGxpc3QgYnkgdXNpbmdcbiAgIFtMaXN0LmNvbXBhcmVfbGVuZ3Roc10gZmlyc3Q7IHRoaXMgbWF5IGJlIHNsb3dlciBvbiBsb25nIGxpc3RzXG4gICBpbW1lZGlhdGVseSBzdGFydCB3aXRoIGRpc3RpbmN0IGVsZW1lbnRzLiBJdCBpcyBhbHNvIGluY29ycmVjdCBmb3JcbiAgIFtjb21wYXJlXSBiZWxvdywgYW5kIGl0IGlzIGJldHRlciAocHJpbmNpcGxlIG9mIGxlYXN0IHN1cnByaXNlKSB0b1xuICAgdXNlIHRoZSBzYW1lIGFwcHJvYWNoIGZvciBib3RoIGZ1bmN0aW9ucy4gKilcbmxldCByZWMgZXF1YWwgZXEgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiB0cnVlXG4gIHwgW10sIF86Ol8gfCBfOjpfLCBbXSAtPiBmYWxzZVxuICB8IGExOjpsMSwgYTI6OmwyIC0+IGVxIGExIGEyICYmIGVxdWFsIGVxIGwxIGwyXG5cbmxldCByZWMgY29tcGFyZSBjbXAgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiAwXG4gIHwgW10sIF86Ol8gLT4gLTFcbiAgfCBfOjpfLCBbXSAtPiAxXG4gIHwgYTE6OmwxLCBhMjo6bDIgLT5cbiAgICBsZXQgYyA9IGNtcCBhMSBhMiBpblxuICAgIGlmIGMgPD4gMCB0aGVuIGNcbiAgICBlbHNlIGNvbXBhcmUgY21wIGwxIGwyXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgbCA9XG4gIGxldCByZWMgYXV4IGwgKCkgPSBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IFNlcS5OaWxcbiAgICB8IHggOjogdGFpbCAtPiBTZXEuQ29ucyAoeCwgYXV4IHRhaWwpXG4gIGluXG4gIGF1eCBsXG5cbmxldFtAdGFpbF9tb2RfY29uc10gcmVjIG9mX3NlcSBzZXEgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IFNlcS5OaWwgLT4gW11cbiAgfCBTZXEuQ29ucyAoeDEsIHNlcSkgLT5cbiAgICAgIGJlZ2luIG1hdGNoIHNlcSAoKSB3aXRoXG4gICAgICB8IFNlcS5OaWwgLT4gW3gxXVxuICAgICAgfCBTZXEuQ29ucyAoeDIsIHNlcSkgLT4geDEgOjogeDIgOjogb2Zfc2VxIHNlcVxuICAgICAgZW5kXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY29tcGFyZSIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJjYW1sX2NhbGwzIiwiYTIiLCJTdGRsaWIiLCJsZW5ndGgiLCJsIiwibGVuIiwicGFyYW0iLCJjb25zIiwiYSIsInNpbmdsZXRvbiIsImhkIiwidGwiLCJjc3RfTGlzdF9udGgiLCJudGgiLCJuIiwibnRoX29wdCIsImFwcGVuZCIsInJldl9hcHBlbmQiLCJsMSIsImwyIiwicmV2IiwiaW5pdCIsImxhc3QiLCJpIiwicjEiLCJyMiIsImJsb2NrIiwiZHN0Iiwib2Zmc2V0IiwiZmxhdHRlbiIsInIiLCJtYXAiLCJtYXRjaCIsIm1hcGkiLCJyZXZfbWFwIiwiYWNjdSIsIml0ZXIiLCJpdGVyaSIsImZvbGRfbGVmdCIsImZvbGRfcmlnaHQiLCJtYXAyIiwiY3N0X0xpc3RfbWFwMiIsImIyIiwiYjEiLCJyZXZfbWFwMiIsIml0ZXIyIiwiZm9sZF9sZWZ0MiIsImZvbGRfcmlnaHQyIiwiZm9yX2FsbCIsInAiLCJleGlzdHMiLCJmb3JfYWxsMiIsImV4aXN0czIiLCJtZW0iLCJ4IiwibWVtcSIsImFzc29jIiwiYiIsImFzc29jX29wdCIsImFzc3EiLCJhc3NxX29wdCIsIm1lbV9hc3NvYyIsIm1lbV9hc3NxIiwicmVtb3ZlX2Fzc29jIiwicGFpciIsInJlbW92ZV9hc3NxIiwiZmluZCIsImZpbmRfb3B0IiwiZmluZF9pbmRleCIsImZpbmRfbWFwIiwicmVzdWx0IiwiZmluZF9tYXBpIiwiZmluZF9hbGwiLCJmaWx0ZXJpIiwiZmlsdGVyX21hcCIsInYiLCJjb25jYXRfbWFwIiwieHMiLCJ5cyIsInkiLCJ0YWtlIiwiZHJvcCIsInJlc3QiLCJ0YWtlX3doaWxlIiwiZHJvcF93aGlsZSIsImZvbGRfbGVmdF9tYXAiLCJsX2FjY3UiLCJwYXJ0aXRpb24iLCJ5ZXMiLCJubyIsInBhcnRpdGlvbl9tYXAiLCJsZWZ0IiwicmlnaHQiLCJzcGxpdCIsInJ5IiwicngiLCJjb21iaW5lIiwibWVyZ2UiLCJjbXAiLCJ0MiIsImgyIiwidDEiLCJoMSIsInN0YWJsZV9zb3J0Iiwic29ydCIsIngyIiwieDEiLCJzIiwieDMiLCJuMSIsIm4yIiwiczEiLCJzMiIsInJldl9zb3J0Iiwic29ydF91bmlxIiwiYyIsImNvbXBhcmVfbGVuZ3RocyIsImNvbXBhcmVfbGVuZ3RoX3dpdGgiLCJpc19lbXB0eSIsImVxdWFsIiwiZXEiLCJjb21wYXJlIiwidG9fc2VxIiwiYXV4IiwidGFpbCIsIm9mX3NlcSIsInNlcSJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFKLEdBQUFDLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxPQUFBQyxTQUFBO0FBQUEsWUFBQUMsT0FB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MEJBQVIsc0JBQVE7QUFBQSxJQUFDO0FBQUEsSUFFdkM7QUFBQSxHQUFLO0FBQUEsWUFBQXVFLE9BQUFDO0FBQUFBLFFBQUE5RixRQUdDO0FBQUEsSUFBTSxZQUNDO0FBQUEsUUFBQThGLFFBREQsVUFBQXBCLEtBQUEsVUFBQTFFLFVBR0k7QUFBQSxJQUFNLGNBQ0w7QUFBQTtBQUFBLEtBQUE4RixRQURLO0FBQUEsS0FBQXJCLEtBQUE7QUFBQSxLQUFBL0UsUUFFTTtBQUFBLEtBQUFDLE1BQVk7QUFBQSxLQUFBQyxTQUFBO0FBQUEsS0FBQWtHLFFBQUE7QUFBQTtBQUFBLFNBQUE5RixVQUxsQztBQUFBLEtBQU07QUFBQTtBQUFBLE9BQUE4RixRQUFBO0FBQUEsT0FBQXBCLE9BQUE7QUFBQSxPQUFBMUUsVUFHSTtBQUFBLE1BQU07QUFBQSxXQUFBOEYsUUFBQSxZQUFBckIsT0FBQSxZQUFBOUUsUUFFTTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BRFg7QUFBQTtBQUFBO0FBQUEsTUFISjtBQUFBLEtBSXFDO0FBQUE7QUFBQSxHQUMzQztBQUFBLEdEcm1CVCIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjEzMzUwLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvaW50Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSBpbnRcblxubGV0IHplcm8gPSAwXG5sZXQgb25lID0gMVxubGV0IG1pbnVzX29uZSA9IC0xXG5leHRlcm5hbCBuZWcgOiBpbnQgLT4gaW50ID0gXCIlbmVnaW50XCJcbmV4dGVybmFsIGFkZCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYWRkaW50XCJcbmV4dGVybmFsIHN1YiA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlc3ViaW50XCJcbmV4dGVybmFsIG11bCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbXVsaW50XCJcbmV4dGVybmFsIGRpdiA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlZGl2aW50XCJcbmV4dGVybmFsIHJlbSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbW9kaW50XCJcbmV4dGVybmFsIHN1Y2MgOiBpbnQgLT4gaW50ID0gXCIlc3VjY2ludFwiXG5leHRlcm5hbCBwcmVkIDogaW50IC0+IGludCA9IFwiJXByZWRpbnRcIlxubGV0IGFicyB4ID0gaWYgeCA+PSAwIHRoZW4geCBlbHNlIC14XG5sZXQgbWF4X2ludCA9ICgtMSkgbHNyIDFcbmxldCBtaW5faW50ID0gbWF4X2ludCArIDFcbmV4dGVybmFsIGxvZ2FuZCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYW5kaW50XCJcbmV4dGVybmFsIGxvZ29yIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVvcmludFwiXG5leHRlcm5hbCBsb2d4b3IgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXhvcmludFwiXG5sZXQgbG9nbm90IHggPSBsb2d4b3IgeCAoLTEpXG5leHRlcm5hbCBzaGlmdF9sZWZ0IDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc2xpbnRcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFzcmludFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc3JpbnRcIlxubGV0IGVxdWFsIDogaW50IC0+IGludCAtPiBib29sID0gKCA9IClcbmxldCBjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQgPSBTdGRsaWIuY29tcGFyZVxubGV0IG1pbiB4IHkgOiB0ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5IDogdCA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5leHRlcm5hbCB0b19mbG9hdCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcblxuKCpcbmV4dGVybmFsIGludF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50ID0gXCJjYW1sX2ludF9vZl9zdHJpbmdcIlxubGV0IG9mX3N0cmluZyBzID0gdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgcykgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuKilcblxuZXh0ZXJuYWwgZm9ybWF0X2ludCA6IHN0cmluZyAtPiBpbnQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9pbnRcIlxubGV0IHRvX3N0cmluZyB4ID0gZm9ybWF0X2ludCBcIiVkXCIgeFxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2hhc2giLCJhYnMiLCJ4IiwibG9nbm90IiwiZXF1YWwiLCJjb21wYXJlIiwibWluIiwieSIsIm1heCIsInRvX3N0cmluZyIsInNlZWRlZF9oYXNoIiwic2VlZCIsImhhc2giXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBLHlCQUFBQyxZQUFBO0FBQUEsWUFBQUMsSUFBQUMsR0M0QlksMkJBQXdCO0FBQUEsWUFBQUMsT0FBQUQsR0FNckIsY0FBYTtBQUFBLFlBQUFFLE1BQUEsTURsQzVCO0FBQUEsT0FBQUMsVUFBQTtBQUFBLFlBQUFDLElBQUFKLEdBQUFLLEdDd0NrQixxQkFBdUI7QUFBQSxZQUFBQyxJQUFBTixHQUFBSyxHQUN2QixxQkFBdUI7QUFBQSxZQUFBRSxVQUFBUCxHQVVOO0FBQUEsWUFBQVEsWUFBQUMsTUFBQVQsR0FJVixrQ0FBK0I7QUFBQSxZQUFBVSxLQUFBVixHQUMzQywrQkFBNEI7QUFBQSxHRHhEekMiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjoxMzM4OCwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL2FycmF5Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBbiBhbGlhcyBmb3IgdGhlIHR5cGUgb2YgYXJyYXlzLiAqKVxudHlwZSAnYSB0ID0gJ2EgYXJyYXlcblxuKCogQXJyYXkgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBsZW5ndGggOiAnYSBhcnJheSAtPiBpbnQgPSBcIiVhcnJheV9sZW5ndGhcIlxuZXh0ZXJuYWwgZ2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgPSBcIiVhcnJheV9zYWZlX2dldFwiXG5leHRlcm5hbCBzZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlYXJyYXlfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhID0gXCIlYXJyYXlfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWFycmF5X3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgbWFrZTogaW50IC0+ICdhIC0+ICdhIGFycmF5ID0gXCJjYW1sX2FycmF5X21ha2VcIlxuZXh0ZXJuYWwgY3JlYXRlOiBpbnQgLT4gJ2EgLT4gJ2EgYXJyYXkgPSBcImNhbWxfYXJyYXlfbWFrZVwiXG5leHRlcm5hbCB1bnNhZmVfc3ViIDogJ2EgYXJyYXkgLT4gaW50IC0+IGludCAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9zdWJcIlxuZXh0ZXJuYWwgYXBwZW5kX3ByaW0gOiAnYSBhcnJheSAtPiAnYSBhcnJheSAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9hcHBlbmRcIlxuZXh0ZXJuYWwgY29uY2F0IDogJ2EgYXJyYXkgbGlzdCAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9jb25jYXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgOlxuICAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgYXJyYXkgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2FycmF5X2JsaXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2ZpbGwgOlxuICAnYSBhcnJheSAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYXJyYXlfZmlsbFwiXG5leHRlcm5hbCBjcmVhdGVfZmxvYXQ6IGludCAtPiBmbG9hdCBhcnJheSA9IFwiY2FtbF9hcnJheV9jcmVhdGVfZmxvYXRcIlxuXG5tb2R1bGUgRmxvYXRhcnJheSA9IHN0cnVjdFxuICBleHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gZmxvYXRhcnJheSA9IFwiY2FtbF9mbG9hdGFycmF5X2NyZWF0ZVwiXG4gIGV4dGVybmFsIGxlbmd0aCA6IGZsb2F0YXJyYXkgLT4gaW50ID0gXCIlZmxvYXRhcnJheV9sZW5ndGhcIlxuICBleHRlcm5hbCBnZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBzZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCAtPiB1bml0ID0gXCIlZmxvYXRhcnJheV9zYWZlX3NldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCAtPiB1bml0XG4gICAgICA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX3NldFwiXG5lbmRcblxubGV0IGluaXQgbCBmID1cbiAgaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2VcbiAgaWYgbCA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmluaXRcIlxuICAoKiBTZWUgIzY1NzUuIFdlIG11c3Qgbm90IGV2YWx1YXRlIFtmIDBdIHdoZW4gW2wgPD0gMF0uXG4gICAgIFdlIGNvdWxkIGFsc28gY2hlY2sgZm9yIG1heGltdW0gYXJyYXkgc2l6ZSwgYnV0IHRoaXMgZGVwZW5kc1xuICAgICBvbiB3aGV0aGVyIHdlIGNyZWF0ZSBhIGZsb2F0IGFycmF5IG9yIGEgcmVndWxhciBvbmUuLi4gKilcbiAgZWxzZVxuICAgbGV0IHJlcyA9IGNyZWF0ZSBsIChmIDApIGluXG4gICBmb3IgaSA9IDEgdG8gcHJlZCBsIGRvXG4gICAgIHVuc2FmZV9zZXQgcmVzIGkgKGYgaSlcbiAgIGRvbmU7XG4gICByZXNcblxubGV0IG1ha2VfbWF0cml4IHN4IHN5IGluaXQgPVxuICAoKiBXZSByYWlzZSBldmVuIGlmIFtzeCA9IDAgJiYgc3kgPCAwXTogKilcbiAgaWYgc3kgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5tYWtlX21hdHJpeFwiO1xuICBsZXQgcmVzID0gY3JlYXRlIHN4IFt8fF0gaW5cbiAgaWYgc3kgPiAwIHRoZW4gYmVnaW5cbiAgICBmb3IgeCA9IDAgdG8gcHJlZCBzeCBkb1xuICAgICAgdW5zYWZlX3NldCByZXMgeCAoY3JlYXRlIHN5IGluaXQpXG4gICAgZG9uZTtcbiAgZW5kO1xuICByZXNcblxubGV0IGluaXRfbWF0cml4IHN4IHN5IGYgPVxuICAoKiBXZSByYWlzZSBldmVuIGlmIFtzeCA9IDAgJiYgc3kgPCAwXTogKilcbiAgaWYgc3kgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5pbml0X21hdHJpeFwiO1xuICBsZXQgcmVzID0gY3JlYXRlIHN4IFt8fF0gaW5cbiAgKCogV2UgbXVzdCBub3QgZXZhbHVhdGUgW2YgeCAwXSB3aGVuIFtzeSA8PSAwXTogKilcbiAgaWYgc3kgPiAwIHRoZW4gYmVnaW5cbiAgICBmb3IgeCA9IDAgdG8gcHJlZCBzeCBkb1xuICAgICAgbGV0IHJvdyA9IGNyZWF0ZSBzeSAoZiB4IDApIGluXG4gICAgICBmb3IgeSA9IDEgdG8gcHJlZCBzeSBkb1xuICAgICAgICB1bnNhZmVfc2V0IHJvdyB5IChmIHggeSlcbiAgICAgIGRvbmU7XG4gICAgICB1bnNhZmVfc2V0IHJlcyB4IHJvd1xuICAgIGRvbmU7XG4gIGVuZDtcbiAgcmVzXG5cbmxldCBjb3B5IGEgPVxuICBsZXQgbCA9IGxlbmd0aCBhIGluIGlmIGwgPSAwIHRoZW4gW3x8XSBlbHNlIHVuc2FmZV9zdWIgYSAwIGxcblxubGV0IGFwcGVuZCBhMSBhMiA9XG4gIGxldCBsMSA9IGxlbmd0aCBhMSBpblxuICBpZiBsMSA9IDAgdGhlbiBjb3B5IGEyXG4gIGVsc2UgaWYgbGVuZ3RoIGEyID0gMCB0aGVuIHVuc2FmZV9zdWIgYTEgMCBsMVxuICBlbHNlIGFwcGVuZF9wcmltIGExIGEyXG5cbmxldCBzdWIgYSBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBhIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5zdWJcIlxuICBlbHNlIHVuc2FmZV9zdWIgYSBvZnMgbGVuXG5cbmxldCBmaWxsIGEgb2ZzIGxlbiB2ID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBhIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5maWxsXCJcbiAgZWxzZSB1bnNhZmVfZmlsbCBhIG9mcyBsZW4gdlxuXG5sZXQgYmxpdCBhMSBvZnMxIGEyIG9mczIgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gbGVuZ3RoIGExIC0gbGVuXG4gICAgICAgICAgICAgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IGxlbmd0aCBhMiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuYmxpdFwiXG4gIGVsc2UgdW5zYWZlX2JsaXQgYTEgb2ZzMSBhMiBvZnMyIGxlblxuXG5sZXQgaXRlciBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IGl0ZXIyIGYgYSBiID1cbiAgaWYgbGVuZ3RoIGEgPD4gbGVuZ3RoIGIgdGhlblxuICAgIGludmFsaWRfYXJnIFwiQXJyYXkuaXRlcjI6IGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCJcbiAgZWxzZVxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkgZG9uZVxuXG5sZXQgbWFwIGYgYSA9XG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIChmKHVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCBtYXBfaW5wbGFjZSBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgdW5zYWZlX3NldCBhIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSlcbiAgZG9uZVxuXG5sZXQgbWFwaV9pbnBsYWNlIGYgYSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICB1bnNhZmVfc2V0IGEgaSAoZiBpICh1bnNhZmVfZ2V0IGEgaSkpXG4gIGRvbmVcblxubGV0IG1hcDIgZiBhIGIgPVxuICBsZXQgbGEgPSBsZW5ndGggYSBpblxuICBsZXQgbGIgPSBsZW5ndGggYiBpblxuICBpZiBsYSA8PiBsYiB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJBcnJheS5tYXAyOiBhcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiXG4gIGVsc2UgYmVnaW5cbiAgICBpZiBsYSA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gY3JlYXRlIGxhIChmICh1bnNhZmVfZ2V0IGEgMCkgKHVuc2FmZV9nZXQgYiAwKSkgaW5cbiAgICAgIGZvciBpID0gMSB0byBsYSAtIDEgZG9cbiAgICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSAodW5zYWZlX2dldCBiIGkpKVxuICAgICAgZG9uZTtcbiAgICAgIHJcbiAgICBlbmRcbiAgZW5kXG5cbmxldCBpdGVyaSBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IG1hcGkgZiBhID1cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBpZiBsID0gMCB0aGVuIFt8fF0gZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgKGYgMCAodW5zYWZlX2dldCBhIDApKSBpblxuICAgIGZvciBpID0gMSB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgaSAodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IHRvX2xpc3QgYSA9XG4gIGxldCByZWMgdG9saXN0IGkgcmVzID1cbiAgICBpZiBpIDwgMCB0aGVuIHJlcyBlbHNlIHRvbGlzdCAoaSAtIDEpICh1bnNhZmVfZ2V0IGEgaSA6OiByZXMpIGluXG4gIHRvbGlzdCAobGVuZ3RoIGEgLSAxKSBbXVxuXG4oKiBDYW5ub3QgdXNlIExpc3QubGVuZ3RoIGhlcmUgYmVjYXVzZSB0aGUgTGlzdCBtb2R1bGUgZGVwZW5kcyBvbiBBcnJheS4gKilcbmxldCByZWMgbGlzdF9sZW5ndGggYWNjdSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gYWNjdVxuICB8IF86OnQgLT4gbGlzdF9sZW5ndGggKHN1Y2MgYWNjdSkgdFxuXG5sZXQgb2ZfbGlzdCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW3x8XVxuICB8IGhkOjp0bCBhcyBsIC0+XG4gICAgICBsZXQgYSA9IGNyZWF0ZSAobGlzdF9sZW5ndGggMCBsKSBoZCBpblxuICAgICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgICAgIFtdIC0+IGFcbiAgICAgICAgfCBoZDo6dGwgLT4gdW5zYWZlX3NldCBhIGkgaGQ7IGZpbGwgKGkrMSkgdGwgaW5cbiAgICAgIGZpbGwgMSB0bFxuXG5sZXQgZXF1YWwgZXEgYSBiID1cbiAgaWYgbGVuZ3RoIGEgPD4gbGVuZ3RoIGIgdGhlbiBmYWxzZSBlbHNlXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbGV0IGxlbiA9IGxlbmd0aCBhIGluXG4gIHdoaWxlICFpIDwgbGVuICYmIGVxICh1bnNhZmVfZ2V0IGEgIWkpICh1bnNhZmVfZ2V0IGIgIWkpIGRvIGluY3IgaSBkb25lO1xuICAhaSA9IGxlblxuXG5sZXQgc3RkbGliX2NvbXBhcmUgPSBjb21wYXJlXG5sZXQgY29tcGFyZSBjbXAgYSBiID1cbiAgbGV0IGxlbl9hID0gbGVuZ3RoIGEgYW5kIGxlbl9iID0gbGVuZ3RoIGIgaW5cbiAgbGV0IGRpZmYgPSBsZW5fYSAtIGxlbl9iIGluXG4gIGlmIGRpZmYgPD4gMCB0aGVuIChpZiBkaWZmIDwgMCB0aGVuIC0xIGVsc2UgMSkgZWxzZVxuICBsZXQgaSA9IHJlZiAwIGFuZCBjID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW5fYSAmJiAhYyA9IDBcbiAgZG8gYyA6PSBjbXAgKHVuc2FmZV9nZXQgYSAhaSkgKHVuc2FmZV9nZXQgYiAhaSk7IGluY3IgaSBkb25lO1xuICAhY1xuXG5sZXQgZm9sZF9sZWZ0IGYgeCBhID1cbiAgbGV0IHIgPSByZWYgeCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IGEgaSlcbiAgZG9uZTtcbiAgIXJcblxubGV0IGZvbGRfbGVmdF9tYXAgZiBhY2MgaW5wdXRfYXJyYXkgPVxuICBsZXQgbGVuID0gbGVuZ3RoIGlucHV0X2FycmF5IGluXG4gIGlmIGxlbiA9IDAgdGhlbiAoYWNjLCBbfHxdKSBlbHNlIGJlZ2luXG4gICAgbGV0IGFjYywgZWx0ID0gZiBhY2MgKHVuc2FmZV9nZXQgaW5wdXRfYXJyYXkgMCkgaW5cbiAgICBsZXQgb3V0cHV0X2FycmF5ID0gY3JlYXRlIGxlbiBlbHQgaW5cbiAgICBsZXQgYWNjID0gcmVmIGFjYyBpblxuICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICBsZXQgYWNjJywgZWx0ID0gZiAhYWNjICh1bnNhZmVfZ2V0IGlucHV0X2FycmF5IGkpIGluXG4gICAgICBhY2MgOj0gYWNjJztcbiAgICAgIHVuc2FmZV9zZXQgb3V0cHV0X2FycmF5IGkgZWx0O1xuICAgIGRvbmU7XG4gICAgIWFjYywgb3V0cHV0X2FycmF5XG4gIGVuZFxuXG5sZXQgZm9sZF9yaWdodCBmIGEgeCA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDAgZG9cbiAgICByIDo9IGYgKHVuc2FmZV9nZXQgYSBpKSAhclxuICBkb25lO1xuICAhclxuXG5sZXQgZXhpc3RzIHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsIHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsMiBwIGwxIGwyID1cbiAgbGV0IG4xID0gbGVuZ3RoIGwxXG4gIGFuZCBuMiA9IGxlbmd0aCBsMiBpblxuICBpZiBuMSA8PiBuMiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuZm9yX2FsbDJcIlxuICBlbHNlIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbjEgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGwxIGkpICh1bnNhZmVfZ2V0IGwyIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCBleGlzdHMyIHAgbDEgbDIgPVxuICBsZXQgbjEgPSBsZW5ndGggbDFcbiAgYW5kIG4yID0gbGVuZ3RoIGwyIGluXG4gIGlmIG4xIDw+IG4yIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5leGlzdHMyXCJcbiAgZWxzZSBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4xIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgbDEgaSkgKHVuc2FmZV9nZXQgbDIgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgbWVtIHggYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHN0ZGxpYl9jb21wYXJlICh1bnNhZmVfZ2V0IGEgaSkgeCA9IDAgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgbWVtcSB4IGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiB4ID09ICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgZmluZF9vcHQgcCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgaWYgcCB4IHRoZW4gU29tZSB4XG4gICAgICBlbHNlIGxvb3AgKHN1Y2MgaSlcbiAgaW5cbiAgbG9vcCAwXG5cbmxldCBmaW5kX2luZGV4IHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gTm9uZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gU29tZSBpXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgZmluZF9tYXAgZiBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggZiAodW5zYWZlX2dldCBhIGkpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBsb29wIChzdWNjIGkpXG4gICAgICB8IFNvbWUgXyBhcyByIC0+IHJcbiAgaW5cbiAgbG9vcCAwXG5cbmxldCBmaW5kX21hcGkgZiBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggZiBpICh1bnNhZmVfZ2V0IGEgaSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGxvb3AgKHN1Y2MgaSlcbiAgICAgIHwgU29tZSBfIGFzIHIgLT4gclxuICBpblxuICBsb29wIDBcblxubGV0IHNwbGl0IHggPVxuICBpZiB4ID0gW3x8XSB0aGVuIFt8fF0sIFt8fF1cbiAgZWxzZSBiZWdpblxuICAgIGxldCBhMCwgYjAgPSB1bnNhZmVfZ2V0IHggMCBpblxuICAgIGxldCBuID0gbGVuZ3RoIHggaW5cbiAgICBsZXQgYSA9IGNyZWF0ZSBuIGEwIGluXG4gICAgbGV0IGIgPSBjcmVhdGUgbiBiMCBpblxuICAgIGZvciBpID0gMSB0byBuIC0gMSBkb1xuICAgICAgbGV0IGFpLCBiaSA9IHVuc2FmZV9nZXQgeCBpIGluXG4gICAgICB1bnNhZmVfc2V0IGEgaSBhaTtcbiAgICAgIHVuc2FmZV9zZXQgYiBpIGJpXG4gICAgZG9uZTtcbiAgICBhLCBiXG4gIGVuZFxuXG5sZXQgY29tYmluZSBhIGIgPVxuICBsZXQgbmEgPSBsZW5ndGggYSBpblxuICBsZXQgbmIgPSBsZW5ndGggYiBpblxuICBpZiBuYSA8PiBuYiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuY29tYmluZVwiO1xuICBpZiBuYSA9IDAgdGhlbiBbfHxdXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgeCA9IGNyZWF0ZSBuYSAodW5zYWZlX2dldCBhIDAsIHVuc2FmZV9nZXQgYiAwKSBpblxuICAgIGZvciBpID0gMSB0byBuYSAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgeCBpICh1bnNhZmVfZ2V0IGEgaSwgdW5zYWZlX2dldCBiIGkpXG4gICAgZG9uZTtcbiAgICB4XG4gIGVuZFxuXG5leGNlcHRpb24gQm90dG9tIG9mIGludFxubGV0IHNvcnQgY21wIGEgPVxuICBsZXQgbWF4c29uIGwgaSA9XG4gICAgbGV0IGkzMSA9IGkraStpKzEgaW5cbiAgICBsZXQgeCA9IHJlZiBpMzEgaW5cbiAgICBpZiBpMzErMiA8IGwgdGhlbiBiZWdpblxuICAgICAgaWYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDAgdGhlbiB4IDo9IGkzMSsxO1xuICAgICAgaWYgY21wIChnZXQgYSAheCkgKGdldCBhIChpMzErMikpIDwgMCB0aGVuIHggOj0gaTMxKzI7XG4gICAgICAheFxuICAgIGVuZCBlbHNlXG4gICAgICBpZiBpMzErMSA8IGwgJiYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDBcbiAgICAgIHRoZW4gaTMxKzFcbiAgICAgIGVsc2UgaWYgaTMxIDwgbCB0aGVuIGkzMSBlbHNlIHJhaXNlIChCb3R0b20gaSlcbiAgaW5cbiAgbGV0IHJlYyB0cmlja2xlZG93biBsIGkgZSA9XG4gICAgbGV0IGogPSBtYXhzb24gbCBpIGluXG4gICAgaWYgY21wIChnZXQgYSBqKSBlID4gMCB0aGVuIGJlZ2luXG4gICAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgIHRyaWNrbGVkb3duIGwgaiBlO1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBzZXQgYSBpIGU7XG4gICAgZW5kO1xuICBpblxuICBsZXQgdHJpY2tsZSBsIGkgZSA9IHRyeSB0cmlja2xlZG93biBsIGkgZSB3aXRoIEJvdHRvbSBpIC0+IHNldCBhIGkgZSBpblxuICBsZXQgcmVjIGJ1YmJsZWRvd24gbCBpID1cbiAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICBidWJibGVkb3duIGwgalxuICBpblxuICBsZXQgYnViYmxlIGwgaSA9IHRyeSBidWJibGVkb3duIGwgaSB3aXRoIEJvdHRvbSBpIC0+IGkgaW5cbiAgbGV0IHJlYyB0cmlja2xldXAgaSBlID1cbiAgICBsZXQgZmF0aGVyID0gKGkgLSAxKSAvIDMgaW5cbiAgICBhc3NlcnQgKGkgPD4gZmF0aGVyKTtcbiAgICBpZiBjbXAgKGdldCBhIGZhdGhlcikgZSA8IDAgdGhlbiBiZWdpblxuICAgICAgc2V0IGEgaSAoZ2V0IGEgZmF0aGVyKTtcbiAgICAgIGlmIGZhdGhlciA+IDAgdGhlbiB0cmlja2xldXAgZmF0aGVyIGUgZWxzZSBzZXQgYSAwIGU7XG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIHNldCBhIGkgZTtcbiAgICBlbmQ7XG4gIGluXG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgZm9yIGkgPSAobCArIDEpIC8gMyAtIDEgZG93bnRvIDAgZG8gdHJpY2tsZSBsIGkgKGdldCBhIGkpOyBkb25lO1xuICBmb3IgaSA9IGwgLSAxIGRvd250byAyIGRvXG4gICAgbGV0IGUgPSAoZ2V0IGEgaSkgaW5cbiAgICBzZXQgYSBpIChnZXQgYSAwKTtcbiAgICB0cmlja2xldXAgKGJ1YmJsZSBpIDApIGU7XG4gIGRvbmU7XG4gIGlmIGwgPiAxIHRoZW4gKGxldCBlID0gKGdldCBhIDEpIGluIHNldCBhIDEgKGdldCBhIDApOyBzZXQgYSAwIGUpXG5cblxubGV0IGN1dG9mZiA9IDVcbmxldCBzdGFibGVfc29ydCBjbXAgYSA9XG4gIGxldCBtZXJnZSBzcmMxb2ZzIHNyYzFsZW4gc3JjMiBzcmMyb2ZzIHNyYzJsZW4gZHN0IGRzdG9mcyA9XG4gICAgbGV0IHNyYzFyID0gc3JjMW9mcyArIHNyYzFsZW4gYW5kIHNyYzJyID0gc3JjMm9mcyArIHNyYzJsZW4gaW5cbiAgICBsZXQgcmVjIGxvb3AgaTEgczEgaTIgczIgZCA9XG4gICAgICBpZiBjbXAgczEgczIgPD0gMCB0aGVuIGJlZ2luXG4gICAgICAgIHNldCBkc3QgZCBzMTtcbiAgICAgICAgbGV0IGkxID0gaTEgKyAxIGluXG4gICAgICAgIGlmIGkxIDwgc3JjMXIgdGhlblxuICAgICAgICAgIGxvb3AgaTEgKGdldCBhIGkxKSBpMiBzMiAoZCArIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBibGl0IHNyYzIgaTIgZHN0IChkICsgMSkgKHNyYzJyIC0gaTIpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXQgZHN0IGQgczI7XG4gICAgICAgIGxldCBpMiA9IGkyICsgMSBpblxuICAgICAgICBpZiBpMiA8IHNyYzJyIHRoZW5cbiAgICAgICAgICBsb29wIGkxIHMxIGkyIChnZXQgc3JjMiBpMikgKGQgKyAxKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmxpdCBhIGkxIGRzdCAoZCArIDEpIChzcmMxciAtIGkxKVxuICAgICAgZW5kXG4gICAgaW4gbG9vcCBzcmMxb2ZzIChnZXQgYSBzcmMxb2ZzKSBzcmMyb2ZzIChnZXQgc3JjMiBzcmMyb2ZzKSBkc3RvZnM7XG4gIGluXG4gIGxldCBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIGxldCBlID0gKGdldCBhIChzcmNvZnMgKyBpKSkgaW5cbiAgICAgIGxldCBqID0gcmVmIChkc3RvZnMgKyBpIC0gMSkgaW5cbiAgICAgIHdoaWxlICghaiA+PSBkc3RvZnMgJiYgY21wIChnZXQgZHN0ICFqKSBlID4gMCkgZG9cbiAgICAgICAgc2V0IGRzdCAoIWogKyAxKSAoZ2V0IGRzdCAhaik7XG4gICAgICAgIGRlY3IgajtcbiAgICAgIGRvbmU7XG4gICAgICBzZXQgZHN0ICghaiArIDEpIGU7XG4gICAgZG9uZTtcbiAgaW5cbiAgbGV0IHJlYyBzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICBpZiBsZW4gPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gZWxzZSBiZWdpblxuICAgICAgbGV0IGwxID0gbGVuIC8gMiBpblxuICAgICAgbGV0IGwyID0gbGVuIC0gbDEgaW5cbiAgICAgIHNvcnR0byAoc3Jjb2ZzICsgbDEpIGRzdCAoZHN0b2ZzICsgbDEpIGwyO1xuICAgICAgc29ydHRvIHNyY29mcyBhIChzcmNvZnMgKyBsMikgbDE7XG4gICAgICBtZXJnZSAoc3Jjb2ZzICsgbDIpIGwxIGRzdCAoZHN0b2ZzICsgbDEpIGwyIGRzdCBkc3RvZnM7XG4gICAgZW5kO1xuICBpblxuICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gIGlmIGwgPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byAwIGEgMCBsIGVsc2UgYmVnaW5cbiAgICBsZXQgbDEgPSBsIC8gMiBpblxuICAgIGxldCBsMiA9IGwgLSBsMSBpblxuICAgIGxldCB0ID0gbWFrZSBsMiAoZ2V0IGEgMCkgaW5cbiAgICBzb3J0dG8gbDEgdCAwIGwyO1xuICAgIHNvcnR0byAwIGEgbDIgbDE7XG4gICAgbWVyZ2UgbDIgbDEgdCAwIGwyIGEgMDtcbiAgZW5kXG5cblxubGV0IGZhc3Rfc29ydCA9IHN0YWJsZV9zb3J0XG5cbmxldCBzaHVmZmxlX2NvbnRyYWN0X3Zpb2xhdGlvbiBpIGogPVxuICBsZXQgaW50ID0gc3RyaW5nX29mX2ludCBpblxuICBpbnZhbGlkX2FyZ1xuICAgIChcIkFycmF5LnNodWZmbGU6ICdyYW5kIFwiIF4gaW50IChpICsgMSkgXlxuICAgICBcIicgcmV0dXJuZWQgXCIgXiBpbnQgaiBeXG4gICAgIFwiLCBvdXQgb2YgZXhwZWN0ZWQgcmFuZ2UgWzA7IFwiIF4gaW50IGkgXiBcIl1cIilcblxubGV0IHNodWZmbGUgfnJhbmQgYSA9ICgqIEZpc2hlci1ZYXRlcyAqKVxuICBmb3IgaSA9IGxlbmd0aCBhIC0gMSBkb3dudG8gMSBkb1xuICAgIGxldCBqID0gcmFuZCAoaSArIDEpIGluXG4gICAgaWYgbm90ICgwIDw9IGogJiYgaiA8PSBpKSB0aGVuIHNodWZmbGVfY29udHJhY3RfdmlvbGF0aW9uIGkgajtcbiAgICBsZXQgdiA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgdW5zYWZlX3NldCBhIGkgKHVuc2FmZV9nZXQgYSBqKTtcbiAgICB1bnNhZmVfc2V0IGEgaiB2XG4gIGRvbmVcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBhID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgaWYgaSA8IGxlbmd0aCBhXG4gICAgdGhlblxuICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgICBlbHNlIFNlcS5OaWxcbiAgaW5cbiAgYXV4IDBcblxubGV0IHRvX3NlcWkgYSA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPCBsZW5ndGggYVxuICAgIHRoZW5cbiAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICAgIGVsc2UgU2VxLk5pbFxuICBpblxuICBhdXggMFxuXG5sZXQgb2ZfcmV2X2xpc3QgPSBmdW5jdGlvblxuICAgIFtdIC0+IFt8fF1cbiAgfCBoZDo6dGwgYXMgbCAtPlxuICAgICAgbGV0IGxlbiA9IGxpc3RfbGVuZ3RoIDAgbCBpblxuICAgICAgbGV0IGEgPSBjcmVhdGUgbGVuIGhkIGluXG4gICAgICBsZXQgcmVjIGZpbGwgaSA9IGZ1bmN0aW9uXG4gICAgICAgICAgW10gLT4gYVxuICAgICAgICB8IGhkOjp0bCAtPiB1bnNhZmVfc2V0IGEgaSBoZDsgZmlsbCAoaS0xKSB0bFxuICAgICAgaW5cbiAgICAgIGZpbGwgKGxlbi0yKSB0bFxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgbCA9IFNlcS5mb2xkX2xlZnQgKGZ1biBhY2MgeCAtPiB4OjphY2MpIFtdIGkgaW5cbiAgb2ZfcmV2X2xpc3QgbFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2FycmF5X21ha2UiLCJjYW1sX2FycmF5X3N1YiIsImNhbWxfY2hlY2tfYm91bmQiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImdsb2JhbF9kYXRhIiwiU3RkbGliX1NlcSIsIlN0ZGxpYiIsIkFzc2VydF9mYWlsdXJlIiwiaW5pdCIsImwiLCJyZXMiLCJpIiwibWFrZV9tYXRyaXgiLCJzeCIsInN5IiwieCIsImluaXRfbWF0cml4Iiwicm93IiwieSIsImNvcHkiLCJhIiwiYXBwZW5kIiwiYTIiLCJsMSIsInN1YiIsIm9mcyIsImxlbiIsImZpbGwiLCJ2IiwiYmxpdCIsIm9mczEiLCJvZnMyIiwiaXRlciIsIml0ZXIyIiwiYiIsIm1hcCIsInIiLCJtYXBfaW5wbGFjZSIsIm1hcGlfaW5wbGFjZSIsIm1hcDIiLCJsYSIsImxiIiwiaXRlcmkiLCJtYXBpIiwidG9fbGlzdCIsImxpc3RfbGVuZ3RoIiwiYWNjdSIsInBhcmFtIiwidCIsIm9mX2xpc3QiLCJ0bCIsImhkIiwiZXF1YWwiLCJlcSIsImNvbXBhcmUiLCJjbXAiLCJsZW5fYSIsImxlbl9iIiwiZGlmZiIsImMiLCJmb2xkX2xlZnQiLCJmb2xkX2xlZnRfbWFwIiwiYWNjIiwiaW5wdXRfYXJyYXkiLCJtYXRjaCIsImVsdCIsIm91dHB1dF9hcnJheSIsImZvbGRfcmlnaHQiLCJleGlzdHMiLCJwIiwibiIsImZvcl9hbGwiLCJmb3JfYWxsMiIsImwyIiwibjEiLCJuMiIsImV4aXN0czIiLCJtZW0iLCJtZW1xIiwiZmluZF9vcHQiLCJmaW5kX2luZGV4IiwiZmluZF9tYXAiLCJmaW5kX21hcGkiLCJzcGxpdCIsImIwIiwiYmkiLCJhaSIsImNvbWJpbmUiLCJuYSIsIm5iIiwiQm90dG9tIiwic29ydCIsIm1heHNvbiIsImkzMSIsImUiLCJqIiwiZXhuIiwiZmF0aGVyIiwic3RhYmxlX3NvcnQiLCJtZXJnZSIsInNyYzFvZnMiLCJzcmMxbGVuIiwic3JjMiIsInNyYzJvZnMiLCJzcmMybGVuIiwiZHN0IiwiZHN0b2ZzIiwic3JjMXIiLCJzcmMyciIsInMyIiwiczEiLCJpMSIsImkyIiwiZCIsImlzb3J0dG8iLCJzcmNvZnMiLCJzb3J0dG8iLCJzaHVmZmxlIiwicmFuZCIsImludCIsInRvX3NlcSIsImF1eCIsInRvX3NlcWkiLCJvZl9zZXEiLCJTdGRsaWJfQXJyYXkiXSwibWFwcGluZ3MiOiJJQUFBQSxV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O0FBQUEsS0FBQU4sSUFDRjtBQUFBLEtBQUFULE1BS1I7QUFBQSxLQUFBQSxJQUFBO0FBQUEsS0FBQW9DLFFBQUE7QUFBQTtBQUFBLEtBSmEsWUFDSDtBQUFBLFNBQUFHLE9BREcsVUFBQUMsT0FBQTtBQUFBLEtBRUM7QUFBQSxTQUFBeEMsTUFBaUI7QUFBQTtBQUFBO0FBQUE7QUFBQSxHQU10QjtBQUFBO0FBQUEsSUFBQWlIO0FBQUFBLE1EN2ZmIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MTQxODIsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9ieXRlcy5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQnl0ZSBzZXF1ZW5jZSBvcGVyYXRpb25zICopXG5cbigqIFdBUk5JTkc6IFNvbWUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZSBhcmUgZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgZm9yXG4gICBlZmZpY2llbmN5IHJlYXNvbnMuIFdoZW4geW91IG1vZGlmeSB0aGUgb25lIGluIHRoaXMgZmlsZSB5b3UgbmVlZCB0b1xuICAgbW9kaWZ5IGl0cyBkdXBsaWNhdGUgaW4gc3RyaW5nLm1sLlxuICAgVGhlc2UgZnVuY3Rpb25zIGhhdmUgYSBcImR1cGxpY2F0ZWRcIiBjb21tZW50IGFib3ZlIHRoZWlyIGRlZmluaXRpb24uXG4qKVxuXG5leHRlcm5hbCBsZW5ndGggOiBieXRlcyAtPiBpbnQgPSBcIiVieXRlc19sZW5ndGhcIlxuZXh0ZXJuYWwgc3RyaW5nX2xlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbmV4dGVybmFsIGdldCA6IGJ5dGVzIC0+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+IGxvb3AgbWF4IGIgKGkgKyA0KVxuICBpblxuICBsb29wIChsZW5ndGggYiAtIDEpIGIgMFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2JsaXRfYnl0ZXMiLCJjYW1sX2Jzd2FwMTYiLCJjYW1sX2J5dGVzX2dldCIsImNhbWxfYnl0ZXNfZ2V0MTYiLCJjYW1sX2J5dGVzX2dldDMyIiwiY2FtbF9ieXRlc19nZXQ2NCIsImNhbWxfYnl0ZXNfb2Zfc3RyaW5nIiwiY2FtbF9ieXRlc19zZXQiLCJjYW1sX2J5dGVzX3NldDE2IiwiY2FtbF9ieXRlc19zZXQzMiIsImNhbWxfYnl0ZXNfc2V0NjQiLCJjYW1sX2J5dGVzX3Vuc2FmZV9nZXQiLCJjYW1sX2J5dGVzX3Vuc2FmZV9zZXQiLCJjYW1sX2NyZWF0ZV9ieXRlcyIsImNhbWxfZmlsbF9ieXRlcyIsImNhbWxfaW50MzJfYnN3YXAiLCJjYW1sX2ludDY0X2Jzd2FwIiwiY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlIiwiY2FtbF9tbF9ieXRlc19sZW5ndGgiLCJjYW1sX3N0cmluZ19vZl9ieXRlcyIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiZHVtbXkiLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYiIsIlN0ZGxpYl9VY2hhciIsIkFzc2VydF9mYWlsdXJlIiwiU3RkbGliX1N5cyIsIlN0ZGxpYl9JbnQiLCJTdGRsaWJfU2VxIiwiU3RkbGliX0NoYXIiLCJtYWtlIiwibiIsImMiLCJzIiwiaW5pdCIsImkiLCJlbXB0eSIsImNvcHkiLCJsZW4iLCJyIiwidG9fc3RyaW5nIiwiYiIsIm9mX3N0cmluZyIsInN1YiIsIm9mcyIsInN1Yl9zdHJpbmciLCJzeW1ib2wiLCJhIiwibWF0Y2giLCJleHRlbmQiLCJsZWZ0IiwicmlnaHQiLCJkc3RvZmYiLCJzcmNvZmYiLCJjcHlsZW4iLCJmaWxsIiwiYmxpdCIsInMxIiwib2ZzMSIsInMyIiwib2ZzMiIsImJsaXRfc3RyaW5nIiwiaXRlciIsIml0ZXJpIiwiY29uY2F0Iiwic2VwIiwibCIsInNlcGxlbiIsImFjYyIsInBhcmFtIiwicG9zIiwiaGQiLCJ0bCIsIngiLCJkc3QiLCJjYXQiLCJsMSIsImwyIiwiaXNfc3BhY2UiLCJ0cmltIiwiaiIsInVuc2FmZV9lc2NhcGUiLCJlc2NhcGVkIiwibWFwIiwibWFwaSIsImZvbGRfbGVmdCIsImZvbGRfcmlnaHQiLCJleGlzdHMiLCJwIiwiZm9yX2FsbCIsInVwcGVyY2FzZV9hc2NpaSIsImxvd2VyY2FzZV9hc2NpaSIsImFwcGx5MSIsImNhcGl0YWxpemVfYXNjaWkiLCJ1bmNhcGl0YWxpemVfYXNjaWkiLCJzdGFydHNfd2l0aCIsInByZWZpeCIsImxlbl9zIiwibGVuX3ByZSIsImVuZHNfd2l0aCIsInN1ZmZpeCIsImxlbl9zdWYiLCJkaWZmIiwiaW5kZXhfcmVjIiwibGltIiwiaW5kZXgiLCJpbmRleF9yZWNfb3B0IiwiaW5kZXhfb3B0IiwiaW5kZXhfZnJvbSIsImluZGV4X2Zyb21fb3B0IiwicmluZGV4X3JlYyIsInJpbmRleCIsInJpbmRleF9mcm9tIiwicmluZGV4X3JlY19vcHQiLCJyaW5kZXhfb3B0IiwicmluZGV4X2Zyb21fb3B0IiwiY29udGFpbnNfZnJvbSIsImV4biIsImNvbnRhaW5zIiwicmNvbnRhaW5zX2Zyb20iLCJjb21wYXJlIiwic3BsaXRfb25fY2hhciIsInRvX3NlcSIsImF1eCIsInRvX3NlcWkiLCJvZl9zZXEiLCJidWYiLCJuZXdfbGVuIiwibmV3X2J1ZiIsInVuc2FmZV9nZXRfdWludDE2X2xlIiwidW5zYWZlX2dldF91aW50MTZfYmUiLCJnZXRfaW50OCIsImdldF91aW50MTZfbGUiLCJnZXRfdWludDE2X2JlIiwiZ2V0X2ludDE2X25lIiwiZ2V0X2ludDE2X2xlIiwiZ2V0X2ludDE2X2JlIiwiZ2V0X2ludDMyX2xlIiwiZ2V0X2ludDMyX2JlIiwiZ2V0X2ludDY0X2xlIiwiZ2V0X2ludDY0X2JlIiwidW5zYWZlX3NldF91aW50MTZfbGUiLCJ1bnNhZmVfc2V0X3VpbnQxNl9iZSIsInNldF9pbnQxNl9sZSIsInNldF9pbnQxNl9iZSIsInNldF9pbnQzMl9sZSIsInNldF9pbnQzMl9iZSIsInNldF9pbnQ2NF9sZSIsInNldF9pbnQ2NF9iZSIsImRlY19pbnZhbGlkIiwiZGVjX3JldCIsInUiLCJub3RfaW5feDgwX3RvX3hCRiIsIm5vdF9pbl94QTBfdG9feEJGIiwibm90X2luX3g4MF90b194OUYiLCJub3RfaW5feDkwX3RvX3hCRiIsIm5vdF9pbl94ODBfdG9feDhGIiwidXRmXzhfdWNoYXJfMyIsImIwIiwiYjEiLCJiMiIsInV0Zl84X3VjaGFyXzQiLCJiMyIsImdldF91dGZfOF91Y2hhciIsIm1heCIsImNzdF9ieXRlc19tbCIsInNldF91dGZfOF91Y2hhciIsInNldCIsImxhc3QiLCJpc192YWxpZF91dGZfOCIsImNzdF9pbmRleF9vdXRfb2ZfYm91bmRzIiwiZ2V0X3V0Zl8xNmJlX3VjaGFyIiwiaGkiLCJsbyIsInNldF91dGZfMTZiZV91Y2hhciIsImlzX3ZhbGlkX3V0Zl8xNmJlIiwiZ2V0X3V0Zl8xNmxlX3VjaGFyIiwic2V0X3V0Zl8xNmxlX3VjaGFyIiwiaXNfdmFsaWRfdXRmXzE2bGUiLCJTdGRsaWJfQnl0ZXMiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyx1QkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsd0JBQUE7QUFBQSxJQUFBQyx3QkFBQTtB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QUFBQSxLQUNoQixjQUFnQjtBQUFBLFNBQUFvSCxJQUNWO0FBQUEsS0FDRztBQUFBLE1BQ0EsY0FBYztBQUFBLFVBQUFpQixPQUVuQjtBQUFBLE1BQ0EsZUFBbUI7QUFBQSxVQUFBakIsTUFDYjtBQUFBLE1BQ0c7QUFBQSxXQUFBcEgsTUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BRDRCO0FBQUE7QUFBQSxTQUFBQSxNQU5KO0FBQUE7QUFBQTtBQUFBLEdBU2hCO0FBQUE7QUFBQSxJQUFBZ0o7QUFBQUEsTUEzeEJMO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVEcERwQiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjE1MzgwLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvc3RyaW5nLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgR2FsbGl1bSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBTdHJpbmcgb3BlcmF0aW9ucywgYmFzZWQgb24gYnl0ZSBzZXF1ZW5jZSBvcGVyYXRpb25zICopXG5cbigqIFdBUk5JTkc6IFNvbWUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZSBhcmUgZHVwbGljYXRlZCBpbiBieXRlcy5tbCBmb3JcbiAgIGVmZmljaWVuY3kgcmVhc29ucy4gV2hlbiB5b3UgbW9kaWZ5IHRoZSBvbmUgaW4gdGhpcyBmaWxlIHlvdSBuZWVkIHRvXG4gICBtb2RpZnkgaXRzIGR1cGxpY2F0ZSBpbiBieXRlcy5tbC5cbiAgIFRoZXNlIGZ1bmN0aW9ucyBoYXZlIGEgXCJkdXBsaWNhdGVkXCIgY29tbWVudCBhYm92ZSB0aGVpciBkZWZpbml0aW9uLlxuKilcblxuZXh0ZXJuYWwgbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuZXh0ZXJuYWwgZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9nZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6IHN0cmluZyAtPiBpbnQgLT4gIGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuXG5tb2R1bGUgQiA9IEJ5dGVzXG5cbmxldCBidHMgPSBCLnVuc2FmZV90b19zdHJpbmdcbmxldCBib3MgPSBCLnVuc2FmZV9vZl9zdHJpbmdcblxubGV0IG1ha2UgbiBjID1cbiAgQi5tYWtlIG4gYyB8PiBidHNcbmxldCBpbml0IG4gZiA9XG4gIEIuaW5pdCBuIGYgfD4gYnRzXG5sZXQgZW1wdHkgPSBcIlwiXG5sZXQgb2ZfYnl0ZXMgPSBCLnRvX3N0cmluZ1xubGV0IHRvX2J5dGVzID0gQi5vZl9zdHJpbmdcbmxldCBzdWIgcyBvZnMgbGVuID1cbiAgaWYgb2ZzID0gMCAmJiBsZW5ndGggcyA9IGxlbiB0aGVuIHMgZWxzZVxuICBCLnN1YiAoYm9zIHMpIG9mcyBsZW4gfD4gYnRzXG5sZXQgYmxpdCA9XG4gIEIuYmxpdF9zdHJpbmdcblxubGV0IGVuc3VyZV9nZSAoeDppbnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgaW52YWxpZF9hcmcgXCJTdHJpbmcuY29uY2F0XCJcblxubGV0IHJlYyBzdW1fbGVuZ3RocyBhY2Mgc2VwbGVuID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBhY2NcbiAgfCBoZCA6OiBbXSAtPiBsZW5ndGggaGQgKyBhY2NcbiAgfCBoZCA6OiB0bCAtPiBzdW1fbGVuZ3RocyAoZW5zdXJlX2dlIChsZW5ndGggaGQgKyBzZXBsZW4gKyBhY2MpIGFjYykgc2VwbGVuIHRsXG5cbmxldCByZWMgdW5zYWZlX2JsaXRzIGRzdCBwb3Mgc2VwIHNlcGxlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZHN0XG4gIHwgaGQgOjogW10gLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7IGRzdFxuICB8IGhkIDo6IHRsIC0+XG4gICAgdW5zYWZlX2JsaXQgaGQgMCBkc3QgcG9zIChsZW5ndGggaGQpO1xuICAgIHVuc2FmZV9ibGl0IHNlcCAwIGRzdCAocG9zICsgbGVuZ3RoIGhkKSBzZXBsZW47XG4gICAgdW5zYWZlX2JsaXRzIGRzdCAocG9zICsgbGVuZ3RoIGhkICsgc2VwbGVuKSBzZXAgc2VwbGVuIHRsXG5cbmxldCBjb25jYXQgc2VwID0gZnVuY3Rpb25cbiAgICBbXSAtPiBcIlwiXG4gIHwgW3NdIC0+IHNcbiAgfCBsIC0+IGxldCBzZXBsZW4gPSBsZW5ndGggc2VwIGluIGJ0cyBAQFxuICAgICAgICAgIHVuc2FmZV9ibGl0c1xuICAgICAgICAgICAgKEIuY3JlYXRlIChzdW1fbGVuZ3RocyAwIHNlcGxlbiBsKSlcbiAgICAgICAgICAgIDAgc2VwIHNlcGxlbiBsXG5cbmxldCBjYXQgPSAoIF4gKVxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaXRlciBmIHMgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvIGYgKHVuc2FmZV9nZXQgcyBpKSBkb25lXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpdGVyaSBmIHMgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBzIGkpIGRvbmVcblxubGV0IG1hcCBmIHMgPVxuICBCLm1hcCBmIChib3MgcykgfD4gYnRzXG5sZXQgbWFwaSBmIHMgPVxuICBCLm1hcGkgZiAoYm9zIHMpIHw+IGJ0c1xubGV0IGZvbGRfcmlnaHQgZiB4IGEgPVxuICBCLmZvbGRfcmlnaHQgZiAoYm9zIHgpIGFcbmxldCBmb2xkX2xlZnQgZiBhIHggPVxuICBCLmZvbGRfbGVmdCBmIGEgKGJvcyB4KVxubGV0IGV4aXN0cyBmIHMgPVxuICBCLmV4aXN0cyBmIChib3MgcylcbmxldCBmb3JfYWxsIGYgcyA9XG4gIEIuZm9yX2FsbCBmIChib3MgcylcblxuKCogQmV3YXJlOiB3ZSBjYW5ub3QgdXNlIEIudHJpbSBvciBCLmVzY2FwZSBiZWNhdXNlIHRoZXkgYWx3YXlzIG1ha2UgYVxuICAgY29weSwgYnV0IFN0cmluZy5tbGkgc3BlbGxzIG91dCBzb21lIGNhc2VzIHdoZXJlIHdlIGFyZSBub3QgYWxsb3dlZFxuICAgdG8gbWFrZSBhIGNvcHkuICopXG5cbmxldCBpc19zcGFjZSA9IGZ1bmN0aW9uXG4gIHwgJyAnIHwgJ1xcMDEyJyB8ICdcXG4nIHwgJ1xccicgfCAnXFx0JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgdHJpbSBzID1cbiAgaWYgcyA9IFwiXCIgdGhlbiBzXG4gIGVsc2UgaWYgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAwKSB8fCBpc19zcGFjZSAodW5zYWZlX2dldCBzIChsZW5ndGggcyAtIDEpKVxuICAgIHRoZW4gYnRzIChCLnRyaW0gKGJvcyBzKSlcbiAgZWxzZSBzXG5cbmxldCBlc2NhcGVkIHMgPVxuICBsZXQgYiA9IGJvcyBzIGluXG4gICgqIFdlIHNhdGlzZnkgW3Vuc2FmZV9lc2NhcGVdJ3MgcHJlY29uZGl0aW9uIGJ5IHBhc3NpbmcgYW5cbiAgICAgaW1tdXRhYmxlIGJ5dGUgc2VxdWVuY2UgW2JdLiAqKVxuICBsZXQgYicgPSBCLnVuc2FmZV9lc2NhcGUgYiBpblxuICAoKiBXaXRoIGpzX29mX29jYW1sLCBbYm9zXSBhbmQgW2J0c10gYXJlIG5vdCB0aGUgaWRlbnRpdHkuXG4gICAgIFdlIGNhbiBhdm9pZCBhIFtidHNdIGNvbnZlcnNpb24gaWYgW3Vuc2FmZV9lc2NhcGVdIHJldHVybmVkXG4gICAgIGl0cyBhcmd1bWVudC4gKilcbiAgaWYgYiA9PSBiJyB0aGVuIHMgZWxzZSBidHMgYidcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWMgcyBsaW0gaSBjID1cbiAgaWYgaSA+PSBsaW0gdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgaW5kZXhfcmVjIHMgbGltIChpICsgMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaW5kZXggcyBjID0gaW5kZXhfcmVjIHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWNfb3B0IHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIGluZGV4X3JlY19vcHQgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleF9vcHQgcyBjID0gaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcykgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleF9mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb20gLyBCeXRlcy5pbmRleF9mcm9tXCIgZWxzZVxuICAgIGluZGV4X3JlYyBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb21fb3B0IC8gQnl0ZXMuaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgaW5kZXhfcmVjX29wdCBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgcmluZGV4X3JlYyBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIHJpbmRleF9yZWMgcyAoaSAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleCBzIGMgPSByaW5kZXhfcmVjIHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4X2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgLTEgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb20gLyBCeXRlcy5yaW5kZXhfZnJvbVwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjIHMgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgcmluZGV4X3JlY19vcHQgcyBpIGMgPVxuICBpZiBpIDwgMCB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSByaW5kZXhfcmVjX29wdCBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4X29wdCBzIGMgPSByaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5yaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgcmluZGV4X3JlY19vcHQgcyBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5jb250YWluc19mcm9tIC8gQnl0ZXMuY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChpbmRleF9yZWMgcyBsIGkgYyk7IHRydWUgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGNvbnRhaW5zIHMgYyA9IGNvbnRhaW5zX2Zyb20gcyAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJjb250YWluc19mcm9tIHMgaSBjID1cbiAgaWYgaSA8IDAgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5yY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChyaW5kZXhfcmVjIHMgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG5sZXQgdXBwZXJjYXNlX2FzY2lpIHMgPVxuICBCLnVwcGVyY2FzZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xubGV0IGxvd2VyY2FzZV9hc2NpaSBzID1cbiAgQi5sb3dlcmNhc2VfYXNjaWkgKGJvcyBzKSB8PiBidHNcbmxldCBjYXBpdGFsaXplX2FzY2lpIHMgPVxuICBCLmNhcGl0YWxpemVfYXNjaWkgKGJvcyBzKSB8PiBidHNcbmxldCB1bmNhcGl0YWxpemVfYXNjaWkgcyA9XG4gIEIudW5jYXBpdGFsaXplX2FzY2lpIChib3MgcykgfD4gYnRzXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBzdGFydHNfd2l0aCB+cHJlZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3ByZSA9IGxlbmd0aCBwcmVmaXggaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9wcmUgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgaSA8PiB1bnNhZmVfZ2V0IHByZWZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGxlbl9zID49IGxlbl9wcmUgJiYgYXV4IDBcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGVuZHNfd2l0aCB+c3VmZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3N1ZiA9IGxlbmd0aCBzdWZmaXggaW5cbiAgbGV0IGRpZmYgPSBsZW5fcyAtIGxlbl9zdWYgaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9zdWYgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgKGRpZmYgKyBpKSA8PiB1bnNhZmVfZ2V0IHN1ZmZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGRpZmYgPj0gMCAmJiBhdXggMFxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaCA6IGludCAtPiBzdHJpbmcgLT4gaW50ID0gXCJjYW1sX3N0cmluZ19oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaCAwIHhcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHNwbGl0X29uX2NoYXIgc2VwIHMgPVxuICBsZXQgciA9IHJlZiBbXSBpblxuICBsZXQgaiA9IHJlZiAobGVuZ3RoIHMpIGluXG4gIGZvciBpID0gbGVuZ3RoIHMgLSAxIGRvd250byAwIGRvXG4gICAgaWYgdW5zYWZlX2dldCBzIGkgPSBzZXAgdGhlbiBiZWdpblxuICAgICAgciA6PSBzdWIgcyAoaSArIDEpICghaiAtIGkgLSAxKSA6OiAhcjtcbiAgICAgIGogOj0gaVxuICAgIGVuZFxuICBkb25lO1xuICBzdWIgcyAwICFqIDo6ICFyXG5cbnR5cGUgdCA9IHN0cmluZ1xuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5leHRlcm5hbCBlcXVhbCA6IHN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbCA9IFwiY2FtbF9zdHJpbmdfZXF1YWxcIiBbQEBub2FsbG9jXVxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHMgPSBib3MgcyB8PiBCLnRvX3NlcVxuXG5sZXQgdG9fc2VxaSBzID0gYm9zIHMgfD4gQi50b19zZXFpXG5cbmxldCBvZl9zZXEgZyA9IEIub2Zfc2VxIGcgfD4gYnRzXG5cbigqIFVURiBkZWNvZGVycyBhbmQgdmFsaWRhdG9ycyAqKVxuXG5sZXQgZ2V0X3V0Zl84X3VjaGFyIHMgaSA9IEIuZ2V0X3V0Zl84X3VjaGFyIChib3MgcykgaVxubGV0IGlzX3ZhbGlkX3V0Zl84IHMgPSBCLmlzX3ZhbGlkX3V0Zl84IChib3MgcylcblxubGV0IGdldF91dGZfMTZiZV91Y2hhciBzIGkgPSBCLmdldF91dGZfMTZiZV91Y2hhciAoYm9zIHMpIGlcbmxldCBpc192YWxpZF91dGZfMTZiZSBzID0gQi5pc192YWxpZF91dGZfMTZiZSAoYm9zIHMpXG5cbmxldCBnZXRfdXRmXzE2bGVfdWNoYXIgcyBpID0gQi5nZXRfdXRmXzE2bGVfdWNoYXIgKGJvcyBzKSBpXG5sZXQgaXNfdmFsaWRfdXRmXzE2bGUgcyA9IEIuaXNfdmFsaWRfdXRmXzE2bGUgKGJvcyBzKVxuXG4oKiogezYgQmluYXJ5IGVuY29kaW5nL2RlY29kaW5nIG9mIGludGVnZXJzfSAqKVxuXG5leHRlcm5hbCBnZXRfdWludDggOiBzdHJpbmcgLT4gaW50IC0+IGludCA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG5leHRlcm5hbCBnZXRfdWludDE2X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX3N0cmluZ19nZXQxNlwiXG5leHRlcm5hbCBnZXRfaW50MzJfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9zdHJpbmdfZ2V0MzJcIlxuZXh0ZXJuYWwgZ2V0X2ludDY0X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfc3RyaW5nX2dldDY0XCJcblxubGV0IGdldF9pbnQ4IHMgaSA9IEIuZ2V0X2ludDggKGJvcyBzKSBpXG5sZXQgZ2V0X3VpbnQxNl9sZSBzIGkgPSBCLmdldF91aW50MTZfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X3VpbnQxNl9iZSBzIGkgPSBCLmdldF91aW50MTZfYmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDE2X25lIHMgaSA9IEIuZ2V0X2ludDE2X25lIChib3MgcykgaVxubGV0IGdldF9pbnQxNl9sZSBzIGkgPSBCLmdldF9pbnQxNl9sZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MTZfYmUgcyBpID0gQi5nZXRfaW50MTZfYmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDMyX2xlIHMgaSA9IEIuZ2V0X2ludDMyX2xlIChib3MgcykgaVxubGV0IGdldF9pbnQzMl9iZSBzIGkgPSBCLmdldF9pbnQzMl9iZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50NjRfbGUgcyBpID0gQi5nZXRfaW50NjRfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDY0X2JlIHMgaSA9IEIuZ2V0X2ludDY0X2JlIChib3MgcykgaVxuXG4oKiBTcGVsbGNoZWNraW5nICopXG5cbmxldCB1dGZfOF91Y2hhcl9sZW5ndGggcyA9XG4gIGxldCBzbGVuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IGkgPSByZWYgMCBhbmQgdWxlbiA9IHJlZiAwIGluXG4gIHdoaWxlICghaSA8IHNsZW4pIGRvXG4gICAgbGV0IGRlY19sZW4gPSBVY2hhci51dGZfOF9kZWNvZGVfbGVuZ3RoX29mX2J5dGUgKHVuc2FmZV9nZXQgcyAhaSkgaW5cbiAgICBpIDo9ICghaSArIGlmIGRlY19sZW4gPSAwIHRoZW4gMSAoKiBjb3VudCBvbmUgVWNoYXIucmVwICopIGVsc2UgZGVjX2xlbik7XG4gICAgaW5jciB1bGVuO1xuICBkb25lO1xuICAhdWxlblxuXG5sZXQgdWNoYXJfYXJyYXlfb2ZfdXRmXzhfc3RyaW5nIHMgPVxuICBsZXQgc2xlbiA9IGxlbmd0aCBzIGluICgqIGlzIGFuIHVwcGVyIGJvdW5kIG9uIFVjaGFyLnQgY291bnQgKilcbiAgbGV0IHVjaGFycyA9IEFycmF5Lm1ha2Ugc2xlbiBVY2hhci5tYXggaW5cbiAgbGV0IGsgPSByZWYgMCBhbmQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICghaSA8IHNsZW4pIGRvXG4gICAgbGV0IGRlYyA9IGdldF91dGZfOF91Y2hhciBzICFpIGluXG4gICAgaSA6PSAhaSArIFVjaGFyLnV0Zl9kZWNvZGVfbGVuZ3RoIGRlYztcbiAgICB1Y2hhcnMuKCFrKSA8LSBVY2hhci51dGZfZGVjb2RlX3VjaGFyIGRlYztcbiAgICBpbmNyIGs7XG4gIGRvbmU7XG4gIHVjaGFycywgIWtcblxubGV0IGVkaXRfZGlzdGFuY2UnID8obGltaXQgPSBJbnQubWF4X2ludCkgcyAoczAsIGxlbjApIHMxID1cbiAgaWYgbGltaXQgPD0gMSB0aGVuIChpZiBlcXVhbCBzIHMxIHRoZW4gMCBlbHNlIGxpbWl0KSBlbHNlXG4gIGxldFtAaW5saW5lXSBtaW5pbXVtIGEgYiBjID0gSW50Lm1pbiBhIChJbnQubWluIGIgYykgaW5cbiAgbGV0IHMxLCBsZW4xID0gdWNoYXJfYXJyYXlfb2ZfdXRmXzhfc3RyaW5nIHMxIGluXG4gIGxldCBsaW1pdCA9IEludC5taW4gKEludC5tYXggbGVuMCBsZW4xKSBsaW1pdCBpblxuICBpZiBJbnQuYWJzIChsZW4xIC0gbGVuMCkgPj0gbGltaXQgdGhlbiBsaW1pdCBlbHNlXG4gIGxldCBzMCwgczEgPSBpZiBsZW4wID4gbGVuMSB0aGVuIHMwLCBzMSBlbHNlIHMxLCBzMCBpblxuICBsZXQgbGVuMCwgbGVuMSA9IGlmIGxlbjAgPiBsZW4xIHRoZW4gbGVuMCwgbGVuMSBlbHNlIGxlbjEsIGxlbjAgaW5cbiAgbGV0IHJlYyBsb29wIHJvd19taW51czIgcm93X21pbnVzMSByb3cgaSBsZW4wIGxpbWl0IHMwIHMxID1cbiAgICBpZiBpID4gbGVuMCB0aGVuIHJvd19taW51czEuKEFycmF5Lmxlbmd0aCByb3dfbWludXMxIC0gMSkgZWxzZVxuICAgIGxldCBsZW4xID0gQXJyYXkubGVuZ3RoIHJvdyAtIDEgaW5cbiAgICBsZXQgcm93X21pbiA9IHJlZiBJbnQubWF4X2ludCBpblxuICAgIHJvdy4oMCkgPC0gaTtcbiAgICBsZXQgam1heCA9XG4gICAgICBsZXQgam1heCA9IEludC5taW4gbGVuMSAoaSArIGxpbWl0IC0gMSkgaW5cbiAgICAgIGlmIGptYXggPCAwIHRoZW4gKCogb3ZlcmZsb3cgKikgbGVuMSBlbHNlIGptYXhcbiAgICBpblxuICAgIGZvciBqID0gSW50Lm1heCAxIChpIC0gbGltaXQpIHRvIGptYXggZG9cbiAgICAgIGxldCBjb3N0ID0gaWYgVWNoYXIuZXF1YWwgczAuKGktMSkgczEuKGotMSkgdGhlbiAwIGVsc2UgMSBpblxuICAgICAgbGV0IG1pbiA9IG1pbmltdW1cbiAgICAgICAgICAocm93X21pbnVzMS4oai0xKSArIGNvc3QpICgqIHN1YnN0aXR1dGUgKilcbiAgICAgICAgICAocm93X21pbnVzMS4oaikgKyAxKSAgICAgICgqIGRlbGV0ZSAqKVxuICAgICAgICAgIChyb3cuKGotMSkgKyAxKSAgICAgICAgICAgKCogaW5zZXJ0ICopXG4gICAgICAgICAgKCogTm90ZSB3aGVuIGogPSBpIC0gbGltaXQsIHRoZSBsYXR0ZXIgW3Jvd10gcmVhZCBtYWtlcyBhIGJvZ3VzIHJlYWRcbiAgICAgICAgICAgICBvbiB0aGUgdmFsdWUgdGhhdCB3YXMgaW4gdGhlIG1hdHJpeCBhdCBkLihpLTIpLihpIC0gbGltaXQgLSAxKS5cbiAgICAgICAgICAgICBTaW5jZSBieSBpbmR1Y3Rpb24gZm9yIGFsbCBpLGosIGQuKGkpLihqKSA+PSBhYnMgKGkgLSBqKSxcbiAgICAgICAgICAgICAocm93LihqLTEpICsgMSkgaXMgZ3JlYXRlciBvciBlcXVhbCB0byBbbGltaXRdIGFuZCB0aHVzIGRvZXNcbiAgICAgICAgICAgICBub3QgYWZmZWN0IGFkdmVyc2VseSB0aGUgbWluaW11bSBjb21wdXRhdGlvbi4gKilcbiAgICAgIGluXG4gICAgICBsZXQgbWluID1cbiAgICAgICAgaWYgKGkgPiAxICYmIGogPiAxICYmXG4gICAgICAgICAgICBVY2hhci5lcXVhbCBzMC4oaS0xKSBzMS4oai0yKSAmJlxuICAgICAgICAgICAgVWNoYXIuZXF1YWwgczAuKGktMikgczEuKGotMSkpXG4gICAgICAgIHRoZW4gSW50Lm1pbiBtaW4gKHJvd19taW51czIuKGotMikgKyBjb3N0KSAoKiB0cmFuc3Bvc2UgKilcbiAgICAgICAgZWxzZSBtaW5cbiAgICAgIGluXG4gICAgICByb3cuKGopIDwtIG1pbjtcbiAgICAgIHJvd19taW4gOj0gSW50Lm1pbiAhcm93X21pbiBtaW47XG4gICAgZG9uZTtcbiAgICBpZiAhcm93X21pbiA+PSBsaW1pdCB0aGVuICgqIGNhbiBubyBsb25nZXIgZGVjcmVhc2UgKikgbGltaXQgZWxzZVxuICAgIGxvb3Agcm93X21pbnVzMSByb3cgcm93X21pbnVzMiAoaSArIDEpIGxlbjAgbGltaXQgczAgczFcbiAgaW5cbiAgbGV0IGlnbm9yZSA9XG4gICAgKCogVmFsdWUgdXNlZCB0byBtYWtlIHRoZSB2YWx1ZXMgYXJvdW5kIHRoZSBkaWFnb25hbCBzdHJpcGUgaWdub3JlZFxuICAgICAgIGJ5IHRoZSBtaW4gY29tcHV0YXRpb25zIHdoZW4gd2UgaGF2ZSBhIGxpbWl0LiAqKVxuICAgIGxpbWl0ICsgMVxuICBpblxuICBsZXQgcm93X21pbnVzMiA9IEFycmF5Lm1ha2UgKGxlbjEgKyAxKSBpZ25vcmUgaW5cbiAgbGV0IHJvd19taW51czEgPSBBcnJheS5pbml0IChsZW4xICsgMSkgKGZ1biB4IC0+IHgpIGluXG4gIGxldCByb3cgPSBBcnJheS5tYWtlIChsZW4xICsgMSkgaWdub3JlIGluXG4gIGxldCBkID0gbG9vcCByb3dfbWludXMyIHJvd19taW51czEgcm93IDEgbGVuMCBsaW1pdCBzMCBzMSBpblxuICBpZiBkID4gbGltaXQgdGhlbiBsaW1pdCBlbHNlIGRcblxubGV0IGVkaXRfZGlzdGFuY2UgP2xpbWl0IHMwIHMxID1cbiAgbGV0IHVzMCA9IHVjaGFyX2FycmF5X29mX3V0Zl84X3N0cmluZyBzMCBpblxuICBlZGl0X2Rpc3RhbmNlJyA/bGltaXQgczAgdXMwIHMxXG5cbmxldCBkZWZhdWx0X21heF9kaXN0IHMgPSBtYXRjaCB1dGZfOF91Y2hhcl9sZW5ndGggcyB3aXRoXG4gIHwgMCB8IDEgfCAyIC0+IDBcbiAgfCAzIHwgNCAtPiAxXG4gIHwgXyAtPiAyXG5cbmxldCBzcGVsbGNoZWNrID8obWF4X2Rpc3QgPSBkZWZhdWx0X21heF9kaXN0KSBpdGVyX2RpY3QgcyA9XG4gIGxldCBtaW4gPSByZWYgKG1heF9kaXN0IHMpIGluXG4gIGxldCBhY2MgPSByZWYgW10gaW5cbiAgbGV0IHNlbGVjdF93b3JkcyBzIHVzIHdvcmQgPVxuICAgIGxldCBkID0gZWRpdF9kaXN0YW5jZScgfmxpbWl0OighbWluICsgMSkgcyB1cyB3b3JkIGluXG4gICAgaWYgZCA9ICFtaW4gdGhlbiAoYWNjIDo9IHdvcmQgOjogIWFjYykgZWxzZVxuICAgIGlmIGQgPCAhbWluIHRoZW4gKG1pbiA6PSBkOyBhY2MgOj0gW3dvcmRdKSBlbHNlICgpXG4gIGluXG4gIGxldCB1cyA9IHVjaGFyX2FycmF5X29mX3V0Zl84X3N0cmluZyBzIGluXG4gIGl0ZXJfZGljdCAoc2VsZWN0X3dvcmRzIHMgdXMpO1xuICBMaXN0LnJldiAhYWNjXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfYXJyYXlfbWFrZSIsImNhbWxfYmxpdF9zdHJpbmciLCJjYW1sX2NoZWNrX2JvdW5kIiwiY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlIiwiY2FtbF9tbF9zdHJpbmdfbGVuZ3RoIiwiY2FtbF9zdHJpbmdfZXF1YWwiLCJjYW1sX3N0cmluZ19oYXNoIiwiY2FtbF9zdHJpbmdfdW5zYWZlX2dldCIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWIiLCJTdGRsaWJfTGlzdCIsIlN0ZGxpYl9JbnQiLCJTdGRsaWJfVWNoYXIiLCJTdGRsaWJfQXJyYXkiLCJTdGRsaWJfQnl0ZXMiLCJidHMiLCJib3MiLCJtYWtlIiwibiIsImMiLCJpbml0Iiwib2ZfYnl0ZXMiLCJ0b19ieXRlcyIsInN1YiIsInMiLCJvZnMiLCJsZW4iLCJibGl0IiwiY3N0IiwiY29uY2F0Iiwic2VwIiwibCIsInNlcGxlbiIsImFjYyIsInBhcmFtIiwicG9zIiwiaGQiLCJ0bCIsIngiLCJkc3QiLCJjYXQiLCJpdGVyIiwiaSIsIml0ZXJpIiwibWFwIiwibWFwaSIsImZvbGRfcmlnaHQiLCJhIiwiZm9sZF9sZWZ0IiwiZXhpc3RzIiwiZm9yX2FsbCIsImlzX3NwYWNlIiwidHJpbSIsImVzY2FwZWQiLCJiIiwiaW5kZXhfcmVjIiwibGltIiwiaW5kZXgiLCJpbmRleF9yZWNfb3B0IiwiaW5kZXhfb3B0IiwiaW5kZXhfZnJvbSIsImluZGV4X2Zyb21fb3B0IiwicmluZGV4X3JlYyIsInJpbmRleCIsInJpbmRleF9mcm9tIiwicmluZGV4X3JlY19vcHQiLCJyaW5kZXhfb3B0IiwicmluZGV4X2Zyb21fb3B0IiwiY29udGFpbnNfZnJvbSIsImV4biIsImNvbnRhaW5zIiwicmNvbnRhaW5zX2Zyb20iLCJ1cHBlcmNhc2VfYXNjaWkiLCJsb3dlcmNhc2VfYXNjaWkiLCJjYXBpdGFsaXplX2FzY2lpIiwidW5jYXBpdGFsaXplX2FzY2lpIiwic3RhcnRzX3dpdGgiLCJwcmVmaXgiLCJsZW5fcyIsImxlbl9wcmUiLCJlbmRzX3dpdGgiLCJzdWZmaXgiLCJsZW5fc3VmIiwiZGlmZiIsImhhc2giLCJzcGxpdF9vbl9jaGFyIiwiaiIsInIiLCJjb21wYXJlIiwidG9fc2VxIiwidG9fc2VxaSIsIm9mX3NlcSIsImciLCJnZXRfdXRmXzhfdWNoYXIiLCJpc192YWxpZF91dGZfOCIsImdldF91dGZfMTZiZV91Y2hhciIsImlzX3ZhbGlkX3V0Zl8xNmJlIiwiZ2V0X3V0Zl8xNmxlX3VjaGFyIiwiaXNfdmFsaWRfdXRmXzE2bGUiLCJnZXRfaW50OCIsImdldF91aW50MTZfbGUiLCJnZXRfdWludDE2X2JlIiwiZ2V0X2ludDE2X25lIiwiZ2V0X2ludDE2X2xlIiwiZ2V0X2ludDE2X2JlIiwiZ2V0X2ludDMyX2xlIiwiZ2V0X2ludDMyX2JlIiwiZ2V0X2ludDY0X2xlIiwiZ2V0X2ludDY0X2JlIiwidWNoYXJfYXJyYXlfb2ZfdXRmXzhfc3RyaW5nIiwic2xlbiIsInVjaGFycyIsImsiLCJkZWMiLCJlZGl0X2Rpc3RhbmNlIiwib3B0IiwiczEiLCJsaW1pdCIsImxlbjAiLCJzMCIsIm1hdGNoIiwibGVuMSIsImlnbm9yZSIsInJvd19taW51czIiLCJyb3dfbWludXMxIiwicm93IiwiZCIsInJvd19taW4iLCJqbWF4IiwiY29zdCIsIm1pbiIsInVzMCIsImRlZmF1bHRfbWF4X2Rpc3QiLCJ1bGVuIiwiZGVjX2xlbiIsInNwZWxsY2hlY2siLCJpdGVyX2RpY3QiLCJtYXhfZGlzdCIsInVzIiwid29yZCIsIlN0ZGxpYl9TdHJpbmciXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxJQUFBQyx3QkFBQTtBQUFBLElBQUFDLG9CQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyx5QkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGFBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxNQUFBO0FBQUEsSUFBQUMsTUFBQTtBQUFBLFlBQUFDLEtBQUFDLEdBQUFDLEdDbUNFLE9BQVUsSUFBVixpQ0FBaUI7QUFBQSxZQUFBQyxLQUFBRixHQUFBZCxHQUVqQixPQUFVLElBQVYsaUNBQWlCO0FBQUEsT0FBQWlCLFdEckNuQixpQkFBQUMsV0FBQTtBQUFBLFlBQUFDLElBQUFDLEdBQUFDLEtBQUFDO0FBQUFBLElDMENFLGtEQUFrQztBQUFBLFlBQzVCO0FBQUEsSUFBTixPQUFxQixJQUFyQix3Q0FBNEI7QUFBQTtBQUFBLE9BQUFDLE9EM0M5QixrQkFBQUMsTUFBQTtBQUFBLFlBQUFDLE9BQUFDLEtBQUFDO0FBQUFBLElDK0RXLFFBQ0Q7QUFBQSxJQURDLGVBQUFQLElBQUEsTUFFQTtBQUFB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QUFBQTtBQUFBO0FBQUE7QUFBQSxVQUFBb0YsSUFEQTtBQUFBO0FBQUEsS0FZRjtBQUFBO0FBQUE7QUFBQSxZQUFBWixnQkFBQUcsT0FBQUUsSUFBQUg7QUFBQUEsUUFBQWUsTUFHVTtBQUFBLElBQ1Ysd0NBQStCO0FBQUE7QUFBQSxZQUFBQyxpQkFBQTVHO0FBQUFBLFFBQUFzRixPQTVFL0IsMEJBQUF1QixPQUVBLEdBQUEzRixJQUFBO0FBQUE7QUFBQTtBQUFBLE1BNEVpRCwyQkFFdEMsOEJBREk7QUFBQSxNQUVSO0FBQUE7QUFBQTtBQUFBLE1BQUE0RixVQTlFUyw0QkFBZDtBQUFBLFVBQ0E7QUFBQSxNQUFBRCxTQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUEsR0E0RU07QUFBQSxZQUFBRSxXQUFBcEIsS0FBQXFCLFdBQUFoSDtBQUFBQTtBQUFBQSxLQUFBaUgsV0FFSztBQUFBLEtBQUFQLE1BQ0M7QUFBQSxLQUFBUSxLQU9MO0FBQUEsS0FBQXpHLE1BTlQ7QUFBQSxJQU9BO0FBQUE7QUFBQSxlQUFBMEc7QUFBQUEsV0FBQWIsSUFMVTtBQUFBLE9BQ1I7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUkyQix5Q0FDaEI7QUFBQTtBQUFBO0FBQUEsSUFBQWM7QUFBQUEsTUQzWGYiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjoxNjAwMywiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL2Zsb2F0Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICBOaWNvbGFzIE9qZWRhIEJhciwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leHRlcm5hbCBuZWcgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJW5lZ2Zsb2F0XCJcbmV4dGVybmFsIGFkZCA6IGZsb2F0IC0+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+IHQgPSBcImNhbWxfZmxvYXRhcnJheV9jcmVhdGVcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdCA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX3NldFwiXG5cbiAgZXh0ZXJuYWwgbWFrZSA6IChpbnRbQHVudGFnZ2VkXSkgLT4gKGZsb2F0W0B1bmJveGVkXSkgLT4gdCA9XG4gICAgXCJjYW1sX2Zsb2F0YXJyYXlfbWFrZVwiIFwiY2FtbF9mbG9hdGFycmF5X21ha2VfdW5ib3hlZFwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX2ZpbGxcbiAgICA6IHQgLT4gKGludFtAdW50YWdnZWRdKSAtPiAoaW50W0B1bnRhZ2dlZF0pIC0+IChmbG9hdFtAdW5ib3hlZF0pIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9mbG9hdGFycmF5X2ZpbGxcIiBcImNhbWxfZmxvYXRhcnJheV9maWxsX3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIHVuc2FmZV9ibGl0OiB0IC0+IGludCAtPiB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9XG4gICAgXCJjYW1sX2Zsb2F0YXJyYXlfYmxpdFwiIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX3N1YiA6IHQgLT4gaW50IC0+IGludCAtPiB0ID0gXCJjYW1sX2Zsb2F0YXJyYXlfc3ViXCJcbiAgZXh0ZXJuYWwgYXBwZW5kX3ByaW0gOiB0IC0+IHQgLT4gdCA9IFwiY2FtbF9mbG9hdGFycmF5X2FwcGVuZFwiXG4gIGV4dGVybmFsIGNvbmNhdCA6IHQgbGlzdCAtPiB0ID0gXCJjYW1sX2Zsb2F0YXJyYXlfY29uY2F0XCJcblxuICBsZXQgY2hlY2sgYSBvZnMgbGVuIG1zZyA9XG4gICAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyArIGxlbiA8IDAgfHwgb2ZzICsgbGVuID4gbGVuZ3RoIGEgdGhlblxuICAgICAgaW52YWxpZF9hcmcgbXNnXG5cbiAgbGV0IGVtcHR5ID0gY3JlYXRlIDBcblxuICBsZXQgaW5pdCBsIGYgPVxuICAgIGlmIGwgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5pbml0XCJcbiAgICBlbHNlXG4gICAgICBsZXQgcmVzID0gY3JlYXRlIGwgaW5cbiAgICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IHJlcyBpIChmIGkpXG4gICAgICBkb25lO1xuICAgICAgcmVzXG5cbiAgbGV0IG1ha2VfbWF0cml4IHN4IHN5IHYgPVxuICAgICgqIFdlIHJhaXNlIGV2ZW4gaWYgW3N4ID0gMCAmJiBzeSA8IDBdOiAqKVxuICAgIGlmIHN5IDwgMCB0aGVuIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkubWFrZV9tYXRyaXhcIjtcbiAgICBsZXQgcmVzID0gQXJyYXkubWFrZSBzeCAoY3JlYXRlIDApIGluXG4gICAgaWYgc3kgPiAwIHRoZW4gYmVnaW5cbiAgICAgIGZvciB4ID0gMCB0byBzeCAtIDEgZG9cbiAgICAgICAgQXJyYXkudW5zYWZlX3NldCByZXMgeCAobWFrZSBzeSB2KVxuICAgICAgZG9uZTtcbiAgICBlbmQ7XG4gICAgcmVzXG5cbiAgbGV0IGluaXRfbWF0cml4IHN4IHN5IGYgPVxuICAgICgqIFdlIHJhaXNlIGV2ZW4gaWYgW3N4ID0gMCAmJiBzeSA8IDBdOiAqKVxuICAgIGlmIHN5IDwgMCB0aGVuIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkuaW5pdF9tYXRyaXhcIjtcbiAgICBsZXQgcmVzID0gQXJyYXkubWFrZSBzeCAoY3JlYXRlIDApIGluXG4gICAgaWYgc3kgPiAwIHRoZW4gYmVnaW5cbiAgICAgIGZvciB4ID0gMCB0byBzeCAtIDEgZG9cbiAgICAgICAgbGV0IHJvdyA9IGNyZWF0ZSBzeSBpblxuICAgICAgICBmb3IgeSA9IDAgdG8gc3kgLSAxIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCByb3cgeSAoZiB4IHkpXG4gICAgICAgIGRvbmU7XG4gICAgICAgIEFycmF5LnVuc2FmZV9zZXQgcmVzIHggcm93XG4gICAgICBkb25lO1xuICAgIGVuZDtcbiAgICByZXNcblxuICBsZXQgc3ViIGEgb2ZzIGxlbiA9XG4gICAgY2hlY2sgYSBvZnMgbGVuIFwiRmxvYXQuQXJyYXkuc3ViXCI7XG4gICAgdW5zYWZlX3N1YiBhIG9mcyBsZW5cblxuICBsZXQgY29weSBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgaWYgbCA9IDAgdGhlbiBlbXB0eVxuICAgIGVsc2UgdW5zYWZlX3N1YiBhIDAgbFxuXG4gIGxldCBhcHBlbmQgYTEgYTIgPVxuICAgIGxldCBsMSA9IGxlbmd0aCBhMSBpblxuICAgIGlmIGwxID0gMCB0aGVuIGNvcHkgYTJcbiAgICBlbHNlIGlmIGxlbmd0aCBhMiA9IDAgdGhlbiB1bnNhZmVfc3ViIGExIDAgbDFcbiAgICBlbHNlIGFwcGVuZF9wcmltIGExIGEyXG5cbiAgKCogaW5saW5pbmcgZXhwb3NlcyBhIGZsb2F0LXVuYm94aW5nIG9wcG9ydHVuaXR5IGZvciBbdl0gKilcbiAgbGV0W0BpbmxpbmVdIGZpbGwgYSBvZnMgbGVuIHYgPVxuICAgIGNoZWNrIGEgb2ZzIGxlbiBcIkZsb2F0LkFycmF5LmZpbGxcIjtcbiAgICB1bnNhZmVfZmlsbCBhIG9mcyBsZW4gdlxuXG4gIGxldCBibGl0IHNyYyBzb2ZzIGRzdCBkb2ZzIGxlbiA9XG4gICAgY2hlY2sgc3JjIHNvZnMgbGVuIFwiRmxvYXQuYXJyYXkuYmxpdFwiO1xuICAgIGNoZWNrIGRzdCBkb2ZzIGxlbiBcIkZsb2F0LmFycmF5LmJsaXRcIjtcbiAgICB1bnNhZmVfYmxpdCBzcmMgc29mcyBkc3QgZG9mcyBsZW5cblxuICBsZXQgdG9fbGlzdCBhID1cbiAgICBMaXN0LmluaXQgKGxlbmd0aCBhKSAodW5zYWZlX2dldCBhKVxuXG4gIGxldCBvZl9saXN0IGwgPVxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgKExpc3QubGVuZ3RoIGwpIGluXG4gICAgbGV0IHJlYyBmaWxsIGkgbCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gcmVzdWx0XG4gICAgICB8IGggOjogdCAtPiB1bnNhZmVfc2V0IHJlc3VsdCBpIGg7IGZpbGwgKGkgKyAxKSB0XG4gICAgaW5cbiAgICBmaWxsIDAgbFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZXF1YWwgZXEgYSBiID1cbiAgICBpZiBsZW5ndGggYSA8PiBsZW5ndGggYiB0aGVuIGZhbHNlIGVsc2VcbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IGxlbiA9IGxlbmd0aCBhIGluXG4gICAgd2hpbGUgIWkgPCBsZW4gJiYgZXEgKHVuc2FmZV9nZXQgYSAhaSkgKHVuc2FmZV9nZXQgYiAhaSkgZG8gaW5jciBpIGRvbmU7XG4gICAgIWkgPSBsZW5cblxuICBsZXQgZmxvYXRfY29tcGFyZSA9IGNvbXBhcmVcbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBjb21wYXJlIGNtcCBhIGIgPVxuICAgIGxldCBsZW5fYSA9IGxlbmd0aCBhIGFuZCBsZW5fYiA9IGxlbmd0aCBiIGluXG4gICAgbGV0IGRpZmYgPSBsZW5fYSAtIGxlbl9iIGluXG4gICAgaWYgZGlmZiA8PiAwIHRoZW4gKGlmIGRpZmYgPCAwIHRoZW4gLTEgZWxzZSAxKSBlbHNlXG4gICAgbGV0IGkgPSByZWYgMCBhbmQgYyA9IHJlZiAwIGluXG4gICAgd2hpbGUgIWkgPCBsZW5fYSAmJiAhYyA9IDBcbiAgICBkbyBjIDo9IGNtcCAodW5zYWZlX2dldCBhICFpKSAodW5zYWZlX2dldCBiICFpKTsgaW5jciBpIGRvbmU7XG4gICAgIWNcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGl0ZXIgZiBhID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBpdGVyMiBmIGEgYiA9XG4gICAgaWYgbGVuZ3RoIGEgPD4gbGVuZ3RoIGIgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5pdGVyMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICAgIGVsc2VcbiAgICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkgZG9uZVxuXG4gIGxldCBtYXAgZiBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG1hcF9pbnBsYWNlIGYgYSA9XG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCBhIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lXG5cbiAgbGV0IG1hcDIgZiBhIGIgPVxuICAgIGxldCBsYSA9IGxlbmd0aCBhIGluXG4gICAgbGV0IGxiID0gbGVuZ3RoIGIgaW5cbiAgICBpZiBsYSA8PiBsYiB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5Lm1hcDI6IGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCJcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IGNyZWF0ZSBsYSBpblxuICAgICAgZm9yIGkgPSAwIHRvIGxhIC0gMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkpXG4gICAgICBkb25lO1xuICAgICAgclxuICAgIGVuZFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgaXRlcmkgZiBhID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxuICBsZXQgbWFwaSBmIGEgPVxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiBpICh1bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBtYXBpX2lucGxhY2UgZiBhID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IGEgaSAoZiBpICh1bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZVxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZm9sZF9sZWZ0IGYgeCBhID1cbiAgICBsZXQgciA9IHJlZiB4IGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IGEgaSlcbiAgICBkb25lO1xuICAgICFyXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmb2xkX3JpZ2h0IGYgYSB4ID1cbiAgICBsZXQgciA9IHJlZiB4IGluXG4gICAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDAgZG9cbiAgICAgIHIgOj0gZiAodW5zYWZlX2dldCBhIGkpICFyXG4gICAgZG9uZTtcbiAgICAhclxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZXhpc3RzIHAgYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSBsb29wIChpICsgMSkgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZvcl9hbGwgcCBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiB0cnVlXG4gICAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIGxvb3AgKGkgKyAxKVxuICAgICAgZWxzZSBmYWxzZSBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgbWVtIHggYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICAgIGVsc2UgaWYgZmxvYXRfY29tcGFyZSAodW5zYWZlX2dldCBhIGkpIHggPSAwIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG4gICgqIG1vc3RseSBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwsIGJ1dCBzbGlnaHRseSBkaWZmZXJlbnQgKilcbiAgbGV0IG1lbV9pZWVlIHggYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICAgIGVsc2UgaWYgeCA9ICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgICBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmaW5kX29wdCBwIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgICBpZiBwIHggdGhlbiBTb21lIHhcbiAgICAgICAgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZmluZF9pbmRleCBwIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gU29tZSBpXG4gICAgICBlbHNlIGxvb3AgKGkgKyAxKSBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZmluZF9tYXAgZiBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgICBlbHNlXG4gICAgICAgIG1hdGNoIGYgKHVuc2FmZV9nZXQgYSBpKSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSlcbiAgICAgICAgfCBTb21lIF8gYXMgciAtPiByXG4gICAgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZpbmRfbWFwaSBmIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggZiBpICh1bnNhZmVfZ2V0IGEgaSkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpXG4gICAgICAgIHwgU29tZSBfIGFzIHIgLT4gclxuICAgIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGV4Y2VwdGlvbiBCb3R0b20gb2YgaW50XG4gIGxldCBzb3J0IGNtcCBhID1cbiAgICBsZXQgbWF4c29uIGwgaSA9XG4gICAgICBsZXQgaTMxID0gaStpK2krMSBpblxuICAgICAgbGV0IHggPSByZWYgaTMxIGluXG4gICAgICBpZiBpMzErMiA8IGwgdGhlbiBiZWdpblxuICAgICAgICBpZiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMCB0aGVuIHggOj0gaTMxKzE7XG4gICAgICAgIGlmIGNtcCAoZ2V0IGEgIXgpIChnZXQgYSAoaTMxKzIpKSA8IDAgdGhlbiB4IDo9IGkzMSsyO1xuICAgICAgICAheFxuICAgICAgZW5kIGVsc2VcbiAgICAgICAgaWYgaTMxKzEgPCBsICYmIGNtcCAoZ2V0IGEgaTMxKSAoZ2V0IGEgKGkzMSsxKSkgPCAwXG4gICAgICAgIHRoZW4gaTMxKzFcbiAgICAgICAgZWxzZSBpZiBpMzEgPCBsIHRoZW4gaTMxIGVsc2UgcmFpc2UgKEJvdHRvbSBpKVxuICAgIGluXG4gICAgbGV0IHJlYyB0cmlja2xlZG93biBsIGkgZSA9XG4gICAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICAgIGlmIGNtcCAoZ2V0IGEgaikgZSA+IDAgdGhlbiBiZWdpblxuICAgICAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgICAgdHJpY2tsZWRvd24gbCBqIGU7XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXQgYSBpIGU7XG4gICAgICBlbmQ7XG4gICAgaW5cbiAgICBsZXQgdHJpY2tsZSBsIGkgZSA9IHRyeSB0cmlja2xlZG93biBsIGkgZSB3aXRoIEJvdHRvbSBpIC0+IHNldCBhIGkgZSBpblxuICAgIGxldCByZWMgYnViYmxlZG93biBsIGkgPVxuICAgICAgbGV0IGogPSBtYXhzb24gbCBpIGluXG4gICAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgIGJ1YmJsZWRvd24gbCBqXG4gICAgaW5cbiAgICBsZXQgYnViYmxlIGwgaSA9IHRyeSBidWJibGVkb3duIGwgaSB3aXRoIEJvdHRvbSBpIC0+IGkgaW5cbiAgICBsZXQgcmVjIHRyaWNrbGV1cCBpIGUgPVxuICAgICAgbGV0IGZhdGhlciA9IChpIC0gMSkgLyAzIGluXG4gICAgICBhc3NlcnQgKGkgPD4gZmF0aGVyKTtcbiAgICAgIGlmIGNtcCAoZ2V0IGEgZmF0aGVyKSBlIDwgMCB0aGVuIGJlZ2luXG4gICAgICAgIHNldCBhIGkgKGdldCBhIGZhdGhlcik7XG4gICAgICAgIGlmIGZhdGhlciA+IDAgdGhlbiB0cmlja2xldXAgZmF0aGVyIGUgZWxzZSBzZXQgYSAwIGU7XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXQgYSBpIGU7XG4gICAgICBlbmQ7XG4gICAgaW5cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgZm9yIGkgPSAobCArIDEpIC8gMyAtIDEgZG93bnRvIDAgZG8gdHJpY2tsZSBsIGkgKGdldCBhIGkpOyBkb25lO1xuICAgIGZvciBpID0gbCAtIDEgZG93bnRvIDIgZG9cbiAgICAgIGxldCBlID0gKGdldCBhIGkpIGluXG4gICAgICBzZXQgYSBpIChnZXQgYSAwKTtcbiAgICAgIHRyaWNrbGV1cCAoYnViYmxlIGkgMCkgZTtcbiAgICBkb25lO1xuICAgIGlmIGwgPiAxIHRoZW4gKGxldCBlID0gKGdldCBhIDEpIGluIHNldCBhIDEgKGdldCBhIDApOyBzZXQgYSAwIGUpXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sLCBleGNlcHQgZm9yIHRoZSBjYWxsIHRvIFtjcmVhdGVdICopXG4gIGxldCBjdXRvZmYgPSA1XG4gIGxldCBzdGFibGVfc29ydCBjbXAgYSA9XG4gICAgbGV0IG1lcmdlIHNyYzFvZnMgc3JjMWxlbiBzcmMyIHNyYzJvZnMgc3JjMmxlbiBkc3QgZHN0b2ZzID1cbiAgICAgIGxldCBzcmMxciA9IHNyYzFvZnMgKyBzcmMxbGVuIGFuZCBzcmMyciA9IHNyYzJvZnMgKyBzcmMybGVuIGluXG4gICAgICBsZXQgcmVjIGxvb3AgaTEgczEgaTIgczIgZCA9XG4gICAgICAgIGlmIGNtcCBzMSBzMiA8PSAwIHRoZW4gYmVnaW5cbiAgICAgICAgICBzZXQgZHN0IGQgczE7XG4gICAgICAgICAgbGV0IGkxID0gaTEgKyAxIGluXG4gICAgICAgICAgaWYgaTEgPCBzcmMxciB0aGVuXG4gICAgICAgICAgICBsb29wIGkxIChnZXQgYSBpMSkgaTIgczIgKGQgKyAxKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJsaXQgc3JjMiBpMiBkc3QgKGQgKyAxKSAoc3JjMnIgLSBpMilcbiAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICBzZXQgZHN0IGQgczI7XG4gICAgICAgICAgbGV0IGkyID0gaTIgKyAxIGluXG4gICAgICAgICAgaWYgaTIgPCBzcmMyciB0aGVuXG4gICAgICAgICAgICBsb29wIGkxIHMxIGkyIChnZXQgc3JjMiBpMikgKGQgKyAxKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJsaXQgYSBpMSBkc3QgKGQgKyAxKSAoc3JjMXIgLSBpMSlcbiAgICAgICAgZW5kXG4gICAgICBpbiBsb29wIHNyYzFvZnMgKGdldCBhIHNyYzFvZnMpIHNyYzJvZnMgKGdldCBzcmMyIHNyYzJvZnMpIGRzdG9mcztcbiAgICBpblxuICAgIGxldCBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICBsZXQgZSA9IChnZXQgYSAoc3Jjb2ZzICsgaSkpIGluXG4gICAgICAgIGxldCBqID0gcmVmIChkc3RvZnMgKyBpIC0gMSkgaW5cbiAgICAgICAgd2hpbGUgKCFqID49IGRzdG9mcyAmJiBjbXAgKGdldCBkc3QgIWopIGUgPiAwKSBkb1xuICAgICAgICAgIHNldCBkc3QgKCFqICsgMSkgKGdldCBkc3QgIWopO1xuICAgICAgICAgIGRlY3IgajtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgc2V0IGRzdCAoIWogKyAxKSBlO1xuICAgICAgZG9uZTtcbiAgICBpblxuICAgIGxldCByZWMgc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgICBpZiBsZW4gPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gZWxzZSBiZWdpblxuICAgICAgICBsZXQgbDEgPSBsZW4gLyAyIGluXG4gICAgICAgIGxldCBsMiA9IGxlbiAtIGwxIGluXG4gICAgICAgIHNvcnR0byAoc3Jjb2ZzICsgbDEpIGRzdCAoZHN0b2ZzICsgbDEpIGwyO1xuICAgICAgICBzb3J0dG8gc3Jjb2ZzIGEgKHNyY29mcyArIGwyKSBsMTtcbiAgICAgICAgbWVyZ2UgKHNyY29mcyArIGwyKSBsMSBkc3QgKGRzdG9mcyArIGwxKSBsMiBkc3QgZHN0b2ZzO1xuICAgICAgZW5kO1xuICAgIGluXG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGlmIGwgPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byAwIGEgMCBsIGVsc2UgYmVnaW5cbiAgICAgIGxldCBsMSA9IGwgLyAyIGluXG4gICAgICBsZXQgbDIgPSBsIC0gbDEgaW5cbiAgICAgIGxldCB0ID0gY3JlYXRlIGwyIGluXG4gICAgICBzb3J0dG8gbDEgdCAwIGwyO1xuICAgICAgc29ydHRvIDAgYSBsMiBsMTtcbiAgICAgIG1lcmdlIGwyIGwxIHQgMCBsMiBhIDA7XG4gICAgZW5kXG5cbiAgbGV0IGZhc3Rfc29ydCA9IHN0YWJsZV9zb3J0XG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBzaHVmZmxlIH5yYW5kIGEgPSAoKiBGaXNoZXItWWF0ZXMgKilcbiAgICBmb3IgaSA9IGxlbmd0aCBhIC0gMSBkb3dudG8gMSBkb1xuICAgICAgbGV0IGogPSByYW5kIChpICsgMSkgaW5cbiAgICAgIGxldCB2ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgIHVuc2FmZV9zZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgIHVuc2FmZV9zZXQgYSBqIHZcbiAgICBkb25lXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCB0b19zZXEgYSA9XG4gICAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgICBpZiBpIDwgbGVuZ3RoIGFcbiAgICAgIHRoZW5cbiAgICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgICBTZXEuQ29ucyAoeCwgYXV4IChpKzEpKVxuICAgICAgZWxzZSBTZXEuTmlsXG4gICAgaW5cbiAgICBhdXggMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgdG9fc2VxaSBhID1cbiAgICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAgIGlmIGkgPCBsZW5ndGggYVxuICAgICAgdGhlblxuICAgICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICAgICAgZWxzZSBTZXEuTmlsXG4gICAgaW5cbiAgICBhdXggMFxuXG4gICgqIG1vc3RseSBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG9mX3Jldl9saXN0IGwgPVxuICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgbGV0IGEgPSBjcmVhdGUgbGVuIGluXG4gICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgICBbXSAtPiBhXG4gICAgICB8IGhkOjp0bCAtPiB1bnNhZmVfc2V0IGEgaSBoZDsgZmlsbCAoaS0xKSB0bFxuICAgIGluXG4gICAgZmlsbCAobGVuLTEpIGxcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG9mX3NlcSBpID1cbiAgICBsZXQgbCA9IFNlcS5mb2xkX2xlZnQgKGZ1biBhY2MgeCAtPiB4OjphY2MpIFtdIGkgaW5cbiAgICBvZl9yZXZfbGlzdCBsXG5cblxuICBsZXQgbWFwX3RvX2FycmF5IGYgYSA9XG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGlmIGwgPSAwIHRoZW4gW3wgfF0gZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBBcnJheS5tYWtlIGwgKGYgKHVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICAgIGZvciBpID0gMSB0byBsIC0gMSBkb1xuICAgICAgICBBcnJheS51bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBhIGkpKVxuICAgICAgZG9uZTtcbiAgICAgIHJcbiAgICBlbmRcblxuICBsZXQgbWFwX2Zyb21fYXJyYXkgZiBhID1cbiAgICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBhIGluXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgKEFycmF5LnVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcblxuZW5kXG5cbm1vZHVsZSBBcnJheUxhYmVscyA9IEFycmF5XG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfYXJyYXlfbWFrZSIsImNhbWxfY2hlY2tfYm91bmQiLCJjYW1sX2Zsb2F0X2NvbXBhcmUiLCJjYW1sX2Zsb2F0YXJyYXlfY29uY2F0IiwiY2FtbF9mbG9hdGFycmF5X2NyZWF0ZSIsImNhbWxfZmxvYXRhcnJheV9tYWtlIiwiY2FtbF9mbG9hdGFycmF5X3N1YiIsImNhbWxfaGFzaCIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfbmV4dGFmdGVyX2Zsb2F0IiwiY2FtbF9zaWduYml0X2Zsb2F0IiwiY2FtbF93cmFwX2V4Y2VwdGlvbiIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYl9TZXEiLCJTdGRsaWJfTGlzdCIsIkFzc2VydF9mYWlsdXJlIiwiU3RkbGliIiwiaW5maW5pdHkiLCJuZWdfaW5maW5pdHkiLCJuYW4iLCJpc19maW5pdGUiLCJ4IiwiaXNfaW5maW5pdGUiLCJpc19uYW4iLCJtYXhfZmxvYXQiLCJtaW5fZmxvYXQiLCJlcHNpbG9uIiwib2Zfc3RyaW5nX29wdCIsInRvX3N0cmluZyIsImlzX2ludGVnZXIiLCJzdWNjIiwicHJlZCIsImVxdWFsIiwieSIsIm1pbiIsIm1heCIsIm1pbl9tYXgiLCJtaW5fbnVtIiwibWF4X251bSIsIm1pbl9tYXhfbnVtIiwic2VlZGVkX2hhc2giLCJzZWVkIiwiaGFzaCIsImNoZWNrIiwiYSIsIm9mcyIsImxlbiIsIm1zZyIsImVtcHR5IiwiaW5pdCIsImwiLCJyZXMiLCJpIiwibWFrZV9tYXRyaXgiLCJzeCIsInN5IiwidiIsImluaXRfbWF0cml4Iiwicm93Iiwic3ViIiwiY29weSIsImFwcGVuZCIsImEyIiwibDEiLCJmaWxsIiwiYmxpdCIsInNyYyIsInNvZnMiLCJkc3QiLCJkb2ZzIiwiY3N0X0Zsb2F0X2FycmF5X2JsaXQiLCJ0b19saXN0Iiwib2ZfbGlzdCIsInJlc3VsdCIsInQiLCJoIiwiZXEiLCJiIiwiY29tcGFyZSIsImNtcCIsImxlbl9hIiwibGVuX2IiLCJkaWZmIiwiYyIsIml0ZXIiLCJpdGVyMiIsIm1hcCIsInIiLCJtYXBfaW5wbGFjZSIsIm1hcDIiLCJsYSIsImxiIiwiaXRlcmkiLCJtYXBpIiwibWFwaV9pbnBsYWNlIiwiZm9sZF9sZWZ0IiwiZm9sZF9yaWdodCIsImV4aXN0cyIsInAiLCJuIiwiZm9yX2FsbCIsIm1lbSIsIm1lbV9pZWVlIiwiZmluZF9vcHQiLCJmaW5kX2luZGV4IiwiZmluZF9tYXAiLCJmaW5kX21hcGkiLCJCb3R0b20iLCJzb3J0IiwibWF4c29uIiwiaTMxIiwiZSIsImoiLCJleG4iLCJmYXRoZXIiLCJzdGFibGVfc29ydCIsIm1lcmdlIiwic3JjMW9mcyIsInNyYzFsZW4iLCJzcmMyIiwic3JjMm9mcyIsInNyYzJsZW4iLCJkc3RvZnMiLCJzcmMxciIsInNyYzJyIiwiczIiLCJzMSIsImkxIiwiaTIiLCJkIiwiaXNvcnR0byIsInNyY29mcyIsInNvcnR0byIsImwyIiwic2h1ZmZsZSIsInJhbmQiLCJ0b19zZXEiLCJhdXgiLCJwYXJhbSIsInRvX3NlcWkiLCJvZl9zZXEiLCJhY2MiLCJ0bCIsImhkIiwibWFwX3RvX2FycmF5IiwibWFwX2Zyb21fYXJyYXkiLCJTdGRsaWJfRmxvYXQiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLHFCQUFBO0FBQUEsSUFBQUMseUJBQUE7QUFBQSxJQUFBQyx5QkFBQTtBQUFBLElBQUFDLHVCQUFBO0FBQUEsSUFBQUMsc0JBQUE7QUFBQSxJQUFBQyxZQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxJQUFBQyx1QkFBQTtBQUFBLElBQUFDLHFCQUFBO0FB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QTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsb0JEeE10QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEdDd01zQjtBQUFBO0FBQUEsRUR4TXRCIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MTY4NjEsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9pbnQzMi5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtJbnQzMl06IDMyLWJpdCBpbnRlZ2VycyAqKVxuXG5leHRlcm5hbCBuZWcgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX25lZ1wiXG5leHRlcm5hbCBhZGQgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2FkZFwiXG5leHRlcm5hbCBzdWIgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX3N1YlwiXG5leHRlcm5hbCBtdWwgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX211bFwiXG5leHRlcm5hbCBkaXYgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2RpdlwiXG5leHRlcm5hbCByZW0gOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX21vZFwiXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2FuZFwiXG5leHRlcm5hbCBsb2dvciA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfb3JcIlxuZXh0ZXJuYWwgbG9neG9yIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl94b3JcIlxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludDMyIC0+IGludCAtPiBpbnQzMiA9IFwiJWludDMyX2xzbFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodCA6IGludDMyIC0+IGludCAtPiBpbnQzMiA9IFwiJWludDMyX2FzclwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogaW50MzIgLT4gaW50IC0+IGludDMyID0gXCIlaW50MzJfbHNyXCJcbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBpbnQzMiA9IFwiJWludDMyX29mX2ludFwiXG5leHRlcm5hbCB0b19pbnQgOiBpbnQzMiAtPiBpbnQgPSBcIiVpbnQzMl90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQzMlxuICA9IFwiY2FtbF9pbnQzMl9vZl9mbG9hdFwiIFwiY2FtbF9pbnQzMl9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50MzIgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50MzJfdG9fZmxvYXRcIiBcImNhbWxfaW50MzJfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBiaXRzX29mX2Zsb2F0IDogZmxvYXQgLT4gaW50MzJcbiAgPSBcImNhbWxfaW50MzJfYml0c19vZl9mbG9hdFwiIFwiY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDMyIC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50MzJfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IHplcm8gPSAwbFxubGV0IG9uZSA9IDFsXG5sZXQgbWludXNfb25lID0gLTFsXG5sZXQgc3VjYyBuID0gYWRkIG4gMWxcbmxldCBwcmVkIG4gPSBzdWIgbiAxbFxubGV0IGFicyBuID0gaWYgbiA+PSAwbCB0aGVuIG4gZWxzZSBuZWcgblxubGV0IG1pbl9pbnQgPSAweDgwMDAwMDAwbFxubGV0IG1heF9pbnQgPSAweDdGRkZGRkZGbFxubGV0IGxvZ25vdCBuID0gbG9neG9yIG4gKC0xbClcblxubGV0IHVuc2lnbmVkX3RvX2ludCA9XG4gIG1hdGNoIFN5cy53b3JkX3NpemUgd2l0aFxuICB8IDMyIC0+XG4gICAgICBsZXQgbWF4X2ludCA9IG9mX2ludCBTdGRsaWIubWF4X2ludCBpblxuICAgICAgZnVuIG4gLT5cbiAgICAgICAgaWYgbiA+PSAwbCAmJiBuIDw9IG1heF9pbnQgdGhlblxuICAgICAgICAgIFNvbWUgKHRvX2ludCBuKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgTm9uZVxuICB8IDY0IC0+XG4gICAgICAoKiBTbyB0aGF0IGl0IGNvbXBpbGVzIGluIDMyLWJpdCAqKVxuICAgICAgbGV0IG1hc2sgPSAweEZGRkYgbHNsIDE2IGxvciAweEZGRkYgaW5cbiAgICAgIGZ1biBuIC0+IFNvbWUgKHRvX2ludCBuIGxhbmQgbWFzaylcbiAgfCBfIC0+XG4gICAgICBhc3NlcnQgZmFsc2VcblxuZXh0ZXJuYWwgZm9ybWF0IDogc3RyaW5nIC0+IGludDMyIC0+IHN0cmluZyA9IFwiY2FtbF9pbnQzMl9mb3JtYXRcIlxubGV0IHRvX3N0cmluZyBuID0gZm9ybWF0IFwiJWRcIiBuXG5cbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQzMiA9IFwiY2FtbF9pbnQzMl9vZl9zdHJpbmdcIlxuXG5sZXQgb2Zfc3RyaW5nX29wdCBzID1cbiAgdHJ5IFNvbWUgKG9mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbnR5cGUgdCA9IGludDMyXG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmxldCBlcXVhbCAoeDogdCkgKHk6IHQpID0geCA9IHlcblxubGV0IHVuc2lnbmVkX2NvbXBhcmUgbiBtID1cbiAgY29tcGFyZSAoc3ViIG4gbWluX2ludCkgKHN1YiBtIG1pbl9pbnQpXG5cbmxldCB1bnNpZ25lZF9sdCBuIG0gPVxuICBzdWIgbiBtaW5faW50IDwgc3ViIG0gbWluX2ludFxuXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuKCogVW5zaWduZWQgZGl2aXNpb24gZnJvbSBzaWduZWQgZGl2aXNpb24gb2YgdGhlIHNhbWUgYml0bmVzcy5cbiAgIFNlZSBXYXJyZW4gSnIuLCBIZW5yeSBTLiAoMjAxMykuIEhhY2tlcidzIERlbGlnaHQgKDIgZWQuKSwgU2VjIDktMy5cbiopXG5sZXQgdW5zaWduZWRfZGl2IG4gZCA9XG4gIGlmIGQgPCB6ZXJvIHRoZW5cbiAgICBpZiB1bnNpZ25lZF9sdCBuIGQgdGhlbiB6ZXJvIGVsc2Ugb25lXG4gIGVsc2VcbiAgICBsZXQgcSA9IHNoaWZ0X2xlZnQgKGRpdiAoc2hpZnRfcmlnaHRfbG9naWNhbCBuIDEpIGQpIDEgaW5cbiAgICBsZXQgciA9IHN1YiBuIChtdWwgcSBkKSBpblxuICAgIGlmIHVuc2lnbmVkX2x0IHIgZCB0aGVuIHEgZWxzZSBzdWNjIHFcblxubGV0IHVuc2lnbmVkX3JlbSBuIGQgPVxuICBzdWIgbiAobXVsICh1bnNpZ25lZF9kaXYgbiBkKSBkKVxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2dyZWF0ZXJlcXVhbCIsImNhbWxfaGFzaCIsImNhbWxfaW50X2NvbXBhcmUiLCJjYW1sX2xlc3NlcXVhbCIsImNhbWxfbGVzc3RoYW4iLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX211bCIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYiIsIlN0ZGxpYl9TeXMiLCJBc3NlcnRfZmFpbHVyZSIsInN1Y2MiLCJuIiwicHJlZCIsImFicyIsImxvZ25vdCIsIm1hdGNoIiwibWF4X2ludCIsInVuc2lnbmVkX3RvX2ludCIsInRvX3N0cmluZyIsIm9mX3N0cmluZ19vcHQiLCJzIiwiZXhuIiwiZXF1YWwiLCJ1bnNpZ25lZF9jb21wYXJlIiwibSIsInkiLCJ4IiwidW5zaWduZWRfbHQiLCJtaW4iLCJtYXgiLCJ6ZXJvIiwib25lIiwidW5zaWduZWRfZGl2IiwiZCIsInEiLCJyIiwidW5zaWduZWRfcmVtIiwic2VlZGVkX2hhc2giLCJzZWVkIiwiaGFzaCIsIlN0ZGxpYl9JbnQzMiJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLFlBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLElBQUFDLFdBQUE7QUFBQSxJQUFBQyxzQkFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsWUFBQUMsS0FBQUMsR0MrQ3FCO0FBQUEsWUFBQUMsS0FBQUQsR0FDQTtBQUFBLFlBQUFFLElBQUFGLEdBQ04sNENBQXlCO0FBQUEsWUFBQUcsT0FBQUgsR0FHWDtBQUFBLE9BQUFJLFFEcEQ3QjtBQUFBO0FBQUE7QUFBQSxLQUFBQyxVQ3lEb0I7QUFBQSxLQUFBQztBQUFBQSxPQUNkLFNBQUFOO0FBQUFBLFFBQ0ssOEJBQVc7QUFBQSxTQUNaO0FBQUEsUUFFQTtBQUFBLE9BQUk7QUFBQTtBQUFBLElEOURkO0FBQUEsS0NvRU07QUFBQTtBQUFBLFFBQUFNLGtCQUZBLFNBQUFOLEdBQVMsbUJBQXlCO0FBQUE7QUFBQSxZQUFBTyxVQUFBUCxHQUt0Qix1Q0FBYTtBQUFBLFlBQUFRLGNBQUFDO0FBQUFBLElBSzdCLFlBQVM7QUFBQSxVQUFBQztBQUFBQSxTQUFBQSxNRDVFWDtBQUFBLDhCQzZFb0I7QUFBQSxLRDdFcEI7QUFBQTtBQUFBLEdDNkV3QjtBQUFBLE9BQUFDLFFEN0V4QjtBQUFBLFlBQUFDLGlCQUFBWixHQUFBYTtBQUFBQSxRQUFBQyxJQ3FGMEIsb0JBQUFDLElBQWhCO0FBQUEsSUFKa0IsNkJBSWE7QUFBQTtBQUFBLFlBQUFDLFlBQUFoQixHQUFBYTtBQUFBQSxJQUd2Qyw0REFBNkI7QUFBQTtBQUFBLFlBQUFJLElBQUFGLEdBQUFELEdBRVYsbUNBQW9CO0FBQUEsWUFBQUksSUFBQUgsR0FBQUQsR0FDcEIsc0NBQW9CO0FBQUEsT0FBQUssT0QzRnpDLEdBQUFDLE1BQUE7QUFBQSxZQUFBQyxhQUFBckIsR0FBQXNCO0FBQUFBLElDaUdLLHdCQUNFLHFDQUlrQztBQUFBLFFBQUFDLElBRmxCLHVDQUFBQyxJQUNMO0FBQUEsSUFDWCx3Q0FBa0M7QUFBQTtBQUFBLFlBQUFDLGFBQUF6QixHQUFBc0I7QUFBQUEsSUFHNUIsV0FBTCxTQUFLLDBCQUFxQjtBQUFBO0FBQUEsWUFBQUksWUFBQUMsTUFBQVosR0FJVCxrQ0FBK0I7QUFBQSxZQUFBYSxLQUFBYixHQUMzQywrQkFBNEI7QUFBQTtBQUFBLElBQUFjO0FBQUFBLE1EOUd6QyIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjE2OTU5LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvaW50NjQubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbSW50NjRdOiA2NC1iaXQgaW50ZWdlcnMgKilcblxuZXh0ZXJuYWwgbmVnIDogaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9uZWdcIlxuZXh0ZXJuYWwgYWRkIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hZGRcIlxuZXh0ZXJuYWwgc3ViIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9zdWJcIlxuZXh0ZXJuYWwgbXVsIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tdWxcIlxuZXh0ZXJuYWwgZGl2IDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9kaXZcIlxuZXh0ZXJuYWwgcmVtIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tb2RcIlxuZXh0ZXJuYWwgbG9nYW5kIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hbmRcIlxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X29yXCJcbmV4dGVybmFsIGxvZ3hvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfeG9yXCJcbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc2xcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hc3JcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2xzclwiXG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnRcIlxuZXh0ZXJuYWwgdG9faW50IDogaW50NjQgLT4gaW50ID0gXCIlaW50NjRfdG9faW50XCJcbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0b19mbG9hdCA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X3RvX2Zsb2F0XCIgXCJjYW1sX2ludDY0X3RvX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgb2ZfaW50MzIgOiBpbnQzMiAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludDMyXCJcbmV4dGVybmFsIHRvX2ludDMyIDogaW50NjQgLT4gaW50MzIgPSBcIiVpbnQ2NF90b19pbnQzMlwiXG5leHRlcm5hbCBvZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9uYXRpdmVpbnRcIlxuZXh0ZXJuYWwgdG9fbmF0aXZlaW50IDogaW50NjQgLT4gbmF0aXZlaW50ID0gXCIlaW50NjRfdG9fbmF0aXZlaW50XCJcblxubGV0IHplcm8gPSAwTFxubGV0IG9uZSA9IDFMXG5sZXQgbWludXNfb25lID0gLTFMXG5sZXQgc3VjYyBuID0gYWRkIG4gMUxcbmxldCBwcmVkIG4gPSBzdWIgbiAxTFxubGV0IGFicyBuID0gaWYgbiA+PSAwTCB0aGVuIG4gZWxzZSBuZWcgblxubGV0IG1pbl9pbnQgPSAweDgwMDAwMDAwMDAwMDAwMDBMXG5sZXQgbWF4X2ludCA9IDB4N0ZGRkZGRkZGRkZGRkZGRkxcbmxldCBsb2dub3QgbiA9IGxvZ3hvciBuICgtMUwpXG5cbmxldCB1bnNpZ25lZF90b19pbnQgPVxuICBsZXQgbWF4X2ludCA9IG9mX2ludCBTdGRsaWIubWF4X2ludCBpblxuICBmdW4gbiAtPlxuICAgIGlmIG4gPj0gMEwgJiYgbiA8PSBtYXhfaW50IHRoZW5cbiAgICAgIFNvbWUgKHRvX2ludCBuKVxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuZXh0ZXJuYWwgZm9ybWF0IDogc3RyaW5nIC0+IGludDY0IC0+IHN0cmluZyA9IFwiY2FtbF9pbnQ2NF9mb3JtYXRcIlxubGV0IHRvX3N0cmluZyBuID0gZm9ybWF0IFwiJWRcIiBuXG5cbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQ2NCA9IFwiY2FtbF9pbnQ2NF9vZl9zdHJpbmdcIlxuXG5sZXQgb2Zfc3RyaW5nX29wdCBzID1cbiAgdHJ5IFNvbWUgKG9mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmV4dGVybmFsIGJpdHNfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0XCIgXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG50eXBlIHQgPSBpbnQ2NFxuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5sZXQgZXF1YWwgKHg6IHQpICh5OiB0KSA9IHggPSB5XG5cbmxldCB1bnNpZ25lZF9jb21wYXJlIG4gbSA9XG4gIGNvbXBhcmUgKHN1YiBuIG1pbl9pbnQpIChzdWIgbSBtaW5faW50KVxuXG5sZXQgdW5zaWduZWRfbHQgbiBtID1cbiAgc3ViIG4gbWluX2ludCA8IHN1YiBtIG1pbl9pbnRcblxubGV0IG1pbiB4IHkgOiB0ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5IDogdCA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbigqIFVuc2lnbmVkIGRpdmlzaW9uIGZyb20gc2lnbmVkIGRpdmlzaW9uIG9mIHRoZSBzYW1lIGJpdG5lc3MuXG4gICBTZWUgV2FycmVuIEpyLiwgSGVucnkgUy4gKDIwMTMpLiBIYWNrZXIncyBEZWxpZ2h0ICgyIGVkLiksIFNlYyA5LTMuXG4qKVxubGV0IHVuc2lnbmVkX2RpdiBuIGQgPVxuICBpZiBkIDwgemVybyB0aGVuXG4gICAgaWYgdW5zaWduZWRfbHQgbiBkIHRoZW4gemVybyBlbHNlIG9uZVxuICBlbHNlXG4gICAgbGV0IHEgPSBzaGlmdF9sZWZ0IChkaXYgKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgbiAxKSBkKSAxIGluXG4gICAgbGV0IHIgPSBzdWIgbiAobXVsIHEgZCkgaW5cbiAgICBpZiB1bnNpZ25lZF9sdCByIGQgdGhlbiBxIGVsc2Ugc3VjYyBxXG5cbmxldCB1bnNpZ25lZF9yZW0gbiBkID1cbiAgc3ViIG4gKG11bCAodW5zaWduZWRfZGl2IG4gZCkgZClcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2hfcGFyYW0gOlxuICBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiBpbnQgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5sZXQgc2VlZGVkX2hhc2ggc2VlZCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIHNlZWQgeFxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCAwIHhcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9ncmVhdGVyZXF1YWwiLCJjYW1sX2hhc2giLCJjYW1sX2ludDY0X2FkZCIsImNhbWxfaW50NjRfY29tcGFyZSIsImNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpIiwiY2FtbF9pbnQ2NF9tdWwiLCJjYW1sX2ludDY0X3N1YiIsImNhbWxfbGVzc2VxdWFsIiwiY2FtbF9sZXNzdGhhbiIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJ6ZXJvIiwib25lIiwibWludXNfb25lIiwibWluX2ludCIsIm1heF9pbnQiLCJTdGRsaWIiLCJzdWNjIiwibiIsInByZWQiLCJhYnMiLCJsb2dub3QiLCJ1bnNpZ25lZF90b19pbnQiLCJ0b19zdHJpbmciLCJvZl9zdHJpbmdfb3B0IiwicyIsImV4biIsImNvbXBhcmUiLCJ4IiwieSIsImVxdWFsIiwidW5zaWduZWRfY29tcGFyZSIsIm0iLCJ1bnNpZ25lZF9sdCIsIm1pbiIsIm1heCIsInVuc2lnbmVkX2RpdiIsImQiLCJxIiwiciIsInVuc2lnbmVkX3JlbSIsInNlZWRlZF9oYXNoIiwic2VlZCIsImhhc2giXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxJQUFBQyxZQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxxQkFBQTtBQUFBLElBQUFDLDZCQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxpQkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUE7QUFBQSxJQUFBQyxPQUFBO0FBQUEsSUFBQUMsTUFBQTtBQUFBLElBQUFDLFlBQUE7QUFBQSxJQUFBQyxVQUFBO0FBQUEsSUFBQUMsVUFBQTtBQUFBLElBQUFDLFNBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxLQUFBQyxHQzZDYSwyQkFBUTtBQUFBLFlBQUFDLEtBQUFELEdBQ1IsMkJBQVE7QUFBQSxZQUFBRSxJQUFBRjtBQUFBQSxJQUNOLHFDQUFvQix5QkFBSztBQUFBO0FBQUEsWUFBQUcsT0FBQUgsR0FHekIsbUNBQWM7QUFBQTtBQUFBLElBQUFILFlBR2I7QUFBQSxRQUNkO0FBQUEsWUFBQU8sZ0JBQUFKO0FBQUFBLElBQ0ssOEJBQVc7QUFBQSxLQUNaO0FBQUEsSUFFQTtBQUFBLEdBQUk7QUFBQSxZQUFBSyxVQUFBTCxHQUdRLHlDQUFhO0FBQUEsWUFBQU0sY0FBQUM7QUFBQUEsSUFLN0IsWUFBUztBQUFBLFVBQUFDO0FBQUFBLFNBQUFBLE1EbEVYO0FBQUEsOEJDbUVvQjtBQUFBLEtEbkVwQjtBQUFBO0FBQUEsR0NtRXdCO0FBQUEsWUFBQUMsUUFBQUMsR0FBQUMsR0FXSSwrQkFBa0I7QUFBQSxPQUFBQyxRQXhCNUM7QUFBQSxZQUFBQyxpQkFBQWIsR0FBQWM7QUFBQUEsUUFBQUgsSUE0QndCLDRCQUFBRCxJQUFoQjtBQUFBLElBSmtCLCtCQUlhO0FBQUE7QUFBQSxZQUFBSyxZQUFBZixHQUFBYztBQUFBQSxJQUd2QztBQUFBLHlDQUFnQiwyQkFBYTtBQUFBO0FBQUEsWUFBQUUsSUFBQU4sR0FBQUMsR0FFVixtQ0FBb0I7QUFBQSxZQUFBTSxJQUFBUCxHQUFBQyxHQUNwQixzQ0FBb0I7QUFBQSxZQUFBTyxhQUFBbEIsR0FBQW1CO0FBQUFBLElBTXBDLDJCQUNFLHFDQUlrQztBQUFBO0FBQUEsS0FBQUM7QUFBQUEsT0FGN0I7QUFBQSxTQUFXO0FBQUEsV0FBSztBQUFBO0FBQUEsS0FBQUMsSUFDaEIsa0JBQU07QUFBQSxJQUNYLCtCQXRETSxvQkFzRDRCO0FBQUE7QUFBQSxZQUFBQyxhQUFBdEIsR0FBQW1CO0FBQUFBLElBRzVCLE9BQVgsa0JBQU0sZUFBSyx1QkFBcUI7QUFBQTtBQUFBLFlBQUFJLFlBQUFDLE1BQUFkLEdBSVQsa0NBQStCO0FBQUEsWUFBQWUsS0FBQWYsR0FDM0MsK0JBQTRCO0FBQUEsR0FyRHZDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFRHRERiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjE3MDY3LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvbmF0aXZlaW50Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW05hdGl2ZWludF06IHByb2Nlc3Nvci1uYXRpdmUgaW50ZWdlcnMgKilcblxuZXh0ZXJuYWwgbmVnOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X25lZ1wiXG5leHRlcm5hbCBhZGQ6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2FkZFwiXG5leHRlcm5hbCBzdWI6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X3N1YlwiXG5leHRlcm5hbCBtdWw6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X211bFwiXG5leHRlcm5hbCBkaXY6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2RpdlwiXG5leHRlcm5hbCByZW06IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X21vZFwiXG5leHRlcm5hbCBsb2dhbmQ6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2FuZFwiXG5leHRlcm5hbCBsb2dvcjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfb3JcIlxuZXh0ZXJuYWwgbG9neG9yOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF94b3JcIlxuZXh0ZXJuYWwgc2hpZnRfbGVmdDogbmF0aXZlaW50IC0+IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbHNsXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0OiBuYXRpdmVpbnQgLT4gaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9hc3JcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbDogbmF0aXZlaW50IC0+IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbHNyXCJcbmV4dGVybmFsIG9mX2ludDogaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9vZl9pbnRcIlxuZXh0ZXJuYWwgdG9faW50OiBuYXRpdmVpbnQgLT4gaW50ID0gXCIlbmF0aXZlaW50X3RvX2ludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IG5hdGl2ZWludFxuICA9IFwiY2FtbF9uYXRpdmVpbnRfb2ZfZmxvYXRcIiBcImNhbWxfbmF0aXZlaW50X29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBuYXRpdmVpbnQgLT4gZmxvYXRcbiAgPSBcImNhbWxfbmF0aXZlaW50X3RvX2Zsb2F0XCIgXCJjYW1sX25hdGl2ZWludF90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG9mX2ludDMyOiBpbnQzMiAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfb2ZfaW50MzJcIlxuZXh0ZXJuYWwgdG9faW50MzI6IG5hdGl2ZWludCAtPiBpbnQzMiA9IFwiJW5hdGl2ZWludF90b19pbnQzMlwiXG5cbmxldCB6ZXJvID0gMG5cbmxldCBvbmUgPSAxblxubGV0IG1pbnVzX29uZSA9IC0xblxubGV0IHN1Y2MgbiA9IGFkZCBuIDFuXG5sZXQgcHJlZCBuID0gc3ViIG4gMW5cbmxldCBhYnMgbiA9IGlmIG4gPj0gMG4gdGhlbiBuIGVsc2UgbmVnIG5cbmxldCBzaXplID0gU3lzLndvcmRfc2l6ZVxubGV0IG1pbl9pbnQgPSBzaGlmdF9sZWZ0IDFuIChzaXplIC0gMSlcbmxldCBtYXhfaW50ID0gc3ViIG1pbl9pbnQgMW5cbmxldCBsb2dub3QgbiA9IGxvZ3hvciBuICgtMW4pXG5cbmxldCB1bnNpZ25lZF90b19pbnQgPVxuICBsZXQgbWF4X2ludCA9IG9mX2ludCBTdGRsaWIubWF4X2ludCBpblxuICBmdW4gbiAtPlxuICAgIGlmIG4gPj0gMG4gJiYgbiA8PSBtYXhfaW50IHRoZW5cbiAgICAgIFNvbWUgKHRvX2ludCBuKVxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuZXh0ZXJuYWwgZm9ybWF0IDogc3RyaW5nIC0+IG5hdGl2ZWludCAtPiBzdHJpbmcgPSBcImNhbWxfbmF0aXZlaW50X2Zvcm1hdFwiXG5sZXQgdG9fc3RyaW5nIG4gPSBmb3JtYXQgXCIlZFwiIG5cblxuZXh0ZXJuYWwgb2Zfc3RyaW5nOiBzdHJpbmcgLT4gbmF0aXZlaW50ID0gXCJjYW1sX25hdGl2ZWludF9vZl9zdHJpbmdcIlxuXG5sZXQgb2Zfc3RyaW5nX29wdCBzID1cbiAgdHJ5IFNvbWUgKG9mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbnR5cGUgdCA9IG5hdGl2ZWludFxuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5sZXQgZXF1YWwgKHg6IHQpICh5OiB0KSA9IGNvbXBhcmUgeCB5ID0gMFxuXG5sZXQgdW5zaWduZWRfY29tcGFyZSBuIG0gPVxuICBjb21wYXJlIChzdWIgbiBtaW5faW50KSAoc3ViIG0gbWluX2ludClcblxubGV0IHVuc2lnbmVkX2x0IG4gbSA9XG4gIHN1YiBuIG1pbl9pbnQgPCBzdWIgbSBtaW5faW50XG5cbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4oKiBVbnNpZ25lZCBkaXZpc2lvbiBmcm9tIHNpZ25lZCBkaXZpc2lvbiBvZiB0aGUgc2FtZSBiaXRuZXNzLlxuICAgU2VlIFdhcnJlbiBKci4sIEhlbnJ5IFMuICgyMDEzKS4gSGFja2VyJ3MgRGVsaWdodCAoMiBlZC4pLCBTZWMgOS0zLlxuKilcbmxldCB1bnNpZ25lZF9kaXYgbiBkID1cbiAgaWYgZCA8IHplcm8gdGhlblxuICAgIGlmIHVuc2lnbmVkX2x0IG4gZCB0aGVuIHplcm8gZWxzZSBvbmVcbiAgZWxzZVxuICAgIGxldCBxID0gc2hpZnRfbGVmdCAoZGl2IChzaGlmdF9yaWdodF9sb2dpY2FsIG4gMSkgZCkgMSBpblxuICAgIGxldCByID0gc3ViIG4gKG11bCBxIGQpIGluXG4gICAgaWYgdW5zaWduZWRfbHQgciBkIHRoZW4gcSBlbHNlIHN1Y2MgcVxuXG5sZXQgdW5zaWduZWRfcmVtIG4gZCA9XG4gIHN1YiBuIChtdWwgKHVuc2lnbmVkX2RpdiBuIGQpIGQpXG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoX3BhcmFtIDpcbiAgaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gaW50ID0gXCJjYW1sX2hhc2hcIiBbQEBub2FsbG9jXVxubGV0IHNlZWRlZF9oYXNoIHNlZWQgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBzZWVkIHhcbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgMCB4XG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfZ3JlYXRlcmVxdWFsIiwiY2FtbF9oYXNoIiwiY2FtbF9pbnRfY29tcGFyZSIsImNhbWxfbGVzc2VxdWFsIiwiY2FtbF9sZXNzdGhhbiIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfbXVsIiwiY2FtbF93cmFwX2V4Y2VwdGlvbiIsImdsb2JhbF9kYXRhIiwiU3RkbGliIiwiU3RkbGliX1N5cyIsInN1Y2MiLCJuIiwicHJlZCIsImFicyIsInNpemUiLCJtaW5faW50IiwibWF4X2ludCIsImxvZ25vdCIsInVuc2lnbmVkX3RvX2ludCIsInRvX3N0cmluZyIsIm9mX3N0cmluZ19vcHQiLCJzIiwiZXhuIiwiZXF1YWwiLCJ4IiwieSIsInVuc2lnbmVkX2NvbXBhcmUiLCJtIiwidW5zaWduZWRfbHQiLCJtaW4iLCJtYXgiLCJ6ZXJvIiwib25lIiwidW5zaWduZWRfZGl2IiwiZCIsInEiLCJyIiwidW5zaWduZWRfcmVtIiwic2VlZGVkX2hhc2giLCJzZWVkIiwiaGFzaCJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLFlBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLElBQUFDLFdBQUE7QUFBQSxJQUFBQyxzQkFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLFlBQUFDLEtBQUFDLEdDMkNxQjtBQUFBLFlBQUFDLEtBQUFELEdBQ0E7QUFBQSxZQUFBRSxJQUFBRixHQUNOLDRDQUF5QjtBQUFBO0FBQUEsSUFBQUcsT0Q3Q3hDO0FBQUEsSUFBQUMsVUMrQ2M7QUFBQSxJQUFBQyxVQUNBO0FBQUEsWUFBQUMsT0FBQU4sR0FDZTtBQUFBLE9BQUFLLFlBR2I7QUFBQSxZQUFBRSxnQkFBQVA7QUFBQUEsSUFFVCw4QkFBVyw4QkFDWjtBQUFBLElBRUE7QUFBQSxHQUFJO0FBQUEsWUFBQVEsVUFBQVIsR0FHUSx1Q0FBYTtBQUFBLFlBQUFTLGNBQUFDO0FBQUFBLElBSzdCLFlBQVM7QUFBQSxVQUFBQztBQUFBQSxTQUFBQSxNRGpFWDtBQUFBLDhCQ2tFb0I7QUFBQSxLRGxFcEI7QUFBQTtBQUFBLEdDa0V3QjtBQUFBLFlBQUFDLE1BQUFDLEdBQUFDLEdBSUksMkNBQ1MsQ0FBSTtBQUFBLFlBQUFDLGlCQUFBZixHQUFBZ0I7QUFBQUEsUUFBQUYsSUFHZixpQkFBQUQsSUFBaEI7QUFBQSxJQUprQiw2QkFJYTtBQUFBO0FBQUEsWUFBQUksWUFBQWpCLEdBQUFnQjtBQUFBQSxJQUd2QyxzREFBNkI7QUFBQTtBQUFBLFlBQUFFLElBQUFMLEdBQUFDLEdBRVYsbUNBQW9CO0FBQUEsWUFBQUssSUFBQU4sR0FBQUMsR0FDcEIsc0NBQW9CO0FBQUEsT0FBQU0sT0RoRnpDLEdBQUFDLE1BQUE7QUFBQSxZQUFBQyxhQUFBdEIsR0FBQXVCO0FBQUFBLElDc0ZLLHdCQUNFLHFDQUlrQztBQUFBLFFBQUFDLElBRmxCLHVDQUFBQyxJQUNMO0FBQUEsSUFDWCx3Q0FBa0M7QUFBQTtBQUFBLFlBQUFDLGFBQUExQixHQUFBdUI7QUFBQUEsSUFHNUIsV0FBTCxTQUFLLDBCQUFxQjtBQUFBO0FBQUEsWUFBQUksWUFBQUMsTUFBQWYsR0FJVCxrQ0FBK0I7QUFBQSxZQUFBZ0IsS0FBQWhCLEdBQzNDLCtCQUE0QjtBQUFBLEdBOUN2QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFRHJERiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjE3MTU4LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvbWFwLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgdHlwZSBPcmRlcmVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTID1cbiAgc2lnXG4gICAgdHlwZSBrZXlcbiAgICB0eXBlICErJ2EgdFxuICAgIHZhbCBlbXB0eTogJ2EgdFxuICAgIHZhbCBhZGQ6IGtleSAtPiAnYSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgYWRkX3RvX2xpc3Q6IGtleSAtPiAnYSAtPiAnYSBsaXN0IHQgLT4gJ2EgbGlzdCB0XG4gICAgdmFsIHVwZGF0ZToga2V5IC0+ICgnYSBvcHRpb24gLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgc2luZ2xldG9uOiBrZXkgLT4gJ2EgLT4gJ2EgdFxuICAgIHZhbCByZW1vdmU6IGtleSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgbWVyZ2U6XG4gICAgICAoa2V5IC0+ICdhIG9wdGlvbiAtPiAnYiBvcHRpb24gLT4gJ2Mgb3B0aW9uKSAtPlxuICAgICAgJ2EgdCAtPiAnYiB0IC0+ICdjIHRcbiAgICB2YWwgdW5pb246IChrZXkgLT4gJ2EgLT4gJ2EgLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBjYXJkaW5hbDogJ2EgdCAtPiBpbnRcbiAgICB2YWwgYmluZGluZ3M6ICdhIHQgLT4gKGtleSAqICdhKSBsaXN0XG4gICAgdmFsIG1pbl9iaW5kaW5nOiAnYSB0IC0+IChrZXkgKiAnYSlcbiAgICB2YWwgbWluX2JpbmRpbmdfb3B0OiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIG1heF9iaW5kaW5nOiAnYSB0IC0+IChrZXkgKiAnYSlcbiAgICB2YWwgbWF4X2JpbmRpbmdfb3B0OiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIGNob29zZTogJ2EgdCAtPiAoa2V5ICogJ2EpXG4gICAgdmFsIGNob29zZV9vcHQ6ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgZmluZDoga2V5IC0+ICdhIHQgLT4gJ2FcbiAgICB2YWwgZmluZF9vcHQ6IGtleSAtPiAnYSB0IC0+ICdhIG9wdGlvblxuICAgIHZhbCBmaW5kX2ZpcnN0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4ga2V5ICogJ2FcbiAgICB2YWwgZmluZF9maXJzdF9vcHQ6IChrZXkgLT4gYm9vbCkgLT4gJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBmaW5kX2xhc3Q6IChrZXkgLT4gYm9vbCkgLT4gJ2EgdCAtPiBrZXkgKiAnYVxuICAgIHZhbCBmaW5kX2xhc3Rfb3B0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgaXRlcjogKGtleSAtPiAnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZm9sZDogKGtleSAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuICAgIHZhbCBtYXA6ICgnYSAtPiAnYikgLT4gJ2EgdCAtPiAnYiB0XG4gICAgdmFsIG1hcGk6IChrZXkgLT4gJ2EgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgdFxuICAgIHZhbCBmaWx0ZXI6IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGZpbHRlcl9tYXA6IChrZXkgLT4gJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYSB0IC0+ICdiIHRcbiAgICB2YWwgcGFydGl0aW9uOiAoa2V5IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAqICdhIHRcbiAgICB2YWwgc3BsaXQ6IGtleSAtPiAnYSB0IC0+ICdhIHQgKiAnYSBvcHRpb24gKiAnYSB0XG4gICAgdmFsIGlzX2VtcHR5OiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgbWVtOiBrZXkgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIGVxdWFsOiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgY29tcGFyZTogKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludFxuICAgIHZhbCBmb3JfYWxsOiAoa2V5IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBleGlzdHM6IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIHRvX2xpc3QgOiAnYSB0IC0+IChrZXkgKiAnYSkgbGlzdFxuICAgIHZhbCBvZl9saXN0IDogKGtleSAqICdhKSBsaXN0IC0+ICdhIHRcbiAgICB2YWwgdG9fc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3Jldl9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX2Zyb20gOiBrZXkgLT4gJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgZW5kXG5cbm1vZHVsZSBNYWtlKE9yZDogT3JkZXJlZFR5cGUpID0gc3RydWN0XG5cbiAgICB0eXBlIGtleSA9IE9yZC50XG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgICBFbXB0eVxuICAgICAgfCBOb2RlIG9mIHtsOidhIHQ7IHY6a2V5OyBkOidhOyByOidhIHQ7IGg6aW50fVxuXG4gICAgbGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IDBcbiAgICAgIHwgTm9kZSB7aH0gLT4gaFxuXG4gICAgbGV0IGNyZWF0ZSBsIHggZCByID1cbiAgICAgIGxldCBobCA9IGhlaWdodCBsIGFuZCBociA9IGhlaWdodCByIGluXG4gICAgICBOb2Rle2w7IHY9eDsgZDsgcjsgaD0oaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpfVxuXG4gICAgbGV0IHNpbmdsZXRvbiB4IGQgPSBOb2Rle2w9RW1wdHk7IHY9eDsgZDsgcj1FbXB0eTsgaD0xfVxuXG4gICAgbGV0IGJhbCBsIHggZCByID1cbiAgICAgIGxldCBobCA9IG1hdGNoIGwgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgbGV0IGhyID0gbWF0Y2ggciB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBpZiBobCA+IGhyICsgMiB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgIHwgTm9kZXtsPWxsOyB2PWx2OyBkPWxkOyByPWxyfSAtPlxuICAgICAgICAgICAgaWYgaGVpZ2h0IGxsID49IGhlaWdodCBsciB0aGVuXG4gICAgICAgICAgICAgIGNyZWF0ZSBsbCBsdiBsZCAoY3JlYXRlIGxyIHggZCByKVxuICAgICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBtYXRjaCBsciB3aXRoXG4gICAgICAgICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgICAgICAgfCBOb2Rle2w9bHJsOyB2PWxydjsgZD1scmQ7IHI9bHJyfS0+XG4gICAgICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsbCBsdiBsZCBscmwpIGxydiBscmQgKGNyZWF0ZSBscnIgeCBkIHIpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlIGlmIGhyID4gaGwgKyAyIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgfCBOb2Rle2w9cmw7IHY9cnY7IGQ9cmQ7IHI9cnJ9IC0+XG4gICAgICAgICAgICBpZiBoZWlnaHQgcnIgPj0gaGVpZ2h0IHJsIHRoZW5cbiAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB4IGQgcmwpIHJ2IHJkIHJyXG4gICAgICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIG1hdGNoIHJsIHdpdGhcbiAgICAgICAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICAgICAgICB8IE5vZGV7bD1ybGw7IHY9cmx2OyBkPXJsZDsgcj1ybHJ9IC0+XG4gICAgICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHggZCBybGwpIHJsdiBybGQgKGNyZWF0ZSBybHIgcnYgcmQgcnIpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIE5vZGV7bDsgdj14OyBkOyByOyBoPShpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSl9XG5cbiAgICBsZXQgZW1wdHkgPSBFbXB0eVxuXG4gICAgbGV0IGlzX2VtcHR5ID0gZnVuY3Rpb24gRW1wdHkgLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcblxuICAgIGxldCByZWMgYWRkIHggZGF0YSA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9kZXtsPUVtcHR5OyB2PXg7IGQ9ZGF0YTsgcj1FbXB0eTsgaD0xfVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBofSBhcyBtIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgICBpZiBkID09IGRhdGEgdGhlbiBtIGVsc2UgTm9kZXtsOyB2PXg7IGQ9ZGF0YTsgcjsgaH1cbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBsbCA9IGFkZCB4IGRhdGEgbCBpblxuICAgICAgICAgICAgaWYgbCA9PSBsbCB0aGVuIG0gZWxzZSBiYWwgbGwgdiBkIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgcnIgPSBhZGQgeCBkYXRhIHIgaW5cbiAgICAgICAgICAgIGlmIHIgPT0gcnIgdGhlbiBtIGVsc2UgYmFsIGwgdiBkIHJyXG5cbiAgICBsZXQgcmVjIGZpbmQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIGRcbiAgICAgICAgICBlbHNlIGZpbmQgeCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9hdXggdjAgZDAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdiBkIGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYwIGQwIGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9vcHRfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIFNvbWUgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYgZCBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdjAgZDAgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3Rfb3B0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYgZCBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdCBmIHJcblxuICAgIGxldCByZWMgZmluZF9sYXN0X2F1eCB2MCBkMCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAodjAsIGQwKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYgZCBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYwIGQwIGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3QgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0X29wdF9hdXggdjAgZDAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgU29tZSAodjAsIGQwKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2IGQgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdjAgZDAgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2IGQgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X29wdCBmIGxcblxuICAgIGxldCByZWMgZmluZF9vcHQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBTb21lIGRcbiAgICAgICAgICBlbHNlIGZpbmRfb3B0IHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIG1lbSB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBOb2RlIHtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgYyA9IDAgfHwgbWVtIHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIG1pbl9iaW5kaW5nID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge2w9RW1wdHk7IHY7IGR9IC0+ICh2LCBkKVxuICAgICAgfCBOb2RlIHtsfSAtPiBtaW5fYmluZGluZyBsXG5cbiAgICBsZXQgcmVjIG1pbl9iaW5kaW5nX29wdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZSB7bD1FbXB0eTsgdjsgZH0gLT4gU29tZSAodiwgZClcbiAgICAgIHwgTm9kZSB7bH0tPiBtaW5fYmluZGluZ19vcHQgbFxuXG4gICAgbGV0IHJlYyBtYXhfYmluZGluZyA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHt2OyBkOyByPUVtcHR5fSAtPiAodiwgZClcbiAgICAgIHwgTm9kZSB7cn0gLT4gbWF4X2JpbmRpbmcgclxuXG4gICAgbGV0IHJlYyBtYXhfYmluZGluZ19vcHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGUge3Y7IGQ7IHI9RW1wdHl9IC0+IFNvbWUgKHYsIGQpXG4gICAgICB8IE5vZGUge3J9IC0+IG1heF9iaW5kaW5nX29wdCByXG5cbiAgICBsZXQgcmVjIHJlbW92ZV9taW5fYmluZGluZyA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLnJlbW92ZV9taW5fZWx0XCJcbiAgICAgIHwgTm9kZSB7bD1FbXB0eTsgcn0gLT4gclxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBiYWwgKHJlbW92ZV9taW5fYmluZGluZyBsKSB2IGQgclxuXG4gICAgbGV0IG1lcmdlIHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT5cbiAgICAgICAgICBsZXQgKHgsIGQpID0gbWluX2JpbmRpbmcgdDIgaW5cbiAgICAgICAgICBiYWwgdDEgeCBkIChyZW1vdmVfbWluX2JpbmRpbmcgdDIpXG5cbiAgICBsZXQgcmVjIHJlbW92ZSB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBFbXB0eVxuICAgICAgfCAoTm9kZSB7bDsgdjsgZDsgcn0gYXMgbSkgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gbWVyZ2UgbCByXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSByZW1vdmUgeCBsIGluIGlmIGwgPT0gbGwgdGhlbiBtIGVsc2UgYmFsIGxsIHYgZCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gcmVtb3ZlIHggciBpbiBpZiByID09IHJyIHRoZW4gbSBlbHNlIGJhbCBsIHYgZCByclxuXG4gICAgbGV0IHJlYyB1cGRhdGUgeCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBmIE5vbmUgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBFbXB0eVxuICAgICAgICAgIHwgU29tZSBkYXRhIC0+IE5vZGV7bD1FbXB0eTsgdj14OyBkPWRhdGE7IHI9RW1wdHk7IGg9MX1cbiAgICAgICAgICBlbmRcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gYXMgbSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBiZWdpblxuICAgICAgICAgICAgbWF0Y2ggZiAoU29tZSBkKSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gbWVyZ2UgbCByXG4gICAgICAgICAgICB8IFNvbWUgZGF0YSAtPlxuICAgICAgICAgICAgICAgIGlmIGQgPT0gZGF0YSB0aGVuIG0gZWxzZSBOb2Rle2w7IHY9eDsgZD1kYXRhOyByOyBofVxuICAgICAgICAgIGVuZCBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBsbCA9IHVwZGF0ZSB4IGYgbCBpblxuICAgICAgICAgICAgaWYgbCA9PSBsbCB0aGVuIG0gZWxzZSBiYWwgbGwgdiBkIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgcnIgPSB1cGRhdGUgeCBmIHIgaW5cbiAgICAgICAgICAgIGlmIHIgPT0gcnIgdGhlbiBtIGVsc2UgYmFsIGwgdiBkIHJyXG5cbiAgICBsZXQgYWRkX3RvX2xpc3QgeCBkYXRhIG0gPVxuICAgICAgbGV0IGFkZCA9IGZ1bmN0aW9uIE5vbmUgLT4gU29tZSBbZGF0YV0gfCBTb21lIGwgLT4gU29tZSAoZGF0YSA6OiBsKSBpblxuICAgICAgdXBkYXRlIHggYWRkIG1cblxuICAgIGxldCByZWMgaXRlciBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gKClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpdGVyIGYgbDsgZiB2IGQ7IGl0ZXIgZiByXG5cbiAgICBsZXQgcmVjIG1hcCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBFbXB0eVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBofSAtPlxuICAgICAgICAgIGxldCBsJyA9IG1hcCBmIGwgaW5cbiAgICAgICAgICBsZXQgZCcgPSBmIGQgaW5cbiAgICAgICAgICBsZXQgcicgPSBtYXAgZiByIGluXG4gICAgICAgICAgTm9kZXtsPWwnOyB2OyBkPWQnOyByPXInOyBofVxuXG4gICAgbGV0IHJlYyBtYXBpIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIEVtcHR5XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IGh9IC0+XG4gICAgICAgICAgbGV0IGwnID0gbWFwaSBmIGwgaW5cbiAgICAgICAgICBsZXQgZCcgPSBmIHYgZCBpblxuICAgICAgICAgIGxldCByJyA9IG1hcGkgZiByIGluXG4gICAgICAgICAgTm9kZXtsPWwnOyB2OyBkPWQnOyByPXInOyBofVxuXG4gICAgbGV0IHJlYyBmb2xkIGYgbSBhY2N1ID1cbiAgICAgIG1hdGNoIG0gd2l0aFxuICAgICAgICBFbXB0eSAtPiBhY2N1XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgZm9sZCBmIHIgKGYgdiBkIChmb2xkIGYgbCBhY2N1KSlcblxuICAgIGxldCByZWMgZm9yX2FsbCBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gdHJ1ZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBwIHYgZCAmJiBmb3JfYWxsIHAgbCAmJiBmb3JfYWxsIHAgclxuXG4gICAgbGV0IHJlYyBleGlzdHMgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGZhbHNlXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IHAgdiBkIHx8IGV4aXN0cyBwIGwgfHwgZXhpc3RzIHAgclxuXG4gICAgKCogQmV3YXJlOiB0aG9zZSB0d28gZnVuY3Rpb25zIGFzc3VtZSB0aGF0IHRoZSBhZGRlZCBrIGlzICpzdHJpY3RseSpcbiAgICAgICBzbWFsbGVyIChvciBiaWdnZXIpIHRoYW4gYWxsIHRoZSBwcmVzZW50IGtleXMgaW4gdGhlIHRyZWU7IGl0XG4gICAgICAgZG9lcyBub3QgdGVzdCBmb3IgZXF1YWxpdHkgd2l0aCB0aGUgY3VycmVudCBtaW4gKG9yIG1heCkga2V5LlxuXG4gICAgICAgSW5kZWVkLCB0aGV5IGFyZSBvbmx5IHVzZWQgZHVyaW5nIHRoZSBcImpvaW5cIiBvcGVyYXRpb24gd2hpY2hcbiAgICAgICByZXNwZWN0cyB0aGlzIHByZWNvbmRpdGlvbi5cbiAgICAqKVxuXG4gICAgbGV0IHJlYyBhZGRfbWluX2JpbmRpbmcgayB4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gc2luZ2xldG9uIGsgeFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICBiYWwgKGFkZF9taW5fYmluZGluZyBrIHggbCkgdiBkIHJcblxuICAgIGxldCByZWMgYWRkX21heF9iaW5kaW5nIGsgeCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IHNpbmdsZXRvbiBrIHhcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgYmFsIGwgdiBkIChhZGRfbWF4X2JpbmRpbmcgayB4IHIpXG5cbiAgICAoKiBTYW1lIGFzIGNyZWF0ZSBhbmQgYmFsLCBidXQgbm8gYXNzdW1wdGlvbnMgYXJlIG1hZGUgb24gdGhlXG4gICAgICAgcmVsYXRpdmUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuXG4gICAgbGV0IHJlYyBqb2luIGwgdiBkIHIgPVxuICAgICAgbWF0Y2ggKGwsIHIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSAtPiBhZGRfbWluX2JpbmRpbmcgdiBkIHJcbiAgICAgIHwgKF8sIEVtcHR5KSAtPiBhZGRfbWF4X2JpbmRpbmcgdiBkIGxcbiAgICAgIHwgKE5vZGV7bD1sbDsgdj1sdjsgZD1sZDsgcj1scjsgaD1saH0sXG4gICAgICAgICBOb2Rle2w9cmw7IHY9cnY7IGQ9cmQ7IHI9cnI7IGg9cmh9KSAtPlxuICAgICAgICAgIGlmIGxoID4gcmggKyAyIHRoZW4gYmFsIGxsIGx2IGxkIChqb2luIGxyIHYgZCByKSBlbHNlXG4gICAgICAgICAgaWYgcmggPiBsaCArIDIgdGhlbiBiYWwgKGpvaW4gbCB2IGQgcmwpIHJ2IHJkIHJyIGVsc2VcbiAgICAgICAgICBjcmVhdGUgbCB2IGQgclxuXG4gICAgKCogTWVyZ2UgdHdvIHRyZWVzIGwgYW5kIHIgaW50byBvbmUuXG4gICAgICAgQWxsIGVsZW1lbnRzIG9mIGwgbXVzdCBwcmVjZWRlIHRoZSBlbGVtZW50cyBvZiByLlxuICAgICAgIE5vIGFzc3VtcHRpb24gb24gdGhlIGhlaWdodHMgb2YgbCBhbmQgci4gKilcblxuICAgIGxldCBjb25jYXQgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPlxuICAgICAgICAgIGxldCAoeCwgZCkgPSBtaW5fYmluZGluZyB0MiBpblxuICAgICAgICAgIGpvaW4gdDEgeCBkIChyZW1vdmVfbWluX2JpbmRpbmcgdDIpXG5cbiAgICBsZXQgY29uY2F0X29yX2pvaW4gdDEgdiBkIHQyID1cbiAgICAgIG1hdGNoIGQgd2l0aFxuICAgICAgfCBTb21lIGQgLT4gam9pbiB0MSB2IGQgdDJcbiAgICAgIHwgTm9uZSAtPiBjb25jYXQgdDEgdDJcblxuICAgIGxldCByZWMgc3BsaXQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgKEVtcHR5LCBOb25lLCBFbXB0eSlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gKGwsIFNvbWUgZCwgcilcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCAobGwsIHByZXMsIHJsKSA9IHNwbGl0IHggbCBpbiAobGwsIHByZXMsIGpvaW4gcmwgdiBkIHIpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IChsciwgcHJlcywgcnIpID0gc3BsaXQgeCByIGluIChqb2luIGwgdiBkIGxyLCBwcmVzLCBycilcblxuICAgIGxldCByZWMgbWVyZ2UgZiBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgRW1wdHkpIC0+IEVtcHR5XG4gICAgICB8IChOb2RlIHtsPWwxOyB2PXYxOyBkPWQxOyByPXIxOyBoPWgxfSwgXykgd2hlbiBoMSA+PSBoZWlnaHQgczIgLT5cbiAgICAgICAgICBsZXQgKGwyLCBkMiwgcjIpID0gc3BsaXQgdjEgczIgaW5cbiAgICAgICAgICBjb25jYXRfb3Jfam9pbiAobWVyZ2UgZiBsMSBsMikgdjEgKGYgdjEgKFNvbWUgZDEpIGQyKSAobWVyZ2UgZiByMSByMilcbiAgICAgIHwgKF8sIE5vZGUge2w9bDI7IHY9djI7IGQ9ZDI7IHI9cjJ9KSAtPlxuICAgICAgICAgIGxldCAobDEsIGQxLCByMSkgPSBzcGxpdCB2MiBzMSBpblxuICAgICAgICAgIGNvbmNhdF9vcl9qb2luIChtZXJnZSBmIGwxIGwyKSB2MiAoZiB2MiBkMSAoU29tZSBkMikpIChtZXJnZSBmIHIxIHIyKVxuICAgICAgfCBfIC0+XG4gICAgICAgICAgYXNzZXJ0IGZhbHNlXG5cbiAgICBsZXQgcmVjIHVuaW9uIGYgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgfCAoRW1wdHksIHMpIHwgKHMsIEVtcHR5KSAtPiBzXG4gICAgICB8IChOb2RlIHtsPWwxOyB2PXYxOyBkPWQxOyByPXIxOyBoPWgxfSxcbiAgICAgICAgIE5vZGUge2w9bDI7IHY9djI7IGQ9ZDI7IHI9cjI7IGg9aDJ9KSAtPlxuICAgICAgICAgIGlmIGgxID49IGgyIHRoZW5cbiAgICAgICAgICAgIGxldCAobDIsIGQyLCByMikgPSBzcGxpdCB2MSBzMiBpblxuICAgICAgICAgICAgbGV0IGwgPSB1bmlvbiBmIGwxIGwyIGFuZCByID0gdW5pb24gZiByMSByMiBpblxuICAgICAgICAgICAgbWF0Y2ggZDIgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGpvaW4gbCB2MSBkMSByXG4gICAgICAgICAgICB8IFNvbWUgZDIgLT4gY29uY2F0X29yX2pvaW4gbCB2MSAoZiB2MSBkMSBkMikgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCAobDEsIGQxLCByMSkgPSBzcGxpdCB2MiBzMSBpblxuICAgICAgICAgICAgbGV0IGwgPSB1bmlvbiBmIGwxIGwyIGFuZCByID0gdW5pb24gZiByMSByMiBpblxuICAgICAgICAgICAgbWF0Y2ggZDEgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGpvaW4gbCB2MiBkMiByXG4gICAgICAgICAgICB8IFNvbWUgZDEgLT4gY29uY2F0X29yX2pvaW4gbCB2MiAoZiB2MiBkMSBkMikgclxuXG4gICAgbGV0IHJlYyBmaWx0ZXIgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IGFzIG0gLT5cbiAgICAgICAgICAoKiBjYWxsIFtwXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCBsJyA9IGZpbHRlciBwIGwgaW5cbiAgICAgICAgICBsZXQgcHZkID0gcCB2IGQgaW5cbiAgICAgICAgICBsZXQgcicgPSBmaWx0ZXIgcCByIGluXG4gICAgICAgICAgaWYgcHZkIHRoZW4gaWYgbD09bCcgJiYgcj09cicgdGhlbiBtIGVsc2Ugam9pbiBsJyB2IGQgcidcbiAgICAgICAgICBlbHNlIGNvbmNhdCBsJyByJ1xuXG4gICAgbGV0IHJlYyBmaWx0ZXJfbWFwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgICgqIGNhbGwgW2ZdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IGwnID0gZmlsdGVyX21hcCBmIGwgaW5cbiAgICAgICAgICBsZXQgZnZkID0gZiB2IGQgaW5cbiAgICAgICAgICBsZXQgcicgPSBmaWx0ZXJfbWFwIGYgciBpblxuICAgICAgICAgIGJlZ2luIG1hdGNoIGZ2ZCB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgZCcgLT4gam9pbiBsJyB2IGQnIHInXG4gICAgICAgICAgICB8IE5vbmUgLT4gY29uY2F0IGwnIHInXG4gICAgICAgICAgZW5kXG5cbiAgICBsZXQgcmVjIHBhcnRpdGlvbiBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gKEVtcHR5LCBFbXB0eSlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICAoKiBjYWxsIFtwXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCAobHQsIGxmKSA9IHBhcnRpdGlvbiBwIGwgaW5cbiAgICAgICAgICBsZXQgcHZkID0gcCB2IGQgaW5cbiAgICAgICAgICBsZXQgKHJ0LCByZikgPSBwYXJ0aXRpb24gcCByIGluXG4gICAgICAgICAgaWYgcHZkXG4gICAgICAgICAgdGhlbiAoam9pbiBsdCB2IGQgcnQsIGNvbmNhdCBsZiByZilcbiAgICAgICAgICBlbHNlIChjb25jYXQgbHQgcnQsIGpvaW4gbGYgdiBkIHJmKVxuXG4gICAgdHlwZSAnYSBlbnVtZXJhdGlvbiA9IEVuZCB8IE1vcmUgb2Yga2V5ICogJ2EgKiAnYSB0ICogJ2EgZW51bWVyYXRpb25cblxuICAgIGxldCByZWMgY29uc19lbnVtIG0gZSA9XG4gICAgICBtYXRjaCBtIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBjb25zX2VudW0gbCAoTW9yZSh2LCBkLCByLCBlKSlcblxuICAgIGxldCBjb21wYXJlIGNtcCBtMSBtMiA9XG4gICAgICBsZXQgcmVjIGNvbXBhcmVfYXV4IGUxIGUyID1cbiAgICAgICAgICBtYXRjaCAoZTEsIGUyKSB3aXRoXG4gICAgICAgICAgKEVuZCwgRW5kKSAtPiAwXG4gICAgICAgIHwgKEVuZCwgXykgIC0+IC0xXG4gICAgICAgIHwgKF8sIEVuZCkgLT4gMVxuICAgICAgICB8IChNb3JlKHYxLCBkMSwgcjEsIGUxKSwgTW9yZSh2MiwgZDIsIHIyLCBlMikpIC0+XG4gICAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHYxIHYyIGluXG4gICAgICAgICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgICAgICAgIGxldCBjID0gY21wIGQxIGQyIGluXG4gICAgICAgICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgICAgICAgIGNvbXBhcmVfYXV4IChjb25zX2VudW0gcjEgZTEpIChjb25zX2VudW0gcjIgZTIpXG4gICAgICBpbiBjb21wYXJlX2F1eCAoY29uc19lbnVtIG0xIEVuZCkgKGNvbnNfZW51bSBtMiBFbmQpXG5cbiAgICBsZXQgZXF1YWwgY21wIG0xIG0yID1cbiAgICAgIGxldCByZWMgZXF1YWxfYXV4IGUxIGUyID1cbiAgICAgICAgICBtYXRjaCAoZTEsIGUyKSB3aXRoXG4gICAgICAgICAgKEVuZCwgRW5kKSAtPiB0cnVlXG4gICAgICAgIHwgKEVuZCwgXykgIC0+IGZhbHNlXG4gICAgICAgIHwgKF8sIEVuZCkgLT4gZmFsc2VcbiAgICAgICAgfCAoTW9yZSh2MSwgZDEsIHIxLCBlMSksIE1vcmUodjIsIGQyLCByMiwgZTIpKSAtPlxuICAgICAgICAgICAgT3JkLmNvbXBhcmUgdjEgdjIgPSAwICYmIGNtcCBkMSBkMiAmJlxuICAgICAgICAgICAgZXF1YWxfYXV4IChjb25zX2VudW0gcjEgZTEpIChjb25zX2VudW0gcjIgZTIpXG4gICAgICBpbiBlcXVhbF9hdXggKGNvbnNfZW51bSBtMSBFbmQpIChjb25zX2VudW0gbTIgRW5kKVxuXG4gICAgbGV0IHJlYyBjYXJkaW5hbCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IDBcbiAgICAgIHwgTm9kZSB7bDsgcn0gLT4gY2FyZGluYWwgbCArIDEgKyBjYXJkaW5hbCByXG5cbiAgICBsZXQgcmVjIGJpbmRpbmdzX2F1eCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBiaW5kaW5nc19hdXggKCh2LCBkKSA6OiBiaW5kaW5nc19hdXggYWNjdSByKSBsXG5cbiAgICBsZXQgYmluZGluZ3MgcyA9XG4gICAgICBiaW5kaW5nc19hdXggW10gc1xuXG4gICAgbGV0IGNob29zZSA9IG1pbl9iaW5kaW5nXG5cbiAgICBsZXQgY2hvb3NlX29wdCA9IG1pbl9iaW5kaW5nX29wdFxuXG4gICAgbGV0IHRvX2xpc3QgPSBiaW5kaW5nc1xuICAgIGxldCBvZl9saXN0IGJzID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBtIChrLCB2KSAtPiBhZGQgayB2IG0pIGVtcHR5IGJzXG5cbiAgICBsZXQgYWRkX3NlcSBpIG0gPVxuICAgICAgU2VxLmZvbGRfbGVmdCAoZnVuIG0gKGssdikgLT4gYWRkIGsgdiBtKSBtIGlcblxuICAgIGxldCBvZl9zZXEgaSA9IGFkZF9zZXEgaSBlbXB0eVxuXG4gICAgbGV0IHJlYyBzZXFfb2ZfZW51bV8gYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgICAgfCBFbmQgLT4gU2VxLk5pbFxuICAgICAgfCBNb3JlIChrLHYsdCxyZXN0KSAtPiBTZXEuQ29ucyAoKGssdiksIHNlcV9vZl9lbnVtXyAoY29uc19lbnVtIHQgcmVzdCkpXG5cbiAgICBsZXQgdG9fc2VxIG0gPVxuICAgICAgc2VxX29mX2VudW1fIChjb25zX2VudW0gbSBFbmQpXG5cbiAgICBsZXQgcmVjIHNub2NfZW51bSBzIGUgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGVcbiAgICAgIHwgTm9kZXtsOyB2OyBkOyByfSAtPiBzbm9jX2VudW0gciAoTW9yZSh2LCBkLCBsLCBlKSlcblxuICAgIGxldCByZWMgcmV2X3NlcV9vZl9lbnVtXyBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgICB8IEVuZCAtPiBTZXEuTmlsXG4gICAgICB8IE1vcmUgKGssdix0LHJlc3QpIC0+XG4gICAgICAgICAgU2VxLkNvbnMgKChrLHYpLCByZXZfc2VxX29mX2VudW1fIChzbm9jX2VudW0gdCByZXN0KSlcblxuICAgIGxldCB0b19yZXZfc2VxIGMgPVxuICAgICAgcmV2X3NlcV9vZl9lbnVtXyAoc25vY19lbnVtIGMgRW5kKVxuXG4gICAgbGV0IHRvX3NlcV9mcm9tIGxvdyBtID1cbiAgICAgIGxldCByZWMgYXV4IGxvdyBtIGMgPSBtYXRjaCBtIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBjXG4gICAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgX30gLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIE9yZC5jb21wYXJlIHYgbG93IHdpdGhcbiAgICAgICAgICAgICAgfCAwIC0+IE1vcmUgKHYsIGQsIHIsIGMpXG4gICAgICAgICAgICAgIHwgbiB3aGVuIG48MCAtPiBhdXggbG93IHIgY1xuICAgICAgICAgICAgICB8IF8gLT4gYXV4IGxvdyBsIChNb3JlICh2LCBkLCByLCBjKSlcbiAgICAgICAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIHNlcV9vZl9lbnVtXyAoYXV4IGxvdyBtIEVuZClcbmVuZFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWIiLCJBc3NlcnRfZmFpbHVyZSIsIlN0ZGxpYl9TZXEiLCJTdGRsaWJfTGlzdCIsIlN0ZGxpYl9NYXAiLCJPcmQiLCJoZWlnaHQiLCJwYXJhbSIsImgiLCJjcmVhdGUiLCJsIiwieCIsImQiLCJyIiwiaGwiLCJociIsInNpbmdsZXRvbiIsImJhbCIsImNzdF9NYXBfYmFsIiwibHIiLCJsZCIsImx2IiwibGwiLCJscnIiLCJscmQiLCJscnYiLCJscmwiLCJyciIsInJkIiwicnYiLCJybCIsInJsciIsInJsZCIsInJsdiIsInJsbCIsImlzX2VtcHR5IiwiYWRkIiwiZGF0YSIsIm0iLCJ2IiwiYyIsImZpbmQiLCJmaW5kX2ZpcnN0IiwiZDAiLCJ2MCIsImZpbmRfZmlyc3Rfb3B0IiwiZmluZF9sYXN0IiwiZmluZF9sYXN0X29wdCIsImZpbmRfb3B0IiwibWVtIiwibWluX2JpbmRpbmciLCJtaW5fYmluZGluZ19vcHQiLCJtYXhfYmluZGluZyIsIm1heF9iaW5kaW5nX29wdCIsInJlbW92ZV9taW5fYmluZGluZyIsInQxIiwidDIiLCJtYXRjaCIsInJlbW92ZSIsInVwZGF0ZSIsImFkZF90b19saXN0IiwiaXRlciIsIm1hcCIsIm1hcGkiLCJmb2xkIiwiYWNjdSIsImZvcl9hbGwiLCJwIiwiZXhpc3RzIiwiYWRkX21pbl9iaW5kaW5nIiwiayIsImFkZF9tYXhfYmluZGluZyIsImpvaW4iLCJyaCIsImxoIiwiY29uY2F0IiwiY29uY2F0X29yX2pvaW4iLCJzcGxpdCIsInByZXMiLCJtZXJnZSIsInMxIiwiczIiLCJoMSIsInIxIiwiZDEiLCJ2MSIsImwxIiwicjIiLCJkMiIsImwyIiwidjIiLCJ1bmlvbiIsImgyIiwicyIsImZpbHRlciIsInB2ZCIsImZpbHRlcl9tYXAiLCJmdmQiLCJwYXJ0aXRpb24iLCJsZiIsImx0IiwicmYiLCJydCIsImNvbnNfZW51bSIsImUiLCJjb21wYXJlIiwiY21wIiwibTEiLCJtMiIsImUyIiwiZTEiLCJlcXVhbCIsImNhcmRpbmFsIiwiYmluZGluZ3NfYXV4IiwiYmluZGluZ3MiLCJlbXB0eSIsIm9mX2xpc3QiLCJicyIsImFkZF9zZXEiLCJpIiwib2Zfc2VxIiwic2VxX29mX2VudW0iLCJyZXN0IiwidCIsInRvX3NlcSIsInNub2NfZW51bSIsInJldl9zZXFfb2ZfZW51bSIsInRvX3Jldl9zZXEiLCJ0b19zZXFfZnJvbSIsImxvdyIsIm4iXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFKLEdBQUFDLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDO0FBQUFBLE1BQUE7QUFBQSxnQkFBQUM7QUFBQUEsaUJBQUFDLE9BQUFDO0FBQUFBLFNDZ0ZpQixZQUNBO0FBQUEsYUFBQUMsSUFEQTtBQUFBLFNBRUc7QUFBQSxRQUFDO0FBQUEsaUJBQUFDLE9BQUFDLEdBQUFDLEdBQUFDLEdBQUFDO0FBQUFBO0FBQUFBLFVBQUFDLEtBR047QUFBQSxVQUFBQyxLQUFrQjtBQUFBLGNBQzNCO0FBQUE7QUFBQSxRQUEyRDtBQUFBLGlCQUFBQyxVQUFBTCxHQUFBQyxHQUV6QywwQkFBbUM7QUFBQSxpQkFBQUssSUFBQVAsR0FBQUMsR0FBQUMsR0FBQUM7QUFBQUEsU0FH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R0FBQWpDO0FBQUFBLFNBRXRCLFFBQ3JCO0FBQUE7QUFBQSxVQUFBbUgsT0FEcUI7QUFBQSxVQUFBQyxJQUFBO0FBQUEsVUFBQXBGLElBQUE7QUFBQSxVQUFBK0IsSUFBQTtBQUFBLGNBR1E7QUFBQSxTQUFrQixrQ0FBbkMsK0JBQW1DO0FBQUEsUUFBQztBQUFBLGlCQUFBeUQsV0FBQXZGO0FBQUFBLGFBQUEsSUFHeEM7QUFBQSxTQUFpQjtBQUFBO0FBQUEsaUJBQUF3RixZQUFBQyxLQUFBM0Y7QUFBQUE7QUFBQUE7QUFBQUEsY0FBQUEsTUFZckIsR0FBQUUsSUFBQTtBQUFBO0FBQUEsV0FUUztBQUFBO0FBQUEsWUFBQTNCLElBQUE7QUFBQSxZQUFBRCxJQUFBO0FBQUEsWUFBQTJCLElBQUE7QUFBQSxZQUFBN0IsSUFBQTtBQUFBLFlBQUF3SCxJQUdKO0FBQUEsV0FBaUI7QUFBQSxXQUVsQjtBQUFBLGdCQUFBMUYsTUFDRjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFERTtBQUFBO0FBQUEsa0JBREY7QUFBQTtBQUFBLFNBS2E7QUFBQTtBQUFBLFFEamlCbEMiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjoxODAxMCwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL3N0YWNrLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHQgPSB7IG11dGFibGUgYyA6ICdhIGxpc3Q7IG11dGFibGUgbGVuIDogaW50OyB9XG5cbmV4Y2VwdGlvbiBFbXB0eVxuXG5sZXQgY3JlYXRlICgpID0geyBjID0gW107IGxlbiA9IDA7IH1cblxubGV0IGNsZWFyIHMgPSBzLmMgPC0gW107IHMubGVuIDwtIDBcblxubGV0IGNvcHkgcyA9IHsgYyA9IHMuYzsgbGVuID0gcy5sZW47IH1cblxubGV0IHB1c2ggeCBzID0gcy5jIDwtIHggOjogcy5jOyBzLmxlbiA8LSBzLmxlbiArIDFcblxubGV0IHBvcCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6dGwgLT4gcy5jIDwtIHRsOyBzLmxlbiA8LSBzLmxlbiAtIDE7IGhkXG4gIHwgW10gICAgIC0+IHJhaXNlIEVtcHR5XG5cbmxldCBwb3Bfb3B0IHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IGhkOjp0bCAtPiBzLmMgPC0gdGw7IHMubGVuIDwtIHMubGVuIC0gMTsgU29tZSBoZFxuICB8IFtdICAgICAtPiBOb25lXG5cbmxldCBkcm9wIHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IF9oZDo6dGwgLT4gcy5jIDwtIHRsOyBzLmxlbiA8LSBzLmxlbiAtIDFcbiAgfCBbXSAtPiByYWlzZSBFbXB0eVxuXG5sZXQgdG9wIHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IGhkOjpfIC0+IGhkXG4gIHwgW10gICAgLT4gcmFpc2UgRW1wdHlcblxubGV0IHRvcF9vcHQgcyA9XG4gIG1hdGNoIHMuYyB3aXRoXG4gIHwgaGQ6Ol8gLT4gU29tZSBoZFxuICB8IFtdICAgIC0+IE5vbmVcblxubGV0IGlzX2VtcHR5IHMgPSAocy5jID0gW10pXG5cbmxldCBsZW5ndGggcyA9IHMubGVuXG5cbmxldCBpdGVyIGYgcyA9IExpc3QuaXRlciBmIHMuY1xuXG5sZXQgZm9sZCBmIGFjYyBzID0gTGlzdC5mb2xkX2xlZnQgZiBhY2Mgcy5jXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcyA9IExpc3QudG9fc2VxIHMuY1xuXG5sZXQgYWRkX3NlcSBxIGkgPSBTZXEuaXRlciAoZnVuIHggLT4gcHVzaCB4IHEpIGlcblxubGV0IG9mX3NlcSBnID1cbiAgbGV0IHMgPSBjcmVhdGUoKSBpblxuICBhZGRfc2VxIHMgZztcbiAgc1xuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYl9TZXEiLCJTdGRsaWJfTGlzdCIsIkVtcHR5IiwiY3JlYXRlIiwicGFyYW0iLCJjbGVhciIsInMiLCJjb3B5IiwicHVzaCIsIngiLCJwb3AiLCJtYXRjaCIsInRsIiwiaGQiLCJwb3Bfb3B0IiwiZHJvcCIsInRvcCIsInRvcF9vcHQiLCJpc19lbXB0eSIsImxlbmd0aCIsIml0ZXIiLCJmIiwiZm9sZCIsImFjYyIsInRvX3NlcSIsImFkZF9zZXEiLCJxIiwiaSIsIm9mX3NlcSIsImciXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxRQUFBO0FBQUEsWUFBQUMsT0FBQUMsT0NtQmdCLGlCQUFvQjtBQUFBLFlBQUFDLE1BQUFDLEdBRXRCLFVBQVcsbUJBQVU7QUFBQSxZQUFBQyxLQUFBRCxHQUV0Qix1QkFBeUI7QUFBQSxZQUFBRSxLQUFBQyxHQUFBSCxHQUV2QixxQkFBaUIsOEJBQWtCO0FBQUEsWUFBQUksSUFBQUo7QUFBQUEsUUFBQUssUUFHaEQ7QUFBQSxnQkFFWTtBQUFBLFFBQUFDLEtBRlosVUFBQUMsS0FBQTtBQUFBLElBQ1k7QUFBQSxJQUFXO0FBQUEsSUFBb0I7QUFBQSxHQUNwQjtBQUFBLFlBQUFDLFFBQUFSO0FBQUFBLFFBQUFLLFFBR3ZCO0FBQUEsZ0JBRVk7QUFBQSxRQUFBQyxLQUZaLFVBQUFDLEtBQUE7QUFBQSxJQUNZO0FBQUEsSUFBVztBQUFBLElBQW9CO0FBQUEsR0FDM0I7QUFBQSxZQUFBRSxLQUFBVDtBQUFBQSxRQUFBSyxRQUdoQjtBQUFBLGdCQUVRO0FBQUEsUUFBQUMsS0FGUjtBQUFBLElBQ2E7QUFBQSxJQUFXO0FBQUE7QUFBQSxHQUNMO0FBQUEsWUFBQUksSUFBQVY7QUFBQUEsUUFBQUssUUFHbkI7QUFBQSxnQkFFVztBQUFBLFFBQUFFLEtBRlg7QUFBQSxJQUNXO0FBQUEsR0FDVztBQUFBLFlBQUFJLFFBQUFYO0FBQUFBLFFBQUFLLFFBR3RCO0FBQUEsZ0JBRVc7QUFBQSxRQUFBRSxLQUZYO0FBQUEsSUFDVztBQUFBLEdBQ0k7QUFBQSxZQUFBSyxTQUFBWixHQUVBLDBCQUFVO0FBQUEsWUFBQWEsT0FBQWIsR0FFWixZQUFLO0FBQUEsWUFBQWMsS0FBQUMsR0FBQWYsR0FFTCwwQ0FBZTtBQUFBLFlBQUFnQixLQUFBRCxHQUFBRSxLQUFBakIsR0FFWCwrQ0FBd0I7QUFBQSxZQUFBa0IsT0FBQWxCLEdBSTVCLHVDQUFlO0FBQUEsWUFBQW1CLFFBQUFDLEdBQUFDO0FBQUFBLElBRVoseUNBQUFsQixHQUFtQixpQkFBUSxNQUFHO0FBQUE7QUFBQSxZQUFBbUIsT0FBQUMsT0FBQXZCLElBR3RDLFdBQ1IsZUFBVyxTQUNWO0FBQUEsR0RyRUgiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjoxODA5NiwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL3F1ZXVlLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICBGcmFuY29pcyBQb3R0aWVyLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICBKZXJlbWllIERpbWlubywgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leGNlcHRpb24gRW1wdHlcblxudHlwZSAnYSBjZWxsID1cbiAgfCBOaWxcbiAgfCBDb25zIG9mIHsgY29udGVudDogJ2E7IG11dGFibGUgbmV4dDogJ2EgY2VsbCB9XG5cbnR5cGUgJ2EgdCA9IHtcbiAgbXV0YWJsZSBsZW5ndGg6IGludDtcbiAgbXV0YWJsZSBmaXJzdDogJ2EgY2VsbDtcbiAgbXV0YWJsZSBsYXN0OiAnYSBjZWxsXG59XG5cbmxldCBjcmVhdGUgKCkgPSB7XG4gIGxlbmd0aCA9IDA7XG4gIGZpcnN0ID0gTmlsO1xuICBsYXN0ID0gTmlsXG59XG5cbmxldCBjbGVhciBxID1cbiAgcS5sZW5ndGggPC0gMDtcbiAgcS5maXJzdCA8LSBOaWw7XG4gIHEubGFzdCA8LSBOaWxcblxubGV0IGFkZCB4IHEgPVxuICBsZXQgY2VsbCA9IENvbnMge1xuICAgIGNvbnRlbnQgPSB4O1xuICAgIG5leHQgPSBOaWxcbiAgfSBpblxuICBtYXRjaCBxLmxhc3Qgd2l0aFxuICB8IE5pbCAtPlxuICAgIHEubGVuZ3RoIDwtIDE7XG4gICAgcS5maXJzdCA8LSBjZWxsO1xuICAgIHEubGFzdCA8LSBjZWxsXG4gIHwgQ29ucyBsYXN0IC0+XG4gICAgcS5sZW5ndGggPC0gcS5sZW5ndGggKyAxO1xuICAgIGxhc3QubmV4dCA8LSBjZWxsO1xuICAgIHEubGFzdCA8LSBjZWxsXG5cbmxldCBwdXNoID1cbiAgYWRkXG5cbmxldCBwZWVrIHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gcmFpc2UgRW1wdHlcbiAgfCBDb25zIHsgY29udGVudCB9IC0+IGNvbnRlbnRcblxubGV0IHBlZWtfb3B0IHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gTm9uZVxuICB8IENvbnMgeyBjb250ZW50IH0gLT4gU29tZSBjb250ZW50XG5cbmxldCB0b3AgPVxuICBwZWVrXG5cbmxldCB0YWtlIHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gcmFpc2UgRW1wdHlcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCA9IE5pbCB9IC0+XG4gICAgY2xlYXIgcTtcbiAgICBjb250ZW50XG4gIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgIHEubGVuZ3RoIDwtIHEubGVuZ3RoIC0gMTtcbiAgICBxLmZpcnN0IDwtIG5leHQ7XG4gICAgY29udGVudFxuXG5sZXQgdGFrZV9vcHQgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiBOb25lXG4gIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgPSBOaWwgfSAtPlxuICAgIGNsZWFyIHE7XG4gICAgU29tZSBjb250ZW50XG4gIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgIHEubGVuZ3RoIDwtIHEubGVuZ3RoIC0gMTtcbiAgICBxLmZpcnN0IDwtIG5leHQ7XG4gICAgU29tZSBjb250ZW50XG5cbmxldCBwb3AgPVxuICB0YWtlXG5cbmxldCBkcm9wIHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gcmFpc2UgRW1wdHlcbiAgfCBDb25zIHsgY29udGVudCA9IF87IG5leHQgPSBOaWwgfSAtPlxuICAgIGNsZWFyIHFcbiAgfCBDb25zIHsgY29udGVudCA9IF87IG5leHQgfSAtPlxuICAgIHEubGVuZ3RoIDwtIHEubGVuZ3RoIC0gMTtcbiAgICBxLmZpcnN0IDwtIG5leHRcblxubGV0IGNvcHkgPVxuICBsZXQgcmVjIGNvcHkgcV9yZXMgcHJldiBjZWxsID1cbiAgICBtYXRjaCBjZWxsIHdpdGhcbiAgICB8IE5pbCAtPiBxX3Jlcy5sYXN0IDwtIHByZXY7IHFfcmVzXG4gICAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgICBsZXQgcmVzID0gQ29ucyB7IGNvbnRlbnQ7IG5leHQgPSBOaWwgfSBpblxuICAgICAgYmVnaW4gbWF0Y2ggcHJldiB3aXRoXG4gICAgICB8IE5pbCAtPiBxX3Jlcy5maXJzdCA8LSByZXNcbiAgICAgIHwgQ29ucyBwIC0+IHAubmV4dCA8LSByZXNcbiAgICAgIGVuZDtcbiAgICAgIGNvcHkgcV9yZXMgcmVzIG5leHRcbiAgaW5cbiAgZnVuIHEgLT4gY29weSB7IGxlbmd0aCA9IHEubGVuZ3RoOyBmaXJzdCA9IE5pbDsgbGFzdCA9IE5pbCB9IE5pbCBxLmZpcnN0XG5cbmxldCBpc19lbXB0eSBxID1cbiAgcS5sZW5ndGggPSAwXG5cbmxldCBsZW5ndGggcSA9XG4gIHEubGVuZ3RoXG5cbmxldCBpdGVyID1cbiAgbGV0IHJlYyBpdGVyIGYgY2VsbCA9XG4gICAgbWF0Y2ggY2VsbCB3aXRoXG4gICAgfCBOaWwgLT4gKClcbiAgICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICAgIGYgY29udGVudDtcbiAgICAgIGl0ZXIgZiBuZXh0XG4gIGluXG4gIGZ1biBmIHEgLT4gaXRlciBmIHEuZmlyc3RcblxubGV0IGZvbGQgPVxuICBsZXQgcmVjIGZvbGQgZiBhY2N1IGNlbGwgPVxuICAgIG1hdGNoIGNlbGwgd2l0aFxuICAgIHwgTmlsIC0+IGFjY3VcbiAgICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICAgIGxldCBhY2N1ID0gZiBhY2N1IGNvbnRlbnQgaW5cbiAgICAgIGZvbGQgZiBhY2N1IG5leHRcbiAgaW5cbiAgZnVuIGYgYWNjdSBxIC0+IGZvbGQgZiBhY2N1IHEuZmlyc3RcblxubGV0IHRyYW5zZmVyIHExIHEyID1cbiAgaWYgcTEubGVuZ3RoID4gMCB0aGVuXG4gICAgbWF0Y2ggcTIubGFzdCB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgIHEyLmxlbmd0aCA8LSBxMS5sZW5ndGg7XG4gICAgICBxMi5maXJzdCA8LSBxMS5maXJzdDtcbiAgICAgIHEyLmxhc3QgPC0gcTEubGFzdDtcbiAgICAgIGNsZWFyIHExXG4gICAgfCBDb25zIGxhc3QgLT5cbiAgICAgIHEyLmxlbmd0aCA8LSBxMi5sZW5ndGggKyBxMS5sZW5ndGg7XG4gICAgICBsYXN0Lm5leHQgPC0gcTEuZmlyc3Q7XG4gICAgICBxMi5sYXN0IDwtIHExLmxhc3Q7XG4gICAgICBjbGVhciBxMVxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHEgPVxuICBsZXQgcmVjIGF1eCBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgfCBOaWwgLT4gU2VxLk5pbFxuICAgIHwgQ29ucyB7IGNvbnRlbnQ9eDsgbmV4dDsgfSAtPiBTZXEuQ29ucyAoeCwgYXV4IG5leHQpXG4gIGluXG4gIGF1eCBxLmZpcnN0XG5cbmxldCBhZGRfc2VxIHEgaSA9IFNlcS5pdGVyIChmdW4geCAtPiBwdXNoIHggcSkgaVxuXG5sZXQgb2Zfc2VxIGcgPVxuICBsZXQgcSA9IGNyZWF0ZSgpIGluXG4gIGFkZF9zZXEgcSBnO1xuICBxXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJTdGRsaWJfU2VxIiwiRW1wdHkiLCJjcmVhdGUiLCJwYXJhbSIsImNsZWFyIiwicSIsImFkZCIsIngiLCJjZWxsIiwibWF0Y2giLCJwZWVrIiwiY29udGVudCIsInBlZWtfb3B0IiwidGFrZSIsIm5leHQiLCJ0YWtlX29wdCIsImRyb3AiLCJjb3B5IiwicV9yZXMiLCJwcmV2IiwiaXNfZW1wdHkiLCJsZW5ndGgiLCJpdGVyIiwiZm9sZCIsImFjY3UiLCJ0cmFuc2ZlciIsInExIiwicTIiLCJ0b19zZXEiLCJhdXgiLCJjIiwiYWRkX3NlcSIsImkiLCJvZl9zZXEiLCJnIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEs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QUNWO0FBQUEsR0E5QkQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVEOUlGIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MTgyNjMsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9idWZmZXIubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICBQaWVycmUgV2VpcyBhbmQgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk5IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEV4dGVuc2libGUgYnVmZmVycyAqKVxuXG4oKiBUaGUgW2lubmVyX2J1ZmZlcl0gdHlwZSBlbnN1cmVzIHRoYXQgdGhlIFtsZW5ndGhdIGFuZCBbYnVmZmVyXSBmaWVsZHMgYXJlXG4gICBhbHdheXMgc3luY2hyb25pemVkLCBbbGVuZ3RoID0gQnl0ZXMubGVuZ3RoIGJ1ZmZlcl0sIGV2ZW4gaW4gcHJlc2VuY2VcbiAgIG9mIGRhdGEgcmFjZXMuXG4qKVxudHlwZSBpbm5lcl9idWZmZXIgPSB7XG4gIGJ1ZmZlcjogYnl0ZXM7XG4gIGxlbmd0aDogaW50O1xufVxuXG50eXBlIHQgPVxuIHttdXRhYmxlIGlubmVyIDogaW5uZXJfYnVmZmVyO1xuICBtdXRhYmxlIHBvc2l0aW9uIDogaW50O1xuICBpbml0aWFsX2J1ZmZlciA6IGJ5dGVzfVxuKCogSW52YXJpYW50czogYWxsIHBhcnRzIG9mIHRoZSBjb2RlIHByZXNlcnZlIHRoZSBpbnZhcmlhbnRzIHRoYXQ6XG4gICAtIFtpbm5lci5sZW5ndGggPSBCeXRlcy5sZW5ndGggaW5uZXIuYnVmZmVyXVxuICAgSW4gYWJzZW5jZSBvZiBkYXRhIHJhY2VzLCB3ZSBhbHNvIGhhdmVcbiAgIC0gWzAgPD0gYi5wb3NpdGlvbiA8PSBiLmlubmVyLmxlbmd0aF1cblxuICAgTm90ZSBpbiBwYXJ0aWN1bGFyIHRoYXQgW2IucG9zaXRpb24gPSBiLmlubmVyLmxlbmd0aF0gaXMgbGVnYWwsXG4gICBpdCBtZWFucyB0aGF0IHRoZSBidWZmZXIgaXMgZnVsbCBhbmQgd2lsbCBoYXZlIHRvIGJlIGV4dGVuZGVkXG4gICBiZWZvcmUgYW55IGZ1cnRoZXIgYWRkaXRpb24uICopXG5cbmxldCBjcmVhdGUgbiA9XG4gbGV0IG4gPSBpZiBuIDwgMSB0aGVuIDEgZWxzZSBuIGluXG4gbGV0IG4gPSBpZiBuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIGVsc2UgbiBpblxuIGxldCBzID0gQnl0ZXMuY3JlYXRlIG4gaW5cbiB7IGlubmVyID0geyBidWZmZXIgPSBzOyBsZW5ndGggPSBufTsgcG9zaXRpb24gPSAwOyBpbml0aWFsX2J1ZmZlciA9IHN9XG5cbmxldCBjb250ZW50cyBiID0gQnl0ZXMuc3ViX3N0cmluZyBiLmlubmVyLmJ1ZmZlciAwIGIucG9zaXRpb25cbmxldCB0b19ieXRlcyBiID0gQnl0ZXMuc3ViIGIuaW5uZXIuYnVmZmVyIDAgYi5wb3NpdGlvblxuXG5sZXQgc3ViIGIgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBiLnBvc2l0aW9uIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuc3ViXCJcbiAgZWxzZSBCeXRlcy5zdWJfc3RyaW5nIGIuaW5uZXIuYnVmZmVyIG9mcyBsZW5cblxuXG5sZXQgYmxpdCBzcmMgc3Jjb2ZmIGRzdCBkc3RvZmYgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBzcmNvZmYgPCAwIHx8IHNyY29mZiA+IHNyYy5wb3NpdGlvbiAtIGxlblxuICAgICAgICAgICAgIHx8IGRzdG9mZiA8IDAgfHwgZHN0b2ZmID4gKEJ5dGVzLmxlbmd0aCBkc3QpIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuYmxpdFwiXG4gIGVsc2VcbiAgICBCeXRlcy5ibGl0IHNyYy5pbm5lci5idWZmZXIgc3Jjb2ZmIGRzdCBkc3RvZmYgbGVuXG5cblxubGV0IG50aCBiIG9mcyA9XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtidWZmZXI7bGVuZ3RofSA9IGIuaW5uZXIgaW5cbiAgaWYgb2ZzIDwgMCB8fCBvZnMgPj0gcG9zaXRpb24gfHwgcG9zaXRpb24gPiBsZW5ndGggdGhlblxuICAgaW52YWxpZF9hcmcgXCJCdWZmZXIubnRoXCJcbiAgZWxzZSBCeXRlcy51bnNhZmVfZ2V0IGJ1ZmZlciBvZnNcblxuXG5sZXQgbGVuZ3RoIGIgPSBiLnBvc2l0aW9uXG5cbmxldCBjbGVhciBiID0gYi5wb3NpdGlvbiA8LSAwXG5cbmxldCByZXNldCBiID1cbiAgYi5wb3NpdGlvbiA8LSAwO1xuICBsZXQgaW5uZXIgPVxuICAgIHsgYnVmZmVyID0gYi5pbml0aWFsX2J1ZmZlcjsgbGVuZ3RoID0gQnl0ZXMubGVuZ3RoIGIuaW5pdGlhbF9idWZmZXIgfVxuICBpblxuICBiLmlubmVyIDwtIGlubmVyXG5cbigqIFtyZXNpemUgYiBtb3JlXSBlbnN1cmVzIHRoYXQgW2IucG9zaXRpb24gKyBtb3JlIDw9IGIuaW5uZXIubGVuZ3RoXSBob2xkc1xuICAgYnkgZHluYW1pY2FsbHkgZXh0ZW5kaW5nIFtiLmlubmVyXSBpZiBuZWNlc3NhcnkgLS0gYW5kIHRodXNcbiAgIGluY3JlYXNpbmcgW2IuaW5uZXIubGVuZ3RoXS5cbiopXG5sZXQgcmVzaXplIGIgbW9yZSA9XG4gIGxldCBvbGRfcG9zID0gYi5wb3NpdGlvbiBpblxuICBsZXQgb2xkX2xlbiA9IGIuaW5uZXIubGVuZ3RoIGluXG4gIGxldCBuZXdfbGVuID0gcmVmIG9sZF9sZW4gaW5cbiAgd2hpbGUgb2xkX3BvcyArIG1vcmUgPiAhbmV3X2xlbiBkbyBuZXdfbGVuIDo9IDIgKiAhbmV3X2xlbiBkb25lO1xuICBpZiAhbmV3X2xlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuIGJlZ2luXG4gICAgaWYgb2xkX3BvcyArIG1vcmUgPD0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgdGhlbiBuZXdfbGVuIDo9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgIGVsc2UgZmFpbHdpdGggXCJCdWZmZXIuYWRkOiBjYW5ub3QgZ3JvdyBidWZmZXJcIlxuICBlbmQ7XG4gIGxldCBuZXdfYnVmZmVyID0gQnl0ZXMuY3JlYXRlICFuZXdfbGVuIGluXG4gICgqIFBSIzYxNDg6IGxldCdzIGtlZXAgdXNpbmcgW2JsaXRdIHJhdGhlciB0aGFuIFt1bnNhZmVfYmxpdF0gaW5cbiAgICAgdGhpcyB0cmlja3kgZnVuY3Rpb24gdGhhdCBpcyBzbG93IGFueXdheS4gKilcbiAgQnl0ZXMuYmxpdCBiLmlubmVyLmJ1ZmZlciAwIG5ld19idWZmZXIgMCBiLnBvc2l0aW9uO1xuICBiLmlubmVyIDwtIHsgYnVmZmVyID0gbmV3X2J1ZmZlcjsgbGVuZ3RoID0gIW5ld19sZW4gfVxuXG4oKiBOb3RlOlxuICAgIFNvbWUgb2YgdGhlIGZ1bmN0aW9ucyBiZWxvdyBoYXZlIGEgZmFzdCBwYXRoIHdoZW4gdGhlIGlubmVyXG4gIGJ1ZmZlciBkb2Vzbid0IG5lZWQgdG8gYmUgZXh0ZW5kZWQuXG4gICAgSW4gdGhpcyBjYXNlLCBpdCBpcyBwb3NzaWJsZSB0byB1c2UgdW5zYWZlIGFjY2Vzc2VzIG9uIHRoZVxuICBjb250ZW50cyBvZiB0aGUgW2lubmVyXSBmaWVsZCBzaW5jZSBpdHMgZmllbGRzIGFyZSBpbW11dGFibGUuXG4gIEluIHByZXNlbmNlIG9mIGRhdGEgcmFjZXMsIHdlIG1heSBhY2Nlc3MgdGhlIHdyb25nIGlubmVyIGJ1ZmZlciwgYnV0IHdlXG4gIHdpbGwgdXNlIHRoaXMgYnVmZmVyIHNhZmVseS5cbiAgQXMgc29vbiBhcyB3ZSBuZWVkIHRvIHJlc2l6ZSB0aGUgYnVmZmVyLCB3ZSBmYWxsIGJhY2sgdG8gc2FmZSBhY2Nlc3Nlcy5cbiopXG5cbmxldCBhZGRfY2hhciBiIGMgPVxuICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2J1ZmZlcjtsZW5ndGh9ID0gYi5pbm5lciBpblxuICBpZiBwb3MgPj0gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIDE7XG4gICAgQnl0ZXMuc2V0IGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24gY1xuICApIGVsc2VcbiAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZmZlciBwb3MgYztcbiAgYi5wb3NpdGlvbiA8LSBwb3MgKyAxXG5cbmxldCB1Y2hhcl91dGZfOF9ieXRlX2xlbmd0aF9tYXggPSA0XG5sZXQgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heCA9IDRcblxubGV0IHJlYyBhZGRfdXRmXzhfdWNoYXIgYiB1ID1cbiAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgaWYgcG9zID49IGIuaW5uZXIubGVuZ3RoIHRoZW4gcmVzaXplIGIgdWNoYXJfdXRmXzhfYnl0ZV9sZW5ndGhfbWF4O1xuICBsZXQgbiA9IEJ5dGVzLnNldF91dGZfOF91Y2hhciBiLmlubmVyLmJ1ZmZlciBwb3MgdSBpblxuICBpZiBuID0gMFxuICB0aGVuIChyZXNpemUgYiB1Y2hhcl91dGZfOF9ieXRlX2xlbmd0aF9tYXg7IGFkZF91dGZfOF91Y2hhciBiIHUpXG4gIGVsc2UgKGIucG9zaXRpb24gPC0gcG9zICsgbilcblxubGV0IHJlYyBhZGRfdXRmXzE2YmVfdWNoYXIgYiB1ID1cbiAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgaWYgcG9zID49IGIuaW5uZXIubGVuZ3RoIHRoZW4gcmVzaXplIGIgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heDtcbiAgbGV0IG4gPSBCeXRlcy5zZXRfdXRmXzE2YmVfdWNoYXIgYi5pbm5lci5idWZmZXIgcG9zIHUgaW5cbiAgaWYgbiA9IDBcbiAgdGhlbiAocmVzaXplIGIgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heDsgYWRkX3V0Zl8xNmJlX3VjaGFyIGIgdSlcbiAgZWxzZSAoYi5wb3NpdGlvbiA8LSBwb3MgKyBuKVxuXG5sZXQgcmVjIGFkZF91dGZfMTZsZV91Y2hhciBiIHUgPVxuICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICBpZiBwb3MgPj0gYi5pbm5lci5sZW5ndGggdGhlbiByZXNpemUgYiB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4O1xuICBsZXQgbiA9IEJ5dGVzLnNldF91dGZfMTZsZV91Y2hhciBiLmlubmVyLmJ1ZmZlciBwb3MgdSBpblxuICBpZiBuID0gMFxuICB0aGVuIChyZXNpemUgYiB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4OyBhZGRfdXRmXzE2bGVfdWNoYXIgYiB1KVxuICBlbHNlIChiLnBvc2l0aW9uIDwtIHBvcyArIG4pXG5cbmxldCBhZGRfc3Vic3RyaW5nIGIgcyBvZmZzZXQgbGVuID1cbiAgaWYgb2Zmc2V0IDwgMCB8fCBsZW4gPCAwIHx8IG9mZnNldCA+IFN0cmluZy5sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQnVmZmVyLmFkZF9zdWJzdHJpbmdcIjtcbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2J1ZmZlcjtsZW5ndGh9ID0gYi5pbm5lciBpblxuICBsZXQgbmV3X3Bvc2l0aW9uID0gcG9zaXRpb24gKyBsZW4gaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIGxlbjtcbiAgICBCeXRlcy5ibGl0X3N0cmluZyBzIG9mZnNldCBiLmlubmVyLmJ1ZmZlciBiLnBvc2l0aW9uIGxlblxuICApIGVsc2VcbiAgICBCeXRlcy51bnNhZmVfYmxpdF9zdHJpbmcgcyBvZmZzZXQgYnVmZmVyIHBvc2l0aW9uIGxlbjtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9zdWJieXRlcyBiIGJ5dGVzIG9mZnNldCBsZW4gPVxuICBpZiBvZmZzZXQgPCAwIHx8IGxlbiA8IDAgfHwgb2Zmc2V0ID4gQnl0ZXMubGVuZ3RoIGJ5dGVzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuYWRkX3N1YmJ5dGVzXCI7XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtidWZmZXI7bGVuZ3RofSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgbGVuIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGxlbmd0aCB0aGVuIChcbiAgICByZXNpemUgYiBsZW47XG4gICAgQnl0ZXMuYmxpdCBieXRlcyBvZmZzZXQgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiBsZW5cbiAgKSBlbHNlXG4gICAgQnl0ZXMudW5zYWZlX2JsaXQgYnl0ZXMgb2Zmc2V0IGJ1ZmZlciBwb3NpdGlvbiBsZW47XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfc3RyaW5nIGIgcyA9XG4gIGFkZF9zdWJzdHJpbmcgYiBzIDAgKFN0cmluZy5sZW5ndGggcylcblxubGV0IGFkZF9ieXRlcyBiIGJ5dGVzID1cbiAgYWRkX3N1YmJ5dGVzIGIgYnl0ZXMgMCAoQnl0ZXMubGVuZ3RoIGJ5dGVzKVxuXG5sZXQgYWRkX2J1ZmZlciBiIGJzID1cbiAgYWRkX3N1YmJ5dGVzIGIgYnMuaW5uZXIuYnVmZmVyIDAgYnMucG9zaXRpb25cblxuKCogdGhpcyAocHJpdmF0ZSkgZnVuY3Rpb24gY291bGQgbW92ZSBpbnRvIHRoZSBzdGFuZGFyZCBsaWJyYXJ5ICopXG5sZXQgcmVhbGx5X2lucHV0X3VwX3RvIGljIGJ1ZiBvZnMgbGVuID1cbiAgbGV0IHJlYyBsb29wIGljIGJ1ZiB+YWxyZWFkeV9yZWFkIH5vZnMgfnRvX3JlYWQgPVxuICAgIGlmIHRvX3JlYWQgPSAwIHRoZW4gYWxyZWFkeV9yZWFkXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBpbnB1dCBpYyBidWYgb2ZzIHRvX3JlYWQgaW5cbiAgICAgIGlmIHIgPSAwIHRoZW4gYWxyZWFkeV9yZWFkXG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBhbHJlYWR5X3JlYWQgPSBhbHJlYWR5X3JlYWQgKyByIGluXG4gICAgICAgIGxldCBvZnMgPSBvZnMgKyByIGluXG4gICAgICAgIGxldCB0b19yZWFkID0gdG9fcmVhZCAtIHIgaW5cbiAgICAgICAgbG9vcCBpYyBidWYgfmFscmVhZHlfcmVhZCB+b2ZzIH50b19yZWFkXG4gICAgICBlbmRcbiAgICBlbmRcbiAgaW4gbG9vcCBpYyBidWYgfmFscmVhZHlfcmVhZDowIH5vZnMgfnRvX3JlYWQ6bGVuXG5cblxubGV0IHVuc2FmZV9hZGRfY2hhbm5lbF91cF90byBiIGljIGxlbiA9XG4gIGlmIGIucG9zaXRpb24gKyBsZW4gPiBiLmlubmVyLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIGxlbjtcbiAgbGV0IG4gPSByZWFsbHlfaW5wdXRfdXBfdG8gaWMgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiBsZW4gaW5cbiAgYi5wb3NpdGlvbiA8LSBiLnBvc2l0aW9uICsgbjtcbiAgblxuXG5sZXQgYWRkX2NoYW5uZWwgYiBpYyBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IGxlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuICAgKCogUFIjNTAwNCAqKVxuICAgIGludmFsaWRfYXJnIFwiQnVmZmVyLmFkZF9jaGFubmVsXCI7XG4gIGxldCBuID0gdW5zYWZlX2FkZF9jaGFubmVsX3VwX3RvIGIgaWMgbGVuIGluXG4gICgqIEl0IGlzIGludGVudGlvbmFsIHRoYXQgYSBjb25zdW1lciBjYXRjaGluZyBFbmRfb2ZfZmlsZVxuICAgICB3aWxsIHNlZSB0aGUgZGF0YSB3cml0dGVuIChzZWUgIzY3MTksICM3MTM2KS4gKilcbiAgaWYgbiA8IGxlbiB0aGVuIHJhaXNlIEVuZF9vZl9maWxlO1xuICAoKVxuXG5sZXQgb3V0cHV0X2J1ZmZlciBvYyBiID1cbiAgb3V0cHV0IG9jIGIuaW5uZXIuYnVmZmVyIDAgYi5wb3NpdGlvblxuXG5sZXQgY2xvc2luZyA9IGZ1bmN0aW9uXG4gIHwgJygnIC0+ICcpJ1xuICB8ICd7JyAtPiAnfSdcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4oKiBvcGVuaW5nIGFuZCBjbG9zaW5nOiBvcGVuIGFuZCBjbG9zZSBjaGFyYWN0ZXJzLCB0eXBpY2FsbHkgKCBhbmQgKVxuICAgazogYmFsYW5jZSBvZiBvcGVuaW5nIGFuZCBjbG9zaW5nIGNoYXJzXG4gICBzOiB0aGUgc3RyaW5nIHdoZXJlIHdlIGFyZSBzZWFyY2hpbmdcbiAgIHN0YXJ0OiB0aGUgaW5kZXggd2hlcmUgd2Ugc3RhcnQgdGhlIHNlYXJjaC4gKilcbmxldCBhZHZhbmNlX3RvX2Nsb3Npbmcgb3BlbmluZyBjbG9zaW5nIGsgcyBzdGFydCA9XG4gIGxldCByZWMgYWR2YW5jZSBrIGkgbGltID1cbiAgICBpZiBpID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gICAgaWYgcy5baV0gPSBvcGVuaW5nIHRoZW4gYWR2YW5jZSAoayArIDEpIChpICsgMSkgbGltIGVsc2VcbiAgICBpZiBzLltpXSA9IGNsb3NpbmcgdGhlblxuICAgICAgaWYgayA9IDAgdGhlbiBpIGVsc2UgYWR2YW5jZSAoayAtIDEpIChpICsgMSkgbGltXG4gICAgZWxzZSBhZHZhbmNlIGsgKGkgKyAxKSBsaW0gaW5cbiAgYWR2YW5jZSBrIHN0YXJ0IChTdHJpbmcubGVuZ3RoIHMpXG5cbmxldCBhZHZhbmNlX3RvX25vbl9hbHBoYSBzIHN0YXJ0ID1cbiAgbGV0IHJlYyBhZHZhbmNlIGkgbGltID1cbiAgICBpZiBpID49IGxpbSB0aGVuIGxpbSBlbHNlXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnMCcgLi4gJzknIHwgJ18nIC0+IGFkdmFuY2UgKGkgKyAxKSBsaW1cbiAgICB8IF8gLT4gaSBpblxuICBhZHZhbmNlIHN0YXJ0IChTdHJpbmcubGVuZ3RoIHMpXG5cbigqIFdlIGFyZSBqdXN0IGF0IHRoZSBiZWdpbm5pbmcgb2YgYW4gaWRlbnQgaW4gcywgc3RhcnRpbmcgYXQgc3RhcnQuICopXG5sZXQgZmluZF9pZGVudCBzIHN0YXJ0IGxpbSA9XG4gIGlmIHN0YXJ0ID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIG1hdGNoIHMuW3N0YXJ0XSB3aXRoXG4gICgqIFBhcmVudGhlc2l6ZWQgaWRlbnQgPyAqKVxuICB8ICcoJyB8ICd7JyBhcyBjIC0+XG4gICAgIGxldCBuZXdfc3RhcnQgPSBzdGFydCArIDEgaW5cbiAgICAgbGV0IHN0b3AgPSBhZHZhbmNlX3RvX2Nsb3NpbmcgYyAoY2xvc2luZyBjKSAwIHMgbmV3X3N0YXJ0IGluXG4gICAgIFN0cmluZy5zdWIgcyBuZXdfc3RhcnQgKHN0b3AgLSBzdGFydCAtIDEpLCBzdG9wICsgMVxuICAoKiBSZWd1bGFyIGlkZW50ICopXG4gIHwgXyAtPlxuICAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgc3RhcnQgaW5cbiAgICAgaWYgc3RvcCA9IHN0YXJ0IHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgICAgU3RyaW5nLnN1YiBzIHN0YXJ0IChzdG9wIC0gc3RhcnQpLCBzdG9wXG5cbigqIFN1YnN0aXR1dGUgJGlkZW50LCAkKGlkZW50KSwgb3IgJHtpZGVudH0gaW4gcyxcbiAgICBhY2NvcmRpbmcgdG8gdGhlIGZ1bmN0aW9uIG1hcHBpbmcgZi4gKilcbmxldCBhZGRfc3Vic3RpdHV0ZSBiIGYgcyA9XG4gIGxldCBsaW0gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBzdWJzdCBwcmV2aW91cyBpID1cbiAgICBpZiBpIDwgbGltIHRoZW4gYmVnaW5cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJyQnIGFzIGN1cnJlbnQgd2hlbiBwcmV2aW91cyA9ICdcXFxcJyAtPlxuICAgICAgICAgYWRkX2NoYXIgYiBjdXJyZW50O1xuICAgICAgICAgc3Vic3QgJyAnIChpICsgMSlcbiAgICAgIHwgJyQnIC0+XG4gICAgICAgICBsZXQgaiA9IGkgKyAxIGluXG4gICAgICAgICBiZWdpbiBtYXRjaCBmaW5kX2lkZW50IHMgaiBsaW0gd2l0aFxuICAgICAgICAgfCBpZGVudCwgbmV4dF9pIC0+XG4gICAgICAgICAgIGFkZF9zdHJpbmcgYiAoZiBpZGVudCk7XG4gICAgICAgICAgIHN1YnN0ICcgJyBuZXh0X2lcbiAgICAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICBhZGRfY2hhciBiICckJztcbiAgICAgICAgICAgc3Vic3QgJyAnIGpcbiAgICAgICAgIGVuZFxuICAgICAgfCBjdXJyZW50IC0+XG4gICAgICAgICBpZiBwcmV2aW91cyA9ICdcXFxcJyB0aGVuIGFkZF9jaGFyIGIgcHJldmlvdXM7XG4gICAgICAgICBpZiBjdXJyZW50IDw+ICdcXFxcJyB0aGVuIGFkZF9jaGFyIGIgY3VycmVudDtcbiAgICAgICAgIHN1YnN0IGN1cnJlbnQgKGkgKyAxKVxuICAgIGVuZCBlbHNlXG4gICAgaWYgcHJldmlvdXMgPSAnXFxcXCcgdGhlbiBhZGRfY2hhciBiIHByZXZpb3VzIGluXG4gIHN1YnN0ICcgJyAwXG5cbmxldCB0cnVuY2F0ZSBiIGxlbiA9XG4gICAgaWYgbGVuIDwgMCB8fCBsZW4gPiBsZW5ndGggYiB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIkJ1ZmZlci50cnVuY2F0ZVwiXG4gICAgZWxzZVxuICAgICAgYi5wb3NpdGlvbiA8LSBsZW5cblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBiID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgKCogTm90ZSB0aGF0IGIucG9zaXRpb24gaXMgbm90IGEgY29uc3RhbnQgYW5kIGNhbm5vdCBiZSBsaWZ0ZWQgb3V0IG9mIGF1eCAqKVxuICAgIGlmIGkgPj0gYi5wb3NpdGlvbiB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IEJ5dGVzLmdldCBiLmlubmVyLmJ1ZmZlciBpIGluXG4gICAgICBTZXEuQ29ucyAoeCwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgdG9fc2VxaSBiID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgKCogTm90ZSB0aGF0IGIucG9zaXRpb24gaXMgbm90IGEgY29uc3RhbnQgYW5kIGNhbm5vdCBiZSBsaWZ0ZWQgb3V0IG9mIGF1eCAqKVxuICAgIGlmIGkgPj0gYi5wb3NpdGlvbiB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IEJ5dGVzLmdldCBiLmlubmVyLmJ1ZmZlciBpIGluXG4gICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IGFkZF9zZXEgYiBzZXEgPSBTZXEuaXRlciAoYWRkX2NoYXIgYikgc2VxXG5cbmxldCBvZl9zZXEgaSA9XG4gIGxldCBiID0gY3JlYXRlIDMyIGluXG4gIGFkZF9zZXEgYiBpO1xuICBiXG5cbigqKiB7NiBCaW5hcnkgZW5jb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQxNiA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MTZ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50MzIgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50NjQgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjR1XCJcbmV4dGVybmFsIHNldF9pbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlYnl0ZXNfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgc2V0X2ludDE2IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNlwiXG5leHRlcm5hbCBzZXRfaW50MzIgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJcIlxuZXh0ZXJuYWwgc2V0X2ludDY0IDogYnl0ZXMgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDY0XCJcblxuZXh0ZXJuYWwgc3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgc3dhcDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG5leHRlcm5hbCBzd2FwNjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxuXG5sZXQgYWRkX2ludDggYiB4ID1cbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2xlbmd0aDsgYnVmZmVyfSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgMSBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgMTtcbiAgICBzZXRfaW50OCBiLmlubmVyLmJ1ZmZlciBiLnBvc2l0aW9uIHhcbiAgKSBlbHNlXG4gICAgdW5zYWZlX3NldF9pbnQ4IGJ1ZmZlciBwb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDE2X25lIGIgeCA9XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtsZW5ndGg7IGJ1ZmZlcn0gPSBiLmlubmVyIGluXG4gIGxldCBuZXdfcG9zaXRpb24gPSBwb3NpdGlvbiArIDIgaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIDI7XG4gICAgc2V0X2ludDE2IGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24geFxuICApIGVsc2VcbiAgICB1bnNhZmVfc2V0X2ludDE2IGJ1ZmZlciBwb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDMyX25lIGIgeCA9XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtsZW5ndGg7IGJ1ZmZlcn0gPSBiLmlubmVyIGluXG4gIGxldCBuZXdfcG9zaXRpb24gPSBwb3NpdGlvbiArIDQgaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIDQ7XG4gICAgc2V0X2ludDMyIGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24geFxuICApIGVsc2VcbiAgICB1bnNhZmVfc2V0X2ludDMyIGJ1ZmZlciBwb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDY0X25lIGIgeCA9XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtsZW5ndGg7IGJ1ZmZlcn0gPSBiLmlubmVyIGluXG4gIGxldCBuZXdfcG9zaXRpb24gPSBwb3NpdGlvbiArIDggaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIDg7XG4gICAgc2V0X2ludDY0IGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24geFxuICApIGVsc2VcbiAgICB1bnNhZmVfc2V0X2ludDY0IGJ1ZmZlciBwb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDE2X2xlIGIgeCA9XG4gIGFkZF9pbnQxNl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiB4IGVsc2UgeClcblxubGV0IGFkZF9pbnQxNl9iZSBiIHggPVxuICBhZGRfaW50MTZfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDE2IHgpXG5cbmxldCBhZGRfaW50MzJfbGUgYiB4ID1cbiAgYWRkX2ludDMyX25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIHggZWxzZSB4KVxuXG5sZXQgYWRkX2ludDMyX2JlIGIgeCA9XG4gIGFkZF9pbnQzMl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMzIgeClcblxubGV0IGFkZF9pbnQ2NF9sZSBiIHggPVxuICBhZGRfaW50NjRfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgeCBlbHNlIHgpXG5cbmxldCBhZGRfaW50NjRfYmUgYiB4ID1cbiAgYWRkX2ludDY0X25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXA2NCB4KVxuXG5sZXQgYWRkX3VpbnQ4ID0gYWRkX2ludDhcbmxldCBhZGRfdWludDE2X25lID0gYWRkX2ludDE2X25lXG5sZXQgYWRkX3VpbnQxNl9sZSA9IGFkZF9pbnQxNl9sZVxubGV0IGFkZF91aW50MTZfYmUgPSBhZGRfaW50MTZfYmVcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9ic3dhcDE2IiwiY2FtbF9ieXRlc19nZXQiLCJjYW1sX2J5dGVzX3NldCIsImNhbWxfYnl0ZXNfc2V0MTYiLCJjYW1sX2J5dGVzX3NldDMyIiwiY2FtbF9ieXRlc19zZXQ2NCIsImNhbWxfYnl0ZXNfdW5zYWZlX3NldCIsImNhbWxfY3JlYXRlX2J5dGVzIiwiY2FtbF9pbnQzMl9ic3dhcCIsImNhbWxfaW50NjRfYnN3YXAiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX21sX2J5dGVzX2xlbmd0aCIsImNhbWxfbWxfc3RyaW5nX2xlbmd0aCIsImNhbWxfc3RyaW5nX2dldCIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWJfQnl0ZXMiLCJTdGRsaWJfU3lzIiwiU3RkbGliX1NlcSIsIlN0ZGxpYiIsIlN0ZGxpYl9TdHJpbmciLCJBc3NlcnRfZmFpbHVyZSIsImR1bW15IiwiY3JlYXRlIiwibiIsInMiLCJjb250ZW50cyIsImIiLCJ0b19ieXRlcyIsInN1YiIsIm9mcyIsImxlbiIsImJsaXQiLCJzcmMiLCJzcmNvZmYiLCJkc3QiLCJkc3RvZmYiLCJudGgiLCJwb3NpdGlvbiIsIm1hdGNoIiwibGVuZ3RoIiwiYnVmZmVyIiwiY2xlYXIiLCJyZXNldCIsImlubmVyIiwicmVzaXplIiwibW9yZSIsIm9sZF9wb3MiLCJvbGRfbGVuIiwibmV3X2xlbiIsIm5ld19idWZmZXIiLCJhZGRfY2hhciIsImMiLCJwb3MiLCJhZGRfdXRmXzhfdWNoYXIiLCJ1IiwidWNoYXJfdXRmXzhfYnl0ZV9sZW5ndGhfbWF4IiwidWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heCIsImFkZF91dGZfMTZiZV91Y2hhciIsImFkZF91dGZfMTZsZV91Y2hhciIsImFkZF9zdWJzdHJpbmciLCJvZmZzZXQiLCJuZXdfcG9zaXRpb24iLCJhZGRfc3ViYnl0ZXMiLCJieXRlcyIsImFkZF9zdHJpbmciLCJhZGRfYnl0ZXMiLCJhZGRfYnVmZmVyIiwiYnMiLCJhZGRfY2hhbm5lbCIsImljIiwidG9fcmVhZCIsImJ1ZiIsImFscmVhZHlfcmVhZCIsInIiLCJvdXRwdXRfYnVmZmVyIiwib2MiLCJhZGRfc3Vic3RpdHV0ZSIsImxpbSIsInByZXZpb3VzIiwiaSIsInN0YXJ0Iiwib3BlbmluZyIsInN0b3AiLCJ2YWwiLCJuZXdfc3RhcnQiLCJjbG9zaW5nIiwiayIsImV4biIsIm5leHRfaSIsImlkZW50IiwidHJ1bmNhdGUiLCJ0b19zZXEiLCJhdXgiLCJwYXJhbSIsIngiLCJ0b19zZXFpIiwiYWRkX3NlcSIsInNlcSIsIm9mX3NlcSIsImFkZF9pbnQ4IiwiYWRkX2ludDE2X25lIiwiYWRkX2ludDMyX25lIiwiYWRkX2ludDY0X25lIiwiYWRkX2ludDE2X2xlIiwiYWRkX2ludDE2X2JlIiwiYWRkX2ludDMyX2xlIiwiYWRkX2ludDMyX2JlIiwiYWRkX2ludDY0X2xlIiwiYWRkX2ludDY0X2JlIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxpQkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsd0JBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLElBQUFDLHVCQUFBO0FBQUEsSUFBQUMsd0JBQUE7QUFBQSxJQUFBQyxrQkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsUUFBQTtBQUFBLFlBQUFDLE9BQUFDO0FBQUFBO0FBQUFBLEtBQUFBLE1Dd0NDO0FBQUEsS0FBQUEsTUFDQTtBQUFBLEtBQUFDLElBQ1E7QUFBQSxJQUNSO0FBQUEsR0FBc0U7QUFBQSxZQUFBQyxTQUFBQyxHQUV0RCxtREFBNEM7QUFBQSxZQUFBQyxTQUFBRCxHQUM1QyxtREFBcUM7QUFBQSxZQUFBRSxJQUFBRixHQUFBRyxLQUFBQztBQUFBQSxJQUdwRDtBQUFBLEtBRUssb0RBQXVDO0FBQUEsSUFEdkMseUNBQ3VDO0FBQUE7QUFBQSxZQUFBQyxLQUFBQyxLQUFBQyxRQUFBQyxLQUFBQyxRQUFBTDtBQUFBQSxJQUk1QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtB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QUEsS0FDQTtBQUFBO0FBQUE7QUFBQSxLQUVBO0FBQUEsSUFDRjtBQUFBO0FBQUEsR0FBMEI7QUFBQSxZQUFBMEMsYUFBQTdFLEdBQUFvRTtBQUFBQSxRQUFBLElBRzFCLGlCQUF1QztBQUFBLElBQXZDLHlCQUF1RDtBQUFBO0FBQUEsWUFBQVUsYUFBQTlFLEdBQUFvRTtBQUFBQSxRQUFBQSxNQUd2RCxxQkFBOEM7QUFBQSxJQUE5QywyQkFBdUQ7QUFBQTtBQUFBLFlBQUFXLGFBQUEvRSxHQUFBb0U7QUFBQUEsUUFBQSxJQUd2RCxpQkFBdUM7QUFBQSxJQUF2Qyx5QkFBdUQ7QUFBQTtBQUFBLFlBQUFZLGFBQUFoRixHQUFBb0U7QUFBQUEsUUFBQUEsTUFHdkQscUJBQThDO0FBQUEsSUFBOUMsMkJBQXVEO0FBQUE7QUFBQSxZQUFBYSxhQUFBakYsR0FBQW9FO0FBQUFBLFFBQUEsSUFHdkQsaUJBQXVDO0FBQUEsSUFBdkMseUJBQXVEO0FBQUE7QUFBQSxZQUFBYyxhQUFBbEYsR0FBQW9FO0FBQUFBLFFBQUFBLE1BR3ZELHFCQUE4QztBQUFBLElBQTlDLDJCQUF1RDtBQUFBO0FBQUEsR0Q5WXpEIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MTg3NTYsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9tdXRleC5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBYYXZpZXIgTGVyb3kgYW5kIFBhc2NhbCBDdW9xLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTUgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0XG5leHRlcm5hbCBjcmVhdGU6IHVuaXQgLT4gdCA9IFwiY2FtbF9tbF9tdXRleF9uZXdcIlxuZXh0ZXJuYWwgbG9jazogdCAtPiB1bml0ID0gXCJjYW1sX21sX211dGV4X2xvY2tcIlxuZXh0ZXJuYWwgdHJ5X2xvY2s6IHQgLT4gYm9vbCA9IFwiY2FtbF9tbF9tdXRleF90cnlfbG9ja1wiXG5leHRlcm5hbCB1bmxvY2s6IHQgLT4gdW5pdCA9IFwiY2FtbF9tbF9tdXRleF91bmxvY2tcIlxuXG4oKiBwcml2YXRlIHJlLWV4cG9ydCAqKVxuZXh0ZXJuYWwgcmVyYWlzZSA6IGV4biAtPiAnYSA9IFwiJXJlcmFpc2VcIlxuXG4oKiBjYW5ub3QgaW5saW5lLCBvdGhlcndpc2UgZmxhbWJkYSBtaWdodCBtb3ZlIGNvZGUgYXJvdW5kLiAqKVxubGV0W0BpbmxpbmUgbmV2ZXJdIHByb3RlY3QgbSBmID1cbiAgbG9jayBtO1xuICBtYXRjaCBmKCkgd2l0aFxuICB8IHggLT5cbiAgICB1bmxvY2sgbTsgeFxuICB8IGV4Y2VwdGlvbiBlIC0+XG4gICAgKCogTk9URTogW3VubG9ja10gZG9lcyBub3QgcG9sbCBmb3IgYXN5bmNocm9ub3VzIGV4Y2VwdGlvbnMgKilcbiAgICB1bmxvY2sgbTtcbiAgICByZXJhaXNlIGVcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlIiwiY2FtbF9tbF9tdXRleF9sb2NrIiwiY2FtbF9tbF9tdXRleF91bmxvY2siLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsInByb3RlY3QiLCJtIiwieCIsImUiLCJTdGRsaWJfTXV0ZXgiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxJQUFBQyxxQkFBQTtBQUFBLElBQUFDLHVCQUFBO0FBQUEsSUFBQUMsc0JBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsUUFBQUMsR0FBQUg7QUFBQUEsSUMwQkU7QUFBQSxJQUFNLFFBQUFJLElBQ0E7QUFBQSxVQUFBQztBQUFBQSxTQUFBQSxJRDNCUjtBQUFBLEtDZ0NJO0FBQUEsS0FBUTtBQUFBO0FBQUEsSUFIUjtBQUFBLElBQVE7QUFBQSxHQUlDO0FBQUE7QUFBQSxJQUFBQztBQUFBQSxNRGpDYiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjE4Nzk2LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJTdGRsaWJfQ29uZGl0aW9uIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDO0FBQUFBLE1BQUEiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjoxODgxNCwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL2RvbWFpbi5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgS0MgU2l2YXJhbWFrcmlzaG5hbiwgSW5kaWFuIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBNYWRyYXMgICAgICAgKilcbigqICAgICAgICAgICAgICAgICBTdGVwaGVuIERvbGFuLCBVbml2ZXJzaXR5IG9mIENhbWJyaWRnZSAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgIFRvbSBLZWxseSwgT0NhbWwgTGFicyBDb25zdWx0YW5jeSAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTkgSW5kaWFuIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBNYWRyYXMgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjEgT0NhbWwgTGFicyBDb25zdWx0YW5jeSBMdGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIFJhdyA9IHN0cnVjdFxuICAoKiBMb3ctbGV2ZWwgcHJpbWl0aXZlcyBwcm92aWRlZCBieSB0aGUgcnVudGltZSAqKVxuICB0eXBlIHQgPSBwcml2YXRlIGludFxuXG4gICgqIFRoZSBsYXlvdXRzIG9mIFtzdGF0ZV0gYW5kIFt0ZXJtX3N5bmNdIGFyZSBoYXJkLWNvZGVkIGluXG4gICAgIFtydW50aW1lL2RvbWFpbi5jXSAqKVxuXG4gIHR5cGUgJ2Egc3RhdGUgPVxuICAgIHwgUnVubmluZ1xuICAgIHwgRmluaXNoZWQgb2YgKCdhLCBleG4pIHJlc3VsdCBbQHdhcm5pbmcgXCItdW51c2VkLWNvbnN0cnVjdG9yXCJdXG5cbiAgdHlwZSAnYSB0ZXJtX3N5bmMgPSB7XG4gICAgKCogcHJvdGVjdGVkIGJ5IFttdXRdICopXG4gICAgbXV0YWJsZSBzdGF0ZSA6ICdhIHN0YXRlIFtAd2FybmluZyBcIi11bnVzZWQtZmllbGRcIl0gO1xuICAgIG11dCA6IE11dGV4LnQgO1xuICAgIGNvbmQgOiBDb25kaXRpb24udCA7XG4gIH1cblxuICBleHRlcm5hbCBzcGF3biA6ICh1bml0IC0+ICdhKSAtPiAnYSB0ZXJtX3N5bmMgLT4gdFxuICAgID0gXCJjYW1sX2RvbWFpbl9zcGF3blwiXG4gIGV4dGVybmFsIHNlbGYgOiB1bml0IC0+IHRcbiAgICA9IFwiY2FtbF9tbF9kb21haW5faWRcIiBbQEBub2FsbG9jXVxuICBleHRlcm5hbCBjcHVfcmVsYXggOiB1bml0IC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tbF9kb21haW5fY3B1X3JlbGF4XCJcbiAgZXh0ZXJuYWwgZ2V0X3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudDogdW5pdCAtPiBpbnRcbiAgICA9IFwiY2FtbF9yZWNvbW1lbmRlZF9kb21haW5fY291bnRcIiBbQEBub2FsbG9jXVxuZW5kXG5cbmxldCBjcHVfcmVsYXggKCkgPSBSYXcuY3B1X3JlbGF4ICgpXG5cbnR5cGUgaWQgPSBSYXcudFxuXG50eXBlICdhIHQgPSB7XG4gIGRvbWFpbiA6IFJhdy50O1xuICB0ZXJtX3N5bmMgOiAnYSBSYXcudGVybV9zeW5jO1xufVxuXG5tb2R1bGUgRExTID0gc3RydWN0XG5cbiAgbW9kdWxlIE9ial9vcHQgOiBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgbm9uZSA6IHRcbiAgICB2YWwgc29tZSA6ICdhIC0+IHRcbiAgICB2YWwgaXNfc29tZSA6IHQgLT4gYm9vbFxuXG4gICAgKCoqIFt1bnNhZmVfZ2V0IG9ial0gbWF5IG9ubHkgYmUgY2FsbGVkIHNhZmVseVxuICAgICAgICBpZiBbaXNfc29tZV0gaXMgdHJ1ZS5cblxuICAgICAgICBbdW5zYWZlX2dldCAoc29tZSB2KV0gaXMgZXF1aXZhbGVudCB0b1xuICAgICAgICBbT2JqLm9iaiAoT2JqLnJlcHIgdildLiAqKVxuICAgIHZhbCB1bnNhZmVfZ2V0IDogdCAtPiAnYVxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBPYmoudFxuICAgIGxldCBub25lID0gT2JqLnJlcHIgKHJlZiAwKVxuICAgIGxldCBzb21lIHYgPSBPYmoucmVwciB2XG4gICAgbGV0IGlzX3NvbWUgb2JqID0gKG9iaiAhPSBub25lKVxuICAgIGxldCB1bnNhZmVfZ2V0IG9iaiA9IE9iai5vYmogb2JqXG4gIGVuZFxuXG4gIHR5cGUgZGxzX3N0YXRlID0gT2JqX29wdC50IGFycmF5XG5cbiAgZXh0ZXJuYWwgZ2V0X2Rsc19zdGF0ZSA6IHVuaXQgLT4gZGxzX3N0YXRlID0gXCIlZGxzX2dldFwiXG5cbiAgZXh0ZXJuYWwgc2V0X2Rsc19zdGF0ZSA6IGRsc19zdGF0ZSAtPiB1bml0ID1cbiAgICBcImNhbWxfZG9tYWluX2Rsc19zZXRcIiBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGNvbXBhcmVfYW5kX3NldF9kbHNfc3RhdGUgOiBkbHNfc3RhdGUgLT4gZGxzX3N0YXRlIC0+IGJvb2wgPVxuICAgIFwiY2FtbF9kb21haW5fZGxzX2NvbXBhcmVfYW5kX3NldFwiIFtAQG5vYWxsb2NdXG5cbiAgbGV0IGNyZWF0ZV9kbHMgKCkgPVxuICAgIGxldCBzdCA9IEFycmF5Lm1ha2UgOCBPYmpfb3B0Lm5vbmUgaW5cbiAgICBzZXRfZGxzX3N0YXRlIHN0XG5cbiAgbGV0IF8gPSBjcmVhdGVfZGxzICgpXG5cbiAgdHlwZSAnYSBrZXkgPSBpbnQgKiAodW5pdCAtPiAnYSlcblxuICBsZXQga2V5X2NvdW50ZXIgPSBBdG9taWMubWFrZSAwXG5cbiAgdHlwZSBrZXlfaW5pdGlhbGl6ZXIgPVxuICAgIEtJOiAnYSBrZXkgKiAoJ2EgLT4gJ2EpIC0+IGtleV9pbml0aWFsaXplclxuXG4gIGxldCBwYXJlbnRfa2V5cyA9IEF0b21pYy5tYWtlIChbXSA6IGtleV9pbml0aWFsaXplciBsaXN0KVxuXG4gIGxldCByZWMgYWRkX3BhcmVudF9rZXkga2kgPVxuICAgIGxldCBsID0gQXRvbWljLmdldCBwYXJlbnRfa2V5cyBpblxuICAgIGlmIG5vdCAoQXRvbWljLmNvbXBhcmVfYW5kX3NldCBwYXJlbnRfa2V5cyBsIChraSA6OiBsKSlcbiAgICB0aGVuIGFkZF9wYXJlbnRfa2V5IGtpXG5cbiAgbGV0IG5ld19rZXkgP3NwbGl0X2Zyb21fcGFyZW50IGluaXRfb3JwaGFuID1cbiAgICBsZXQgaWR4ID0gQXRvbWljLmZldGNoX2FuZF9hZGQga2V5X2NvdW50ZXIgMSBpblxuICAgIGxldCBrID0gKGlkeCwgaW5pdF9vcnBoYW4pIGluXG4gICAgYmVnaW4gbWF0Y2ggc3BsaXRfZnJvbV9wYXJlbnQgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBzcGxpdCAtPiBhZGRfcGFyZW50X2tleSAoS0koaywgc3BsaXQpKVxuICAgIGVuZDtcbiAgICBrXG5cbiAgKCogSWYgbmVjZXNzYXJ5LCBncm93IHRoZSBjdXJyZW50IGRvbWFpbidzIGxvY2FsIHN0YXRlIGFycmF5IHN1Y2ggdGhhdCBbaWR4XVxuICAgKiBpcyBhIHZhbGlkIGluZGV4IGluIHRoZSBhcnJheS4gKilcbiAgbGV0IHJlYyBtYXliZV9ncm93IGlkeCA9XG4gICAgbGV0IHN0ID0gZ2V0X2Rsc19zdGF0ZSAoKSBpblxuICAgIGxldCBzeiA9IEFycmF5Lmxlbmd0aCBzdCBpblxuICAgIGlmIGlkeCA8IHN6IHRoZW4gc3RcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgcmVjIGNvbXB1dGVfbmV3X3NpemUgcyA9XG4gICAgICAgIGlmIGlkeCA8IHMgdGhlbiBzIGVsc2UgY29tcHV0ZV9uZXdfc2l6ZSAoMiAqIHMpXG4gICAgICBpblxuICAgICAgbGV0IG5ld19zeiA9IGNvbXB1dGVfbmV3X3NpemUgc3ogaW5cbiAgICAgIGxldCBuZXdfc3QgPSBBcnJheS5tYWtlIG5ld19zeiBPYmpfb3B0Lm5vbmUgaW5cbiAgICAgIEFycmF5LmJsaXQgc3QgMCBuZXdfc3QgMCBzejtcbiAgICAgICgqIFdlIHdhbnQgYSBpbXBsZW1lbnRhdGlvbiB0aGF0IGlzIHNhZmUgd2l0aCByZXNwZWN0IHRvXG4gICAgICAgICBzaW5nbGUtZG9tYWluIG11bHRpLXRocmVhZGluZzogcmV0cnkgaWYgdGhlIERMUyBzdGF0ZSBoYXNcbiAgICAgICAgIGNoYW5nZWQgdW5kZXIgb3VyIGZlZXQuXG4gICAgICAgICBOb3RlIHRoYXQgdGhlIG51bWJlciBvZiByZXRyaWVzIHdpbGwgYmUgdmVyeSBzbWFsbCBpblxuICAgICAgICAgY29udGVuZGVkIHNjZW5hcmlvcywgYXMgdGhlIGFycmF5IG9ubHkgZ3Jvd3MsIHdpdGhcbiAgICAgICAgIGV4cG9uZW50aWFsIHJlc2l6aW5nLiAqKVxuICAgICAgaWYgY29tcGFyZV9hbmRfc2V0X2Rsc19zdGF0ZSBzdCBuZXdfc3RcbiAgICAgIHRoZW4gbmV3X3N0XG4gICAgICBlbHNlIG1heWJlX2dyb3cgaWR4XG4gICAgZW5kXG5cbiAgbGV0IHNldCAodHlwZSBhKSAoaWR4LCBfaW5pdCkgKHggOiBhKSA9XG4gICAgbGV0IHN0ID0gbWF5YmVfZ3JvdyBpZHggaW5cbiAgICAoKiBbU3lzLm9wYXF1ZV9pZGVudGl0eV0gZW5zdXJlcyB0aGF0IGZsYW1iZGEgZG9lcyBub3QgbG9vayBhdCB0aGUgdHlwZSBvZlxuICAgICAqIFt4XSwgd2hpY2ggbWF5IGJlIGEgW2Zsb2F0XSBhbmQgY29uY2x1ZGUgdGhhdCB0aGUgW3N0XSBpcyBhIGZsb2F0IGFycmF5LlxuICAgICAqIFdlIGRvIG5vdCB3YW50IE9DYW1sJ3MgZmxvYXQgYXJyYXkgb3B0aW1pc2F0aW9uIGtpY2tpbmcgaW4gaGVyZS4gKilcbiAgICBzdC4oaWR4KSA8LSBPYmpfb3B0LnNvbWUgKFN5cy5vcGFxdWVfaWRlbnRpdHkgeClcblxuXG4gIGxldFtAaW5saW5lIG5ldmVyXSBhcnJheV9jb21wYXJlX2FuZF9zZXQgYSBpIG9sZHZhbCBuZXd2YWwgPVxuICAgICgqIE5vdGU6IHdlIGNhbm5vdCB1c2UgW0Bwb2xsIGVycm9yXSBkdWUgdG8gdGhlXG4gICAgICAgYWxsb2NhdGlvbnMgb24gYS4oaSkgaW4gdGhlIERvdWJsZV9hcnJheSBjYXNlLiAqKVxuICAgIGxldCBjdXJ2YWwgPSBhLihpKSBpblxuICAgIGlmIGN1cnZhbCA9PSBvbGR2YWwgdGhlbiAoXG4gICAgICBBcnJheS51bnNhZmVfc2V0IGEgaSBuZXd2YWw7XG4gICAgICB0cnVlXG4gICAgKSBlbHNlIGZhbHNlXG5cbiAgbGV0IGdldCAodHlwZSBhKSAoKGlkeCwgaW5pdCkgOiBhIGtleSkgOiBhID1cbiAgICBsZXQgc3QgPSBtYXliZV9ncm93IGlkeCBpblxuICAgIGxldCBvYmogPSBzdC4oaWR4KSBpblxuICAgIGlmIE9ial9vcHQuaXNfc29tZSBvYmpcbiAgICB0aGVuIChPYmpfb3B0LnVuc2FmZV9nZXQgb2JqIDogYSlcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgdiA6IGEgPSBpbml0ICgpIGluXG4gICAgICBsZXQgbmV3X29iaiA9IE9ial9vcHQuc29tZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSB2KSBpblxuICAgICAgKCogQXQgdGhpcyBwb2ludCwgW3N0XSBvciBbc3QuKGlkeCldIG1heSBoYXZlIGJlZW4gY2hhbmdlZFxuICAgICAgICAgYnkgYW5vdGhlciB0aHJlYWQgb24gdGhlIHNhbWUgZG9tYWluLlxuXG4gICAgICAgICBJZiBbc3RdIGNoYW5nZWQsIGl0IHdhcyByZXNpemVkIGludG8gYSBsYXJnZXIgdmFsdWUsXG4gICAgICAgICB3ZSBjYW4ganVzdCByZXVzZSB0aGUgbmV3IHZhbHVlLlxuXG4gICAgICAgICBJZiBbc3QuKGlkeCldIGNoYW5nZWQsIHdlIGRyb3AgdGhlIGN1cnJlbnQgdmFsdWUgdG8gYXZvaWRcbiAgICAgICAgIGxldHRpbmcgb3RoZXIgdGhyZWFkcyBvYnNlcnZlIGEgJ3JldmVydCcgdGhhdCBmb3JnZXRzXG4gICAgICAgICBwcmV2aW91cyBtb2RpZmljYXRpb25zLiAqKVxuICAgICAgbGV0IHN0ID0gZ2V0X2Rsc19zdGF0ZSAoKSBpblxuICAgICAgaWYgYXJyYXlfY29tcGFyZV9hbmRfc2V0IHN0IGlkeCBvYmogbmV3X29ialxuICAgICAgdGhlbiB2XG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgICgqIGlmIHN0LihpZHgpIGNoYW5nZWQsIHNvbWVvbmUgbXVzdCBoYXZlIGluaXRpYWxpemVkXG4gICAgICAgICAgIHRoZSBrZXkgaW4gdGhlIG1lYW50aW1lLiAqKVxuICAgICAgICBsZXQgdXBkYXRlZF9vYmogPSBzdC4oaWR4KSBpblxuICAgICAgICBpZiBPYmpfb3B0LmlzX3NvbWUgdXBkYXRlZF9vYmpcbiAgICAgICAgdGhlbiAoT2JqX29wdC51bnNhZmVfZ2V0IHVwZGF0ZWRfb2JqIDogYSlcbiAgICAgICAgZWxzZSBhc3NlcnQgZmFsc2VcbiAgICAgIGVuZFxuICAgIGVuZFxuXG4gIHR5cGUga2V5X3ZhbHVlID0gS1YgOiAnYSBrZXkgKiAnYSAtPiBrZXlfdmFsdWVcblxuICBsZXQgZ2V0X2luaXRpYWxfa2V5cyAoKSA6IGtleV92YWx1ZSBsaXN0ID1cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biAoS0kgKGssIHNwbGl0KSkgLT4gS1YgKGssIChzcGxpdCAoZ2V0IGspKSkpXG4gICAgICAoQXRvbWljLmdldCBwYXJlbnRfa2V5cylcblxuICBsZXQgc2V0X2luaXRpYWxfa2V5cyAobDoga2V5X3ZhbHVlIGxpc3QpID1cbiAgICBMaXN0Lml0ZXIgKGZ1biAoS1YgKGssIHYpKSAtPiBzZXQgayB2KSBsXG5lbmRcblxuKCoqKioqKioqIElkZW50aXR5ICoqKioqKioqKiopXG5cbmxldCBnZXRfaWQgeyBkb21haW47IF8gfSA9IGRvbWFpblxuXG5sZXQgc2VsZiAoKSA9IFJhdy5zZWxmICgpXG5cbmxldCBpc19tYWluX2RvbWFpbiAoKSA9IChzZWxmICgpIDo+IGludCkgPSAwXG5cbmV4dGVybmFsIHNlbGZfaW5kZXggOiB1bml0IC0+IGludFxuICA9IFwiY2FtbF9tbF9kb21haW5faW5kZXhcIiBbQEBub2FsbG9jXVxuXG4oKioqKioqKiogQ2FsbGJhY2tzICoqKioqKioqKiopXG5cbigqIGZpcnN0IHNwYXduLCBkb21haW4gc3RhcnR1cCBhbmQgYXQgZXhpdCBmdW5jdGlvbmFsaXR5ICopXG5sZXQgZmlyc3RfZG9tYWluX3NwYXduZWQgPSBBdG9taWMubWFrZSBmYWxzZVxuXG5sZXQgZmlyc3Rfc3Bhd25fZnVuY3Rpb24gPSByZWYgKGZ1biAoKSAtPiAoKSlcblxubGV0IGJlZm9yZV9maXJzdF9zcGF3biBmID1cbiAgaWYgQXRvbWljLmdldCBmaXJzdF9kb21haW5fc3Bhd25lZCB0aGVuXG4gICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJmaXJzdCBkb21haW4gYWxyZWFkeSBzcGF3bmVkXCIpXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgb2xkX2YgPSAhZmlyc3Rfc3Bhd25fZnVuY3Rpb24gaW5cbiAgICBsZXQgbmV3X2YgKCkgPSBvbGRfZiAoKTsgZiAoKSBpblxuICAgIGZpcnN0X3NwYXduX2Z1bmN0aW9uIDo9IG5ld19mXG4gIGVuZFxuXG5sZXQgZG9fYmVmb3JlX2ZpcnN0X3NwYXduICgpID1cbiAgaWYgbm90IChBdG9taWMuZ2V0IGZpcnN0X2RvbWFpbl9zcGF3bmVkKSB0aGVuIGJlZ2luXG4gICAgQXRvbWljLnNldCBmaXJzdF9kb21haW5fc3Bhd25lZCB0cnVlO1xuICAgICFmaXJzdF9zcGF3bl9mdW5jdGlvbigpO1xuICAgICgqIFJlbGVhc2UgdGhlIG9sZCBmdW5jdGlvbiAqKVxuICAgIGZpcnN0X3NwYXduX2Z1bmN0aW9uIDo9IChmdW4gKCkgLT4gKCkpXG4gIGVuZFxuXG5sZXQgYXRfZXhpdF9rZXkgPSBETFMubmV3X2tleSAoZnVuICgpIC0+IChmdW4gKCkgLT4gKCkpKVxuXG5sZXQgYXRfZXhpdCBmID1cbiAgbGV0IG9sZF9leGl0IDogdW5pdCAtPiB1bml0ID0gRExTLmdldCBhdF9leGl0X2tleSBpblxuICBsZXQgbmV3X2V4aXQgKCkgPVxuICAgIGYgKCk7IG9sZF9leGl0ICgpXG4gIGluXG4gIERMUy5zZXQgYXRfZXhpdF9rZXkgbmV3X2V4aXRcblxubGV0IGRvX2F0X2V4aXQgKCkgPVxuICBsZXQgZiA6IHVuaXQgLT4gdW5pdCA9IERMUy5nZXQgYXRfZXhpdF9rZXkgaW5cbiAgZiAoKVxuXG5sZXQgXyA9IFN0ZGxpYi5kb19kb21haW5fbG9jYWxfYXRfZXhpdCA6PSBkb19hdF9leGl0XG5cbigqKioqKioqIENyZWF0aW9uIGFuZCBUZXJtaW5hdGlvbiAqKioqKioqKilcblxubGV0IHNwYXduIGYgPVxuICBkb19iZWZvcmVfZmlyc3Rfc3Bhd24gKCk7XG4gIGxldCBwayA9IERMUy5nZXRfaW5pdGlhbF9rZXlzICgpIGluXG5cbiAgKCogW3Rlcm1fc3luY10gaXMgdXNlZCB0byBzeW5jaHJvbml6ZSB3aXRoIHRoZSBqb2luaW5nIGRvbWFpbnMgKilcbiAgbGV0IHRlcm1fc3luYyA9XG4gICAgUmF3Lnsgc3RhdGUgPSBSdW5uaW5nIDtcbiAgICAgICAgICBtdXQgPSBNdXRleC5jcmVhdGUgKCkgO1xuICAgICAgICAgIGNvbmQgPSBDb25kaXRpb24uY3JlYXRlICgpIH1cbiAgaW5cblxuICBsZXQgYm9keSAoKSA9XG4gICAgbWF0Y2hcbiAgICAgIERMUy5jcmVhdGVfZGxzICgpO1xuICAgICAgRExTLnNldF9pbml0aWFsX2tleXMgcGs7XG4gICAgICBsZXQgcmVzID0gZiAoKSBpblxuICAgICAgcmVzXG4gICAgd2l0aFxuICAgICgqIFJ1biB0aGUgW2F0X2V4aXRdIGNhbGxiYWNrcyB3aGVuIHRoZSBkb21haW4gY29tcHV0YXRpb24gZWl0aGVyXG4gICAgICAgdGVybWluYXRlcyBub3JtYWxseSBvciBleGNlcHRpb25hbGx5LiAqKVxuICAgIHwgcmVzIC0+XG4gICAgICAgICgqIElmIHRoZSBkb21haW4gY29tcHV0YXRpb24gdGVybWluYXRlZCBub3JtYWxseSwgYnV0IHRoZVxuICAgICAgICAgICBbYXRfZXhpdF0gY2FsbGJhY2tzIHJhaXNlZCBhbiBleGNlcHRpb24sIHRoZW4gcmV0dXJuIHRoZVxuICAgICAgICAgICBleGNlcHRpb24uICopXG4gICAgICAgIGRvX2F0X2V4aXQgKCk7XG4gICAgICAgIHJlc1xuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAoKiBJZiBib3RoIHRoZSBkb21haW4gY29tcHV0YXRpb24gYW5kIHRoZSBbYXRfZXhpdF0gY2FsbGJhY2tzXG4gICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMsIHRoZW4gaWdub3JlIHRoZSBleGNlcHRpb24gZnJvbSB0aGVcbiAgICAgICAgICAgW2F0X2V4aXRdIGNhbGxiYWNrcyBhbmQgcmV0dXJuIHRoZSBvcmlnaW5hbCBleGNlcHRpb24uICopXG4gICAgICAgICh0cnkgZG9fYXRfZXhpdCAoKSB3aXRoIF8gLT4gKCkpO1xuICAgICAgICByYWlzZSBleG5cbiAgaW5cbiAgbGV0IGRvbWFpbiA9IFJhdy5zcGF3biBib2R5IHRlcm1fc3luYyBpblxuICB7IGRvbWFpbiA7IHRlcm1fc3luYyB9XG5cbmxldCBqb2luIHsgdGVybV9zeW5jIDsgXyB9ID1cbiAgbGV0IG9wZW4gUmF3IGluXG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgbWF0Y2ggdGVybV9zeW5jLnN0YXRlIHdpdGhcbiAgICB8IFJ1bm5pbmcgLT5cbiAgICAgICAgQ29uZGl0aW9uLndhaXQgdGVybV9zeW5jLmNvbmQgdGVybV9zeW5jLm11dDtcbiAgICAgICAgbG9vcCAoKVxuICAgIHwgRmluaXNoZWQgcmVzIC0+XG4gICAgICAgIHJlc1xuICBpblxuICBtYXRjaCBNdXRleC5wcm90ZWN0IHRlcm1fc3luYy5tdXQgbG9vcCB3aXRoXG4gIHwgT2sgeCAtPiB4XG4gIHwgRXJyb3IgZXggLT4gcmFpc2UgZXhcblxubGV0IHJlY29tbWVuZGVkX2RvbWFpbl9jb3VudCA9IFJhdy5nZXRfcmVjb21tZW5kZWRfZG9tYWluX2NvdW50XG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfYXJyYXlfbWFrZSIsImNhbWxfY2hlY2tfYm91bmQiLCJjYW1sX2RvbWFpbl9kbHNfZ2V0IiwiY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlIiwiY2FtbF9tbF9kb21haW5faWQiLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImR1bW15IiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWJfQ29uZGl0aW9uIiwiU3RkbGliX011dGV4IiwiU3RkbGliX0F0b21pYyIsIlN0ZGxpYiIsIlN0ZGxpYl9BcnJheSIsIlN0ZGxpYl9MaXN0IiwiQXNzZXJ0X2ZhaWx1cmUiLCJjcHVfcmVsYXgiLCJwYXJhbSIsIm5vbmUiLCJjcmVhdGVfZGxzIiwic3QiLCJrZXlfY291bnRlciIsInBhcmVudF9rZXlzIiwibmV3X2tleSIsInNwbGl0X2Zyb21fcGFyZW50IiwiaW5pdF9vcnBoYW4iLCJpZHgiLCJrIiwic3BsaXQiLCJraSIsImwiLCJtYXliZV9ncm93Iiwic3oiLCJuZXdfc3oiLCJuZXdfc3QiLCJzIiwic2V0IiwieCIsImdldCIsImluaXQiLCJvbGR2YWwiLCJuZXdfb2JqIiwiY3VydmFsIiwidXBkYXRlZF9vYmoiLCJzZXRfaW5pdGlhbF9rZXlzIiwidiIsImdldF9pZCIsImRvbWFpbiIsInNlbGYiLCJpc19tYWluX2RvbWFpbiIsImZpcnN0X2RvbWFpbl9zcGF3bmVkIiwiZmlyc3Rfc3Bhd25fZnVuY3Rpb24iLCJiZWZvcmVfZmlyc3Rfc3Bhd24iLCJvbGRfZiIsIm5ld19mIiwiYXRfZXhpdF9rZXkiLCJhdF9leGl0Iiwib2xkX2V4aXQiLCJuZXdfZXhpdCIsImRvX2F0X2V4aXQiLCJzcGF3biIsInBrIiwidGVybV9zeW5jIiwiYm9keSIsInJlcyIsImV4biIsImpvaW4iLCJsb29wIiwibWF0Y2giLCJleCIsInJlY29tbWVuZGVkX2RvbWFpbl9jb3VudCIsIlN0ZGxpYl9Eb21haW4iXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsUUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsWUFBQUMsVUFBQUMsT0M4Q21CLDBDQUFnQjtBQUFBLE9BQUFDLE9EOUNuQztBQUFBLFlBQUFDLFdBQUFGO0FBQUFBLFFBQUFHLEtDd0ZhO0FBQUEsSUFDVDtBQUFBLEdBQWdCO0FBQUEsR0FFVjtBQUFBO0FBQUEsSUFBQUMsY0FJVTtBQUFBLElB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O0FBQUEsWUFBQW1CLEtBQUFqRDtBQUFBQSxRQUFBNkMsWUFFZjtBQUFBLGFBQUFLLEtBQUFsRDtBQUFBQSxLQUdMO0FBQUEsVUFBQW1ELFFBQUE7QUFBQSxvQkFBQUosTUFBQSxVQUtJO0FBQUEsTUFIQTtBQUFBO0FBQUEsSUFHRztBQUFBLFFBQUFJLFFBRUg7QUFBQSxJQUFnQyx1QkFBQS9CLElBQUEsVUFDNUI7QUFBQSxRQUFBZ0MsS0FENEI7QUFBQTtBQUFBLEdBRWhCO0FBQUE7QUFBQSxJQUFBQywyQkFqRWdDO0FBQUEsSUFBQUM7QUFBQUEsTUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUR6T3hEIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MTkwMTEsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxGb3JtYXQubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgQmVub2l0IFZhdWdvbiwgRU5TVEEgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICgqIFRvb2xzIHRvIG1hbmlwdWxhdGUgc2Nhbm5pbmcgc2V0IG9mIGNoYXJzIChzZWUgJVsuLi5dKSAqKVxuXG50eXBlIG11dGFibGVfY2hhcl9zZXQgPSBieXRlc1xuXG4oKiBDcmVhdGUgYSBmcmVzaCwgZW1wdHksIG11dGFibGUgY2hhciBzZXQuICopXG5sZXQgY3JlYXRlX2NoYXJfc2V0ICgpID0gQnl0ZXMubWFrZSAzMiAnXFwwMDAnXG5cbigqIEFkZCBhIGNoYXIgaW4gYSBtdXRhYmxlIGNoYXIgc2V0LiAqKVxubGV0IGFkZF9pbl9jaGFyX3NldCBjaGFyX3NldCBjID1cbiAgbGV0IGluZCA9IGludF9vZl9jaGFyIGMgaW5cbiAgbGV0IHN0cl9pbmQgPSBpbmQgbHNyIDMgYW5kIG1hc2sgPSAxIGxzbCAoaW5kIGxhbmQgMGIxMTEpIGluXG4gIEJ5dGVzLnNldCBjaGFyX3NldCBzdHJfaW5kXG4gICAgKGNoYXJfb2ZfaW50IChpbnRfb2ZfY2hhciAoQnl0ZXMuZ2V0IGNoYXJfc2V0IHN0cl9pbmQpIGxvciBtYXNrKSlcblxubGV0IGZyZWV6ZV9jaGFyX3NldCBjaGFyX3NldCA9XG4gIEJ5dGVzLnRvX3N0cmluZyBjaGFyX3NldFxuXG4oKiBDb21wdXRlIHRoZSBjb21wbGVtZW50IG9mIGEgY2hhciBzZXQuICopXG5sZXQgcmV2X2NoYXJfc2V0IGNoYXJfc2V0ID1cbiAgbGV0IGNoYXJfc2V0JyA9IGNyZWF0ZV9jaGFyX3NldCAoKSBpblxuICBmb3IgaSA9IDAgdG8gMzEgZG9cbiAgICBCeXRlcy5zZXQgY2hhcl9zZXQnIGlcbiAgICAgIChjaGFyX29mX2ludCAoaW50X29mX2NoYXIgKFN0cmluZy5nZXQgY2hhcl9zZXQgaSkgbHhvciAweEZGKSk7XG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgY2hhcl9zZXQnXG5cbigqIFJldHVybiB0cnVlIGlmIGEgYGMnIGlzIGluIGBjaGFyX3NldCcuICopXG5sZXQgaXNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgYyA9XG4gIGxldCBpbmQgPSBpbnRfb2ZfY2hhciBjIGluXG4gIGxldCBzdHJfaW5kID0gaW5kIGxzciAzIGFuZCBtYXNrID0gMSBsc2wgKGluZCBsYW5kIDBiMTExKSBpblxuICAoaW50X29mX2NoYXIgKFN0cmluZy5nZXQgY2hhcl9zZXQgc3RyX2luZCkgbGFuZCBtYXNrKSA8PiAwXG5cblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAoKiBJZ25vcmVkIHBhcmFtIGNvbnZlcnNpb24gKilcblxuKCogR0FEVCB1c2VkIHRvIGFic3RyYWN0IGFuIGV4aXN0ZW50aWFsIHR5cGUgcGFyYW1ldGVyLiAqKVxuKCogU2VlIHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdC4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhcmFtX2Zvcm1hdF9lYmIgPSBQYXJhbV9mb3JtYXRfRUJCIDpcbiAgICAoJ3ggLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhcmFtX2Zvcm1hdF9lYmJcblxuKCogQ29tcHV0ZSBhIHBhZGRpbmcgYXNzb2NpYXRlZCB0byBhIHBhZF9vcHRpb24gKHNlZSBcIiVfNDJkXCIpLiAqKVxubGV0IHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQgPSBtYXRjaCBwYWRfb3B0IHdpdGhcbiAgfCBOb25lIC0+IE5vX3BhZGRpbmdcbiAgfCBTb21lIHdpZHRoIC0+IExpdF9wYWRkaW5nIChSaWdodCwgd2lkdGgpXG5cbigqIENvbXB1dGUgYSBwcmVjaXNpb24gYXNzb2NpYXRlZCB0byBhIHByZWNfb3B0aW9uIChzZWUgXCIlXy40MmZcIikuICopXG5sZXQgcHJlY19vZl9wcmVjX29wdCBwcmVjX29wdCA9IG1hdGNoIHByZWNfb3B0IHdpdGhcbiAgfCBOb25lIC0+IE5vX3ByZWNpc2lvblxuICB8IFNvbWUgbmRlYyAtPiBMaXRfcHJlY2lzaW9uIG5kZWNcblxuKCogVHVybiBhbiBpZ25vcmVkIHBhcmFtIGludG8gaXRzIGVxdWl2YWxlbnQgbm90LWlnbm9yZWQgZm9ybWF0IG5vZGUuICopXG4oKiBVc2VkIGZvciBmb3JtYXQgcHJldHR5LXByaW50aW5nIGFuZCBTY2FuZi4gKilcbmxldCBwYXJhbV9mb3JtYXRfb2ZfaWdub3JlZF9mb3JtYXQgOiB0eXBlIGEgYiBjIGQgZSBmIHggeSAuXG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGlnbm9yZWQgLT4gKHgsIGIsIGMsIHksIGUsIGYpIGZtdCAtPlxuICAgICAgKGEsIGIsIGMsIGQsIGUsIGYpIHBhcmFtX2Zvcm1hdF9lYmIgPVxuZnVuIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChDaGFyIGZtdClcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKENhbWxfY2hhciBmbXQpXG4gIHwgSWdub3JlZF9zdHJpbmcgcGFkX29wdCAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFN0cmluZyAocGFkX29mX3BhZF9vcHQgcGFkX29wdCwgZm10KSlcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIHBhZF9vcHQgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChDYW1sX3N0cmluZyAocGFkX29mX3BhZF9vcHQgcGFkX29wdCwgZm10KSlcbiAgfCBJZ25vcmVkX2ludCAoaWNvbnYsIHBhZF9vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoSW50IChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfaW50MzIgKGljb252LCBwYWRfb3B0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChJbnQzMiAoaWNvbnYsIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIE5vX3ByZWNpc2lvbiwgZm10KSlcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoaWNvbnYsIHBhZF9vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKE5hdGl2ZWludCAoaWNvbnYsIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIE5vX3ByZWNpc2lvbiwgZm10KSlcbiAgfCBJZ25vcmVkX2ludDY0IChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoSW50NjQgKGljb252LCBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBOb19wcmVjaXNpb24sIGZtdCkpXG4gIHwgSWdub3JlZF9mbG9hdCAocGFkX29wdCwgcHJlY19vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKEZsb2F0ICgoRmxvYXRfZmxhZ18sIEZsb2F0X2YpLFxuICAgICAgICAgICAgICBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBwcmVjX29mX3ByZWNfb3B0IHByZWNfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfYm9vbCBwYWRfb3B0IC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoQm9vbCAocGFkX29mX3BhZF9vcHQgcGFkX29wdCwgZm10KSlcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgKHBhZF9vcHQsIGZtdHR5KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKEZvcm1hdF9hcmcgKHBhZF9vcHQsIGZtdHR5LCBmbXQpKVxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChwYWRfb3B0LCBmbXR0eSkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBmbXR0eSwgZm10KSlcbiAgfCBJZ25vcmVkX3JlYWRlciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFJlYWRlciBmbXQpXG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIGZtdCkpXG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIGNvdW50ZXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXQpKVxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChTY2FuX25leHRfY2hhciBmbXQpXG5cblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFR5cGVzICopXG5cbnR5cGUgKCdiLCAnYykgYWNjX2Zvcm1hdHRpbmdfZ2VuID1cbiAgfCBBY2Nfb3Blbl90YWcgb2YgKCdiLCAnYykgYWNjXG4gIHwgQWNjX29wZW5fYm94IG9mICgnYiwgJ2MpIGFjY1xuXG4oKiBSZXZlcnNlZCBsaXN0IG9mIHByaW50aW5nIGF0b21zLiAqKVxuKCogVXNlZCB0byBhY2N1bXVsYXRlIHByaW50ZiBhcmd1bWVudHMuICopXG5hbmQgKCdiLCAnYykgYWNjID1cbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgb2YgKCdiLCAnYykgYWNjICogZm9ybWF0dGluZ19saXRcbiAgICAgICgqIFNwZWNpYWwgZm10dGluZyAoYm94KSAqKVxuICB8IEFjY19mb3JtYXR0aW5nX2dlbiBvZiAoJ2IsICdjKSBhY2MgKiAoJ2IsICdjKSBhY2NfZm9ybWF0dGluZ19nZW5cbiAgICAgICgqIFNwZWNpYWwgZm10dGluZyAoYm94KSAqKVxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCBvZiAoJ2IsICdjKSBhY2MgKiBzdHJpbmcgICAgICgqIExpdGVyYWwgc3RyaW5nICopXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAgIG9mICgnYiwgJ2MpIGFjYyAqIGNoYXIgICAgICAgKCogTGl0ZXJhbCBjaGFyICopXG4gIHwgQWNjX2RhdGFfc3RyaW5nICAgIG9mICgnYiwgJ2MpIGFjYyAqIHN0cmluZyAgICAgKCogR2VuZXJhdGVkIHN0cmluZyAqKVxuICB8IEFjY19kYXRhX2NoYXIgICAgICBvZiAoJ2IsICdjKSBhY2MgKiBjaGFyICAgICAgICgqIEdlbmVyYXRlZCBjaGFyICopXG4gIHwgQWNjX2RlbGF5ICAgICAgICAgIG9mICgnYiwgJ2MpIGFjYyAqICgnYiAtPiAnYylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIERlbGF5ZWQgcHJpbnRpbmcgKCVhLCAldCkgKilcbiAgfCBBY2NfZmx1c2ggICAgICAgICAgb2YgKCdiLCAnYykgYWNjICAgICAgICAgICAgICAoKiBGbHVzaCAqKVxuICB8IEFjY19pbnZhbGlkX2FyZyAgICBvZiAoJ2IsICdjKSBhY2MgKiBzdHJpbmdcbiAgICAgICgqIFJhaXNlIEludmFsaWRfYXJndW1lbnQgbXNnICopXG4gIHwgRW5kX29mX2FjY1xuXG4oKiBMaXN0IG9mIGhldGVyb2dlbmVvdXMgdmFsdWVzLiAqKVxuKCogVXNlZCB0byBhY2N1bXVsYXRlIHNjYW5mIGNhbGxiYWNrIGFyZ3VtZW50cy4gKilcbnR5cGUgKCdhLCAnYikgaGV0ZXJfbGlzdCA9XG4gIHwgQ29ucyA6ICdjICogKCdhLCAnYikgaGV0ZXJfbGlzdCAtPiAoJ2MgLT4gJ2EsICdiKSBoZXRlcl9saXN0XG4gIHwgTmlsIDogKCdiLCAnYikgaGV0ZXJfbGlzdFxuXG4oKiBFeGlzdGVudGlhbCBCbGFjayBCb3hlcy4gKilcbigqIFVzZWQgdG8gYWJzdHJhY3Qgc29tZSBleGlzdGVudGlhbCB0eXBlIHBhcmFtZXRlcnMuICopXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHBhZGRpbmcgYW5kIGFuIGZtdHR5LiAqKVxuKCogU2VlIHRoZSB0eXBlX3BhZGRpbmcgZnVuY3Rpb24uICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRkaW5nX2ZtdHR5X2ViYiA9IFBhZGRpbmdfZm10dHlfRUJCIDpcbiAgICAgKCd4LCAneSkgcGFkZGluZyAqICgneSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgcGFkZGluZ19mbXR0eV9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZywgYSBwcmVjaXNpb24gYW5kIGFuIGZtdHR5LiAqKVxuKCogU2VlIHRoZSB0eXBlX3BhZHByZWMgZnVuY3Rpb24uICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRwcmVjX2ZtdHR5X2ViYiA9IFBhZHByZWNfZm10dHlfRUJCIDpcbiAgICAgKCd4LCAneSkgcGFkZGluZyAqICgneSwgJ3opIHByZWNpc2lvbiAqICgneiwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgcGFkcHJlY19mbXR0eV9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZyBhbmQgYW4gZm10LiAqKVxuKCogU2VlIG1ha2VfcGFkZGluZ19mbXRfZWJiIGFuZCBwYXJzZV9mb3JtYXQgZnVuY3Rpb25zLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2UsICdmKSBwYWRkaW5nX2ZtdF9lYmIgPSBQYWRkaW5nX2ZtdF9FQkIgOlxuICAgICAoXywgJ3ggLT4gJ2EpIHBhZGRpbmcgKlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZSwgJ2YpIHBhZGRpbmdfZm10X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwcmVjaXNpb24gYW5kIGFuIGZtdC4gKilcbigqIFNlZSBtYWtlX3ByZWNpc2lvbl9mbXRfZWJiIGFuZCBwYXJzZV9mb3JtYXQgZnVuY3Rpb25zLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2UsICdmKSBwcmVjaXNpb25fZm10X2ViYiA9IFByZWNpc2lvbl9mbXRfRUJCIDpcbiAgICAgKF8sICd4IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZSwgJ2YpIHByZWNpc2lvbl9mbXRfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHBhZGRpbmcsIGEgcHJlY2lzaW9uIGFuZCBhbiBmbXQuICopXG4oKiBTZWUgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgYW5kIHBhcnNlX2Zvcm1hdCBmdW5jdGlvbnMuICopXG50eXBlICgncCwgJ2IsICdjLCAnZSwgJ2YpIHBhZHByZWNfZm10X2ViYiA9IFBhZHByZWNfZm10X0VCQiA6XG4gICAgICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksICdwIC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgncCwgJ2IsICdjLCAnZSwgJ2YpIHBhZHByZWNfZm10X2ViYlxuXG4oKiBBYnN0cmFjdCB0aGUgJ2EgYW5kICdkIHBhcmFtZXRlcnMgb2YgYW4gZm10LiAqKVxuKCogT3V0cHV0IHR5cGUgb2YgdGhlIGZvcm1hdCBwYXJzaW5nIGZ1bmN0aW9uLiAqKVxudHlwZSAoJ2IsICdjLCAnZSwgJ2YpIGZtdF9lYmIgPSBGbXRfRUJCIDpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAoJ2IsICdjLCAnZSwgJ2YpIGZtdF9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGFuIGZtdHR5IGFuZCBhbiBmbXQuICopXG4oKiBTZWUgdGhlIHR5cGVfZm9ybWF0X2dlbiBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdF9mbXR0eV9lYmIgPSBGbXRfZm10dHlfRUJCIDpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAneSwgJ3gpIGZtdCAqXG4gICAgICgneCwgJ2IsICdjLCAneSwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10X2ZtdHR5X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYW4gZm10dHkgYW5kIGFuIGZtdC4gKilcbigqIFNlZSB0aGUgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gZnVuY3Rpb24uICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eV9mbXRfZWJiID0gRm10dHlfZm10X0VCQiA6XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ3ksICd4KSBmbXR0eSAqXG4gICAgICgneCwgJ2IsICdjLCAneSwgJ2UsICdmKSBmbXRfZm10dHlfZWJiIC0+XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eV9mbXRfZWJiXG5cbigqIEFic3RyYWN0IGFsbCBmbXR0eSB0eXBlIHBhcmFtZXRlcnMuICopXG4oKiBVc2VkIHRvIGNvbXBhcmUgZm9ybWF0IHR5cGVzLiAqKVxudHlwZSBmbXR0eV9lYmIgPSBGbXR0eV9FQkIgOiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgLT4gZm10dHlfZWJiXG5cbigqIEFic3RyYWN0IGFsbCBwYWRkaW5nIHR5cGUgcGFyYW1ldGVycy4gKilcbigqIFVzZWQgdG8gY29tcGFyZSBwYWRkaW5ncy4gKilcbnR5cGUgcGFkZGluZ19lYmIgPSBQYWRkaW5nX0VCQiA6ICgnYSwgJ2IpIHBhZGRpbmcgLT4gcGFkZGluZ19lYmJcblxuKCogQWJzdHJhY3QgYWxsIHByZWNpc2lvbiB0eXBlIHBhcmFtZXRlcnMuICopXG4oKiBVc2VkIHRvIGNvbXBhcmUgcHJlY2lzaW9ucy4gKilcbnR5cGUgcHJlY2lzaW9uX2ViYiA9IFByZWNpc2lvbl9FQkIgOiAoJ2EsICdiKSBwcmVjaXNpb24gLT4gcHJlY2lzaW9uX2ViYlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIENvbnN0YW50cyAqKVxuXG4oKiBEZWZhdWx0IHByZWNpc2lvbiBmb3IgZmxvYXQgcHJpbnRpbmcuICopXG5sZXQgZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYgPVxuICBtYXRjaCBzbmQgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2YgfCBGbG9hdF9lIHwgRmxvYXRfRSB8IEZsb2F0X2cgfCBGbG9hdF9HIHwgRmxvYXRfaCB8IEZsb2F0X0hcbiAgfCBGbG9hdF9DRiAtPiAtNlxuICAoKiBGb3IgJWggJUggYW5kICUjRiBmb3JtYXRzLCBhIG5lZ2F0aXZlIHByZWNpc2lvbiBtZWFucyBcImFzIG1hbnkgZGlnaXRzIGFzXG4gICAgIG5lY2Vzc2FyeVwiLiAgRm9yIHRoZSBvdGhlciBGUCBmb3JtYXRzLCB3ZSB0YWtlIHRoZSBhYnNvbHV0ZSB2YWx1ZVxuICAgICBvZiB0aGUgcHJlY2lzaW9uLCBoZW5jZSA2IGRpZ2l0cyBieSBkZWZhdWx0LiAqKVxuICB8IEZsb2F0X0YgLT4gMTJcbiAgKCogRGVmYXVsdCBwcmVjaXNpb24gZm9yIE9DYW1sIGZsb2F0IHByaW50aW5nICglRikuICopXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRXh0ZXJuYWxzICopXG5cbmV4dGVybmFsIGZvcm1hdF9mbG9hdDogc3RyaW5nIC0+IGZsb2F0IC0+IHN0cmluZ1xuICA9IFwiY2FtbF9mb3JtYXRfZmxvYXRcIlxuZXh0ZXJuYWwgZm9ybWF0X2ludDogc3RyaW5nIC0+IGludCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfZm9ybWF0X2ludFwiXG5leHRlcm5hbCBmb3JtYXRfaW50MzI6IHN0cmluZyAtPiBpbnQzMiAtPiBzdHJpbmdcbiAgPSBcImNhbWxfaW50MzJfZm9ybWF0XCJcbmV4dGVybmFsIGZvcm1hdF9uYXRpdmVpbnQ6IHN0cmluZyAtPiBuYXRpdmVpbnQgLT4gc3RyaW5nXG4gID0gXCJjYW1sX25hdGl2ZWludF9mb3JtYXRcIlxuZXh0ZXJuYWwgZm9ybWF0X2ludDY0OiBzdHJpbmcgLT4gaW50NjQgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2ludDY0X2Zvcm1hdFwiXG5leHRlcm5hbCBoZXhzdHJpbmdfb2ZfZmxvYXQ6IGZsb2F0IC0+IGludCAtPiBjaGFyIC0+IHN0cmluZ1xuICA9IFwiY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXRcIlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgKCogVG9vbHMgdG8gcHJldHR5LXByaW50IGZvcm1hdHMgKilcblxuKCogVHlwZSBvZiBleHRlbnNpYmxlIGNoYXJhY3RlciBidWZmZXJzLiAqKVxudHlwZSBidWZmZXIgPSB7XG4gIG11dGFibGUgaW5kIDogaW50O1xuICBtdXRhYmxlIGJ5dGVzIDogYnl0ZXM7XG59XG5cbigqIENyZWF0ZSBhIGZyZXNoIGJ1ZmZlci4gKilcbmxldCBidWZmZXJfY3JlYXRlIGluaXRfc2l6ZSA9IHsgaW5kID0gMDsgYnl0ZXMgPSBCeXRlcy5jcmVhdGUgaW5pdF9zaXplIH1cblxuKCogQ2hlY2sgc2l6ZSBvZiB0aGUgYnVmZmVyIGFuZCBncm93IGl0IGlmIG5lZWRlZC4gKilcbmxldCBidWZmZXJfY2hlY2tfc2l6ZSBidWYgb3ZlcmhlYWQgPVxuICBsZXQgbGVuID0gQnl0ZXMubGVuZ3RoIGJ1Zi5ieXRlcyBpblxuICBsZXQgbWluX2xlbiA9IGJ1Zi5pbmQgKyBvdmVyaGVhZCBpblxuICBpZiBtaW5fbGVuID4gbGVuIHRoZW4gKFxuICAgIGxldCBuZXdfbGVuID0gSW50Lm1heCAobGVuICogMikgbWluX2xlbiBpblxuICAgIGxldCBuZXdfc3RyID0gQnl0ZXMuY3JlYXRlIG5ld19sZW4gaW5cbiAgICBCeXRlcy5ibGl0IGJ1Zi5ieXRlcyAwIG5ld19zdHIgMCBsZW47XG4gICAgYnVmLmJ5dGVzIDwtIG5ld19zdHI7XG4gIClcblxuKCogQWRkIHRoZSBjaGFyYWN0ZXIgYGMnIHRvIHRoZSBidWZmZXIgYGJ1ZicuICopXG5sZXQgYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjID1cbiAgYnVmZmVyX2NoZWNrX3NpemUgYnVmIDE7XG4gIEJ5dGVzLnNldCBidWYuYnl0ZXMgYnVmLmluZCBjO1xuICBidWYuaW5kIDwtIGJ1Zi5pbmQgKyAxXG5cbigqIEFkZCB0aGUgc3RyaW5nIGBzJyB0byB0aGUgYnVmZmVyIGBidWYnLiAqKVxubGV0IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBzID1cbiAgbGV0IHN0cl9sZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgYnVmZmVyX2NoZWNrX3NpemUgYnVmIHN0cl9sZW47XG4gIFN0cmluZy5ibGl0IHMgMCBidWYuYnl0ZXMgYnVmLmluZCBzdHJfbGVuO1xuICBidWYuaW5kIDwtIGJ1Zi5pbmQgKyBzdHJfbGVuXG5cbigqIEdldCB0aGUgY29udGVudCBvZiB0aGUgYnVmZmVyLiAqKVxubGV0IGJ1ZmZlcl9jb250ZW50cyBidWYgPVxuICBCeXRlcy5zdWJfc3RyaW5nIGJ1Zi5ieXRlcyAwIGJ1Zi5pbmRcblxuKCoqKilcblxuKCogQ29udmVydCBhbiBpbnRlZ2VyIGNvbnZlcnNpb24gdG8gY2hhci4gKilcbmxldCBjaGFyX29mX2ljb252IGljb252ID0gbWF0Y2ggaWNvbnYgd2l0aFxuICB8IEludF9kIHwgSW50X3BkIHwgSW50X3NkIHwgSW50X0NkIC0+ICdkJyB8IEludF9pIHwgSW50X3BpIHwgSW50X3NpXG4gIHwgSW50X0NpIC0+ICdpJyB8IEludF94IHwgSW50X0N4IC0+ICd4JyB8IEludF9YIHwgSW50X0NYIC0+ICdYJyB8IEludF9vXG4gIHwgSW50X0NvIC0+ICdvJyB8IEludF91IHwgSW50X0N1IC0+ICd1J1xuXG4oKiBDb252ZXJ0IGEgZmxvYXQgY29udmVyc2lvbiB0byBjaGFyLiAqKVxuKCogYGNGJyB3aWxsIGJlICdGJyBmb3IgZGlzcGxheWluZyBmb3JtYXQgYW5kICdnJyB0byBjYWxsIGxpYmMgcHJpbnRmICopXG5sZXQgY2hhcl9vZl9mY29udiA/KGNGPSdGJykgZmNvbnYgPSBtYXRjaCBzbmQgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2YgLT4gJ2YnIHwgRmxvYXRfZSAtPiAnZSdcbiAgfCBGbG9hdF9FIC0+ICdFJyB8IEZsb2F0X2cgLT4gJ2cnXG4gIHwgRmxvYXRfRyAtPiAnRycgfCBGbG9hdF9GIC0+IGNGXG4gIHwgRmxvYXRfaCAtPiAnaCcgfCBGbG9hdF9IIC0+ICdIJ1xuICB8IEZsb2F0X0NGIC0+ICdGJ1xuXG5cbigqIENvbnZlcnQgYSBzY2FubmluZyBjb3VudGVyIHRvIGNoYXIuICopXG5sZXQgY2hhcl9vZl9jb3VudGVyIGNvdW50ZXIgPSBtYXRjaCBjb3VudGVyIHdpdGhcbiAgfCBMaW5lX2NvdW50ZXIgIC0+ICdsJ1xuICB8IENoYXJfY291bnRlciAgLT4gJ24nXG4gIHwgVG9rZW5fY291bnRlciAtPiAnTidcblxuKCoqKilcblxuKCogUHJpbnQgYSBjaGFyX3NldCBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBPQ2FtbCBmb3JtYXQgbGV4aWNhbCBjb252ZW50aW9uLiAqKVxubGV0IGJwcmludF9jaGFyX3NldCBidWYgY2hhcl9zZXQgPVxuICBsZXQgcmVjIHByaW50X3N0YXJ0IHNldCA9XG4gICAgbGV0IGlzX2Fsb25lIGMgPVxuICAgICAgbGV0IGJlZm9yZSwgYWZ0ZXIgPSBDaGFyLihjaHIgKGNvZGUgYyAtIDEpLCBjaHIgKGNvZGUgYyArIDEpKSBpblxuICAgICAgaXNfaW5fY2hhcl9zZXQgc2V0IGNcbiAgICAgICYmIG5vdCAoaXNfaW5fY2hhcl9zZXQgc2V0IGJlZm9yZSAmJiBpc19pbl9jaGFyX3NldCBzZXQgYWZ0ZXIpIGluXG4gICAgaWYgaXNfYWxvbmUgJ10nIHRoZW4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnXSc7XG4gICAgcHJpbnRfb3V0IHNldCAxO1xuICAgIGlmIGlzX2Fsb25lICctJyB0aGVuIGJ1ZmZlcl9hZGRfY2hhciBidWYgJy0nO1xuICBhbmQgcHJpbnRfb3V0IHNldCBpID1cbiAgICBpZiBpIDwgMjU2IHRoZW5cbiAgICAgIGlmIGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgaSkgdGhlbiBwcmludF9maXJzdCBzZXQgaVxuICAgICAgZWxzZSBwcmludF9vdXQgc2V0IChpICsgMSlcbiAgYW5kIHByaW50X2ZpcnN0IHNldCBpID1cbiAgICBtYXRjaCBjaGFyX29mX2ludCBpIHdpdGhcbiAgICB8ICdcXDI1NScgLT4gcHJpbnRfY2hhciBidWYgMjU1O1xuICAgIHwgJ10nIHwgJy0nIC0+IHByaW50X291dCBzZXQgKGkgKyAxKTtcbiAgICB8IF8gLT4gcHJpbnRfc2Vjb25kIHNldCAoaSArIDEpO1xuICBhbmQgcHJpbnRfc2Vjb25kIHNldCBpID1cbiAgICBpZiBpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IGkpIHRoZW5cbiAgICAgIG1hdGNoIGNoYXJfb2ZfaW50IGkgd2l0aFxuICAgICAgfCAnXFwyNTUnIC0+XG4gICAgICAgIHByaW50X2NoYXIgYnVmIDI1NDtcbiAgICAgICAgcHJpbnRfY2hhciBidWYgMjU1O1xuICAgICAgfCAnXScgfCAnLScgd2hlbiBub3QgKGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgKGkgKyAxKSkpIC0+XG4gICAgICAgIHByaW50X2NoYXIgYnVmIChpIC0gMSk7XG4gICAgICAgIHByaW50X291dCBzZXQgKGkgKyAxKTtcbiAgICAgIHwgXyB3aGVuIG5vdCAoaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCAoaSArIDEpKSkgLT5cbiAgICAgICAgcHJpbnRfY2hhciBidWYgKGkgLSAxKTtcbiAgICAgICAgcHJpbnRfY2hhciBidWYgaTtcbiAgICAgICAgcHJpbnRfb3V0IHNldCAoaSArIDIpO1xuICAgICAgfCBfIC0+XG4gICAgICAgIHByaW50X2luIHNldCAoaSAtIDEpIChpICsgMik7XG4gICAgZWxzZSAoXG4gICAgICBwcmludF9jaGFyIGJ1ZiAoaSAtIDEpO1xuICAgICAgcHJpbnRfb3V0IHNldCAoaSArIDEpO1xuICAgIClcbiAgYW5kIHByaW50X2luIHNldCBpIGogPVxuICAgIGlmIGogPSAyNTYgfHwgbm90IChpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IGopKSB0aGVuIChcbiAgICAgIHByaW50X2NoYXIgYnVmIGk7XG4gICAgICBwcmludF9jaGFyIGJ1ZiAoaW50X29mX2NoYXIgJy0nKTtcbiAgICAgIHByaW50X2NoYXIgYnVmIChqIC0gMSk7XG4gICAgICBpZiBqIDwgMjU2IHRoZW4gcHJpbnRfb3V0IHNldCAoaiArIDEpO1xuICAgICkgZWxzZVxuICAgICAgcHJpbnRfaW4gc2V0IGkgKGogKyAxKTtcbiAgYW5kIHByaW50X2NoYXIgYnVmIGkgPSBtYXRjaCBjaGFyX29mX2ludCBpIHdpdGhcbiAgICB8ICclJyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gICAgfCAnQCcgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ0AnO1xuICAgIHwgYyAgIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgYztcbiAgaW5cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnWyc7XG4gIHByaW50X3N0YXJ0IChcbiAgICBpZiBpc19pbl9jaGFyX3NldCBjaGFyX3NldCAnXFwwMDAnXG4gICAgdGhlbiAoIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ14nOyByZXZfY2hhcl9zZXQgY2hhcl9zZXQgKVxuICAgIGVsc2UgY2hhcl9zZXRcbiAgKTtcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnXSdcblxuKCoqKilcblxuKCogUHJpbnQgYSBwYWR0eSBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBmb3JtYXQtbGlrZSBzeW50YXguICopXG5sZXQgYnByaW50X3BhZHR5IGJ1ZiBwYWR0eSA9IG1hdGNoIHBhZHR5IHdpdGhcbiAgfCBMZWZ0ICAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICctJ1xuICB8IFJpZ2h0IC0+ICgpXG4gIHwgWmVyb3MgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnMCdcblxuKCogUHJpbnQgdGhlICdfJyBvZiBhbiBpZ25vcmVkIGZsYWcgaWYgbmVlZGVkLiAqKVxubGV0IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnID1cbiAgaWYgaWduX2ZsYWcgdGhlbiBidWZmZXJfYWRkX2NoYXIgYnVmICdfJ1xuXG4oKioqKVxuXG5sZXQgYnByaW50X3BhZF9vcHQgYnVmIHBhZF9vcHQgPSBtYXRjaCBwYWRfb3B0IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSB3aWR0aCAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgd2lkdGgpXG5cbigqKiopXG5cbigqIFByaW50IHBhZGRpbmcgaW4gYSBidWZmZXIgd2l0aCB0aGUgZm9ybWF0LWxpa2Ugc3ludGF4LiAqKVxubGV0IGJwcmludF9wYWRkaW5nIDogdHlwZSBhIGIgLiBidWZmZXIgLT4gKGEsIGIpIHBhZGRpbmcgLT4gdW5pdCA9XG5mdW4gYnVmIHBhZCAtPiBtYXRjaCBwYWQgd2l0aFxuICB8IE5vX3BhZGRpbmcgLT4gKClcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIG4pIC0+XG4gICAgYnByaW50X3BhZHR5IGJ1ZiBwYWR0eTtcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgbik7XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHkgLT5cbiAgICBicHJpbnRfcGFkdHkgYnVmIHBhZHR5O1xuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyonXG5cbigqIFByaW50IHByZWNpc2lvbiBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBmb3JtYXQtbGlrZSBzeW50YXguICopXG5sZXQgYnByaW50X3ByZWNpc2lvbiA6IHR5cGUgYSBiIC4gYnVmZmVyIC0+IChhLCBiKSBwcmVjaXNpb24gLT4gdW5pdCA9XG4gIGZ1biBidWYgcHJlYyAtPiBtYXRjaCBwcmVjIHdpdGhcbiAgfCBOb19wcmVjaXNpb24gLT4gKClcbiAgfCBMaXRfcHJlY2lzaW9uIG4gLT5cbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmICcuJztcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgbik7XG4gIHwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIi4qXCJcblxuKCoqKilcblxuKCogUHJpbnQgdGhlIG9wdGlvbmFsICcrJywgJyAnIG9yICcjJyBhc3NvY2lhdGVkIHRvIGFuIGludCBjb252ZXJzaW9uLiAqKVxubGV0IGJwcmludF9pY29udl9mbGFnIGJ1ZiBpY29udiA9IG1hdGNoIGljb252IHdpdGhcbiAgfCBJbnRfcGQgfCBJbnRfcGkgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKydcbiAgfCBJbnRfc2QgfCBJbnRfc2kgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnICdcbiAgfCBJbnRfQ3ggfCBJbnRfQ1ggfCBJbnRfQ28gfCBJbnRfQ2QgfCBJbnRfQ2kgfCBJbnRfQ3UgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyMnXG4gIHwgSW50X2QgfCBJbnRfaSB8IEludF94IHwgSW50X1ggfCBJbnRfbyB8IEludF91IC0+ICgpXG5cbigqIFByaW50IGFuIGNvbXBsZXRlIGludCBmb3JtYXQgaW4gYSBidWZmZXIgKGV4OiBcIiUzLipkXCIpLiAqKVxubGV0IGJwcmludF9pbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyA9XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnO1xuICBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgYnByaW50X2ljb252X2ZsYWcgYnVmIGljb252O1xuICBicHJpbnRfcGFkZGluZyBidWYgcGFkO1xuICBicHJpbnRfcHJlY2lzaW9uIGJ1ZiBwcmVjO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2ljb252IGljb252KVxuXG4oKiBQcmludCBhIGNvbXBsZXRlIGludDMyLCBuYXRpdmVpbnQgb3IgaW50NjQgZm9ybWF0IGluIGEgYnVmZmVyLiAqKVxubGV0IGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyBjID1cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gIGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICBicHJpbnRfaWNvbnZfZmxhZyBidWYgaWNvbnY7XG4gIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7XG4gIGJwcmludF9wcmVjaXNpb24gYnVmIHByZWM7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAoY2hhcl9vZl9pY29udiBpY29udilcblxuKCoqKilcblxuKCogUHJpbnQgdGhlIG9wdGlvbmFsICcrJywgJyAnIGFuZC9vciAnIycgYXNzb2NpYXRlZCB0byBhIGZsb2F0IGNvbnZlcnNpb24uICopXG5sZXQgYnByaW50X2Zjb252X2ZsYWcgYnVmIGZjb252ID1cbiAgYmVnaW4gbWF0Y2ggZnN0IGZjb252IHdpdGhcbiAgfCBGbG9hdF9mbGFnX3AgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKydcbiAgfCBGbG9hdF9mbGFnX3MgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnICdcbiAgfCBGbG9hdF9mbGFnXyAtPiAoKSBlbmQ7XG4gIG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfQ0YgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnIydcbiAgfCBGbG9hdF9mIHwgRmxvYXRfZSB8IEZsb2F0X0UgfCBGbG9hdF9nIHwgRmxvYXRfR1xuICB8IEZsb2F0X0YgfCBGbG9hdF9oIHwgRmxvYXRfSCAtPiAoKVxuXG4oKiBQcmludCBhIGNvbXBsZXRlIGZsb2F0IGZvcm1hdCBpbiBhIGJ1ZmZlciAoZXg6IFwiJSsqLjNmXCIpLiAqKVxubGV0IGJwcmludF9mbG9hdF9mbXQgYnVmIGlnbl9mbGFnIGZjb252IHBhZCBwcmVjID1cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gIGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICBicHJpbnRfZmNvbnZfZmxhZyBidWYgZmNvbnY7XG4gIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7XG4gIGJwcmludF9wcmVjaXNpb24gYnVmIHByZWM7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgKGNoYXJfb2ZfZmNvbnYgZmNvbnYpXG5cbigqIENvbXB1dGUgdGhlIGxpdGVyYWwgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgRm9ybWF0dGluZ19saXQuICopXG4oKiBVc2VkIGJ5IFByaW50ZiBhbmQgU2NhbmYgd2hlcmUgZm9ybWF0dGluZyBpcyBub3QgaW50ZXJwcmV0ZWQuICopXG5sZXQgc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZvcm1hdHRpbmdfbGl0ID0gbWF0Y2ggZm9ybWF0dGluZ19saXQgd2l0aFxuICB8IENsb3NlX2JveCAgICAgICAgICAgIC0+IFwiQF1cIlxuICB8IENsb3NlX3RhZyAgICAgICAgICAgIC0+IFwiQH1cIlxuICB8IEJyZWFrIChzdHIsIF8sIF8pICAgIC0+IHN0clxuICB8IEZGbHVzaCAgICAgICAgICAgICAgIC0+IFwiQD9cIlxuICB8IEZvcmNlX25ld2xpbmUgICAgICAgIC0+IFwiQFxcblwiXG4gIHwgRmx1c2hfbmV3bGluZSAgICAgICAgLT4gXCJALlwiXG4gIHwgTWFnaWNfc2l6ZSAoc3RyLCBfKSAgLT4gc3RyXG4gIHwgRXNjYXBlZF9hdCAgICAgICAgICAgLT4gXCJAQFwiXG4gIHwgRXNjYXBlZF9wZXJjZW50ICAgICAgLT4gXCJAJVwiXG4gIHwgU2Nhbl9pbmRpYyBjIC0+IFwiQFwiIF4gKFN0cmluZy5tYWtlIDEgYylcblxuKCoqKilcblxuKCogUHJpbnQgYSBsaXRlcmFsIGNoYXIgaW4gYSBidWZmZXIsIGVzY2FwZSAnJScgYnkgXCIlJVwiLiAqKVxubGV0IGJwcmludF9jaGFyX2xpdGVyYWwgYnVmIGNociA9IG1hdGNoIGNociB3aXRoXG4gIHwgJyUnIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUlXCJcbiAgfCBfIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgY2hyXG5cbigqIFByaW50IGEgbGl0ZXJhbCBzdHJpbmcgaW4gYSBidWZmZXIsIGVzY2FwZSBhbGwgJyUnIGJ5IFwiJSVcIi4gKilcbmxldCBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIHN0ciA9XG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHN0ciAtIDEgZG9cbiAgICBicHJpbnRfY2hhcl9saXRlcmFsIGJ1ZiBzdHIuW2ldXG4gIGRvbmVcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHByZXR0eS1wcmludGluZyAqKVxuXG4oKiBQcmludCBhIGNvbXBsZXRlIGZvcm1hdCB0eXBlIChhbiBmbXR0eSkgaW4gYSBidWZmZXIuICopXG5sZXQgcmVjIGJwcmludF9mbXR0eSA6IHR5cGUgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgLlxuICAgIGJ1ZmZlciAtPiAoYSwgYiwgYywgZCwgZSwgZiwgZywgaCwgaSwgaiwgaywgbCkgZm10dHlfcmVsIC0+IHVuaXQgPVxuZnVuIGJ1ZiBmbXR0eSAtPiBtYXRjaCBmbXR0eSB3aXRoXG4gIHwgQ2hhcl90eSByZXN0ICAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWNcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBTdHJpbmdfdHkgcmVzdCAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlc1wiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEludF90eSByZXN0ICAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVpXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgSW50MzJfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWxpXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlbmlcIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEludDY0X3R5IHJlc3QgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVMaVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgRmxvYXRfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWZcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBCb29sX3R5IHJlc3QgICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlQlwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEFscGhhX3R5IHJlc3QgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVhXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgVGhldGFfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXRcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBBbnlfdHkgcmVzdCAgICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlP1wiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IFJlYWRlcl90eSByZXN0ICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVyXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG5cbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJV9yXCI7XG4gICAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuXG4gIHwgRm9ybWF0X2FyZ190eSAoc3ViX2ZtdHR5LCByZXN0KSAtPlxuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiV7XCI7IGJwcmludF9mbXR0eSBidWYgc3ViX2ZtdHR5O1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiV9XCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHN1Yl9mbXR0eSwgXywgcmVzdCkgLT5cbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlKFwiOyBicHJpbnRfZm10dHkgYnVmIHN1Yl9mbXR0eTtcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlKVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG5cbiAgfCBFbmRfb2ZfZm10dHkgLT4gKClcblxuKCoqKilcblxubGV0IHJlYyBpbnRfb2ZfY3VzdG9tX2FyaXR5IDogdHlwZSBhIGIgYyAuXG4gIChhLCBiLCBjKSBjdXN0b21fYXJpdHkgLT4gaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBDdXN0b21femVybyAtPiAwXG4gIHwgQ3VzdG9tX3N1Y2MgeCAtPiAxICsgaW50X29mX2N1c3RvbV9hcml0eSB4XG5cbigqIFByaW50IGEgY29tcGxldGUgZm9ybWF0IGluIGEgYnVmZmVyLiAqKVxubGV0IGJwcmludF9mbXQgYnVmIGZtdCA9XG4gIGxldCByZWMgZm10aXRlciA6IHR5cGUgYSBiIGMgZCBlIGYgLlxuICAgICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBib29sIC0+IHVuaXQgPVxuICBmdW4gZm10IGlnbl9mbGFnIC0+IG1hdGNoIGZtdCB3aXRoXG4gICAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3MnO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ1MnO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfaW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWM7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyAnbCc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfYWx0aW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWMgJ24nO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfYWx0aW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWMgJ0wnO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfZmxvYXRfZm10IGJ1ZiBpZ25fZmxhZyBmY29udiBwYWQgcHJlYztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcblxuICAgIHwgQ2hhciByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICdjJzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ0MnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBCb29sIChwYWQsIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkZGluZyBidWYgcGFkOyBidWZmZXJfYWRkX2NoYXIgYnVmICdCJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEFscGhhIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ2EnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBUaGV0YSByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICd0JzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQ3VzdG9tIChhcml0eSwgXywgcmVzdCkgLT5cbiAgICAgIGZvciBfaSA9IDEgdG8gaW50X29mX2N1c3RvbV9hcml0eSBhcml0eSBkb1xuICAgICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJz8nO1xuICAgICAgZG9uZTtcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFJlYWRlciByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICdyJzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgRmx1c2ggcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJSFcIjtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcblxuICAgIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT5cbiAgICAgIGJwcmludF9zdHJpbmdfbGl0ZXJhbCBidWYgc3RyO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuICAgIHwgQ2hhcl9saXRlcmFsIChjaHIsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfY2hhcl9saXRlcmFsIGJ1ZiBjaHI7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG5cbiAgICB8IEZvcm1hdF9hcmcgKHBhZF9vcHQsIGZtdHR5LCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZF9vcHQgYnVmIHBhZF9vcHQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3snO1xuICAgICAgYnByaW50X2ZtdHR5IGJ1ZiBmbXR0eTsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ30nO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBmbXR0eSwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRfb3B0IGJ1ZiBwYWRfb3B0OyBidWZmZXJfYWRkX2NoYXIgYnVmICcoJztcbiAgICAgIGJwcmludF9mbXR0eSBidWYgZm10dHk7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBidWZmZXJfYWRkX2NoYXIgYnVmICcpJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcblxuICAgIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRfb3B0IGJ1ZiB3aWR0aF9vcHQ7IGJwcmludF9jaGFyX3NldCBidWYgY2hhcl9zZXQ7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAoY2hhcl9vZl9jb3VudGVyIGNvdW50ZXIpO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3N0cmluZ19saXRlcmFsIGJ1ZiBcIjBjXCI7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcblxuICAgIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgICAgbGV0IFBhcmFtX2Zvcm1hdF9FQkIgZm10JyA9IHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCBpZ24gcmVzdCBpblxuICAgICAgZm10aXRlciBmbXQnIHRydWU7XG5cbiAgICB8IEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSAtPlxuICAgICAgYnByaW50X3N0cmluZ19saXRlcmFsIGJ1ZiAoc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQpO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuICAgIHwgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIHJlc3QpIC0+XG4gICAgICBiZWdpbiBtYXRjaCBmbXRpbmdfZ2VuIHdpdGhcbiAgICAgIHwgT3Blbl90YWcgKEZvcm1hdCAoXywgc3RyKSkgLT5cbiAgICAgICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiQHtcIjsgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIHN0clxuICAgICAgfCBPcGVuX2JveCAoRm9ybWF0IChfLCBzdHIpKSAtPlxuICAgICAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCJAW1wiOyBidWZmZXJfYWRkX3N0cmluZyBidWYgc3RyXG4gICAgICBlbmQ7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG5cbiAgICB8IEVuZF9vZl9mb3JtYXQgLT4gKClcblxuICBpbiBmbXRpdGVyIGZtdCBmYWxzZVxuXG4oKioqKVxuXG4oKiBDb252ZXJ0IGEgZm9ybWF0IHRvIHN0cmluZy4gKilcbmxldCBzdHJpbmdfb2ZfZm10IGZtdCA9XG4gIGxldCBidWYgPSBidWZmZXJfY3JlYXRlIDE2IGluXG4gIGJwcmludF9mbXQgYnVmIGZtdDtcbiAgYnVmZmVyX2NvbnRlbnRzIGJ1ZlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBUeXBlIGV4dHJhY3Rpb24gKilcblxudHlwZSAoXywgXykgZXEgPSBSZWZsIDogKCdhLCAnYSkgZXFcblxuKCogSW52YXJpYW50OiB0aGlzIGZ1bmN0aW9uIGlzIHRoZSBpZGVudGl0eSBvbiB2YWx1ZXMuXG5cbiAgIEluIHBhcnRpY3VsYXIsIGlmICh0eTEsIHR5MikgaGF2ZSBlcXVhbCB2YWx1ZXMsIHRoZW5cbiAgICh0cmFucyAoc3ltbSB0eTEpIHR5MikgcmVzcGVjdHMgdGhlICd0cmFucycgcHJlY29uZGl0aW9uLiAqKVxubGV0IHJlYyBzeW1tIDogdHlwZSBhMSBiMSBjMSBkMSBlMSBmMSBhMiBiMiBjMiBkMiBlMiBmMiAuXG4gICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICBhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWxcbi0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyLFxuICAgIGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdHR5X3JlbFxuPSBmdW5jdGlvblxuICB8IENoYXJfdHkgcmVzdCAtPiBDaGFyX3R5IChzeW1tIHJlc3QpXG4gIHwgSW50X3R5IHJlc3QgLT4gSW50X3R5IChzeW1tIHJlc3QpXG4gIHwgSW50MzJfdHkgcmVzdCAtPiBJbnQzMl90eSAoc3ltbSByZXN0KVxuICB8IEludDY0X3R5IHJlc3QgLT4gSW50NjRfdHkgKHN5bW0gcmVzdClcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPiBOYXRpdmVpbnRfdHkgKHN5bW0gcmVzdClcbiAgfCBGbG9hdF90eSByZXN0IC0+IEZsb2F0X3R5IChzeW1tIHJlc3QpXG4gIHwgQm9vbF90eSByZXN0IC0+IEJvb2xfdHkgKHN5bW0gcmVzdClcbiAgfCBTdHJpbmdfdHkgcmVzdCAtPiBTdHJpbmdfdHkgKHN5bW0gcmVzdClcbiAgfCBUaGV0YV90eSByZXN0IC0+IFRoZXRhX3R5IChzeW1tIHJlc3QpXG4gIHwgQWxwaGFfdHkgcmVzdCAtPiBBbHBoYV90eSAoc3ltbSByZXN0KVxuICB8IEFueV90eSByZXN0IC0+IEFueV90eSAoc3ltbSByZXN0KVxuICB8IFJlYWRlcl90eSByZXN0IC0+IFJlYWRlcl90eSAoc3ltbSByZXN0KVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT4gSWdub3JlZF9yZWFkZXJfdHkgKHN5bW0gcmVzdClcbiAgfCBGb3JtYXRfYXJnX3R5ICh0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnX3R5ICh0eSwgc3ltbSByZXN0KVxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTIsIHR5MSwgc3ltbSByZXN0KVxuICB8IEVuZF9vZl9mbXR0eSAtPiBFbmRfb2ZfZm10dHlcblxubGV0IHJlYyBmbXR0eV9yZWxfZGV0IDogdHlwZSBhMSBiIGMgZDEgZTEgZjEgYTIgZDIgZTIgZjIgLlxuICAoYTEsIGIsIGMsIGQxLCBlMSwgZjEsXG4gICBhMiwgYiwgYywgZDIsIGUyLCBmMikgZm10dHlfcmVsIC0+XG4gICAgKChmMSwgZjIpIGVxIC0+IChhMSwgYTIpIGVxKVxuICAqICgoYTEsIGEyKSBlcSAtPiAoZjEsIGYyKSBlcSlcbiAgKiAoKGUxLCBlMikgZXEgLT4gKGQxLCBkMikgZXEpXG4gICogKChkMSwgZDIpIGVxIC0+IChlMSwgZTIpIGVxKVxuPSBmdW5jdGlvblxuICB8IEVuZF9vZl9mbXR0eSAtPlxuICAgIChmdW4gUmVmbCAtPiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBSZWZsKVxuICB8IENoYXJfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBTdHJpbmdfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBJbnRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBJbnQzMl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEludDY0X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgRmxvYXRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBCb29sX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG5cbiAgfCBUaGV0YV90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEFscGhhX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgQW55X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZWQgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBkZSBSZWZsIGluIFJlZmwpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBlZCBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGRlIFJlZmwgaW4gUmVmbClcbiAgfCBGb3JtYXRfYXJnX3R5IChfdHksIHJlc3QpIC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgbGV0IHR5ID0gdHJhbnMgKHN5bW0gdHkxKSB0eTIgaW5cbiAgICBsZXQgYWcsIGdhLCBkaiwgamQgPSBmbXR0eV9yZWxfZGV0IHR5IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBsZXQgUmVmbCA9IGFnIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZ2EgUmVmbCBpbiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZWQgUmVmbCBpbiBsZXQgUmVmbCA9IGRqIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gamQgUmVmbCBpbiBsZXQgUmVmbCA9IGRlIFJlZmwgaW4gUmVmbClcblxuKCogUHJlY29uZGl0aW9uOiB3ZSBhc3N1bWUgdGhhdCB0aGUgdHdvIGZtdHR5X3JlbCBhcmd1bWVudHMgaGF2ZSBlcXVhbFxuICAgdmFsdWVzIChhdCBwb3NzaWJseSBkaXN0aW5jdCB0eXBlcyk7IHRoaXMgaW52YXJpYW50IGNvbWVzIGZyb20gdGhlIHdheVxuICAgZm10dHlfcmVsIHdpdG5lc3NlcyBhcmUgcHJvZHVjZWQgYnkgdGhlIHR5cGUtY2hlY2tlclxuXG4gICBUaGUgY29kZSBiZWxvdyB1c2VzIChhc3NlcnQgZmFsc2UpIHdoZW4gdGhpcyBhc3N1bXB0aW9uIGlzIGJyb2tlbi4gVGhlXG4gICBjb2RlIHBhdHRlcm4gaXMgdGhlIGZvbGxvd2luZzpcblxuICAgICB8IEZvbyB4LCBGb28geSAtPlxuICAgICAgICgqIGNhc2Ugd2hlcmUgaW5kZWVkIGJvdGggdmFsdWVzXG4gICAgICAgICAgc3RhcnQgd2l0aCBjb25zdHJ1Y3RvciBGb28gKilcbiAgICAgfCBGb28gXywgX1xuICAgICB8IF8sIEZvbyBfIC0+XG4gICAgICAgKCogZGlmZmVyZW50IGhlYWQgY29uc3RydWN0b3JzOiBicm9rZW4gcHJlY29uZGl0aW9uICopXG4gICAgICAgYXNzZXJ0IGZhbHNlXG4qKVxuYW5kIHRyYW5zIDogdHlwZVxuICBhMSBiMSBjMSBkMSBlMSBmMVxuICBhMiBiMiBjMiBkMiBlMiBmMlxuICBhMyBiMyBjMyBkMyBlMyBmM1xuLlxuICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlfcmVsXG4tPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMixcbiAgICBhMywgYjMsIGMzLCBkMywgZTMsIGYzKSBmbXR0eV9yZWxcbi0+IChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgIGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdHR5X3JlbFxuPSBmdW4gdHkxIHR5MiAtPiBtYXRjaCB0eTEsIHR5MiB3aXRoXG4gIHwgQ2hhcl90eSByZXN0MSwgQ2hhcl90eSByZXN0MiAtPiBDaGFyX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBTdHJpbmdfdHkgcmVzdDEsIFN0cmluZ190eSByZXN0MiAtPiBTdHJpbmdfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEJvb2xfdHkgcmVzdDEsIEJvb2xfdHkgcmVzdDIgLT4gQm9vbF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSW50X3R5IHJlc3QxLCBJbnRfdHkgcmVzdDIgLT4gSW50X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBJbnQzMl90eSByZXN0MSwgSW50MzJfdHkgcmVzdDIgLT4gSW50MzJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEludDY0X3R5IHJlc3QxLCBJbnQ2NF90eSByZXN0MiAtPiBJbnQ2NF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QxLCBOYXRpdmVpbnRfdHkgcmVzdDIgLT4gTmF0aXZlaW50X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBGbG9hdF90eSByZXN0MSwgRmxvYXRfdHkgcmVzdDIgLT4gRmxvYXRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuXG4gIHwgQWxwaGFfdHkgcmVzdDEsIEFscGhhX3R5IHJlc3QyIC0+IEFscGhhX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBBbHBoYV90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIEFscGhhX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBUaGV0YV90eSByZXN0MSwgVGhldGFfdHkgcmVzdDIgLT4gVGhldGFfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IFRoZXRhX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgVGhldGFfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEFueV90eSByZXN0MSwgQW55X3R5IHJlc3QyIC0+IEFueV90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgQW55X3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgQW55X3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBSZWFkZXJfdHkgcmVzdDEsIFJlYWRlcl90eSByZXN0MiAtPiBSZWFkZXJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IFJlYWRlcl90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIFJlYWRlcl90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdDEsIElnbm9yZWRfcmVhZGVyX3R5IHJlc3QyIC0+XG4gICAgSWdub3JlZF9yZWFkZXJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgSWdub3JlZF9yZWFkZXJfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEZvcm1hdF9hcmdfdHkgKHR5MSwgcmVzdDEpLCBGb3JtYXRfYXJnX3R5ICh0eTIsIHJlc3QyKSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHRyYW5zIHR5MSB0eTIsIHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEZvcm1hdF9hcmdfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBGb3JtYXRfYXJnX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MTEsIHR5MTIsIHJlc3QxKSxcbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MjEsIHR5MjIsIHJlc3QyKSAtPlxuICAgIGxldCB0eSA9IHRyYW5zIChzeW1tIHR5MTIpIHR5MjEgaW5cbiAgICBsZXQgXywgZjIsIF8sIGY0ID0gZm10dHlfcmVsX2RldCB0eSBpblxuICAgIGxldCBSZWZsID0gZjIgUmVmbCBpblxuICAgIGxldCBSZWZsID0gZjQgUmVmbCBpblxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkxMSwgdHkyMiwgdHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgRm9ybWF0X3N1YnN0X3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgRm9ybWF0X3N1YnN0X3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBFbmRfb2ZfZm10dHksIEVuZF9vZl9mbXR0eSAtPiBFbmRfb2ZfZm10dHlcbiAgfCBFbmRfb2ZfZm10dHksIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgRW5kX29mX2ZtdHR5IC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgcmVjIGZtdHR5X29mX2Zvcm1hdHRpbmdfZ2VuIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gIChhLCBiLCBjLCBkLCBlLCBmKSBmb3JtYXR0aW5nX2dlbiAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG5mdW4gZm9ybWF0dGluZ19nZW4gLT4gbWF0Y2ggZm9ybWF0dGluZ19nZW4gd2l0aFxuICB8IE9wZW5fdGFnIChGb3JtYXQgKGZtdCwgXykpIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBPcGVuX2JveCAoRm9ybWF0IChmbXQsIF8pKSAtPiBmbXR0eV9vZl9mbXQgZm10XG5cbigqIEV4dHJhY3QgdGhlIHR5cGUgcmVwcmVzZW50YXRpb24gKGFuIGZtdHR5KSBvZiBhIGZvcm1hdC4gKilcbmFuZCBmbXR0eV9vZl9mbXQgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGZtdHR5IC0+IG1hdGNoIGZtdHR5IHdpdGhcbiAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCAoU3RyaW5nX3R5IChmbXR0eV9vZl9mbXQgcmVzdCkpXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCAoU3RyaW5nX3R5IChmbXR0eV9vZl9mbXQgcmVzdCkpXG5cbiAgfCBJbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoSW50X3R5IHR5X3Jlc3QpIGluXG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgcHJlY190eVxuICB8IEludDMyIChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IHR5X3Jlc3QgPSBmbXR0eV9vZl9mbXQgcmVzdCBpblxuICAgIGxldCBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IHByZWMgKEludDMyX3R5IHR5X3Jlc3QpIGluXG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgcHJlY190eVxuICB8IE5hdGl2ZWludCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChOYXRpdmVpbnRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgSW50NjQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoSW50NjRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgRmxvYXQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoRmxvYXRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG5cbiAgfCBDaGFyIHJlc3QgICAgICAgICAgICAgICAgICAtPiBDaGFyX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBDYW1sX2NoYXIgcmVzdCAgICAgICAgICAgICAtPiBDaGFyX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBCb29sIChwYWQsIHJlc3QpICAgICAgICAgICAtPlxuICAgICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgKEJvb2xfdHkgKGZtdHR5X29mX2ZtdCByZXN0KSlcbiAgfCBBbHBoYSByZXN0ICAgICAgICAgICAgICAgICAtPiBBbHBoYV90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgVGhldGEgcmVzdCAgICAgICAgICAgICAgICAgLT4gVGhldGFfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IEN1c3RvbSAoYXJpdHksIF8sIHJlc3QpICAgIC0+IGZtdHR5X29mX2N1c3RvbSBhcml0eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgUmVhZGVyIHJlc3QgICAgICAgICAgICAgICAgLT4gUmVhZGVyX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcblxuICB8IEZvcm1hdF9hcmcgKF8sIHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBGb3JtYXRfc3Vic3QgKF8sIHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdF90eSAodHksIHR5LCBmbXR0eV9vZl9mbXQgcmVzdClcblxuICB8IEZsdXNoIHJlc3QgICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCByZXN0XG4gIHwgU3RyaW5nX2xpdGVyYWwgKF8sIHJlc3QpICAgLT4gZm10dHlfb2ZfZm10IHJlc3RcbiAgfCBDaGFyX2xpdGVyYWwgKF8sIHJlc3QpICAgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuXG4gIHwgU2Nhbl9jaGFyX3NldCAoXywgXywgcmVzdCkgLT4gU3RyaW5nX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBTY2FuX2dldF9jb3VudGVyIChfLCByZXN0KSAtPiBJbnRfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgICAgICAgIC0+IENoYXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgIC0+IGZtdHR5X29mX2lnbm9yZWRfZm9ybWF0IGlnbiByZXN0XG4gIHwgRm9ybWF0dGluZ19saXQgKF8sIHJlc3QpICAgLT4gZm10dHlfb2ZfZm10IHJlc3RcbiAgfCBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgcmVzdCkgIC0+XG4gICAgY29uY2F0X2ZtdHR5IChmbXR0eV9vZl9mb3JtYXR0aW5nX2dlbiBmbXRpbmdfZ2VuKSAoZm10dHlfb2ZfZm10IHJlc3QpXG5cbiAgfCBFbmRfb2ZfZm9ybWF0ICAgICAgICAgICAgICAtPiBFbmRfb2ZfZm10dHlcblxuYW5kIGZtdHR5X29mX2N1c3RvbSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgKGEsIHgsIHkpIGN1c3RvbV9hcml0eSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgKHksIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbmZ1biBhcml0eSBmbXR0eSAtPiBtYXRjaCBhcml0eSB3aXRoXG4gIHwgQ3VzdG9tX3plcm8gLT4gZm10dHlcbiAgfCBDdXN0b21fc3VjYyBhcml0eSAtPiBBbnlfdHkgKGZtdHR5X29mX2N1c3RvbSBhcml0eSBmbXR0eSlcblxuKCogRXh0cmFjdCB0aGUgZm10dHkgb2YgYW4gaWdub3JlZCBwYXJhbWV0ZXIgZm9sbG93ZWQgYnkgdGhlIHJlc3Qgb2ZcbiAgIHRoZSBmb3JtYXQuICopXG5hbmQgZm10dHlfb2ZfaWdub3JlZF9mb3JtYXQgOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGlnbm9yZWQgLT5cbiAgICAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbmZ1biBpZ24gZm10IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9zdHJpbmcgXyAgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9pbnQgKF8sIF8pICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9pbnQzMiAoXywgXykgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgKF8sIF8pICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9pbnQ2NCAoXywgXykgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9mbG9hdCAoXywgXykgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIF8gICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKF8sIGZtdHR5KSAtPiBjb25jYXRfZm10dHkgZm10dHkgKGZtdHR5X29mX2ZtdCBmbXQpXG4gIHwgSWdub3JlZF9yZWFkZXIgICAgICAgICAgICAgICAgICAtPiBJZ25vcmVkX3JlYWRlcl90eSAoZm10dHlfb2ZfZm10IGZtdClcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgXyAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcblxuKCogQWRkIGFuIEludF90eSBub2RlIGlmIHBhZGRpbmcgaXMgdGFrZW4gYXMgYW4gZXh0cmEgYXJndW1lbnQgKGV4OiBcIiUqc1wiKS4gKilcbmFuZCBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IDogdHlwZSB4IGEgYiBjIGQgZSBmIC5cbiAgICAoeCwgYSkgcGFkZGluZyAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT4gKHgsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbiAgZnVuIHBhZCBmbXR0eSAtPiBtYXRjaCBwYWQgd2l0aFxuICAgIHwgTm9fcGFkZGluZyAgICAtPiBmbXR0eVxuICAgIHwgTGl0X3BhZGRpbmcgXyAtPiBmbXR0eVxuICAgIHwgQXJnX3BhZGRpbmcgXyAtPiBJbnRfdHkgZm10dHlcblxuKCogQWRkIGFuIEludF90eSBub2RlIGlmIHByZWNpc2lvbiBpcyB0YWtlbiBhcyBhbiBleHRyYSBhcmd1bWVudCAoZXg6IFwiJS4qZlwiKS4qKVxuYW5kIGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSA6IHR5cGUgeCBhIGIgYyBkIGUgZiAuXG4gICAgKHgsIGEpIHByZWNpc2lvbiAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT4gKHgsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbiAgZnVuIHByZWMgZm10dHkgLT4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgfCBOb19wcmVjaXNpb24gICAgLT4gZm10dHlcbiAgICB8IExpdF9wcmVjaXNpb24gXyAtPiBmbXR0eVxuICAgIHwgQXJnX3ByZWNpc2lvbiAgIC0+IEludF90eSBmbXR0eVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCB0eXBpbmcgKilcblxuKCogRXhjZXB0aW9uIHJhaXNlZCB3aGVuIGEgZm9ybWF0IGRvZXMgbm90IG1hdGNoIGEgZ2l2ZW4gZm9ybWF0IHR5cGUuICopXG5leGNlcHRpb24gVHlwZV9taXNtYXRjaFxuXG4oKiBUeXBlIGEgcGFkZGluZy4gKilcbigqIFRha2UgYW4gSW50X3R5IGZyb20gdGhlIGZtdHR5IGlmIHRoZSBpbnRlZ2VyIHNob3VsZCBiZSBrZXB0IGFzIGFyZ3VtZW50LiAqKVxuKCogUmFpc2UgVHlwZV9taXNtYXRjaCBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgdHlwZV9wYWRkaW5nIDogdHlwZSBhIGIgYyBkIGUgZiB4IHkgLlxuICAgICh4LCB5KSBwYWRkaW5nIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAgICAgKGEsIGIsIGMsIGQsIGUsIGYpIHBhZGRpbmdfZm10dHlfZWJiID1cbmZ1biBwYWQgZm10dHkgLT4gbWF0Y2ggcGFkLCBmbXR0eSB3aXRoXG4gIHwgTm9fcGFkZGluZywgXyAtPiBQYWRkaW5nX2ZtdHR5X0VCQiAoTm9fcGFkZGluZywgZm10dHkpXG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgXyAtPiBQYWRkaW5nX2ZtdHR5X0VCQiAoTGl0X3BhZGRpbmcgKHBhZHR5LHcpLGZtdHR5KVxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBJbnRfdHkgcmVzdCAtPiBQYWRkaW5nX2ZtdHR5X0VCQiAoQXJnX3BhZGRpbmcgcGFkdHkscmVzdClcbiAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuKCogQ29udmVydCBhICh1cGFkZGluZywgdXByZWNpc2lvbikgdG8gYSAocGFkZGluZywgcHJlY2lzaW9uKS4gKilcbigqIFRha2Ugb25lIG9yIHR3byBJbnRfdHkgZnJvbSB0aGUgZm10dHkgaWYgbmVlZGVkLiAqKVxuKCogUmFpc2UgVHlwZV9taXNtYXRjaCBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgdHlwZV9wYWRwcmVjIDogdHlwZSBhIGIgYyBkIGUgZiB4IHkgeiAuXG4gICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6KSBwcmVjaXNpb24gLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIHBhZHByZWNfZm10dHlfZWJiID1cbmZ1biBwYWQgcHJlYyBmbXR0eSAtPiBtYXRjaCBwcmVjLCB0eXBlX3BhZGRpbmcgcGFkIGZtdHR5IHdpdGhcbiAgfCBOb19wcmVjaXNpb24sIFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIHJlc3QpIC0+XG4gICAgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgTm9fcHJlY2lzaW9uLCByZXN0KVxuICB8IExpdF9wcmVjaXNpb24gcCwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgcmVzdCkgLT5cbiAgICBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBMaXRfcHJlY2lzaW9uIHAsIHJlc3QpXG4gIHwgQXJnX3ByZWNpc2lvbiwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgSW50X3R5IHJlc3QpIC0+XG4gICAgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgQXJnX3ByZWNpc2lvbiwgcmVzdClcbiAgfCBfLCBQYWRkaW5nX2ZtdHR5X0VCQiAoXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG4oKiBUeXBlIGEgZm9ybWF0IGFjY29yZGluZyB0byBhbiBmbXR0eS4gKilcbigqIElmIHR5cGluZyBzdWNjZWVkLCBnZW5lcmF0ZSBhIGNvcHkgb2YgdGhlIGZvcm1hdCB3aXRoIHRoZSBzYW1lXG4gICAgdHlwZSBwYXJhbWV0ZXJzIGFzIHRoZSBmbXR0eS4gKilcbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IHJlYyB0eXBlX2Zvcm1hdCA6XG4gIHR5cGUgYTEgYjEgYzEgZDEgZTEgZjFcbiAgICAgICBhMiBiMiBjMiBkMiBlMiBmMiAgLlxuICAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eVxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10XG49IGZ1biBmbXQgZm10dHkgLT4gbWF0Y2ggdHlwZV9mb3JtYXRfZ2VuIGZtdCBmbXR0eSB3aXRoXG4gIHwgRm10X2ZtdHR5X0VCQiAoZm10JywgRW5kX29mX2ZtdHR5KSAtPiBmbXQnXG4gIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbmFuZCB0eXBlX2Zvcm1hdF9nZW4gOlxuICB0eXBlIGExIGIxIGMxIGQxIGUxIGYxXG4gICAgICAgYTIgYjIgYzIgZDIgZTIgZjIgIC5cbiAgICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdFxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlcbiAgLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdF9mbXR0eV9lYmJcbj0gZnVuIGZtdCBmbXR0eSAtPiBtYXRjaCBmbXQsIGZtdHR5IHdpdGhcbiAgfCBDaGFyIGZtdF9yZXN0LCBDaGFyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQ2hhciBmbXQnLCBmbXR0eScpXG4gIHwgQ2FtbF9jaGFyIGZtdF9yZXN0LCBDaGFyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQ2FtbF9jaGFyIGZtdCcsIGZtdHR5JylcbiAgfCBTdHJpbmcgKHBhZCwgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZGRpbmcgcGFkIGZtdHR5IHdpdGhcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIFN0cmluZ190eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoU3RyaW5nIChwYWQsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAoXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZGRpbmcgcGFkIGZtdHR5IHdpdGhcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIFN0cmluZ190eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoQ2FtbF9zdHJpbmcgKHBhZCwgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEludF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSW50IChpY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBJbnQzMl90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSW50MzIgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBOYXRpdmVpbnRfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZHByZWMgcGFkIHByZWMgZm10dHkgd2l0aFxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgcHJlYywgSW50NjRfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKEludDY0IChpY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBGbG9hdF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgQm9vbCAocGFkLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgQm9vbF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoQm9vbCAocGFkLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEZsdXNoIGZtdF9yZXN0LCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZsdXNoIGZtdCcsIGZtdHR5JylcblxuICB8IFN0cmluZ19saXRlcmFsIChzdHIsIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChTdHJpbmdfbGl0ZXJhbCAoc3RyLCBmbXQnKSwgZm10dHknKVxuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCBmbXRfcmVzdCksIGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQ2hhcl9saXRlcmFsIChjaHIsIGZtdCcpLCBmbXR0eScpXG5cbiAgfCBGb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHksIGZtdF9yZXN0KSxcbiAgICBGb3JtYXRfYXJnX3R5IChzdWJfZm10dHknLCBmbXR0eV9yZXN0KSAtPlxuICAgIGlmIEZtdHR5X0VCQiBzdWJfZm10dHkgPD4gRm10dHlfRUJCIHN1Yl9mbXR0eScgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHknLCBmbXQnKSwgZm10dHknKVxuICB8IEZvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5LCBmbXRfcmVzdCksXG4gICAgRm9ybWF0X3N1YnN0X3R5IChzdWJfZm10dHkxLCBfc3ViX2ZtdHR5MiwgZm10dHlfcmVzdCkgLT5cbiAgICBpZiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWJfZm10dHkpIDw+IEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1Yl9mbXR0eTEpIHRoZW5cbiAgICAgIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPVxuICAgICAgdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IChlcmFzZV9yZWwgZm10dHlfcmVzdClcbiAgICBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5MSwgZm10JyksIGZtdHR5JylcbiAgKCogUHJpbnRmIGFuZCBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3JzOiAqKVxuICB8IEFscGhhIGZtdF9yZXN0LCBBbHBoYV90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEFscGhhIGZtdCcsIGZtdHR5JylcbiAgfCBUaGV0YSBmbXRfcmVzdCwgVGhldGFfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChUaGV0YSBmbXQnLCBmbXR0eScpXG5cbiAgKCogRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9yczogKilcbiAgfCBGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIGZtdCcpLCBmbXR0eScpXG4gIHwgRm9ybWF0dGluZ19nZW4gKGZvcm1hdHRpbmdfZ2VuLCBmbXRfcmVzdCksIGZtdHR5X3Jlc3QgLT5cbiAgICB0eXBlX2Zvcm1hdHRpbmdfZ2VuIGZvcm1hdHRpbmdfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3RcblxuICAoKiBTY2FuZiBzcGVjaWZpYyBjb25zdHJ1Y3RvcnM6ICopXG4gIHwgUmVhZGVyIGZtdF9yZXN0LCBSZWFkZXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChSZWFkZXIgZm10JywgZm10dHknKVxuICB8IFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIGZtdF9yZXN0KSwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgZm10JyksIGZtdHR5JylcbiAgfCBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXRfcmVzdCksIEludF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdCcpLCBmbXR0eScpXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIHR5cGVfaWdub3JlZF9wYXJhbSBpZ24gcmVzdCBmbXR0eV9yZXN0XG5cbiAgfCBFbmRfb2ZfZm9ybWF0LCBmbXR0eV9yZXN0IC0+IEZtdF9mbXR0eV9FQkIgKEVuZF9vZl9mb3JtYXQsIGZtdHR5X3Jlc3QpXG5cbiAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuYW5kIHR5cGVfZm9ybWF0dGluZ19nZW4gOiB0eXBlIGExIGEzIGIxIGIzIGMxIGMzIGQxIGQzIGUxIGUyIGUzIGYxIGYyIGYzIC5cbiAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm9ybWF0dGluZ19nZW4gLT5cbiAgICAoZjEsIGIxLCBjMSwgZTEsIGUyLCBmMikgZm10IC0+XG4gICAgKGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdHR5IC0+XG4gICAgKGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdF9mbXR0eV9lYmIgPVxuZnVuIGZvcm1hdHRpbmdfZ2VuIGZtdDAgZm10dHkwIC0+IG1hdGNoIGZvcm1hdHRpbmdfZ2VuIHdpdGhcbiAgfCBPcGVuX3RhZyAoRm9ybWF0IChmbXQxLCBzdHIpKSAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQyLCBmbXR0eTIpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdDEgZm10dHkwIGluXG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDMsIGZtdHR5MykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MCBmbXR0eTIgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10Miwgc3RyKSksIGZtdDMpLCBmbXR0eTMpXG4gIHwgT3Blbl9ib3ggKEZvcm1hdCAoZm10MSwgc3RyKSkgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10MiwgZm10dHkyKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQxIGZtdHR5MCBpblxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQzLCBmbXR0eTMpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdDAgZm10dHkyIGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdDIsIHN0cikpLCBmbXQzKSwgZm10dHkzKVxuXG4oKiBUeXBlIGFuIElnbm9yZWRfcGFyYW0gbm9kZSBhY2NvcmRpbmcgdG8gYW4gZm10dHkuICopXG5hbmQgdHlwZV9pZ25vcmVkX3BhcmFtIDogdHlwZSBwIHEgeCB5IHogdCB1IHYgYSBiIGMgZCBlIGYgLlxuICAgICh4LCB5LCB6LCB0LCBxLCBwKSBpZ25vcmVkIC0+XG4gICAgKHAsIHksIHosIHEsIHUsIHYpIGZtdCAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXRfZm10dHlfZWJiID1cbmZ1biBpZ24gZm10IGZtdHR5IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zdHJpbmcgXyAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9pbnQgXyAgICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9pbnQzMiBfICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgXyAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9pbnQ2NCBfICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9mbG9hdCBfICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IF8gICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIF8gYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHkpIC0+XG4gICAgdHlwZV9pZ25vcmVkX3BhcmFtX29uZSAoSWdub3JlZF9mb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHkpKSBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5KSAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHknLCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHkgZm10IGZtdHR5IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9mb3JtYXRfc3Vic3QgKHBhZF9vcHQsIHN1Yl9mbXR0eScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdCcpLFxuICAgICAgICAgICAgICAgICAgIGZtdHR5JylcbiAgfCBJZ25vcmVkX3JlYWRlciAtPiAoXG4gICAgbWF0Y2ggZm10dHkgd2l0aFxuICAgIHwgSWdub3JlZF9yZWFkZXJfdHkgZm10dHlfcmVzdCAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfcmVhZGVyLCBmbXQnKSwgZm10dHknKVxuICAgIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcblxuYW5kIHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgOiB0eXBlIGExIGEyIGIxIGIyIGMxIGMyIGQxIGQyIGUxIGUyIGYxIGYyIC5cbiAgICAoYTIsIGIyLCBjMiwgZDIsIGQyLCBhMikgaWdub3JlZCAtPlxuICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmbXQgLT5cbiAgICAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHkgLT5cbiAgICAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10X2ZtdHR5X2ViYlxuPSBmdW4gaWduIGZtdCBmbXR0eSAtPlxuICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHkgaW5cbiAgRm10X2ZtdHR5X0VCQiAoSWdub3JlZF9wYXJhbSAoaWduLCBmbXQnKSwgZm10dHknKVxuXG4oKiBUeXBpbmcgb2YgdGhlIGNvbXBsZXggY2FzZTogXCIlXyguLi4lKVwiLiAqKVxuYW5kIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIDogdHlwZSB3IHggeSB6IHAgcyB0IHUgYSBiIGMgZCBlIGYgLlxuICAgICh3LCB4LCB5LCB6LCBzLCBwKSBmbXR0eSAtPlxuICAgIChwLCB4LCB5LCBzLCB0LCB1KSBmbXQgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5X2ZtdF9lYmIgPVxuZnVuIHN1Yl9mbXR0eSBmbXQgZm10dHkgLT4gbWF0Y2ggc3ViX2ZtdHR5LCBmbXR0eSB3aXRoXG4gIHwgQ2hhcl90eSBzdWJfZm10dHlfcmVzdCwgQ2hhcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChDaGFyX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBTdHJpbmdfdHkgc3ViX2ZtdHR5X3Jlc3QsIFN0cmluZ190eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChTdHJpbmdfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEludF90eSBzdWJfZm10dHlfcmVzdCwgSW50X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEludF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSW50MzJfdHkgc3ViX2ZtdHR5X3Jlc3QsIEludDMyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEludDMyX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBOYXRpdmVpbnRfdHkgc3ViX2ZtdHR5X3Jlc3QsIE5hdGl2ZWludF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChOYXRpdmVpbnRfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEludDY0X3R5IHN1Yl9mbXR0eV9yZXN0LCBJbnQ2NF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChJbnQ2NF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgRmxvYXRfdHkgc3ViX2ZtdHR5X3Jlc3QsIEZsb2F0X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEZsb2F0X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBCb29sX3R5IHN1Yl9mbXR0eV9yZXN0LCBCb29sX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEJvb2xfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEFscGhhX3R5IHN1Yl9mbXR0eV9yZXN0LCBBbHBoYV90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChBbHBoYV90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgVGhldGFfdHkgc3ViX2ZtdHR5X3Jlc3QsIFRoZXRhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKFRoZXRhX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBSZWFkZXJfdHkgc3ViX2ZtdHR5X3Jlc3QsIFJlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChSZWFkZXJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHN1Yl9mbXR0eV9yZXN0LCBJZ25vcmVkX3JlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChJZ25vcmVkX3JlYWRlcl90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG5cbiAgfCBGb3JtYXRfYXJnX3R5IChzdWIyX2ZtdHR5LCBzdWJfZm10dHlfcmVzdCksXG4gICAgRm9ybWF0X2FyZ190eSAoc3ViMl9mbXR0eScsIGZtdHR5X3Jlc3QpIC0+XG4gICAgaWYgRm10dHlfRUJCIHN1YjJfZm10dHkgPD4gRm10dHlfRUJCIHN1YjJfZm10dHknIHRoZW4gcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEZvcm1hdF9hcmdfdHkgKHN1YjJfZm10dHknLCBzdWJfZm10dHlfcmVzdCcpLCBmbXQnKVxuICB8IEZvcm1hdF9zdWJzdF90eSAoc3ViMV9mbXR0eSwgIHN1YjJfZm10dHksICBzdWJfZm10dHlfcmVzdCksXG4gICAgRm9ybWF0X3N1YnN0X3R5IChzdWIxX2ZtdHR5Jywgc3ViMl9mbXR0eScsIGZtdHR5X3Jlc3QpIC0+XG4gICAgKCogVE9ETyBkZWZpbmUgRm10dHlfcmVsX0VCQiB0byByZW1vdmUgdGhvc2UgZXJhc2VfcmVsICopXG4gICAgaWYgRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMV9mbXR0eSkgPD4gRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMV9mbXR0eScpXG4gICAgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGlmIEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1YjJfZm10dHkpIDw+IEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1YjJfZm10dHknKVxuICAgIHRoZW4gcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBsZXQgc3ViX2ZtdHR5JyA9IHRyYW5zIChzeW1tIHN1YjFfZm10dHknKSBzdWIyX2ZtdHR5JyBpblxuICAgIGxldCBfLCBmMiwgXywgZjQgPSBmbXR0eV9yZWxfZGV0IHN1Yl9mbXR0eScgaW5cbiAgICBsZXQgUmVmbCA9IGYyIFJlZmwgaW5cbiAgICBsZXQgUmVmbCA9IGY0IFJlZmwgaW5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiAoZXJhc2VfcmVsIHN1Yl9mbXR0eV9yZXN0KSBmbXQgZm10dHlfcmVzdFxuICAgIGluXG4gICAgRm10dHlfZm10X0VCQiAoRm9ybWF0X3N1YnN0X3R5IChzdWIxX2ZtdHR5Jywgc3ViMl9mbXR0eScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1tIHN1Yl9mbXR0eV9yZXN0JyksXG4gICAgICAgICAgICAgICAgICAgZm10JylcbiAgfCBFbmRfb2ZfZm10dHksIGZtdHR5IC0+XG4gICAgRm10dHlfZm10X0VCQiAoRW5kX29mX2ZtdHR5LCB0eXBlX2Zvcm1hdF9nZW4gZm10IGZtdHR5KVxuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG4oKiBUaGlzIGltcGxlbWVudGF0aW9uIG9mIGByZWNhc3RgIGlzIGEgYml0IGRpc2FwcG9pbnRpbmcuIFRoZVxuICAgaW52YXJpYW50IHByb3ZpZGVkIGJ5IHRoZSB0eXBlIGFyZSB2ZXJ5IHN0cm9uZzogdGhlIGlucHV0IGZvcm1hdCdzXG4gICB0eXBlIGlzIGluIHJlbGF0aW9uIHRvIHRoZSBvdXRwdXQgdHlwZSdzIGFzIHdpdG5lc3NlZCBieSB0aGVcbiAgIGZtdHR5X3JlbCBhcmd1bWVudC4gT25lIHdvdWxkIGF0IGZpcnN0IGV4cGVjdCB0aGlzIGZ1bmN0aW9uIHRvIGJlXG4gICB0b3RhbCwgYW5kIGltcGxlbWVudGFibGUgYnkgZXhoYXVzdGl2ZSBwYXR0ZXJuIG1hdGNoaW5nLiBJbnN0ZWFkLFxuICAgd2UgcmV1c2UgdGhlIGhpZ2hseSBwYXJ0aWFsIGFuZCBtdWNoIGxlc3Mgd2VsbC1kZWZpbmVkIGZ1bmN0aW9uXG4gICBgdHlwZV9mb3JtYXRgIHRoYXQgaGFzIGxvc3QgYWxsIGtub3dsZWRnZSBvZiB0aGUgY29ycmVzcG9uZGVuY2VcbiAgIGJldHdlZW4gdGhlIGFyZ3VtZW50J3MgdHlwZXMuXG5cbiAgIEJlc2lkZXMgdGhlIGZhY3QgdGhhdCB0aGlzIGZ1bmN0aW9uIHJldXNlcyBhIGxvdCBvZiB0aGVcbiAgIGB0eXBlX2Zvcm1hdGAgbG9naWMgKGVnLjogc2VlaW5nIEludF90eSBpbiB0aGUgZm10dHkgcGFyYW1ldGVyIGRvZXNcbiAgIG5vdCBsZXQgeW91IG1hdGNoIG9uIEludCBvbmx5LCBhcyB5b3UgbWF5IGluIGZhY3QgaGF2ZSBGbG9hdFxuICAgKEFyZ19wYWRkaW5nLCAuLi4pIChcIiUuKmRcIikgYmVnaW5uaW5nIHdpdGggYW4gSW50X3R5KSwgaXQgaXMgYWxzb1xuICAgYSBwYXJ0aWFsIGZ1bmN0aW9uLCBiZWNhdXNlIHRoZSB0eXBpbmcgaW5mb3JtYXRpb24gaW4gYSBmb3JtYXQgaXNcbiAgIG5vdCBxdWl0ZSBlbm91Z2ggdG8gcmVjb25zdHJ1Y3QgaXQgdW5hbWJpZ3VvdXNseS4gRm9yIGV4YW1wbGUsIHRoZVxuICAgZm9ybWF0IHR5cGVzIG9mIFwiJWQlX3JcIiBhbmQgXCIlX3IlZFwiIGhhdmUgdGhlIHNhbWUgZm9ybWF0NlxuICAgcGFyYW1ldGVycywgYnV0IHRoZXkgYXJlIG5vdCBhdCBhbGwgZXhjaGFuZ2VhYmxlLCBhbmQgcHV0dGluZyBvbmVcbiAgIGluIHBsYWNlIG9mIHRoZSBvdGhlciBtdXN0IHJlc3VsdCBpbiBhIGR5bmFtaWMgZmFpbHVyZS5cblxuICAgR2l2ZW4gdGhhdDpcbiAgIC0gd2UnZCBoYXZlIHRvIGR1cGxpY2F0ZSBhIGxvdCBvZiBub24tdHJpdmlhbCB0eXBpbmcgbG9naWMgZnJvbSB0eXBlX2Zvcm1hdFxuICAgLSB0aGlzIHdvdWxkbid0IGV2ZW4gZWxpbWluYXRlIChhbGwpIHRoZSBkeW5hbWljIGZhaWx1cmVzXG4gICB3ZSBkZWNpZGVkIHRvIGp1c3QgcmV1c2UgdHlwZV9mb3JtYXQgZGlyZWN0bHkgZm9yIG5vdy5cbiopXG5sZXQgcmVjYXN0IDpcbiAgdHlwZSBhMSBiMSBjMSBkMSBlMSBmMVxuICAgICAgIGEyIGIyIGMyIGQyIGUyIGYyXG4gIC5cbiAgICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdFxuICAtPiAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICAgIGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbFxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10XG49IGZ1biBmbXQgZm10dHkgLT5cbiAgdHlwZV9mb3JtYXQgZm10IChlcmFzZV9yZWwgKHN5bW0gZm10dHkpKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBQcmludGluZyB0b29scyAqKVxuXG4oKiBBZGQgcGFkZGluZyBzcGFjZXMgYXJvdW5kIGEgc3RyaW5nLiAqKVxubGV0IGZpeF9wYWRkaW5nIHBhZHR5IHdpZHRoIHN0ciA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgd2lkdGgsIHBhZHR5ID1cbiAgICBhYnMgd2lkdGgsXG4gICAgKCogd2hpbGUgbGl0ZXJhbCBwYWRkaW5nIHdpZHRocyBhcmUgYWx3YXlzIG5vbi1uZWdhdGl2ZSxcbiAgICAgICBkeW5hbWljYWxseS1zZXQgd2lkdGhzIChBcmdfcGFkZGluZywgZWcuICUqZCkgbWF5IGJlIG5lZ2F0aXZlO1xuICAgICAgIHdlIGludGVycHJldCB0aG9zZSBhcyBzcGVjaWZ5aW5nIGEgcGFkZGluZy10by10aGUtbGVmdDsgdGhpc1xuICAgICAgIG1lYW5zIHRoYXQgJzAnIG1heSBnZXQgZHJvcHBlZCBldmVuIGlmIGl0IHdhcyBleHBsaWNpdGx5IHNldCxcbiAgICAgICBidXQ6XG4gICAgICAgLSB0aGlzIGlzIHdoYXQgdGhlIGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBkb2VzLCBhbmRcbiAgICAgICAgIHdlIHByZXNlcnZlIGNvbXBhdGliaWxpdHkgaWYgcG9zc2libGVcbiAgICAgICAtIHdlIGNvdWxkIG9ubHkgc2lnbmFsIHRoaXMgaXNzdWUgYnkgZmFpbGluZyBhdCBydW50aW1lLFxuICAgICAgICAgd2hpY2ggaXMgbm90IHZlcnkgbmljZS4uLiAqKVxuICAgIGlmIHdpZHRoIDwgMCB0aGVuIExlZnQgZWxzZSBwYWR0eSBpblxuICBpZiB3aWR0aCA8PSBsZW4gdGhlbiBzdHIgZWxzZVxuICAgIGxldCByZXMgPSBCeXRlcy5tYWtlIHdpZHRoIChpZiBwYWR0eSA9IFplcm9zIHRoZW4gJzAnIGVsc2UgJyAnKSBpblxuICAgIGJlZ2luIG1hdGNoIHBhZHR5IHdpdGhcbiAgICB8IExlZnQgIC0+IFN0cmluZy5ibGl0IHN0ciAwIHJlcyAwIGxlblxuICAgIHwgUmlnaHQgLT4gU3RyaW5nLmJsaXQgc3RyIDAgcmVzICh3aWR0aCAtIGxlbikgbGVuXG4gICAgfCBaZXJvcyB3aGVuIGxlbiA+IDAgJiYgKHN0ci5bMF0gPSAnKycgfHwgc3RyLlswXSA9ICctJyB8fCBzdHIuWzBdID0gJyAnKSAtPlxuICAgICAgQnl0ZXMuc2V0IHJlcyAwIHN0ci5bMF07XG4gICAgICBTdHJpbmcuYmxpdCBzdHIgMSByZXMgKHdpZHRoIC0gbGVuICsgMSkgKGxlbiAtIDEpXG4gICAgfCBaZXJvcyB3aGVuIGxlbiA+IDEgJiYgc3RyLlswXSA9ICcwJyAmJiAoc3RyLlsxXSA9ICd4JyB8fCBzdHIuWzFdID0gJ1gnKSAtPlxuICAgICAgQnl0ZXMuc2V0IHJlcyAxIHN0ci5bMV07XG4gICAgICBTdHJpbmcuYmxpdCBzdHIgMiByZXMgKHdpZHRoIC0gbGVuICsgMikgKGxlbiAtIDIpXG4gICAgfCBaZXJvcyAtPlxuICAgICAgU3RyaW5nLmJsaXQgc3RyIDAgcmVzICh3aWR0aCAtIGxlbikgbGVuXG4gICAgZW5kO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG5cbigqIEFkZCAnMCcgcGFkZGluZyB0byBpbnQsIGludDMyLCBuYXRpdmVpbnQgb3IgaW50NjQgc3RyaW5nIHJlcHJlc2VudGF0aW9uLiAqKVxubGV0IGZpeF9pbnRfcHJlY2lzaW9uIHByZWMgc3RyID1cbiAgbGV0IHByZWMgPSBhYnMgcHJlYyBpblxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbWF0Y2ggc3RyLlswXSB3aXRoXG4gIHwgKCcrJyB8ICctJyB8ICcgJykgYXMgYyB3aGVuIHByZWMgKyAxID4gbGVuIC0+XG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgKHByZWMgKyAxKSAnMCcgaW5cbiAgICBCeXRlcy5zZXQgcmVzIDAgYztcbiAgICBTdHJpbmcuYmxpdCBzdHIgMSByZXMgKHByZWMgLSBsZW4gKyAyKSAobGVuIC0gMSk7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcbiAgfCAnMCcgd2hlbiBwcmVjICsgMiA+IGxlbiAmJiBsZW4gPiAxICYmIChzdHIuWzFdID0gJ3gnIHx8IHN0ci5bMV0gPSAnWCcpIC0+XG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgKHByZWMgKyAyKSAnMCcgaW5cbiAgICBCeXRlcy5zZXQgcmVzIDEgc3RyLlsxXTtcbiAgICBTdHJpbmcuYmxpdCBzdHIgMiByZXMgKHByZWMgLSBsZW4gKyA0KSAobGVuIC0gMik7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcbiAgfCAnMCcgLi4gJzknIHwgJ2EnIC4uICdmJyB8ICdBJyAuLiAnRicgd2hlbiBwcmVjID4gbGVuIC0+XG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgcHJlYyAnMCcgaW5cbiAgICBTdHJpbmcuYmxpdCBzdHIgMCByZXMgKHByZWMgLSBsZW4pIGxlbjtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICB8IF8gLT5cbiAgICBzdHJcblxuKCogRXNjYXBlIGEgc3RyaW5nIGFjY29yZGluZyB0byB0aGUgT0NhbWwgbGV4aW5nIGNvbnZlbnRpb24uICopXG5sZXQgc3RyaW5nX3RvX2NhbWxfc3RyaW5nIHN0ciA9XG4gIGxldCBzdHIgPSBTdHJpbmcuZXNjYXBlZCBzdHIgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgcmVzID0gQnl0ZXMubWFrZSAobCArIDIpICdcXFwiJyBpblxuICBTdHJpbmcudW5zYWZlX2JsaXQgc3RyIDAgcmVzIDEgbDtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxuKCogR2VuZXJhdGUgdGhlIGZvcm1hdF9pbnQvaW50MzIvbmF0aXZlaW50L2ludDY0IGZpcnN0IGFyZ3VtZW50XG4gICBmcm9tIGFuIGludF9jb252LiAqKVxubGV0IGZvcm1hdF9vZl9pY29udiA9IGZ1bmN0aW9uXG4gIHwgSW50X2QgfCBJbnRfQ2QgLT4gXCIlZFwiIHwgSW50X3BkIC0+IFwiJStkXCIgfCBJbnRfc2QgLT4gXCIlIGRcIlxuICB8IEludF9pIHwgSW50X0NpIC0+IFwiJWlcIiB8IEludF9waSAtPiBcIiUraVwiIHwgSW50X3NpIC0+IFwiJSBpXCJcbiAgfCBJbnRfeCAtPiBcIiV4XCIgfCBJbnRfQ3ggLT4gXCIlI3hcIlxuICB8IEludF9YIC0+IFwiJVhcIiB8IEludF9DWCAtPiBcIiUjWFwiXG4gIHwgSW50X28gLT4gXCIlb1wiIHwgSW50X0NvIC0+IFwiJSNvXCJcbiAgfCBJbnRfdSB8IEludF9DdSAtPiBcIiV1XCJcblxubGV0IGZvcm1hdF9vZl9pY29udkwgPSBmdW5jdGlvblxuICB8IEludF9kIHwgSW50X0NkIC0+IFwiJUxkXCIgfCBJbnRfcGQgLT4gXCIlK0xkXCIgfCBJbnRfc2QgLT4gXCIlIExkXCJcbiAgfCBJbnRfaSB8IEludF9DaSAtPiBcIiVMaVwiIHwgSW50X3BpIC0+IFwiJStMaVwiIHwgSW50X3NpIC0+IFwiJSBMaVwiXG4gIHwgSW50X3ggLT4gXCIlTHhcIiB8IEludF9DeCAtPiBcIiUjTHhcIlxuICB8IEludF9YIC0+IFwiJUxYXCIgfCBJbnRfQ1ggLT4gXCIlI0xYXCJcbiAgfCBJbnRfbyAtPiBcIiVMb1wiIHwgSW50X0NvIC0+IFwiJSNMb1wiXG4gIHwgSW50X3UgfCBJbnRfQ3UgLT4gXCIlTHVcIlxuXG5sZXQgZm9ybWF0X29mX2ljb252bCA9IGZ1bmN0aW9uXG4gIHwgSW50X2QgfCBJbnRfQ2QgLT4gXCIlbGRcIiB8IEludF9wZCAtPiBcIiUrbGRcIiB8IEludF9zZCAtPiBcIiUgbGRcIlxuICB8IEludF9pIHwgSW50X0NpIC0+IFwiJWxpXCIgfCBJbnRfcGkgLT4gXCIlK2xpXCIgfCBJbnRfc2kgLT4gXCIlIGxpXCJcbiAgfCBJbnRfeCAtPiBcIiVseFwiIHwgSW50X0N4IC0+IFwiJSNseFwiXG4gIHwgSW50X1ggLT4gXCIlbFhcIiB8IEludF9DWCAtPiBcIiUjbFhcIlxuICB8IEludF9vIC0+IFwiJWxvXCIgfCBJbnRfQ28gLT4gXCIlI2xvXCJcbiAgfCBJbnRfdSB8IEludF9DdSAtPiBcIiVsdVwiXG5cbmxldCBmb3JtYXRfb2ZfaWNvbnZuID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVuZFwiIHwgSW50X3BkIC0+IFwiJStuZFwiIHwgSW50X3NkIC0+IFwiJSBuZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlbmlcIiB8IEludF9waSAtPiBcIiUrbmlcIiB8IEludF9zaSAtPiBcIiUgbmlcIlxuICB8IEludF94IC0+IFwiJW54XCIgfCBJbnRfQ3ggLT4gXCIlI254XCJcbiAgfCBJbnRfWCAtPiBcIiVuWFwiIHwgSW50X0NYIC0+IFwiJSNuWFwiXG4gIHwgSW50X28gLT4gXCIlbm9cIiB8IEludF9DbyAtPiBcIiUjbm9cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJW51XCJcblxuKCogR2VuZXJhdGUgdGhlIGZvcm1hdF9mbG9hdCBmaXJzdCBhcmd1bWVudCBmcm9tIGEgZmxvYXRfY29udi4gKilcbmxldCBmb3JtYXRfb2ZfZmNvbnYgZmNvbnYgcHJlYyA9XG4gICAgbGV0IHByZWMgPSBhYnMgcHJlYyBpblxuICAgIGxldCBzeW1iID0gY2hhcl9vZl9mY29udiB+Y0Y6J2cnIGZjb252IGluXG4gICAgbGV0IGJ1ZiA9IGJ1ZmZlcl9jcmVhdGUgMTYgaW5cbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgICBicHJpbnRfZmNvbnZfZmxhZyBidWYgZmNvbnY7XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnLic7XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIChJbnQudG9fc3RyaW5nIHByZWMpO1xuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgc3ltYjtcbiAgICBidWZmZXJfY29udGVudHMgYnVmXG5cbmxldCB0cmFuc2Zvcm1faW50X2FsdCBpY29udiBzID1cbiAgbWF0Y2ggaWNvbnYgd2l0aFxuICB8IEludF9DZCB8IEludF9DaSB8IEludF9DdSAtPlxuICAgIGxldCBkaWdpdHMgPVxuICAgICAgbGV0IG4gPSByZWYgMCBpblxuICAgICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgICAgfCAnMCcuLic5JyAtPiBpbmNyIG5cbiAgICAgICAgfCBfIC0+ICgpXG4gICAgICBkb25lO1xuICAgICAgIW5cbiAgICBpblxuICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgKFN0cmluZy5sZW5ndGggcyArIChkaWdpdHMgLSAxKSAvIDMpIGluXG4gICAgbGV0IHBvcyA9IHJlZiAwIGluXG4gICAgbGV0IHB1dCBjID0gQnl0ZXMuc2V0IGJ1ZiAhcG9zIGM7IGluY3IgcG9zIGluXG4gICAgbGV0IGxlZnQgPSByZWYgKChkaWdpdHMgLSAxKSBtb2QgMyArIDEpIGluXG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICB8ICcwJy4uJzknIGFzIGMgLT5cbiAgICAgICAgICBpZiAhbGVmdCA9IDAgdGhlbiAocHV0ICdfJzsgbGVmdCA6PSAzKTsgZGVjciBsZWZ0OyBwdXQgY1xuICAgICAgfCBjIC0+IHB1dCBjXG4gICAgZG9uZTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1ZlxuICB8IF8gLT4gc1xuXG4oKiBDb252ZXJ0IGFuIGludGVnZXIgdG8gYSBzdHJpbmcgYWNjb3JkaW5nIHRvIGEgY29udmVyc2lvbi4gKilcbmxldCBjb252ZXJ0X2ludCBpY29udiBuID1cbiAgdHJhbnNmb3JtX2ludF9hbHQgaWNvbnYgKGZvcm1hdF9pbnQgKGZvcm1hdF9vZl9pY29udiBpY29udikgbilcbmxldCBjb252ZXJ0X2ludDMyIGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X2ludDMyIChmb3JtYXRfb2ZfaWNvbnZsIGljb252KSBuKVxubGV0IGNvbnZlcnRfbmF0aXZlaW50IGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X25hdGl2ZWludCAoZm9ybWF0X29mX2ljb252biBpY29udikgbilcbmxldCBjb252ZXJ0X2ludDY0IGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X2ludDY0IChmb3JtYXRfb2ZfaWNvbnZMIGljb252KSBuKVxuXG4oKiBDb252ZXJ0IGEgZmxvYXQgdG8gc3RyaW5nLiAqKVxuKCogRml4IHNwZWNpYWwgY2FzZSBvZiBcIk9DYW1sIGZsb2F0IGZvcm1hdFwiLiAqKVxubGV0IGNvbnZlcnRfZmxvYXQgZmNvbnYgcHJlYyB4ID1cbiAgbGV0IGhleCAoKSA9XG4gICAgbGV0IHNpZ24gPVxuICAgICAgbWF0Y2ggZnN0IGZjb252IHdpdGhcbiAgICAgIHwgRmxvYXRfZmxhZ19wIC0+ICcrJ1xuICAgICAgfCBGbG9hdF9mbGFnX3MgLT4gJyAnXG4gICAgICB8IF8gLT4gJy0nIGluXG4gICAgaGV4c3RyaW5nX29mX2Zsb2F0IHggcHJlYyBzaWduIGluXG4gIGxldCBhZGRfZG90X2lmX25lZWRlZCBzdHIgPVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGxldCByZWMgaXNfdmFsaWQgaSA9XG4gICAgICBpZiBpID0gbGVuIHRoZW4gZmFsc2UgZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2ldIHdpdGhcbiAgICAgICAgfCAnLicgfCAnZScgfCAnRScgLT4gdHJ1ZVxuICAgICAgICB8IF8gLT4gaXNfdmFsaWQgKGkgKyAxKSBpblxuICAgIGlmIGlzX3ZhbGlkIDAgdGhlbiBzdHIgZWxzZSBzdHIgXiBcIi5cIiBpblxuICBsZXQgY2FtbF9zcGVjaWFsX3ZhbCBzdHIgPSBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICB8IEZQX25vcm1hbCB8IEZQX3N1Ym5vcm1hbCB8IEZQX3plcm8gLT4gc3RyXG4gICAgfCBGUF9pbmZpbml0ZSAtPiBpZiB4IDwgMC4wIHRoZW4gXCJuZWdfaW5maW5pdHlcIiBlbHNlIFwiaW5maW5pdHlcIlxuICAgIHwgRlBfbmFuIC0+IFwibmFuXCIgaW5cbiAgbWF0Y2ggc25kIGZjb252IHdpdGhcbiAgfCBGbG9hdF9oIC0+IGhleCAoKVxuICB8IEZsb2F0X0ggLT4gU3RyaW5nLnVwcGVyY2FzZV9hc2NpaSAoaGV4ICgpKVxuICB8IEZsb2F0X0NGIC0+IGNhbWxfc3BlY2lhbF92YWwgKGhleCAoKSlcbiAgfCBGbG9hdF9GIC0+XG4gICAgbGV0IHN0ciA9IGZvcm1hdF9mbG9hdCAoZm9ybWF0X29mX2Zjb252IGZjb252IHByZWMpIHggaW5cbiAgICBjYW1sX3NwZWNpYWxfdmFsIChhZGRfZG90X2lmX25lZWRlZCBzdHIpXG4gIHwgRmxvYXRfZiB8IEZsb2F0X2UgfCBGbG9hdF9FIHwgRmxvYXRfZyB8IEZsb2F0X0cgLT5cbiAgICBmb3JtYXRfZmxvYXQgKGZvcm1hdF9vZl9mY29udiBmY29udiBwcmVjKSB4XG5cbigqIENvbnZlcnQgYSBjaGFyIHRvIGEgc3RyaW5nIGFjY29yZGluZyB0byB0aGUgT0NhbWwgbGV4aWNhbCBjb252ZW50aW9uLiAqKVxubGV0IGZvcm1hdF9jYW1sX2NoYXIgYyA9XG4gIGxldCBzdHIgPSBDaGFyLmVzY2FwZWQgYyBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCByZXMgPSBCeXRlcy5tYWtlIChsICsgMikgJ1xcJycgaW5cbiAgU3RyaW5nLnVuc2FmZV9ibGl0IHN0ciAwIHJlcyAxIGw7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG5cbigqIENvbnZlcnQgYSBmb3JtYXQgdHlwZSB0byBzdHJpbmcgKilcbmxldCBzdHJpbmdfb2ZfZm10dHkgZm10dHkgPVxuICBsZXQgYnVmID0gYnVmZmVyX2NyZWF0ZSAxNiBpblxuICBicHJpbnRfZm10dHkgYnVmIGZtdHR5O1xuICBidWZmZXJfY29udGVudHMgYnVmXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAoKiBHZW5lcmljIHByaW50aW5nIGZ1bmN0aW9uICopXG5cbigqIE1ha2UgYSBnZW5lcmljIHByaW50aW5nIGZ1bmN0aW9uLiAqKVxuKCogVXNlZCB0byBnZW5lcmF0ZSBQcmludGYgYW5kIEZvcm1hdCBwcmludGluZyBmdW5jdGlvbnMuICopXG4oKiBQYXJhbWV0ZXJzOlxuICAgICBrOiBhIGNvbnRpbnVhdGlvbiBmaW5hbGx5IGFwcGxpZWQgdG8gdGhlIG91dHB1dCBzdHJlYW0gYW5kIHRoZSBhY2N1bXVsYXRvci5cbiAgICAgbzogdGhlIG91dHB1dCBzdHJlYW0gKHNlZSBrLCAlYSBhbmQgJXQpLlxuICAgICBhY2M6IHJldiBsaXN0IG9mIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXNoLCBmb3JtYXR0aW5nLCAuLi4pLlxuICAgICBmbXQ6IHRoZSBmb3JtYXQuICopXG5sZXQgcmVjIG1ha2VfcHJpbnRmIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gYSA9XG5mdW4gayBhY2MgZm10IC0+IG1hdGNoIGZtdCB3aXRoXG4gIHwgQ2hhciByZXN0IC0+XG4gICAgZnVuIGMgLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfY2hhciAoYWNjLCBjKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIHJlc3RcbiAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgIGZ1biBjIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX3N0cmluZyAoYWNjLCBmb3JtYXRfY2FtbF9jaGFyIGMpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIG1ha2VfcGFkZGluZyBrIGFjYyByZXN0IHBhZCAoZnVuIHN0ciAtPiBzdHIpXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBtYWtlX3BhZGRpbmcgayBhY2MgcmVzdCBwYWQgc3RyaW5nX3RvX2NhbWxfc3RyaW5nXG4gIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgY29udmVydF9pbnQgaWNvbnZcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGNvbnZlcnRfaW50MzIgaWNvbnZcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X25hdGl2ZWludCBpY29udlxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgY29udmVydF9pbnQ2NCBpY29udlxuICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfZmxvYXRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBmY29udlxuICB8IEJvb2wgKHBhZCwgcmVzdCkgLT5cbiAgICBtYWtlX3BhZGRpbmcgayBhY2MgcmVzdCBwYWQgc3RyaW5nX29mX2Jvb2xcbiAgfCBBbHBoYSByZXN0IC0+XG4gICAgZnVuIGYgeCAtPiBtYWtlX3ByaW50ZiBrIChBY2NfZGVsYXkgKGFjYywgZnVuIG8gLT4gZiBvIHgpKSByZXN0XG4gIHwgVGhldGEgcmVzdCAtPlxuICAgIGZ1biBmIC0+IG1ha2VfcHJpbnRmIGsgKEFjY19kZWxheSAoYWNjLCBmKSkgcmVzdFxuICB8IEN1c3RvbSAoYXJpdHksIGYsIHJlc3QpIC0+XG4gICAgbWFrZV9jdXN0b20gayBhY2MgcmVzdCBhcml0eSAoZiAoKSlcbiAgfCBSZWFkZXIgXyAtPlxuICAgICgqIFRoaXMgY2FzZSBpcyBpbXBvc3NpYmxlLCBieSB0eXBpbmcgb2YgZm9ybWF0cy4gKilcbiAgICAoKiBJbmRlZWQsIHNpbmNlIHByaW50ZiBhbmQgY28uIHRha2UgYSBmb3JtYXQ0IGFzIGFyZ3VtZW50LCB0aGUgJ2QgYW5kICdlXG4gICAgICAgdHlwZSBwYXJhbWV0ZXJzIG9mIGZtdCBhcmUgb2J2aW91c2x5IGVxdWFscy4gVGhlIFJlYWRlciBpcyB0aGVcbiAgICAgICBvbmx5IGNvbnN0cnVjdG9yIHdoaWNoIHRvdWNoICdkIGFuZCAnZSB0eXBlIHBhcmFtZXRlcnMgb2YgdGhlIGZvcm1hdFxuICAgICAgIHR5cGUsIGl0IGFkZHMgYW4gKC0+KSB0byB0aGUgJ2QgcGFyYW1ldGVycy4gQ29uc2VxdWVudGx5LCBhIGZvcm1hdDRcbiAgICAgICBjYW5ub3QgY29udGFpbiBhIFJlYWRlciBub2RlLCBleGNlcHQgaW4gdGhlIHN1Yi1mb3JtYXQgYXNzb2NpYXRlZCB0b1xuICAgICAgIGFuICV7Li4uJX0uIEl0J3Mgbm90IGEgcHJvYmxlbSBiZWNhdXNlIG1ha2VfcHJpbnRmIGRvIG5vdCBjYWxsXG4gICAgICAgaXRzZWxmIHJlY3Vyc2l2ZWx5IG9uIHRoZSBzdWItZm9ybWF0IGFzc29jaWF0ZWQgdG8gJXsuLi4lfS4gKilcbiAgICBhc3NlcnQgZmFsc2VcbiAgfCBGbHVzaCByZXN0IC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX2ZsdXNoIGFjYykgcmVzdFxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT5cbiAgICBtYWtlX3ByaW50ZiBrIChBY2Nfc3RyaW5nX2xpdGVyYWwgKGFjYywgc3RyKSkgcmVzdFxuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCByZXN0KSAtPlxuICAgIG1ha2VfcHJpbnRmIGsgKEFjY19jaGFyX2xpdGVyYWwgKGFjYywgY2hyKSkgcmVzdFxuXG4gIHwgRm9ybWF0X2FyZyAoXywgc3ViX2ZtdHR5LCByZXN0KSAtPlxuICAgIGxldCB0eSA9IHN0cmluZ19vZl9mbXR0eSBzdWJfZm10dHkgaW5cbiAgICAoZnVuIHN0ciAtPlxuICAgICAgaWdub3JlIHN0cjtcbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCB0eSkpIHJlc3QpXG4gIHwgRm9ybWF0X3N1YnN0IChfLCBmbXR0eSwgcmVzdCkgLT5cbiAgICBmdW4gKEZvcm1hdCAoZm10LCBfKSkgLT4gbWFrZV9wcmludGYgayBhY2NcbiAgICAgIChjb25jYXRfZm10IChyZWNhc3QgZm10IGZtdHR5KSByZXN0KVxuXG4gIHwgU2Nhbl9jaGFyX3NldCAoXywgXywgcmVzdCkgLT5cbiAgICBsZXQgbmV3X2FjYyA9IEFjY19pbnZhbGlkX2FyZyAoYWNjLCBcIlByaW50ZjogYmFkIGNvbnZlcnNpb24gJVtcIikgaW5cbiAgICBmdW4gXyAtPiBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpIC0+XG4gICAgKCogVGhpcyBjYXNlIHNob3VsZCBiZSByZWZ1c2VkIGZvciBQcmludGYuICopXG4gICAgKCogQWNjZXB0ZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuICopXG4gICAgKCogSW50ZXJwcmV0ICVsLCAlbiBhbmQgJUwgYXMgJXUuICopXG4gICAgZnVuIG4gLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZvcm1hdF9pbnQgXCIldVwiIG4pIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgLT5cbiAgICBmdW4gYyAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9jaGFyIChhY2MsIGMpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICBtYWtlX2lnbm9yZWRfcGFyYW0gayBhY2MgaWduIHJlc3RcblxuICB8IEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSAtPlxuICAgIG1ha2VfcHJpbnRmIGsgKEFjY19mb3JtYXR0aW5nX2xpdCAoYWNjLCBmbXRpbmdfbGl0KSkgcmVzdFxuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgbGV0IGsnIGthY2MgPVxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2Zvcm1hdHRpbmdfZ2VuIChhY2MsIEFjY19vcGVuX3RhZyBrYWNjKSkgcmVzdCBpblxuICAgIG1ha2VfcHJpbnRmIGsnIEVuZF9vZl9hY2MgZm10J1xuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgbGV0IGsnIGthY2MgPVxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2Zvcm1hdHRpbmdfZ2VuIChhY2MsIEFjY19vcGVuX2JveCBrYWNjKSkgcmVzdCBpblxuICAgIG1ha2VfcHJpbnRmIGsnIEVuZF9vZl9hY2MgZm10J1xuXG4gIHwgRW5kX29mX2Zvcm1hdCAtPlxuICAgIGsgYWNjXG5cbigqIERlbGF5IHRoZSBlcnJvciAoSW52YWxpZF9hcmd1bWVudCBcIlByaW50ZjogYmFkIGNvbnZlcnNpb24gJV9cIikuICopXG4oKiBHZW5lcmF0ZSBmdW5jdGlvbnMgdG8gdGFrZSByZW1haW5pbmcgYXJndW1lbnRzIChhZnRlciB0aGUgXCIlX1wiKS4gKilcbmFuZCBtYWtlX2lnbm9yZWRfcGFyYW0gOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCB5LCB4KSBpZ25vcmVkIC0+XG4gICAgKHgsIGIsIGMsIHksIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBpZ24gZm10IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfY2FtbF9jaGFyICAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfaW50IChfLCBfKSAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2ludDMyIChfLCBfKSAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgKF8sIF8pICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfaW50NjQgKF8sIF8pICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2Zsb2F0IChfLCBfKSAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyBfICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoXywgZm10dHkpIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyBmbXR0eSBmbXRcbiAgfCBJZ25vcmVkX3JlYWRlciAgICAgICAgICAgICAgICAgIC0+IGFzc2VydCBmYWxzZVxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCBfICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuXG5cbigqIFNwZWNpYWwgY2FzZSBvZiBwcmludGYgXCIlXyhcIi4gKilcbmFuZCBtYWtlX2Zyb21fZm10dHkgOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCB5LCB4KSBmbXR0eSAtPlxuICAgICh4LCBiLCBjLCB5LCBlLCBmKSBmbXQgLT4gYSA9XG5mdW4gayBhY2MgZm10dHkgZm10IC0+IG1hdGNoIGZtdHR5IHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QgICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBTdHJpbmdfdHkgcmVzdCAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBJbnRfdHkgcmVzdCAgICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBJbnQzMl90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBJbnQ2NF90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBGbG9hdF90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBCb29sX3R5IHJlc3QgICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBBbHBoYV90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IFRoZXRhX3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEFueV90eSByZXN0ICAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IFJlYWRlcl90eSBfICAgICAgICAgICAgIC0+IGFzc2VydCBmYWxzZVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IF8gICAgIC0+IGFzc2VydCBmYWxzZVxuICB8IEZvcm1hdF9hcmdfdHkgKF8sIHJlc3QpIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEVuZF9vZl9mbXR0eSAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBsZXQgdHkgPSB0cmFucyAoc3ltbSB0eTEpIHR5MiBpblxuICAgIGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyAoY29uY2F0X2ZtdHR5IHR5IHJlc3QpIGZtdFxuXG4oKiBJbnNlcnQgYW4gQWNjX2ludmFsaWRfYXJnIGluIHRoZSBhY2N1bXVsYXRvciBhbmQgY29udGludWUgdG8gZ2VuZXJhdGVcbiAgIGNsb3N1cmVzIHRvIGdldCB0aGUgcmVtYWluaW5nIGFyZ3VtZW50cy4gKilcbmFuZCBtYWtlX2ludmFsaWRfYXJnIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gYSA9XG5mdW4gayBhY2MgZm10IC0+XG4gIG1ha2VfcHJpbnRmIGsgKEFjY19pbnZhbGlkX2FyZyAoYWNjLCBcIlByaW50ZjogYmFkIGNvbnZlcnNpb24gJV9cIikpIGZtdFxuXG4oKiBGaXggcGFkZGluZywgdGFrZSBpdCBhcyBhbiBleHRyYSBpbnRlZ2VyIGFyZ3VtZW50IGlmIG5lZWRlZC4gKilcbmFuZCBtYWtlX3BhZGRpbmcgOiB0eXBlIHggeiBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAoeCwgeiAtPiBhKSBwYWRkaW5nIC0+ICh6IC0+IHN0cmluZykgLT4geCA9XG4gIGZ1biBrIGFjYyBmbXQgcGFkIHRyYW5zIC0+IG1hdGNoIHBhZCB3aXRoXG4gIHwgTm9fcGFkZGluZyAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX3N0cmluZyAoYWNjLCB0cmFucyB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgd2lkdGgpIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZpeF9wYWRkaW5nIHBhZHR5IHdpZHRoICh0cmFucyB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZpeF9wYWRkaW5nIHBhZHR5IHcgKHRyYW5zIHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIGZtdFxuXG4oKiBGaXggcGFkZGluZyBhbmQgcHJlY2lzaW9uIGZvciBpbnQsIGludDMyLCBuYXRpdmVpbnQgb3IgaW50NjQuICopXG4oKiBUYWtlIG9uZSBvciB0d28gZXh0cmEgaW50ZWdlciBhcmd1bWVudHMgaWYgbmVlZGVkLiAqKVxuYW5kIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIDogdHlwZSB4IHkgeiBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAoeCwgeSkgcGFkZGluZyAtPiAoeSwgeiAtPiBhKSBwcmVjaXNpb24gLT4gKGludF9jb252IC0+IHogLT4gc3RyaW5nKSAtPlxuICAgIGludF9jb252IC0+IHggPVxuICBmdW4gayBhY2MgZm10IHBhZCBwcmVjIHRyYW5zIGljb252IC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gIHwgTm9fcGFkZGluZywgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSB0cmFucyBpY29udiB4IGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTm9fcGFkZGluZywgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IE5vX3BhZGRpbmcsIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKHRyYW5zIGljb252IHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAodHJhbnMgaWNvbnYgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHcgcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG5cbigqIENvbnZlcnQgYSBmbG9hdCwgZml4IHBhZGRpbmcgYW5kIHByZWNpc2lvbiBpZiBuZWVkZWQuICopXG4oKiBUYWtlIHRoZSBmbG9hdCBhcmd1bWVudCBhbmQgb25lIG9yIHR3byBleHRyYSBpbnRlZ2VyIGFyZ3VtZW50cyBpZiBuZWVkZWQuICopXG5hbmQgbWFrZV9mbG9hdF9wYWRkaW5nX3ByZWNpc2lvbiA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICh4LCB5KSBwYWRkaW5nIC0+ICh5LCBmbG9hdCAtPiBhKSBwcmVjaXNpb24gLT4gZmxvYXRfY29udiAtPiB4ID1cbiAgZnVuIGsgYWNjIGZtdCBwYWQgcHJlYyBmY29udiAtPiBtYXRjaCBwYWQsIHByZWMgd2l0aFxuICB8IE5vX3BhZGRpbmcsIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiAoZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYpIHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4IGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTm9fcGFkZGluZywgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiAoZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYpIHggaW5cbiAgICAgIGxldCBzdHInID0gZml4X3BhZGRpbmcgcGFkdHkgdyBzdHIgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHInKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiAoZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYpIHggaW5cbiAgICAgIGxldCBzdHInID0gZml4X3BhZGRpbmcgcGFkdHkgdyBzdHIgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHInKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuYW5kIG1ha2VfY3VzdG9tIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgKGEsIHgsIHkpIGN1c3RvbV9hcml0eSAtPiB4IC0+IHkgPVxuICBmdW4gayBhY2MgcmVzdCBhcml0eSBmIC0+IG1hdGNoIGFyaXR5IHdpdGhcbiAgfCBDdXN0b21femVybyAtPiBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgZikpIHJlc3RcbiAgfCBDdXN0b21fc3VjYyBhcml0eSAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBtYWtlX2N1c3RvbSBrIGFjYyByZXN0IGFyaXR5IChmIHgpXG5cbmxldCBjb25zdCB4IF8gPSB4XG5cbmxldCByZWMgbWFrZV9pcHJpbnRmIDogdHlwZSBhIGIgYyBkIGUgZiBzdGF0ZS5cbiAgKHN0YXRlIC0+IGYpIC0+IHN0YXRlIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gYSA9XG4gIGZ1biBrIG8gZm10IC0+IG1hdGNoIGZtdCB3aXRoXG4gICAgfCBDaGFyIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTdHJpbmcgKE5vX3BhZGRpbmcsIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTdHJpbmcgKExpdF9wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTdHJpbmcgKEFyZ19wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KSlcbiAgICB8IENhbWxfc3RyaW5nIChOb19wYWRkaW5nLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQ2FtbF9zdHJpbmcgKExpdF9wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBDYW1sX3N0cmluZyAoQXJnX3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpKVxuICAgIHwgSW50IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBJbnQzMiAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgTmF0aXZlaW50IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBJbnQ2NCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgRmxvYXQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEJvb2wgKE5vX3BhZGRpbmcsIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBCb29sIChMaXRfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQm9vbCAoQXJnX3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpKVxuICAgIHwgQWxwaGEgcmVzdCAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBUaGV0YSByZXN0IC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBDdXN0b20gKGFyaXR5LCBfLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9jdXN0b21fYXJpdHkgayBvIHJlc3QgYXJpdHlcbiAgICB8IFJlYWRlciBfIC0+XG4gICAgICAgICgqIFRoaXMgY2FzZSBpcyBpbXBvc3NpYmxlLCBieSB0eXBpbmcgb2YgZm9ybWF0cy4gIFNlZSB0aGVcbiAgICAgICAgICAgbm90ZSBpbiB0aGUgY29ycmVzcG9uZGluZyBjYXNlIGZvciBtYWtlX3ByaW50Zi4gKilcbiAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgfCBGbHVzaCByZXN0IC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gcmVzdFxuICAgIHwgU3RyaW5nX2xpdGVyYWwgKF8sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gcmVzdFxuICAgIHwgQ2hhcl9saXRlcmFsIChfLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIHJlc3RcbiAgICB8IEZvcm1hdF9hcmcgKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBGb3JtYXRfc3Vic3QgKF8sIGZtdHR5LCByZXN0KSAtPlxuICAgICAgICBmdW4gKEZvcm1hdCAoZm10LCBfKSkgLT5cbiAgICAgICAgICBtYWtlX2lwcmludGYgayBvXG4gICAgICAgICAgICAoY29uY2F0X2ZtdCAocmVjYXN0IGZtdCBmbXR0eSkgcmVzdClcbiAgICB8IFNjYW5fY2hhcl9zZXQgKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTY2FuX2dldF9jb3VudGVyIChfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lnbm9yZWRfcGFyYW0gKGZ1biBfIC0+IGsgbykgKEVuZF9vZl9hY2MpIGlnbiByZXN0XG4gICAgfCBGb3JtYXR0aW5nX2xpdCAoXywgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgKGZ1biBrb2MgLT4gbWFrZV9pcHJpbnRmIGsga29jIHJlc3QpIG8gZm10J1xuICAgIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIChmdW4ga29jIC0+IG1ha2VfaXByaW50ZiBrIGtvYyByZXN0KSBvIGZtdCdcbiAgICB8IEVuZF9vZl9mb3JtYXQgLT5cbiAgICAgICAgayBvXG5hbmQgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gOlxuICB0eXBlIHggeSB6IGEgYiBjIGQgZSBmIHN0YXRlLlxuICAoc3RhdGUgLT4gZikgLT4gc3RhdGUgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAoeCwgeSkgcGFkZGluZyAtPiAoeSwgeiAtPiBhKSBwcmVjaXNpb24gLT4geCA9XG4gIGZ1biBrIG8gZm10IHBhZCBwcmVjIC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gICAgfCBOb19wYWRkaW5nICAgLCBOb19wcmVjaXNpb24gICAgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KVxuICAgIHwgTm9fcGFkZGluZyAgICwgTGl0X3ByZWNpc2lvbiBfIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdClcbiAgICB8IE5vX3BhZGRpbmcgICAsIEFyZ19wcmVjaXNpb24gICAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KSlcbiAgICB8IExpdF9wYWRkaW5nIF8sIE5vX3ByZWNpc2lvbiAgICAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBMaXRfcGFkZGluZyBfLCBMaXRfcHJlY2lzaW9uIF8gLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KVxuICAgIHwgTGl0X3BhZGRpbmcgXywgQXJnX3ByZWNpc2lvbiAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgQXJnX3BhZGRpbmcgXywgTm9fcHJlY2lzaW9uICAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgQXJnX3BhZGRpbmcgXywgTGl0X3ByZWNpc2lvbiBfIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgQXJnX3BhZGRpbmcgXywgQXJnX3ByZWNpc2lvbiAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KSkpXG5hbmQgZm5fb2ZfY3VzdG9tX2FyaXR5IDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgc3RhdGUuXG4gIChzdGF0ZSAtPiBmKSAtPlxuICBzdGF0ZSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IChhLCB4LCB5KSBjdXN0b21fYXJpdHkgLT4geSA9XG4gIGZ1biBrIG8gZm10IC0+IGZ1bmN0aW9uXG4gICAgfCBDdXN0b21femVybyAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIGZtdFxuICAgIHwgQ3VzdG9tX3N1Y2MgYXJpdHkgLT5cbiAgICAgICAgY29uc3QgKGZuX29mX2N1c3RvbV9hcml0eSBrIG8gZm10IGFyaXR5KVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBDb250aW51YXRpb25zIGZvciBtYWtlX3ByaW50ZiAqKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGFuIG91dHB1dF9zdHJlYW0uICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIG1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBvdXRwdXRfYWNjIG8gYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGZtdGluZ19saXQpIC0+XG4gICAgbGV0IHMgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gcztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gXCJAe1wiOyBvdXRwdXRfYWNjIG8gYWNjJztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gXCJAW1wiOyBvdXRwdXRfYWNjIG8gYWNjJztcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gc1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfY2hhciBvIGNcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gb3V0cHV0X2FjYyBvIHA7IGYgb1xuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBvdXRwdXRfYWNjIG8gcDsgZmx1c2ggb1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBvdXRwdXRfYWNjIG8gcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGEgYnVmZmVyLiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBtYWtlX3ByaW50Zi4gKilcbmxldCByZWMgYnVmcHV0X2FjYyBiIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmbXRpbmdfbGl0KSAtPlxuICAgIGxldCBzID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQgaW5cbiAgICBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAe1wiOyBidWZwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIFwiQFtcIjsgYnVmcHV0X2FjYyBiIGFjYyc7XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gYnVmcHV0X2FjYyBiIHA7IGYgYlxuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBidWZwdXRfYWNjIGIgcDtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gYnVmcHV0X2FjYyBiIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhIGJ1ZmZlci4gKilcbigqIERpZmZlciBmcm9tIGJ1ZnB1dF9hY2MgYnkgdGhlIGludGVycHJldGF0aW9uIG9mICVhIGFuZCAldC4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgbWFrZV9wcmludGYuICopXG5sZXQgcmVjIHN0cnB1dF9hY2MgYiBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZm10aW5nX2xpdCkgLT5cbiAgICBsZXQgcyA9IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIFwiQHtcIjsgc3RycHV0X2FjYyBiIGFjYyc7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIkBbXCI7IHN0cnB1dF9hY2MgYiBhY2MnO1xuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgc1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIChmICgpKVxuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBzdHJwdXRfYWNjIGIgcDtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gc3RycHV0X2FjYyBiIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRXJyb3IgbWFuYWdlbWVudCAqKVxuXG4oKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIHByZXR0eS1wcmludGVkIGVycm9yIG1lc3NhZ2UuICopXG5sZXQgZmFpbHdpdGhfbWVzc2FnZSAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDI1NiBpblxuICBsZXQgayBhY2MgPSBzdHJwdXRfYWNjIGJ1ZiBhY2M7IGZhaWx3aXRoIChCdWZmZXIuY29udGVudHMgYnVmKSBpblxuICBtYWtlX3ByaW50ZiBrIEVuZF9vZl9hY2MgZm10XG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0dGluZyB0b29scyAqKVxuXG4oKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGFuIG9wZW4gYmxvY2sgZGVzY3JpcHRpb24gKGluZGVudCwgYmxvY2tfdHlwZSkgKilcbmxldCBvcGVuX2JveF9vZl9zdHJpbmcgc3RyID1cbiAgaWYgc3RyID0gXCJcIiB0aGVuICgwLCBQcF9ib3gpIGVsc2VcbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBsZXQgaW52YWxpZF9ib3ggKCkgPSBmYWlsd2l0aF9tZXNzYWdlIFwiaW52YWxpZCBib3ggZGVzY3JpcHRpb24gJVNcIiBzdHIgaW5cbiAgICBsZXQgcmVjIHBhcnNlX3NwYWNlcyBpID1cbiAgICAgIGlmIGkgPSBsZW4gdGhlbiBpIGVsc2VcbiAgICAgICAgbWF0Y2ggc3RyLltpXSB3aXRoXG4gICAgICAgIHwgJyAnIHwgJ1xcdCcgLT4gcGFyc2Vfc3BhY2VzIChpICsgMSlcbiAgICAgICAgfCBfIC0+IGlcbiAgICBhbmQgcGFyc2VfbHdvcmQgaSBqID1cbiAgICAgIGlmIGogPSBsZW4gdGhlbiBqIGVsc2VcbiAgICAgICAgbWF0Y2ggc3RyLltqXSB3aXRoXG4gICAgICAgIHwgJ2EnIC4uICd6JyAtPiBwYXJzZV9sd29yZCBpIChqICsgMSlcbiAgICAgICAgfCBfIC0+IGpcbiAgICBhbmQgcGFyc2VfaW50IGkgaiA9XG4gICAgICBpZiBqID0gbGVuIHRoZW4gaiBlbHNlXG4gICAgICAgIG1hdGNoIHN0ci5bal0gd2l0aFxuICAgICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT4gcGFyc2VfaW50IGkgKGogKyAxKVxuICAgICAgICB8IF8gLT4gaiBpblxuICAgIGxldCB3c3RhcnQgPSBwYXJzZV9zcGFjZXMgMCBpblxuICAgIGxldCB3ZW5kID0gcGFyc2VfbHdvcmQgd3N0YXJ0IHdzdGFydCBpblxuICAgIGxldCBib3hfbmFtZSA9IFN0cmluZy5zdWIgc3RyIHdzdGFydCAod2VuZCAtIHdzdGFydCkgaW5cbiAgICBsZXQgbnN0YXJ0ID0gcGFyc2Vfc3BhY2VzIHdlbmQgaW5cbiAgICBsZXQgbmVuZCA9IHBhcnNlX2ludCBuc3RhcnQgbnN0YXJ0IGluXG4gICAgbGV0IGluZGVudCA9XG4gICAgICBpZiBuc3RhcnQgPSBuZW5kIHRoZW4gMCBlbHNlXG4gICAgICAgIHRyeSBpbnRfb2Zfc3RyaW5nIChTdHJpbmcuc3ViIHN0ciBuc3RhcnQgKG5lbmQgLSBuc3RhcnQpKVxuICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPiBpbnZhbGlkX2JveCAoKSBpblxuICAgIGxldCBleHBfZW5kID0gcGFyc2Vfc3BhY2VzIG5lbmQgaW5cbiAgICBpZiBleHBfZW5kIDw+IGxlbiB0aGVuIGludmFsaWRfYm94ICgpO1xuICAgIGxldCBib3hfdHlwZSA9IG1hdGNoIGJveF9uYW1lIHdpdGhcbiAgICAgIHwgXCJcIiB8IFwiYlwiIC0+IFBwX2JveFxuICAgICAgfCBcImhcIiAgICAgIC0+IFBwX2hib3hcbiAgICAgIHwgXCJ2XCIgICAgICAtPiBQcF92Ym94XG4gICAgICB8IFwiaHZcIiAgICAgLT4gUHBfaHZib3hcbiAgICAgIHwgXCJob3ZcIiAgICAtPiBQcF9ob3Zib3hcbiAgICAgIHwgXyAgICAgICAgLT4gaW52YWxpZF9ib3ggKCkgaW5cbiAgICAoaW5kZW50LCBib3hfdHlwZSlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBQYXJzaW5nIHRvb2xzICopXG5cbigqIENyZWF0ZSBhIHBhZGRpbmdfZm10X2ViYiBmcm9tIGEgcGFkZGluZyBhbmQgYSBmb3JtYXQuICopXG4oKiBDb3B5IHRoZSBwYWRkaW5nIHRvIGRpc2pvaW4gdGhlIHR5cGUgcGFyYW1ldGVycyBvZiBhcmd1bWVudCBhbmQgcmVzdWx0LiAqKVxubGV0IG1ha2VfcGFkZGluZ19mbXRfZWJiIDogdHlwZSB4IHkgLlxuICAgICh4LCB5KSBwYWRkaW5nIC0+IChfLCBfLCBfLCBfLCBfLCBfKSBmbXQgLT5cbiAgICAgIChfLCBfLCBfLCBfLCBfKSBwYWRkaW5nX2ZtdF9lYmIgPVxuZnVuIHBhZCBmbXQgLT4gbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nICAgICAgICAgLT4gUGFkZGluZ19mbXRfRUJCIChOb19wYWRkaW5nLCBmbXQpXG4gIHwgTGl0X3BhZGRpbmcgKHMsIHcpIC0+IFBhZGRpbmdfZm10X0VCQiAoTGl0X3BhZGRpbmcgKHMsIHcpLCBmbXQpXG4gIHwgQXJnX3BhZGRpbmcgcyAgICAgIC0+IFBhZGRpbmdfZm10X0VCQiAoQXJnX3BhZGRpbmcgcywgZm10KVxuXG4oKiBDcmVhdGUgYSBwcmVjaXNpb25fZm10X2ViYiBmcm9tIGEgcHJlY2lzaW9uIGFuZCBhIGZvcm1hdC4gKilcbigqIENvcHkgdGhlIHByZWNpc2lvbiB0byBkaXNqb2luIHRoZSB0eXBlIHBhcmFtZXRlcnMgb2YgYXJndW1lbnQgYW5kIHJlc3VsdC4gKilcbmxldCBtYWtlX3ByZWNpc2lvbl9mbXRfZWJiIDogdHlwZSB4IHkgLlxuICAgICh4LCB5KSBwcmVjaXNpb24gLT4gKF8sIF8sIF8sIF8sIF8sIF8pIGZtdCAtPlxuICAgICAgKF8sIF8sIF8sIF8sIF8pIHByZWNpc2lvbl9mbXRfZWJiID1cbmZ1biBwcmVjIGZtdCAtPiBtYXRjaCBwcmVjIHdpdGhcbiAgfCBOb19wcmVjaXNpb24gICAgLT4gUHJlY2lzaW9uX2ZtdF9FQkIgKE5vX3ByZWNpc2lvbiwgZm10KVxuICB8IExpdF9wcmVjaXNpb24gcCAtPiBQcmVjaXNpb25fZm10X0VCQiAoTGl0X3ByZWNpc2lvbiBwLCBmbXQpXG4gIHwgQXJnX3ByZWNpc2lvbiAgIC0+IFByZWNpc2lvbl9mbXRfRUJCIChBcmdfcHJlY2lzaW9uLCBmbXQpXG5cbigqIENyZWF0ZSBhIHBhZHByZWNfZm10X2ViYiBmcm9tIGEgcGFkZGluZywgYSBwcmVjaXNpb24gYW5kIGEgZm9ybWF0LiAqKVxuKCogQ29weSB0aGUgcGFkZGluZyBhbmQgdGhlIHByZWNpc2lvbiB0byBkaXNqb2luIHR5cGUgcGFyYW1ldGVycyBvZiBhcmd1bWVudHNcbiAgIGFuZCByZXN1bHQuICopXG5sZXQgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgOiB0eXBlIHggeSB6IHQgLlxuICAgICh4LCB5KSBwYWRkaW5nIC0+ICh6LCB0KSBwcmVjaXNpb24gLT5cbiAgICAoXywgXywgXywgXywgXywgXykgZm10IC0+XG4gICAgKF8sIF8sIF8sIF8sIF8pIHBhZHByZWNfZm10X2ViYiA9XG5mdW4gcGFkIHByZWMgZm10IC0+XG4gIGxldCBQcmVjaXNpb25fZm10X0VCQiAocHJlYywgZm10JykgPSBtYWtlX3ByZWNpc2lvbl9mbXRfZWJiIHByZWMgZm10IGluXG4gIG1hdGNoIHBhZCB3aXRoXG4gIHwgTm9fcGFkZGluZyAgICAgICAgIC0+IFBhZHByZWNfZm10X0VCQiAoTm9fcGFkZGluZywgcHJlYywgZm10JylcbiAgfCBMaXRfcGFkZGluZyAocywgdykgLT4gUGFkcHJlY19mbXRfRUJCIChMaXRfcGFkZGluZyAocywgdyksIHByZWMsIGZtdCcpXG4gIHwgQXJnX3BhZGRpbmcgcyAgICAgIC0+IFBhZHByZWNfZm10X0VCQiAoQXJnX3BhZGRpbmcgcywgcHJlYywgZm10JylcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHBhcnNpbmcgKilcblxuKCogUGFyc2UgYSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgZm9ybWF0IGFuZCBjcmVhdGUgYSBmbXRfZWJiLiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIGluIGNhc2Ugb2YgaW52YWxpZCBmb3JtYXQuICopXG5sZXQgZm10X2ViYl9vZl9zdHJpbmcgP2xlZ2FjeV9iZWhhdmlvciBzdHIgPVxuICAoKiBQYXJhbWV0ZXJzIG5hbWluZyBjb252ZW50aW9uOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBsaXRfc3RhcnQ6IHN0YXJ0IG9mIHRoZSBsaXRlcmFsIHNlcXVlbmNlLiAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHN0cl9pbmQ6IGN1cnJlbnQgaW5kZXggaW4gdGhlIHN0cmluZy4gICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gZW5kX2luZDogZW5kIG9mIHRoZSBjdXJyZW50IChzdWItKWZvcm1hdC4gICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBwY3RfaW5kOiBpbmRleCBvZiB0aGUgJyUnIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICAgICAgKilcbiAgKCogICAtIHplcm86ICBpcyB0aGUgJzAnIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gbWludXM6IGlzIHRoZSAnLScgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBwbHVzOiAgaXMgdGhlICcrJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIGhhc2g6ICBpcyB0aGUgJyMnIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gc3BhY2U6IGlzIHRoZSAnICcgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBpZ246ICAgaXMgdGhlICdfJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIHBhZDogcGFkZGluZyBvZiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gcHJlYzogcHJlY2lzaW9uIG9mIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBzeW1iOiBjaGFyIHJlcHJlc2VudGluZyB0aGUgY29udmVyc2lvbiAoJ2MnLCAncycsICdkJywgLi4uKS4gKilcbiAgKCogICAtIGNoYXJfc2V0OiBzZXQgb2YgY2hhcmFjdGVycyBhcyBiaXRtYXAgKHNlZSBzY2FuZiAlWy4uLl0pLiAgICAqKVxuXG4gIGxldCBsZWdhY3lfYmVoYXZpb3IgPSBtYXRjaCBsZWdhY3lfYmVoYXZpb3Igd2l0aFxuICAgIHwgU29tZSBmbGFnIC0+IGZsYWdcbiAgICB8IE5vbmUgLT4gdHJ1ZVxuICAoKiAgV2hlbiB0aGlzIGZsYWcgaXMgZW5hYmxlZCwgdGhlIGZvcm1hdCBwYXJzZXIgdHJpZXMgdG8gYmVoYXZlIGFzXG4gICAgICB0aGUgPDQuMDIgaW1wbGVtZW50YXRpb25zLCBpbiBwYXJ0aWN1bGFyIGl0IGlnbm9yZXMgbW9zdCBiZW5pZ25cbiAgICAgIG5vbnNlbnNpY2FsIGZvcm1hdHMuIFdoZW4gdGhlIGZsYWcgaXMgZGlzYWJsZWQsIGl0IHdpbGwgcmVqZWN0IGFueVxuICAgICAgZm9ybWF0IHRoYXQgaXMgbm90IGFjY2VwdGVkIGJ5IHRoZSBzcGVjaWZpY2F0aW9uLlxuXG4gICAgICBBIHR5cGljYWwgZXhhbXBsZSB3b3VsZCBiZSBcIiUrIGRcIjogc3BlY2lmeWluZyBib3RoICcrJyAoaWYgdGhlXG4gICAgICBudW1iZXIgaXMgcG9zaXRpdmUsIHBhZCB3aXRoIGEgJysnIHRvIGdldCB0aGUgc2FtZSB3aWR0aCBhc1xuICAgICAgbmVnYXRpdmUgbnVtYmVycykgYW5kICcgJyAoaWYgdGhlIG51bWJlciBpcyBwb3NpdGl2ZSwgcGFkIHdpdGhcbiAgICAgIGEgc3BhY2UpIGRvZXMgbm90IG1ha2Ugc2Vuc2UsIGJ1dCB0aGUgbGVnYWN5ICg8IDQuMDIpXG4gICAgICBpbXBsZW1lbnRhdGlvbiB3YXMgaGFwcHkgdG8ganVzdCBpZ25vcmUgdGhlIHNwYWNlLlxuICAqKVxuICBpblxuXG4gICgqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgZnJpZW5kbHkgZXJyb3IgbWVzc2FnZS4gKilcbiAgbGV0IGludmFsaWRfZm9ybWF0X21lc3NhZ2Ugc3RyX2luZCBtc2cgPVxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsICVzXCJcbiAgICAgIHN0ciBzdHJfaW5kIG1zZ1xuICBpblxuXG4gICgqIFVzZWQgd2hlbiB0aGUgZW5kIG9mIHRoZSBmb3JtYXQgKG9yIHRoZSBjdXJyZW50IHN1Yi1mb3JtYXQpIHdhcyBlbmNvdW50ZXJlZFxuICAgICAgdW5leHBlY3RlZGx5LiAqKVxuICBsZXQgdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQgPVxuICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2UgZW5kX2luZFxuICAgICAgXCJ1bmV4cGVjdGVkIGVuZCBvZiBmb3JtYXRcIlxuICBpblxuXG4gICgqIFVzZWQgZm9yICUwYzogbm8gb3RoZXIgd2lkdGhzIGFyZSBpbXBsZW1lbnRlZCAqKVxuICBsZXQgaW52YWxpZF9ub25udWxsX2NoYXJfd2lkdGggc3RyX2luZCA9XG4gICAgaW52YWxpZF9mb3JtYXRfbWVzc2FnZSBzdHJfaW5kXG4gICAgICBcIm5vbi16ZXJvIHdpZHRocyBhcmUgdW5zdXBwb3J0ZWQgZm9yICVjIGNvbnZlcnNpb25zXCJcbiAgaW5cbiAgKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBmcmllbmRseSBlcnJvciBtZXNzYWdlIGFib3V0IGFuIG9wdGlvbiBkZXBlbmRlbmN5XG4gICAgIHByb2JsZW0uICopXG4gIGxldCBpbnZhbGlkX2Zvcm1hdF93aXRob3V0IHN0cl9pbmQgYyBzID1cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCAnJWMnIHdpdGhvdXQgJXNcIlxuICAgICAgc3RyIHN0cl9pbmQgYyBzXG4gIGluXG5cbiAgKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBmcmllbmRseSBlcnJvciBtZXNzYWdlIGFib3V0IGFuIHVuZXhwZWN0ZWRcbiAgICAgY2hhcmFjdGVyLiAqKVxuICBsZXQgZXhwZWN0ZWRfY2hhcmFjdGVyIHN0cl9pbmQgZXhwZWN0ZWQgcmVhZCA9XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCAlcyBleHBlY3RlZCwgcmVhZCAlQ1wiXG4gICAgICBzdHIgc3RyX2luZCBleHBlY3RlZCByZWFkXG4gIGluXG5cbiAgKCogUGFyc2UgdGhlIHN0cmluZyBmcm9tIGJlZ19pbmQgKGluY2x1ZGVkKSB0byBlbmRfaW5kIChleGNsdWRlZCkuICopXG4gIGxldCByZWMgcGFyc2UgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gYmVnX2luZCBlbmRfaW5kIC0+IHBhcnNlX2xpdGVyYWwgYmVnX2luZCBiZWdfaW5kIGVuZF9pbmRcblxuICAoKiBSZWFkIGxpdGVyYWwgY2hhcmFjdGVycyB1cCB0byAnJScgb3IgJ0AnIHNwZWNpYWwgY2hhcmFjdGVycy4gKilcbiAgYW5kIHBhcnNlX2xpdGVyYWwgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIGxpdF9zdGFydCBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIGFkZF9saXRlcmFsIGxpdF9zdGFydCBzdHJfaW5kIEVuZF9vZl9mb3JtYXQgZWxzZVxuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICclJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlX2Zvcm1hdCBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgICAgYWRkX2xpdGVyYWwgbGl0X3N0YXJ0IHN0cl9pbmQgZm10X3Jlc3RcbiAgICAgIHwgJ0AnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2VfYWZ0ZXJfYXQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIGFkZF9saXRlcmFsIGxpdF9zdGFydCBzdHJfaW5kIGZtdF9yZXN0XG4gICAgICB8IF8gLT5cbiAgICAgICAgcGFyc2VfbGl0ZXJhbCBsaXRfc3RhcnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG5cbiAgKCogUGFyc2UgYSBmb3JtYXQgYWZ0ZXIgJyUnICopXG4gIGFuZCBwYXJzZV9mb3JtYXQgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBlbmRfaW5kIC0+IHBhcnNlX2lnbiBwY3RfaW5kIChwY3RfaW5kICsgMSkgZW5kX2luZFxuXG4gIGFuZCBwYXJzZV9pZ24gOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ18nIC0+IHBhcnNlX2ZsYWdzIHBjdF9pbmQgKHN0cl9pbmQrMSkgZW5kX2luZCB0cnVlXG4gICAgICB8IF8gLT4gcGFyc2VfZmxhZ3MgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgZmFsc2VcblxuICBhbmQgcGFyc2VfZmxhZ3MgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmJcbiAgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgaWduIC0+XG4gICAgbGV0IHplcm8gPSByZWYgZmFsc2UgYW5kIG1pbnVzID0gcmVmIGZhbHNlXG4gICAgYW5kIHBsdXMgPSByZWYgZmFsc2UgYW5kIHNwYWNlID0gcmVmIGZhbHNlXG4gICAgYW5kIGhhc2ggPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgc2V0X2ZsYWcgc3RyX2luZCBmbGFnID1cbiAgICAgICgqIGluIGxlZ2FjeSBtb2RlLCBkdXBsaWNhdGUgZmxhZ3MgYXJlIGFjY2VwdGVkICopXG4gICAgICBpZiAhZmxhZyAmJiBub3QgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIGR1cGxpY2F0ZSBmbGFnICVDXCJcbiAgICAgICAgICBzdHIgc3RyX2luZCBzdHIuW3N0cl9pbmRdO1xuICAgICAgZmxhZyA6PSB0cnVlO1xuICAgIGluXG4gICAgbGV0IHJlYyByZWFkX2ZsYWdzIHN0cl9pbmQgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIGJlZ2luIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnMCcgLT4gc2V0X2ZsYWcgc3RyX2luZCB6ZXJvOyAgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8ICctJyAtPiBzZXRfZmxhZyBzdHJfaW5kIG1pbnVzOyByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgJysnIC0+IHNldF9mbGFnIHN0cl9pbmQgcGx1czsgIHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCAnIycgLT4gc2V0X2ZsYWcgc3RyX2luZCBoYXNoOyByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgJyAnIC0+IHNldF9mbGFnIHN0cl9pbmQgc3BhY2U7IHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCBfIC0+XG4gICAgICAgIHBhcnNlX3BhZGRpbmcgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmRcbiAgICAgICAgICAhemVybyAhbWludXMgIXBsdXMgIWhhc2ggIXNwYWNlIGlnblxuICAgICAgZW5kXG4gICAgaW5cbiAgICByZWFkX2ZsYWdzIHN0cl9pbmRcblxuICAoKiBUcnkgdG8gcmVhZCBhIGRpZ2l0YWwgb3IgYSAnKicgcGFkZGluZy4gKilcbiAgYW5kIHBhcnNlX3BhZGRpbmcgOiB0eXBlIGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCB6ZXJvIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ24gLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIGxldCBwYWR0eSA9IG1hdGNoIHplcm8sIG1pbnVzIHdpdGhcbiAgICAgIHwgZmFsc2UsIGZhbHNlIC0+IFJpZ2h0XG4gICAgICB8IGZhbHNlLCB0cnVlICAtPiBMZWZ0XG4gICAgICB8ICB0cnVlLCBmYWxzZSAtPiBaZXJvc1xuICAgICAgfCAgdHJ1ZSwgdHJ1ZSAgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gTGVmdFxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnLScgXCIwXCIgaW5cbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgLT5cbiAgICAgIGxldCBuZXdfaW5kLCB3aWR0aCA9IHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCAwIGluXG4gICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgbmV3X2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgKExpdF9wYWRkaW5nIChwYWR0eSwgd2lkdGgpKVxuICAgIHwgJyonIC0+XG4gICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZVxuICAgICAgICBpZ24gKEFyZ19wYWRkaW5nIHBhZHR5KVxuICAgIHwgXyAtPlxuICAgICAgYmVnaW4gbWF0Y2ggcGFkdHkgd2l0aFxuICAgICAgfCBMZWZ0ICAtPlxuICAgICAgICBpZiBub3QgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgICBpbnZhbGlkX2Zvcm1hdF93aXRob3V0IChzdHJfaW5kIC0gMSkgJy0nIFwicGFkZGluZ1wiO1xuICAgICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICBOb19wYWRkaW5nXG4gICAgICB8IFplcm9zIC0+XG4gICAgICAgICAoKiBhICcwJyBwYWRkaW5nIGluZGljYXRpb24gbm90IGZvbGxvd2VkIGJ5IGFueXRoaW5nIHNob3VsZFxuICAgICAgICAgICBiZSBpbnRlcnByZXRlZCBhcyBhIFJpZ2h0IHBhZGRpbmcgb2Ygd2lkdGggMC4gVGhpcyBpcyB1c2VkXG4gICAgICAgICAgIGJ5IHNjYW5uaW5nIGNvbnZlcnNpb25zICUwcyBhbmQgJTBjICopXG4gICAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAgIChMaXRfcGFkZGluZyAoUmlnaHQsIDApKVxuICAgICAgfCBSaWdodCAtPlxuICAgICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICBOb19wYWRkaW5nXG4gICAgICBlbmRcblxuICAoKiBJcyBwcmVjaXNpb24gZGVmaW5lZD8gKilcbiAgYW5kIHBhcnNlX2FmdGVyX3BhZGRpbmcgOiB0eXBlIHggZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoeCwgXykgcGFkZGluZyAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnLicgLT5cbiAgICAgIHBhcnNlX3ByZWNpc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgIHBhZFxuICAgIHwgc3ltYiAtPlxuICAgICAgcGFyc2VfY29udmVyc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZFxuICAgICAgICBOb19wcmVjaXNpb24gcGFkIHN5bWJcblxuICAoKiBSZWFkIHRoZSBkaWdpdGFsIG9yICcqJyBwcmVjaXNpb24uICopXG4gIGFuZCBwYXJzZV9wcmVjaXNpb24gOiB0eXBlIHggZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoeCwgXykgcGFkZGluZyAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbGV0IHBhcnNlX2xpdGVyYWwgbWludXMgc3RyX2luZCA9XG4gICAgICBsZXQgbmV3X2luZCwgcHJlYyA9IHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCAwIGluXG4gICAgICBwYXJzZV9hZnRlcl9wcmVjaXNpb24gcGN0X2luZCBuZXdfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICBwYWQgKExpdF9wcmVjaXNpb24gcHJlYykgaW5cbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgLT4gcGFyc2VfbGl0ZXJhbCBtaW51cyBzdHJfaW5kXG4gICAgfCAoJysnIHwgJy0nKSBhcyBzeW1iIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+XG4gICAgICAoKiBMZWdhY3kgbW9kZSB3b3VsZCBhY2NlcHQgYW5kIGlnbm9yZSAnKycgb3IgJy0nIGJlZm9yZSB0aGVcbiAgICAgICAgIGludGVnZXIgZGVzY3JpYmluZyB0aGUgZGVzaXJlZCBwcmVjaXNpb247IG5vdGUgdGhhdCB0aGlzXG4gICAgICAgICBjYW5ub3QgaGFwcGVuIGZvciBwYWRkaW5nIHdpZHRoLCBhcyAnKycgYW5kICctJyBhbHJlYWR5IGhhdmVcbiAgICAgICAgIGEgc2VtYW50aWNzIHRoZXJlLlxuXG4gICAgICAgICBUaGF0IHNhaWQsIHRoZSBpZGVhIChzdXBwb3J0ZWQgYnkgdGhpcyB0d2VhaykgdGhhdCB3aWR0aCBhbmRcbiAgICAgICAgIHByZWNpc2lvbiBsaXRlcmFscyBhcmUgXCJpbnRlZ2VyIGxpdGVyYWxzXCIgaW4gdGhlIE9DYW1sIHNlbnNlIGlzXG4gICAgICAgICBzdGlsbCBibGF0YW50bHkgd3JvbmcsIGFzIDEyM180NTYgb3IgMHhGRiBhcmUgcmVqZWN0ZWQuICopXG4gICAgICBwYXJzZV9saXRlcmFsIChtaW51cyB8fCBzeW1iID0gJy0nKSAoc3RyX2luZCArIDEpXG4gICAgfCAnKicgLT5cbiAgICAgIHBhcnNlX2FmdGVyX3ByZWNpc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2VcbiAgICAgICAgaWduIHBhZCBBcmdfcHJlY2lzaW9uXG4gICAgfCBfIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlblxuICAgICAgICAoKiBub3RlIHRoYXQgbGVnYWN5IGltcGxlbWVudGF0aW9uIGRpZCBub3QgaWdub3JlICcuJyB3aXRob3V0XG4gICAgICAgICAgIGEgbnVtYmVyIChhcyBpdCBkb2VzIGZvciBwYWRkaW5nIGluZGljYXRpb25zKSwgYnV0XG4gICAgICAgICAgIGludGVycHJldHMgaXQgYXMgJy4wJyAqKVxuICAgICAgICBwYXJzZV9hZnRlcl9wcmVjaXNpb24gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAgIHBhZCAoTGl0X3ByZWNpc2lvbiAwKVxuICAgICAgZWxzZVxuICAgICAgICBpbnZhbGlkX2Zvcm1hdF93aXRob3V0IChzdHJfaW5kIC0gMSkgJy4nIFwicHJlY2lzaW9uXCJcblxuICAoKiBUcnkgdG8gcmVhZCB0aGUgY29udmVyc2lvbi4gKilcbiAgYW5kIHBhcnNlX2FmdGVyX3ByZWNpc2lvbiA6IHR5cGUgeCB5IHogdCBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+XG4gICAgICAgICh4LCB5KSBwYWRkaW5nIC0+ICh6LCB0KSBwcmVjaXNpb24gLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWQgcHJlYyAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbGV0IHBhcnNlX2NvbnYgKHR5cGUgdSkgKHR5cGUgdikgKHBhZHByZWMgOiAodSwgdikgcGFkZGluZykgPVxuICAgICAgcGFyc2VfY29udmVyc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZFxuICAgICAgICBwcmVjIHBhZHByZWMgc3RyLltzdHJfaW5kXSBpblxuICAgICgqIGluIGxlZ2FjeSBtb2RlLCBzb21lIGZvcm1hdHMgKCVzIGFuZCAlUykgYWNjZXB0IGEgd2VpcmQgbWl4IG9mXG4gICAgICAgcGFkZGluZyBhbmQgcHJlY2lzaW9uLCB3aGljaCBpcyBtZXJnZWQgYXMgYSBzaW5nbGUgcGFkZGluZ1xuICAgICAgIGluZm9ybWF0aW9uLiBGb3IgZXhhbXBsZSwgaW4gJS4xMHMgdGhlIHByZWNpc2lvbiBpcyBpbXBsaWNpdGx5XG4gICAgICAgdW5kZXJzdG9vZCBhcyBwYWRkaW5nICUxMHMsIGJ1dCB0aGUgbGVmdC1wYWRkaW5nIGNvbXBvbmVudCBtYXlcbiAgICAgICBiZSBzcGVjaWZpZWQgZWl0aGVyIGFzIGEgbGVmdCBwYWRkaW5nIG9yIGEgbmVnYXRpdmUgcHJlY2lzaW9uOlxuICAgICAgICUtLjNzIGFuZCAlLi0zcyBhcmUgZXF1aXZhbGVudCB0byAlLTNzICopXG4gICAgbWF0Y2ggcGFkIHdpdGhcbiAgICB8IE5vX3BhZGRpbmcgLT4gKFxuICAgICAgbWF0Y2ggbWludXMsIHByZWMgd2l0aFxuICAgICAgICB8IF8sIE5vX3ByZWNpc2lvbiAtPiBwYXJzZV9jb252IE5vX3BhZGRpbmdcbiAgICAgICAgfCBmYWxzZSwgTGl0X3ByZWNpc2lvbiBuIC0+IHBhcnNlX2NvbnYgKExpdF9wYWRkaW5nIChSaWdodCwgbikpXG4gICAgICAgIHwgdHJ1ZSwgTGl0X3ByZWNpc2lvbiBuIC0+IHBhcnNlX2NvbnYgKExpdF9wYWRkaW5nIChMZWZ0LCBuKSlcbiAgICAgICAgfCBmYWxzZSwgQXJnX3ByZWNpc2lvbiAtPiBwYXJzZV9jb252IChBcmdfcGFkZGluZyBSaWdodClcbiAgICAgICAgfCB0cnVlLCBBcmdfcHJlY2lzaW9uIC0+IHBhcnNlX2NvbnYgKEFyZ19wYWRkaW5nIExlZnQpXG4gICAgKVxuICAgIHwgcGFkIC0+IHBhcnNlX2NvbnYgcGFkXG5cbiAgKCogQ2FzZSBhbmFseXNpcyBvbiBjb252ZXJzaW9uLiAqKVxuICBhbmQgcGFyc2VfY29udmVyc2lvbiA6IHR5cGUgeCB5IHogdCB1IHYgZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gKHgsIHkpIHBhZGRpbmcgLT5cbiAgICAgICAgKHosIHQpIHByZWNpc2lvbiAtPiAodSwgdikgcGFkZGluZyAtPiBjaGFyIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkIHByZWMgcGFkcHJlYyBzeW1iIC0+XG4gICAgKCogRmxhZ3MgdXNlZCB0byBjaGVjayBvcHRpb24gdXNhZ2VzL2NvbXBhdGliaWxpdGllcy4gKilcbiAgICBsZXQgcGx1c191c2VkICA9IHJlZiBmYWxzZSBhbmQgaGFzaF91c2VkID0gcmVmIGZhbHNlXG4gICAgYW5kIHNwYWNlX3VzZWQgPSByZWYgZmFsc2UgYW5kIGlnbl91c2VkICAgPSByZWYgZmFsc2VcbiAgICBhbmQgcGFkX3VzZWQgICA9IHJlZiBmYWxzZSBhbmQgcHJlY191c2VkICA9IHJlZiBmYWxzZSBpblxuXG4gICAgKCogQWNjZXNzIHRvIG9wdGlvbnMsIHVwZGF0ZSBmbGFncy4gKilcbiAgICBsZXQgZ2V0X3BsdXMgICAgKCkgPSBwbHVzX3VzZWQgIDo9IHRydWU7IHBsdXNcbiAgICBhbmQgZ2V0X2hhc2ggICAoKSA9IGhhc2hfdXNlZCA6PSB0cnVlOyBoYXNoXG4gICAgYW5kIGdldF9zcGFjZSAgICgpID0gc3BhY2VfdXNlZCA6PSB0cnVlOyBzcGFjZVxuICAgIGFuZCBnZXRfaWduICAgICAoKSA9IGlnbl91c2VkICAgOj0gdHJ1ZTsgaWduXG4gICAgYW5kIGdldF9wYWQgICAgICgpID0gcGFkX3VzZWQgICA6PSB0cnVlOyBwYWRcbiAgICBhbmQgZ2V0X3ByZWMgICAgKCkgPSBwcmVjX3VzZWQgIDo9IHRydWU7IHByZWNcbiAgICBhbmQgZ2V0X3BhZHByZWMgKCkgPSBwYWRfdXNlZCAgIDo9IHRydWU7IHBhZHByZWMgaW5cblxuICAgIGxldCBnZXRfaW50X3BhZCAoKSA6ICh4LHkpIHBhZGRpbmcgPVxuICAgICAgKCogJTUuM2QgaXMgYWNjZXB0ZWQgYW5kIG1lYW5pbmdmdWw6IHBhZCB0byBsZW5ndGggNSB3aXRoXG4gICAgICAgICBzcGFjZXMsIGJ1dCBmaXJzdCBwYWQgd2l0aCB6ZXJvcyB1cHRvIGxlbmd0aCAzICgwLXBhZGRpbmdcbiAgICAgICAgIGlzIHRoZSBpbnRlcnByZXRhdGlvbiBvZiBcInByZWNpc2lvblwiIGZvciBpbnRlZ2VyIGZvcm1hdHMpLlxuXG4gICAgICAgICAlMDUuM2QgaXMgcmVkdW5kYW50OiBwYWQgdG8gbGVuZ3RoIDUgKndpdGggemVyb3MqLCBidXRcbiAgICAgICAgIGZpcnN0IHBhZCB3aXRoIHplcm9zLi4uIFRvIGFkZCBpbnN1bHQgdG8gdGhlIGluanVyeSwgdGhlXG4gICAgICAgICBsZWdhY3kgaW1wbGVtZW50YXRpb24gaWdub3JlcyB0aGUgMC1wYWRkaW5nIGluZGljYXRpb24gYW5kXG4gICAgICAgICBkb2VzIHRoZSA1IHBhZGRpbmcgd2l0aCBzcGFjZXMgaW5zdGVhZC4gV2UgcmV1c2UgdGhpc1xuICAgICAgICAgaW50ZXJwcmV0YXRpb24gZm9yIGNvbXBhdGliaWxpdHksIGJ1dCBzdGF0aWNhbGx5IHJlamVjdCB0aGlzXG4gICAgICAgICBmb3JtYXQgd2hlbiB0aGUgbGVnYWN5IG1vZGUgaXMgZGlzYWJsZWQsIHRvIHByb3RlY3Qgc3RyaWN0XG4gICAgICAgICB1c2VycyBmcm9tIHRoaXMgY29ybmVyIGNhc2UuICopXG4gICAgICAgbWF0Y2ggZ2V0X3BhZCAoKSwgZ2V0X3ByZWMgKCkgd2l0aFxuICAgICAgICAgfCBwYWQsIE5vX3ByZWNpc2lvbiAtPiBwYWRcbiAgICAgICAgIHwgTm9fcGFkZGluZywgXyAgICAgLT4gTm9fcGFkZGluZ1xuICAgICAgICAgfCBMaXRfcGFkZGluZyAoWmVyb3MsIG4pLCBfIC0+XG4gICAgICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIExpdF9wYWRkaW5nIChSaWdodCwgbilcbiAgICAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJzAnIFwicHJlY2lzaW9uXCJcbiAgICAgICAgIHwgQXJnX3BhZGRpbmcgWmVyb3MsIF8gLT5cbiAgICAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gQXJnX3BhZGRpbmcgUmlnaHRcbiAgICAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJzAnIFwicHJlY2lzaW9uXCJcbiAgICAgICAgIHwgTGl0X3BhZGRpbmcgXyBhcyBwYWQsIF8gLT4gcGFkXG4gICAgICAgICB8IEFyZ19wYWRkaW5nIF8gYXMgcGFkLCBfIC0+IHBhZCBpblxuXG4gICAgKCogQ2hlY2sgdGhhdCBwYWR0eSA8PiBaZXJvcy4gKilcbiAgICBsZXQgY2hlY2tfbm9fMCBzeW1iICh0eXBlIGEgYikgKHBhZCA6IChhLCBiKSBwYWRkaW5nKSA6IChhLGIpIHBhZGRpbmcgPVxuICAgICAgbWF0Y2ggcGFkIHdpdGhcbiAgICAgIHwgTm9fcGFkZGluZyAtPiBwYWRcbiAgICAgIHwgTGl0X3BhZGRpbmcgKChMZWZ0IHwgUmlnaHQpLCBfKSAtPiBwYWRcbiAgICAgIHwgQXJnX3BhZGRpbmcgKExlZnQgfCBSaWdodCkgLT4gcGFkXG4gICAgICB8IExpdF9wYWRkaW5nIChaZXJvcywgd2lkdGgpIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIExpdF9wYWRkaW5nIChSaWdodCwgd2lkdGgpXG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCIwXCJcbiAgICAgIHwgQXJnX3BhZGRpbmcgWmVyb3MgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gQXJnX3BhZGRpbmcgUmlnaHRcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIjBcIlxuICAgIGluXG5cbiAgICAoKiBHZXQgcGFkZGluZyBhcyBhIHBhZF9vcHRpb24gKHNlZSBcIiVfXCIsIFwiJXtcIiwgXCIlKFwiIGFuZCBcIiVbXCIpLlxuICAgICAgIChubyBuZWVkIGZvciBsZWdhY3kgbW9kZSB0d2Vha2luZywgdGhvc2Ugd2VyZSByZWplY3RlZCBieSB0aGVcbiAgICAgICBsZWdhY3kgcGFyc2VyIGFzIHdlbGwpICopXG4gICAgbGV0IG9wdF9vZl9wYWQgYyAodHlwZSBhKSAodHlwZSBiKSAocGFkIDogKGEsIGIpIHBhZGRpbmcpID0gbWF0Y2ggcGFkIHdpdGhcbiAgICAgIHwgTm9fcGFkZGluZyAtPiBOb25lXG4gICAgICB8IExpdF9wYWRkaW5nIChSaWdodCwgd2lkdGgpIC0+IFNvbWUgd2lkdGhcbiAgICAgIHwgTGl0X3BhZGRpbmcgKFplcm9zLCB3aWR0aCkgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gU29tZSB3aWR0aFxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBjIFwiJzAnXCJcbiAgICAgIHwgTGl0X3BhZGRpbmcgKExlZnQsIHdpZHRoKSAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBTb21lIHdpZHRoXG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIGMgXCInLSdcIlxuICAgICAgfCBBcmdfcGFkZGluZyBfIC0+IGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBjIFwiJyonXCJcbiAgICBpblxuICAgIGxldCBnZXRfcGFkX29wdCBjID0gb3B0X29mX3BhZCBjIChnZXRfcGFkICgpKSBpblxuICAgIGxldCBnZXRfcGFkcHJlY19vcHQgYyA9IG9wdF9vZl9wYWQgYyAoZ2V0X3BhZHByZWMgKCkpIGluXG5cbiAgICAoKiBHZXQgcHJlY2lzaW9uIGFzIGEgcHJlY19vcHRpb24gKHNlZSBcIiVfZlwiKS5cbiAgICAgICAobm8gbmVlZCBmb3IgbGVnYWN5IG1vZGUgdHdlYWtpbmcsIHRob3NlIHdlcmUgcmVqZWN0ZWQgYnkgdGhlXG4gICAgICAgbGVnYWN5IHBhcnNlciBhcyB3ZWxsKSAqKVxuICAgIGxldCBnZXRfcHJlY19vcHQgKCkgPSBtYXRjaCBnZXRfcHJlYyAoKSB3aXRoXG4gICAgICB8IE5vX3ByZWNpc2lvbiAgICAgICAtPiBOb25lXG4gICAgICB8IExpdF9wcmVjaXNpb24gbmRlYyAtPiBTb21lIG5kZWNcbiAgICAgIHwgQXJnX3ByZWNpc2lvbiAgICAgIC0+IGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnXycgXCInKidcIlxuICAgIGluXG5cbiAgICBsZXQgZm10X3Jlc3VsdCA9IG1hdGNoIHN5bWIgd2l0aFxuICAgIHwgJywnIC0+XG4gICAgICBwYXJzZSBzdHJfaW5kIGVuZF9pbmRcbiAgICB8ICdjJyAtPlxuICAgICAgbGV0IGNoYXJfZm9ybWF0IGZtdF9yZXN0ID0gKCogJWMgKilcbiAgICAgICAgaWYgZ2V0X2lnbiAoKVxuICAgICAgICB0aGVuIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfY2hhciwgZm10X3Jlc3QpKVxuICAgICAgICBlbHNlIEZtdF9FQkIgKENoYXIgZm10X3Jlc3QpXG4gICAgICBpblxuICAgICAgbGV0IHNjYW5fZm9ybWF0IGZtdF9yZXN0ID0gKCogJTBjICopXG4gICAgICAgIGlmIGdldF9pZ24gKClcbiAgICAgICAgdGhlbiBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX3NjYW5fbmV4dF9jaGFyLCBmbXRfcmVzdCkpXG4gICAgICAgIGVsc2UgRm10X0VCQiAoU2Nhbl9uZXh0X2NoYXIgZm10X3Jlc3QpXG4gICAgICBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGJlZ2luIG1hdGNoIGdldF9wYWRfb3B0ICdjJyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBjaGFyX2Zvcm1hdCBmbXRfcmVzdFxuICAgICAgICB8IFNvbWUgMCAtPiBzY2FuX2Zvcm1hdCBmbXRfcmVzdFxuICAgICAgICB8IFNvbWUgX24gLT5cbiAgICAgICAgICAgaWYgbm90IGxlZ2FjeV9iZWhhdmlvclxuICAgICAgICAgICB0aGVuIGludmFsaWRfbm9ubnVsbF9jaGFyX3dpZHRoIHN0cl9pbmRcbiAgICAgICAgICAgZWxzZSAoKiBsZWdhY3kgaWdub3JlcyAlYyB3aWR0aHMgKikgY2hhcl9mb3JtYXQgZm10X3Jlc3RcbiAgICAgIGVuZFxuICAgIHwgJ0MnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfY2FtbF9jaGFyLGZtdF9yZXN0KSlcbiAgICAgIGVsc2UgRm10X0VCQiAoQ2FtbF9jaGFyIGZtdF9yZXN0KVxuICAgIHwgJ3MnIC0+XG4gICAgICBsZXQgcGFkID0gY2hlY2tfbm9fMCBzeW1iIChnZXRfcGFkcHJlYyAoKSkgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX3N0cmluZyAoZ2V0X3BhZHByZWNfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkZGluZ19mbXRfRUJCIChwYWQnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZGRpbmdfZm10X2ViYiBwYWQgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoU3RyaW5nIChwYWQnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ1MnIC0+XG4gICAgICBsZXQgcGFkID0gY2hlY2tfbm9fMCBzeW1iIChnZXRfcGFkcHJlYyAoKSkgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2NhbWxfc3RyaW5nIChnZXRfcGFkcHJlY19vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRkaW5nX2ZtdF9FQkIgKHBhZCcsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkZGluZ19mbXRfZWJiIHBhZCBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChDYW1sX3N0cmluZyAocGFkJywgZm10X3Jlc3QnKSlcbiAgICB8ICdkJyB8ICdpJyB8ICd4JyB8ICdYJyB8ICdvJyB8ICd1JyAtPlxuICAgICAgbGV0IGljb252ID0gY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgKGdldF9wbHVzICgpKSAoZ2V0X2hhc2ggKCkpXG4gICAgICAgIChnZXRfc3BhY2UgKCkpIHN5bWIgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2ludCAoaWNvbnYsIGdldF9wYWRfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9pbnRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEludCAoaWNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ04nIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgbGV0IGNvdW50ZXIgPSBUb2tlbl9jb3VudGVyIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgY291bnRlciBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdF9yZXN0KSlcbiAgICB8ICdsJyB8ICduJyB8ICdMJyB3aGVuIHN0cl9pbmQ9ZW5kX2luZCB8fCBub3QgKGlzX2ludF9iYXNlIHN0ci5bc3RyX2luZF0pIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgbGV0IGNvdW50ZXIgPSBjb3VudGVyX29mX2NoYXIgc3ltYiBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIGNvdW50ZXIgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXRfcmVzdCkpXG4gICAgfCAnbCcgLT5cbiAgICAgIGxldCBpY29udiA9XG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCAoc3RyX2luZCArIDEpIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKVxuICAgICAgICAgIChnZXRfc3BhY2UgKCkpIHN0ci5bc3RyX2luZF0gaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2ludDMyIChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoSW50MzIgKGljb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICduJyAtPlxuICAgICAgbGV0IGljb252ID1cbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIChzdHJfaW5kICsgMSkgKGdldF9wbHVzICgpKVxuICAgICAgICAgIChnZXRfaGFzaCAoKSkgKGdldF9zcGFjZSAoKSkgc3RyLltzdHJfaW5kXSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfbmF0aXZlaW50IChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoTmF0aXZlaW50IChpY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnTCcgLT5cbiAgICAgIGxldCBpY29udiA9XG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCAoc3RyX2luZCArIDEpIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKVxuICAgICAgICAgIChnZXRfc3BhY2UgKCkpIHN0ci5bc3RyX2luZF0gaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2ludDY0IChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoSW50NjQgKGljb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICdmJyB8ICdlJyB8ICdFJyB8ICdnJyB8ICdHJyB8ICdGJyB8ICdoJyB8ICdIJyAtPlxuICAgICAgbGV0IGZjb252ID1cbiAgICAgICAgY29tcHV0ZV9mbG9hdF9jb252IHBjdF9pbmQgc3RyX2luZFxuICAgICAgICAgIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKSAoZ2V0X3NwYWNlICgpKSBzeW1iIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9mbG9hdCAoZ2V0X3BhZF9vcHQgJ18nLCBnZXRfcHJlY19vcHQgKCkpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEZsb2F0IChmY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnYicgfCAnQicgLT5cbiAgICAgIGxldCBwYWQgPSBjaGVja19ub18wIHN5bWIgKGdldF9wYWRwcmVjICgpKSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfYm9vbCAoZ2V0X3BhZHByZWNfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkZGluZ19mbXRfRUJCIChwYWQnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZGRpbmdfZm10X2ViYiBwYWQgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoQm9vbCAocGFkJywgZm10X3Jlc3QnKSlcbiAgICB8ICdhJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKEFscGhhIGZtdF9yZXN0KVxuICAgIHwgJ3QnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoVGhldGEgZm10X3Jlc3QpXG4gICAgfCAncicgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW4gRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9yZWFkZXIsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2UgRm10X0VCQiAoUmVhZGVyIGZtdF9yZXN0KVxuICAgIHwgJyEnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoRmx1c2ggZm10X3Jlc3QpXG4gICAgfCAoJyUnIHwgJ0AnKSBhcyBjIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoQ2hhcl9saXRlcmFsIChjLCBmbXRfcmVzdCkpXG4gICAgfCAneycgLT5cbiAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgc3RyX2luZCBlbmRfaW5kICd9JyBpblxuICAgICAgbGV0IEZtdF9FQkIgc3ViX2ZtdCA9IHBhcnNlIHN0cl9pbmQgc3ViX2VuZCBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3ViX2VuZCArIDIpIGVuZF9pbmQgaW5cbiAgICAgIGxldCBzdWJfZm10dHkgPSBmbXR0eV9vZl9mbXQgc3ViX2ZtdCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9mb3JtYXRfYXJnIChnZXRfcGFkX29wdCAnXycsIHN1Yl9mbXR0eSkgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChGb3JtYXRfYXJnIChnZXRfcGFkX29wdCAneycsIHN1Yl9mbXR0eSwgZm10X3Jlc3QpKVxuICAgIHwgJygnIC0+XG4gICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIHN0cl9pbmQgZW5kX2luZCAnKScgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGluXG4gICAgICBsZXQgRm10X0VCQiBzdWJfZm10ID0gcGFyc2Ugc3RyX2luZCBzdWJfZW5kIGluXG4gICAgICBsZXQgc3ViX2ZtdHR5ID0gZm10dHlfb2ZfZm10IHN1Yl9mbXQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfZm9ybWF0X3N1YnN0IChnZXRfcGFkX29wdCAnXycsIHN1Yl9mbXR0eSkgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChGb3JtYXRfc3Vic3QgKGdldF9wYWRfb3B0ICcoJywgc3ViX2ZtdHR5LCBmbXRfcmVzdCkpXG4gICAgfCAnWycgLT5cbiAgICAgIGxldCBuZXh0X2luZCwgY2hhcl9zZXQgPSBwYXJzZV9jaGFyX3NldCBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgbmV4dF9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zY2FuX2NoYXJfc2V0IChnZXRfcGFkX29wdCAnXycsIGNoYXJfc2V0KSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKFNjYW5fY2hhcl9zZXQgKGdldF9wYWRfb3B0ICdbJywgY2hhcl9zZXQsIGZtdF9yZXN0KSlcbiAgICB8ICctJyB8ICcrJyB8ICcjJyB8ICcgJyB8ICdfJyAtPlxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBcXFxuICAgICAgICAgZmxhZyAlQyBpcyBvbmx5IGFsbG93ZWQgYWZ0ZXIgdGhlICclJScsIGJlZm9yZSBwYWRkaW5nIGFuZCBwcmVjaXNpb25cIlxuICAgICAgICBzdHIgcGN0X2luZCBzeW1iXG4gICAgfCBfIC0+XG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIFxcXG4gICAgICAgICBpbnZhbGlkIGNvbnZlcnNpb24gXFxcIiUlJWNcXFwiXCIgc3RyIChzdHJfaW5kIC0gMSkgc3ltYlxuICAgIGluXG4gICAgKCogQ2hlY2sgZm9yIHVudXNlZCBvcHRpb25zLCBhbmQgcmVqZWN0IHRoZW0gYXMgaW5jb21wYXRpYmxlLlxuXG4gICAgICAgU3VjaCBjaGVja3MgbmVlZCB0byBiZSBkaXNhYmxlZCBpbiBsZWdhY3kgbW9kZSwgYXMgdGhlIGxlZ2FjeVxuICAgICAgIHBhcnNlciBzaWxlbnRseSBpZ25vcmVkIGluY29tcGF0aWJsZSBmbGFncy4gKilcbiAgICBpZiBub3QgbGVnYWN5X2JlaGF2aW9yIHRoZW4gYmVnaW5cbiAgICBpZiBub3QgIXBsdXNfdXNlZCAmJiBwbHVzIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJysnXCI7XG4gICAgaWYgbm90ICFoYXNoX3VzZWQgJiYgaGFzaCB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicjJ1wiO1xuICAgIGlmIG5vdCAhc3BhY2VfdXNlZCAmJiBzcGFjZSB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicgJ1wiO1xuICAgIGlmIG5vdCAhcGFkX3VzZWQgICYmIFBhZGRpbmdfRUJCIHBhZCA8PiBQYWRkaW5nX0VCQiBOb19wYWRkaW5nIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiYHBhZGRpbmcnXCI7XG4gICAgaWYgbm90ICFwcmVjX3VzZWQgJiYgUHJlY2lzaW9uX0VCQiBwcmVjIDw+IFByZWNpc2lvbl9FQkIgTm9fcHJlY2lzaW9uIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAoaWYgaWduIHRoZW4gJ18nIGVsc2Ugc3ltYilcbiAgICAgICAgXCJgcHJlY2lzaW9uJ1wiO1xuICAgIGlmIGlnbiAmJiBwbHVzIHRoZW4gaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICdfJyBcIicrJ1wiO1xuICAgIGVuZDtcbiAgICAoKiB0aGlzIGxhc3QgdGVzdCBtdXN0IG5vdCBiZSBkaXNhYmxlZCBpbiBsZWdhY3kgbW9kZSxcbiAgICAgICBhcyBpZ25vcmluZyBpdCB3b3VsZCB0eXBpY2FsbHkgcmVzdWx0IGluIGEgZGlmZmVyZW50IHR5cGluZ1xuICAgICAgIHRoYW4gd2hhdCB0aGUgbGVnYWN5IHBhcnNlciB1c2VkICopXG4gICAgaWYgbm90ICFpZ25fdXNlZCAmJiBpZ24gdGhlblxuICAgICAgYmVnaW4gbWF0Y2ggc3ltYiB3aXRoXG4gICAgICAgICgqIGFyZ3VtZW50LWxlc3MgZm9ybWF0cyBjYW4gc2FmZWx5IGJlIGlnbm9yZWQgaW4gbGVnYWN5IG1vZGUgKilcbiAgICAgICAgfCAoJ0AnIHwgJyUnIHwgJyEnIHwgJywnKSB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPiAoKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIidfJ1wiXG4gICAgICBlbmQ7XG4gICAgZm10X3Jlc3VsdFxuXG4gICgqIFBhcnNlIGZvcm1hdHRpbmcgaW5mb3JtYXRpb24gKGFmdGVyICdAJykuICopXG4gIGFuZCBwYXJzZV9hZnRlcl9hdCA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIEZtdF9FQkIgKENoYXJfbGl0ZXJhbCAoJ0AnLCBFbmRfb2ZfZm9ybWF0KSlcbiAgICBlbHNlXG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ1snIC0+XG4gICAgICAgIHBhcnNlX3RhZyBmYWxzZSAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChDbG9zZV9ib3gsIGZtdF9yZXN0KSlcbiAgICAgIHwgJ3snIC0+XG4gICAgICAgIHBhcnNlX3RhZyB0cnVlIChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCAnfScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKENsb3NlX3RhZywgZm10X3Jlc3QpKVxuICAgICAgfCAnLCcgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEJyZWFrIChcIkAsXCIsIDAsIDApLCBmbXRfcmVzdCkpXG4gICAgICB8ICcgJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoQnJlYWsgKFwiQCBcIiwgMSwgMCksIGZtdF9yZXN0KSlcbiAgICAgIHwgJzsnIC0+XG4gICAgICAgIHBhcnNlX2dvb2RfYnJlYWsgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8ICc/JyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRkZsdXNoLCBmbXRfcmVzdCkpXG4gICAgICB8ICdcXG4nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChGb3JjZV9uZXdsaW5lLCBmbXRfcmVzdCkpXG4gICAgICB8ICcuJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRmx1c2hfbmV3bGluZSwgZm10X3Jlc3QpKVxuICAgICAgfCAnPCcgLT5cbiAgICAgICAgcGFyc2VfbWFnaWNfc2l6ZSAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgJ0AnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChFc2NhcGVkX2F0LCBmbXRfcmVzdCkpXG4gICAgICB8ICclJyB3aGVuIHN0cl9pbmQgKyAxIDwgZW5kX2luZCAmJiBzdHIuW3N0cl9pbmQgKyAxXSA9ICclJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMikgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRXNjYXBlZF9wZXJjZW50LCBmbXRfcmVzdCkpXG4gICAgICB8ICclJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChDaGFyX2xpdGVyYWwgKCdAJywgZm10X3Jlc3QpKVxuICAgICAgfCBjIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChTY2FuX2luZGljIGMsIGZtdF9yZXN0KSlcblxuICAoKiBUcnkgdG8gcmVhZCB0aGUgb3B0aW9uYWwgPG5hbWU+IGFmdGVyIFwiQHtcIiBvciBcIkBbXCIuICopXG4gIGFuZCBwYXJzZV90YWcgOiB0eXBlIGUgZiAuIGJvb2wgLT4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBpc19vcGVuX3RhZyBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICB0cnlcbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICc8JyAtPlxuICAgICAgICBsZXQgaW5kID0gU3RyaW5nLmluZGV4X2Zyb20gc3RyIChzdHJfaW5kICsgMSkgJz4nIGluXG4gICAgICAgIGlmIGluZCA+PSBlbmRfaW5kIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICBsZXQgc3ViX3N0ciA9IFN0cmluZy5zdWIgc3RyIHN0cl9pbmQgKGluZCAtIHN0cl9pbmQgKyAxKSBpblxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChpbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIGxldCBGbXRfRUJCIHN1Yl9mbXQgPSBwYXJzZSBzdHJfaW5kIChpbmQgKyAxKSBpblxuICAgICAgICBsZXQgc3ViX2Zvcm1hdCA9IEZvcm1hdCAoc3ViX2ZtdCwgc3ViX3N0cikgaW5cbiAgICAgICAgbGV0IGZvcm1hdHRpbmcgPVxuICAgICAgICAgIGlmIGlzX29wZW5fdGFnIHRoZW4gT3Blbl90YWcgc3ViX2Zvcm1hdCBlbHNlIE9wZW5fYm94IHN1Yl9mb3JtYXQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19nZW4gKGZvcm1hdHRpbmcsIGZtdF9yZXN0KSlcbiAgICAgIHwgXyAtPlxuICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBzdWJfZm9ybWF0ID0gRm9ybWF0IChFbmRfb2ZfZm9ybWF0LCBcIlwiKSBpblxuICAgICAgbGV0IGZvcm1hdHRpbmcgPVxuICAgICAgICBpZiBpc19vcGVuX3RhZyB0aGVuIE9wZW5fdGFnIHN1Yl9mb3JtYXQgZWxzZSBPcGVuX2JveCBzdWJfZm9ybWF0IGluXG4gICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2dlbiAoZm9ybWF0dGluZywgZm10X3Jlc3QpKVxuXG4gICgqIFRyeSB0byByZWFkIHRoZSBvcHRpb25hbCA8d2lkdGggb2Zmc2V0PiBhZnRlciBcIkA7XCIuICopXG4gIGFuZCBwYXJzZV9nb29kX2JyZWFrIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIGxldCBuZXh0X2luZCwgZm9ybWF0dGluZ19saXQgPVxuICAgICAgdHJ5XG4gICAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHx8IHN0ci5bc3RyX2luZF0gPD4gJzwnIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICBsZXQgc3RyX2luZF8xID0gcGFyc2Vfc3BhY2VzIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBtYXRjaCBzdHIuW3N0cl9pbmRfMV0gd2l0aFxuICAgICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT4gKFxuICAgICAgICAgIGxldCBzdHJfaW5kXzIsIHdpZHRoID0gcGFyc2VfaW50ZWdlciBzdHJfaW5kXzEgZW5kX2luZCBpblxuICAgICAgICAgICAgbGV0IHN0cl9pbmRfMyA9IHBhcnNlX3NwYWNlcyBzdHJfaW5kXzIgZW5kX2luZCBpblxuICAgICAgICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXzNdIHdpdGhcbiAgICAgICAgICAgICAgfCAnPicgLT5cbiAgICAgICAgICAgICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIChzdHJfaW5kLTIpIChzdHJfaW5kXzMtc3RyX2luZCszKSBpblxuICAgICAgICAgICAgICAgIHN0cl9pbmRfMyArIDEsIEJyZWFrIChzLCB3aWR0aCwgMClcbiAgICAgICAgICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+XG4gICAgICAgICAgICAgICAgbGV0IHN0cl9pbmRfNCwgb2Zmc2V0ID0gcGFyc2VfaW50ZWdlciBzdHJfaW5kXzMgZW5kX2luZCBpblxuICAgICAgICAgICAgICAgIGxldCBzdHJfaW5kXzUgPSBwYXJzZV9zcGFjZXMgc3RyX2luZF80IGVuZF9pbmQgaW5cbiAgICAgICAgICAgICAgICBpZiBzdHIuW3N0cl9pbmRfNV0gPD4gJz4nIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICAgICAgICAgIGxldCBzID0gU3RyaW5nLnN1YiBzdHIgKHN0cl9pbmQtMikgKHN0cl9pbmRfNS1zdHJfaW5kKzMpIGluXG4gICAgICAgICAgICAgICAgc3RyX2luZF81ICsgMSwgQnJlYWsgKHMsIHdpZHRoLCBvZmZzZXQpXG4gICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgKVxuICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB3aXRoIE5vdF9mb3VuZCB8IEZhaWx1cmUgXyAtPlxuICAgICAgICBzdHJfaW5kLCBCcmVhayAoXCJAO1wiLCAxLCAwKVxuICAgIGluXG4gICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBuZXh0X2luZCBlbmRfaW5kIGluXG4gICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCBmbXRfcmVzdCkpXG5cbiAgKCogUGFyc2UgdGhlIHNpemUgaW4gYSA8bj4uICopXG4gIGFuZCBwYXJzZV9tYWdpY19zaXplIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIG1hdGNoXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHN0cl9pbmRfMSA9IHBhcnNlX3NwYWNlcyBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXzFdIHdpdGhcbiAgICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+XG4gICAgICAgICAgbGV0IHN0cl9pbmRfMiwgc2l6ZSA9IHBhcnNlX2ludGVnZXIgc3RyX2luZF8xIGVuZF9pbmQgaW5cbiAgICAgICAgICBsZXQgc3RyX2luZF8zID0gcGFyc2Vfc3BhY2VzIHN0cl9pbmRfMiBlbmRfaW5kIGluXG4gICAgICAgICAgaWYgc3RyLltzdHJfaW5kXzNdIDw+ICc+JyB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIChzdHJfaW5kIC0gMikgKHN0cl9pbmRfMyAtIHN0cl9pbmQgKyAzKSBpblxuICAgICAgICAgIFNvbWUgKHN0cl9pbmRfMyArIDEsIE1hZ2ljX3NpemUgKHMsIHNpemUpKVxuICAgICAgICB8IF8gLT4gTm9uZVxuICAgICAgd2l0aCBOb3RfZm91bmQgfCBGYWlsdXJlIF8gLT5cbiAgICAgICAgTm9uZVxuICAgIHdpdGhcbiAgICB8IFNvbWUgKG5leHRfaW5kLCBmb3JtYXR0aW5nX2xpdCkgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgbmV4dF9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCBmbXRfcmVzdCkpXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKFNjYW5faW5kaWMgJzwnLCBmbXRfcmVzdCkpXG5cbiAgKCogUGFyc2UgYW5kIGNvbnN0cnVjdCBhIGNoYXIgc2V0LiAqKVxuICBhbmQgcGFyc2VfY2hhcl9zZXQgc3RyX2luZCBlbmRfaW5kID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuXG4gICAgbGV0IGNoYXJfc2V0ID0gY3JlYXRlX2NoYXJfc2V0ICgpIGluXG4gICAgbGV0IGFkZF9jaGFyIGMgPVxuICAgICAgYWRkX2luX2NoYXJfc2V0IGNoYXJfc2V0IGM7XG4gICAgaW5cbiAgICBsZXQgYWRkX3JhbmdlIGMgYycgPVxuICAgICAgZm9yIGkgPSBpbnRfb2ZfY2hhciBjIHRvIGludF9vZl9jaGFyIGMnIGRvXG4gICAgICAgIGFkZF9pbl9jaGFyX3NldCBjaGFyX3NldCAoY2hhcl9vZl9pbnQgaSk7XG4gICAgICBkb25lO1xuICAgIGluXG5cbiAgICBsZXQgZmFpbF9zaW5nbGVfcGVyY2VudCBzdHJfaW5kID1cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogJyUlJyBhbG9uZSBpcyBub3QgYWNjZXB0ZWQgaW4gY2hhcmFjdGVyIHNldHMsIFxcXG4gICAgICAgICB1c2UgJSUlJSBpbnN0ZWFkIGF0IHBvc2l0aW9uICVkLlwiIHN0ciBzdHJfaW5kXG4gICAgaW5cblxuICAgICgqIFBhcnNlIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgYSBjaGFyIHNldC4gKilcbiAgICBsZXQgcmVjIHBhcnNlX2NoYXJfc2V0X3N0YXJ0IHN0cl9pbmQgZW5kX2luZCA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbGV0IGMgPSBzdHIuW3N0cl9pbmRdIGluXG4gICAgICBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG5cbiAgICAoKiBQYXJzZSB0aGUgY29udGVudCBvZiBhIGNoYXIgc2V0IHVudGlsIHRoZSBmaXJzdCAnXScuICopXG4gICAgYW5kIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgc3RyX2luZCBlbmRfaW5kID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIHN0cl9pbmQgKyAxXG4gICAgICB8ICctJyAtPlxuICAgICAgICBhZGRfY2hhciAnLSc7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8IGMgLT5cbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciAoc3RyX2luZCArIDEpIGVuZF9pbmQgY1xuXG4gICAgKCogVGVzdCBmb3IgcmFuZ2UgaW4gY2hhciBzZXQuICopXG4gICAgYW5kIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgc3RyX2luZCBlbmRfaW5kIGMgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnXScgLT5cbiAgICAgICAgYWRkX2NoYXIgYztcbiAgICAgICAgc3RyX2luZCArIDFcbiAgICAgIHwgJy0nIC0+XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2FmdGVyX21pbnVzIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG4gICAgICB8ICgnJScgfCAnQCcpIGFzIGMnIHdoZW4gYyA9ICclJyAtPlxuICAgICAgICBhZGRfY2hhciBjJztcbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfY29udGVudCAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgYycgLT5cbiAgICAgICAgaWYgYyA9ICclJyB0aGVuIGZhaWxfc2luZ2xlX3BlcmNlbnQgc3RyX2luZDtcbiAgICAgICAgKCogbm90ZSB0aGF0ICdAJyBhbG9uZSBpcyBhY2NlcHRlZCwgYXMgZG9uZSBieSB0aGUgbGVnYWN5XG4gICAgICAgICAgIGltcGxlbWVudGF0aW9uOyB0aGUgZG9jdW1lbnRhdGlvbiBzcGVjaWZpY2FsbHkgcmVxdWlyZXMgJUBcbiAgICAgICAgICAgc28gd2UgY291bGQgd2FybiBvbiB0aGF0ICopXG4gICAgICAgIGFkZF9jaGFyIGM7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGMnXG5cbiAgICAoKiBNYW5hZ2UgcmFuZ2UgaW4gY2hhciBzZXQgKGV4Y2VwdCBpZiB0aGUgJy0nIHRoZSBsYXN0IGNoYXIgYmVmb3JlICddJykgKilcbiAgICBhbmQgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfbWludXMgc3RyX2luZCBlbmRfaW5kIGMgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnXScgLT5cbiAgICAgICAgYWRkX2NoYXIgYztcbiAgICAgICAgYWRkX2NoYXIgJy0nO1xuICAgICAgICBzdHJfaW5kICsgMVxuICAgICAgfCAnJScgLT5cbiAgICAgICAgaWYgc3RyX2luZCArIDEgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICAgIGJlZ2luIG1hdGNoIHN0ci5bc3RyX2luZCArIDFdIHdpdGhcbiAgICAgICAgICB8ICgnJScgfCAnQCcpIGFzIGMnIC0+XG4gICAgICAgICAgICBhZGRfcmFuZ2UgYyBjJztcbiAgICAgICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kXG4gICAgICAgICAgfCBfIC0+IGZhaWxfc2luZ2xlX3BlcmNlbnQgc3RyX2luZFxuICAgICAgICBlbmRcbiAgICAgIHwgYycgLT5cbiAgICAgICAgYWRkX3JhbmdlIGMgYyc7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgaW5cbiAgICBsZXQgc3RyX2luZCwgcmV2ZXJzZSA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICAgIHwgJ14nIC0+IHN0cl9pbmQgKyAxLCB0cnVlXG4gICAgICAgIHwgXyAtPiBzdHJfaW5kLCBmYWxzZSBpblxuICAgIGxldCBuZXh0X2luZCA9IHBhcnNlX2NoYXJfc2V0X3N0YXJ0IHN0cl9pbmQgZW5kX2luZCBpblxuICAgIGxldCBjaGFyX3NldCA9IGZyZWV6ZV9jaGFyX3NldCBjaGFyX3NldCBpblxuICAgIG5leHRfaW5kLCAoaWYgcmV2ZXJzZSB0aGVuIHJldl9jaGFyX3NldCBjaGFyX3NldCBlbHNlIGNoYXJfc2V0KVxuXG4gICgqIENvbnN1bWUgYWxsIG5leHQgc3BhY2VzLCByYWlzZSBhbiBGYWlsdXJlIGlmIGVuZF9pbmQgaXMgcmVhY2hlZC4gKilcbiAgYW5kIHBhcnNlX3NwYWNlcyBzdHJfaW5kIGVuZF9pbmQgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgaWYgc3RyLltzdHJfaW5kXSA9ICcgJyB0aGVuIHBhcnNlX3NwYWNlcyAoc3RyX2luZCArIDEpIGVuZF9pbmQgZWxzZSBzdHJfaW5kXG5cbiAgKCogUmVhZCBhIHBvc2l0aXZlIGludGVnZXIgZnJvbSB0aGUgc3RyaW5nLCByYWlzZSBhIEZhaWx1cmUgaWYgZW5kX2luZCBpc1xuICAgICByZWFjaGVkLiAqKVxuICBhbmQgcGFyc2VfcG9zaXRpdmUgc3RyX2luZCBlbmRfaW5kIGFjYyA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBhY2MgKiAxMCArIChpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJzAnKSBpblxuICAgICAgaWYgbmV3X2FjYyA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBpbnRlZ2VyICVkIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbGltaXQgJWRcIlxuICAgICAgICAgIHN0ciBuZXdfYWNjIFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgICAgZWxzZVxuICAgICAgICBwYXJzZV9wb3NpdGl2ZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgbmV3X2FjY1xuICAgIHwgXyAtPiBzdHJfaW5kLCBhY2NcblxuICAoKiBSZWFkIGEgcG9zaXRpdmUgb3IgbmVnYXRpdmUgaW50ZWdlciBmcm9tIHRoZSBzdHJpbmcsIHJhaXNlIGEgRmFpbHVyZVxuICAgICBpZiBlbmRfaW5kIGlzIHJlYWNoZWQuICopXG4gIGFuZCBwYXJzZV9pbnRlZ2VyIHN0cl9pbmQgZW5kX2luZCA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgLT4gcGFyc2VfcG9zaXRpdmUgc3RyX2luZCBlbmRfaW5kIDBcbiAgICB8ICctJyAtPiAoXG4gICAgICBpZiBzdHJfaW5kICsgMSA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZCArIDFdIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyAtPlxuICAgICAgICBsZXQgbmV4dF9pbmQsIG4gPSBwYXJzZV9wb3NpdGl2ZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgMCBpblxuICAgICAgICBuZXh0X2luZCwgLW5cbiAgICAgIHwgYyAtPlxuICAgICAgICBleHBlY3RlZF9jaGFyYWN0ZXIgKHN0cl9pbmQgKyAxKSBcImRpZ2l0XCIgY1xuICAgIClcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgKCogQWRkIGEgbGl0ZXJhbCB0byBhIGZvcm1hdCBmcm9tIGEgbGl0ZXJhbCBjaGFyYWN0ZXIgc3ViLXNlcXVlbmNlLiAqKVxuICBhbmQgYWRkX2xpdGVyYWwgOiB0eXBlIGEgZCBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiAoYSwgXywgXywgZCwgZSwgZikgZm10IC0+XG4gICAgICAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBsaXRfc3RhcnQgc3RyX2luZCBmbXQgLT4gbWF0Y2ggc3RyX2luZCAtIGxpdF9zdGFydCB3aXRoXG4gICAgfCAwICAgIC0+IEZtdF9FQkIgZm10XG4gICAgfCAxICAgIC0+IEZtdF9FQkIgKENoYXJfbGl0ZXJhbCAoc3RyLltsaXRfc3RhcnRdLCBmbXQpKVxuICAgIHwgc2l6ZSAtPiBGbXRfRUJCIChTdHJpbmdfbGl0ZXJhbCAoU3RyaW5nLnN1YiBzdHIgbGl0X3N0YXJ0IHNpemUsIGZtdCkpXG5cbiAgKCogU2VhcmNoIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgc3ViLWZvcm1hdFxuICAgICAoaS5lLiB0aGUgY29ycmVzcG9uZGluZyBcIiV9XCIgb3IgXCIlKVwiKSAqKVxuICBhbmQgc2VhcmNoX3N1YmZvcm1hdF9lbmQgc3RyX2luZCBlbmRfaW5kIGMgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW5cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogdW5jbG9zZWQgc3ViLWZvcm1hdCwgXFxcbiAgICAgICAgIGV4cGVjdGVkIFxcXCIlJSVjXFxcIiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkXCIgc3RyIGMgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICclJyAtPlxuICAgICAgaWYgc3RyX2luZCArIDEgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBpZiBzdHIuW3N0cl9pbmQgKyAxXSA9IGMgdGhlbiAoKiBFbmQgb2YgZm9ybWF0IGZvdW5kICopIHN0cl9pbmQgZWxzZVxuICAgICAgICBiZWdpbiBtYXRjaCBzdHIuW3N0cl9pbmQgKyAxXSB3aXRoXG4gICAgICAgIHwgJ18nIC0+XG4gICAgICAgICAgKCogU2VhcmNoIGZvciBcIiVfKFwiIG9yIFwiJV97XCIuICopXG4gICAgICAgICAgaWYgc3RyX2luZCArIDIgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggc3RyLltzdHJfaW5kICsgMl0gd2l0aFxuICAgICAgICAgIHwgJ3snIC0+XG4gICAgICAgICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMykgZW5kX2luZCAnfScgaW5cbiAgICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdWJfZW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgICAgfCAnKCcgLT5cbiAgICAgICAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAzKSBlbmRfaW5kICcpJyBpblxuICAgICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgICB8IF8gLT4gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAzKSBlbmRfaW5kIGNcbiAgICAgICAgICBlbmRcbiAgICAgICAgfCAneycgLT5cbiAgICAgICAgICAoKiAley4uLiV9IHN1Yi1mb3JtYXQgZm91bmQuICopXG4gICAgICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDIpIGVuZF9pbmQgJ30nIGluXG4gICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgfCAnKCcgLT5cbiAgICAgICAgICAoKiAlKC4uLiUpIHN1Yi1mb3JtYXQgZm91bmQuICopXG4gICAgICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDIpIGVuZF9pbmQgJyknIGluXG4gICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgfCAnfScgLT5cbiAgICAgICAgICAoKiBFcnJvcjogJSguLi4lfS4gKilcbiAgICAgICAgICBleHBlY3RlZF9jaGFyYWN0ZXIgKHN0cl9pbmQgKyAxKSBcImNoYXJhY3RlciAnKSdcIiAnfSdcbiAgICAgICAgfCAnKScgLT5cbiAgICAgICAgICAoKiBFcnJvcjogJXsuLi4lKS4gKilcbiAgICAgICAgICBleHBlY3RlZF9jaGFyYWN0ZXIgKHN0cl9pbmQgKyAxKSBcImNoYXJhY3RlciAnfSdcIiAnKSdcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgZW5kXG4gICAgfCBfIC0+IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG5cbiAgKCogQ2hlY2sgaWYgc3ltYiBpcyBhIHZhbGlkIGludCBjb252ZXJzaW9uIGFmdGVyIFwiJWxcIiwgXCIlblwiIG9yIFwiJUxcIiAqKVxuICBhbmQgaXNfaW50X2Jhc2Ugc3ltYiA9IG1hdGNoIHN5bWIgd2l0aFxuICAgIHwgJ2QnIHwgJ2knIHwgJ3gnIHwgJ1gnIHwgJ28nIHwgJ3UnIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcblxuICAoKiBDb252ZXJ0IGEgY2hhciAobCwgbiBvciBMKSB0byBpdHMgYXNzb2NpYXRlZCBjb3VudGVyLiAqKVxuICBhbmQgY291bnRlcl9vZl9jaGFyIHN5bWIgPSBtYXRjaCBzeW1iIHdpdGhcbiAgICB8ICdsJyAtPiBMaW5lX2NvdW50ZXIgIHwgJ24nIC0+IENoYXJfY291bnRlclxuICAgIHwgJ0wnIC0+IFRva2VuX2NvdW50ZXIgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gICgqIENvbnZlcnQgKHBsdXMsIHN5bWIpIHRvIGl0cyBhc3NvY2lhdGVkIGludF9jb252LiAqKVxuICBhbmQgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIHNwYWNlIHN5bWIgPVxuICAgIG1hdGNoIHBsdXMsIGhhc2gsIHNwYWNlLCBzeW1iIHdpdGhcbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdkJyAtPiBJbnRfZCAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAnaScgLT4gSW50X2lcbiAgICB8IGZhbHNlLCBmYWxzZSwgIHRydWUsICdkJyAtPiBJbnRfc2QgfCBmYWxzZSwgZmFsc2UsICB0cnVlLCAnaScgLT4gSW50X3NpXG4gICAgfCAgdHJ1ZSwgZmFsc2UsIGZhbHNlLCAnZCcgLT4gSW50X3BkIHwgIHRydWUsIGZhbHNlLCBmYWxzZSwgJ2knIC0+IEludF9waVxuICAgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ3gnIC0+IEludF94ICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdYJyAtPiBJbnRfWFxuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ3gnIC0+IEludF9DeCB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICdYJyAtPiBJbnRfQ1hcbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdvJyAtPiBJbnRfb1xuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ28nIC0+IEludF9Db1xuICAgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ3UnIC0+IEludF91XG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAnZCcgLT4gSW50X0NkXG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAnaScgLT4gSW50X0NpXG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAndScgLT4gSW50X0N1XG4gICAgfCBfLCB0cnVlLCBfLCAneCcgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gSW50X0N4XG4gICAgfCBfLCB0cnVlLCBfLCAnWCcgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gSW50X0NYXG4gICAgfCBfLCB0cnVlLCBfLCAnbycgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gSW50X0NvXG4gICAgfCBfLCB0cnVlLCBfLCAoJ2QnIHwgJ2knIHwgJ3UnKSAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gKCogaWdub3JlICopXG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgZmFsc2Ugc3BhY2Ugc3ltYlxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicjJ1wiXG4gICAgfCB0cnVlLCBfLCB0cnVlLCBfIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlblxuICAgICAgICAoKiBwbHVzIGFuZCBzcGFjZTogbGVnYWN5IGltcGxlbWVudGF0aW9uIHByZWZlcnMgcGx1cyAqKVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGhhc2ggZmFsc2Ugc3ltYlxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJyAnIFwiJysnXCJcbiAgICB8IGZhbHNlLCBfLCB0cnVlLCBfICAgIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiAoKiBpZ25vcmUgKilcbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIGZhbHNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInICdcIlxuICAgIHwgdHJ1ZSwgXywgZmFsc2UsIF8gICAgLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuICgqIGlnbm9yZSAqKVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBmYWxzZSBoYXNoIHNwYWNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInKydcIlxuICAgIHwgZmFsc2UsIF8sIGZhbHNlLCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gICgqIENvbnZlcnQgKHBsdXMsIHNwYWNlLCBzeW1iKSB0byBpdHMgYXNzb2NpYXRlZCBmbG9hdF9jb252LiAqKVxuICBhbmQgY29tcHV0ZV9mbG9hdF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGhhc2ggc3BhY2Ugc3ltYiA9XG4gICAgbGV0IGZsYWcgPSBtYXRjaCBwbHVzLCBzcGFjZSB3aXRoXG4gICAgfCBmYWxzZSwgZmFsc2UgLT4gRmxvYXRfZmxhZ19cbiAgICB8IGZhbHNlLCAgdHJ1ZSAtPiBGbG9hdF9mbGFnX3NcbiAgICB8ICB0cnVlLCBmYWxzZSAtPiBGbG9hdF9mbGFnX3BcbiAgICB8ICB0cnVlLCAgdHJ1ZSAtPlxuICAgICAgKCogcGx1cyBhbmQgc3BhY2U6IGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBwcmVmZXJzIHBsdXMgKilcbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIEZsb2F0X2ZsYWdfcFxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJyAnIFwiJysnXCIgaW5cbiAgICBsZXQga2luZCA9IG1hdGNoIGhhc2gsIHN5bWIgd2l0aFxuICAgIHwgXywgJ2YnIC0+IEZsb2F0X2ZcbiAgICB8IF8sICdlJyAtPiBGbG9hdF9lXG4gICAgfCBfLCAnRScgLT4gRmxvYXRfRVxuICAgIHwgXywgJ2cnIC0+IEZsb2F0X2dcbiAgICB8IF8sICdHJyAtPiBGbG9hdF9HXG4gICAgfCBfLCAnaCcgLT4gRmxvYXRfaFxuICAgIHwgXywgJ0gnIC0+IEZsb2F0X0hcbiAgICB8IGZhbHNlLCAnRicgLT4gRmxvYXRfRlxuICAgIHwgdHJ1ZSwgJ0YnIC0+IEZsb2F0X0NGXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZSBpblxuICAgIGZsYWcsIGtpbmRcblxuICAoKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIGZyaWVuZGx5IGVycm9yIG1lc3NhZ2UgYWJvdXQgaW5jb21wYXRpYmxlIG9wdGlvbnMuKilcbiAgYW5kIGluY29tcGF0aWJsZV9mbGFnIDogdHlwZSBhIC4gaW50IC0+IGludCAtPiBjaGFyIC0+IHN0cmluZyAtPiBhID1cbiAgICBmdW4gcGN0X2luZCBzdHJfaW5kIHN5bWIgb3B0aW9uIC0+XG4gICAgICBsZXQgc3ViZm10ID0gU3RyaW5nLnN1YiBzdHIgcGN0X2luZCAoc3RyX2luZCAtIHBjdF9pbmQpIGluXG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIFxcXG4gICAgICAgICAlcyBpcyBpbmNvbXBhdGlibGUgd2l0aCAnJWMnIGluIHN1Yi1mb3JtYXQgJVNcIlxuICAgICAgICBzdHIgcGN0X2luZCBvcHRpb24gc3ltYiBzdWJmbXRcblxuICBpbiBwYXJzZSAwIChTdHJpbmcubGVuZ3RoIHN0cilcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICgqIEd1YXJkZWQgc3RyaW5nIHRvIGZvcm1hdCBjb252ZXJzaW9ucyAqKVxuXG4oKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGEgZm9ybWF0IGFjY29yZGluZyB0byBhbiBmbXR0eS4gKilcbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IGZvcm1hdF9vZl9zdHJpbmdfZm10dHkgc3RyIGZtdHR5ID1cbiAgbGV0IEZtdF9FQkIgZm10ID0gZm10X2ViYl9vZl9zdHJpbmcgc3RyIGluXG4gIHRyeSBGb3JtYXQgKHR5cGVfZm9ybWF0IGZtdCBmbXR0eSwgc3RyKVxuICB3aXRoIFR5cGVfbWlzbWF0Y2ggLT5cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImJhZCBpbnB1dDogZm9ybWF0IHR5cGUgbWlzbWF0Y2ggYmV0d2VlbiAlUyBhbmQgJVNcIlxuICAgICAgc3RyIChzdHJpbmdfb2ZfZm10dHkgZm10dHkpXG5cbigqIENvbnZlcnQgYSBzdHJpbmcgdG8gYSBmb3JtYXQgY29tcGF0aWJsZSB3aXRoIGFuIG90aGVyIGZvcm1hdC4gKilcbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IGZvcm1hdF9vZl9zdHJpbmdfZm9ybWF0IHN0ciAoRm9ybWF0IChmbXQnLCBzdHInKSkgPVxuICBsZXQgRm10X0VCQiBmbXQgPSBmbXRfZWJiX29mX3N0cmluZyBzdHIgaW5cbiAgdHJ5IEZvcm1hdCAodHlwZV9mb3JtYXQgZm10IChmbXR0eV9vZl9mbXQgZm10JyksIHN0cilcbiAgd2l0aCBUeXBlX21pc21hdGNoIC0+XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgXCJiYWQgaW5wdXQ6IGZvcm1hdCB0eXBlIG1pc21hdGNoIGJldHdlZW4gJVMgYW5kICVTXCIgc3RyIHN0cidcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9ibGl0X3N0cmluZyIsImNhbWxfYnl0ZXNfc2V0IiwiY2FtbF9jcmVhdGVfYnl0ZXMiLCJjYW1sX2Zvcm1hdF9mbG9hdCIsImNhbWxfZm9ybWF0X2ludCIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfbWxfc3RyaW5nX2xlbmd0aCIsImNhbWxfbm90ZXF1YWwiLCJjYW1sX3N0cmluZ19nZXQiLCJjYW1sX3N0cmluZ191bnNhZmVfZ2V0IiwiY2FtbF90cmFtcG9saW5lIiwiY2FtbF90cmFtcG9saW5lX3JldHVybiIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiY2FtbF9jYWxsNCIsImEzIiwiY2FtbF9jYWxsNSIsImE0IiwiZHVtbXkiLCJnbG9iYWxfZGF0YSIsIkFzc2VydF9mYWlsdXJlIiwiQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzIiwiU3RkbGliIiwiU3RkbGliX0J1ZmZlciIsIlN0ZGxpYl9TdHJpbmciLCJTdGRsaWJfU3lzIiwiU3RkbGliX0NoYXIiLCJTdGRsaWJfQnl0ZXMiLCJTdGRsaWJfSW50IiwiY3JlYXRlX2NoYXJfc2V0IiwicGFyYW0iLCJhZGRfaW5fY2hhcl9zZXQiLCJjaGFyX3NldCIsImMiLCJzdHJfaW5kIiwibWFzayIsImZyZWV6ZV9jaGFyX3NldCIsInJldl9jaGFyX3NldCIsImkiLCJpc19pbl9jaGFyX3NldCIsInBhZF9vZl9wYWRfb3B0IiwicGFkX29wdCIsIndpZHRoIiwicGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IiwiaWduIiwiZm10IiwiaWNvbnYiLCJwcmVjX29wdCIsIm5kZWMiLCJmbXR0eSIsIndpZHRoX29wdCIsImNvdW50ZXIiLCJkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiIsImZjb252IiwiYnVmZmVyX2NyZWF0ZSIsImluaXRfc2l6ZSIsImJ1ZmZlcl9jaGVja19zaXplIiwiYnVmIiwib3ZlcmhlYWQiLCJsZW4iLCJtaW5fbGVuIiwibmV3X2xlbiIsIm5ld19zdHIiLCJidWZmZXJfYWRkX2NoYXIiLCJidWZmZXJfYWRkX3N0cmluZyIsInMiLCJzdHJfbGVuIiwiYnVmZmVyX2NvbnRlbnRzIiwiY2hhcl9vZl9pY29udiIsImNoYXJfb2ZfZmNvbnYiLCJvcHQiLCJjRiIsImJwcmludF9jaGFyX3NldCIsInByaW50X2NoYXIiLCJzZXQiLCJpc19hbG9uZSIsImFmdGVyIiwiYmVmb3JlIiwic3dpdGNoZXIiLCJqIiwiYnByaW50X3BhZHR5IiwicGFkdHkiLCJicHJpbnRfaWdub3JlZF9mbGFnIiwiaWduX2ZsYWciLCJicHJpbnRfcGFkX29wdCIsImJwcmludF9wYWRkaW5nIiwicGFkIiwibiIsImJwcmludF9wcmVjaXNpb24iLCJwcmVjIiwiYnByaW50X2ljb252X2ZsYWciLCJicHJpbnRfYWx0aW50X2ZtdCIsImJwcmludF9mY29udl9mbGFnIiwic3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IiwiZm9ybWF0dGluZ19saXQiLCJzdHIiLCJicHJpbnRfY2hhcl9saXRlcmFsIiwiY2hyIiwiYnByaW50X3N0cmluZ19saXRlcmFsIiwiY3N0X0xpIiwiY3N0X2kiLCJjc3RfbGkiLCJjc3RfbmkiLCJicHJpbnRfZm10dHkiLCJzdWJfZm10dHkiLCJpbnRfb2ZfY3VzdG9tX2FyaXR5IiwieCIsImNzdCIsInN0cmluZ19vZl9mbXQiLCJmbXRpdGVyIiwicmVzdCIsImZtdGluZ19saXQiLCJmbXRpbmdfZ2VuIiwiYXJpdHkiLCJzeW1tIiwidHkiLCJ0eTIiLCJ0eTEiLCJmbXR0eV9yZWxfZGV0IiwibWF0Y2giLCJkZSIsImFmIiwiamQiLCJnYSIsImNzdF9jYW1saW50ZXJuYWxGb3JtYXRfbWwiLCJ0cmFucyIsInJlc3QxIiwicmVzdDIiLCJ0eTEyIiwidHkxMSIsInR5MjIiLCJ0eTIxIiwiZjQiLCJmMiIsImZtdHR5X29mX2ZtdCIsInR5X3Jlc3QiLCJwcmVjX3R5IiwiZm9ybWF0dGluZ19nZW4iLCJmbXR0eV9vZl9jdXN0b20iLCJmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IiwiZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IiwiVHlwZV9taXNtYXRjaCIsInR5cGVfcGFkZGluZyIsInciLCJ0eXBlX3BhZHByZWMiLCJwIiwidHlwZV9mb3JtYXQiLCJ0eXBlX2Zvcm1hdF9nZW4iLCJmbXR0eTAiLCJmbXR0eV9yZXN0IiwiZm10X3Jlc3QiLCJzdWJfZm10dHkxIiwiZm10MSIsImZtdHR5MiIsImZtdDIiLCJmbXR0eTMiLCJmbXQzIiwidHlwZV9pZ25vcmVkX3BhcmFtX29uZSIsInR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aSIsInN1Yl9mbXR0eV9yZXN0Iiwic3ViMl9mbXR0eSIsInN1YjFfZm10dHkiLCJyZWNhc3QiLCJmaXhfcGFkZGluZyIsInJlcyIsImZpeF9pbnRfcHJlY2lzaW9uIiwic3RyaW5nX3RvX2NhbWxfc3RyaW5nIiwibCIsImZvcm1hdF9vZl9mY29udiIsInN5bWIiLCJ0cmFuc2Zvcm1faW50X2FsdCIsInBvcyIsInB1dCIsImxlZnQiLCJjc3RfdSIsImNvbnZlcnRfaW50IiwiY29udmVydF9pbnQzMiIsImNvbnZlcnRfbmF0aXZlaW50IiwiY29udmVydF9pbnQ2NCIsImNvbnZlcnRfZmxvYXQiLCJoZXgiLCJzaWduIiwiY2FtbF9zcGVjaWFsX3ZhbCIsInN0cmluZ19vZl9mbXR0eSIsIm1ha2VfcHJpbnRmIiwiayIsImFjYyIsImthY2MiLCJuZXdfYWNjIiwibyIsIm1ha2VfaWdub3JlZF9wYXJhbSIsIm1ha2VfZnJvbV9mbXR0eSIsIm1ha2VfaW52YWxpZF9hcmciLCJtYWtlX3BhZGRpbmciLCJtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiIsIm1ha2VfY3VzdG9tIiwibWFrZV9pcHJpbnRmIiwia29jIiwiZm5fb2ZfY3VzdG9tX2FyaXR5Iiwib3V0cHV0X2FjYyIsIm1zZyIsImJ1ZnB1dF9hY2MiLCJiIiwic3RycHV0X2FjYyIsImZhaWx3aXRoX21lc3NhZ2UiLCJvcGVuX2JveF9vZl9zdHJpbmciLCJpbnZhbGlkX2JveCIsInBhcnNlX3NwYWNlcyIsIndzdGFydCIsIndlbmQiLCJib3hfbmFtZSIsIm5zdGFydCIsIm5lbmQiLCJpbmRlbnQiLCJleG4iLCJleHBfZW5kIiwiYm94X3R5cGUiLCJtYWtlX3BhZGRpbmdfZm10X2ViYiIsIm1ha2VfcGFkcHJlY19mbXRfZWJiIiwiY3N0X2F0X2NoYXJhY3Rlcl9udW1iZXIiLCJjc3RfaW52YWxpZF9mb3JtYXQiLCJzdWJfZm9ybWF0IiwiZm10X2ViYl9vZl9zdHJpbmciLCJsZWdhY3lfYmVoYXZpb3IiLCJmbGFnIiwiaW52YWxpZF9mb3JtYXRfbWVzc2FnZSIsImludmFsaWRfZm9ybWF0X3dpdGhvdXQiLCJleHBlY3RlZF9jaGFyYWN0ZXIiLCJleHBlY3RlZCIsInJlYWQiLCJjc3RfdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IiwicGFyc2UiLCJsaXRfc3RhcnQiLCJlbmRfaW5kIiwiY3N0XzAiLCJwYXJzZV9mbGFncyIsInBjdF9pbmQiLCJzZXRfZmxhZyIsInplcm8iLCJtaW51cyIsInBsdXMiLCJzcGFjZSIsImhhc2giLCJuZXdfaW5kIiwiY3N0X3ByZWNpc2lvbiIsInBhcnNlX2FmdGVyX3BhZGRpbmciLCJwYXJzZV9saXRlcmFsIiwicGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIiwicGFyc2VfY29udiIsInBhZHByZWMiLCJwYXJzZV9jb252ZXJzaW9uIiwicGx1c191c2VkIiwiZ2V0X3BsdXMiLCJoYXNoX3VzZWQiLCJnZXRfaGFzaCIsInNwYWNlX3VzZWQiLCJnZXRfc3BhY2UiLCJpZ25fdXNlZCIsImdldF9pZ24iLCJwYWRfdXNlZCIsImdldF9wYWQiLCJwcmVjX3VzZWQiLCJnZXRfcHJlYyIsImdldF9wYWRwcmVjIiwiZ2V0X2ludF9wYWQiLCJjaGVja19ub18wIiwib3B0X29mX3BhZCIsImdldF9wYWRfb3B0IiwiZ2V0X3BhZHByZWNfb3B0IiwiZm10X3Jlc3VsdCIsInN1Yl9lbmQiLCJzdWJfZm10IiwiaWdub3JlZCIsIm5leHRfaW5kIiwiY2hhcl9mb3JtYXQiLCJraW5kIiwicGFyc2VfYWZ0ZXJfYXQiLCJzdHJfaW5kXzEiLCJzdHJfaW5kXzIiLCJzdHJfaW5kXzMiLCJvZmZzZXQiLCJzdHJfaW5kXzQiLCJzdHJfaW5kXzUiLCJzaXplIiwicGFyc2VfdGFnIiwiaXNfb3Blbl90YWciLCJpbmQiLCJzdWJfc3RyIiwiZm9ybWF0dGluZyIsInBhcnNlX2NoYXJfc2V0IiwiYWRkX3JhbmdlIiwiZmFpbF9zaW5nbGVfcGVyY2VudCIsInBhcnNlX2NoYXJfc2V0X2NvbnRlbnQiLCJwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIiwicmV2ZXJzZSIsInBhcnNlX3Bvc2l0aXZlIiwicGFyc2VfaW50ZWdlciIsImFkZF9saXRlcmFsIiwic2VhcmNoX3N1YmZvcm1hdF9lbmQiLCJjb21wdXRlX2ludF9jb252IiwiaW5jb21wYXRpYmxlX2ZsYWciLCJvcHRpb24iLCJzdWJmbXQiLCJjc3RfYW5kIiwiY3N0X2JhZF9pbnB1dF9mb3JtYXRfdHlwZV9taXNtIiwiZm9ybWF0X29mX3N0cmluZ19mbXR0eSIsImZvcm1hdF9vZl9zdHJpbmdfZm9ybWF0Il0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLG9CQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLElBQUFDLHdCQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyxrQkFBQTtBQUFBLElBQUFDLHlCQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxJQUFBQyx5QkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FB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QU9GO0FBQUEsU0FFSyxxREFDNkI7QUFBQSxRQUZoQztBQUFBO0FBQUE7QUFBQSxPQTlCSjtBQUFBLFFBZ0N3QjtBQUFBLE9BUHRCO0FBQUEsUUFFSyx1REFLNkI7QUFBQSxPQU5oQztBQUFBO0FBQUE7QUFBQSxJQU1nQztBQUFBLGFBQUE4TixrQkFBQWhFLFNBQUExTSxTQUFBdUksTUFBQW9JO0FBQUFBO0FBQUFBLE1BQUFDO0FBQUFBLFFBNEJyQjtBQUFBLEtBQ2I7QUFBQSxzRUFHZ0M7QUFBQTtBQUFBLElBRWpDO0FBQUE7QUFBQTtBQUFBLElBQUFDLFVEeDVGTDtBQUFBLElBQUFDO0FBQUFBLE1BQUE7QUFBQSxJQUFBQTtBQUFBQSxNQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyx1QkFBQWxOLEtBQUE5QztBQUFBQSxRQUFBSixNQ2c2Rm9CO0FBQUEsSUFDbEIsWUFBWTtBQUFBLFVBQUF5SztBQUFBQSxTQUFBQSxNRGo2RmQ7QUFBQTtBQUFBLGFDcTZGVTtBQUFBLEtBQXVCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxNRHI2RmpDO0FBQUE7QUFBQTtBQUFBLFlBQUE0Rix3QkFBQW5OLEtBQUFqRTtBQUFBQTtBQUFBQSxLQUFBaUUsUUN5NkY0QjtBQUFBLEtBQUFsRCxNQUFBO0FBQUEsS0FBQUEsUUFDUjtBQUFBLElBQ2xCLFlBQTRCLElBQWhCLG1CQUFnQjtBQUFBLFVBQUF5SztBQUFBQSxTQUFBQSxNRDM2RjlCO0FBQUE7QUFBQSxNQzY2Rkksa0RBQzhEO0FBQUEsS0Q5NkZsRTtBQUFBO0FBQUEsR0M4NkZrRTtBQUFBLEdEOTZGbEUiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjoyMzg2NSwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL3ByaW50Zi5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgWGF2aWVyIExlcm95IGFuZCBQaWVycmUgV2VpcywgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3Ncbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0XG5cbmxldCBrZnByaW50ZiBrIG8gKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZiAoZnVuIGFjYyAtPiBvdXRwdXRfYWNjIG8gYWNjOyBrIG8pIEVuZF9vZl9hY2MgZm10XG5sZXQga2JwcmludGYgayBiIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGYgKGZ1biBhY2MgLT4gYnVmcHV0X2FjYyBiIGFjYzsgayBiKSBFbmRfb2ZfYWNjIGZtdFxubGV0IGlrZnByaW50ZiBrIG9jIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9pcHJpbnRmIGsgb2MgZm10XG5sZXQgaWticHJpbnRmID0gaWtmcHJpbnRmXG5cbmxldCBmcHJpbnRmIG9jIGZtdCA9IGtmcHJpbnRmIGlnbm9yZSBvYyBmbXRcbmxldCBicHJpbnRmIGIgZm10ID0ga2JwcmludGYgaWdub3JlIGIgZm10XG5sZXQgaWZwcmludGYgb2MgZm10ID0gaWtmcHJpbnRmIGlnbm9yZSBvYyBmbXRcbmxldCBpYnByaW50ZiBiIGZtdCA9IGlrYnByaW50ZiBpZ25vcmUgYiBmbXRcbmxldCBwcmludGYgZm10ID0gZnByaW50ZiBzdGRvdXQgZm10XG5sZXQgZXByaW50ZiBmbXQgPSBmcHJpbnRmIHN0ZGVyciBmbXRcblxubGV0IGtzcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBsZXQgaycgYWNjID1cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICAgIHN0cnB1dF9hY2MgYnVmIGFjYztcbiAgICBrIChCdWZmZXIuY29udGVudHMgYnVmKSBpblxuICBtYWtlX3ByaW50ZiBrJyBFbmRfb2ZfYWNjIGZtdFxuXG5sZXQgc3ByaW50ZiBmbXQgPSBrc3ByaW50ZiAoZnVuIHMgLT4gcykgZm10XG5cbmxldCBrcHJpbnRmID0ga3NwcmludGZcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImdsb2JhbF9kYXRhIiwiU3RkbGliX0J1ZmZlciIsIkNhbWxpbnRlcm5hbEZvcm1hdCIsIlN0ZGxpYiIsImtmcHJpbnRmIiwiayIsIm8iLCJwYXJhbSIsImZtdCIsImFjYyIsImticHJpbnRmIiwiYiIsImlrZnByaW50ZiIsIm9jIiwiZnByaW50ZiIsImJwcmludGYiLCJpZnByaW50ZiIsImlicHJpbnRmIiwicHJpbnRmIiwiZXByaW50ZiIsImtzcHJpbnRmIiwiYnVmIiwic3ByaW50ZiIsInMiXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMscUJBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsWUFBQUMsU0FBQUMsR0FBQUMsR0FBQUM7QUFBQUEsUUFBQUMsTUNrQmE7QUFBQSxJQUNYO0FBQUE7QUFBQSxzQkFBQUM7QUFBQUEsY0FBd0I7QUFBQSxjQUFnQix1QkFBSztBQUFBO0FBQUE7QUFBQSxpQkFBZ0I7QUFBQTtBQUFBLFlBQUFDLFNBQUFMLEdBQUFNLEdBQUFKO0FBQUFBLFFBQUFDLE1BQ2xEO0FBQUEsSUFDWDtBQUFBO0FBQUEsc0JBQUFDO0FBQUFBLGNBQXdCO0FBQUEsY0FBZ0IsdUJBQUs7QUFBQTtBQUFBO0FBQUEsaUJBQWdCO0FBQUE7QUFBQSxZQUFBRyxVQUFBUCxHQUFBUSxJQUFBTjtBQUFBQSxRQUFBQyxNQUNqRDtBQUFBLElBQ1osbURBQXFCO0FBQUE7QUFBQSxZQUFBTSxRQUFBRCxJQUFBTDtBQUFBQSxJQUdGLDRCRDFCckIsb0JDMEIyQztBQUFBO0FBQUEsWUFBQU8sUUFBQUosR0FBQUgsS0FDdkIsNEJEM0JwQixtQkMyQnlDO0FBQUEsWUFBQVEsU0FBQUgsSUFBQUw7QUFBQUEsSUFDbkIsNkJENUJ0QixvQkM0QjZDO0FBQUE7QUFBQSxZQUFBUyxTQUFBTixHQUFBSDtBQUFBQSxJQUN4Qiw2QkQ3QnJCLG1CQzZCMkM7QUFBQTtBQUFBLFlBQUFVLE9BQUFWLEtBQzFCLCtCQUFrQjtBQUFBLFlBQUFXLFFBQUFYLEtBQ2pCLCtCQUFrQjtBQUFBLFlBQUFZLFNBQUFmLEdBQUFFO0FBQUFBLFFBQUFDLE1BRXZCO0FBQUEsYUFBQUgsSUFBQUk7QUFBQUEsU0FBQVksTUFFQztBQUFBLEtBQ1Y7QUFBQSxLQUNFLE9BQXFCLGNBQXJCLGlDQUFxQjtBQUFBO0FBQUEsSUFDekIsb0RBQTZCO0FBQUE7QUFBQSxZQUFBQyxRQUFBZCxLQUViLHlCQUFBZSxHQUFtQixTQUFDLE9BQUs7QUFBQSxHRHhDM0MiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjoyMzk1MSwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL3ByaW50ZXhjLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIFByaW50ZlxuXG50eXBlIHQgPSBleG4gPSAuLlxuXG5sZXQgcHJpbnRlcnMgPSBBdG9taWMubWFrZSBbXVxuXG5sZXQgbG9jZm10ID0gZm9ybWF0X29mX3N0cmluZyBcIkZpbGUgXFxcIiVzXFxcIiwgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZDogJXNcIlxuXG5sZXQgZmllbGQgeCBpID1cbiAgbGV0IGYgPSBPYmouZmllbGQgeCBpIGluXG4gIGlmIG5vdCAoT2JqLmlzX2Jsb2NrIGYpIHRoZW5cbiAgICBzcHJpbnRmIFwiJWRcIiAoT2JqLm1hZ2ljIGYgOiBpbnQpICAgICAgICAgICAoKiBjYW4gYWxzbyBiZSBhIGNoYXIgKilcbiAgZWxzZSBpZiBPYmoudGFnIGYgPSBPYmouc3RyaW5nX3RhZyB0aGVuXG4gICAgc3ByaW50ZiBcIiVTXCIgKE9iai5tYWdpYyBmIDogc3RyaW5nKVxuICBlbHNlIGlmIE9iai50YWcgZiA9IE9iai5kb3VibGVfdGFnIHRoZW5cbiAgICBzdHJpbmdfb2ZfZmxvYXQgKE9iai5tYWdpYyBmIDogZmxvYXQpXG4gIGVsc2VcbiAgICBcIl9cIlxuXG5sZXQgcmVjIG90aGVyX2ZpZWxkcyB4IGkgPVxuICBpZiBpID49IE9iai5zaXplIHggdGhlbiBcIlwiXG4gIGVsc2Ugc3ByaW50ZiBcIiwgJXMlc1wiIChmaWVsZCB4IGkpIChvdGhlcl9maWVsZHMgeCAoaSsxKSlcblxubGV0IGZpZWxkcyB4ID1cbiAgbWF0Y2ggT2JqLnNpemUgeCB3aXRoXG4gIHwgMCAtPiBcIlwiXG4gIHwgMSAtPiBcIlwiXG4gIHwgMiAtPiBzcHJpbnRmIFwiKCVzKVwiIChmaWVsZCB4IDEpXG4gIHwgXyAtPiBzcHJpbnRmIFwiKCVzJXMpXCIgKGZpZWxkIHggMSkgKG90aGVyX2ZpZWxkcyB4IDIpXG5cbmxldCB1c2VfcHJpbnRlcnMgeCA9XG4gIGxldCByZWMgY29udiA9IGZ1bmN0aW9uXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICAobWF0Y2ggaGQgeCB3aXRoXG4gICAgICAgICB8IE5vbmUgfCBleGNlcHRpb24gXyAtPiBjb252IHRsXG4gICAgICAgICB8IFNvbWUgcyAtPiBTb21lIHMpXG4gICAgfCBbXSAtPiBOb25lIGluXG4gIGNvbnYgKEF0b21pYy5nZXQgcHJpbnRlcnMpXG5cbmxldCBkZXN0cnVjdF9leHRfY29uc3RydWN0b3IgeCA9XG4gIGlmIE9iai50YWcgeCA8PiAwIHRoZW5cbiAgICAoKE9iai5tYWdpYyAoT2JqLmZpZWxkIHggMCkgOiBzdHJpbmcpLCBOb25lKVxuICBlbHNlXG4gICAgbGV0IGNvbnN0cnVjdG9yID1cbiAgICAgIChPYmoubWFnaWMgKE9iai5maWVsZCAoT2JqLmZpZWxkIHggMCkgMCkgOiBzdHJpbmcpIGluXG4gICAgKGNvbnN0cnVjdG9yLCBTb21lIChmaWVsZHMgeCkpXG5cbmxldCBzdHJpbmdfb2ZfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHQgPVxuICBsZXQgY29uc3RydWN0b3IsIGZpZWxkc19vcHQgPSBkZXN0cnVjdF9leHRfY29uc3RydWN0b3IgdCBpblxuICBtYXRjaCBmaWVsZHNfb3B0IHdpdGhcbiAgfCBOb25lIC0+IGNvbnN0cnVjdG9yXG4gIHwgU29tZSBmIC0+IGNvbnN0cnVjdG9yIF4gZlxuXG5sZXQgdG9fc3RyaW5nX2RlZmF1bHQgPSBmdW5jdGlvblxuICB8IE91dF9vZl9tZW1vcnkgLT4gXCJPdXQgb2YgbWVtb3J5XCJcbiAgfCBTdGFja19vdmVyZmxvdyAtPiBcIlN0YWNrIG92ZXJmbG93XCJcbiAgfCBNYXRjaF9mYWlsdXJlKGZpbGUsIGxpbmUsIGNoYXIpIC0+XG4gICAgICBzcHJpbnRmIGxvY2ZtdCBmaWxlIGxpbmUgY2hhciAoY2hhcis1KSBcIlBhdHRlcm4gbWF0Y2hpbmcgZmFpbGVkXCJcbiAgfCBBc3NlcnRfZmFpbHVyZShmaWxlLCBsaW5lLCBjaGFyKSAtPlxuICAgICAgc3ByaW50ZiBsb2NmbXQgZmlsZSBsaW5lIGNoYXIgKGNoYXIrNikgXCJBc3NlcnRpb24gZmFpbGVkXCJcbiAgfCBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZShmaWxlLCBsaW5lLCBjaGFyKSAtPlxuICAgICAgc3ByaW50ZiBsb2NmbXQgZmlsZSBsaW5lIGNoYXIgKGNoYXIrNikgXCJVbmRlZmluZWQgcmVjdXJzaXZlIG1vZHVsZVwiXG4gIHwgeCAtPlxuICAgICAgc3RyaW5nX29mX2V4dGVuc2lvbl9jb25zdHJ1Y3RvciAoT2JqLnJlcHIgeClcblxubGV0IHRvX3N0cmluZyBlID1cbiAgbWF0Y2ggdXNlX3ByaW50ZXJzIGUgd2l0aFxuICB8IFNvbWUgcyAtPiBzXG4gIHwgTm9uZSAtPiB0b19zdHJpbmdfZGVmYXVsdCBlXG5cbmxldCBwcmludCBmY3QgYXJnID1cbiAgdHJ5XG4gICAgZmN0IGFyZ1xuICB3aXRoIHggLT5cbiAgICBlcHJpbnRmIFwiVW5jYXVnaHQgZXhjZXB0aW9uOiAlc1xcblwiICh0b19zdHJpbmcgeCk7XG4gICAgZmx1c2ggc3RkZXJyO1xuICAgIHJhaXNlIHhcblxubGV0IGNhdGNoIGZjdCBhcmcgPVxuICB0cnlcbiAgICBmY3QgYXJnXG4gIHdpdGggeCAtPlxuICAgIGZsdXNoIHN0ZG91dDtcbiAgICBlcHJpbnRmIFwiVW5jYXVnaHQgZXhjZXB0aW9uOiAlc1xcblwiICh0b19zdHJpbmcgeCk7XG4gICAgZXhpdCAyXG5cbnR5cGUgcmF3X2JhY2t0cmFjZV9zbG90XG50eXBlIHJhd19iYWNrdHJhY2VfZW50cnkgPSBwcml2YXRlIGludFxudHlwZSByYXdfYmFja3RyYWNlID0gcmF3X2JhY2t0cmFjZV9lbnRyeSBhcnJheVxuXG5sZXQgcmF3X2JhY2t0cmFjZV9lbnRyaWVzIGJ0ID0gYnRcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2U6XG4gIHVuaXQgLT4gcmF3X2JhY2t0cmFjZSA9IFwiY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2VcIlxuXG5leHRlcm5hbCByYWlzZV93aXRoX2JhY2t0cmFjZTogZXhuIC0+IHJhd19iYWNrdHJhY2UgLT4gJ2FcbiAgPSBcIiVyYWlzZV93aXRoX2JhY2t0cmFjZVwiXG5cbigqIERpc2FibGUgd2FybmluZyAzNzogdmFsdWVzIGFyZSBjb25zdHJ1Y3RlZCBpbiB0aGUgcnVudGltZSAqKVxudHlwZVtAd2FybmluZyBcIi0zN1wiXSBiYWNrdHJhY2Vfc2xvdCA9XG4gIHwgS25vd25fbG9jYXRpb24gb2Yge1xuICAgICAgaXNfcmFpc2UgICA6IGJvb2w7XG4gICAgICBmaWxlbmFtZSAgIDogc3RyaW5nO1xuICAgICAgc3RhcnRfbG51bSA6IGludDtcbiAgICAgIHN0YXJ0X2NoYXIgOiBpbnQ7XG4gICAgICBlbmRfb2Zmc2V0IDogaW50OyAoKiBSZWxhdGl2ZSB0byBiZWdpbm5pbmcgb2Ygc3RhcnRfbG51bSAqKVxuICAgICAgZW5kX2xudW0gICA6IGludDtcbiAgICAgIGVuZF9jaGFyICAgOiBpbnQ7ICgqIFJlbGF0aXZlIHRvIGJlZ2lubmluZyBvZiBlbmRfbG51bSBsaW5lICopXG4gICAgICBpc19pbmxpbmUgIDogYm9vbDtcbiAgICAgIGRlZm5hbWUgICAgOiBzdHJpbmc7XG4gICAgfVxuICB8IFVua25vd25fbG9jYXRpb24gb2Yge1xuICAgICAgaXNfcmFpc2UgOiBib29sXG4gICAgfVxuXG5leHRlcm5hbCBjb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdDpcbiAgcmF3X2JhY2t0cmFjZV9zbG90IC0+IGJhY2t0cmFjZV9zbG90ID0gXCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90XCJcblxuZXh0ZXJuYWwgY29udmVydF9yYXdfYmFja3RyYWNlOlxuICByYXdfYmFja3RyYWNlIC0+IGJhY2t0cmFjZV9zbG90IGFycmF5ID0gXCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZVwiXG5cbmxldCBjb252ZXJ0X3Jhd19iYWNrdHJhY2UgYnQgPVxuICB0cnkgU29tZSAoY29udmVydF9yYXdfYmFja3RyYWNlIGJ0KVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmxldCBmb3JtYXRfYmFja3RyYWNlX3Nsb3QgcG9zIHNsb3QgPVxuICBsZXQgaW5mbyBpc19yYWlzZSA9XG4gICAgaWYgaXNfcmFpc2UgdGhlblxuICAgICAgaWYgcG9zID0gMCB0aGVuIFwiUmFpc2VkIGF0XCIgZWxzZSBcIlJlLXJhaXNlZCBhdFwiXG4gICAgZWxzZVxuICAgICAgaWYgcG9zID0gMCB0aGVuIFwiUmFpc2VkIGJ5IHByaW1pdGl2ZSBvcGVyYXRpb24gYXRcIiBlbHNlIFwiQ2FsbGVkIGZyb21cIlxuICBpblxuICBtYXRjaCBzbG90IHdpdGhcbiAgfCBVbmtub3duX2xvY2F0aW9uIGwgLT5cbiAgICAgIGlmIGwuaXNfcmFpc2UgdGhlblxuICAgICAgICAoKiBjb21waWxlci1pbnNlcnRlZCByZS1yYWlzZSwgc2tpcHBlZCAqKSBOb25lXG4gICAgICBlbHNlXG4gICAgICAgIFNvbWUgKHNwcmludGYgXCIlcyB1bmtub3duIGxvY2F0aW9uXCIgKGluZm8gZmFsc2UpKVxuICB8IEtub3duX2xvY2F0aW9uIGwgLT5cbiAgICAgIGxldCBsaW5lcyA9XG4gICAgICAgIGlmIGwuc3RhcnRfbG51bSA9IGwuZW5kX2xudW0gdGhlblxuICAgICAgICAgIFByaW50Zi5zcHJpbnRmIFwiICVkXCIgbC5zdGFydF9sbnVtXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBQcmludGYuc3ByaW50ZiBcInMgJWQtJWRcIiBsLnN0YXJ0X2xudW0gbC5lbmRfbG51bVxuICAgICAgaW5cbiAgICAgIFNvbWUgKHNwcmludGYgXCIlcyAlcyBpbiBmaWxlIFxcXCIlc1xcXCIlcywgbGluZSVzLCBjaGFyYWN0ZXJzICVkLSVkXCJcbiAgICAgICAgICAgICAgKGluZm8gbC5pc19yYWlzZSkgbC5kZWZuYW1lIGwuZmlsZW5hbWVcbiAgICAgICAgICAgICAgKGlmIGwuaXNfaW5saW5lIHRoZW4gXCIgKGlubGluZWQpXCIgZWxzZSBcIlwiKVxuICAgICAgICAgICAgICBsaW5lcyBsLnN0YXJ0X2NoYXIgbC5lbmRfY2hhcilcblxubGV0IHByaW50X2V4Y2VwdGlvbl9iYWNrdHJhY2Ugb3V0Y2hhbiBiYWNrdHJhY2UgPVxuICBtYXRjaCBiYWNrdHJhY2Ugd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgIGZwcmludGYgb3V0Y2hhblxuICAgICAgICBcIihQcm9ncmFtIG5vdCBsaW5rZWQgd2l0aCAtZywgY2Fubm90IHByaW50IHN0YWNrIGJhY2t0cmFjZSlcXG5cIlxuICB8IFNvbWUgYSAtPlxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgICAgICBtYXRjaCBmb3JtYXRfYmFja3RyYWNlX3Nsb3QgaSBhLihpKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHN0ciAtPiBmcHJpbnRmIG91dGNoYW4gXCIlc1xcblwiIHN0clxuICAgICAgZG9uZVxuXG5sZXQgcHJpbnRfcmF3X2JhY2t0cmFjZSBvdXRjaGFuIHJhd19iYWNrdHJhY2UgPVxuICBwcmludF9leGNlcHRpb25fYmFja3RyYWNlIG91dGNoYW4gKGNvbnZlcnRfcmF3X2JhY2t0cmFjZSByYXdfYmFja3RyYWNlKVxuXG4oKiBjb25mdXNpbmdseSBuYW1lZDogcHJpbnRzIHRoZSBnbG9iYWwgY3VycmVudCBiYWNrdHJhY2UgKilcbmxldCBwcmludF9iYWNrdHJhY2Ugb3V0Y2hhbiA9XG4gIHByaW50X3Jhd19iYWNrdHJhY2Ugb3V0Y2hhbiAoZ2V0X3Jhd19iYWNrdHJhY2UgKCkpXG5cbmxldCBiYWNrdHJhY2VfdG9fc3RyaW5nIGJhY2t0cmFjZSA9XG4gIG1hdGNoIGJhY2t0cmFjZSB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICBcIihQcm9ncmFtIG5vdCBsaW5rZWQgd2l0aCAtZywgY2Fubm90IHByaW50IHN0YWNrIGJhY2t0cmFjZSlcXG5cIlxuICB8IFNvbWUgYSAtPlxuICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEwMjQgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICAgICAgbWF0Y2ggZm9ybWF0X2JhY2t0cmFjZV9zbG90IGkgYS4oaSkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBzdHIgLT4gYnByaW50ZiBiIFwiJXNcXG5cIiBzdHJcbiAgICAgIGRvbmU7XG4gICAgICBCdWZmZXIuY29udGVudHMgYlxuXG5sZXQgcmF3X2JhY2t0cmFjZV90b19zdHJpbmcgcmF3X2JhY2t0cmFjZSA9XG4gIGJhY2t0cmFjZV90b19zdHJpbmcgKGNvbnZlcnRfcmF3X2JhY2t0cmFjZSByYXdfYmFja3RyYWNlKVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfaXNfcmFpc2UgPSBmdW5jdGlvblxuICB8IEtub3duX2xvY2F0aW9uIGwgLT4gbC5pc19yYWlzZVxuICB8IFVua25vd25fbG9jYXRpb24gbCAtPiBsLmlzX3JhaXNlXG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9pc19pbmxpbmUgPSBmdW5jdGlvblxuICB8IEtub3duX2xvY2F0aW9uIGwgLT4gbC5pc19pbmxpbmVcbiAgfCBVbmtub3duX2xvY2F0aW9uIF8gLT4gZmFsc2VcblxudHlwZSBsb2NhdGlvbiA9IHtcbiAgZmlsZW5hbWUgOiBzdHJpbmc7XG4gIGxpbmVfbnVtYmVyIDogaW50O1xuICBzdGFydF9jaGFyIDogaW50O1xuICBlbmRfY2hhciA6IGludDtcbiAgZW5kX2xpbmUgOiBpbnQ7XG4gIGVuZF9jb2wgOiBpbnQ7XG59XG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvbiA9IGZ1bmN0aW9uXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBfIC0+IE5vbmVcbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+XG4gICAgU29tZSB7XG4gICAgICBmaWxlbmFtZSAgICA9IGwuZmlsZW5hbWU7XG4gICAgICBsaW5lX251bWJlciA9IGwuc3RhcnRfbG51bTtcbiAgICAgIHN0YXJ0X2NoYXIgID0gbC5zdGFydF9jaGFyO1xuICAgICAgZW5kX2NoYXIgICAgPSBsLmVuZF9vZmZzZXQ7XG4gICAgICBlbmRfbGluZSAgICA9IGwuZW5kX2xudW07XG4gICAgICBlbmRfY29sICAgICA9IGwuZW5kX2NoYXI7XG4gICAgfVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfZGVmbmFtZSA9IGZ1bmN0aW9uXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBfXG4gIHwgS25vd25fbG9jYXRpb24geyBkZWZuYW1lID0gXCJcIiB9IC0+IE5vbmVcbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+IFNvbWUgbC5kZWZuYW1lXG5cbmxldCBiYWNrdHJhY2Vfc2xvdHMgcmF3X2JhY2t0cmFjZSA9XG4gICgqIFRoZSBkb2N1bWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24gZ3VhcmFudGVlcyB0aGF0IFNvbWUgaXNcbiAgICAgcmV0dXJuZWQgb25seSBpZiBhIHBhcnQgb2YgdGhlIHRyYWNlIGlzIHVzYWJsZS4gVGhpcyBnaXZlcyB1c1xuICAgICBhIGJpdCBtb3JlIHdvcmsgdGhhbiBqdXN0IGNvbnZlcnRfcmF3X2JhY2t0cmFjZSwgYnV0IGl0IG1ha2VzIHRoZVxuICAgICBBUEkgbW9yZSB1c2VyLWZyaWVuZGx5IC0tIG90aGVyd2lzZSBtb3N0IHVzZXJzIHdvdWxkIGhhdmUgdG9cbiAgICAgcmVpbXBsZW1lbnQgdGhlIFwiUHJvZ3JhbSBub3QgbGlua2VkIHdpdGggLWcsIHNvcnJ5XCIgbG9naWNcbiAgICAgdGhlbXNlbHZlcy4gKilcbiAgbWF0Y2ggY29udmVydF9yYXdfYmFja3RyYWNlIHJhd19iYWNrdHJhY2Ugd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGJhY2t0cmFjZSAtPlxuICAgICAgbGV0IHVzYWJsZV9zbG90ID0gZnVuY3Rpb25cbiAgICAgICAgfCBVbmtub3duX2xvY2F0aW9uIF8gLT4gZmFsc2VcbiAgICAgICAgfCBLbm93bl9sb2NhdGlvbiBfIC0+IHRydWUgaW5cbiAgICAgIGxldCByZWMgZXhpc3RzX3VzYWJsZSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgKC0xKSAtPiBmYWxzZVxuICAgICAgICB8IGkgLT4gdXNhYmxlX3Nsb3QgYmFja3RyYWNlLihpKSB8fCBleGlzdHNfdXNhYmxlIChpIC0gMSkgaW5cbiAgICAgIGlmIGV4aXN0c191c2FibGUgKEFycmF5Lmxlbmd0aCBiYWNrdHJhY2UgLSAxKVxuICAgICAgdGhlbiBTb21lIGJhY2t0cmFjZVxuICAgICAgZWxzZSBOb25lXG5cbmxldCBiYWNrdHJhY2Vfc2xvdHNfb2ZfcmF3X2VudHJ5IGVudHJ5ID1cbiAgYmFja3RyYWNlX3Nsb3RzIFt8IGVudHJ5IHxdXG5cbm1vZHVsZSBTbG90ID0gc3RydWN0XG4gIHR5cGUgdCA9IGJhY2t0cmFjZV9zbG90XG4gIGxldCBmb3JtYXQgPSBmb3JtYXRfYmFja3RyYWNlX3Nsb3RcbiAgbGV0IGlzX3JhaXNlID0gYmFja3RyYWNlX3Nsb3RfaXNfcmFpc2VcbiAgbGV0IGlzX2lubGluZSA9IGJhY2t0cmFjZV9zbG90X2lzX2lubGluZVxuICBsZXQgbG9jYXRpb24gPSBiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvblxuICBsZXQgbmFtZSA9IGJhY2t0cmFjZV9zbG90X2RlZm5hbWVcbmVuZFxuXG5sZXQgcmF3X2JhY2t0cmFjZV9sZW5ndGggYnQgPSBBcnJheS5sZW5ndGggYnRcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2Vfc2xvdCA6XG4gIHJhd19iYWNrdHJhY2UgLT4gaW50IC0+IHJhd19iYWNrdHJhY2Vfc2xvdCA9IFwiY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3RcIlxuXG5leHRlcm5hbCBnZXRfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QgOlxuICByYXdfYmFja3RyYWNlX3Nsb3QgLT4gcmF3X2JhY2t0cmFjZV9zbG90IG9wdGlvblxuICA9IFwiY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdFwiXG5cbigqIGNvbmZ1c2luZ2x5IG5hbWVkOlxuICAgcmV0dXJucyB0aGUgKnN0cmluZyogY29ycmVzcG9uZGluZyB0byB0aGUgZ2xvYmFsIGN1cnJlbnQgYmFja3RyYWNlICopXG5sZXQgZ2V0X2JhY2t0cmFjZSAoKSA9IHJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIChnZXRfcmF3X2JhY2t0cmFjZSAoKSlcblxuZXh0ZXJuYWwgcmVjb3JkX2JhY2t0cmFjZTogYm9vbCAtPiB1bml0ID0gXCJjYW1sX3JlY29yZF9iYWNrdHJhY2VcIlxuZXh0ZXJuYWwgYmFja3RyYWNlX3N0YXR1czogdW5pdCAtPiBib29sID0gXCJjYW1sX2JhY2t0cmFjZV9zdGF0dXNcIlxuXG5sZXQgcmVjIHJlZ2lzdGVyX3ByaW50ZXIgZm4gPVxuICBsZXQgb2xkX3ByaW50ZXJzID0gQXRvbWljLmdldCBwcmludGVycyBpblxuICBsZXQgbmV3X3ByaW50ZXJzID0gZm4gOjogb2xkX3ByaW50ZXJzIGluXG4gIGxldCBzdWNjZXNzID0gQXRvbWljLmNvbXBhcmVfYW5kX3NldCBwcmludGVycyBvbGRfcHJpbnRlcnMgbmV3X3ByaW50ZXJzIGluXG4gIGlmIG5vdCBzdWNjZXNzIHRoZW4gcmVnaXN0ZXJfcHJpbnRlciBmblxuXG5leHRlcm5hbCBnZXRfY2FsbHN0YWNrOiBpbnQgLT4gcmF3X2JhY2t0cmFjZSA9IFwiY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2tcIlxuXG5sZXQgZXhuX3Nsb3QgeCA9XG4gIGxldCB4ID0gT2JqLnJlcHIgeCBpblxuICBpZiBPYmoudGFnIHggPSAwIHRoZW4gT2JqLmZpZWxkIHggMCBlbHNlIHhcblxubGV0IGV4bl9zbG90X2lkIHggPVxuICBsZXQgc2xvdCA9IGV4bl9zbG90IHggaW5cbiAgKE9iai5vYmogKE9iai5maWVsZCBzbG90IDEpIDogaW50KVxuXG5sZXQgZXhuX3Nsb3RfbmFtZSB4ID1cbiAgbGV0IHNsb3QgPSBleG5fc2xvdCB4IGluXG4gIChPYmoub2JqIChPYmouZmllbGQgc2xvdCAwKSA6IHN0cmluZylcblxuZXh0ZXJuYWwgZ2V0X2RlYnVnX2luZm9fc3RhdHVzIDogdW5pdCAtPiBpbnQgPSBcImNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXNcIlxuXG4oKiBEZXNjcmlwdGlvbnMgZm9yIGVycm9ycyBpbiBzdGFydHVwLmguIFNlZSBhbHNvIGJhY2t0cmFjZS5jICopXG5sZXQgZXJyb3JzID0gW3wgXCJcIjtcbiAgKCogRklMRV9OT1RfRk9VTkQgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIG5vdCBmb3VuZClcIjtcbiAgKCogQkFEX0JZVEVDT0RFICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBhcHBlYXJzIHRvIGJlIGNvcnJ1cHQpXCI7XG4gICgqIFdST05HX01BR0lDICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBoYXMgd3JvbmcgbWFnaWMgbnVtYmVyKVwiO1xuICAoKiBOT19GRFMgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIGNhbm5vdCBiZSBvcGVuZWQ7XFxuIFxcXG4gICAgICAtLSB0b28gbWFueSBvcGVuIGZpbGVzLiBUcnkgcnVubmluZyB3aXRoIE9DQU1MUlVOUEFSQU09Yj0yKVwiXG58XVxuXG5sZXQgZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciBleG4gcmF3X2JhY2t0cmFjZSA9XG4gIGVwcmludGYgXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uICVzXFxuXCIgKHRvX3N0cmluZyBleG4pO1xuICBwcmludF9yYXdfYmFja3RyYWNlIHN0ZGVyciByYXdfYmFja3RyYWNlO1xuICBsZXQgc3RhdHVzID0gZ2V0X2RlYnVnX2luZm9fc3RhdHVzICgpIGluXG4gIGlmIHN0YXR1cyA8IDAgdGhlblxuICAgIHByZXJyX2VuZGxpbmUgZXJyb3JzLihhYnMgc3RhdHVzKTtcbiAgZmx1c2ggc3RkZXJyXG5cbmxldCB1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciA9IHJlZiBkZWZhdWx0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyXG5cbmxldCBzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgZm4gPSB1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciA6PSBmblxuXG5sZXQgZW1wdHlfYmFja3RyYWNlIDogcmF3X2JhY2t0cmFjZSA9IFt8IHxdXG5cbmxldCB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKCkgPVxuICB0cnlcbiAgICBnZXRfcmF3X2JhY2t0cmFjZSAoKVxuICB3aXRoIF8gKCogT3V0X29mX21lbW9yeT8gKikgLT5cbiAgICBlbXB0eV9iYWNrdHJhY2VcblxubGV0IGhhbmRsZV91bmNhdWdodF9leGNlcHRpb24nIGV4biBkZWJ1Z2dlcl9pbl91c2UgPVxuICB0cnlcbiAgICAoKiBHZXQgdGhlIGJhY2t0cmFjZSBub3csIGluIGNhc2Ugb25lIG9mIHRoZSBbYXRfZXhpdF0gZnVuY3Rpb25cbiAgICAgICBkZXN0cm95cyBpdC4gKilcbiAgICBsZXQgcmF3X2JhY2t0cmFjZSA9XG4gICAgICBpZiBkZWJ1Z2dlcl9pbl91c2UgKCogU2FtZSB0ZXN0IGFzIGluIFtydW50aW1lL3ByaW50ZXhjLmNdICopIHRoZW5cbiAgICAgICAgZW1wdHlfYmFja3RyYWNlXG4gICAgICBlbHNlXG4gICAgICAgIHRyeV9nZXRfcmF3X2JhY2t0cmFjZSAoKVxuICAgIGluXG4gICAgKHRyeSBTdGRsaWIuZG9fYXRfZXhpdCAoKSB3aXRoIF8gLT4gKCkpO1xuICAgIHRyeVxuICAgICAgIXVuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIGV4biByYXdfYmFja3RyYWNlXG4gICAgd2l0aCBleG4nIC0+XG4gICAgICBsZXQgcmF3X2JhY2t0cmFjZScgPSB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgIGVwcmludGYgXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uICVzXFxuXCIgKHRvX3N0cmluZyBleG4pO1xuICAgICAgcHJpbnRfcmF3X2JhY2t0cmFjZSBzdGRlcnIgcmF3X2JhY2t0cmFjZTtcbiAgICAgIGVwcmludGYgXCJGYXRhbCBlcnJvciBpbiB1bmNhdWdodCBleGNlcHRpb24gaGFuZGxlcjogZXhjZXB0aW9uICVzXFxuXCJcbiAgICAgICAgKHRvX3N0cmluZyBleG4nKTtcbiAgICAgIHByaW50X3Jhd19iYWNrdHJhY2Ugc3RkZXJyIHJhd19iYWNrdHJhY2UnO1xuICAgICAgZmx1c2ggc3RkZXJyXG4gIHdpdGhcbiAgICB8IE91dF9vZl9tZW1vcnkgLT5cbiAgICAgICAgcHJlcnJfZW5kbGluZVxuICAgICAgICAgIFwiRmF0YWwgZXJyb3I6IG91dCBvZiBtZW1vcnkgaW4gdW5jYXVnaHQgZXhjZXB0aW9uIGhhbmRsZXJcIlxuXG4oKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBbY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25dIGluXG4gICBbcnVudGltZS9wcmludGV4Yy5jXSB3aGljaCBleHBlY3RzIG5vIGV4Y2VwdGlvbiBpcyByYWlzZWQuICopXG5sZXQgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbiBleG4gZGVidWdnZXJfaW5fdXNlID1cbiAgdHJ5XG4gICAgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbicgZXhuIGRlYnVnZ2VyX2luX3VzZVxuICB3aXRoIF8gLT5cbiAgICAoKiBUaGVyZSBpcyBub3QgbXVjaCB3ZSBjYW4gZG8gYXQgdGhpcyBwb2ludCAqKVxuICAgICgpXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+ICdhIC0+IHVuaXRcbiAgPSBcImNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWVcIlxuXG5sZXQgKCkgPVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBcIlByaW50ZXhjLmhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cIlxuICAgIGhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jaGVja19ib3VuZCIsImNhbWxfZ2V0X2V4Y2VwdGlvbl9yYXdfYmFja3RyYSIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfb2JqX3RhZyIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsNSIsImEyIiwiYTMiLCJhNCIsImNhbWxfY2FsbDciLCJhNSIsImE2IiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWJfUHJpbnRmIiwiU3RkbGliX0F0b21pYyIsIlN0ZGxpYiIsIlN0ZGxpYl9CdWZmZXIiLCJTdGRsaWJfT2JqIiwicHJpbnRlcnMiLCJmaWVsZCIsIngiLCJpIiwiY3N0Iiwib3RoZXJfZmllbGRzIiwidXNlX3ByaW50ZXJzIiwicGFyYW0iLCJ0bCIsImhkIiwidmFsIiwicyIsInN0cmluZ19vZl9leHRlbnNpb25fY29uc3RydWN0byIsInQiLCJjb25zdHJ1Y3RvciIsIm1hdGNoIiwiZmllbGRzX29wdCIsImNzdF9jaGFyYWN0ZXJzIiwibG9jZm10IiwidG9fc3RyaW5nX2RlZmF1bHQiLCJjaGFyIiwibGluZSIsImZpbGUiLCJ0b19zdHJpbmciLCJlIiwiY3N0X1VuY2F1Z2h0X2V4Y2VwdGlvbiIsImNzdF9VbmNhdWdodF9leGNlcHRpb25fcyIsInByaW50IiwiZmN0IiwiYXJnIiwiY2F0Y2gkIiwicmF3X2JhY2t0cmFjZV9lbnRyaWVzIiwiYnQiLCJjb252ZXJ0X3Jhd19iYWNrdHJhY2UiLCJmb3JtYXRfYmFja3RyYWNlX3Nsb3QiLCJwb3MiLCJzbG90IiwiaW5mbyIsImlzX3JhaXNlIiwibGluZXMiLCJjc3RfcyIsImNzdF9Qcm9ncmFtX25vdF9saW5rZWRfd2l0aF9nXyIsInByaW50X3Jhd19iYWNrdHJhY2UiLCJvdXRjaGFuIiwicmF3X2JhY2t0cmFjZSIsImJhY2t0cmFjZSIsImEiLCJzdHIiLCJwcmludF9iYWNrdHJhY2UiLCJyYXdfYmFja3RyYWNlX3RvX3N0cmluZyIsImIiLCJiYWNrdHJhY2Vfc2xvdF9pc19yYWlzZSIsImJhY2t0cmFjZV9zbG90X2lzX2lubGluZSIsImJhY2t0cmFjZV9zbG90X2xvY2F0aW9uIiwiYmFja3RyYWNlX3Nsb3RfZGVmbmFtZSIsImJhY2t0cmFjZV9zbG90cyIsImJhY2t0cmFjZV9zbG90c19vZl9yYXdfZW50cnkiLCJlbnRyeSIsInJhd19iYWNrdHJhY2VfbGVuZ3RoIiwiZ2V0X2JhY2t0cmFjZSIsInJlZ2lzdGVyX3ByaW50ZXIiLCJmbiIsIm9sZF9wcmludGVycyIsIm5ld19wcmludGVycyIsInN1Y2Nlc3MiLCJleG5fc2xvdCIsImV4bl9zbG90X2lkIiwiZXhuX3Nsb3RfbmFtZSIsImVycm9ycyIsImNzdF9GYXRhbF9lcnJvcl9leGNlcHRpb24iLCJjc3RfRmF0YWxfZXJyb3JfZXhjZXB0aW9uX3MiLCJkZWZhdWx0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW4iLCJleG4iLCJzdGF0dXMiLCJ1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsInNldF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsImVtcHR5X2JhY2t0cmFjZSIsImhhbmRsZV91bmNhdWdodF9leGNlcHRpb24iLCJkZWJ1Z2dlcl9pbl91c2UiLCJTdGRsaWJfUHJpbnRleGMiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyxpQ0FBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRSxJQUFBQyxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQVIsR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUMsSUFBQUMsSUFBQUUsSUFBQUM7QUFBQUEsSUFBQTtB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eldOO0FBQUE7QUFBQTtBQUFBO0FBQUEsU0M0V1E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFVBQUFBLEtBVUo7QUFBQSxHQUFFO0FBQUEsR0FNSjtBQUFBO0FBQUE7QUFBQSxJQUFBTztBQUFBQSxNQUMyQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVEN1g3QiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjI0NDMzLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvZnVuLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leHRlcm5hbCBpZCA6ICdhIC0+ICdhID0gXCIlaWRlbnRpdHlcIlxubGV0IGNvbnN0IGMgXyA9IGNcbmxldCBjb21wb3NlIGYgZyB4ID0gZiAoZyB4KVxubGV0IGZsaXAgZiB4IHkgPSBmIHkgeFxubGV0IG5lZ2F0ZSBwIHYgPSBub3QgKHAgdilcblxuZXhjZXB0aW9uIEZpbmFsbHlfcmFpc2VkIG9mIGV4blxuXG5sZXQgKCkgPSBQcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIEBAIGZ1bmN0aW9uXG58IEZpbmFsbHlfcmFpc2VkIGV4biAtPiBTb21lIChcIkZ1bi5GaW5hbGx5X3JhaXNlZDogXCIgXiBQcmludGV4Yy50b19zdHJpbmcgZXhuKVxufCBfIC0+IE5vbmVcblxubGV0IHByb3RlY3QgfihmaW5hbGx5IDogdW5pdCAtPiB1bml0KSB3b3JrID1cbiAgbGV0IGZpbmFsbHlfbm9fZXhuICgpID1cbiAgICB0cnkgZmluYWxseSAoKSB3aXRoIGUgLT5cbiAgICAgIGxldCBidCA9IFByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgICBQcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSAoRmluYWxseV9yYWlzZWQgZSkgYnRcbiAgaW5cbiAgbWF0Y2ggd29yayAoKSB3aXRoXG4gIHwgcmVzdWx0IC0+IGZpbmFsbHlfbm9fZXhuICgpIDsgcmVzdWx0XG4gIHwgZXhjZXB0aW9uIHdvcmtfZXhuIC0+XG4gICAgICBsZXQgd29ya19idCA9IFByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgICBmaW5hbGx5X25vX2V4biAoKSA7XG4gICAgICBQcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSB3b3JrX2V4biB3b3JrX2J0XG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlIiwiY2FtbF93cmFwX2V4Y2VwdGlvbiIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYl9QcmludGV4YyIsIlN0ZGxpYiIsImNvbnN0JCIsImMiLCJwYXJhbSIsImNvbXBvc2UiLCJnIiwieCIsImZsaXAiLCJ5IiwibmVnYXRlIiwicCIsInYiLCJGaW5hbGx5X3JhaXNlZCIsImV4biIsImR1bW15IiwicHJvdGVjdCIsImZpbmFsbHkkIiwid29yayIsImZpbmFsbHlfbm9fZXhuIiwiZSIsImJ0IiwicmVzdWx0Iiwid29ya19leG4iLCJ3b3JrX2J0Il0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsSUFBQUMsNkJBQUE7QUFBQSxJQUFBQyxzQkFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsWUFBQUMsT0FBQUMsR0FBQUMsT0NnQmdCLFNBQUM7QUFBQSxZQUFBQyxRQUFBVixHQUFBVyxHQUFBQyxHQUNLLE9BQUssY0FBTCxpQkFBSztBQUFBLFlBQUFDLEtBQUFiLEdBQUFZLEdBQUFFLEdBQ1YsMEJBQUs7QUFBQSxZQUFBQyxPQUFBQyxHQUFBQyxHQUNELDJCQUFLO0FBQUE7QUFBQSxJQUFBQztBQUFBQSxNRG5CMUI7QUFBQSxHQ3VCUztBQUFBO0FBQUEsY0FBQVQ7QUFBQUEsTUFBNkIsZ0NBRS9CO0FBQUEsVUFBQVUsTUFGK0IsY0FDaUI7QUFBQSxNQUExQiw0REFBaUQ7QUFBQSxLQUNuRTtBQUFBLE9BQUFDLFFBQUE7QUFBQSxZQUFBQyxRQUFBQyxVQUFBQztBQUFBQSxhQUFBQyxlQUFBZjtBQUFBQSxLQUlQLElBQUk7QUFBQSxXQUFBZ0I7QUFBQUE7QUFBQUEsT0FBQUEsSUQ3QlI7QUFBQSxPQUFBQyxLQzhCZTtBQUFBLE9BQUFQLE1BQ1Q7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFtRDtBQUFBLElBRXZELFFBQUFRLFNBQU07QUFBQSxVQUFBQztBQUFBQTtBQUFBQSxNQUFBQSxXRGpDUjtBQUFBLE1BQUFDLFVDb0NvQjtBQUFBLEtBQ2Q7QUFBQSxLQUFpQjtBQUFBO0FBQUE7QUFBQSxJQUhUO0FBQUEsSUFBaUI7QUFBQSxHQUlxQjtBQUFBLEdBYnpDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFRHpCWCIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjI0NTA0LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvaW5fY2hhbm5lbC5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjEgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gaW5fY2hhbm5lbFxuXG50eXBlIG9wZW5fZmxhZyA9IFN0ZGxpYi5vcGVuX2ZsYWcgPVxuICB8IE9wZW5fcmRvbmx5XG4gIHwgT3Blbl93cm9ubHlcbiAgfCBPcGVuX2FwcGVuZFxuICB8IE9wZW5fY3JlYXRcbiAgfCBPcGVuX3RydW5jXG4gIHwgT3Blbl9leGNsXG4gIHwgT3Blbl9iaW5hcnlcbiAgfCBPcGVuX3RleHRcbiAgfCBPcGVuX25vbmJsb2NrXG5cbmxldCBzdGRpbiA9IFN0ZGxpYi5zdGRpblxubGV0IG9wZW5fYmluID0gU3RkbGliLm9wZW5faW5fYmluXG5sZXQgb3Blbl90ZXh0ID0gU3RkbGliLm9wZW5faW5cbmxldCBvcGVuX2dlbiA9IFN0ZGxpYi5vcGVuX2luX2dlblxuXG5sZXQgd2l0aF9vcGVuIG9wZW5mdW4gcyBmID1cbiAgbGV0IGljID0gb3BlbmZ1biBzIGluXG4gIEZ1bi5wcm90ZWN0IH5maW5hbGx5OihmdW4gKCkgLT4gU3RkbGliLmNsb3NlX2luX25vZXJyIGljKVxuICAgIChmdW4gKCkgLT4gZiBpYylcblxubGV0IHdpdGhfb3Blbl9iaW4gcyBmID1cbiAgd2l0aF9vcGVuIFN0ZGxpYi5vcGVuX2luX2JpbiBzIGZcblxubGV0IHdpdGhfb3Blbl90ZXh0IHMgZiA9XG4gIHdpdGhfb3BlbiBTdGRsaWIub3Blbl9pbiBzIGZcblxubGV0IHdpdGhfb3Blbl9nZW4gZmxhZ3MgcGVybSBzIGYgPVxuICB3aXRoX29wZW4gKFN0ZGxpYi5vcGVuX2luX2dlbiBmbGFncyBwZXJtKSBzIGZcblxubGV0IHNlZWsgPSBTdGRsaWIuTGFyZ2VGaWxlLnNlZWtfaW5cbmxldCBwb3MgPSBTdGRsaWIuTGFyZ2VGaWxlLnBvc19pblxubGV0IGxlbmd0aCA9IFN0ZGxpYi5MYXJnZUZpbGUuaW5fY2hhbm5lbF9sZW5ndGhcbmxldCBjbG9zZSA9IFN0ZGxpYi5jbG9zZV9pblxubGV0IGNsb3NlX25vZXJyID0gU3RkbGliLmNsb3NlX2luX25vZXJyXG5cbmxldCBpbnB1dF9jaGFyIGljID1cbiAgbWF0Y2ggU3RkbGliLmlucHV0X2NoYXIgaWMgd2l0aFxuICB8IGMgLT4gU29tZSBjXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxubGV0IGlucHV0X2J5dGUgaWMgPVxuICBtYXRjaCBTdGRsaWIuaW5wdXRfYnl0ZSBpYyB3aXRoXG4gIHwgbiAtPiBTb21lIG5cbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gTm9uZVxuXG5sZXQgaW5wdXRfbGluZSBpYyA9XG4gIG1hdGNoIFN0ZGxpYi5pbnB1dF9saW5lIGljIHdpdGhcbiAgfCBzIC0+IFNvbWUgc1xuICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiBOb25lXG5cbmxldCBpbnB1dCA9IFN0ZGxpYi5pbnB1dFxuXG5leHRlcm5hbCB1bnNhZmVfaW5wdXRfYmlnYXJyYXkgOlxuICB0IC0+IF8gQmlnYXJyYXkuQXJyYXkxLnQgLT4gaW50IC0+IGludCAtPiBpbnRcbiAgPSBcImNhbWxfbWxfaW5wdXRfYmlnYXJyYXlcIlxuXG5sZXQgaW5wdXRfYmlnYXJyYXkgaWMgYnVmIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gQmlnYXJyYXkuQXJyYXkxLmRpbSBidWYgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcImlucHV0X2JpZ2FycmF5XCJcbiAgZWxzZSB1bnNhZmVfaW5wdXRfYmlnYXJyYXkgaWMgYnVmIG9mcyBsZW5cblxubGV0IHJlYWxseV9pbnB1dCBpYyBidWYgcG9zIGxlbiA9XG4gIG1hdGNoIFN0ZGxpYi5yZWFsbHlfaW5wdXQgaWMgYnVmIHBvcyBsZW4gd2l0aFxuICB8ICgpIC0+IFNvbWUgKClcbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gTm9uZVxuXG5sZXQgcmVjIHVuc2FmZV9yZWFsbHlfaW5wdXRfYmlnYXJyYXkgaWMgYnVmIG9mcyBsZW4gPVxuICBpZiBsZW4gPD0gMCB0aGVuIFNvbWUgKCkgZWxzZSBiZWdpblxuICAgIGxldCByID0gdW5zYWZlX2lucHV0X2JpZ2FycmF5IGljIGJ1ZiBvZnMgbGVuIGluXG4gICAgaWYgciA9IDBcbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIHVuc2FmZV9yZWFsbHlfaW5wdXRfYmlnYXJyYXkgaWMgYnVmIChvZnMgKyByKSAobGVuIC0gcilcbiAgZW5kXG5cbmxldCByZWFsbHlfaW5wdXRfYmlnYXJyYXkgaWMgYnVmIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gQmlnYXJyYXkuQXJyYXkxLmRpbSBidWYgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcInJlYWxseV9pbnB1dF9iaWdhcnJheVwiXG4gIGVsc2UgdW5zYWZlX3JlYWxseV9pbnB1dF9iaWdhcnJheSBpYyBidWYgb2ZzIGxlblxuXG5sZXQgcmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4gPVxuICBtYXRjaCBTdGRsaWIucmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4gd2l0aFxuICB8IHMgLT4gU29tZSBzXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxuKCogUmVhZCB1cCB0byBbbGVuXSBieXRlcyBpbnRvIFtidWZdLCBzdGFydGluZyBhdCBbb2ZzXS4gUmV0dXJuIHRvdGFsIGJ5dGVzXG4gICByZWFkLiAqKVxubGV0IHJlYWRfdXB0byBpYyBidWYgb2ZzIGxlbiA9XG4gIGxldCByZWMgbG9vcCBvZnMgbGVuID1cbiAgICBpZiBsZW4gPSAwIHRoZW4gb2ZzXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBTdGRsaWIuaW5wdXQgaWMgYnVmIG9mcyBsZW4gaW5cbiAgICAgIGlmIHIgPSAwIHRoZW5cbiAgICAgICAgb2ZzXG4gICAgICBlbHNlXG4gICAgICAgIGxvb3AgKG9mcyArIHIpIChsZW4gLSByKVxuICAgIGVuZFxuICBpblxuICBsb29wIG9mcyBsZW4gLSBvZnNcblxuKCogQmVzdCBlZmZvcnQgYXR0ZW1wdCB0byByZXR1cm4gYSBidWZmZXIgd2l0aCA+PSAob2ZzICsgbikgYnl0ZXMgb2Ygc3RvcmFnZSxcbiAgIGFuZCBzdWNoIHRoYXQgaXQgY29pbmNpZGVzIHdpdGggW2J1Zl0gYXQgaW5kaWNlcyA8IFtvZnNdLlxuXG4gICBUaGUgcmV0dXJuZWQgYnVmZmVyIGlzIGVxdWFsIHRvIFtidWZdIGl0c2VsZiBpZiBpdCBhbHJlYWR5IGhhcyBzdWZmaWNpZW50XG4gICBmcmVlIHNwYWNlLlxuXG4gICBUaGUgcmV0dXJuZWQgYnVmZmVyIG1heSBoYXZlICpmZXdlciogdGhhbiBbb2ZzICsgbl0gYnl0ZXMgb2Ygc3RvcmFnZSBpZiB0aGlzXG4gICBudW1iZXIgaXMgPiBbU3lzLm1heF9zdHJpbmdfbGVuZ3RoXS4gSG93ZXZlciB0aGUgcmV0dXJuZWQgYnVmZmVyIHdpbGxcbiAgICphbHdheXMqIGhhdmUgPiBbb2ZzXSBieXRlcyBvZiBzdG9yYWdlLiBJbiB0aGUgbGltaXRpbmcgY2FzZSB3aGVuIFtvZnMgPSBsZW5cbiAgID0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXSAoc28gdGhhdCBpdCBpcyBub3QgcG9zc2libGUgdG8gcmVzaXplIHRoZSBidWZmZXIgYXRcbiAgIGFsbCksIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQuICopXG5cbmxldCBlbnN1cmUgYnVmIG9mcyBuID1cbiAgbGV0IGxlbiA9IEJ5dGVzLmxlbmd0aCBidWYgaW5cbiAgaWYgbGVuID49IG9mcyArIG4gdGhlbiBidWZcbiAgZWxzZSBiZWdpblxuICAgIGxldCBuZXdfbGVuID0gcmVmIGxlbiBpblxuICAgIHdoaWxlICFuZXdfbGVuIDwgb2ZzICsgbiBkb1xuICAgICAgbmV3X2xlbiA6PSAyICogIW5ld19sZW4gKyAxXG4gICAgZG9uZTtcbiAgICBsZXQgbmV3X2xlbiA9ICFuZXdfbGVuIGluXG4gICAgbGV0IG5ld19sZW4gPVxuICAgICAgaWYgbmV3X2xlbiA8PSBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlblxuICAgICAgICBuZXdfbGVuXG4gICAgICBlbHNlIGlmIG9mcyA8IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICAgIFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgICAgZWxzZVxuICAgICAgICBmYWlsd2l0aCBcIkluX2NoYW5uZWwuaW5wdXRfYWxsOiBjaGFubmVsIGNvbnRlbnQgXFxcbiAgICAgICAgICAgICAgICAgIGlzIGxhcmdlciB0aGFuIG1heGltdW0gc3RyaW5nIGxlbmd0aFwiXG4gICAgaW5cbiAgICBsZXQgbmV3X2J1ZiA9IEJ5dGVzLmNyZWF0ZSBuZXdfbGVuIGluXG4gICAgQnl0ZXMuYmxpdCBidWYgMCBuZXdfYnVmIDAgb2ZzO1xuICAgIG5ld19idWZcbiAgZW5kXG5cbmxldCBpbnB1dF9hbGwgaWMgPVxuICBsZXQgY2h1bmtfc2l6ZSA9IFN5cy5pb19idWZmZXJfc2l6ZSBpblxuICBsZXQgaW5pdGlhbF9zaXplID1cbiAgICB0cnlcbiAgICAgIFN0ZGxpYi5pbl9jaGFubmVsX2xlbmd0aCBpYyAtIFN0ZGxpYi5wb3NfaW4gaWNcbiAgICB3aXRoIFN5c19lcnJvciBfIC0+XG4gICAgICAtMVxuICBpblxuICBsZXQgaW5pdGlhbF9zaXplID0gaWYgaW5pdGlhbF9zaXplIDwgMCB0aGVuIGNodW5rX3NpemUgZWxzZSBpbml0aWFsX3NpemUgaW5cbiAgbGV0IGluaXRpYWxfc2l6ZSA9XG4gICAgaWYgaW5pdGlhbF9zaXplIDw9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICBpbml0aWFsX3NpemVcbiAgICBlbHNlXG4gICAgICBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgaW5cbiAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBpbml0aWFsX3NpemUgaW5cbiAgbGV0IG5yZWFkID0gcmVhZF91cHRvIGljIGJ1ZiAwIGluaXRpYWxfc2l6ZSBpblxuICBpZiBucmVhZCA8IGluaXRpYWxfc2l6ZSB0aGVuICgqIEVPRiByZWFjaGVkLCBidWZmZXIgcGFydGlhbGx5IGZpbGxlZCAqKVxuICAgIEJ5dGVzLnN1Yl9zdHJpbmcgYnVmIDAgbnJlYWRcbiAgZWxzZSBiZWdpbiAoKiBucmVhZCA9IGluaXRpYWxfc2l6ZSwgbWF5YmUgRU9GIHJlYWNoZWQgKilcbiAgICBtYXRjaCBTdGRsaWIuaW5wdXRfY2hhciBpYyB3aXRoXG4gICAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT5cbiAgICAgICAgKCogRU9GIHJlYWNoZWQsIGJ1ZmZlciBpcyBjb21wbGV0ZWx5IGZpbGxlZCAqKVxuICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1ZlxuICAgIHwgYyAtPlxuICAgICAgICAoKiBFT0Ygbm90IHJlYWNoZWQgKilcbiAgICAgICAgbGV0IHJlYyBsb29wIGJ1ZiBvZnMgPVxuICAgICAgICAgIGxldCBidWYgPSBlbnN1cmUgYnVmIG9mcyBjaHVua19zaXplIGluXG4gICAgICAgICAgbGV0IHJlbSA9IEJ5dGVzLmxlbmd0aCBidWYgLSBvZnMgaW5cbiAgICAgICAgICAoKiBbcmVtXSBjYW4gYmUgPCBbY2h1bmtfc2l6ZV0gaWYgYnVmZmVyIHNpemUgY2xvc2UgdG9cbiAgICAgICAgICAgICBbU3lzLm1heF9zdHJpbmdfbGVuZ3RoXSAqKVxuICAgICAgICAgIGxldCByID0gcmVhZF91cHRvIGljIGJ1ZiBvZnMgcmVtIGluXG4gICAgICAgICAgaWYgciA8IHJlbSB0aGVuICgqIEVPRiByZWFjaGVkICopXG4gICAgICAgICAgICBCeXRlcy5zdWJfc3RyaW5nIGJ1ZiAwIChvZnMgKyByKVxuICAgICAgICAgIGVsc2UgKCogciA9IHJlbSAqKVxuICAgICAgICAgICAgbG9vcCBidWYgKG9mcyArIHJlbSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJ1ZiA9IGVuc3VyZSBidWYgbnJlYWQgKGNodW5rX3NpemUgKyAxKSBpblxuICAgICAgICBCeXRlcy5zZXQgYnVmIG5yZWFkIGM7XG4gICAgICAgIGxvb3AgYnVmIChucmVhZCArIDEpXG4gIGVuZFxuXG5sZXQgW0B0YWlsX21vZF9jb25zXSByZWMgaW5wdXRfbGluZXMgaWMgPVxuICBtYXRjaCBTdGRsaWIuaW5wdXRfbGluZSBpYyB3aXRoXG4gIHwgbGluZSAtPiBsaW5lIDo6IGlucHV0X2xpbmVzIGljXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IFtdXG5cbmxldCByZWMgZm9sZF9saW5lcyBmIGFjY3UgaWMgPVxuICBtYXRjaCBTdGRsaWIuaW5wdXRfbGluZSBpYyB3aXRoXG4gIHwgbGluZSAtPiBmb2xkX2xpbmVzIGYgKGYgYWNjdSBsaW5lKSBpY1xuICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiBhY2N1XG5cbmxldCBzZXRfYmluYXJ5X21vZGUgPSBTdGRsaWIuc2V0X2JpbmFyeV9tb2RlX2luXG5cbmV4dGVybmFsIGlzX2JpbmFyeV9tb2RlIDogaW5fY2hhbm5lbCAtPiBib29sID0gXCJjYW1sX21sX2lzX2JpbmFyeV9tb2RlXCJcblxuZXh0ZXJuYWwgaXNhdHR5IDogdCAtPiBib29sID0gXCJjYW1sX3N5c19pc2F0dHlcIlxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2JhX2RpbV8xIiwiY2FtbF9jcmVhdGVfYnl0ZXMiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX21sX2J5dGVzX2xlbmd0aCIsImNhbWxfbWxfaW5wdXRfYmlnYXJyYXkiLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImdsb2JhbF9kYXRhIiwiU3RkbGliIiwiU3RkbGliX0J5dGVzIiwiU3RkbGliX1N5cyIsIlN0ZGxpYl9GdW4iLCJzdGRpbiIsIm9wZW5fYmluIiwib3Blbl90ZXh0Iiwib3Blbl9nZW4iLCJ3aXRoX29wZW4iLCJvcGVuZnVuIiwicyIsImljIiwicGFyYW0iLCJ3aXRoX29wZW5fYmluIiwid2l0aF9vcGVuX3RleHQiLCJ3aXRoX29wZW5fZ2VuIiwiZmxhZ3MiLCJwZXJtIiwic2VlayIsInBvcyIsImxlbmd0aCIsImNsb3NlIiwiY2xvc2Vfbm9lcnIiLCJpbnB1dF9jaGFyIiwiYyIsImV4biIsImlucHV0X2J5dGUiLCJuIiwiaW5wdXRfbGluZSIsImlucHV0IiwiaW5wdXRfYmlnYXJyYXkiLCJidWYiLCJvZnMiLCJsZW4iLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfYmlnYXJyYXkiLCJyIiwicmVhbGx5X2lucHV0X3N0cmluZyIsInJlYWRfdXB0byIsImVuc3VyZSIsIm5ld19sZW4iLCJuZXdfYnVmIiwiaW5wdXRfYWxsIiwiY2h1bmtfc2l6ZSIsImluaXRpYWxfc2l6ZSIsIm5yZWFkIiwicmVtIiwiaW5wdXRfbGluZXMiLCJsaW5lIiwiYmxvY2siLCJkc3QiLCJvZmZzZXQiLCJmb2xkX2xpbmVzIiwiYWNjdSIsInNldF9iaW5hcnlfbW9kZSIsIlN0ZGxpYl9Jbl9jaGFubmVsIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLElBQUFDLHVCQUFBO0FBQUEsSUFBQUMseUJBQUE7QUFBQSxJQUFBQyxzQkFBQTtBQUFBLFlBQUFDLFdBQUFD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QSxVQUFBQSxRRG5NUjtBQUFBO0FBQUEsTUNxTTZCO0FBQUEsTUFESztBQUFBO0FBQUEsU0FBQXlCLFFBQXRCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxHQUNtQjtBQUFBLFlBQUFFLFdBQUF6RCxHQUFBMEQsUUFBQTFDO0FBQUFBLFFBQUEwQyxPQUc3QjtBQUFBO0FBQUEsYUFBQUwsT0FBTTtBQUFBLFdBQUF2QjtBQUFBQSxVQUFBQSxNRHhNUjtBQUFBLDZCQzBNNkI7QUFBQSxNRDFNN0I7QUFBQTtBQUFBLFNBQUE0QixTQ3lNeUI7QUFBQSxLQUFhO0FBQUE7QUFBQSxHQUNMO0FBQUE7QUFBQSxJQUFBQyxrQkQxTWpDO0FBQUEsSUFBQUM7QUFBQUEsTUFBQSIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjI0NzcxLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvZGlnZXN0Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBVdGlsaXR5IGZ1bmN0aW9ucyAqKVxuXG5sZXQgaGV4X29mX3N0cmluZyBkID1cbiAgbGV0IGNoYXJfaGV4IG4gPVxuICAgIENoYXIuY2hyIChpZiBuIDwgMTAgdGhlbiBDaGFyLmNvZGUgJzAnICsgblxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBDaGFyLmNvZGUgJ2EnICsgbiAtIDEwKSBpblxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBkIGluXG4gIGxldCByZXN1bHQgPSBCeXRlcy5jcmVhdGUgKGxlbiAqIDIpIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgbGV0IHggPSBDaGFyLmNvZGUgZC5baV0gaW5cbiAgICBCeXRlcy51bnNhZmVfc2V0IHJlc3VsdCAoaSoyKSAoY2hhcl9oZXggKHggbHNyIDQpKTtcbiAgICBCeXRlcy51bnNhZmVfc2V0IHJlc3VsdCAoaSoyKzEpIChjaGFyX2hleCAoeCBsYW5kIDB4MGYpKTtcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXN1bHRcblxubGV0IHN0cmluZ19vZl9oZXggcyA9XG4gIGxldCBkaWdpdCBjID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICcwJy4uJzknIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICcwJ1xuICAgIHwgJ0EnLi4nRicgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJ0EnICsgMTBcbiAgICB8ICdhJy4uJ2YnIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICdhJyArIDEwXG4gICAgfCBfIC0+IGludmFsaWRfYXJnIFwiRGlnZXN0Lm9mX2hleFwiIGluXG4gIGxldCBieXRlIGkgPSBkaWdpdCBzLltpXSBsc2wgNCArIGRpZ2l0IHMuW2krMV0gaW5cbiAgU3RyaW5nLmluaXQgKFN0cmluZy5sZW5ndGggcyAvIDIpIChmdW4gaSAtPiBDaGFyLmNociAoYnl0ZSAoMiAqIGkpKSlcblxuKCogR2VuZXJpYyBpbnRlcmZhY2UgKilcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIHQgPSBzdHJpbmdcbiAgdmFsIGhhc2hfbGVuZ3RoIDogaW50XG4gIHZhbCBjb21wYXJlIDogdCAtPiB0IC0+IGludFxuICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgdmFsIGJ5dGVzIDogYnl0ZXMgLT4gdFxuICB2YWwgc3Vic3RyaW5nIDogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdFxuICB2YWwgc3ViYnl0ZXMgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHRcbiAgdmFsIGNoYW5uZWwgOiBpbl9jaGFubmVsIC0+IGludCAtPiB0XG4gIHZhbCBmaWxlIDogc3RyaW5nIC0+IHRcbiAgdmFsIG91dHB1dCA6IG91dF9jaGFubmVsIC0+IHQgLT4gdW5pdFxuICB2YWwgaW5wdXQgOiBpbl9jaGFubmVsIC0+IHRcbiAgdmFsIHRvX2hleCA6IHQgLT4gc3RyaW5nXG4gIHZhbCBvZl9oZXggOiBzdHJpbmcgLT4gdFxuZW5kXG5cbigqIEJMQUtFMiBoYXNoaW5nLCBwYXJhbWV0ZXJpemVkIGJ5IGhhc2ggc2l6ZSAqKVxuXG5tb2R1bGUgQkxBS0UyIChYOiBzaWcgdmFsIGhhc2hfbGVuZ3RoIDogaW50IGVuZCkgOiBTID0gc3RydWN0XG5cbiAgdHlwZSB0ID0gc3RyaW5nXG5cbiAgbGV0IGhhc2hfbGVuZ3RoID1cbiAgICBpZiBYLmhhc2hfbGVuZ3RoIDwgMSB8fCBYLmhhc2hfbGVuZ3RoID4gNjRcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LkJMQUtFMjogd3JvbmcgaGFzaCBzaXplXCI7XG4gICAgWC5oYXNoX2xlbmd0aFxuXG4gIGxldCBjb21wYXJlID0gU3RyaW5nLmNvbXBhcmVcbiAgbGV0IGVxdWFsID0gU3RyaW5nLmVxdWFsXG5cbiAgdHlwZSBzdGF0ZVxuXG4gIGV4dGVybmFsIGNyZWF0ZV9nZW46IGludCAtPiBzdHJpbmcgLT4gc3RhdGUgPSBcImNhbWxfYmxha2UyX2NyZWF0ZVwiXG4gIGV4dGVybmFsIHVwZGF0ZTogc3RhdGUgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2JsYWtlMl91cGRhdGVcIlxuICBleHRlcm5hbCBmaW5hbDogc3RhdGUgLT4gaW50IC0+IHQgPSBcImNhbWxfYmxha2UyX2ZpbmFsXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3N0cmluZzogaW50IC0+IHN0cmluZyAtPiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB0XG4gICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGFrZTJfc3RyaW5nXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2J5dGVzOiBpbnQgLT4gc3RyaW5nIC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdFxuICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxha2UyX2J5dGVzXCJcblxuICBsZXQgY3JlYXRlICgpID0gY3JlYXRlX2dlbiBoYXNoX2xlbmd0aCBcIlwiXG5cbiAgbGV0IHN0cmluZyBzdHIgPVxuICAgIHVuc2FmZV9zdHJpbmcgaGFzaF9sZW5ndGggXCJcIiBzdHIgMCAoU3RyaW5nLmxlbmd0aCBzdHIpXG5cbiAgbGV0IGJ5dGVzIGIgPVxuICAgIHVuc2FmZV9ieXRlcyBoYXNoX2xlbmd0aCBcIlwiIGIgMCAoQnl0ZXMubGVuZ3RoIGIpXG5cbiAgbGV0IHN1YnN0cmluZyBzdHIgb2ZzIGxlbiA9XG4gICAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IFN0cmluZy5sZW5ndGggc3RyIC0gbGVuXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC5zdWJzdHJpbmdcIjtcbiAgICB1bnNhZmVfc3RyaW5nIGhhc2hfbGVuZ3RoIFwiXCIgc3RyIG9mcyBsZW5cblxuICBsZXQgc3ViYnl0ZXMgYiBvZnMgbGVuID1cbiAgICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gQnl0ZXMubGVuZ3RoIGIgLSBsZW5cbiAgICB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LnN1YmJ5dGVzXCI7XG4gICAgdW5zYWZlX2J5dGVzIGhhc2hfbGVuZ3RoIFwiXCIgYiBvZnMgbGVuXG5cbiAgbGV0IGNoYW5uZWwgaWMgdG9yZWFkID1cbiAgICBsZXQgYnVmX3NpemUgPSA0MDk2IGluXG4gICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBidWZfc2l6ZSBpblxuICAgIGxldCBjdHggPSBjcmVhdGUgKCkgaW5cbiAgICBpZiB0b3JlYWQgPCAwIHRoZW4gYmVnaW5cbiAgICAgIGxldCByZWMgZG9fcmVhZCAoKSA9XG4gICAgICAgIGxldCBuID0gSW5fY2hhbm5lbC5pbnB1dCBpYyBidWYgMCBidWZfc2l6ZSBpblxuICAgICAgICBpZiBuID0gMFxuICAgICAgICB0aGVuIGZpbmFsIGN0eCBoYXNoX2xlbmd0aFxuICAgICAgICBlbHNlICh1cGRhdGUgY3R4IGJ1ZiAwIG47IGRvX3JlYWQgKCkpXG4gICAgICBpbiBkb19yZWFkICgpXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIGxldCByZWMgZG9fcmVhZCB0b3JlYWQgPVxuICAgICAgICBpZiB0b3JlYWQgPSAwIHRoZW4gZmluYWwgY3R4IGhhc2hfbGVuZ3RoIGVsc2UgYmVnaW5cbiAgICAgICAgICBsZXQgbiA9IEluX2NoYW5uZWwuaW5wdXQgaWMgYnVmIDAgKEludC5taW4gYnVmX3NpemUgdG9yZWFkKSBpblxuICAgICAgICAgIGlmIG4gPSAwXG4gICAgICAgICAgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZVxuICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgIHVwZGF0ZSBjdHggYnVmIDAgbjtcbiAgICAgICAgICAgIGRvX3JlYWQgKHRvcmVhZCAtIG4pXG4gICAgICAgICAgZW5kXG4gICAgICAgIGVuZFxuICAgICAgaW4gZG9fcmVhZCB0b3JlYWRcbiAgICBlbmRcblxuICBsZXQgZmlsZSBmaWxlbmFtZSA9XG4gICAgSW5fY2hhbm5lbC53aXRoX29wZW5fYmluIGZpbGVuYW1lIChmdW4gaWMgLT4gY2hhbm5lbCBpYyAoLTEpKVxuXG4gIGxldCBvdXRwdXQgY2hhbiBkaWdlc3QgPSBvdXRwdXRfc3RyaW5nIGNoYW4gZGlnZXN0XG5cbiAgbGV0IGlucHV0IGNoYW4gPSByZWFsbHlfaW5wdXRfc3RyaW5nIGNoYW4gaGFzaF9sZW5ndGhcblxuICBsZXQgdG9faGV4IGQgPVxuICAgIGlmIFN0cmluZy5sZW5ndGggZCA8PiBoYXNoX2xlbmd0aCB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LnRvX2hleFwiO1xuICAgIGhleF9vZl9zdHJpbmcgZFxuXG4gIGxldCBvZl9oZXggcyA9XG4gICAgaWYgU3RyaW5nLmxlbmd0aCBzIDw+IGhhc2hfbGVuZ3RoICogMiB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0Lm9mX2hleFwiO1xuICAgIHN0cmluZ19vZl9oZXggc1xuXG5lbmRcblxubW9kdWxlIEJMQUtFMTI4ID0gQkxBS0UyKHN0cnVjdCBsZXQgaGFzaF9sZW5ndGggPSAxNiBlbmQpXG5tb2R1bGUgQkxBS0UyNTYgPSBCTEFLRTIoc3RydWN0IGxldCBoYXNoX2xlbmd0aCA9IDMyIGVuZClcbm1vZHVsZSBCTEFLRTUxMiA9IEJMQUtFMihzdHJ1Y3QgbGV0IGhhc2hfbGVuZ3RoID0gNjQgZW5kKVxuXG4oKiBNRDUgaGFzaGluZyAqKVxuXG5tb2R1bGUgTUQ1ID0gc3RydWN0XG5cbiAgdHlwZSB0ID0gc3RyaW5nXG5cbiAgbGV0IGhhc2hfbGVuZ3RoID0gMTZcblxuICBsZXQgY29tcGFyZSA9IFN0cmluZy5jb21wYXJlXG4gIGxldCBlcXVhbCA9IFN0cmluZy5lcXVhbFxuXG4gIGV4dGVybmFsIHVuc2FmZV9zdHJpbmc6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHQgPSBcImNhbWxfbWQ1X3N0cmluZ1wiXG4gIGV4dGVybmFsIHVuc2FmZV9ieXRlczogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB0ID0gXCJjYW1sX21kNV9ieXRlc1wiXG4gIGV4dGVybmFsIGNoYW5uZWw6IGluX2NoYW5uZWwgLT4gaW50IC0+IHQgPSBcImNhbWxfbWQ1X2NoYW5cIlxuXG4gIGxldCBzdHJpbmcgc3RyID1cbiAgICB1bnNhZmVfc3RyaW5nIHN0ciAwIChTdHJpbmcubGVuZ3RoIHN0cilcblxuICBsZXQgYnl0ZXMgYiA9XG4gICAgdW5zYWZlX2J5dGVzIGIgMCAoQnl0ZXMubGVuZ3RoIGIpXG5cbiAgbGV0IHN1YnN0cmluZyBzdHIgb2ZzIGxlbiA9XG4gICAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IFN0cmluZy5sZW5ndGggc3RyIC0gbGVuXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC5zdWJzdHJpbmdcIlxuICAgIGVsc2UgdW5zYWZlX3N0cmluZyBzdHIgb2ZzIGxlblxuXG4gIGxldCBzdWJieXRlcyBiIG9mcyBsZW4gPVxuICAgIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBCeXRlcy5sZW5ndGggYiAtIGxlblxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3Quc3ViYnl0ZXNcIlxuICAgIGVsc2UgdW5zYWZlX2J5dGVzIGIgb2ZzIGxlblxuXG4gIGxldCBmaWxlIGZpbGVuYW1lID1cbiAgICBJbl9jaGFubmVsLndpdGhfb3Blbl9iaW4gZmlsZW5hbWUgKGZ1biBpYyAtPiBjaGFubmVsIGljICgtMSkpXG5cbiAgbGV0IG91dHB1dCBjaGFuIGRpZ2VzdCA9IG91dHB1dF9zdHJpbmcgY2hhbiBkaWdlc3RcblxuICBsZXQgaW5wdXQgY2hhbiA9IHJlYWxseV9pbnB1dF9zdHJpbmcgY2hhbiAxNlxuXG4gIGxldCB0b19oZXggZCA9XG4gICAgaWYgU3RyaW5nLmxlbmd0aCBkIDw+IDE2IHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3QudG9faGV4XCI7XG4gICAgaGV4X29mX3N0cmluZyBkXG5cbiAgbGV0IG9mX2hleCBzID1cbiAgICBpZiBTdHJpbmcubGVuZ3RoIHMgPD4gMzIgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC5mcm9tX2hleFwiO1xuICAgIHN0cmluZ19vZl9oZXggc1xuXG5lbmRcblxuKCogRGVmYXVsdCBleHBvcnRlZCBpbXBsZW1lbnRhdGlvbiBpcyBNRDUgKilcblxuaW5jbHVkZSBNRDVcblxubGV0IGZyb21faGV4ID0gb2ZfaGV4XG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfYmxha2UyX2J5dGVzIiwiY2FtbF9ibGFrZTJfZmluYWwiLCJjYW1sX2JsYWtlMl9zdHJpbmciLCJjYW1sX2JsYWtlMl91cGRhdGUiLCJjYW1sX2J5dGVzX3Vuc2FmZV9zZXQiLCJjYW1sX2NyZWF0ZV9ieXRlcyIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfbWQ1X2J5dGVzIiwiY2FtbF9tZDVfY2hhbiIsImNhbWxfbWQ1X3N0cmluZyIsImNhbWxfbWxfYnl0ZXNfbGVuZ3RoIiwiY2FtbF9tbF9zdHJpbmdfbGVuZ3RoIiwiY2FtbF9zdHJpbmdfZ2V0IiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWIiLCJTdGRsaWJfSW5fY2hhbm5lbCIsIlN0ZGxpYl9JbnQiLCJTdGRsaWJfU3RyaW5nIiwiU3RkbGliX0NoYXIiLCJTdGRsaWJfQnl0ZXMiLCJoZXhfb2Zfc3RyaW5nIiwiZCIsImNoYXJfaGV4IiwibiIsImxlbiIsInJlc3VsdCIsImkiLCJ4IiwiY3N0X0RpZ2VzdF9vZl9oZXgiLCJzdHJpbmdfb2ZfaGV4IiwicyIsImRpZ2l0IiwiYyIsImNzdF9EaWdlc3Rfc3ViYnl0ZXMiLCJjc3RfRGlnZXN0X3N1YnN0cmluZyIsImNzdF9EaWdlc3RfdG9faGV4IiwiQkxBS0UyIiwiWCIsImhhc2hfbGVuZ3RoIiwiY29tcGFyZSIsImVxdWFsIiwiY3N0Iiwic3RyaW5nIiwic3RyIiwiYnl0ZXMiLCJiIiwic3Vic3RyaW5nIiwib2ZzIiwic3ViYnl0ZXMiLCJjaGFubmVsIiwiaWMiLCJ0b3JlYWQiLCJidWYiLCJjdHgiLCJidWZfc2l6ZSIsImZpbGUiLCJmaWxlbmFtZSIsIm91dHB1dCIsImNoYW4iLCJkaWdlc3QiLCJpbnB1dCIsInRvX2hleCIsIm9mX2hleCIsIkJMQUtFMTI4IiwiQkxBS0UyNTYiLCJCTEFLRTUxMiJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLG9CQUFBO0FBQUEsSUFBQUMscUJBQUE7QUFBQSxJQUFBQyxxQkFBQTtBQUFBLElBQUFDLHdCQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyxrQkFBQTtBQUFBLElBQUFDLHVCQUFBO0FBQUEsSUFBQUMsd0JBQUE7QUFBQSxJQUFBQyxrQkFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLFlBQUFDLGNBQUFDO0FBQUFBLGFBQUFDLFNBQUFDO0FBQUFBLFNBQUEsSUNtQkk7QUFBQSx3Q0FDZ0Q7QUFBQTtBQUFBO0FBQUEsS0FBQUMsTUFDbEQ7QUFBQSxLQUFBQyxTQUNhO0FBQUEsU0FDYjtBQUFBO0FBQUEsU0FBQUMsSUFBQTtBQUFBO0FBQUEsVUFBQUMsSUFDb0I7QUFBQSxNQUNnQyx5Q0FBcEI7QUFBQSxNQUMwQixtREFBeEI7QUFBQSxjQUF3QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFFMUQsMENBQTZCO0FBQUE7QUFBQSxPQUFBQyxvQkQ1Qi9CO0FBQUEsWUFBQUMsY0FBQUM7QUFBQUEsYUFBQUMsTUFBQUM7QUFBQUEsS0NnQ0k7QUFBQTtBQUFBLG1CQUdjO0FBQUE7QUFBQSxzQkFEQTtBQUFBO0FBQUEsZ0NBREE7QUFBQSxLQUdQLDhDQUEyQjtBQUFBO0FBQUEsSUFFcEM7QUFBQTtBQUFBO0FBQUEsc0JBQUFOO0FBQUFBO0FBQUFBLGVBQUFBLE1BQTRDO0FBQUEsbUJBRFgsTUFBTTtBQUFBLG1CQUFwQixDQUFOLE1BQU07QUFBQSxjQUNnRDtBQUFBLGVBQUM7QUFBQTtBQUFBO0FBQUEsSUFBQU8sc0JEdEN0RTtBQUFBLElBQUFDLHVCQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxZQUFBQyxPQUFBQztBQUFBQSxRQUFBO0FBQUEsVUNtRVM7QUFBQTtBQUFBLEtBQUFDLGNBQ0w7QUFBQSxLQUFBQyxVQUFBO0FBQUEsS0FBQUMsUUFBQTtBQUFBLEtBQUFDLE1EcEVKO0FBQUEsYUFBQUMsT0FBQUM7QUFBQUEsS0NzRkk7QUFBQSxtRUFBc0Q7QUFBQTtBQUFBLGFBQUFDLE1BQUFDO0FBQUFBLEtBR3RELHlFQUFnRDtBQUFBO0FBQUEsYUFBQUMsVUFBQUgsS0FBQUksS0FBQXZCO0FBQUFBLFNBQUEsSUFHaEQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFdBQ0s7QUFBQSxLQUNMLDBEQUF3QztBQUFBO0FBQUEsYUFBQXdCLFNBQUFILEdBQUFFLEtBQUF2QjtBQUFBQSxTQUFBLElBR3hDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxXQUNLO0FBQUEsS0FDTCx1REFBcUM7QUFBQTtBQUFBLGFBQUF5QixRQUFBQyxJQUFBQztBQUFBQTtBQUFBQSxNQUFBQyxNQUkzQjtBQUFBLE1BQUFDLE1BcEJJO0FBQUEsTUFBQUMsV0FtQmQ7QUFBQSxLQUdBO0FBQUEsVUFBQUgsV0FBQTtBQUFBO0FBQUEsT0FTSSxtQkFBbUIsMENBVXBCO0FBQUE7QUFBQSxZQVRxQztBQUFBLFFBQUE1QixJQUExQjtBQUFBLE9BQ1IsWUFDSztBQUFBLE9BRUg7QUFBQSxXQUFBNEIsV0FBa0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BZDFCO0FBQUEsV0FBQTVCLE1BRVk7QUFBQSxPQUNSLGNBQ0ssMENBZU47QUFBQSxPQWRPO0FBQUE7QUFBQSxJQWNQO0FBQUEsYUFBQWdDLEtBQUFDO0FBQUFBLEtBR0g7QUFBQSx1Q0FBQU4sSUFBNkMsc0JBQWUsR0FBQztBQUFBO0FBQUEsYUFBQU8sT0FBQUMsTUFBQUMsUUFFdEMsMENBQXlCO0FBQUEsYUFBQUMsTUFBQUYsTUFFakMsK0NBQW9DO0FBQUEsYUFBQUcsT0FBQXhDO0FBQUFBLEtBR25EO0FBQUEsTUFBdUM7QUFBQSxLQUN2Qyx1QkFBZTtBQUFBO0FBQUEsYUFBQXlDLE9BQUFoQztBQUFBQSxLQUdmO0FBQUEsTUFBMkM7QUFBQSxLQUMzQyx1QkFBZTtBQUFBO0FBQUEsSUF2RWY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBaUMsV0RwRUo7QUFBQSxJQUFBQyxXQUFBO0FBQUEsSUFBQUMsV0FBQTtBQUFBLElBQUExQixVQUFBO0FBQUEsSUFBQUMsUUFBQTtBQUFBLFlBQUFFLE9BQUFDO0FBQUFBLElDbUtJLDBEQUF1QztBQUFBO0FBQUEsWUFBQUMsTUFBQUMsR0FHdkMsb0RBQWlDO0FBQUEsWUFBQUMsVUFBQUgsS0FBQUksS0FBQXZCO0FBQUFBLElBR2pDO0FBQUEsS0FFSyxxQ0FBeUI7QUFBQSxJQUR6QixpREFDeUI7QUFBQTtBQUFBLFlBQUF3QixTQUFBSCxHQUFBRSxLQUFBdkI7QUFBQUEsSUFHOUI7QUFBQSxLQUVLLGtDQUFzQjtBQUFBLElBRHRCLGdEQUNzQjtBQUFBO0FBQUEsWUFBQStCLEtBQUFDO0FBQUFBLElBRzNCO0FBQUEsc0NBQUFOLElBQTZDLDRCQUFlLEdBQUM7QUFBQTtBQUFBLFlBQUFPLE9BQUFDLE1BQUFDLFFBRXRDLDBDQUF5QjtBQUFBLFlBQUFDLE1BQUFGLE1BRWpDLHNDQUEyQjtBQUFBLFlBQUFHLE9BQUF4QztBQUFBQSxJQUcxQztBQUFBLEtBQThCO0FBQUEsSUFDOUIsdUJBQWU7QUFBQTtBQUFBLFlBQUF5QyxPQUFBaEM7QUFBQUEsSUFHZjtBQUFBLEtBQThCO0FBQUEsSUFDOUIsdUJBQWU7QUFBQTtBQUFBLEdEL0xuQiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjI1MDEwLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvYmlnYXJyYXkubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgTWFudWVsIFNlcnJhbm8gZXQgWGF2aWVyIExlcm95LCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbQmlnYXJyYXldOiBsYXJnZSwgbXVsdGktZGltZW5zaW9uYWwsIG51bWVyaWNhbCBhcnJheXMgKilcblxuKCogVGhlc2UgdHlwZXMgaW4gbXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCB0aGUgdGFibGVzIGluXG4gICAuLi90eXBpbmcvdHlwZW9wdC5tbCAqKVxuXG50eXBlIGZsb2F0MTZfZWx0ID0gRmxvYXQxNl9lbHRcbnR5cGUgZmxvYXQzMl9lbHQgPSBGbG9hdDMyX2VsdFxudHlwZSBmbG9hdDY0X2VsdCA9IEZsb2F0NjRfZWx0XG50eXBlIGludDhfc2lnbmVkX2VsdCA9IEludDhfc2lnbmVkX2VsdFxudHlwZSBpbnQ4X3Vuc2lnbmVkX2VsdCA9IEludDhfdW5zaWduZWRfZWx0XG50eXBlIGludDE2X3NpZ25lZF9lbHQgPSBJbnQxNl9zaWduZWRfZWx0XG50eXBlIGludDE2X3Vuc2lnbmVkX2VsdCA9IEludDE2X3Vuc2lnbmVkX2VsdFxudHlwZSBpbnQzMl9lbHQgPSBJbnQzMl9lbHRcbnR5cGUgaW50NjRfZWx0ID0gSW50NjRfZWx0XG50eXBlIGludF9lbHQgPSBJbnRfZWx0XG50eXBlIG5hdGl2ZWludF9lbHQgPSBOYXRpdmVpbnRfZWx0XG50eXBlIGNvbXBsZXgzMl9lbHQgPSBDb21wbGV4MzJfZWx0XG50eXBlIGNvbXBsZXg2NF9lbHQgPSBDb21wbGV4NjRfZWx0XG5cbigqIEtlZXAgdGhlIG9yZGVyIG9mIHRoZXNlIGNvbnN0cnVjdG9ycyBpbiBzeW5jIHdpdGggdGhlIGNhbWxfYmFfa2luZFxuICAgZW51bWVyYXRpb24gaW4gYmlnYXJyYXkuaCAqKVxuXG50eXBlICgnYSwgJ2IpIGtpbmQgPVxuICB8IEZsb2F0MzIgOiAoZmxvYXQsIGZsb2F0MzJfZWx0KSBraW5kXG4gIHwgRmxvYXQ2NCA6IChmbG9hdCwgZmxvYXQ2NF9lbHQpIGtpbmRcbiAgfCBJbnQ4X3NpZ25lZCA6IChpbnQsIGludDhfc2lnbmVkX2VsdCkga2luZFxuICB8IEludDhfdW5zaWduZWQgOiAoaW50LCBpbnQ4X3Vuc2lnbmVkX2VsdCkga2luZFxuICB8IEludDE2X3NpZ25lZCA6IChpbnQsIGludDE2X3NpZ25lZF9lbHQpIGtpbmRcbiAgfCBJbnQxNl91bnNpZ25lZCA6IChpbnQsIGludDE2X3Vuc2lnbmVkX2VsdCkga2luZFxuICB8IEludDMyIDogKGludDMyLCBpbnQzMl9lbHQpIGtpbmRcbiAgfCBJbnQ2NCA6IChpbnQ2NCwgaW50NjRfZWx0KSBraW5kXG4gIHwgSW50IDogKGludCwgaW50X2VsdCkga2luZFxuICB8IE5hdGl2ZWludCA6IChuYXRpdmVpbnQsIG5hdGl2ZWludF9lbHQpIGtpbmRcbiAgfCBDb21wbGV4MzIgOiAoQ29tcGxleC50LCBjb21wbGV4MzJfZWx0KSBraW5kXG4gIHwgQ29tcGxleDY0IDogKENvbXBsZXgudCwgY29tcGxleDY0X2VsdCkga2luZFxuICB8IENoYXIgOiAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQpIGtpbmRcbiAgfCBGbG9hdDE2IDogKGZsb2F0LCBmbG9hdDE2X2VsdCkga2luZFxuXG50eXBlIGNfbGF5b3V0ID0gQ19sYXlvdXRfdHlwXG50eXBlIGZvcnRyYW5fbGF5b3V0ID0gRm9ydHJhbl9sYXlvdXRfdHlwICgqKilcblxudHlwZSAnYSBsYXlvdXQgPVxuICAgIENfbGF5b3V0OiBjX2xheW91dCBsYXlvdXRcbiAgfCBGb3J0cmFuX2xheW91dDogZm9ydHJhbl9sYXlvdXQgbGF5b3V0XG5cbmxldCBmbG9hdDE2ID0gRmxvYXQxNlxubGV0IGZsb2F0MzIgPSBGbG9hdDMyXG5sZXQgZmxvYXQ2NCA9IEZsb2F0NjRcbmxldCBpbnQ4X3NpZ25lZCA9IEludDhfc2lnbmVkXG5sZXQgaW50OF91bnNpZ25lZCA9IEludDhfdW5zaWduZWRcbmxldCBpbnQxNl9zaWduZWQgPSBJbnQxNl9zaWduZWRcbmxldCBpbnQxNl91bnNpZ25lZCA9IEludDE2X3Vuc2lnbmVkXG5sZXQgaW50MzIgPSBJbnQzMlxubGV0IGludDY0ID0gSW50NjRcbmxldCBpbnQgPSBJbnRcbmxldCBuYXRpdmVpbnQgPSBOYXRpdmVpbnRcbmxldCBjb21wbGV4MzIgPSBDb21wbGV4MzJcbmxldCBjb21wbGV4NjQgPSBDb21wbGV4NjRcbmxldCBjaGFyID0gQ2hhclxuXG5sZXQga2luZF9zaXplX2luX2J5dGVzIDogdHlwZSBhIGIuIChhLCBiKSBraW5kIC0+IGludCA9IGZ1bmN0aW9uXG4gIHwgRmxvYXQxNiAtPiAyXG4gIHwgRmxvYXQzMiAtPiA0XG4gIHwgRmxvYXQ2NCAtPiA4XG4gIHwgSW50OF9zaWduZWQgLT4gMVxuICB8IEludDhfdW5zaWduZWQgLT4gMVxuICB8IEludDE2X3NpZ25lZCAtPiAyXG4gIHwgSW50MTZfdW5zaWduZWQgLT4gMlxuICB8IEludDMyIC0+IDRcbiAgfCBJbnQ2NCAtPiA4XG4gIHwgSW50IC0+IFN5cy53b3JkX3NpemUgLyA4XG4gIHwgTmF0aXZlaW50IC0+IFN5cy53b3JkX3NpemUgLyA4XG4gIHwgQ29tcGxleDMyIC0+IDhcbiAgfCBDb21wbGV4NjQgLT4gMTZcbiAgfCBDaGFyIC0+IDFcblxuKCogS2VlcCB0aG9zZSBjb25zdGFudHMgaW4gc3luYyB3aXRoIHRoZSBjYW1sX2JhX2xheW91dCBlbnVtZXJhdGlvblxuICAgaW4gYmlnYXJyYXkuaCAqKVxuXG5sZXQgY19sYXlvdXQgPSBDX2xheW91dFxubGV0IGZvcnRyYW5fbGF5b3V0ID0gRm9ydHJhbl9sYXlvdXRcblxubW9kdWxlIEdlbmFycmF5ID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHRcbiAgZXh0ZXJuYWwgY3JlYXRlOiAoJ2EsICdiKSBraW5kIC0+ICdjIGxheW91dCAtPiBpbnQgYXJyYXkgLT4gKCdhLCAnYiwgJ2MpIHRcbiAgICAgPSBcImNhbWxfYmFfY3JlYXRlXCJcbiAgZXh0ZXJuYWwgZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgYXJyYXkgLT4gJ2FcbiAgICAgPSBcImNhbWxfYmFfZ2V0X2dlbmVyaWNcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCBhcnJheSAtPiAnYSAtPiB1bml0XG4gICAgID0gXCJjYW1sX2JhX3NldF9nZW5lcmljXCJcblxuICBsZXQgcmVjIGNsb29wIGFyciBpZHggZiBjb2wgbWF4ID1cbiAgICBpZiBjb2wgPSBBcnJheS5sZW5ndGggaWR4IHRoZW4gc2V0IGFyciBpZHggKGYgaWR4KVxuICAgIGVsc2UgZm9yIGogPSAwIHRvIHByZWQgbWF4Lihjb2wpIGRvXG4gICAgICAgICAgIGlkeC4oY29sKSA8LSBqO1xuICAgICAgICAgICBjbG9vcCBhcnIgaWR4IGYgKHN1Y2MgY29sKSBtYXhcbiAgICAgICAgIGRvbmVcbiAgbGV0IHJlYyBmbG9vcCBhcnIgaWR4IGYgY29sIG1heCA9XG4gICAgaWYgY29sIDwgMCB0aGVuIHNldCBhcnIgaWR4IChmIGlkeClcbiAgICBlbHNlIGZvciBqID0gMSB0byBtYXguKGNvbCkgZG9cbiAgICAgICAgICAgaWR4Lihjb2wpIDwtIGo7XG4gICAgICAgICAgIGZsb29wIGFyciBpZHggZiAocHJlZCBjb2wpIG1heFxuICAgICAgICAgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltcyBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbXMgaW5cbiAgICBsZXQgZGxlbiA9IEFycmF5Lmxlbmd0aCBkaW1zIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNsb29wIGFyciAoQXJyYXkubWFrZSBkbGVuIDApIGYgMCBkaW1zOyBhcnJcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IGZsb29wIGFyciAoQXJyYXkubWFrZSBkbGVuIDEpIGYgKHByZWQgZGxlbikgZGltczsgYXJyXG5cbiAgZXh0ZXJuYWwgbnVtX2RpbXM6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiY2FtbF9iYV9udW1fZGltc1wiXG4gIGV4dGVybmFsIG50aF9kaW06ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfYmFfZGltXCJcbiAgbGV0IGRpbXMgYSA9XG4gICAgbGV0IG4gPSBudW1fZGltcyBhIGluXG4gICAgbGV0IGQgPSBBcnJheS5tYWtlIG4gMCBpblxuICAgIGZvciBpID0gMCB0byBuLTEgZG8gZC4oaSkgPC0gbnRoX2RpbSBhIGkgZG9uZTtcbiAgICBkXG5cbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9XG4gICAgKGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpKSAqIChBcnJheS5mb2xkX2xlZnQgKCAqICkgMSAoZGltcyBhcnIpKVxuXG4gIGV4dGVybmFsIHN1Yl9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHN1Yl9yaWdodDogKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBleHRlcm5hbCBzbGljZV9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhLCAnYiwgY19sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc2xpY2VcIlxuICBleHRlcm5hbCBzbGljZV9yaWdodDogKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IGFycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3NsaWNlXCJcbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdFxuICAgICA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcbmVuZFxuXG5tb2R1bGUgQXJyYXkwID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHQgPSAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICBsZXQgY3JlYXRlIGtpbmQgbGF5b3V0ID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3x8XVxuICBsZXQgZ2V0IGFyciA9IEdlbmFycmF5LmdldCBhcnIgW3x8XVxuICBsZXQgc2V0IGFyciA9IEdlbmFycmF5LnNldCBhcnIgW3x8XVxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9IGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpXG5cbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdCA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcblxuICBsZXQgb2ZfdmFsdWUga2luZCBsYXlvdXQgdiA9XG4gICAgbGV0IGEgPSBjcmVhdGUga2luZCBsYXlvdXQgaW5cbiAgICBzZXQgYSB2O1xuICAgIGFcbiAgbGV0IGluaXQgPSBvZl92YWx1ZVxuZW5kXG5cbm1vZHVsZSBBcnJheTEgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgZGltID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3xkaW18XVxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfcmVmXzFcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlY2FtbF9iYV9zZXRfMVwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8xXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMVwiXG4gIGV4dGVybmFsIGRpbTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMVwiXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG5cbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID1cbiAgICAoa2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycikpICogKGRpbSBhcnIpXG5cbiAgZXh0ZXJuYWwgc3ViOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsICdjKSB0ID0gXCJjYW1sX2JhX3N1YlwiXG4gIGxldCBzbGljZSAodHlwZSB0KSAoYSA6IChfLCBfLCB0KSBHZW5hcnJheS50KSBuID1cbiAgICBtYXRjaCBsYXlvdXQgYSB3aXRoXG4gICAgfCBDX2xheW91dCAtPiAoR2VuYXJyYXkuc2xpY2VfbGVmdCBhIFt8bnxdIDogKF8sIF8sIHQpIEdlbmFycmF5LnQpXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiAoR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG58XTogKF8sIF8sIHQpIEdlbmFycmF5LnQpXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXQgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG4gIGxldCBjX2luaXQgYXJyIGRpbSBmID1cbiAgICBmb3IgaSA9IDAgdG8gcHJlZCBkaW0gZG8gdW5zYWZlX3NldCBhcnIgaSAoZiBpKSBkb25lXG4gIGxldCBmb3J0cmFuX2luaXQgYXJyIGRpbSBmID1cbiAgICBmb3IgaSA9IDEgdG8gZGltIGRvIHVuc2FmZV9zZXQgYXJyIGkgKGYgaSkgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNfaW5pdCBhcnIgZGltIGY7IGFyclxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gZm9ydHJhbl9pbml0IGFyciBkaW0gZjsgYXJyXG4gIGxldCBvZl9hcnJheSAodHlwZSB0KSBraW5kIChsYXlvdXQ6IHQgbGF5b3V0KSBkYXRhID1cbiAgICBsZXQgYmEgPSBjcmVhdGUga2luZCBsYXlvdXQgKEFycmF5Lmxlbmd0aCBkYXRhKSBpblxuICAgIGxldCBvZnMgPVxuICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgQ19sYXlvdXQgLT4gMFxuICAgICAgfCBGb3J0cmFuX2xheW91dCAtPiAxXG4gICAgaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGRhdGEgLSAxIGRvIHVuc2FmZV9zZXQgYmEgKGkgKyBvZnMpIGRhdGEuKGkpIGRvbmU7XG4gICAgYmFcbmVuZFxuXG5tb2R1bGUgQXJyYXkyID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHQgPSAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICBsZXQgY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiA9XG4gICAgR2VuYXJyYXkuY3JlYXRlIGtpbmQgbGF5b3V0IFt8ZGltMTsgZGltMnxdXG4gIGV4dGVybmFsIGdldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfcmVmXzJcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWNhbWxfYmFfc2V0XzJcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhXG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzJcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMlwiXG4gIGV4dGVybmFsIGRpbTE6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzFcIlxuICBleHRlcm5hbCBkaW0yOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8yXCJcbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoZGltMSBhcnIpICogKGRpbTIgYXJyKVxuXG4gIGV4dGVybmFsIHN1Yl9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHN1Yl9yaWdodDpcbiAgICAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGxldCBzbGljZV9sZWZ0IGEgbiA9IEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG58XVxuICBsZXQgc2xpY2VfcmlnaHQgYSBuID0gR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG58XVxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuICBsZXQgY19pbml0IGFyciBkaW0xIGRpbTIgZiA9XG4gICAgZm9yIGkgPSAwIHRvIHByZWQgZGltMSBkb1xuICAgICAgZm9yIGogPSAwIHRvIHByZWQgZGltMiBkb1xuICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogKGYgaSBqKVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGYgPVxuICAgIGZvciBqID0gMSB0byBkaW0yIGRvXG4gICAgICBmb3IgaSA9IDEgdG8gZGltMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogKGYgaSBqKVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGluaXQgKHR5cGUgdCkga2luZCAobGF5b3V0IDogdCBsYXlvdXQpIGRpbTEgZGltMiBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBpblxuICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgfCBDX2xheW91dCAtPiBjX2luaXQgYXJyIGRpbTEgZGltMiBmOyBhcnJcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGY7IGFyclxuICBsZXQgb2ZfYXJyYXkgKHR5cGUgdCkga2luZCAobGF5b3V0OiB0IGxheW91dCkgZGF0YSA9XG4gICAgbGV0IGRpbTEgPSBBcnJheS5sZW5ndGggZGF0YSBpblxuICAgIGxldCBkaW0yID0gaWYgZGltMSA9IDAgdGhlbiAwIGVsc2UgQXJyYXkubGVuZ3RoIGRhdGEuKDApIGluXG4gICAgbGV0IGJhID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBpblxuICAgIGxldCBvZnMgPVxuICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgQ19sYXlvdXQgLT4gMFxuICAgICAgfCBGb3J0cmFuX2xheW91dCAtPiAxXG4gICAgaW5cbiAgICBmb3IgaSA9IDAgdG8gZGltMSAtIDEgZG9cbiAgICAgIGxldCByb3cgPSBkYXRhLihpKSBpblxuICAgICAgaWYgQXJyYXkubGVuZ3RoIHJvdyA8PiBkaW0yIHRoZW5cbiAgICAgICAgaW52YWxpZF9hcmcoXCJCaWdhcnJheS5BcnJheTIub2ZfYXJyYXk6IG5vbi1yZWN0YW5ndWxhciBkYXRhXCIpO1xuICAgICAgZm9yIGogPSAwIHRvIGRpbTIgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgYmEgKGkgKyBvZnMpIChqICsgb2ZzKSByb3cuKGopXG4gICAgICBkb25lXG4gICAgZG9uZTtcbiAgICBiYVxuZW5kXG5cbm1vZHVsZSBBcnJheTMgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGRpbTMgPVxuICAgIEdlbmFycmF5LmNyZWF0ZSBraW5kIGxheW91dCBbfGRpbTE7IGRpbTI7IGRpbTN8XVxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV9yZWZfM1wiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfc2V0XzNcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiAnYVxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8zXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8zXCJcbiAgZXh0ZXJuYWwgZGltMTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMVwiXG4gIGV4dGVybmFsIGRpbTI6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzJcIlxuICBleHRlcm5hbCBkaW0zOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8zXCJcbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoZGltMSBhcnIpICogKGRpbTIgYXJyKSAqIChkaW0zIGFycilcblxuICBleHRlcm5hbCBzdWJfbGVmdDogKCdhLCAnYiwgY19sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBjX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBleHRlcm5hbCBzdWJfcmlnaHQ6XG4gICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgbGV0IHNsaWNlX2xlZnRfMSBhIG4gbSA9IEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG47IG18XVxuICBsZXQgc2xpY2VfcmlnaHRfMSBhIG4gbSA9IEdlbmFycmF5LnNsaWNlX3JpZ2h0IGEgW3xuOyBtfF1cbiAgbGV0IHNsaWNlX2xlZnRfMiBhIG4gPSBHZW5hcnJheS5zbGljZV9sZWZ0IGEgW3xufF1cbiAgbGV0IHNsaWNlX3JpZ2h0XzIgYSBuID0gR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG58XVxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuICBsZXQgY19pbml0IGFyciBkaW0xIGRpbTIgZGltMyBmID1cbiAgICBmb3IgaSA9IDAgdG8gcHJlZCBkaW0xIGRvXG4gICAgICBmb3IgaiA9IDAgdG8gcHJlZCBkaW0yIGRvXG4gICAgICAgIGZvciBrID0gMCB0byBwcmVkIGRpbTMgZG9cbiAgICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogayAoZiBpIGogaylcbiAgICAgICAgZG9uZVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZiA9XG4gICAgZm9yIGsgPSAxIHRvIGRpbTMgZG9cbiAgICAgIGZvciBqID0gMSB0byBkaW0yIGRvXG4gICAgICAgIGZvciBpID0gMSB0byBkaW0xIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCBhcnIgaSBqIGsgKGYgaSBqIGspXG4gICAgICAgIGRvbmVcbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW0xIGRpbTIgZGltMyBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBkaW0zIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNfaW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZjsgYXJyXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiBmb3J0cmFuX2luaXQgYXJyIGRpbTEgZGltMiBkaW0zIGY7IGFyclxuICBsZXQgb2ZfYXJyYXkgKHR5cGUgdCkga2luZCAobGF5b3V0OiB0IGxheW91dCkgZGF0YSA9XG4gICAgbGV0IGRpbTEgPSBBcnJheS5sZW5ndGggZGF0YSBpblxuICAgIGxldCBkaW0yID0gaWYgZGltMSA9IDAgdGhlbiAwIGVsc2UgQXJyYXkubGVuZ3RoIGRhdGEuKDApIGluXG4gICAgbGV0IGRpbTMgPSBpZiBkaW0yID0gMCB0aGVuIDAgZWxzZSBBcnJheS5sZW5ndGggZGF0YS4oMCkuKDApIGluXG4gICAgbGV0IGJhID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBkaW0zIGluXG4gICAgbGV0IG9mcyA9XG4gICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICBDX2xheW91dCAtPiAwXG4gICAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IDFcbiAgICBpblxuICAgIGZvciBpID0gMCB0byBkaW0xIC0gMSBkb1xuICAgICAgbGV0IHJvdyA9IGRhdGEuKGkpIGluXG4gICAgICBpZiBBcnJheS5sZW5ndGggcm93IDw+IGRpbTIgdGhlblxuICAgICAgICBpbnZhbGlkX2FyZyhcIkJpZ2FycmF5LkFycmF5My5vZl9hcnJheTogbm9uLWN1YmljIGRhdGFcIik7XG4gICAgICBmb3IgaiA9IDAgdG8gZGltMiAtIDEgZG9cbiAgICAgICAgbGV0IGNvbCA9IHJvdy4oaikgaW5cbiAgICAgICAgaWYgQXJyYXkubGVuZ3RoIGNvbCA8PiBkaW0zIHRoZW5cbiAgICAgICAgICBpbnZhbGlkX2FyZyhcIkJpZ2FycmF5LkFycmF5My5vZl9hcnJheTogbm9uLWN1YmljIGRhdGFcIik7XG4gICAgICAgIGZvciBrID0gMCB0byBkaW0zIC0gMSBkb1xuICAgICAgICAgIHVuc2FmZV9zZXQgYmEgKGkgKyBvZnMpIChqICsgb2ZzKSAoayArIG9mcykgY29sLihrKVxuICAgICAgICBkb25lXG4gICAgICBkb25lXG4gICAgZG9uZTtcbiAgICBiYVxuZW5kXG5cbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MDogKCdhLCAnYiwgJ2MpIEFycmF5MC50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MTogKCdhLCAnYiwgJ2MpIEFycmF5MS50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MjogKCdhLCAnYiwgJ2MpIEFycmF5Mi50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MzogKCdhLCAnYiwgJ2MpIEFycmF5My50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmxldCBhcnJheTBfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAwIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkwX29mX2dlbmFycmF5XCJcbmxldCBhcnJheTFfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAxIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkxX29mX2dlbmFycmF5XCJcbmxldCBhcnJheTJfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAyIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkyX29mX2dlbmFycmF5XCJcbmxldCBhcnJheTNfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAzIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkzX29mX2dlbmFycmF5XCJcblxuZXh0ZXJuYWwgcmVzaGFwZTpcbiAgICgnYSwgJ2IsICdjKSBHZW5hcnJheS50IC0+IGludCBhcnJheSAtPiAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICAgPSBcImNhbWxfYmFfcmVzaGFwZVwiXG5sZXQgcmVzaGFwZV8wIGEgPSByZXNoYXBlIGEgW3x8XVxubGV0IHJlc2hhcGVfMSBhIGRpbTEgPSByZXNoYXBlIGEgW3xkaW0xfF1cbmxldCByZXNoYXBlXzIgYSBkaW0xIGRpbTIgPSByZXNoYXBlIGEgW3xkaW0xO2RpbTJ8XVxubGV0IHJlc2hhcGVfMyBhIGRpbTEgZGltMiBkaW0zID0gcmVzaGFwZSBhIFt8ZGltMTtkaW0yO2RpbTN8XVxuXG4oKiBGb3JjZSBjYW1sX2JhX2dldF97MSwyLDMsTn0gdG8gYmUgbGlua2VkIGluLCBzaW5jZSB3ZSBkb24ndCByZWZlclxuICAgdG8gdGhvc2UgcHJpbWl0aXZlcyBkaXJlY3RseSBpbiB0aGlzIGZpbGUgKilcblxubGV0IF8gPVxuICBsZXQgXyA9IEdlbmFycmF5LmdldCBpblxuICBsZXQgXyA9IEFycmF5MS5nZXQgaW5cbiAgbGV0IF8gPSBBcnJheTIuZ2V0IGluXG4gIGxldCBfID0gQXJyYXkzLmdldCBpblxuICAoKVxuXG5bQEBAb2NhbWwud2FybmluZyBcIi0zMlwiXVxuZXh0ZXJuYWwgZ2V0MTogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX2dldF8xXCJcbmV4dGVybmFsIGdldDI6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9nZXRfMlwiXG5leHRlcm5hbCBnZXQzOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfZ2V0XzNcIlxuZXh0ZXJuYWwgc2V0MTogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX3NldF8xXCJcbmV4dGVybmFsIHNldDI6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9zZXRfMlwiXG5leHRlcm5hbCBzZXQzOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfc2V0XzNcIlxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2FycmF5X21ha2UiLCJjYW1sX2JhX2NoYW5nZV9sYXlvdXQiLCJjYW1sX2JhX2NyZWF0ZSIsImNhbWxfYmFfZGltXzEiLCJjYW1sX2JhX2RpbV8yIiwiY2FtbF9iYV9raW5kIiwiY2FtbF9iYV9udW1fZGltcyIsImNhbWxfYmFfcmVzaGFwZSIsImNhbWxfYmFfc2V0XzEiLCJjYW1sX2JhX3NldF8yIiwiY2FtbF9iYV9zZXRfMyIsImNhbWxfYmFfc2V0X2dlbmVyaWMiLCJjYW1sX2JhX3NsaWNlIiwiY2FtbF9jaGVja19ib3VuZCIsImNhbWxfbXVsIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImNhbWxfY2FsbDMiLCJhMiIsImR1bW15IiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWIiLCJTdGRsaWJfQXJyYXkiLCJTdGRsaWJfU3lzIiwia2luZF9zaXplX2luX2J5dGVzIiwicGFyYW0iLCJjbG9vcCIsImFyciIsImlkeCIsImNvbCIsIm1heCIsImoiLCJmbG9vcCIsImluaXQiLCJraW5kIiwibGF5b3V0IiwiZGltcyIsImRsZW4iLCJhIiwibiIsImQiLCJpIiwic2l6ZV9pbl9ieXRlcyIsImNyZWF0ZSIsImdldCIsInNldCIsIm9mX3ZhbHVlIiwidiIsImRpbSIsInNsaWNlIiwib2ZfYXJyYXkiLCJkYXRhIiwiYmEiLCJvZnMiLCJkaW0xIiwiZGltMiIsInNsaWNlX2xlZnQiLCJzbGljZV9yaWdodCIsInJvdyIsImRpbTMiLCJzbGljZV9sZWZ0XzEiLCJtIiwic2xpY2VfcmlnaHRfMSIsInNsaWNlX2xlZnRfMiIsInNsaWNlX3JpZ2h0XzIiLCJrIiwiY3N0X0JpZ2FycmF5X0FycmF5M19vZl9hcnJheV9uIiwiYXJyYXkwX29mX2dlbmFycmF5IiwiYXJyYXkxX29mX2dlbmFycmF5IiwiYXJyYXkyX29mX2dlbmFycmF5IiwiYXJyYXkzX29mX2dlbmFycmF5IiwicmVzaGFwZV8wIiwicmVzaGFwZV8xIiwicmVzaGFwZV8yIiwicmVzaGFwZV8zIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLGtCQUFBO0FBQUEsSUFBQUMs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ImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9yYW5kb20ubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICopXG4oKiAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDYW1iaXVtLCBDb2xsZWdlIGRlIEZyYW5jZSBhbmQgSW5yaWEgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFBzZXVkby1yYW5kb20gbnVtYmVyIGdlbmVyYXRvciAqKVxuXG5leHRlcm5hbCByYW5kb21fc2VlZDogdW5pdCAtPiBpbnQgYXJyYXkgPSBcImNhbWxfc3lzX3JhbmRvbV9zZWVkXCJcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG5cbiAgb3BlbiBCaWdhcnJheVxuXG4gIHR5cGUgdCA9IChpbnQ2NCwgaW50NjRfZWx0LCBjX2xheW91dCkgQXJyYXkxLnRcblxuICBleHRlcm5hbCBuZXh0OiB0IC0+IChpbnQ2NFtAdW5ib3hlZF0pXG4gICAgICA9IFwiY2FtbF9seG1fbmV4dFwiIFwiY2FtbF9seG1fbmV4dF91bmJveGVkXCIgW0BAbm9hbGxvY11cblxuICBsZXQgY3JlYXRlICgpIDogdCA9XG4gICAgQXJyYXkxLmNyZWF0ZSBJbnQ2NCBDX2xheW91dCA0XG5cbiAgbGV0IHNldCBzIGkxIGkyIGkzIGk0ID1cbiAgICBBcnJheTEudW5zYWZlX3NldCBzIDAgKEludDY0LmxvZ29yIGkxIDFMKTsgKCogbXVzdCBiZSBvZGQgKilcbiAgICBBcnJheTEudW5zYWZlX3NldCBzIDEgaTI7XG4gICAgQXJyYXkxLnVuc2FmZV9zZXQgcyAyIChpZiBpMyA8PiAwTCB0aGVuIGkzIGVsc2UgMUwpOyAoKiBtdXN0IG5vdCBiZSAwICopXG4gICAgQXJyYXkxLnVuc2FmZV9zZXQgcyAzIChpZiBpNCA8PiAwTCB0aGVuIGk0IGVsc2UgMkwpICgqIG11c3Qgbm90IGJlIDAgKilcblxuICBsZXQgbWsgaTEgaTIgaTMgaTQgPVxuICAgIGxldCBzID0gY3JlYXRlICgpIGluXG4gICAgc2V0IHMgaTEgaTIgaTMgaTQ7IHNcblxuICBsZXQgc2VyaWFsaXphdGlvbl9wcmVmaXggPVxuICAgIFwibHhtMTpcIlxuICAgICgqIFwibHhtXCIgZGVub3RlcyB0aGUgYWxnb3JpdGhtIGN1cnJlbnRseSBpbiB1c2UsIGFuZCAnMScgaXNcbiAgICAgICBhIHZlcnNpb24gbnVtYmVyLiBXZSBzaG91bGQgdXBkYXRlIHRoaXMgcHJlZml4IGlmIHdlIGNoYW5nZVxuICAgICAgIHRoZSBSYW5kb20gYWxnb3JpdGhtIG9yIHRoZSBzZXJpYWxpemF0aW9uIGZvcm1hdCwgc28gdGhhdCB1c2Vyc1xuICAgICAgIGdldCBhIGNsZWFuIGVycm9yIGluc3RlYWQgb2YgYmVsaWV2aW5nIHRoYXQgdGhleSBmYWl0aGZ1bGx5XG4gICAgICAgcmVwcm9kdWNlIHRoZWlyIHByZXZpb3VzIHN0YXRlIGFuZCBpbiBmYWN0IGdldCBhIGRpZmZlcmVudFxuICAgICAgIHN0cmVhbS5cblxuICAgICAgIE5vdGUgdGhhdCB0aGVyZSBpcyBubyBjb25zdHJhaW50IHRvIGtlZXAgdGhlIHNhbWVcbiAgICAgICBcIjxuYW1lPjx2ZXI+OjxkYXRhPlwiIGZvcm1hdCBvciBtZXNzYWdlIHNpemUgaW4gZnV0dXJlIHZlcnNpb25zLFxuICAgICAgIHdlIGNvdWxkIGNoYW5nZSB0aGUgZm9ybWF0IGNvbXBsZXRlbHkgaWYgd2Ugd2FudGVkIGFzIGxvbmdcbiAgICAgICBhcyB0aGVyZSBpcyBubyBjb25mdXNpb24gcG9zc2libGUgd2l0aCB0aGUgcHJldmlvdXMgZm9ybWF0cy4gKilcblxuICBsZXQgc2VyaWFsaXphdGlvbl9wcmVmaXhfbGVuID1cbiAgICBTdHJpbmcubGVuZ3RoIHNlcmlhbGl6YXRpb25fcHJlZml4XG5cbiAgbGV0IHRvX2JpbmFyeV9zdHJpbmcgcyA9XG4gICAgbGV0IHByZWZpeCA9IHNlcmlhbGl6YXRpb25fcHJlZml4IGluXG4gICAgbGV0IHByZWZsZW4gPSBzZXJpYWxpemF0aW9uX3ByZWZpeF9sZW4gaW5cbiAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIChwcmVmbGVuICsgNCAqIDgpIGluXG4gICAgQnl0ZXMuYmxpdF9zdHJpbmcgcHJlZml4IDAgYnVmIDAgcHJlZmxlbjtcbiAgICBmb3IgaSA9IDAgdG8gMyBkb1xuICAgICAgQnl0ZXMuc2V0X2ludDY0X2xlIGJ1ZiAocHJlZmxlbiArIGkgKiA4KSAoQXJyYXkxLmdldCBzIGkpXG4gICAgZG9uZTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1ZlxuXG4gIGxldCBvZl9iaW5hcnlfc3RyaW5nIGJ1ZiA9XG4gICAgbGV0IHByZWZpeCA9IHNlcmlhbGl6YXRpb25fcHJlZml4IGluXG4gICAgbGV0IHByZWZsZW4gPSBzZXJpYWxpemF0aW9uX3ByZWZpeF9sZW4gaW5cbiAgICBpZiBTdHJpbmcubGVuZ3RoIGJ1ZiA8PiBwcmVmbGVuICsgNCAqIDhcbiAgICAgICB8fCBub3QgKFN0cmluZy5zdGFydHNfd2l0aCB+cHJlZml4IGJ1ZilcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aFxuICAgICAgICAoXCJSYW5kb20uU3RhdGUub2ZfYmluYXJ5X3N0cmluZzogZXhwZWN0ZWQgYSBmb3JtYXQgXFxcbiAgICAgICAgICBjb21wYXRpYmxlIHdpdGggT0NhbWwgXCIgXiBTeXMub2NhbWxfdmVyc2lvbik7XG4gICAgbGV0IGkxID0gU3RyaW5nLmdldF9pbnQ2NF9sZSBidWYgKHByZWZsZW4gKyAwICogOCkgaW5cbiAgICBsZXQgaTIgPSBTdHJpbmcuZ2V0X2ludDY0X2xlIGJ1ZiAocHJlZmxlbiArIDEgKiA4KSBpblxuICAgIGxldCBpMyA9IFN0cmluZy5nZXRfaW50NjRfbGUgYnVmIChwcmVmbGVuICsgMiAqIDgpIGluXG4gICAgbGV0IGk0ID0gU3RyaW5nLmdldF9pbnQ2NF9sZSBidWYgKHByZWZsZW4gKyAzICogOCkgaW5cbiAgICBtayBpMSBpMiBpMyBpNFxuXG4gIGxldCBhc3NpZ24gKGRzdDogdCkgKHNyYzogdCkgPVxuICAgIEFycmF5MS5ibGl0IHNyYyBkc3RcblxuICBsZXQgY29weSBzID1cbiAgICBsZXQgcycgPSBjcmVhdGUoKSBpbiBhc3NpZ24gcycgczsgcydcblxuICAoKiBUaGUgc2VlZCBpcyBhbiBhcnJheSBvZiBpbnRlZ2Vycy4gIEl0IGNhbiBiZSBqdXN0IG9uZSBpbnRlZ2VyLFxuICAgICBidXQgaXQgY2FuIGFsc28gYmUgMTIgb3IgbW9yZSBieXRlcy4gIFRvIGhpZGUgdGhlIGRpZmZlcmVuY2UsXG4gICAgIHdlIHNlcmlhbGl6ZSB0aGUgYXJyYXkgYXMgYSBzZXF1ZW5jZSBvZiBieXRlcywgdGhlbiBoYXNoIHRoZVxuICAgICBzZXF1ZW5jZSB3aXRoIE1ENSAoRGlnZXN0LmJ5dGVzKS4gIE1ENSBnaXZlcyBvbmx5IDEyOCBiaXRzIHdoaWxlXG4gICAgIHdlIG5lZWQgMjU2IGJpdHMsIHNvIHdlIGhhc2ggdHdpY2Ugd2l0aCBkaWZmZXJlbnQgc3VmZml4ZXMuICopXG4gIGxldCByZWluaXQgcyBzZWVkID1cbiAgICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBzZWVkIGluXG4gICAgbGV0IGIgPSBCeXRlcy5jcmVhdGUgKG4gKiA4ICsgMSkgaW5cbiAgICBmb3IgaSA9IDAgdG8gbi0xIGRvXG4gICAgICBCeXRlcy5zZXRfaW50NjRfbGUgYiAoaSAqIDgpIChJbnQ2NC5vZl9pbnQgc2VlZC4oaSkpXG4gICAgZG9uZTtcbiAgICBCeXRlcy5zZXQgYiAobiAqIDgpICdcXHgwMSc7XG4gICAgbGV0IGQxID0gRGlnZXN0LmJ5dGVzIGIgaW5cbiAgICBCeXRlcy5zZXQgYiAobiAqIDgpICdcXHgwMic7XG4gICAgbGV0IGQyID0gRGlnZXN0LmJ5dGVzIGIgaW5cbiAgICBzZXQgcyAoU3RyaW5nLmdldF9pbnQ2NF9sZSBkMSAwKVxuICAgICAgICAgIChTdHJpbmcuZ2V0X2ludDY0X2xlIGQxIDgpXG4gICAgICAgICAgKFN0cmluZy5nZXRfaW50NjRfbGUgZDIgMClcbiAgICAgICAgICAoU3RyaW5nLmdldF9pbnQ2NF9sZSBkMiA4KVxuXG4gIGxldCBtYWtlIHNlZWQgPVxuICAgIGxldCBzID0gY3JlYXRlKCkgaW4gcmVpbml0IHMgc2VlZDsgc1xuXG4gIGxldCBtYWtlX3NlbGZfaW5pdCAoKSA9XG4gICAgbWFrZSAocmFuZG9tX3NlZWQgKCkpXG5cbiAgbGV0IG1pbl9pbnQzMSA9IC0weDQwMDBfMDAwMFxuICAgICAgKCogPSAtMnteMzB9LCB3aGljaCBpcyBbbWluX2ludF0gZm9yIDMxLWJpdCBpbnRlZ2VycyAqKVxuICBsZXQgbWF4X2ludDMxID0gMHgzRkZGX0ZGRkZcbiAgICAgICgqID0gIDJ7XjMwfS0xLCB3aGljaCBpcyBbbWF4X2ludF0gZm9yIDMxLWJpdCBpbnRlZ2VycyAqKVxuICAoKiBhdm9pZCBpbnRlZ2VyIGxpdGVyYWxzIGZvciB0aGVzZSwgMzItYml0IE9DYW1sIHdvdWxkIHJlamVjdCB0aGVtOiAqKVxuICBsZXQgbWluX2ludDMyID0gLSgxIGxzbCAzMSlcbiAgICAgICgqID0gLTB4ODAwMF8wMDAwIG9uIHBsYXRmb3JtcyB3aGVyZSBbU3lzLmludF9zaXplID49IDMyXSAqKVxuICBsZXQgbWF4X2ludDMyID0gKDEgbHNsIDMxKSAtIDFcbiAgICAgICgqID0gIDB4N0ZGRl9GRkZGIG9uIHBsYXRmb3JtcyB3aGVyZSBbU3lzLmludF9zaXplID49IDMyXSAqKVxuXG4gICgqIFJldHVybiAzMCByYW5kb20gYml0cyBhcyBhbiBpbnRlZ2VyIDAgPD0geCA8IDJeMzAgKilcbiAgbGV0IGJpdHMgcyA9XG4gICAgSW50NjQudG9faW50IChuZXh0IHMpIGxhbmQgbWF4X2ludDMxXG5cbiAgKCogUmV0dXJuIGFuIGludGVnZXIgYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtuXSAoZXhjbHVkZWQpLlxuICAgICBbYm91bmRdIG1heSBiZSBhbnkgcG9zaXRpdmUgW2ludF0uICBbbWFza10gbXVzdCBiZSBvZiB0aGUgZm9ybSBbMnteaX0tMV1cbiAgICAgYW5kIGdyZWF0ZXIgb3IgZXF1YWwgdG8gW25dLiAgTGFyZ2VyIHZhbHVlcyBvZiBbbWFza10gbWFrZSB0aGUgZnVuY3Rpb25cbiAgICAgcnVuIGZhc3RlciAoZmV3ZXIgc2FtcGxlcyBhcmUgcmVqZWN0ZWQpLiAgU21hbGxlciB2YWx1ZXMgb2YgW21hc2tdXG4gICAgIGFyZSB1c2FibGUgb24gYSB3aWRlciByYW5nZSBvZiBPQ2FtbCBpbXBsZW1lbnRhdGlvbnMuICAqKVxuICBsZXQgcmVjIGludF9hdXggcyBuIG1hc2sgPVxuICAgICgqIFdlIHN0YXJ0IGJ5IGRyYXdpbmcgYSBub24tbmVnYXRpdmUgaW50ZWdlciBpbiB0aGUgWyBbMCwgbWFza10gXSByYW5nZSAqKVxuICAgIGxldCByID0gSW50NjQudG9faW50IChuZXh0IHMpIGxhbmQgbWFzayBpblxuICAgIGxldCB2ID0gciBtb2QgbiBpblxuICAgICgqIEZvciB1bmlmb3JtIGRpc3RyaWJ1dGlvbiBvZiB0aGUgcmVzdWx0IGJldHdlZW4gMCBpbmNsdWRlZCBhbmQgW25dXG4gICAgICogZXhjbHVkZWQsIHRoZSByYW5kb20gbnVtYmVyIFtyXSBtdXN0IGhhdmUgYmVlbiBkcmF3biB1bmlmb3JtbHkgaW5cbiAgICAgKiBhbiBpbnRlcnZhbCB3aG9zZSBsZW5ndGggaXMgYSBtdWx0aXBsZSBvZiBbbl0uIFRvIGFjaGlldmUgdGhpcyxcbiAgICAgKiB3ZSB1c2UgcmVqZWN0aW9uIHNhbXBsaW5nIG9uIHRoZSBncmVhdGVzdCBpbnRlcnZhbCBbIFswLCBrKm4tMV0gXVxuICAgICAqIHRoYXQgZml0cyBpbiBbIFswLCBtYXNrXSBdLiAgVGhhdCBpcywgd2UgcmVqZWN0IHRoZVxuICAgICAqIHNhbXBsZSBpZiBpdCBmYWxscyBvdXRzaWRlIG9mIHRoaXMgaW50ZXJ2YWwsIGFuZCBkcmF3IGFnYWluLlxuICAgICAqIFRoaXMgaXMgd2hhdCB0aGUgdGVzdCBiZWxvdyBkb2VzLCB3aGlsZSBjYXJlZnVsbHkgYXZvaWRpbmdcbiAgICAgKiBvdmVyZmxvd3MgYW5kIHNwYXJpbmcgYSBkaXZpc2lvbiBbbWFzayAvIG5dLiAqKVxuICAgIGlmIHIgLSB2ID4gbWFzayAtIG4gKyAxIHRoZW4gaW50X2F1eCBzIG4gbWFzayBlbHNlIHZcblxuICAoKiBSZXR1cm4gYW4gaW50ZWdlciBiZXR3ZWVuIDAgKGluY2x1ZGVkKSBhbmQgW2JvdW5kXSAoZXhjbHVkZWQpLlxuICAgICBUaGUgYm91bmQgbXVzdCBmaXQgaW4gMzEtYml0IHNpZ25lZCBpbnRlZ2Vycy5cbiAgICAgVGhpcyBmdW5jdGlvbiB5aWVsZHMgdGhlIHNhbWUgb3V0cHV0IHJlZ2FyZGxlc3Mgb2YgdGhlIGludGVnZXIgc2l6ZS4gKilcbiAgbGV0IGludCBzIGJvdW5kID1cbiAgICBpZiBib3VuZCA+IG1heF9pbnQzMSB8fCBib3VuZCA8PSAwXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIlJhbmRvbS5pbnRcIlxuICAgIGVsc2UgaW50X2F1eCBzIGJvdW5kIG1heF9pbnQzMVxuXG4gICgqIFJldHVybiBhbiBpbnRlZ2VyIGJldHdlZW4gMCAoaW5jbHVkZWQpIGFuZCBbYm91bmRdIChleGNsdWRlZCkuXG4gICAgIFtib3VuZF0gbWF5IGJlIGFueSBwb3NpdGl2ZSBbaW50XS4gKilcbiAgbGV0IGZ1bGxfaW50IHMgYm91bmQgPVxuICAgIGlmIGJvdW5kIDw9IDAgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJSYW5kb20uZnVsbF9pbnRcIlxuICAgICgqIFdoZW4gdGhlIGJvdW5kIGZpdHMgaW4gMzEtYml0IHNpZ25lZCBpbnRlZ2Vycywgd2UgdXNlIHRoZSBzYW1lIG1hc2tcbiAgICAgICBhcyBpbiBmdW5jdGlvbiBbaW50XSBzbyBhcyB0byB5aWVsZCB0aGUgc2FtZSBvdXRwdXQgb24gYWxsIHBsYXRmb3Jtc1xuICAgICAgIHN1cHBvcnRlZCBieSBPQ2FtbCAoMzItYml0IE9DYW1sLCA2NC1iaXQgT0NhbWwsIGFuZCBKYXZhU2NyaXB0KS5cbiAgICAgICBXaGVuIHRoZSBib3VuZCBmaXRzIGluIDMyLWJpdCBzaWduZWQgaW50ZWdlcnMsIHdlIHVzZSBbbWF4X2ludDMyXVxuICAgICAgIGFzIHRoZSBtYXNrIHNvIGFzIHRvIHlpZWxkIHRoZSBzYW1lIG91dHB1dCBvbiBhbGwgcGxhdGZvcm1zIHdoZXJlXG4gICAgICAgW1N5cy5pbnRfc2l6ZSA+PSAzMl0gKGkuZS4gSmF2YVNjcmlwdCBhbmQgNjQtYml0IE9DYW1sKS4gKilcbiAgICBlbHNlXG4gICAgICBpbnRfYXV4IHMgYm91bmRcbiAgICAgICAgKGlmIGJvdW5kIDw9IG1heF9pbnQzMSB0aGVuIG1heF9pbnQzMVxuICAgICAgICAgZWxzZSBpZiBib3VuZCA8PSBtYXhfaW50MzIgdGhlbiBtYXhfaW50MzJcbiAgICAgICAgIGVsc2UgbWF4X2ludClcblxuICAoKiBSZXR1cm4gYW4gaW50ZWdlciBiZXR3ZWVuIFttaW5dIChpbmNsdWRlZCkgYW5kIFttYXhdIChpbmNsdWRlZCkuXG4gICAgIFRoZSBbbmJpdHNdIHBhcmFtZXRlciBpcyB0aGUgc2l6ZSBpbiBiaXRzIG9mIHRoZSBzaWduZWQgaW50ZWdlcnNcbiAgICAgd2UgZHJhdyBmcm9tIFtzXS5cbiAgICAgV2UgbXVzdCBoYXZlIFstMntebmJpdHMgLSAxfSA8PSBtaW4gPD0gbWF4IDwgMntebmJpdHMgLSAxfV0uXG4gICAgIE1vcmVvdmVyLCBmb3IgdGhlIGl0ZXJhdGlvbiB0byBjb252ZXJnZSBxdWlja2x5LCB0aGUgaW50ZXJ2YWxcbiAgICAgW1ttaW4sIG1heF1dIHNob3VsZCBoYXZlIHdpZHRoIGF0IGxlYXN0IFsye15uYml0cyAtIDF9XS5cbiAgICAgQXMgdGhlIHdpZHRoIGFwcHJvYWNoZXMgdGhpcyBsb3dlciBsaW1pdCwgdGhlIGF2ZXJhZ2UgbnVtYmVyIG9mXG4gICAgIGRyYXdzIGFwcHJvYWNoZXMgMiwgd2l0aCBhIHF1aXRlIGhpZ2ggc3RhbmRhcmQgZGV2aWF0aW9uICgyICsgZXBzaWxvbikuICopXG4gIGxldCByZWMgaW50X2luX2xhcmdlX3JhbmdlIHMgfm1pbiB+bWF4IH5uYml0cyA9XG4gICAgbGV0IGRyb3AgPSBTeXMuaW50X3NpemUgLSBuYml0cyBpblxuICAgICgqIFRoZSBiaXRzaGlmdHMgcmVwbGljYXRlIHRoZSBbbmJpdHNdLXRoIGJpdCAoc2lnbiBiaXQpIHRvIGhpZ2hlciBiaXRzOiAqKVxuICAgIGxldCByID0gKChJbnQ2NC50b19pbnQgKG5leHQgcykpIGxzbCBkcm9wKSBhc3IgZHJvcCBpblxuICAgIGlmIHIgPCBtaW4gfHwgciA+IG1heCB0aGVuIGludF9pbl9sYXJnZV9yYW5nZSBzIH5taW4gfm1heCB+bmJpdHMgZWxzZSByXG5cbiAgKCogUmV0dXJuIGFuIGludGVnZXIgYmV0d2VlbiBbbWluXSAoaW5jbHVkZWQpIGFuZCBbbWF4XSAoaW5jbHVkZWQpLlxuICAgICBbbWFza10gaXMgYXMgZGVzY3JpYmVkIGZvciBbaW50X2F1eF0uXG4gICAgIFtuYml0c10gaXMgYXMgZGVzY3JpYmVkIGZvciBbaW50X2luX2xhcmdlX3JhbmdlXS4gKilcbiAgbGV0IGludF9pbl9yYW5nZV9hdXggcyB+bWluIH5tYXggfm1hc2sgfm5iaXRzID1cbiAgICBsZXQgc3BhbiA9IG1heCAtIG1pbiArIDEgaW5cbiAgICBpZiBzcGFuIDw9IG1hc2sgKCogW3NwYW5dIGlzIHNtYWxsIGVub3VnaCAqKVxuICAgICYmIHNwYW4gPiAwICAgICAoKiBubyBvdmVyZmxvdyBvY2N1cnJlZCB3aGVuIGNvbXB1dGluZyBbc3Bhbl0gKilcbiAgICB0aGVuXG4gICAgICAoKiBKdXN0IGRyYXcgYSBudW1iZXIgaW4gW1swLCBzcGFuKV0gYW5kIHNoaWZ0IGl0IGJ5IFttaW5dLiAqKVxuICAgICAgbWluICsgaW50X2F1eCBzIHNwYW4gbWFza1xuICAgIGVsc2VcbiAgICAgICgqIFNwYW4gdG9vIGxhcmdlLCB1c2UgdGhlIGFsdGVybmF0aXZlIGRyYXdpbmcgbWV0aG9kLiAqKVxuICAgICAgaW50X2luX2xhcmdlX3JhbmdlIHMgfm1pbiB+bWF4IH5uYml0c1xuXG4gICgqIFJldHVybiBhbiBpbnRlZ2VyIGJldHdlZW4gW21pbl0gKGluY2x1ZGVkKSBhbmQgW21heF0gKGluY2x1ZGVkKS5cbiAgICAgV2UgbXVzdCBoYXZlIFttaW4gPD0gbWF4XS4gKilcbiAgbGV0IGludF9pbl9yYW5nZSBzIH5taW4gfm1heCA9XG4gICAgaWYgbWluID4gbWF4IHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiUmFuZG9tLmludF9pbl9yYW5nZVwiO1xuICAgICgqIFdoZW4gYm90aCBib3VuZHMgZml0IGluIDMxLWJpdCBzaWduZWQgaW50ZWdlcnMsIHdlIHVzZSBwYXJhbWV0ZXJzXG4gICAgICAgW21hc2tdIGFuZCBbbmJpdHNdIGFwcHJvcHJpYXRlIGZvciAzMS1iaXQgaW50ZWdlcnMsIHNvIGFzIHRvXG4gICAgICAgeWllbGQgdGhlIHNhbWUgb3V0cHV0IG9uIGFsbCBwbGF0Zm9ybXMgc3VwcG9ydGVkIGJ5IE9DYW1sLlxuICAgICAgIFdoZW4gYm90aCBib3VuZHMgZml0IGluIDMyLWJpdCBzaWduZWQgaW50ZWdlcnMsIHdlIHVzZSBwYXJhbWV0ZXJzXG4gICAgICAgW21hc2tdIGFuZCBbbmJpdHNdIGFwcHJvcHJpYXRlIGZvciAzMi1iaXQgaW50ZWdlcnMsIHNvIGFzIHRvXG4gICAgICAgeWllbGQgdGhlIHNhbWUgb3V0cHV0IG9uIEphdmFTY3JpcHQgYW5kIG9uIDY0LWJpdCBPQ2FtbC4gKilcbiAgICBpZiBtaW4gPj0gbWluX2ludDMxICYmIG1heCA8PSBtYXhfaW50MzEgdGhlblxuICAgICAgaW50X2luX3JhbmdlX2F1eCBzIH5taW4gfm1heCB+bWFzazptYXhfaW50MzEgfm5iaXRzOjMxXG4gICAgZWxzZSBpZiBtaW4gPj0gbWluX2ludDMyICYmIG1heCA8PSBtYXhfaW50MzIgdGhlblxuICAgICAgaW50X2luX3JhbmdlX2F1eCBzIH5taW4gfm1heCB+bWFzazptYXhfaW50MzIgfm5iaXRzOjMyXG4gICAgZWxzZVxuICAgICAgaW50X2luX3JhbmdlX2F1eCBzIH5taW4gfm1heCB+bWFzazptYXhfaW50IH5uYml0czpTeXMuaW50X3NpemVcblxuICAoKiBSZXR1cm4gMzIgcmFuZG9tIGJpdHMgYXMgYW4gW2ludDMyXSAqKVxuICBsZXQgYml0czMyIHMgPVxuICAgIEludDY0LnRvX2ludDMyIChuZXh0IHMpXG5cbiAgKCogUmV0dXJuIGFuIFtpbnQzMl0gYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtib3VuZF0gKGV4Y2x1ZGVkKS4gKilcbiAgbGV0IHJlYyBpbnQzMmF1eCBzIG4gPVxuICAgIGxldCByID0gSW50MzIuc2hpZnRfcmlnaHRfbG9naWNhbCAoYml0czMyIHMpIDEgaW5cbiAgICBsZXQgdiA9IEludDMyLnJlbSByIG4gaW5cbiAgICAoKiBFeHBsYW5hdGlvbiBvZiB0aGlzIHRlc3Q6IHNlZSBjb21tZW50IGluIFtpbnRfYXV4XS4gKilcbiAgICBpZiBJbnQzMi4oc3ViIHIgdiA+IGFkZCAoc3ViIG1heF9pbnQgbikgMWwpXG4gICAgdGhlbiBpbnQzMmF1eCBzIG5cbiAgICBlbHNlIHZcblxuICBsZXQgaW50MzIgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMGxcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludDMyXCJcbiAgICBlbHNlIGludDMyYXV4IHMgYm91bmRcblxuICAoKiBSZXR1cm4gYW4gW2ludDMyXSBiZXR3ZWVuIFttaW5dIChpbmNsdWRlZCkgYW5kIFttYXhdIChpbmNsdWRlZCkuXG4gICAgIFdlIG11c3QgaGF2ZSBbbWluIDw9IG1heF0uICopXG4gIGxldCByZWMgaW50MzJfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4ID1cbiAgICBsZXQgciA9IEludDY0LnRvX2ludDMyIChuZXh0IHMpIGluXG4gICAgaWYgciA8IG1pbiB8fCByID4gbWF4IHRoZW4gaW50MzJfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4IGVsc2UgclxuXG4gIGxldCBpbnQzMl9pbl9yYW5nZSBzIH5taW4gfm1heCA9XG4gICAgaWYgbWluID4gbWF4IHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiUmFuZG9tLmludDMyX2luX3JhbmdlXCJcbiAgICBlbHNlXG4gICAgICBsZXQgc3BhbiA9IEludDMyLnN1Y2MgKEludDMyLnN1YiBtYXggbWluKSBpblxuICAgICAgKCogRXhwbGFuYXRpb24gb2YgdGhpcyB0ZXN0OiBzZWUgY29tbWVudCBpbiBbaW50X2luX3JhbmdlX2F1eF0uICopXG4gICAgICBpZiBzcGFuIDw9IEludDMyLnplcm8gdGhlblxuICAgICAgICBpbnQzMl9pbl9yYW5nZV9hdXggcyB+bWluIH5tYXhcbiAgICAgIGVsc2VcbiAgICAgICAgSW50MzIuYWRkIG1pbiAoaW50MzJhdXggcyBzcGFuKVxuXG4gICgqIFJldHVybiA2NCByYW5kb20gYml0cyBhcyBhbiBbaW50NjRdICopXG4gIGxldCBiaXRzNjQgcyA9XG4gICAgbmV4dCBzXG5cbiAgKCogUmV0dXJuIGFuIFtpbnQ2NF0gYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtib3VuZF0gKGV4Y2x1ZGVkKS4gKilcbiAgbGV0IHJlYyBpbnQ2NGF1eCBzIG4gPVxuICAgIGxldCByID0gSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCAoYml0czY0IHMpIDEgaW5cbiAgICBsZXQgdiA9IEludDY0LnJlbSByIG4gaW5cbiAgICAoKiBFeHBsYW5hdGlvbiBvZiB0aGlzIHRlc3Q6IHNlZSBjb21tZW50IGluIFtpbnRfYXV4XS4gKilcbiAgICBpZiBJbnQ2NC4oc3ViIHIgdiA+IGFkZCAoc3ViIG1heF9pbnQgbikgMUwpXG4gICAgdGhlbiBpbnQ2NGF1eCBzIG5cbiAgICBlbHNlIHZcblxuICBsZXQgaW50NjQgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMExcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludDY0XCJcbiAgICBlbHNlIGludDY0YXV4IHMgYm91bmRcblxuICAoKiBSZXR1cm4gYW4gW2ludDY0XSBiZXR3ZWVuIFttaW5dIChpbmNsdWRlZCkgYW5kIFttYXhdIChpbmNsdWRlZCkuXG4gICAgIFdlIG11c3QgaGF2ZSBbbWluIDw9IG1heF0uICopXG4gIGxldCByZWMgaW50NjRfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4ID1cbiAgICBsZXQgciA9IG5leHQgcyBpblxuICAgIGlmIHIgPCBtaW4gfHwgciA+IG1heCB0aGVuIGludDY0X2luX3JhbmdlX2F1eCBzIH5taW4gfm1heCBlbHNlIHJcblxuICBsZXQgaW50NjRfaW5fcmFuZ2UgcyB+bWluIH5tYXggPVxuICAgIGlmIG1pbiA+IG1heCB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIlJhbmRvbS5pbnQ2NF9pbl9yYW5nZVwiXG4gICAgZWxzZVxuICAgICAgbGV0IHNwYW4gPSBJbnQ2NC5zdWNjIChJbnQ2NC5zdWIgbWF4IG1pbikgaW5cbiAgICAgICgqIEV4cGxhbmF0aW9uIG9mIHRoaXMgdGVzdDogc2VlIGNvbW1lbnQgaW4gW2ludF9pbl9yYW5nZV9hdXhdLiAqKVxuICAgICAgaWYgc3BhbiA8PSBJbnQ2NC56ZXJvIHRoZW5cbiAgICAgICAgaW50NjRfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4XG4gICAgICBlbHNlXG4gICAgICAgIEludDY0LmFkZCBtaW4gKGludDY0YXV4IHMgc3BhbilcblxuICAoKiBSZXR1cm4gMzIgb3IgNjQgcmFuZG9tIGJpdHMgYXMgYSBbbmF0aXZlaW50XSAqKVxuICBsZXQgbmF0aXZlYml0cyA9XG4gICAgaWYgTmF0aXZlaW50LnNpemUgPSAzMlxuICAgIHRoZW4gZnVuIHMgLT4gTmF0aXZlaW50Lm9mX2ludDMyIChiaXRzMzIgcylcbiAgICBlbHNlIGZ1biBzIC0+IEludDY0LnRvX25hdGl2ZWludCAoYml0czY0IHMpXG5cbiAgKCogUmV0dXJuIGEgW25hdGl2ZWludF0gYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtib3VuZF0gKGV4Y2x1ZGVkKS4gKilcbiAgbGV0IG5hdGl2ZWludCA9XG4gICAgaWYgTmF0aXZlaW50LnNpemUgPSAzMlxuICAgIHRoZW4gZnVuIHMgYm91bmQgLT4gTmF0aXZlaW50Lm9mX2ludDMyIChpbnQzMiBzIChOYXRpdmVpbnQudG9faW50MzIgYm91bmQpKVxuICAgIGVsc2UgZnVuIHMgYm91bmQgLT4gSW50NjQudG9fbmF0aXZlaW50IChpbnQ2NCBzIChJbnQ2NC5vZl9uYXRpdmVpbnQgYm91bmQpKVxuXG4gICgqIFJldHVybiBhIFtuYXRpdmVpbnRdIGJldHdlZW4gW21pbl0gKGluY2x1ZGVkKSBhbmQgW21heF0gKGluY2x1ZGVkKS4gKilcbiAgbGV0IG5hdGl2ZWludF9pbl9yYW5nZSA9XG4gICAgaWYgTmF0aXZlaW50LnNpemUgPSAzMlxuICAgIHRoZW4gZnVuIHMgfm1pbiB+bWF4IC0+XG4gICAgICBOYXRpdmVpbnQub2ZfaW50MzIgKGludDMyX2luX3JhbmdlIHNcbiAgICAgICAgfm1pbjooTmF0aXZlaW50LnRvX2ludDMyIG1pbikgfm1heDooTmF0aXZlaW50LnRvX2ludDMyIG1heCkpXG4gICAgZWxzZSBmdW4gcyB+bWluIH5tYXggLT5cbiAgICAgIEludDY0LnRvX25hdGl2ZWludCAoaW50NjRfaW5fcmFuZ2Ugc1xuICAgICAgICB+bWluOihJbnQ2NC5vZl9uYXRpdmVpbnQgbWluKSB+bWF4OihJbnQ2NC5vZl9uYXRpdmVpbnQgbWF4KSlcblxuICAoKiBSZXR1cm4gYSBmbG9hdCAwIDwgeCA8IDEgdW5pZm9ybWx5IGRpc3RyaWJ1dGVkIGFtb25nIHRoZVxuICAgICBtdWx0aXBsZXMgb2YgMl4tNTMgKilcbiAgbGV0IHJlYyByYXdmbG9hdCBzID1cbiAgICBsZXQgYiA9IG5leHQgcyBpblxuICAgIGxldCBuID0gSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCBiIDExIGluXG4gICAgaWYgbiA8PiAwTCB0aGVuIEludDY0LnRvX2Zsb2F0IG4gKi4gMHgxLnAtNTMgZWxzZSByYXdmbG9hdCBzXG5cbiAgKCogUmV0dXJuIGEgZmxvYXQgYmV0d2VlbiAwIGFuZCBbYm91bmRdICopXG4gIGxldCBmbG9hdCBzIGJvdW5kID0gcmF3ZmxvYXQgcyAqLiBib3VuZFxuXG4gICgqIFJldHVybiBhIHJhbmRvbSBCb29sZWFuICopXG4gIGxldCBib29sIHMgPSBuZXh0IHMgPCAwTFxuXG4gICgqIFNwbGl0IGEgbmV3IFBSTkcgb2ZmIHRoZSBnaXZlbiBQUk5HICopXG4gIGxldCBzcGxpdCBzID1cbiAgICBsZXQgaTEgPSBiaXRzNjQgcyBpbiBsZXQgaTIgPSBiaXRzNjQgcyBpblxuICAgIGxldCBpMyA9IGJpdHM2NCBzIGluIGxldCBpNCA9IGJpdHM2NCBzIGluXG4gICAgbWsgaTEgaTIgaTMgaTRcbmVuZFxuXG5sZXQgbWtfZGVmYXVsdCAoKSA9XG4gICgqIFRoaXMgaXMgdGhlIHN0YXRlIG9idGFpbmVkIHdpdGggW1N0YXRlLm1ha2UgW3wgMzE0MTU5MjY1IHxdXS4gKilcbiAgU3RhdGUubWsgKC02MTk2ODc0Mjg5NTY3NzA1MDk3TClcbiAgICAgICAgICAgNTg2NTczMjQ5ODMzNzEzMTg5TFxuICAgICAgICAgICAoLTg1OTEyNjg4MDM4NjUwNDM0MDdMKVxuICAgICAgICAgICA2Mzg4NjEzNTk1ODQ5NzcyMDQ0TFxuXG5sZXQgcmFuZG9tX2tleSA9XG4gIERvbWFpbi5ETFMubmV3X2tleSB+c3BsaXRfZnJvbV9wYXJlbnQ6U3RhdGUuc3BsaXQgbWtfZGVmYXVsdFxuXG5sZXQgYml0cyAoKSA9IFN0YXRlLmJpdHMgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpXG5sZXQgaW50IGJvdW5kID0gU3RhdGUuaW50IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBib3VuZFxubGV0IGZ1bGxfaW50IGJvdW5kID0gU3RhdGUuZnVsbF9pbnQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIGJvdW5kXG5sZXQgaW50X2luX3JhbmdlIH5taW4gfm1heCA9XG4gIFN0YXRlLmludF9pbl9yYW5nZSAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgfm1pbiB+bWF4XG5sZXQgaW50MzIgYm91bmQgPSBTdGF0ZS5pbnQzMiAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgYm91bmRcbmxldCBpbnQzMl9pbl9yYW5nZSB+bWluIH5tYXggPVxuICBTdGF0ZS5pbnQzMl9pbl9yYW5nZSAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgfm1pbiB+bWF4XG5sZXQgbmF0aXZlaW50IGJvdW5kID0gU3RhdGUubmF0aXZlaW50IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBib3VuZFxubGV0IG5hdGl2ZWludF9pbl9yYW5nZSB+bWluIH5tYXggPVxuICBTdGF0ZS5uYXRpdmVpbnRfaW5fcmFuZ2UgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIH5taW4gfm1heFxubGV0IGludDY0IGJvdW5kID0gU3RhdGUuaW50NjQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIGJvdW5kXG5sZXQgaW50NjRfaW5fcmFuZ2Ugfm1pbiB+bWF4ID1cbiAgU3RhdGUuaW50NjRfaW5fcmFuZ2UgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIH5taW4gfm1heFxubGV0IGZsb2F0IHNjYWxlID0gU3RhdGUuZmxvYXQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIHNjYWxlXG5sZXQgYm9vbCAoKSA9IFN0YXRlLmJvb2wgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpXG5sZXQgYml0czMyICgpID0gU3RhdGUuYml0czMyIChEb21haW4uRExTLmdldCByYW5kb21fa2V5KVxubGV0IGJpdHM2NCAoKSA9IFN0YXRlLmJpdHM2NCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcbmxldCBuYXRpdmViaXRzICgpID0gU3RhdGUubmF0aXZlYml0cyAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcblxubGV0IGZ1bGxfaW5pdCBzZWVkID0gU3RhdGUucmVpbml0IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBzZWVkXG5sZXQgaW5pdCBzZWVkID0gZnVsbF9pbml0IFt8IHNlZWQgfF1cbmxldCBzZWxmX2luaXQgKCkgPSBmdWxsX2luaXQgKHJhbmRvbV9zZWVkKCkpXG5cbigqIFNwbGl0dGluZyAqKVxuXG5sZXQgc3BsaXQgKCkgPSBTdGF0ZS5zcGxpdCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcblxuKCogTWFuaXB1bGF0aW5nIHRoZSBjdXJyZW50IHN0YXRlLiAqKVxuXG5sZXQgZ2V0X3N0YXRlICgpID0gU3RhdGUuY29weSAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcbmxldCBzZXRfc3RhdGUgcyA9IFN0YXRlLmFzc2lnbiAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgc1xuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2JhX2JsaXQiLCJjYW1sX2JhX3NldF8xIiwiY2FtbF9ieXRlc19zZXQiLCJjYW1sX2NyZWF0ZV9ieXRlcyIsImNhbWxfZ3JlYXRlcnRoYW4iLCJjYW1sX2ludDY0X2FkZCIsImNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpIiwiY2FtbF9pbnQ2NF9vZl9pbnQzMiIsImNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZSIsImNhbWxfaW50NjRfc3ViIiwiY2FtbF9pbnQ2NF90b19pbnQzMiIsImNhbWxfbGVzc2VxdWFsIiwiY2FtbF9sZXNzdGhhbiIsImNhbWxfbHhtX25leHQiLCJjYW1sX21vZCIsImNhbWxfbm90ZXF1YWwiLCJjYW1sX3N5c19yYW5kb21fc2VlZCIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJjYW1sX2NhbGwzIiwiYTIiLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYl9Eb21haW4iLCJTdGRsaWJfU3lzIiwiU3RkbGliX0ludDMyIiwiU3RkbGliX0ludDY0IiwiU3RkbGliIiwiU3RkbGliX0J5dGVzIiwiU3RkbGliX0RpZ2VzdCIsIlN0ZGxpYl9TdHJpbmciLCJTdGRsaWJfQmlnYXJyYXkiLCJTdGRsaWJfTmF0aXZlaW50IiwiY3JlYXRlIiwicGFyYW0iLCJzZXQiLCJzIiwiaTEiLCJpMiIsImkzIiwiaTQiLCJtayIsInNlcmlhbGl6YXRpb25fcHJlZml4IiwidG9fYmluYXJ5X3N0cmluZyIsImJ1ZiIsImkiLCJvZl9iaW5hcnlfc3RyaW5nIiwiY29weSIsInNyYyIsImRzdCIsInJlaW5pdCIsInNlZWQiLCJuIiwiYiIsImQxIiwiZDIiLCJtYWtlIiwibWFrZV9zZWxmX2luaXQiLCJiaXRzIiwiaW50X2F1eCIsIm1hc2siLCJyIiwidiIsIm1heF9pbnQzMSIsImludCIsImJvdW5kIiwibWF4X2ludDMyIiwiZnVsbF9pbnQiLCJpbnRfaW5fcmFuZ2VfYXV4IiwibWluIiwibWF4IiwibmJpdHMiLCJzcGFuIiwiZHJvcCIsImludF9pbl9yYW5nZSIsImJpdHMzMiIsImludDMyYXV4IiwiaW50MzIiLCJpbnQzMl9pbl9yYW5nZSIsImludDY0YXV4IiwiaW50NjQiLCJpbnQ2NF9pbl9yYW5nZSIsIm5hdGl2ZWJpdHMiLCJuYXRpdmVpbnQiLCJuYXRpdmVpbnRfaW5fcmFuZ2UiLCJmbG9hdCIsImJvb2wiLCJzcGxpdCIsIm1rX2RlZmF1bHQiLCJyYW5kb21fa2V5Iiwic2NhbGUiLCJiaXRzNjQiLCJmdWxsX2luaXQiLCJpbml0Iiwic2VsZl9pbml0IiwiZ2V0X3N0YXRlIiwic2V0X3N0YXRlIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsNkJBQUE7QUFBQSxJQUFBQyxzQkFBQTtBQUFBLElBQUFDLGlDQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxzQkFBQTtBQUFBLElB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O0FBQUEsSUF0R3pCLHVCQXNHb0Q7QUFBQTtBQUFBLFlBQUE4QyxhQUFBaEQ7QUFBQUEsSUFDbkIsT0FBMkIsV0FBM0IsNkNBQTJCO0FBQUE7QUFBQSxZQUFBMEQsVUFBQXpDO0FBQUFBLElBRTlCLE9BQTJCLE9BQTNCLG1EQUFnQztBQUFBO0FBQUEsWUFBQTBDLEtBQUExQyxNQUNsRCwyQkFBb0I7QUFBQSxZQUFBMkMsVUFBQTVELE9BQ1AsT0FBZSxVQUFmLHdCQUFlO0FBQUEsWUFBQXFELFFBQUFyRDtBQUFBQSxJQUlqQixPQUEyQixNQUEzQiw2Q0FBMkI7QUFBQTtBQUFBLFlBQUE2RCxVQUFBN0Q7QUFBQUEsSUFJeEIsT0FBMkIsS0FBM0IsNkNBQTJCO0FBQUE7QUFBQSxZQUFBOEQsVUFBQWhEO0FBQUFBLFFBQUFDLE1BQzFCO0FBQUEsSUFoUzNCLDZCQWdTd0Q7QUFBQTtBQUFBLEdBakNFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVEcFY5RCIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjI1OTAyLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvaGFzaHRibC5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogSGFzaCB0YWJsZXMgKilcblxuKCogV2UgZG8gZHluYW1pYyBoYXNoaW5nLCBhbmQgcmVzaXplIHRoZSB0YWJsZSBhbmQgcmVoYXNoIHRoZSBlbGVtZW50c1xuICAgd2hlbiB0aGUgbG9hZCBmYWN0b3IgYmVjb21lcyB0b28gaGlnaC4gKilcblxudHlwZSAoJ2EsICdiKSB0ID1cbiAgeyBtdXRhYmxlIHNpemU6IGludDsgICAgICAgICAgICAgICAgICAgICAgICAoKiBudW1iZXIgb2YgZW50cmllcyAqKVxuICAgIG11dGFibGUgZGF0YTogKCdhLCAnYikgYnVja2V0bGlzdCBhcnJheTsgICgqIHRoZSBidWNrZXRzICopXG4gICAgc2VlZDogaW50OyAgICAgICAgICAgICAgICAgICAgICAgICgqIGZvciByYW5kb21pemF0aW9uICopXG4gICAgbXV0YWJsZSBpbml0aWFsX3NpemU6IGludDsgICAgICAgICAgICAgICAgKCogaW5pdGlhbCBhcnJheSBzaXplICopXG4gIH1cblxuYW5kICgnYSwgJ2IpIGJ1Y2tldGxpc3QgPVxuICAgIEVtcHR5XG4gIHwgQ29ucyBvZiB7IG11dGFibGUga2V5OiAnYTtcbiAgICAgICAgICAgICAgbXV0YWJsZSBkYXRhOiAnYjtcbiAgICAgICAgICAgICAgbXV0YWJsZSBuZXh0OiAoJ2EsICdiKSBidWNrZXRsaXN0IH1cblxuKCogVGhlIHNpZ24gb2YgaW5pdGlhbF9zaXplIGVuY29kZXMgdGhlIGZhY3QgdGhhdCBhIHRyYXZlcnNhbCBpc1xuICAgb25nb2luZyBvciBub3QuXG5cbiAgIFRoaXMgZGlzYWJsZXMgdGhlIGVmZmljaWVudCBpbiBwbGFjZSBpbXBsZW1lbnRhdGlvbiBvZiByZXNpemluZy5cbiopXG5cbmxldCBvbmdvaW5nX3RyYXZlcnNhbCBoID1cbiAgT2JqLnNpemUgKE9iai5yZXByIGgpIDwgNCAoKiBjb21wYXRpYmlsaXR5IHdpdGggb2xkIGhhc2ggdGFibGVzICopXG4gIHx8IGguaW5pdGlhbF9zaXplIDwgMFxuXG5sZXQgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoID1cbiAgaC5pbml0aWFsX3NpemUgPC0gLSBoLmluaXRpYWxfc2l6ZVxuXG4oKiBUbyBwaWNrIHJhbmRvbSBzZWVkcyBpZiByZXF1ZXN0ZWQgKilcblxubGV0IHJhbmRvbWl6ZWRfZGVmYXVsdCA9XG4gIGxldCBwYXJhbXMgPVxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiT0NBTUxSVU5QQVJBTVwiIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJDQU1MUlVOUEFSQU1cIiB3aXRoIE5vdF9mb3VuZCAtPiBcIlwiIGluXG4gIFN0cmluZy5jb250YWlucyBwYXJhbXMgJ1InXG5cbmxldCByYW5kb21pemVkID0gQXRvbWljLm1ha2UgcmFuZG9taXplZF9kZWZhdWx0XG5cbmxldCByYW5kb21pemUgKCkgPSBBdG9taWMuc2V0IHJhbmRvbWl6ZWQgdHJ1ZVxubGV0IGlzX3JhbmRvbWl6ZWQgKCkgPSBBdG9taWMuZ2V0IHJhbmRvbWl6ZWRcblxubGV0IHBybmdfa2V5ID0gRG9tYWluLkRMUy5uZXdfa2V5IFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdFxuXG4oKiBGdW5jdGlvbnMgd2hpY2ggYXBwZWFyIGJlZm9yZSB0aGUgZnVuY3RvcmlhbCBpbnRlcmZhY2UgbXVzdCBlaXRoZXIgYmVcbiAgIGluZGVwZW5kZW50IG9mIHRoZSBoYXNoIGZ1bmN0aW9uIG9yIHRha2UgaXQgYXMgYSBwYXJhbWV0ZXIgKHNlZSAjMjIwMiBhbmRcbiAgIGNvZGUgYmVsb3cgdGhlIGZ1bmN0b3IgZGVmaW5pdGlvbnMuICopXG5cbigqIENyZWF0aW5nIGEgZnJlc2gsIGVtcHR5IHRhYmxlICopXG5cbmxldCByZWMgcG93ZXJfMl9hYm92ZSB4IG4gPVxuICBpZiB4ID49IG4gdGhlbiB4XG4gIGVsc2UgaWYgeCAqIDIgPiBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuIHhcbiAgZWxzZSBwb3dlcl8yX2Fib3ZlICh4ICogMikgblxuXG5sZXQgY3JlYXRlID8ocmFuZG9tID0gQXRvbWljLmdldCByYW5kb21pemVkKSBpbml0aWFsX3NpemUgPVxuICBsZXQgcyA9IHBvd2VyXzJfYWJvdmUgMTYgaW5pdGlhbF9zaXplIGluXG4gIGxldCBzZWVkID1cbiAgICBpZiByYW5kb20gdGhlbiBSYW5kb20uU3RhdGUuYml0cyAoRG9tYWluLkRMUy5nZXQgcHJuZ19rZXkpIGVsc2UgMFxuICBpblxuICB7IGluaXRpYWxfc2l6ZSA9IHM7IHNpemUgPSAwOyBzZWVkID0gc2VlZDsgZGF0YSA9IEFycmF5Lm1ha2UgcyBFbXB0eSB9XG5cbmxldCBjbGVhciBoID1cbiAgaWYgaC5zaXplID4gMCB0aGVuIGJlZ2luXG4gICAgaC5zaXplIDwtIDA7XG4gICAgQXJyYXkuZmlsbCBoLmRhdGEgMCAoQXJyYXkubGVuZ3RoIGguZGF0YSkgRW1wdHlcbiAgZW5kXG5cbmxldCByZXNldCBoID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBoLmRhdGEgaW5cbiAgaWYgT2JqLnNpemUgKE9iai5yZXByIGgpIDwgNCAoKiBjb21wYXRpYmlsaXR5IHdpdGggb2xkIGhhc2ggdGFibGVzICopXG4gICAgfHwgbGVuID0gYWJzIGguaW5pdGlhbF9zaXplIHRoZW5cbiAgICBjbGVhciBoXG4gIGVsc2UgYmVnaW5cbiAgICBoLnNpemUgPC0gMDtcbiAgICBoLmRhdGEgPC0gQXJyYXkubWFrZSAoYWJzIGguaW5pdGlhbF9zaXplKSBFbXB0eVxuICBlbmRcblxubGV0IGNvcHlfYnVja2V0bGlzdCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gRW1wdHlcbiAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgcHJlYyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gKClcbiAgICAgICAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgICAgICBsZXQgciA9IENvbnMge2tleTsgZGF0YTsgbmV4dH0gaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgIHwgQ29ucyBwcmVjIC0+ICBwcmVjLm5leHQgPC0gclxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgbG9vcCByIG5leHRcbiAgICAgIGluXG4gICAgICBsZXQgciA9IENvbnMge2tleTsgZGF0YTsgbmV4dH0gaW5cbiAgICAgIGxvb3AgciBuZXh0O1xuICAgICAgclxuXG5sZXQgY29weSBoID0geyBoIHdpdGggZGF0YSA9IEFycmF5Lm1hcCBjb3B5X2J1Y2tldGxpc3QgaC5kYXRhIH1cblxubGV0IGxlbmd0aCBoID0gaC5zaXplXG5cbmxldCBpbnNlcnRfYWxsX2J1Y2tldHMgaW5kZXhmdW4gaW5wbGFjZSBvZGF0YSBuZGF0YSA9XG4gIGxldCBuc2l6ZSA9IEFycmF5Lmxlbmd0aCBuZGF0YSBpblxuICBsZXQgbmRhdGFfdGFpbCA9IEFycmF5Lm1ha2UgbnNpemUgRW1wdHkgaW5cbiAgbGV0IHJlYyBpbnNlcnRfYnVja2V0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+ICgpXG4gICAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IGFzIGNlbGwgLT5cbiAgICAgICAgbGV0IGNlbGwgPVxuICAgICAgICAgIGlmIGlucGxhY2UgdGhlbiBjZWxsXG4gICAgICAgICAgZWxzZSBDb25zIHtrZXk7IGRhdGE7IG5leHQgPSBFbXB0eX1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5pZHggPSBpbmRleGZ1biBrZXkgaW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggbmRhdGFfdGFpbC4obmlkeCkgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IG5kYXRhLihuaWR4KSA8LSBjZWxsO1xuICAgICAgICB8IENvbnMgdGFpbCAtPiB0YWlsLm5leHQgPC0gY2VsbDtcbiAgICAgICAgZW5kO1xuICAgICAgICBuZGF0YV90YWlsLihuaWR4KSA8LSBjZWxsO1xuICAgICAgICBpbnNlcnRfYnVja2V0IG5leHRcbiAgaW5cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBvZGF0YSAtIDEgZG9cbiAgICBpbnNlcnRfYnVja2V0IG9kYXRhLihpKVxuICBkb25lO1xuICBpZiBpbnBsYWNlIHRoZW5cbiAgICBmb3IgaSA9IDAgdG8gbnNpemUgLSAxIGRvXG4gICAgICBtYXRjaCBuZGF0YV90YWlsLihpKSB3aXRoXG4gICAgICB8IEVtcHR5IC0+ICgpXG4gICAgICB8IENvbnMgdGFpbCAtPiB0YWlsLm5leHQgPC0gRW1wdHlcbiAgICBkb25lXG5cbmxldCByZXNpemUgaW5kZXhmdW4gaCA9XG4gIGxldCBvZGF0YSA9IGguZGF0YSBpblxuICBsZXQgb3NpemUgPSBBcnJheS5sZW5ndGggb2RhdGEgaW5cbiAgbGV0IG5zaXplID0gb3NpemUgKiAyIGluXG4gIGlmIG5zaXplIDwgU3lzLm1heF9hcnJheV9sZW5ndGggdGhlbiBiZWdpblxuICAgIGxldCBuZGF0YSA9IEFycmF5Lm1ha2UgbnNpemUgRW1wdHkgaW5cbiAgICBsZXQgaW5wbGFjZSA9IG5vdCAob25nb2luZ190cmF2ZXJzYWwgaCkgaW5cbiAgICBoLmRhdGEgPC0gbmRhdGE7ICAgICAgICAgICgqIHNvIHRoYXQgaW5kZXhmdW4gc2VlcyB0aGUgbmV3IGJ1Y2tldCBjb3VudCAqKVxuICAgIGluc2VydF9hbGxfYnVja2V0cyAoaW5kZXhmdW4gaCkgaW5wbGFjZSBvZGF0YSBuZGF0YVxuICBlbmRcblxubGV0IGl0ZXIgZiBoID1cbiAgbGV0IHJlYyBkb19idWNrZXQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT5cbiAgICAgICAgKClcbiAgICB8IENvbnN7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICBmIGtleSBkYXRhOyBkb19idWNrZXQgbmV4dCBpblxuICBsZXQgb2xkX3RyYXYgPSBvbmdvaW5nX3RyYXZlcnNhbCBoIGluXG4gIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgdHJ5XG4gICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICBkb19idWNrZXQgZC4oaSlcbiAgICBkb25lO1xuICAgIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgd2l0aCBleG4gd2hlbiBub3Qgb2xkX3RyYXYgLT5cbiAgICBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgcmFpc2UgZXhuXG5cbmxldCByZWMgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBwcmVjID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gRW1wdHlcbiAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBFbXB0eVxuICAgICAgZW5kXG4gIHwgKENvbnMgKHtrZXk7IGRhdGE7IG5leHR9IGFzIGMpKSBhcyBzbG90IC0+XG4gICAgICBiZWdpbiBtYXRjaCBmIGtleSBkYXRhIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICAgIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgcHJlYyBuZXh0XG4gICAgICB8IFNvbWUgZGF0YSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBzbG90XG4gICAgICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIHNsb3RcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICAgYy5kYXRhIDwtIGRhdGE7XG4gICAgICAgICAgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBzbG90IG5leHRcbiAgICAgIGVuZFxuXG5sZXQgZmlsdGVyX21hcF9pbnBsYWNlIGYgaCA9XG4gIGxldCBkID0gaC5kYXRhIGluXG4gIGxldCBvbGRfdHJhdiA9IG9uZ29pbmdfdHJhdmVyc2FsIGggaW5cbiAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB0cnlcbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIEVtcHR5IGguZGF0YS4oaSlcbiAgICBkb25lO1xuICAgIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaFxuICB3aXRoIGV4biB3aGVuIG5vdCBvbGRfdHJhdiAtPlxuICAgIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICByYWlzZSBleG5cblxubGV0IGZvbGQgZiBoIGluaXQgPVxuICBsZXQgcmVjIGRvX2J1Y2tldCBiIGFjY3UgPVxuICAgIG1hdGNoIGIgd2l0aFxuICAgICAgRW1wdHkgLT5cbiAgICAgICAgYWNjdVxuICAgIHwgQ29uc3trZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgIGRvX2J1Y2tldCBuZXh0IChmIGtleSBkYXRhIGFjY3UpIGluXG4gIGxldCBvbGRfdHJhdiA9IG9uZ29pbmdfdHJhdmVyc2FsIGggaW5cbiAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB0cnlcbiAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgIGxldCBhY2N1ID0gcmVmIGluaXQgaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICBhY2N1IDo9IGRvX2J1Y2tldCBkLihpKSAhYWNjdVxuICAgIGRvbmU7XG4gICAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgICFhY2N1XG4gIHdpdGggZXhuIHdoZW4gbm90IG9sZF90cmF2IC0+XG4gICAgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgIHJhaXNlIGV4blxuXG50eXBlIHN0YXRpc3RpY3MgPSB7XG4gIG51bV9iaW5kaW5nczogaW50O1xuICBudW1fYnVja2V0czogaW50O1xuICBtYXhfYnVja2V0X2xlbmd0aDogaW50O1xuICBidWNrZXRfaGlzdG9ncmFtOiBpbnQgYXJyYXlcbn1cblxubGV0IHJlYyBidWNrZXRfbGVuZ3RoIGFjY3UgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFjY3VcbiAgfCBDb25ze25leHR9IC0+IGJ1Y2tldF9sZW5ndGggKGFjY3UgKyAxKSBuZXh0XG5cbmxldCBzdGF0cyBoID1cbiAgbGV0IG1ibCA9XG4gICAgQXJyYXkuZm9sZF9sZWZ0IChmdW4gbSBiIC0+IEludC5tYXggbSAoYnVja2V0X2xlbmd0aCAwIGIpKSAwIGguZGF0YSBpblxuICBsZXQgaGlzdG8gPSBBcnJheS5tYWtlIChtYmwgKyAxKSAwIGluXG4gIEFycmF5Lml0ZXJcbiAgICAoZnVuIGIgLT5cbiAgICAgIGxldCBsID0gYnVja2V0X2xlbmd0aCAwIGIgaW5cbiAgICAgIGhpc3RvLihsKSA8LSBoaXN0by4obCkgKyAxKVxuICAgIGguZGF0YTtcbiAgeyBudW1fYmluZGluZ3MgPSBoLnNpemU7XG4gICAgbnVtX2J1Y2tldHMgPSBBcnJheS5sZW5ndGggaC5kYXRhO1xuICAgIG1heF9idWNrZXRfbGVuZ3RoID0gbWJsO1xuICAgIGJ1Y2tldF9oaXN0b2dyYW0gPSBoaXN0byB9XG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgdGJsID1cbiAgKCogY2FwdHVyZSBjdXJyZW50IGFycmF5LCBzbyB0aGF0IGV2ZW4gaWYgdGhlIHRhYmxlIGlzIHJlc2l6ZWQgd2VcbiAgICAga2VlcCBpdGVyYXRpbmcgb24gdGhlIHNhbWUgYXJyYXkgKilcbiAgbGV0IHRibF9kYXRhID0gdGJsLmRhdGEgaW5cbiAgKCogc3RhdGU6IGluZGV4ICogbmV4dCBidWNrZXQgdG8gdHJhdmVyc2UgKilcbiAgbGV0IHJlYyBhdXggaSBidWNrICgpID0gbWF0Y2ggYnVjayB3aXRoXG4gICAgfCBFbXB0eSAtPlxuICAgICAgICBpZiBpID0gQXJyYXkubGVuZ3RoIHRibF9kYXRhXG4gICAgICAgIHRoZW4gU2VxLk5pbFxuICAgICAgICBlbHNlIGF1eChpKzEpIHRibF9kYXRhLihpKSAoKVxuICAgIHwgQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICBTZXEuQ29ucyAoKGtleSwgZGF0YSksIGF1eCBpIG5leHQpXG4gIGluXG4gIGF1eCAwIEVtcHR5XG5cbmxldCB0b19zZXFfa2V5cyBtID0gU2VxLm1hcCBmc3QgKHRvX3NlcSBtKVxuXG5sZXQgdG9fc2VxX3ZhbHVlcyBtID0gU2VxLm1hcCBzbmQgKHRvX3NlcSBtKVxuXG4oKiBGdW5jdG9yaWFsIGludGVyZmFjZSAqKVxuXG5tb2R1bGUgdHlwZSBIYXNoZWRUeXBlID1cbiAgc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBoYXNoOiB0IC0+IGludFxuICBlbmRcblxubW9kdWxlIHR5cGUgU2VlZGVkSGFzaGVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgc2VlZGVkX2hhc2g6IGludCAtPiB0IC0+IGludFxuICBlbmRcblxubW9kdWxlIHR5cGUgUyA9XG4gIHNpZ1xuICAgIHR5cGUga2V5XG4gICAgdHlwZSAhJ2EgdFxuICAgIHZhbCBjcmVhdGU6IGludCAtPiAnYSB0XG4gICAgdmFsIGNsZWFyIDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIHJlc2V0IDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIGNvcHk6ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBhZGQ6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgcmVtb3ZlOiAnYSB0IC0+IGtleSAtPiB1bml0XG4gICAgdmFsIGZpbmQ6ICdhIHQgLT4ga2V5IC0+ICdhXG4gICAgdmFsIGZpbmRfb3B0OiAnYSB0IC0+IGtleSAtPiAnYSBvcHRpb25cbiAgICB2YWwgZmluZF9hbGw6ICdhIHQgLT4ga2V5IC0+ICdhIGxpc3RcbiAgICB2YWwgcmVwbGFjZSA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgbWVtIDogJ2EgdCAtPiBrZXkgLT4gYm9vbFxuICAgIHZhbCBpdGVyOiAoa2V5IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmaWx0ZXJfbWFwX2lucGxhY2U6IChrZXkgLT4gJ2EgLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZm9sZDogKGtleSAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuICAgIHZhbCBsZW5ndGg6ICdhIHQgLT4gaW50XG4gICAgdmFsIHN0YXRzOiAnYSB0IC0+IHN0YXRpc3RpY3NcbiAgICB2YWwgdG9fc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3NlcV9rZXlzIDogXyB0IC0+IGtleSBTZXEudFxuICAgIHZhbCB0b19zZXFfdmFsdWVzIDogJ2EgdCAtPiAnYSBTZXEudFxuICAgIHZhbCBhZGRfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgICB2YWwgcmVwbGFjZV9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFNlZWRlZFMgPVxuICBzaWdcbiAgICB0eXBlIGtleVxuICAgIHR5cGUgISdhIHRcbiAgICB2YWwgY3JlYXRlIDogP3JhbmRvbTpib29sIC0+IGludCAtPiAnYSB0XG4gICAgdmFsIGNsZWFyIDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIHJlc2V0IDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIGNvcHkgOiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgYWRkIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCByZW1vdmUgOiAnYSB0IC0+IGtleSAtPiB1bml0XG4gICAgdmFsIGZpbmQgOiAnYSB0IC0+IGtleSAtPiAnYVxuICAgIHZhbCBmaW5kX29wdDogJ2EgdCAtPiBrZXkgLT4gJ2Egb3B0aW9uXG4gICAgdmFsIGZpbmRfYWxsIDogJ2EgdCAtPiBrZXkgLT4gJ2EgbGlzdFxuICAgIHZhbCByZXBsYWNlIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCBtZW0gOiAnYSB0IC0+IGtleSAtPiBib29sXG4gICAgdmFsIGl0ZXIgOiAoa2V5IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmaWx0ZXJfbWFwX2lucGxhY2U6IChrZXkgLT4gJ2EgLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZm9sZCA6IChrZXkgLT4gJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgLT4gJ2JcbiAgICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcbiAgICB2YWwgc3RhdHM6ICdhIHQgLT4gc3RhdGlzdGljc1xuICAgIHZhbCB0b19zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX2tleXMgOiBfIHQgLT4ga2V5IFNlcS50XG4gICAgdmFsIHRvX3NlcV92YWx1ZXMgOiAnYSB0IC0+ICdhIFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCByZXBsYWNlX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIG9mX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdFxuICBlbmRcblxubW9kdWxlIE1ha2VTZWVkZWQoSDogU2VlZGVkSGFzaGVkVHlwZSk6IChTZWVkZWRTIHdpdGggdHlwZSBrZXkgPSBILnQpID1cbiAgc3RydWN0XG4gICAgdHlwZSBrZXkgPSBILnRcbiAgICB0eXBlICdhIGhhc2h0YmwgPSAoa2V5LCAnYSkgdFxuICAgIHR5cGUgJ2EgdCA9ICdhIGhhc2h0YmxcbiAgICBsZXQgY3JlYXRlID0gY3JlYXRlXG4gICAgbGV0IGNsZWFyID0gY2xlYXJcbiAgICBsZXQgcmVzZXQgPSByZXNldFxuICAgIGxldCBjb3B5ID0gY29weVxuXG4gICAgbGV0IGtleV9pbmRleCBoIGtleSA9XG4gICAgICAoSC5zZWVkZWRfaGFzaCBoLnNlZWQga2V5KSBsYW5kIChBcnJheS5sZW5ndGggaC5kYXRhIC0gMSlcblxuICAgIGxldCBhZGQgaCBrZXkgZGF0YSA9XG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICAgICAgbGV0IGJ1Y2tldCA9IENvbnN7a2V5OyBkYXRhOyBuZXh0PWguZGF0YS4oaSl9IGluXG4gICAgICBoLmRhdGEuKGkpIDwtIGJ1Y2tldDtcbiAgICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuXG4gICAgbGV0IHJlYyByZW1vdmVfYnVja2V0IGggaSBrZXkgcHJlYyA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgKClcbiAgICAgIHwgKENvbnMge2tleT1rOyBuZXh0fSkgYXMgYyAtPlxuICAgICAgICAgIGlmIEguZXF1YWwgayBrZXlcbiAgICAgICAgICB0aGVuIGJlZ2luXG4gICAgICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgICAgIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIG5leHRcbiAgICAgICAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBuZXh0XG4gICAgICAgICAgZW5kXG4gICAgICAgICAgZWxzZSByZW1vdmVfYnVja2V0IGggaSBrZXkgYyBuZXh0XG5cbiAgICBsZXQgcmVtb3ZlIGgga2V5ID1cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gICAgICByZW1vdmVfYnVja2V0IGggaSBrZXkgRW1wdHkgaC5kYXRhLihpKVxuXG4gICAgbGV0IHJlYyBmaW5kX3JlYyBrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsgdGhlbiBkYXRhIGVsc2UgZmluZF9yZWMga2V5IG5leHRcblxuICAgIGxldCBmaW5kIGgga2V5ID1cbiAgICAgIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMSB0aGVuIGQxIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMiB0aGVuIGQyIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazMgdGhlbiBkMyBlbHNlIGZpbmRfcmVjIGtleSBuZXh0M1xuXG4gICAgbGV0IHJlYyBmaW5kX3JlY19vcHQga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgayB0aGVuIFNvbWUgZGF0YSBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dFxuXG4gICAgbGV0IGZpbmRfb3B0IGgga2V5ID1cbiAgICAgIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazEgdGhlbiBTb21lIGQxIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazIgdGhlbiBTb21lIGQyIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGszIHRoZW4gU29tZSBkMyBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dDNcblxuICAgIGxldCBmaW5kX2FsbCBoIGtleSA9XG4gICAgICBsZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBmaW5kX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgW11cbiAgICAgIHwgQ29uc3trZXk9azsgZGF0YT1kOyBuZXh0fSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwgayBrZXlcbiAgICAgICAgICB0aGVuIGQgOjogZmluZF9pbl9idWNrZXQgbmV4dFxuICAgICAgICAgIGVsc2UgZmluZF9pbl9idWNrZXQgbmV4dCBpblxuICAgICAgZmluZF9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpXG5cbiAgICBsZXQgcmVjIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICB0cnVlXG4gICAgICB8IENvbnMgKHtrZXk9azsgbmV4dH0gYXMgc2xvdCkgLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGsga2V5XG4gICAgICAgICAgdGhlbiAoc2xvdC5rZXkgPC0ga2V5OyBzbG90LmRhdGEgPC0gZGF0YTsgZmFsc2UpXG4gICAgICAgICAgZWxzZSByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBuZXh0XG5cbiAgICBsZXQgcmVwbGFjZSBoIGtleSBkYXRhID1cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gICAgICBsZXQgbCA9IGguZGF0YS4oaSkgaW5cbiAgICAgIGlmIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIGwgdGhlbiBiZWdpblxuICAgICAgICBoLmRhdGEuKGkpIDwtIENvbnN7a2V5OyBkYXRhOyBuZXh0PWx9O1xuICAgICAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICAgICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuICAgICAgZW5kXG5cbiAgICBsZXQgcmVjIG1lbV9pbl9idWNrZXQga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBDb25ze2tleT1rOyBuZXh0fSAtPlxuICAgICAgICAgIEguZXF1YWwgayBrZXkgfHwgbWVtX2luX2J1Y2tldCBrZXkgbmV4dFxuXG4gICAgbGV0IG1lbSBoIGtleSA9XG4gICAgICBtZW1faW5fYnVja2V0IGtleSBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxuICAgIGxldCBhZGRfc2VxIHRibCBpID1cbiAgICAgIFNlcS5pdGVyIChmdW4gKGssdikgLT4gYWRkIHRibCBrIHYpIGlcblxuICAgIGxldCByZXBsYWNlX3NlcSB0YmwgaSA9XG4gICAgICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IHJlcGxhY2UgdGJsIGsgdikgaVxuXG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG5cbiAgICBsZXQgaXRlciA9IGl0ZXJcbiAgICBsZXQgZmlsdGVyX21hcF9pbnBsYWNlID0gZmlsdGVyX21hcF9pbnBsYWNlXG4gICAgbGV0IGZvbGQgPSBmb2xkXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBzdGF0cyA9IHN0YXRzXG4gICAgbGV0IHRvX3NlcSA9IHRvX3NlcVxuICAgIGxldCB0b19zZXFfa2V5cyA9IHRvX3NlcV9rZXlzXG4gICAgbGV0IHRvX3NlcV92YWx1ZXMgPSB0b19zZXFfdmFsdWVzXG4gIGVuZFxuXG5tb2R1bGUgTWFrZShIOiBIYXNoZWRUeXBlKTogKFMgd2l0aCB0eXBlIGtleSA9IEgudCkgPVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VTZWVkZWQoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEgudFxuICAgICAgICBsZXQgZXF1YWwgPSBILmVxdWFsXG4gICAgICAgIGxldCBzZWVkZWRfaGFzaCAoX3NlZWQ6IGludCkgeCA9IEguaGFzaCB4XG4gICAgICBlbmQpXG4gICAgbGV0IGNyZWF0ZSBzeiA9IGNyZWF0ZSB+cmFuZG9tOmZhbHNlIHN6XG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG4gIGVuZFxuXG4oKiBQb2x5bW9ycGhpYyBoYXNoIGZ1bmN0aW9uLWJhc2VkIHRhYmxlcyAqKVxuKCogQ29kZSBpbmNsdWRlZCBiZWxvdyB0aGUgZnVuY3RvcmlhbCBpbnRlcmZhY2UgdG8gZ3VhcmQgYWdhaW5zdCBhY2NpZGVudGFsXG4gICB1c2UgLSBzZWUgIzIyMDIgKilcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2hfcGFyYW0gOlxuICBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiBpbnQgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5cbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgMCB4XG5sZXQgaGFzaF9wYXJhbSBuMSBuMiB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gbjEgbjIgMCB4XG5sZXQgc2VlZGVkX2hhc2ggc2VlZCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIHNlZWQgeFxuXG5sZXQga2V5X2luZGV4IGgga2V5ID1cbiAgaWYgT2JqLnNpemUgKE9iai5yZXByIGgpID49IDRcbiAgdGhlbiAoc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIGguc2VlZCBrZXkpIGxhbmQgKEFycmF5Lmxlbmd0aCBoLmRhdGEgLSAxKVxuICBlbHNlIGludmFsaWRfYXJnIFwiSGFzaHRibDogdW5zdXBwb3J0ZWQgaGFzaCB0YWJsZSBmb3JtYXRcIlxuXG5sZXQgYWRkIGgga2V5IGRhdGEgPVxuICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICBsZXQgYnVja2V0ID0gQ29uc3trZXk7IGRhdGE7IG5leHQ9aC5kYXRhLihpKX0gaW5cbiAgaC5kYXRhLihpKSA8LSBidWNrZXQ7XG4gIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGtleV9pbmRleCBoXG5cbmxldCByZWMgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IHByZWMgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICAoKVxuICB8IChDb25zIHtrZXk9azsgbmV4dH0pIGFzIGMgLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrZXkgPSAwXG4gICAgICB0aGVuIGJlZ2luXG4gICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIG5leHRcbiAgICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIG5leHRcbiAgICAgIGVuZFxuICAgICAgZWxzZSByZW1vdmVfYnVja2V0IGggaSBrZXkgYyBuZXh0XG5cbmxldCByZW1vdmUgaCBrZXkgPVxuICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICByZW1vdmVfYnVja2V0IGggaSBrZXkgRW1wdHkgaC5kYXRhLihpKVxuXG5sZXQgcmVjIGZpbmRfcmVjIGtleSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrID0gMCB0aGVuIGRhdGEgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dFxuXG5sZXQgZmluZCBoIGtleSA9XG4gIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrMSA9IDAgdGhlbiBkMSBlbHNlXG4gICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMiA9IDAgdGhlbiBkMiBlbHNlXG4gICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgaWYgY29tcGFyZSBrZXkgazMgPSAwIHRoZW4gZDMgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dDNcblxubGV0IHJlYyBmaW5kX3JlY19vcHQga2V5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgTm9uZVxuICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrID0gMCB0aGVuIFNvbWUgZGF0YSBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dFxuXG5sZXQgZmluZF9vcHQgaCBrZXkgPVxuICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgIGlmIGNvbXBhcmUga2V5IGsxID0gMCB0aGVuIFNvbWUgZDEgZWxzZVxuICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGsyID0gMCB0aGVuIFNvbWUgZDIgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMyA9IDAgdGhlbiBTb21lIGQzIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0M1xuXG5sZXQgZmluZF9hbGwgaCBrZXkgPVxuICBsZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBmaW5kX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIFtdXG4gIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrZXkgPSAwXG4gICAgICB0aGVuIGRhdGEgOjogZmluZF9pbl9idWNrZXQgbmV4dFxuICAgICAgZWxzZSBmaW5kX2luX2J1Y2tldCBuZXh0IGluXG4gIGZpbmRfaW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG5sZXQgcmVjIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKHtrZXk9azsgbmV4dH0gYXMgc2xvdCkgLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrZXkgPSAwXG4gICAgICB0aGVuIChzbG90LmtleSA8LSBrZXk7IHNsb3QuZGF0YSA8LSBkYXRhOyBmYWxzZSlcbiAgICAgIGVsc2UgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbmV4dFxuXG5sZXQgcmVwbGFjZSBoIGtleSBkYXRhID1cbiAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgbGV0IGwgPSBoLmRhdGEuKGkpIGluXG4gIGlmIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIGwgdGhlbiBiZWdpblxuICAgIGguZGF0YS4oaSkgPC0gQ29uc3trZXk7IGRhdGE7IG5leHQ9bH07XG4gICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuICBlbmRcblxubGV0IHJlYyBtZW1faW5fYnVja2V0IGtleSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIGZhbHNlXG4gIHwgQ29uc3trZXk9azsgbmV4dH0gLT5cbiAgICAgIGNvbXBhcmUgayBrZXkgPSAwIHx8IG1lbV9pbl9idWNrZXQga2V5IG5leHRcblxubGV0IG1lbSBoIGtleSA9XG4gIG1lbV9pbl9idWNrZXQga2V5IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG5sZXQgYWRkX3NlcSB0YmwgaSA9XG4gIFNlcS5pdGVyIChmdW4gKGssdikgLT4gYWRkIHRibCBrIHYpIGlcblxubGV0IHJlcGxhY2Vfc2VxIHRibCBpID1cbiAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiByZXBsYWNlIHRibCBrIHYpIGlcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgdGJsXG5cbmxldCByZWJ1aWxkID8ocmFuZG9tID0gQXRvbWljLmdldCByYW5kb21pemVkKSBoID1cbiAgbGV0IHMgPSBwb3dlcl8yX2Fib3ZlIDE2IChBcnJheS5sZW5ndGggaC5kYXRhKSBpblxuICBsZXQgc2VlZCA9XG4gICAgaWYgcmFuZG9tIHRoZW4gUmFuZG9tLlN0YXRlLmJpdHMgKERvbWFpbi5ETFMuZ2V0IHBybmdfa2V5KVxuICAgIGVsc2UgaWYgT2JqLnNpemUgKE9iai5yZXByIGgpID49IDQgdGhlbiBoLnNlZWRcbiAgICBlbHNlIDAgaW5cbiAgbGV0IGgnID0ge1xuICAgIHNpemUgPSBoLnNpemU7XG4gICAgZGF0YSA9IEFycmF5Lm1ha2UgcyBFbXB0eTtcbiAgICBzZWVkID0gc2VlZDtcbiAgICBpbml0aWFsX3NpemUgPSBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPj0gNCB0aGVuIGguaW5pdGlhbF9zaXplIGVsc2Ugc1xuICB9IGluXG4gIGluc2VydF9hbGxfYnVja2V0cyAoa2V5X2luZGV4IGgnKSBmYWxzZSBoLmRhdGEgaCcuZGF0YTtcbiAgaCdcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9hcnJheV9tYWtlIiwiY2FtbF9jaGVja19ib3VuZCIsImNhbWxfY29tcGFyZSIsImNhbWxfaGFzaCIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfc3lzX2dldGVudiIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWJfU3lzIiwiU3RkbGliIiwiU3RkbGliX0F0b21pYyIsIlN0ZGxpYl9Eb21haW4iLCJTdGRsaWJfUmFuZG9tIiwiU3RkbGliX1NlcSIsIlN0ZGxpYl9JbnQiLCJTdGRsaWJfQXJyYXkiLCJTdGRsaWJfU3RyaW5nIiwib25nb2luZ190cmF2ZXJzYWwiLCJoIiwiZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCIsInBhcmFtcyIsImV4biIsInJhbmRvbWl6ZWRfZGVmYXVsdCIsInJhbmRvbWl6ZWQiLCJyYW5kb21pemUiLCJwYXJhbSIsImlzX3JhbmRvbWl6ZWQiLCJwcm5nX2tleSIsInBvd2VyXzJfYWJvdmUiLCJ4IiwibiIsImNyZWF0ZSIsIm9wdCIsImluaXRpYWxfc2l6ZSIsInJhbmRvbSIsInMiLCJzZWVkIiwiY2xlYXIiLCJyZXNldCIsImxlbiIsImNvcHlfYnVja2V0bGlzdCIsImtleSIsImRhdGEiLCJuZXh0IiwicHJlYyIsImNvcHkiLCJsZW5ndGgiLCJpbnNlcnRfYWxsX2J1Y2tldHMiLCJpbmRleGZ1biIsImlucGxhY2UiLCJvZGF0YSIsIm5kYXRhIiwibnNpemUiLCJuZGF0YV90YWlsIiwiaSIsImNlbGwiLCJuaWR4IiwibWF0Y2giLCJyZXNpemUiLCJvc2l6ZSIsIml0ZXIiLCJvbGRfdHJhdiIsImQiLCJmaWx0ZXJfbWFwX2lucGxhY2UiLCJzbG90IiwiZm9sZCIsImluaXQiLCJhY2N1IiwiYiIsImJ1Y2tldF9sZW5ndGgiLCJzdGF0cyIsIm1ibCIsIm0iLCJoaXN0byIsImwiLCJ0b19zZXEiLCJ0YmwiLCJ0YmxfZGF0YSIsImF1eCIsImJ1Y2siLCJ0b19zZXFfa2V5cyIsInRvX3NlcV92YWx1ZXMiLCJNYWtlU2VlZGVkIiwiSCIsImtleV9pbmRleCIsImFkZCIsImJ1Y2tldCIsInJlbW92ZSIsImsiLCJmaW5kIiwiazEiLCJkMSIsIm5leHQxIiwiazIiLCJkMiIsIm5leHQyIiwiazMiLCJkMyIsIm5leHQzIiwiZmluZF9vcHQiLCJmaW5kX2FsbCIsImJsb2NrIiwiZHN0Iiwib2Zmc2V0IiwicmVwbGFjZSIsIm1lbSIsImFkZF9zZXEiLCJ2IiwicmVwbGFjZV9zZXEiLCJvZl9zZXEiLCJNYWtlIiwiZXF1YWwiLCJzZWVkZWRfaGFzaCIsImluY2x1ZGUiLCJzeiIsImhhc2giLCJoYXNoX3BhcmFtIiwibjEiLCJuMiIsInJlYnVpbGQiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxZQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxJQUFBQyxrQkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQTtBQUFBLE9BQUFDLGdCQUFBO0FBQUEsWUFBQUMsa0JBQUFDO0FBQUFBLFFBQUEsSUN3Q0U7QUFBQTtBQUFBLEdBQ3FCO0FBQUEsWUFBQUMsdUJBQUFELEdBR3JCLDRCQUFrQztBQUFBLEdENUNwQyxZQ2tEUSxrQ0FBQUUsU0FBQTtBQUFBLFNBQUFDO0FBQUFBLFFBQUFBLE1EbERSO0FBQUE7QUFBQSxnQkNtRFEsaUNBQUFELFNBQUE7QUFBQSxVQUFBQztBQUFBQSxTQUFBQSxRRG5EUjtBQUFBO0FBQUEsU0FBQUQsU0FBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFFLHFCQ29ERTtBQUFBLElBQUFDLGFBRWU7QUFBQSxZQUFBQyxVQUFBQztBQUFBQSxJQUVFLGlEQUEwQjtBQUFBO0FBQUEsWUFBQUMsY0FB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RCxJQUZnQjtBQUFBLE1BQUE3QyxPQUFBO0FBQUEsVUFJaEI7QUFBQSxLQUFhO0FBQUE7QUFBQTtBQUFBLEdBR3lCO0FBQUEsWUFBQStELFFBQUE5QixLQUFBdEI7QUFBQUEsSUFHMUM7QUFBQTtBQUFBLHNCQUFBN0I7QUFBQUEsa0JBQUFrRixJQUFTLFVBQUFuQixJQUFBO0FBQUEsY0FBYyxxQkFBWTtBQUFBO0FBQUEsZUFBRTtBQUFBO0FBQUEsWUFBQW9CLFlBQUFoQyxLQUFBdEI7QUFBQUEsSUFHckM7QUFBQTtBQUFBLHNCQUFBN0I7QUFBQUEsa0JBQUFrRixJQUFTLFVBQUFuQixJQUFBO0FBQUEsY0FBYyx5QkFBZ0I7QUFBQTtBQUFBLGVBQUU7QUFBQTtBQUFBLFlBQUFxQixPQUFBdkQ7QUFBQUEsUUFBQXNCLE1BRy9CO0FBQUEsSUFDVjtBQUFBLElBQWlCO0FBQUEsR0FDZDtBQUFBLFlBQUEyQyxRQUFBdkYsS0FBQWQ7QUFBQUE7QUFBQUEsS0FBQWdCLFNBRU8sZUFBVztBQUFBLEtBQUFDLElBQ2I7QUFBQSxJQUNSO0FBQUE7QUFBQSxVQUNtQztBQUFBLE1BQUFDLE9BQWxCO0FBQUE7QUFBQSxTQUFBQSxPQUNWO0FBQUE7QUFBQSxTQUVQO0FBQUEsS0FBQWxCLE1BRVM7QUFBQSxJQUlUO0FBQUEsa0JBQW1CO0FBQUEsSUFBbUM7QUFBQSxHQUNwRDtBQUFBLEdBOWpCeUQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUQzRDdEIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MjY3MTYsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9mb3JtYXQubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBQaWVycmUgV2VpcywgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEEgcHJldHR5LXByaW50aW5nIGZhY2lsaXR5IGFuZCBkZWZpbml0aW9uIG9mIGZvcm1hdHRlcnMgZm9yICdwYXJhbGxlbCdcbiAgIChpLmUuIHVucmVsYXRlZCBvciBpbmRlcGVuZGVudCkgcHJldHR5LXByaW50aW5nIG9uIG11bHRpcGxlIG91dCBjaGFubmVscy4gKilcblxuKCpcbiAgIFRoZSBwcmV0dHktcHJpbnRpbmcgZW5naW5lIGludGVybmFsIGRhdGEgc3RydWN0dXJlcy5cbiopXG5cbmxldCBpZCB4ID0geFxuXG4oKiBBIGRldm90ZWQgdHlwZSBmb3Igc2l6ZXMgdG8gYXZvaWQgY29uZnVzaW9uXG4gICBiZXR3ZWVuIHNpemVzIGFuZCBtZXJlIGludGVnZXJzLiAqKVxubW9kdWxlIFNpemUgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIHRvX2ludCA6IHQgLT4gaW50XG4gIHZhbCBvZl9pbnQgOiBpbnQgLT4gdFxuICB2YWwgemVybyA6IHRcbiAgdmFsIHVua25vd24gOiB0XG4gIHZhbCBpc19rbm93biA6IHQgLT4gYm9vbFxuZW5kICA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnRcblxuICBsZXQgdG9faW50ID0gaWRcbiAgbGV0IG9mX2ludCA9IGlkXG4gIGxldCB6ZXJvID0gMFxuICBsZXQgdW5rbm93biA9IC0xXG4gIGxldCBpc19rbm93biBuID0gbiA+PSAwXG5lbmRcblxuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRpbmcgYm94ZXMgZGVmaW5pdGlvbjpcbiAgIGEgcHJldHR5LXByaW50aW5nIGJveCBpcyBlaXRoZXJcbiAgIC0gaGJveDogaG9yaXpvbnRhbCBib3ggKG5vIGxpbmUgc3BsaXR0aW5nKVxuICAgLSB2Ym94OiB2ZXJ0aWNhbCBib3ggKGV2ZXJ5IGJyZWFrIGhpbnQgc3BsaXRzIHRoZSBsaW5lKVxuICAgLSBodmJveDogaG9yaXpvbnRhbC92ZXJ0aWNhbCBib3hcbiAgICAgKHRoZSBib3ggYmVoYXZlcyBhcyBhbiBob3Jpem9udGFsIGJveCBpZiBpdCBmaXRzIG9uXG4gICAgICB0aGUgY3VycmVudCBsaW5lLCBvdGhlcndpc2UgdGhlIGJveCBiZWhhdmVzIGFzIGEgdmVydGljYWwgYm94KVxuICAgLSBob3Zib3g6IGhvcml6b250YWwgb3IgdmVydGljYWwgY29tcGFjdGluZyBib3hcbiAgICAgKHRoZSBib3ggaXMgY29tcGFjdGluZyBtYXRlcmlhbCwgcHJpbnRpbmcgYXMgbXVjaCBtYXRlcmlhbCBhcyBwb3NzaWJsZVxuICAgICAgb24gZXZlcnkgbGluZXMpXG4gICAtIGJveDogaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBjb21wYWN0aW5nIGJveCB3aXRoIGVuaGFuY2VkIGJveCBzdHJ1Y3R1cmVcbiAgICAgKHRoZSBib3ggYmVoYXZlcyBhcyBhbiBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGJveCBidXQgYnJlYWsgaGludHMgc3BsaXRcbiAgICAgIHRoZSBsaW5lIGlmIHNwbGl0dGluZyB3b3VsZCBtb3ZlIHRvIHRoZSBsZWZ0KVxuKilcbnR5cGUgYm94X3R5cGUgPSBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuYmxvY2tfdHlwZSA9XG4gIHwgUHBfaGJveCB8IFBwX3Zib3ggfCBQcF9odmJveCB8IFBwX2hvdmJveCB8IFBwX2JveCB8IFBwX2ZpdHNcblxuXG4oKiBUaGUgcHJldHR5LXByaW50aW5nIHRva2VucyBkZWZpbml0aW9uOlxuICAgYXJlIGVpdGhlciB0ZXh0IHRvIHByaW50IG9yIHByZXR0eSBwcmludGluZ1xuICAgZWxlbWVudHMgdGhhdCBkcml2ZSBpbmRlbnRhdGlvbiBhbmQgbGluZSBzcGxpdHRpbmcuICopXG50eXBlIHBwX3Rva2VuID1cbiAgfCBQcF90ZXh0IG9mIHN0cmluZyAgICAgICAgICAoKiBub3JtYWwgdGV4dCAqKVxuICB8IFBwX3N1YnN0cmluZyBvZiB7IHNvdXJjZTpzdHJpbmc7IHBvczppbnQ7IGxlbjppbnR9ICgqIHNsaWNlIG9mIHRleHQgKilcbiAgfCBQcF9icmVhayBvZiB7ICAgICAgICAgICAgICAoKiBjb21wbGV0ZSBicmVhayAqKVxuICAgICAgZml0czogc3RyaW5nICogaW50ICogc3RyaW5nOyAgICgqIGxpbmUgaXMgbm90IHNwbGl0ICopXG4gICAgICBicmVha3M6IHN0cmluZyAqIGludCAqIHN0cmluZzsgKCogbGluZSBpcyBzcGxpdCAqKVxuICAgIH1cbiAgfCBQcF90YnJlYWsgb2YgaW50ICogaW50ICAgICAoKiBnbyB0byBuZXh0IHRhYnVsYXRpb24gKilcbiAgfCBQcF9zdGFiICAgICAgICAgICAgICAgICAgICAoKiBzZXQgYSB0YWJ1bGF0aW9uICopXG4gIHwgUHBfYmVnaW4gb2YgaW50ICogYm94X3R5cGUgKCogYmVnaW5uaW5nIG9mIGEgYm94ICopXG4gIHwgUHBfZW5kICAgICAgICAgICAgICAgICAgICAgKCogZW5kIG9mIGEgYm94ICopXG4gIHwgUHBfdGJlZ2luIG9mIHRib3ggICAgICAgICAgKCogYmVnaW5uaW5nIG9mIGEgdGFidWxhdGlvbiBib3ggKilcbiAgfCBQcF90ZW5kICAgICAgICAgICAgICAgICAgICAoKiBlbmQgb2YgYSB0YWJ1bGF0aW9uIGJveCAqKVxuICB8IFBwX25ld2xpbmUgICAgICAgICAgICAgICAgICgqIHRvIGZvcmNlIGEgbmV3bGluZSBpbnNpZGUgYSBib3ggKilcbiAgfCBQcF9pZl9uZXdsaW5lICAgICAgICAgICAgICAoKiB0byBkbyBzb21ldGhpbmcgb25seSBpZiB0aGlzIHZlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lIGhhcyBiZWVuIGJyb2tlbiAqKVxuICB8IFBwX29wZW5fdGFnIG9mIHN0YWcgICAgICAgICAoKiBvcGVuaW5nIGEgdGFnIG5hbWUgKilcbiAgfCBQcF9jbG9zZV90YWcgICAgICAgICAgICAgICAoKiBjbG9zaW5nIHRoZSBtb3N0IHJlY2VudGx5IG9wZW4gdGFnICopXG5cbmFuZCBzdGFnID0gLi5cblxuYW5kIHRib3ggPSBQcF90Ym94IG9mIGludCBsaXN0IHJlZiAgKCogVGFidWxhdGlvbiBib3ggKilcblxudHlwZSB0YWcgPSBzdHJpbmdcbnR5cGUgc3RhZyArPSBTdHJpbmdfdGFnIG9mIHRhZ1xuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZTpcbiAgIHByZXR0eS1wcmludGluZyBtYXRlcmlhbCBpcyBub3Qgd3JpdHRlbiBpbiB0aGUgb3V0cHV0IGFzIHNvb24gYXMgZW1pdHRlZDtcbiAgIGluc3RlYWQsIHRoZSBtYXRlcmlhbCBpcyBzaW1wbHkgcmVjb3JkZWQgaW4gdGhlIHByZXR0eS1wcmludGVyIHF1ZXVlLFxuICAgdW50aWwgdGhlIGVuY2xvc2luZyBib3ggaGFzIGEga25vd24gY29tcHV0ZWQgc2l6ZSBhbmQgcHJvcGVyIHNwbGl0dGluZ1xuICAgZGVjaXNpb25zIGNhbiBiZSBtYWRlLlxuXG4gICBUaGUgcHJldHR5LXByaW50ZXIgcXVldWUgY29udGFpbnMgZm9ybWF0dGluZyBlbGVtZW50cyB0byBiZSBwcmludGVkLlxuICAgRWFjaCBmb3JtYXR0aW5nIGVsZW1lbnQgaXMgYSB0dXBsZSAoc2l6ZSwgdG9rZW4sIGxlbmd0aCksIHdoZXJlXG4gICAtIGxlbmd0aCBpcyB0aGUgZGVjbGFyZWQgbGVuZ3RoIG9mIHRoZSB0b2tlbixcbiAgIC0gc2l6ZSBpcyBlZmZlY3RpdmUgc2l6ZSBvZiB0aGUgdG9rZW4gd2hlbiBpdCBpcyBwcmludGVkXG4gICAgIChzaXplIGlzIHNldCB3aGVuIHRoZSBzaXplIG9mIHRoZSBib3ggaXMga25vd24sIHNvIHRoYXQgc2l6ZSBvZiBicmVha1xuICAgICAgaGludHMgYXJlIGRlZmluaXRpdmUpLiAqKVxudHlwZSBwcF9xdWV1ZV9lbGVtID0ge1xuICBtdXRhYmxlIHNpemUgOiBTaXplLnQ7XG4gIHRva2VuIDogcHBfdG9rZW47XG4gIGxlbmd0aCA6IGludDtcbn1cblxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgcXVldWUgZGVmaW5pdGlvbi4gKilcbnR5cGUgcHBfcXVldWUgPSBwcF9xdWV1ZV9lbGVtIFF1ZXVlLnRcblxuKCogVGhlIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrLiAqKVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2s6IHNjYW5uaW5nIGVsZW1lbnQgZGVmaW5pdGlvbi4gKilcbnR5cGUgcHBfc2Nhbl9lbGVtID0ge1xuICBsZWZ0X3RvdGFsIDogaW50OyAoKiBWYWx1ZSBvZiBwcF9sZWZ0X3RvdGFsIHdoZW4gdGhlIGVsZW1lbnQgd2FzIGVucXVldWVkLiAqKVxuICBxdWV1ZV9lbGVtIDogcHBfcXVldWVfZWxlbVxufVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjazpcbiAgIHRoZSBmb3JtYXR0aW5nIHN0YWNrIGNvbnRhaW5zIHRoZSBkZXNjcmlwdGlvbiBvZiBhbGwgdGhlIGN1cnJlbnRseSBhY3RpdmVcbiAgIGJveGVzOyB0aGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjayBpcyB1c2VkIHRvIHNwbGl0IHRoZSBsaW5lc1xuICAgd2hpbGUgcHJpbnRpbmcgdG9rZW5zLiAqKVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjazogZm9ybWF0dGluZyBzdGFjayBlbGVtZW50IGRlZmluaXRpb24uXG4gICBFYWNoIHN0YWNrIGVsZW1lbnQgZGVzY3JpYmVzIGEgcHJldHR5LXByaW50aW5nIGJveC4gKilcbnR5cGUgcHBfZm9ybWF0X2VsZW0gPSB7IGJveF90eXBlIDogYm94X3R5cGU7IHdpZHRoIDogaW50IH1cblxuKCogVGhlIGZvcm1hdHRlciBkZWZpbml0aW9uLlxuICAgRWFjaCBmb3JtYXR0ZXIgdmFsdWUgaXMgYSBwcmV0dHktcHJpbnRlciBpbnN0YW5jZSB3aXRoIGFsbCBpdHNcbiAgIG1hY2hpbmVyeS4gKilcbnR5cGUgZm9ybWF0dGVyID0ge1xuICAoKiBUaGUgcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2suICopXG4gIHBwX3NjYW5fc3RhY2sgOiBwcF9zY2FuX2VsZW0gU3RhY2sudDtcbiAgKCogVGhlIHByZXR0eS1wcmludGVyIGZvcm1hdHRpbmcgc3RhY2suICopXG4gIHBwX2Zvcm1hdF9zdGFjayA6IHBwX2Zvcm1hdF9lbGVtIFN0YWNrLnQ7XG4gIHBwX3Rib3hfc3RhY2sgOiB0Ym94IFN0YWNrLnQ7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBzZW1hbnRpY3MgdGFnIHN0YWNrLiAqKVxuICBwcF90YWdfc3RhY2sgOiBzdGFnIFN0YWNrLnQ7XG4gIHBwX21hcmtfc3RhY2sgOiBzdGFnIFN0YWNrLnQ7XG4gICgqIFZhbHVlIG9mIHJpZ2h0IG1hcmdpbi4gKilcbiAgbXV0YWJsZSBwcF9tYXJnaW4gOiBpbnQ7XG4gICgqIE1pbmltYWwgc3BhY2UgbGVmdCBiZWZvcmUgbWFyZ2luLCB3aGVuIG9wZW5pbmcgYSBib3guICopXG4gIG11dGFibGUgcHBfbWluX3NwYWNlX2xlZnQgOiBpbnQ7XG4gICgqIE1heGltdW0gdmFsdWUgb2YgaW5kZW50YXRpb246XG4gICAgIG5vIGJveCBjYW4gYmUgb3BlbmVkIGZ1cnRoZXIuICopXG4gIG11dGFibGUgcHBfbWF4X2luZGVudCA6IGludDtcbiAgKCogU3BhY2UgcmVtYWluaW5nIG9uIHRoZSBjdXJyZW50IGxpbmUuICopXG4gIG11dGFibGUgcHBfc3BhY2VfbGVmdCA6IGludDtcbiAgKCogQ3VycmVudCB2YWx1ZSBvZiBpbmRlbnRhdGlvbi4gKilcbiAgbXV0YWJsZSBwcF9jdXJyZW50X2luZGVudCA6IGludDtcbiAgKCogVHJ1ZSB3aGVuIHRoZSBsaW5lIGhhcyBiZWVuIGJyb2tlbiBieSB0aGUgcHJldHR5LXByaW50ZXIuICopXG4gIG11dGFibGUgcHBfaXNfbmV3X2xpbmUgOiBib29sO1xuICAoKiBUb3RhbCB3aWR0aCBvZiB0b2tlbnMgYWxyZWFkeSBwcmludGVkLiAqKVxuICBtdXRhYmxlIHBwX2xlZnRfdG90YWwgOiBpbnQ7XG4gICgqIFRvdGFsIHdpZHRoIG9mIHRva2VucyBldmVyIHB1dCBpbiBxdWV1ZS4gKilcbiAgbXV0YWJsZSBwcF9yaWdodF90b3RhbCA6IGludDtcbiAgKCogQ3VycmVudCBudW1iZXIgb2Ygb3BlbiBib3hlcy4gKilcbiAgbXV0YWJsZSBwcF9jdXJyX2RlcHRoIDogaW50O1xuICAoKiBNYXhpbXVtIG51bWJlciBvZiBib3hlcyB3aGljaCBjYW4gYmUgc2ltdWx0YW5lb3VzbHkgb3Blbi4gKilcbiAgbXV0YWJsZSBwcF9tYXhfYm94ZXMgOiBpbnQ7XG4gICgqIEVsbGlwc2lzIHN0cmluZy4gKilcbiAgbXV0YWJsZSBwcF9lbGxpcHNpcyA6IHN0cmluZztcbiAgKCogT3V0cHV0IGZ1bmN0aW9uLiAqKVxuICBtdXRhYmxlIHBwX291dF9zdHJpbmcgOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0O1xuICBtdXRhYmxlIHBwX291dF93aWR0aCA6IHN0cmluZyAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gaW50O1xuICAoKiBGbHVzaGluZyBmdW5jdGlvbi4gKilcbiAgbXV0YWJsZSBwcF9vdXRfZmx1c2ggOiB1bml0IC0+IHVuaXQ7XG4gICgqIE91dHB1dCBvZiBuZXcgbGluZXMuICopXG4gIG11dGFibGUgcHBfb3V0X25ld2xpbmUgOiB1bml0IC0+IHVuaXQ7XG4gICgqIE91dHB1dCBvZiBicmVhayBoaW50cyBzcGFjZXMuICopXG4gIG11dGFibGUgcHBfb3V0X3NwYWNlcyA6IGludCAtPiB1bml0O1xuICAoKiBPdXRwdXQgb2YgaW5kZW50YXRpb24gb2YgbmV3IGxpbmVzLiAqKVxuICBtdXRhYmxlIHBwX291dF9pbmRlbnQgOiBpbnQgLT4gdW5pdDtcbiAgKCogQXJlIHRhZ3MgcHJpbnRlZCA/ICopXG4gIG11dGFibGUgcHBfcHJpbnRfdGFncyA6IGJvb2w7XG4gICgqIEFyZSB0YWdzIG1hcmtlZCA/ICopXG4gIG11dGFibGUgcHBfbWFya190YWdzIDogYm9vbDtcbiAgKCogRmluZCBvcGVuaW5nIGFuZCBjbG9zaW5nIG1hcmtlcnMgb2YgdGFncy4gKilcbiAgbXV0YWJsZSBwcF9tYXJrX29wZW5fdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIG11dGFibGUgcHBfbWFya19jbG9zZV90YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgbXV0YWJsZSBwcF9wcmludF9vcGVuX3RhZyA6IHN0YWcgLT4gdW5pdDtcbiAgbXV0YWJsZSBwcF9wcmludF9jbG9zZV90YWcgOiBzdGFnIC0+IHVuaXQ7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbiAgcHBfcXVldWUgOiBwcF9xdWV1ZTtcbn1cblxuXG4oKiBUaGUgZm9ybWF0dGVyIHNwZWNpZmljIHRhZyBoYW5kbGluZyBmdW5jdGlvbnMuICopXG50eXBlIGZvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyA9IHtcbiAgbWFya19vcGVuX3N0YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgbWFya19jbG9zZV9zdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIHByaW50X29wZW5fc3RhZyA6IHN0YWcgLT4gdW5pdDtcbiAgcHJpbnRfY2xvc2Vfc3RhZyA6IHN0YWcgLT4gdW5pdDtcbn1cblxuXG4oKiBUaGUgZm9ybWF0dGVyIGZ1bmN0aW9ucyB0byBvdXRwdXQgbWF0ZXJpYWwuICopXG50eXBlIGZvcm1hdHRlcl9vdXRfZnVuY3Rpb25zID0ge1xuICBvdXRfc3RyaW5nIDogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdDtcbiAgb3V0X3dpZHRoOiBzdHJpbmcgLT4gcG9zOmludCAtPiBsZW46aW50IC0+IGludDtcbiAgb3V0X2ZsdXNoIDogdW5pdCAtPiB1bml0O1xuICBvdXRfbmV3bGluZSA6IHVuaXQgLT4gdW5pdDtcbiAgb3V0X3NwYWNlcyA6IGludCAtPiB1bml0O1xuICBvdXRfaW5kZW50IDogaW50IC0+IHVuaXQ7XG59XG5cblxuKCpcblxuICBBdXhpbGlhcmllcyBhbmQgYmFzaWMgZnVuY3Rpb25zLlxuXG4qKVxuXG4oKiBFbnRlciBhIHRva2VuIGluIHRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbmxldCBwcF9lbnF1ZXVlIHN0YXRlIHRva2VuID1cbiAgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gc3RhdGUucHBfcmlnaHRfdG90YWwgKyB0b2tlbi5sZW5ndGg7XG4gIFF1ZXVlLmFkZCB0b2tlbiBzdGF0ZS5wcF9xdWV1ZVxuXG5cbmxldCBwcF9jbGVhcl9xdWV1ZSBzdGF0ZSA9XG4gIHN0YXRlLnBwX2xlZnRfdG90YWwgPC0gMTsgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gMTtcbiAgUXVldWUuY2xlYXIgc3RhdGUucHBfcXVldWVcblxuXG4oKiBQcF9pbmZpbml0eTogbGFyZ2UgdmFsdWUgZm9yIGRlZmF1bHQgdG9rZW5zIHNpemUuXG5cbiAgIFBwX2luZmluaXR5IGlzIGRvY3VtZW50ZWQgYXMgYmVpbmcgZ3JlYXRlciB0aGFuIDFlMTA7IHRvIGF2b2lkXG4gICBjb25mdXNpb24gYWJvdXQgdGhlIHdvcmQgJ2dyZWF0ZXInLCB3ZSBjaG9vc2UgcHBfaW5maW5pdHkgZ3JlYXRlclxuICAgdGhhbiAxZTEwICsgMTsgZm9yIGNvcnJlY3QgaGFuZGxpbmcgb2YgdGVzdHMgaW4gdGhlIGFsZ29yaXRobSxcbiAgIHBwX2luZmluaXR5IG11c3QgYmUgZXZlbiBvbmUgbW9yZSB0aGFuIDFlMTAgKyAxOyBsZXQncyBzdGFuZCBvbiB0aGVcbiAgIHNhZmUgc2lkZSBieSBjaG9vc2luZyAxLmUxMCsxMC5cblxuICAgUHBfaW5maW5pdHkgY291bGQgcHJvYmFibHkgYmUgMTA3Mzc0MTgyMyB0aGF0IGlzIDJeMzAgLSAxLCB0aGF0IGlzXG4gICB0aGUgbWluaW1hbCB1cHBlciBib3VuZCBmb3IgaW50ZWdlcnM7IG5vdyB0aGF0IG1heF9pbnQgaXMgZGVmaW5lZCxcbiAgIHRoaXMgbGltaXQgY291bGQgYWxzbyBiZSBkZWZpbmVkIGFzIG1heF9pbnQgLSAxLlxuXG4gICBIb3dldmVyLCBiZWZvcmUgc2V0dGluZyBwcF9pbmZpbml0eSB0byBzb21ldGhpbmcgYXJvdW5kIG1heF9pbnQsIHdlXG4gICBtdXN0IGNhcmVmdWxseSBkb3VibGUtY2hlY2sgYWxsIHRoZSBpbnRlZ2VyIGFyaXRobWV0aWMgb3BlcmF0aW9uc1xuICAgdGhhdCBpbnZvbHZlIHBwX2luZmluaXR5LCBzaW5jZSBhbnkgb3ZlcmZsb3cgd291bGQgd3JlY2sgaGF2b2MgdGhlXG4gICBwcmV0dHktcHJpbnRpbmcgYWxnb3JpdGhtJ3MgaW52YXJpYW50cy4gR2l2ZW4gdGhhdCB0aGlzIGFyaXRobWV0aWNcbiAgIGNvcnJlY3RuZXNzIGNoZWNrIGlzIGRpZmZpY3VsdCBhbmQgZXJyb3IgcHJvbmUgYW5kIGdpdmVuIHRoYXQgMWUxMFxuICAgKyAxIGlzIGluIHByYWN0aWNlIGxhcmdlIGVub3VnaCwgdGhlcmUgaXMgbm8gbmVlZCB0byBhdHRlbXB0IHRvIHNldFxuICAgcHBfaW5maW5pdHkgdG8gdGhlIHRoZW9yZXRpY2FsbHkgbWF4aW11bSBsaW1pdC4gSXQgaXMgbm90IHdvcnRoIHRoZVxuICAgYnVyZGVuICEgKilcbmxldCBwcF9pbmZpbml0eSA9IDEwMDAwMDAwMTBcblxuKCogT3V0cHV0IGZ1bmN0aW9ucyBmb3IgdGhlIGZvcm1hdHRlci4gKilcbmxldCBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIHMgPSBzdGF0ZS5wcF9vdXRfc3RyaW5nIHMgMCAoU3RyaW5nLmxlbmd0aCBzKVxubGV0IHBwX3N0cmluZ193aWR0aCBzdGF0ZSBzID0gc3RhdGUucHBfb3V0X3dpZHRoIHMgfnBvczowIH5sZW46KFN0cmluZy5sZW5ndGggcylcbmFuZCBwcF9vdXRwdXRfc3Vic3RyaW5nIHN0YXRlIH5wb3MgfmxlbiBzID1cbiAgc3RhdGUucHBfb3V0X3N0cmluZyBzIHBvcyBsZW5cbmFuZCBwcF9zdWJzdHJpbmdfd2lkdGggc3RhdGUgfnBvcyB+bGVuIHMgPSBzdGF0ZS5wcF9vdXRfd2lkdGggcyB+cG9zIH5sZW5cbmFuZCBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZSA9IHN0YXRlLnBwX291dF9uZXdsaW5lICgpXG5hbmQgcHBfb3V0cHV0X3NwYWNlcyBzdGF0ZSBuID0gc3RhdGUucHBfb3V0X3NwYWNlcyBuXG5hbmQgcHBfb3V0cHV0X2luZGVudCBzdGF0ZSBuID0gc3RhdGUucHBfb3V0X2luZGVudCBuXG5cbigqIEZvcm1hdCBhIHRleHR1YWwgdG9rZW4gKilcbmxldCBmb3JtYXRfcHBfdGV4dCBzdGF0ZSBzaXplIHRleHQgPVxuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX3NwYWNlX2xlZnQgLSBzaXplO1xuICBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIHRleHQ7XG4gIHN0YXRlLnBwX2lzX25ld19saW5lIDwtIGZhbHNlXG5cbigqIEZvcm1hdCBhIHNsaWNlICopXG5sZXQgZm9ybWF0X3BwX3N1YnN0cmluZyBzdGF0ZSBzaXplIH5wb3MgfmxlbiBzb3VyY2UgPVxuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX3NwYWNlX2xlZnQgLSBzaXplO1xuICBwcF9vdXRwdXRfc3Vic3RyaW5nIHN0YXRlIH5wb3MgfmxlbiBzb3VyY2U7XG4gIHN0YXRlLnBwX2lzX25ld19saW5lIDwtIGZhbHNlXG5cbigqIEZvcm1hdCBhIHN0cmluZyBieSBpdHMgbGVuZ3RoLCBpZiBub3QgZW1wdHkgKilcbmxldCBmb3JtYXRfc3RyaW5nIHN0YXRlIHMgPVxuICBpZiBzIDw+IFwiXCIgdGhlbiBmb3JtYXRfcHBfdGV4dCBzdGF0ZSAocHBfc3RyaW5nX3dpZHRoIHN0YXRlIHMpIHNcblxuKCogVG8gZm9ybWF0IGEgYnJlYWssIGluZGVudGluZyBhIG5ldyBsaW5lLiAqKVxubGV0IGJyZWFrX25ld19saW5lIHN0YXRlIChiZWZvcmUsIG9mZnNldCwgYWZ0ZXIpIHdpZHRoID1cbiAgZm9ybWF0X3N0cmluZyBzdGF0ZSBiZWZvcmU7XG4gIHBwX291dHB1dF9uZXdsaW5lIHN0YXRlO1xuICBzdGF0ZS5wcF9pc19uZXdfbGluZSA8LSB0cnVlO1xuICBsZXQgaW5kZW50ID0gc3RhdGUucHBfbWFyZ2luIC0gd2lkdGggKyBvZmZzZXQgaW5cbiAgKCogRG9uJ3QgaW5kZW50IG1vcmUgdGhhbiBwcF9tYXhfaW5kZW50LiAqKVxuICBsZXQgcmVhbF9pbmRlbnQgPSBJbnQubWluIHN0YXRlLnBwX21heF9pbmRlbnQgaW5kZW50IGluXG4gIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50IDwtIHJlYWxfaW5kZW50O1xuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50O1xuICBwcF9vdXRwdXRfaW5kZW50IHN0YXRlIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50O1xuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGFmdGVyXG5cblxuKCogVG8gZm9yY2UgYSBsaW5lIGJyZWFrIGluc2lkZSBhIGJveDogbm8gb2Zmc2V0IGlzIGFkZGVkLiAqKVxubGV0IGJyZWFrX2xpbmUgc3RhdGUgd2lkdGggPSBicmVha19uZXdfbGluZSBzdGF0ZSAoXCJcIiwgMCwgXCJcIikgd2lkdGhcblxuKCogVG8gZm9ybWF0IGEgYnJlYWsgdGhhdCBmaXRzIG9uIHRoZSBjdXJyZW50IGxpbmUuICopXG5sZXQgYnJlYWtfc2FtZV9saW5lIHN0YXRlIChiZWZvcmUsIHdpZHRoLCBhZnRlcikgPVxuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGJlZm9yZTtcbiAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IC0gd2lkdGg7XG4gIHBwX291dHB1dF9zcGFjZXMgc3RhdGUgd2lkdGg7XG4gIGZvcm1hdF9zdHJpbmcgc3RhdGUgYWZ0ZXJcblxuXG4oKiBUbyBpbmRlbnQgbm8gbW9yZSB0aGFuIHBwX21heF9pbmRlbnQsIGlmIG9uZSB0cmllcyB0byBvcGVuIGEgYm94XG4gICBiZXlvbmQgcHBfbWF4X2luZGVudCwgdGhlbiB0aGUgYm94IGlzIHJlamVjdGVkIG9uIHRoZSBsZWZ0XG4gICBieSBzaW11bGF0aW5nIGEgYnJlYWsuICopXG5sZXQgcHBfZm9yY2VfYnJlYWtfbGluZSBzdGF0ZSA9XG4gIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfZm9ybWF0X3N0YWNrIHdpdGhcbiAgfCBOb25lIC0+IHBwX291dHB1dF9uZXdsaW5lIHN0YXRlXG4gIHwgU29tZSB7IGJveF90eXBlOyB3aWR0aCB9IC0+XG4gICAgaWYgd2lkdGggPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0IHRoZW5cbiAgICAgIG1hdGNoIGJveF90eXBlIHdpdGhcbiAgICAgIHwgUHBfZml0cyB8IFBwX2hib3ggLT4gKClcbiAgICAgIHwgUHBfdmJveCB8IFBwX2h2Ym94IHwgUHBfaG92Ym94IHwgUHBfYm94IC0+IGJyZWFrX2xpbmUgc3RhdGUgd2lkdGhcblxuXG4oKiBUbyBza2lwIGEgdG9rZW4sIGlmIHRoZSBwcmV2aW91cyBsaW5lIGhhcyBiZWVuIGJyb2tlbi4gKilcbmxldCBwcF9za2lwX3Rva2VuIHN0YXRlID1cbiAgbWF0Y2ggUXVldWUudGFrZV9vcHQgc3RhdGUucHBfcXVldWUgd2l0aFxuICB8IE5vbmUgLT4gKCkgKCogcHJpbnRfaWZfbmV3bGluZSBtdXN0IGhhdmUgYmVlbiB0aGUgbGFzdCBwcmludGluZyBjb21tYW5kICopXG4gIHwgU29tZSB7IHNpemU7IGxlbmd0aDsgXyB9IC0+XG4gICAgc3RhdGUucHBfbGVmdF90b3RhbCA8LSBzdGF0ZS5wcF9sZWZ0X3RvdGFsIC0gbGVuZ3RoO1xuICAgIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfc3BhY2VfbGVmdCArIFNpemUudG9faW50IHNpemVcblxuXG4oKlxuXG4gIFRoZSBtYWluIHByZXR0eSBwcmludGluZyBmdW5jdGlvbnMuXG5cbiopXG5cbigqIEZvcm1hdHRpbmcgYSB0b2tlbiB3aXRoIGEgZ2l2ZW4gc2l6ZS4gKilcbmxldCBmb3JtYXRfcHBfdG9rZW4gc3RhdGUgc2l6ZSA9IGZ1bmN0aW9uXG4gIHwgUHBfdGV4dCBzIC0+XG4gICAgZm9ybWF0X3BwX3RleHQgc3RhdGUgc2l6ZSBzXG4gIHwgUHBfc3Vic3RyaW5nIHtzb3VyY2U7cG9zO2xlbn0gLT5cbiAgICBmb3JtYXRfcHBfc3Vic3RyaW5nIHN0YXRlIHNpemUgfnBvcyB+bGVuIHNvdXJjZVxuICB8IFBwX2JlZ2luIChvZmYsIHR5KSAtPlxuICAgIGxldCBpbnNlcnRpb25fcG9pbnQgPSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IGluXG4gICAgaWYgaW5zZXJ0aW9uX3BvaW50ID4gc3RhdGUucHBfbWF4X2luZGVudCB0aGVuXG4gICAgICAoKiBjYW4gbm90IG9wZW4gYSBib3ggcmlnaHQgdGhlcmUuICopXG4gICAgICBiZWdpbiBwcF9mb3JjZV9icmVha19saW5lIHN0YXRlIGVuZDtcbiAgICBsZXQgd2lkdGggPSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IC0gb2ZmIGluXG4gICAgbGV0IGJveF90eXBlID1cbiAgICAgIG1hdGNoIHR5IHdpdGhcbiAgICAgIHwgUHBfdmJveCAtPiBQcF92Ym94XG4gICAgICB8IFBwX2hib3ggfCBQcF9odmJveCB8IFBwX2hvdmJveCB8IFBwX2JveCB8IFBwX2ZpdHMgLT5cbiAgICAgICAgaWYgc2l6ZSA+IHN0YXRlLnBwX3NwYWNlX2xlZnQgdGhlbiB0eSBlbHNlIFBwX2ZpdHMgaW5cbiAgICBTdGFjay5wdXNoIHsgYm94X3R5cGU7IHdpZHRoIH0gc3RhdGUucHBfZm9ybWF0X3N0YWNrXG5cbiAgfCBQcF9lbmQgLT5cbiAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB8PiBpZ25vcmVcblxuICB8IFBwX3RiZWdpbiAoUHBfdGJveCBfIGFzIHRib3gpIC0+XG4gICAgU3RhY2sucHVzaCB0Ym94IHN0YXRlLnBwX3Rib3hfc3RhY2tcblxuICB8IFBwX3RlbmQgLT5cbiAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3Rib3hfc3RhY2sgfD4gaWdub3JlXG5cbiAgfCBQcF9zdGFiIC0+XG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF90Ym94X3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gb3BlbiB0YWJ1bGF0aW9uIGJveC4gKilcbiAgICB8IFNvbWUgKFBwX3Rib3ggdGFicykgLT5cbiAgICAgIGxldCByZWMgYWRkX3RhYiBuID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPiBbbl1cbiAgICAgICAgfCB4IDo6IGwgYXMgbHMgLT4gaWYgbiA8IHggdGhlbiBuIDo6IGxzIGVsc2UgeCA6OiBhZGRfdGFiIG4gbCBpblxuICAgICAgdGFicyA6PSBhZGRfdGFiIChzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0KSAhdGFic1xuICAgIGVuZFxuXG4gIHwgUHBfdGJyZWFrIChuLCBvZmYpIC0+XG4gICAgbGV0IGluc2VydGlvbl9wb2ludCA9IHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnQgaW5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX3Rib3hfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBvcGVuIHRhYnVsYXRpb24gYm94LiAqKVxuICAgIHwgU29tZSAoUHBfdGJveCB0YWJzKSAtPlxuICAgICAgbGV0IHRhYiA9XG4gICAgICAgIG1hdGNoICF0YWJzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBpbnNlcnRpb25fcG9pbnRcbiAgICAgICAgfCBmaXJzdCA6OiBfIC0+XG4gICAgICAgICAgbGV0IHJlYyBmaW5kID0gZnVuY3Rpb25cbiAgICAgICAgICAgIHwgaGVhZCA6OiB0YWlsIC0+XG4gICAgICAgICAgICAgIGlmIGhlYWQgPj0gaW5zZXJ0aW9uX3BvaW50IHRoZW4gaGVhZCBlbHNlIGZpbmQgdGFpbFxuICAgICAgICAgICAgfCBbXSAtPiBmaXJzdCBpblxuICAgICAgICAgIGZpbmQgIXRhYnMgaW5cbiAgICAgIGxldCBvZmZzZXQgPSB0YWIgLSBpbnNlcnRpb25fcG9pbnQgaW5cbiAgICAgIGlmIG9mZnNldCA+PSAwXG4gICAgICB0aGVuIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSAoXCJcIiwgb2Zmc2V0ICsgbiwgXCJcIilcbiAgICAgIGVsc2UgYnJlYWtfbmV3X2xpbmUgc3RhdGUgKFwiXCIsIHRhYiArIG9mZiwgXCJcIikgc3RhdGUucHBfbWFyZ2luXG4gICAgZW5kXG5cbiAgfCBQcF9uZXdsaW5lIC0+XG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9mb3JtYXRfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZSAoKiBObyBvcGVuIGJveC4gKilcbiAgICB8IFNvbWUgeyB3aWR0aDsgX30gLT4gYnJlYWtfbGluZSBzdGF0ZSB3aWR0aFxuICAgIGVuZFxuXG4gIHwgUHBfaWZfbmV3bGluZSAtPlxuICAgIGlmIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50IDw+IHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnRcbiAgICB0aGVuIHBwX3NraXBfdG9rZW4gc3RhdGVcblxuICB8IFBwX2JyZWFrIHsgZml0czsgYnJlYWtzIH0gLT5cbiAgICBsZXQgYmVmb3JlLCBvZmYsIF8gPSBicmVha3MgaW5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+ICgpICgqIE5vIG9wZW4gYm94LiAqKVxuICAgIHwgU29tZSB7IGJveF90eXBlOyB3aWR0aCB9IC0+XG4gICAgICBiZWdpbiBtYXRjaCBib3hfdHlwZSB3aXRoXG4gICAgICB8IFBwX2hvdmJveCAtPlxuICAgICAgICBpZiBzaXplICsgcHBfc3RyaW5nX3dpZHRoIHN0YXRlIGJlZm9yZSA+IHN0YXRlLnBwX3NwYWNlX2xlZnRcbiAgICAgICAgdGhlbiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgICAgZWxzZSBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgfCBQcF9ib3ggLT5cbiAgICAgICAgKCogSGF2ZSB0aGUgbGluZSBqdXN0IGJlZW4gYnJva2VuIGhlcmUgPyAqKVxuICAgICAgICBpZiBzdGF0ZS5wcF9pc19uZXdfbGluZSB0aGVuIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzIGVsc2VcbiAgICAgICAgaWYgc2l6ZSArIHBwX3N0cmluZ193aWR0aCBzdGF0ZSBiZWZvcmUgPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0XG4gICAgICAgICAgdGhlbiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGggZWxzZVxuICAgICAgICAoKiBicmVhayB0aGUgbGluZSBoZXJlIGxlYWRzIHRvIG5ldyBpbmRlbnRhdGlvbiA/ICopXG4gICAgICAgIGlmIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50ID4gc3RhdGUucHBfbWFyZ2luIC0gd2lkdGggKyBvZmZcbiAgICAgICAgdGhlbiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgICAgZWxzZSBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgfCBQcF9odmJveCAtPiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgIHwgUHBfZml0cyAtPiBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgfCBQcF92Ym94IC0+IGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgfCBQcF9oYm94IC0+IGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICBlbmRcbiAgICBlbmRcblxuICAgfCBQcF9vcGVuX3RhZyB0YWdfbmFtZSAtPlxuICAgICBsZXQgbWFya2VyID0gc3RhdGUucHBfbWFya19vcGVuX3RhZyB0YWdfbmFtZSBpblxuICAgICBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIG1hcmtlcjtcbiAgICAgU3RhY2sucHVzaCB0YWdfbmFtZSBzdGF0ZS5wcF9tYXJrX3N0YWNrXG5cbiAgIHwgUHBfY2xvc2VfdGFnIC0+XG4gICAgIGJlZ2luIG1hdGNoIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfbWFya19zdGFjayB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKSAoKiBObyBtb3JlIHRhZyB0byBjbG9zZS4gKilcbiAgICAgfCBTb21lIHRhZ19uYW1lIC0+XG4gICAgICAgbGV0IG1hcmtlciA9IHN0YXRlLnBwX21hcmtfY2xvc2VfdGFnIHRhZ19uYW1lIGluXG4gICAgICAgcHBfb3V0cHV0X3N0cmluZyBzdGF0ZSBtYXJrZXJcbiAgICAgZW5kXG5cblxuKCogUHJpbnQgaWYgdG9rZW4gc2l6ZSBpcyBrbm93biBlbHNlIHByaW50aW5nIGlzIGRlbGF5ZWQuXG4gICBQcmludGluZyBpcyBkZWxheWVkIHdoZW4gdGhlIHRleHQgd2FpdGluZyBpbiB0aGUgcXVldWUgcmVxdWlyZXNcbiAgIG1vcmUgcm9vbSB0byBmb3JtYXQgdGhhbiBleGlzdHMgb24gdGhlIGN1cnJlbnQgbGluZS4gKilcbmxldCByZWMgYWR2YW5jZV9sZWZ0IHN0YXRlID1cbiAgbWF0Y2ggUXVldWUucGVla19vcHQgc3RhdGUucHBfcXVldWUgd2l0aFxuICB8IE5vbmUgLT4gKCkgKCogTm8gdG9rZW5zIHRvIHByaW50ICopXG4gIHwgU29tZSB7IHNpemU7IHRva2VuOyBsZW5ndGggfSAtPlxuICAgIGxldCBwZW5kaW5nX2NvdW50ID0gc3RhdGUucHBfcmlnaHRfdG90YWwgLSBzdGF0ZS5wcF9sZWZ0X3RvdGFsIGluXG4gICAgaWYgU2l6ZS5pc19rbm93biBzaXplIHx8IHBlbmRpbmdfY291bnQgPj0gc3RhdGUucHBfc3BhY2VfbGVmdCB0aGVuIGJlZ2luXG4gICAgICBtYXRjaCBRdWV1ZS50YWtlX29wdCBzdGF0ZS5wcF9xdWV1ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJGb3JtYXQ6IFVuc3luY2hyb25pemVkIGFjY2VzcyB0byBmb3JtYXR0ZXJcIlxuICAgICAgfCBTb21lIF8gLT4gICgqIE5vdCBlbXB0eTogd2UgcGVlayBpbnRvIGl0ICopXG4gICAgICAgIGxldCBzaXplID1cbiAgICAgICAgICBpZiBTaXplLmlzX2tub3duIHNpemUgdGhlbiBTaXplLnRvX2ludCBzaXplIGVsc2UgcHBfaW5maW5pdHlcbiAgICAgICAgaW5cbiAgICAgICAgZm9ybWF0X3BwX3Rva2VuIHN0YXRlIHNpemUgdG9rZW47XG4gICAgICAgIHN0YXRlLnBwX2xlZnRfdG90YWwgPC0gbGVuZ3RoICsgc3RhdGUucHBfbGVmdF90b3RhbDtcbiAgICAgICAgKGFkdmFuY2VfbGVmdCBbQHRhaWxjYWxsXSkgc3RhdGVcbiAgICBlbmRcblxuXG4oKiBUbyBlbnF1ZXVlIGEgdG9rZW4gOiB0cnkgdG8gYWR2YW5jZS4gKilcbmxldCBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgdG9rID0gcHBfZW5xdWV1ZSBzdGF0ZSB0b2s7IGFkdmFuY2VfbGVmdCBzdGF0ZVxuXG5cbigqIFRvIGVucXVldWUgc3RyaW5ncy4gKilcbmxldCBlbnF1ZXVlX3N0cmluZ19hcyBzdGF0ZSBzaXplIHMgPVxuICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgeyBzaXplOyB0b2tlbiA9IFBwX3RleHQgczsgbGVuZ3RoID0gU2l6ZS50b19pbnQgc2l6ZSB9XG5cbigqIFRvIGVucXVldWUgc3Vic3RyaW5ncy4gKilcbmxldCBlbnF1ZXVlX3N1YnN0cmluZ19hcyB+cG9zIH5sZW4gc3RhdGUgc2l6ZSBzb3VyY2UgPVxuICBsZXQgdG9rZW4gPSBQcF9zdWJzdHJpbmcge3NvdXJjZTtwb3M7bGVufSBpblxuICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgeyBzaXplOyB0b2tlbjsgbGVuZ3RoID0gU2l6ZS50b19pbnQgc2l6ZSB9XG5cbmxldCBlbnF1ZXVlX3N0cmluZyBzdGF0ZSBzID1cbiAgbGV0IHNpemUgPSBwcF9zdHJpbmdfd2lkdGggc3RhdGUgcyBpblxuICBlbnF1ZXVlX3N0cmluZ19hcyBzdGF0ZSAoU2l6ZS5vZl9pbnQgc2l6ZSkgc1xuXG5cbigqIFJvdXRpbmVzIGZvciBzY2FuIHN0YWNrXG4gICBkZXRlcm1pbmUgc2l6ZSBvZiBib3hlcy4gKilcblxuKCogVGhlIHNjYW5fc3RhY2sgaXMgbmV2ZXIgZW1wdHkuICopXG5sZXQgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHN0YWNrID1cbiAgU3RhY2suY2xlYXIgc3RhY2s7XG4gIGxldCBxdWV1ZV9lbGVtID0geyBzaXplID0gU2l6ZS51bmtub3duOyB0b2tlbiA9IFBwX3RleHQgXCJcIjsgbGVuZ3RoID0gMCB9IGluXG4gIFN0YWNrLnB1c2ggeyBsZWZ0X3RvdGFsID0gLTE7IHF1ZXVlX2VsZW0gfSBzdGFja1xuXG4oKiBTZXR0aW5nIHRoZSBzaXplIG9mIGJveGVzIG9uIHNjYW4gc3RhY2s6XG4gICBpZiB0eSA9IHRydWUgdGhlbiBzaXplIG9mIGJyZWFrIGlzIHNldCBlbHNlIHNpemUgb2YgYm94IGlzIHNldDtcbiAgIGluIGVhY2ggY2FzZSBwcF9zY2FuX3N0YWNrIGlzIHBvcHBlZC5cblxuICAgTm90ZTpcbiAgIFBhdHRlcm4gbWF0Y2hpbmcgb24gc2NhbiBzdGFjayBpcyBleGhhdXN0aXZlLCBzaW5jZSBzY2FuX3N0YWNrIGlzIG5ldmVyXG4gICBlbXB0eS5cbiAgIFBhdHRlcm4gbWF0Y2hpbmcgb24gdG9rZW4gaW4gc2NhbiBzdGFjayBpcyBhbHNvIGV4aGF1c3RpdmUsXG4gICBzaW5jZSBzY2FuX3B1c2ggaXMgdXNlZCBvbiBicmVha3MgYW5kIG9wZW5pbmcgb2YgYm94ZXMuICopXG5sZXQgc2V0X3NpemUgc3RhdGUgdHkgPVxuICBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX3NjYW5fc3RhY2sgd2l0aFxuICB8IE5vbmUgLT4gKCkgKCogc2Nhbl9zdGFjayBpcyBuZXZlciBlbXB0eS4gKilcbiAgfCBTb21lIHsgbGVmdF90b3RhbDsgcXVldWVfZWxlbSB9IC0+XG4gICAgbGV0IHNpemUgPSBTaXplLnRvX2ludCBxdWV1ZV9lbGVtLnNpemUgaW5cbiAgICAoKiB0ZXN0IGlmIHNjYW4gc3RhY2sgY29udGFpbnMgYW55IGRhdGEgdGhhdCBpcyBub3Qgb2Jzb2xldGUuICopXG4gICAgaWYgbGVmdF90b3RhbCA8IHN0YXRlLnBwX2xlZnRfdG90YWwgdGhlblxuICAgICAgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHN0YXRlLnBwX3NjYW5fc3RhY2tcbiAgICBlbHNlXG4gICAgICBtYXRjaCBxdWV1ZV9lbGVtLnRva2VuIHdpdGhcbiAgICAgIHwgUHBfYnJlYWsgXyB8IFBwX3RicmVhayAoXywgXykgLT5cbiAgICAgICAgaWYgdHkgdGhlbiBiZWdpblxuICAgICAgICAgIHF1ZXVlX2VsZW0uc2l6ZSA8LSBTaXplLm9mX2ludCAoc3RhdGUucHBfcmlnaHRfdG90YWwgKyBzaXplKTtcbiAgICAgICAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3NjYW5fc3RhY2sgfD4gaWdub3JlXG4gICAgICAgIGVuZFxuICAgICAgfCBQcF9iZWdpbiAoXywgXykgLT5cbiAgICAgICAgaWYgbm90IHR5IHRoZW4gYmVnaW5cbiAgICAgICAgICBxdWV1ZV9lbGVtLnNpemUgPC0gU2l6ZS5vZl9pbnQgKHN0YXRlLnBwX3JpZ2h0X3RvdGFsICsgc2l6ZSk7XG4gICAgICAgICAgU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9zY2FuX3N0YWNrIHw+IGlnbm9yZVxuICAgICAgICBlbmRcbiAgICAgIHwgUHBfdGV4dCBfIHwgUHBfc3Vic3RyaW5nIF8gfCBQcF9zdGFiIHwgUHBfdGJlZ2luIF8gfCBQcF90ZW5kIHwgUHBfZW5kXG4gICAgICB8IFBwX25ld2xpbmUgfCBQcF9pZl9uZXdsaW5lIHwgUHBfb3Blbl90YWcgXyB8IFBwX2Nsb3NlX3RhZyAtPlxuICAgICAgICAoKSAoKiBzY2FuX3B1c2ggaXMgb25seSB1c2VkIGZvciBicmVha3MgYW5kIGJveGVzLiAqKVxuXG5cbigqIFB1c2ggYSB0b2tlbiBvbiBwcmV0dHktcHJpbnRlciBzY2FubmluZyBzdGFjay5cbiAgIElmIGIgaXMgdHJ1ZSBzZXRfc2l6ZSBpcyBjYWxsZWQuICopXG5sZXQgc2Nhbl9wdXNoIHN0YXRlIGIgdG9rZW4gPVxuICBwcF9lbnF1ZXVlIHN0YXRlIHRva2VuO1xuICBpZiBiIHRoZW4gc2V0X3NpemUgc3RhdGUgdHJ1ZTtcbiAgbGV0IGVsZW0gPSB7IGxlZnRfdG90YWwgPSBzdGF0ZS5wcF9yaWdodF90b3RhbDsgcXVldWVfZWxlbSA9IHRva2VuIH0gaW5cbiAgU3RhY2sucHVzaCBlbGVtIHN0YXRlLnBwX3NjYW5fc3RhY2tcblxuXG4oKiBUbyBvcGVuIGEgbmV3IGJveCA6XG4gICB0aGUgdXNlciBtYXkgc2V0IHRoZSBkZXB0aCBib3VuZCBwcF9tYXhfYm94ZXNcbiAgIGFueSB0ZXh0IG5lc3RlZCBkZWVwZXIgaXMgcHJpbnRlZCBhcyB0aGUgZWxsaXBzaXMgc3RyaW5nLiAqKVxubGV0IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgYnJfdHkgPVxuICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggKyAxO1xuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUub2ZfaW50ICgtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsKSBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbiA9IFBwX2JlZ2luIChpbmRlbnQsIGJyX3R5KTsgbGVuZ3RoID0gMCB9IGluXG4gICAgc2Nhbl9wdXNoIHN0YXRlIGZhbHNlIGVsZW0gZWxzZVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoID0gc3RhdGUucHBfbWF4X2JveGVzXG4gIHRoZW4gZW5xdWV1ZV9zdHJpbmcgc3RhdGUgc3RhdGUucHBfZWxsaXBzaXNcblxuXG4oKiBUaGUgYm94IHdoaWNoIGlzIGFsd2F5cyBvcGVuLiAqKVxubGV0IHBwX29wZW5fc3lzX2JveCBzdGF0ZSA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSAwIFBwX2hvdmJveFxuXG4oKiBDbG9zZSBhIGJveCwgc2V0dGluZyBzaXplcyBvZiBpdHMgc3ViIGJveGVzLiAqKVxubGV0IHBwX2Nsb3NlX2JveCBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPiAxIHRoZW5cbiAgYmVnaW5cbiAgICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBiZWdpblxuICAgICAgcHBfZW5xdWV1ZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfZW5kOyBsZW5ndGggPSAwIH07XG4gICAgICBzZXRfc2l6ZSBzdGF0ZSB0cnVlOyBzZXRfc2l6ZSBzdGF0ZSBmYWxzZVxuICAgIGVuZDtcbiAgICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggLSAxO1xuICBlbmRcblxuXG4oKiBPcGVuIGEgdGFnLCBwdXNoaW5nIGl0IG9uIHRoZSB0YWcgc3RhY2suICopXG5sZXQgcHBfb3Blbl9zdGFnIHN0YXRlIHRhZ19uYW1lID1cbiAgaWYgc3RhdGUucHBfcHJpbnRfdGFncyB0aGVuXG4gIGJlZ2luXG4gICAgU3RhY2sucHVzaCB0YWdfbmFtZSBzdGF0ZS5wcF90YWdfc3RhY2s7XG4gICAgc3RhdGUucHBfcHJpbnRfb3Blbl90YWcgdGFnX25hbWVcbiAgZW5kO1xuICBpZiBzdGF0ZS5wcF9tYXJrX3RhZ3MgdGhlblxuICAgIGxldCB0b2tlbiA9IFBwX29wZW5fdGFnIHRhZ19uYW1lIGluXG4gICAgcHBfZW5xdWV1ZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuOyBsZW5ndGggPSAwIH1cblxuXG4oKiBDbG9zZSBhIHRhZywgcG9wcGluZyBpdCBmcm9tIHRoZSB0YWcgc3RhY2suICopXG5sZXQgcHBfY2xvc2Vfc3RhZyBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX21hcmtfdGFncyB0aGVuXG4gICAgcHBfZW5xdWV1ZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfY2xvc2VfdGFnOyBsZW5ndGggPSAwIH07XG4gIGlmIHN0YXRlLnBwX3ByaW50X3RhZ3MgdGhlblxuICAgIG1hdGNoIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfdGFnX3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gbW9yZSB0YWcgdG8gY2xvc2UuICopXG4gICAgfCBTb21lIHRhZ19uYW1lIC0+XG4gICAgICBzdGF0ZS5wcF9wcmludF9jbG9zZV90YWcgdGFnX25hbWVcblxubGV0IHBwX3NldF9wcmludF90YWdzIHN0YXRlIGIgPSBzdGF0ZS5wcF9wcmludF90YWdzIDwtIGJcbmxldCBwcF9zZXRfbWFya190YWdzIHN0YXRlIGIgPSBzdGF0ZS5wcF9tYXJrX3RhZ3MgPC0gYlxubGV0IHBwX2dldF9wcmludF90YWdzIHN0YXRlICgpID0gc3RhdGUucHBfcHJpbnRfdGFnc1xubGV0IHBwX2dldF9tYXJrX3RhZ3Mgc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXJrX3RhZ3NcbmxldCBwcF9zZXRfdGFncyBzdGF0ZSBiID1cbiAgcHBfc2V0X3ByaW50X3RhZ3Mgc3RhdGUgYjsgcHBfc2V0X21hcmtfdGFncyBzdGF0ZSBiXG5cblxuKCogSGFuZGxpbmcgdGFnIGhhbmRsaW5nIGZ1bmN0aW9uczogZ2V0L3NldCBmdW5jdGlvbnMuICopXG5sZXQgcHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBzdGF0ZSAoKSA9IHtcbiAgbWFya19vcGVuX3N0YWcgPSBzdGF0ZS5wcF9tYXJrX29wZW5fdGFnO1xuICBtYXJrX2Nsb3NlX3N0YWcgPSBzdGF0ZS5wcF9tYXJrX2Nsb3NlX3RhZztcbiAgcHJpbnRfb3Blbl9zdGFnID0gc3RhdGUucHBfcHJpbnRfb3Blbl90YWc7XG4gIHByaW50X2Nsb3NlX3N0YWcgPSBzdGF0ZS5wcF9wcmludF9jbG9zZV90YWc7XG59XG5cblxubGV0IHBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgc3RhdGUge1xuICAgICBtYXJrX29wZW5fc3RhZyA9IG1vdDtcbiAgICAgbWFya19jbG9zZV9zdGFnID0gbWN0O1xuICAgICBwcmludF9vcGVuX3N0YWcgPSBwb3Q7XG4gICAgIHByaW50X2Nsb3NlX3N0YWcgPSBwY3Q7XG4gIH0gPVxuICBzdGF0ZS5wcF9tYXJrX29wZW5fdGFnIDwtIG1vdDtcbiAgc3RhdGUucHBfbWFya19jbG9zZV90YWcgPC0gbWN0O1xuICBzdGF0ZS5wcF9wcmludF9vcGVuX3RhZyA8LSBwb3Q7XG4gIHN0YXRlLnBwX3ByaW50X2Nsb3NlX3RhZyA8LSBwY3RcblxuXG4oKiBJbml0aWFsaXplIHByZXR0eS1wcmludGVyLiAqKVxubGV0IHBwX3Jpbml0IHN0YXRlID1cbiAgcHBfY2xlYXJfcXVldWUgc3RhdGU7XG4gIGluaXRpYWxpemVfc2Nhbl9zdGFjayBzdGF0ZS5wcF9zY2FuX3N0YWNrO1xuICBTdGFjay5jbGVhciBzdGF0ZS5wcF9mb3JtYXRfc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX3Rib3hfc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX3RhZ19zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfbWFya19zdGFjaztcbiAgc3RhdGUucHBfY3VycmVudF9pbmRlbnQgPC0gMDtcbiAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSAwO1xuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX21hcmdpbjtcbiAgcHBfb3Blbl9zeXNfYm94IHN0YXRlXG5cbmxldCBjbGVhcl90YWdfc3RhY2sgc3RhdGUgPVxuICBTdGFjay5pdGVyIChmdW4gXyAtPiBwcF9jbG9zZV9zdGFnIHN0YXRlICgpKSBzdGF0ZS5wcF90YWdfc3RhY2tcblxuXG4oKiBGbHVzaGluZyBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbmxldCBwcF9mbHVzaF9xdWV1ZSBzdGF0ZSB+ZW5kX3dpdGhfbmV3bGluZSA9XG4gIGNsZWFyX3RhZ19zdGFjayBzdGF0ZTtcbiAgd2hpbGUgc3RhdGUucHBfY3Vycl9kZXB0aCA+IDEgZG9cbiAgICBwcF9jbG9zZV9ib3ggc3RhdGUgKClcbiAgZG9uZTtcbiAgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gcHBfaW5maW5pdHk7XG4gIGFkdmFuY2VfbGVmdCBzdGF0ZTtcbiAgaWYgZW5kX3dpdGhfbmV3bGluZSB0aGVuIHBwX291dHB1dF9uZXdsaW5lIHN0YXRlO1xuICBwcF9yaW5pdCBzdGF0ZVxuXG4oKlxuXG4gIFByb2NlZHVyZXMgdG8gZm9ybWF0IHZhbHVlcyBhbmQgdXNlIGJveGVzLlxuXG4qKVxuXG4oKiBUbyBmb3JtYXQgYSBzdHJpbmcuICopXG5sZXQgcHBfcHJpbnRfYXNfc2l6ZSBzdGF0ZSBzaXplIHMgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzXG4gIHRoZW4gZW5xdWV1ZV9zdHJpbmdfYXMgc3RhdGUgc2l6ZSBzXG5cblxubGV0IHBwX3ByaW50X2FzIHN0YXRlIGlzaXplIHMgPVxuICBwcF9wcmludF9hc19zaXplIHN0YXRlIChTaXplLm9mX2ludCBpc2l6ZSkgc1xuXG5cbmxldCBwcF9wcmludF9zdHJpbmcgc3RhdGUgcyA9XG4gIHBwX3ByaW50X2FzIHN0YXRlIChwcF9zdHJpbmdfd2lkdGggc3RhdGUgcykgc1xuXG5sZXQgcHBfcHJpbnRfc3Vic3RyaW5nX2FzIH5wb3MgfmxlbiBzdGF0ZSBzaXplIHMgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzXG4gIHRoZW4gZW5xdWV1ZV9zdWJzdHJpbmdfYXMgfnBvcyB+bGVuIHN0YXRlIChTaXplLm9mX2ludCBzaXplKSBzXG5cbmxldCBwcF9wcmludF9zdWJzdHJpbmcgfnBvcyB+bGVuIHN0YXRlIHMgPVxuICBsZXQgd2lkdGggPSBwcF9zdWJzdHJpbmdfd2lkdGggc3RhdGUgfnBvcyB+bGVuIHMgaW5cbiAgcHBfcHJpbnRfc3Vic3RyaW5nX2FzIH5wb3MgfmxlbiBzdGF0ZSB3aWR0aCBzXG5cbmxldCBwcF9wcmludF9ieXRlcyBzdGF0ZSBzID1cbiAgcHBfcHJpbnRfYXMgc3RhdGUgKEJ5dGVzLmxlbmd0aCBzKSAoQnl0ZXMudG9fc3RyaW5nIHMpXG5cbigqIFRvIGZvcm1hdCBhbiBpbnRlZ2VyLiAqKVxubGV0IHBwX3ByaW50X2ludCBzdGF0ZSBpID0gcHBfcHJpbnRfc3RyaW5nIHN0YXRlIChJbnQudG9fc3RyaW5nIGkpXG5cbigqIFRvIGZvcm1hdCBhIGZsb2F0LiAqKVxubGV0IHBwX3ByaW50X2Zsb2F0IHN0YXRlIGYgPSBwcF9wcmludF9zdHJpbmcgc3RhdGUgKHN0cmluZ19vZl9mbG9hdCBmKVxuXG4oKiBUbyBmb3JtYXQgYSBib29sZWFuLiAqKVxubGV0IHBwX3ByaW50X2Jvb2wgc3RhdGUgYiA9IHBwX3ByaW50X3N0cmluZyBzdGF0ZSAoc3RyaW5nX29mX2Jvb2wgYilcblxuKCogVG8gZm9ybWF0IGEgY2hhci4gKilcbmxldCBwcF9wcmludF9jaGFyIHN0YXRlIGMgPVxuICBwcF9wcmludF9hcyBzdGF0ZSAxIChTdHJpbmcubWFrZSAxIGMpXG5cbmxldCBwcF9wcmludF9ub3RoaW5nIF9zdGF0ZSAoKSA9ICgpXG5cblxuKCogT3BlbmluZyBib3hlcy4gKilcbmxldCBwcF9vcGVuX2hib3ggc3RhdGUgKCkgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgMCBQcF9oYm94XG5hbmQgcHBfb3Blbl92Ym94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfdmJveFxuXG5hbmQgcHBfb3Blbl9odmJveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX2h2Ym94XG5hbmQgcHBfb3Blbl9ob3Zib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF9ob3Zib3hcbmFuZCBwcF9vcGVuX2JveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX2JveFxuXG5cbigqIFByaW50aW5nIHF1ZXVlZCB0ZXh0LlxuXG4gICBbcHBfcHJpbnRfZmx1c2hdIHByaW50cyBhbGwgcGVuZGluZyBpdGVtcyBpbiB0aGUgcHJldHR5LXByaW50ZXIgcXVldWUgYW5kXG4gICB0aGVuIGZsdXNoZXMgdGhlIGxvdyBsZXZlbCBvdXRwdXQgZGV2aWNlIG9mIHRoZSBmb3JtYXR0ZXIgdG8gYWN0dWFsbHlcbiAgIGRpc3BsYXkgcHJpbnRpbmcgbWF0ZXJpYWwuXG5cbiAgIFtwcF9wcmludF9uZXdsaW5lXSBiZWhhdmVzIGFzIFtwcF9wcmludF9mbHVzaF0gYWZ0ZXIgcHJpbnRpbmcgYW4gYWRkaXRpb25hbFxuICAgbmV3IGxpbmUuICopXG5sZXQgcHBfcHJpbnRfbmV3bGluZSBzdGF0ZSAoKSA9XG4gIHBwX2ZsdXNoX3F1ZXVlIHN0YXRlIH5lbmRfd2l0aF9uZXdsaW5lOnRydWU7IHN0YXRlLnBwX291dF9mbHVzaCAoKVxuYW5kIHBwX3ByaW50X2ZsdXNoIHN0YXRlICgpID1cbiAgcHBfZmx1c2hfcXVldWUgc3RhdGUgfmVuZF93aXRoX25ld2xpbmU6ZmFsc2U7IHN0YXRlLnBwX291dF9mbHVzaCAoKVxuXG5cbigqIFRvIGdldCBhIG5ld2xpbmUgd2hlbiBvbmUgZG9lcyBub3Qgd2FudCB0byBjbG9zZSB0aGUgY3VycmVudCBib3guICopXG5sZXQgcHBfZm9yY2VfbmV3bGluZSBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfbmV3bGluZTsgbGVuZ3RoID0gMCB9XG5cblxuKCogVG8gZm9ybWF0IHNvbWV0aGluZywgb25seSBpbiBjYXNlIHRoZSBsaW5lIGhhcyBqdXN0IGJlZW4gYnJva2VuLiAqKVxubGV0IHBwX3ByaW50X2lmX25ld2xpbmUgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGVcbiAgICAgIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9pZl9uZXdsaW5lOyBsZW5ndGggPSAwIH1cblxuXG4oKiBHZW5lcmFsaXplZCBicmVhayBoaW50IHRoYXQgYWxsb3dzIHByaW50aW5nIHN0cmluZ3MgYmVmb3JlL2FmdGVyXG4gICBzYW1lLWxpbmUgb2Zmc2V0ICh3aWR0aCkgb3IgbmV3LWxpbmUgb2Zmc2V0ICopXG5sZXQgcHBfcHJpbnRfY3VzdG9tX2JyZWFrIHN0YXRlIH5maXRzIH5icmVha3MgPVxuICBsZXQgYmVmb3JlLCB3aWR0aCwgYWZ0ZXIgPSBmaXRzIGluXG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS5vZl9pbnQgKC0gc3RhdGUucHBfcmlnaHRfdG90YWwpIGluXG4gICAgbGV0IHRva2VuID0gUHBfYnJlYWsgeyBmaXRzOyBicmVha3MgfSBpblxuICAgIGxldCBsZW5ndGggPVxuICAgICAgcHBfc3RyaW5nX3dpZHRoIHN0YXRlIGJlZm9yZVxuICAgICAgKyB3aWR0aFxuICAgICAgKyBwcF9zdHJpbmdfd2lkdGggc3RhdGUgYWZ0ZXJcbiAgICBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbjsgbGVuZ3RoIH0gaW5cbiAgICBzY2FuX3B1c2ggc3RhdGUgdHJ1ZSBlbGVtXG5cbigqIFByaW50aW5nIGJyZWFrIGhpbnRzOlxuICAgQSBicmVhayBoaW50IGluZGljYXRlcyB3aGVyZSBhIGJveCBtYXkgYmUgYnJva2VuLlxuICAgSWYgbGluZSBpcyBicm9rZW4gdGhlbiBvZmZzZXQgaXMgYWRkZWQgdG8gdGhlIGluZGVudGF0aW9uIG9mIHRoZSBjdXJyZW50XG4gICBib3ggZWxzZSAodGhlIHZhbHVlIG9mKSB3aWR0aCBibGFua3MgYXJlIHByaW50ZWQuICopXG5sZXQgcHBfcHJpbnRfYnJlYWsgc3RhdGUgd2lkdGggb2Zmc2V0ID1cbiAgcHBfcHJpbnRfY3VzdG9tX2JyZWFrIHN0YXRlXG4gICAgfmZpdHM6KFwiXCIsIHdpZHRoLCBcIlwiKSB+YnJlYWtzOihcIlwiLCBvZmZzZXQsIFwiXCIpXG5cblxuKCogUHJpbnQgYSBzcGFjZSA6XG4gICBhIHNwYWNlIGlzIGEgYnJlYWsgaGludCB0aGF0IHByaW50cyBhIHNpbmdsZSBzcGFjZSBpZiB0aGUgYnJlYWsgZG9lcyBub3RcbiAgIHNwbGl0IHRoZSBsaW5lO1xuICAgYSBjdXQgaXMgYSBicmVhayBoaW50IHRoYXQgcHJpbnRzIG5vdGhpbmcgaWYgdGhlIGJyZWFrIGRvZXMgbm90IHNwbGl0IHRoZVxuICAgbGluZS4gKilcbmxldCBwcF9wcmludF9zcGFjZSBzdGF0ZSAoKSA9IHBwX3ByaW50X2JyZWFrIHN0YXRlIDEgMFxuYW5kIHBwX3ByaW50X2N1dCBzdGF0ZSAoKSA9IHBwX3ByaW50X2JyZWFrIHN0YXRlIDAgMFxuXG5cbigqIFRhYnVsYXRpb24gYm94ZXMuICopXG5sZXQgcHBfb3Blbl90Ym94IHN0YXRlICgpID1cbiAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSBzdGF0ZS5wcF9jdXJyX2RlcHRoICsgMTtcbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IHNpemUgPSBTaXplLnplcm8gaW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZTsgdG9rZW4gPSBQcF90YmVnaW4gKFBwX3Rib3ggKHJlZiBbXSkpOyBsZW5ndGggPSAwIH0gaW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgZWxlbVxuXG5cbigqIENsb3NlIGEgdGFidWxhdGlvbiBib3guICopXG5sZXQgcHBfY2xvc2VfdGJveCBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPiAxIHRoZW5cbiAgYmVnaW5cbiAgIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgICBsZXQgZWxlbSA9IHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF90ZW5kOyBsZW5ndGggPSAwIH0gaW5cbiAgICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIGVsZW07XG4gICAgIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCAtIDFcbiAgZW5kXG5cblxuKCogUHJpbnQgYSB0YWJ1bGF0aW9uIGJyZWFrLiAqKVxubGV0IHBwX3ByaW50X3RicmVhayBzdGF0ZSB3aWR0aCBvZmZzZXQgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUub2ZfaW50ICgtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsKSBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbiA9IFBwX3RicmVhayAod2lkdGgsIG9mZnNldCk7IGxlbmd0aCA9IHdpZHRoIH0gaW5cbiAgICBzY2FuX3B1c2ggc3RhdGUgdHJ1ZSBlbGVtXG5cblxubGV0IHBwX3ByaW50X3RhYiBzdGF0ZSAoKSA9IHBwX3ByaW50X3RicmVhayBzdGF0ZSAwIDBcblxubGV0IHBwX3NldF90YWIgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9zdGFiOyBsZW5ndGggPSAwIH0gaW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgZWxlbVxuXG5cbigqXG5cbiAgUHJvY2VkdXJlcyB0byBjb250cm9sIHRoZSBwcmV0dHktcHJpbnRlcnNcblxuKilcblxuKCogU2V0X21heF9ib3hlcy4gKilcbmxldCBwcF9zZXRfbWF4X2JveGVzIHN0YXRlIG4gPSBpZiBuID4gMSB0aGVuIHN0YXRlLnBwX21heF9ib3hlcyA8LSBuXG5cbigqIFRvIGtub3cgdGhlIGN1cnJlbnQgbWF4aW11bSBudW1iZXIgb2YgYm94ZXMgYWxsb3dlZC4gKilcbmxldCBwcF9nZXRfbWF4X2JveGVzIHN0YXRlICgpID0gc3RhdGUucHBfbWF4X2JveGVzXG5cbmxldCBwcF9vdmVyX21heF9ib3hlcyBzdGF0ZSAoKSA9IHN0YXRlLnBwX2N1cnJfZGVwdGggPSBzdGF0ZS5wcF9tYXhfYm94ZXNcblxuKCogRWxsaXBzaXMuICopXG5sZXQgcHBfc2V0X2VsbGlwc2lzX3RleHQgc3RhdGUgcyA9IHN0YXRlLnBwX2VsbGlwc2lzIDwtIHNcbmFuZCBwcF9nZXRfZWxsaXBzaXNfdGV4dCBzdGF0ZSAoKSA9IHN0YXRlLnBwX2VsbGlwc2lzXG5cblxuKCogVG8gc2V0IHRoZSBtYXJnaW4gb2YgcHJldHR5LXByaW50ZXIuICopXG5sZXQgcHBfbGltaXQgbiA9XG4gIGlmIG4gPCBwcF9pbmZpbml0eSB0aGVuIG4gZWxzZSBwcmVkIHBwX2luZmluaXR5XG5cblxuKCogSW50ZXJuYWwgcHJldHR5LXByaW50ZXIgZnVuY3Rpb25zLiAqKVxubGV0IHBwX3NldF9taW5fc3BhY2VfbGVmdCBzdGF0ZSBuID1cbiAgaWYgbiA+PSAxIHRoZW5cbiAgICBsZXQgbiA9IHBwX2xpbWl0IG4gaW5cbiAgICBzdGF0ZS5wcF9taW5fc3BhY2VfbGVmdCA8LSBuO1xuICAgIHN0YXRlLnBwX21heF9pbmRlbnQgPC0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfbWluX3NwYWNlX2xlZnQ7XG4gICAgcHBfcmluaXQgc3RhdGVcblxuXG4oKiBJbml0aWFsbHksIHdlIGhhdmUgOlxuICAgcHBfbWF4X2luZGVudCA9IHBwX21hcmdpbiAtIHBwX21pbl9zcGFjZV9sZWZ0LCBhbmRcbiAgIHBwX3NwYWNlX2xlZnQgPSBwcF9tYXJnaW4uICopXG5sZXQgcHBfc2V0X21heF9pbmRlbnQgc3RhdGUgbiA9XG4gIGlmIG4gPiAxIHRoZW5cbiAgICBwcF9zZXRfbWluX3NwYWNlX2xlZnQgc3RhdGUgKHN0YXRlLnBwX21hcmdpbiAtIG4pXG5cblxubGV0IHBwX2dldF9tYXhfaW5kZW50IHN0YXRlICgpID0gc3RhdGUucHBfbWF4X2luZGVudFxuXG5sZXQgcHBfc2V0X21hcmdpbiBzdGF0ZSBuID1cbiAgaWYgbiA+PSAxIHRoZW5cbiAgICBsZXQgbiA9IHBwX2xpbWl0IG4gaW5cbiAgICBzdGF0ZS5wcF9tYXJnaW4gPC0gbjtcbiAgICBsZXQgbmV3X21heF9pbmRlbnQgPVxuICAgICAgKCogVHJ5IHRvIG1haW50YWluIG1heF9pbmRlbnQgdG8gaXRzIGFjdHVhbCB2YWx1ZS4gKilcbiAgICAgIGlmIHN0YXRlLnBwX21heF9pbmRlbnQgPD0gc3RhdGUucHBfbWFyZ2luXG4gICAgICB0aGVuIHN0YXRlLnBwX21heF9pbmRlbnQgZWxzZVxuICAgICAgKCogSWYgcG9zc2libGUgbWFpbnRhaW4gcHBfbWluX3NwYWNlX2xlZnQgdG8gaXRzIGFjdHVhbCB2YWx1ZSxcbiAgICAgICAgIGlmIHRoaXMgbGVhZHMgdG8gYSB0b28gc21hbGwgbWF4X2luZGVudCwgdGFrZSBoYWxmIG9mIHRoZVxuICAgICAgICAgbmV3IG1hcmdpbiwgaWYgaXQgaXMgZ3JlYXRlciB0aGFuIDEuICopXG4gICAgICAgSW50Lm1heCAoSW50Lm1heCAoc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfbWluX3NwYWNlX2xlZnQpXG4gICAgICAgICAgICAgICAgKHN0YXRlLnBwX21hcmdpbiAvIDIpKSAxIGluXG4gICAgKCogUmVidWlsZCBpbnZhcmlhbnRzLiAqKVxuICAgIHBwX3NldF9tYXhfaW5kZW50IHN0YXRlIG5ld19tYXhfaW5kZW50XG5cblxuKCoqIEdlb21ldHJ5IGZ1bmN0aW9ucyBhbmQgdHlwZXMgKilcbnR5cGUgZ2VvbWV0cnkgPSB7IG1heF9pbmRlbnQ6aW50OyBtYXJnaW46IGludH1cblxubGV0IHZhbGlkYXRlX2dlb21ldHJ5IHttYXJnaW47IG1heF9pbmRlbnR9ID1cbiAgaWYgbWF4X2luZGVudCA8IDIgdGhlblxuICAgIEVycm9yIFwibWF4X2luZGVudCA8IDJcIlxuICBlbHNlIGlmIG1hcmdpbiA8PSBtYXhfaW5kZW50IHRoZW5cbiAgICBFcnJvciBcIm1hcmdpbiA8PSBtYXhfaW5kZW50XCJcbiAgZWxzZSBpZiBtYXJnaW4gPj0gcHBfaW5maW5pdHkgdGhlblxuICAgIEVycm9yIFwibWFyZ2luID49IHBwX2luZmluaXR5XCJcbiAgZWxzZSBPayAoKVxuXG5sZXQgY2hlY2tfZ2VvbWV0cnkgZ2VvbWV0cnkgPVxuICBtYXRjaCB2YWxpZGF0ZV9nZW9tZXRyeSBnZW9tZXRyeSB3aXRoXG4gIHwgT2sgKCkgLT4gdHJ1ZVxuICB8IEVycm9yIF8gLT4gZmFsc2VcblxubGV0IHBwX2dldF9tYXJnaW4gc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXJnaW5cblxubGV0IHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlIHttYXJnaW47IG1heF9pbmRlbnR9ID1cbiAgcHBfc2V0X21hcmdpbiBzdGF0ZSBtYXJnaW47XG4gIHBwX3NldF9tYXhfaW5kZW50IHN0YXRlIG1heF9pbmRlbnQ7XG4gICgpXG5cbmxldCBwcF9zZXRfZ2VvbWV0cnkgc3RhdGUgfm1heF9pbmRlbnQgfm1hcmdpbiA9XG4gIGxldCBnZW9tZXRyeSA9IHsgbWF4X2luZGVudDsgbWFyZ2luIH0gaW5cbiAgbWF0Y2ggdmFsaWRhdGVfZ2VvbWV0cnkgZ2VvbWV0cnkgd2l0aFxuICB8IEVycm9yIG1zZyAtPlxuICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcIkZvcm1hdC5wcF9zZXRfZ2VvbWV0cnk6IFwiIF4gbXNnKSlcbiAgfCBPayAoKSAtPlxuICAgIHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlIGdlb21ldHJ5XG5cbmxldCBwcF9zYWZlX3NldF9nZW9tZXRyeSBzdGF0ZSB+bWF4X2luZGVudCB+bWFyZ2luID1cbiAgbGV0IGdlb21ldHJ5ID0geyBtYXhfaW5kZW50OyBtYXJnaW4gfSBpblxuICBtYXRjaCB2YWxpZGF0ZV9nZW9tZXRyeSBnZW9tZXRyeSB3aXRoXG4gIHwgRXJyb3IgX21zZyAtPlxuICAgICAoKVxuICB8IE9rICgpIC0+XG4gICAgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUgZ2VvbWV0cnlcblxubGV0IHBwX2dldF9nZW9tZXRyeSBzdGF0ZSAoKSA9XG4gIHsgbWFyZ2luID0gcHBfZ2V0X21hcmdpbiBzdGF0ZSAoKTsgbWF4X2luZGVudCA9IHBwX2dldF9tYXhfaW5kZW50IHN0YXRlICgpIH1cblxubGV0IHBwX3VwZGF0ZV9nZW9tZXRyeSBzdGF0ZSB1cGRhdGUgPVxuICBsZXQgZ2VvbWV0cnkgPSBwcF9nZXRfZ2VvbWV0cnkgc3RhdGUgKCkgaW5cbiAgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUgKHVwZGF0ZSBnZW9tZXRyeSlcblxuKCogU2V0dGluZyBhIGZvcm1hdHRlciBiYXNpYyBvdXRwdXQgZnVuY3Rpb25zLiAqKVxubGV0IHBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGF0ZSB7XG4gICAgICBvdXRfc3RyaW5nID0gZjtcbiAgICAgIG91dF93aWR0aCA9IGYyO1xuICAgICAgb3V0X2ZsdXNoID0gZztcbiAgICAgIG91dF9uZXdsaW5lID0gaDtcbiAgICAgIG91dF9zcGFjZXMgPSBpO1xuICAgICAgb3V0X2luZGVudCA9IGo7XG4gICAgfSA9XG4gIHN0YXRlLnBwX291dF9zdHJpbmcgPC0gZjtcbiAgc3RhdGUucHBfb3V0X3dpZHRoIDwtIGYyO1xuICBzdGF0ZS5wcF9vdXRfZmx1c2ggPC0gZztcbiAgc3RhdGUucHBfb3V0X25ld2xpbmUgPC0gaDtcbiAgc3RhdGUucHBfb3V0X3NwYWNlcyA8LSBpO1xuICBzdGF0ZS5wcF9vdXRfaW5kZW50IDwtIGpcblxubGV0IHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGF0ZSAoKSA9IHtcbiAgb3V0X3N0cmluZyA9IHN0YXRlLnBwX291dF9zdHJpbmc7XG4gIG91dF93aWR0aCA9IHN0YXRlLnBwX291dF93aWR0aDtcbiAgb3V0X2ZsdXNoID0gc3RhdGUucHBfb3V0X2ZsdXNoO1xuICBvdXRfbmV3bGluZSA9IHN0YXRlLnBwX291dF9uZXdsaW5lO1xuICBvdXRfc3BhY2VzID0gc3RhdGUucHBfb3V0X3NwYWNlcztcbiAgb3V0X2luZGVudCA9IHN0YXRlLnBwX291dF9pbmRlbnQ7XG59XG5cblxuKCogU2V0dGluZyBhIGZvcm1hdHRlciBiYXNpYyBzdHJpbmcgb3V0cHV0IGFuZCBmbHVzaCBmdW5jdGlvbnMuICopXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0YXRlIGYgZyA9XG4gIHN0YXRlLnBwX291dF9zdHJpbmcgPC0gZjsgc3RhdGUucHBfb3V0X2ZsdXNoIDwtIGdcblxubGV0IHBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGF0ZSAoKSA9XG4gIChzdGF0ZS5wcF9vdXRfc3RyaW5nLCBzdGF0ZS5wcF9vdXRfZmx1c2gpXG5cblxuKCogVGhlIGRlZmF1bHQgZnVuY3Rpb24gdG8gb3V0cHV0IG5ldyBsaW5lcy4gKilcbmxldCBkaXNwbGF5X25ld2xpbmUgc3RhdGUgKCkgPSBzdGF0ZS5wcF9vdXRfc3RyaW5nIFwiXFxuXCIgMCAgMVxuXG4oKiBUaGUgZGVmYXVsdCBmdW5jdGlvbiB0byBvdXRwdXQgc3BhY2VzLiAqKVxubGV0IGJsYW5rX2xpbmUgPSBTdHJpbmcubWFrZSA4MCAnICdcbmxldCByZWMgZGlzcGxheV9ibGFua3Mgc3RhdGUgbiA9XG4gIGlmIG4gPiAwIHRoZW5cbiAgaWYgbiA8PSA4MCB0aGVuIHN0YXRlLnBwX291dF9zdHJpbmcgYmxhbmtfbGluZSAwIG4gZWxzZVxuICBiZWdpblxuICAgIHN0YXRlLnBwX291dF9zdHJpbmcgYmxhbmtfbGluZSAwIDgwO1xuICAgIGRpc3BsYXlfYmxhbmtzIHN0YXRlIChuIC0gODApXG4gIGVuZFxuXG5cbigqIFRoZSBkZWZhdWx0IGZ1bmN0aW9uIHRvIG91dHB1dCBpbmRlbnRhdGlvbiBvZiBuZXcgbGluZXMuICopXG5sZXQgZGlzcGxheV9pbmRlbnQgPSBkaXNwbGF5X2JsYW5rc1xuXG4oKiBTZXR0aW5nIGEgZm9ybWF0dGVyIGJhc2ljIG91dHB1dCBmdW5jdGlvbnMgYXMgcHJpbnRpbmcgdG8gYSBnaXZlblxuICAgW1N0ZGxpYi5vdXRfY2hhbm5lbF0gdmFsdWUuICopXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCBzdGF0ZSBvYyA9XG4gIHN0YXRlLnBwX291dF9zdHJpbmcgPC0gb3V0cHV0X3N1YnN0cmluZyBvYztcbiAgc3RhdGUucHBfb3V0X2ZsdXNoIDwtIChmdW4gKCkgLT4gZmx1c2ggb2MpO1xuICBzdGF0ZS5wcF9vdXRfbmV3bGluZSA8LSBkaXNwbGF5X25ld2xpbmUgc3RhdGU7XG4gIHN0YXRlLnBwX291dF9zcGFjZXMgPC0gZGlzcGxheV9ibGFua3Mgc3RhdGU7XG4gIHN0YXRlLnBwX291dF9pbmRlbnQgPC0gZGlzcGxheV9pbmRlbnQgc3RhdGVcblxuKCpcblxuICBEZWZpbmluZyBzcGVjaWZpYyBmb3JtYXR0ZXJzXG5cbiopXG5cbmxldCBkZWZhdWx0X3BwX21hcmtfb3Blbl90YWcgPSBmdW5jdGlvblxuICB8IFN0cmluZ190YWcgcyAtPiBcIjxcIiBeIHMgXiBcIj5cIlxuICB8IF8gLT4gXCJcIlxubGV0IGRlZmF1bHRfcHBfbWFya19jbG9zZV90YWcgPSBmdW5jdGlvblxuICB8IFN0cmluZ190YWcgcyAtPiBcIjwvXCIgXiBzIF4gXCI+XCJcbiAgfCBfIC0+IFwiXCJcblxubGV0IGRlZmF1bHRfcHBfcHJpbnRfb3Blbl90YWcgPSBpZ25vcmVcbmxldCBkZWZhdWx0X3BwX3ByaW50X2Nsb3NlX3RhZyA9IGlnbm9yZVxuXG5sZXQgdXRmXzhfc2NhbGFyX3dpZHRoIHMgfnBvcyB+bGVuID1cbiAgbGV0IHJlYyB3aWR0aCBzIGNvdW50IGN1cnJlbnQgc3RvcCA9XG4gICAgaWYgY3VycmVudCA+PSBzdG9wIHRoZW4gY291bnRcbiAgICBlbHNlXG4gICAgICBsZXQgZGVjb2RlID0gU3RyaW5nLmdldF91dGZfOF91Y2hhciBzIGN1cnJlbnQgaW5cbiAgICAgIGxldCBhZHZhbmNlID0gVWNoYXIudXRmX2RlY29kZV9sZW5ndGggZGVjb2RlIGluXG4gICAgICB3aWR0aCBzIChjb3VudCArIDEpIChjdXJyZW50K2FkdmFuY2UpIHN0b3BcbiAgaW5cbiAgd2lkdGggcyAwIHBvcyAocG9zICsgbGVuKVxuXG5sZXQgYXNjaWlfd2lkdGggXyB+cG9zOl8gfmxlbiA9IGxlblxuXG4oKiBCdWlsZGluZyBhIGZvcm1hdHRlciBnaXZlbiBpdHMgYmFzaWMgb3V0cHV0IGZ1bmN0aW9ucy5cbiAgIE90aGVyIGZpZWxkcyBnZXQgcmVhc29uYWJsZSBkZWZhdWx0IHZhbHVlcy4gKilcbmxldCBwcF9tYWtlX2Zvcm1hdHRlciBmIGcgaCBpIGogPVxuICAoKiBUaGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGUgZm9ybWF0dGVyIGNvbnRhaW5zIGEgZHVtbXkgYm94LiAqKVxuICBsZXQgcHBfcXVldWUgPSBRdWV1ZS5jcmVhdGUgKCkgaW5cbiAgbGV0IHN5c190b2sgPVxuICAgIHsgc2l6ZSA9IFNpemUudW5rbm93bjsgdG9rZW4gPSBQcF9iZWdpbiAoMCwgUHBfaG92Ym94KTsgbGVuZ3RoID0gMCB9IGluXG4gIFF1ZXVlLmFkZCBzeXNfdG9rIHBwX3F1ZXVlO1xuICBsZXQgc2Nhbl9zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKSBpblxuICBpbml0aWFsaXplX3NjYW5fc3RhY2sgc2Nhbl9zdGFjaztcbiAgU3RhY2sucHVzaCB7IGxlZnRfdG90YWwgPSAxOyBxdWV1ZV9lbGVtID0gc3lzX3RvayB9IHNjYW5fc3RhY2s7XG4gIGxldCBwcF9vdXRfd2lkdGggPSB1dGZfOF9zY2FsYXJfd2lkdGggaW5cbiAgbGV0IHBwX21hcmdpbiA9IDc4XG4gIGFuZCBwcF9taW5fc3BhY2VfbGVmdCA9IDEwIGluXG4gIHtcbiAgICBwcF9zY2FuX3N0YWNrID0gc2Nhbl9zdGFjaztcbiAgICBwcF9mb3JtYXRfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfdGJveF9zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF90YWdfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfbWFya19zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF9tYXJnaW4gPSBwcF9tYXJnaW47XG4gICAgcHBfbWluX3NwYWNlX2xlZnQgPSBwcF9taW5fc3BhY2VfbGVmdDtcbiAgICBwcF9tYXhfaW5kZW50ID0gcHBfbWFyZ2luIC0gcHBfbWluX3NwYWNlX2xlZnQ7XG4gICAgcHBfc3BhY2VfbGVmdCA9IHBwX21hcmdpbjtcbiAgICBwcF9jdXJyZW50X2luZGVudCA9IDA7XG4gICAgcHBfaXNfbmV3X2xpbmUgPSB0cnVlO1xuICAgIHBwX2xlZnRfdG90YWwgPSAxO1xuICAgIHBwX3JpZ2h0X3RvdGFsID0gMTtcbiAgICBwcF9jdXJyX2RlcHRoID0gMTtcbiAgICBwcF9tYXhfYm94ZXMgPSBtYXhfaW50O1xuICAgIHBwX2VsbGlwc2lzID0gXCIuXCI7XG4gICAgcHBfb3V0X3N0cmluZyA9IGY7XG4gICAgcHBfb3V0X2ZsdXNoID0gZztcbiAgICBwcF9vdXRfbmV3bGluZSA9IGg7XG4gICAgcHBfb3V0X3NwYWNlcyA9IGk7XG4gICAgcHBfb3V0X2luZGVudCA9IGo7XG4gICAgcHBfb3V0X3dpZHRoO1xuICAgIHBwX3ByaW50X3RhZ3MgPSBmYWxzZTtcbiAgICBwcF9tYXJrX3RhZ3MgPSBmYWxzZTtcbiAgICBwcF9tYXJrX29wZW5fdGFnID0gZGVmYXVsdF9wcF9tYXJrX29wZW5fdGFnO1xuICAgIHBwX21hcmtfY2xvc2VfdGFnID0gZGVmYXVsdF9wcF9tYXJrX2Nsb3NlX3RhZztcbiAgICBwcF9wcmludF9vcGVuX3RhZyA9IGRlZmF1bHRfcHBfcHJpbnRfb3Blbl90YWc7XG4gICAgcHBfcHJpbnRfY2xvc2VfdGFnID0gZGVmYXVsdF9wcF9wcmludF9jbG9zZV90YWc7XG4gICAgcHBfcXVldWUgPSBwcF9xdWV1ZTtcbiAgfVxuXG5cbigqIEJ1aWxkIGEgZm9ybWF0dGVyIG91dCBvZiBpdHMgb3V0IGZ1bmN0aW9ucy4gKilcbmxldCBmb3JtYXR0ZXJfb2Zfb3V0X2Z1bmN0aW9ucyBvdXRfZnVucyA9XG4gIHBwX21ha2VfZm9ybWF0dGVyXG4gICAgb3V0X2Z1bnMub3V0X3N0cmluZ1xuICAgIG91dF9mdW5zLm91dF9mbHVzaFxuICAgIG91dF9mdW5zLm91dF9uZXdsaW5lXG4gICAgb3V0X2Z1bnMub3V0X3NwYWNlc1xuICAgIG91dF9mdW5zLm91dF9pbmRlbnRcblxuXG4oKiBNYWtlIGEgZm9ybWF0dGVyIHdpdGggZGVmYXVsdCBmdW5jdGlvbnMgdG8gb3V0cHV0IHNwYWNlcyxcbiAgaW5kZW50YXRpb24sIGFuZCBuZXcgbGluZXMuICopXG5sZXQgbWFrZV9mb3JtYXR0ZXIgb3V0cHV0IGZsdXNoID1cbiAgbGV0IHBwZiA9IHBwX21ha2VfZm9ybWF0dGVyIG91dHB1dCBmbHVzaCBpZ25vcmUgaWdub3JlIGlnbm9yZSBpblxuICBwcGYucHBfb3V0X25ld2xpbmUgPC0gZGlzcGxheV9uZXdsaW5lIHBwZjtcbiAgcHBmLnBwX291dF9zcGFjZXMgPC0gZGlzcGxheV9ibGFua3MgcHBmO1xuICBwcGYucHBfb3V0X2luZGVudCA8LSBkaXNwbGF5X2luZGVudCBwcGY7XG4gIHBwZlxuXG5cbigqIE1ha2UgYSBmb3JtYXR0ZXIgd3JpdGluZyB0byBhIGdpdmVuIFtTdGRsaWIub3V0X2NoYW5uZWxdIHZhbHVlLiAqKVxubGV0IGZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyA9XG4gIG1ha2VfZm9ybWF0dGVyIChvdXRwdXRfc3Vic3RyaW5nIG9jKSAoZnVuICgpIC0+IGZsdXNoIG9jKVxuXG5cbigqIE1ha2UgYSBmb3JtYXR0ZXIgd3JpdGluZyB0byBhIGdpdmVuIFtCdWZmZXIudF0gdmFsdWUuICopXG5sZXQgZm9ybWF0dGVyX29mX2J1ZmZlciBiID1cbiAgbWFrZV9mb3JtYXR0ZXIgKEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGIpIGlnbm9yZVxuXG5cbigqIEFsbG9jYXRpbmcgYnVmZmVyIGZvciBwcmV0dHktcHJpbnRpbmcgcHVycG9zZXMuXG4gICBEZWZhdWx0IGJ1ZmZlciBzaXplIGlzIHBwX2J1ZmZlcl9zaXplIG9yIDUxMi5cbiopXG5sZXQgcHBfYnVmZmVyX3NpemUgPSA1MTJcbmxldCBwcF9tYWtlX2J1ZmZlciAoKSA9IEJ1ZmZlci5jcmVhdGUgcHBfYnVmZmVyX3NpemVcblxuKCogVGhlIHN0YW5kYXJkIChzaGFyZWQpIGJ1ZmZlci4gKilcbmxldCBzdGRidWYgPSBwcF9tYWtlX2J1ZmZlciAoKVxuXG4oKiBQcmVkZWZpbmVkIGZvcm1hdHRlcnMgc3RhbmRhcmQgZm9ybWF0dGVyIHRvIHByaW50XG4gICB0byBbU3RkbGliLnN0ZG91dF0sIFtTdGRsaWIuc3RkZXJyXSwgYW5kIHshc3RkYnVmfS4gKilcbmxldCBzdGRfZm9ybWF0dGVyID0gZm9ybWF0dGVyX29mX291dF9jaGFubmVsIFN0ZGxpYi5zdGRvdXRcbmFuZCBlcnJfZm9ybWF0dGVyID0gZm9ybWF0dGVyX29mX291dF9jaGFubmVsIFN0ZGxpYi5zdGRlcnJcbmFuZCBzdHJfZm9ybWF0dGVyID0gZm9ybWF0dGVyX29mX2J1ZmZlciBzdGRidWZcblxuKCogSW5pdGlhbGlzZSBkb21haW4gbG9jYWwgc3RhdGUgKilcbm1vZHVsZSBETFMgPSBEb21haW4uRExTXG5cbmxldCBzdGRidWZfa2V5ID0gRExTLm5ld19rZXkgcHBfbWFrZV9idWZmZXJcbmxldCBfID0gRExTLnNldCBzdGRidWZfa2V5IHN0ZGJ1ZlxuXG5sZXQgc3RyX2Zvcm1hdHRlcl9rZXkgPSBETFMubmV3X2tleSAoZnVuICgpIC0+XG4gIGZvcm1hdHRlcl9vZl9idWZmZXIgKERMUy5nZXQgc3RkYnVmX2tleSkpXG5sZXQgXyA9IERMUy5zZXQgc3RyX2Zvcm1hdHRlcl9rZXkgc3RyX2Zvcm1hdHRlclxuXG5sZXQgYnVmZmVyZWRfb3V0X3N0cmluZyBrZXkgc3RyIG9mcyBsZW4gPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyAoRG9tYWluLkRMUy5nZXQga2V5KSBzdHIgb2ZzIGxlblxuXG5sZXQgYnVmZmVyZWRfb3V0X2ZsdXNoIG9jIGtleSAoKSA9XG4gIGxldCBidWYgPSBEb21haW4uRExTLmdldCBrZXkgaW5cbiAgbGV0IGxlbiA9IEJ1ZmZlci5sZW5ndGggYnVmIGluXG4gIGxldCBzdHIgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gIG91dHB1dF9zdWJzdHJpbmcgb2Mgc3RyIDAgbGVuIDtcbiAgU3RkbGliLmZsdXNoIG9jO1xuICBCdWZmZXIuY2xlYXIgYnVmXG5cbmxldCBzdGRfYnVmX2tleSA9IERvbWFpbi5ETFMubmV3X2tleSAoZnVuICgpIC0+IEJ1ZmZlci5jcmVhdGUgcHBfYnVmZmVyX3NpemUpXG5sZXQgZXJyX2J1Zl9rZXkgPSBEb21haW4uRExTLm5ld19rZXkgKGZ1biAoKSAtPiBCdWZmZXIuY3JlYXRlIHBwX2J1ZmZlcl9zaXplKVxuXG5sZXQgc3RkX2Zvcm1hdHRlcl9rZXkgPSBETFMubmV3X2tleSAoZnVuICgpIC0+XG4gIGxldCBwcGYgPVxuICAgIHBwX21ha2VfZm9ybWF0dGVyIChidWZmZXJlZF9vdXRfc3RyaW5nIHN0ZF9idWZfa2V5KVxuICAgICAgKGJ1ZmZlcmVkX291dF9mbHVzaCBTdGRsaWIuc3Rkb3V0IHN0ZF9idWZfa2V5KSBpZ25vcmUgaWdub3JlIGlnbm9yZVxuICBpblxuICBwcGYucHBfb3V0X25ld2xpbmUgPC0gZGlzcGxheV9uZXdsaW5lIHBwZjtcbiAgcHBmLnBwX291dF9zcGFjZXMgPC0gZGlzcGxheV9ibGFua3MgcHBmO1xuICBwcGYucHBfb3V0X2luZGVudCA8LSBkaXNwbGF5X2luZGVudCBwcGY7XG4gIERvbWFpbi5hdF9leGl0IChwcF9wcmludF9mbHVzaCBwcGYpO1xuICBwcGYpXG5sZXQgXyA9IERMUy5zZXQgc3RkX2Zvcm1hdHRlcl9rZXkgc3RkX2Zvcm1hdHRlclxuXG5sZXQgZXJyX2Zvcm1hdHRlcl9rZXkgPSBETFMubmV3X2tleSAoZnVuICgpIC0+XG4gIGxldCBwcGYgPVxuICAgIHBwX21ha2VfZm9ybWF0dGVyIChidWZmZXJlZF9vdXRfc3RyaW5nIGVycl9idWZfa2V5KVxuICAgICAgKGJ1ZmZlcmVkX291dF9mbHVzaCBTdGRsaWIuc3RkZXJyIGVycl9idWZfa2V5KSBpZ25vcmUgaWdub3JlIGlnbm9yZVxuICBpblxuICBwcGYucHBfb3V0X25ld2xpbmUgPC0gZGlzcGxheV9uZXdsaW5lIHBwZjtcbiAgcHBmLnBwX291dF9zcGFjZXMgPC0gZGlzcGxheV9ibGFua3MgcHBmO1xuICBwcGYucHBfb3V0X2luZGVudCA8LSBkaXNwbGF5X2luZGVudCBwcGY7XG4gIERvbWFpbi5hdF9leGl0IChwcF9wcmludF9mbHVzaCBwcGYpO1xuICBwcGYpXG5sZXQgXyA9IERMUy5zZXQgZXJyX2Zvcm1hdHRlcl9rZXkgZXJyX2Zvcm1hdHRlclxuXG5sZXQgZ2V0X3N0ZF9mb3JtYXR0ZXIgKCkgPSBETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5XG5sZXQgZ2V0X2Vycl9mb3JtYXR0ZXIgKCkgPSBETFMuZ2V0IGVycl9mb3JtYXR0ZXJfa2V5XG5sZXQgZ2V0X3N0cl9mb3JtYXR0ZXIgKCkgPSBETFMuZ2V0IHN0cl9mb3JtYXR0ZXJfa2V5XG5sZXQgZ2V0X3N0ZGJ1ZiAoKSA9IERMUy5nZXQgc3RkYnVmX2tleVxuXG4oKiBbZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBidWYgcHBmXSBmbHVzaGVzIGZvcm1hdHRlciBbcHBmXSxcbiAgIHRoZW4gcmV0dXJucyB0aGUgY29udGVudHMgb2YgYnVmZmVyIFtidWZdIHRoYXQgaXMgcmVzZXQuXG4gICBGb3JtYXR0ZXIgW3BwZl0gaXMgc3VwcG9zZWQgdG8gcHJpbnQgdG8gYnVmZmVyIFtidWZdLCBvdGhlcndpc2UgdGhpc1xuICAgZnVuY3Rpb24gaXMgbm90IHJlYWxseSB1c2VmdWwuICopXG5sZXQgZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBidWYgcHBmID1cbiAgcHBfZmx1c2hfcXVldWUgcHBmIH5lbmRfd2l0aF9uZXdsaW5lOmZhbHNlO1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgQnVmZmVyLnJlc2V0IGJ1ZjtcbiAgc1xuXG4oKiBGbHVzaCBbc3RyX2Zvcm1hdHRlcl0gYW5kIGdldCB0aGUgY29udGVudHMgb2YgW3N0ZGJ1Zl0uICopXG5sZXQgZmx1c2hfc3RyX2Zvcm1hdHRlciAoKSA9XG4gIGxldCBzdGRidWYgPSBETFMuZ2V0IHN0ZGJ1Zl9rZXkgaW5cbiAgbGV0IHN0cl9mb3JtYXR0ZXIgPSBETFMuZ2V0IHN0cl9mb3JtYXR0ZXJfa2V5IGluXG4gIGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgc3RkYnVmIHN0cl9mb3JtYXR0ZXJcblxubGV0IG1ha2Vfc3luY2hyb25pemVkX2Zvcm1hdHRlciBvdXRwdXQgZmx1c2ggPVxuICBETFMubmV3X2tleSAoZnVuICgpIC0+XG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgcHBfYnVmZmVyX3NpemUgaW5cbiAgICBsZXQgb3V0cHV0JyA9IEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBpblxuICAgIGxldCBmbHVzaCcgKCkgPVxuICAgICAgb3V0cHV0IChCdWZmZXIuY29udGVudHMgYnVmKSAwIChCdWZmZXIubGVuZ3RoIGJ1Zik7XG4gICAgICBCdWZmZXIuY2xlYXIgYnVmO1xuICAgICAgZmx1c2ggKClcbiAgICBpblxuICAgIG1ha2VfZm9ybWF0dGVyIG91dHB1dCcgZmx1c2gnKVxuXG5sZXQgc3luY2hyb25pemVkX2Zvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyA9XG4gIG1ha2Vfc3luY2hyb25pemVkX2Zvcm1hdHRlciAob3V0cHV0X3N1YnN0cmluZyBvYykgKGZ1biAoKSAtPiBmbHVzaCBvYylcblxuKCpcbiAgU3ltYm9saWMgcHJldHR5LXByaW50aW5nXG4qKVxuXG4oKlxuICBTeW1ib2xpYyBwcmV0dHktcHJpbnRpbmcgaXMgcHJldHR5LXByaW50aW5nIHdpdGggbm8gbG93IGxldmVsIG91dHB1dC5cblxuICBXaGVuIHVzaW5nIGEgc3ltYm9saWMgZm9ybWF0dGVyLCBhbGwgcmVndWxhciBwcmV0dHktcHJpbnRpbmcgYWN0aXZpdGllc1xuICBvY2N1ciBidXQgb3V0cHV0IG1hdGVyaWFsIGlzIHN5bWJvbGljIGFuZCBzdG9yZWQgaW4gYSBidWZmZXIgb2Ygb3V0cHV0XG4gIGl0ZW1zLiBBdCB0aGUgZW5kIG9mIHByZXR0eS1wcmludGluZywgZmx1c2hpbmcgdGhlIG91dHB1dCBidWZmZXIgYWxsb3dzXG4gIHBvc3QtcHJvY2Vzc2luZyBvZiBzeW1ib2xpYyBvdXRwdXQgYmVmb3JlIGxvdyBsZXZlbCBvdXRwdXQgb3BlcmF0aW9ucy5cbiopXG5cbnR5cGUgc3ltYm9saWNfb3V0cHV0X2l0ZW0gPVxuICB8IE91dHB1dF9mbHVzaFxuICB8IE91dHB1dF9uZXdsaW5lXG4gIHwgT3V0cHV0X3N0cmluZyBvZiBzdHJpbmdcbiAgfCBPdXRwdXRfc3BhY2VzIG9mIGludFxuICB8IE91dHB1dF9pbmRlbnQgb2YgaW50XG5cbnR5cGUgc3ltYm9saWNfb3V0cHV0X2J1ZmZlciA9IHtcbiAgbXV0YWJsZSBzeW1ib2xpY19vdXRwdXRfY29udGVudHMgOiBzeW1ib2xpY19vdXRwdXRfaXRlbSBsaXN0O1xufVxuXG5sZXQgbWFrZV9zeW1ib2xpY19vdXRwdXRfYnVmZmVyICgpID1cbiAgeyBzeW1ib2xpY19vdXRwdXRfY29udGVudHMgPSBbXSB9XG5cbmxldCBjbGVhcl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHMgPC0gW11cblxubGV0IGdldF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIExpc3QucmV2IHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHNcblxubGV0IGZsdXNoX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgbGV0IGl0ZW1zID0gZ2V0X3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iIGluXG4gIGNsZWFyX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iO1xuICBpdGVtc1xuXG5sZXQgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiBpdGVtID1cbiAgc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50cyA8LSBpdGVtIDo6IHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHNcblxubGV0IGZvcm1hdHRlcl9vZl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIGxldCBzeW1ib2xpY19mbHVzaCBzb2IgKCkgPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgT3V0cHV0X2ZsdXNoXG4gIGFuZCBzeW1ib2xpY19uZXdsaW5lIHNvYiAoKSA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiBPdXRwdXRfbmV3bGluZVxuICBhbmQgc3ltYm9saWNfc3RyaW5nIHNvYiBzIGkgbiA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiAoT3V0cHV0X3N0cmluZyAoU3RyaW5nLnN1YiBzIGkgbikpXG4gIGFuZCBzeW1ib2xpY19zcGFjZXMgc29iIG4gPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgKE91dHB1dF9zcGFjZXMgbilcbiAgYW5kIHN5bWJvbGljX2luZGVudCBzb2IgbiA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiAoT3V0cHV0X2luZGVudCBuKSBpblxuXG4gIGxldCBmID0gc3ltYm9saWNfc3RyaW5nIHNvYlxuICBhbmQgZyA9IHN5bWJvbGljX2ZsdXNoIHNvYlxuICBhbmQgaCA9IHN5bWJvbGljX25ld2xpbmUgc29iXG4gIGFuZCBpID0gc3ltYm9saWNfc3BhY2VzIHNvYlxuICBhbmQgaiA9IHN5bWJvbGljX2luZGVudCBzb2IgaW5cbiAgcHBfbWFrZV9mb3JtYXR0ZXIgZiBnIGggaSBqXG5cbigqXG5cbiAgQmFzaWMgZnVuY3Rpb25zIG9uIHRoZSAnc3RhbmRhcmQnIGZvcm1hdHRlclxuICAodGhlIGZvcm1hdHRlciB0aGF0IHByaW50cyB0byBbU3RkbGliLnN0ZG91dF0pLlxuXG4qKVxuXG5sZXQgb3Blbl9oYm94IHYgPSBwcF9vcGVuX2hib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBvcGVuX3Zib3ggdiA9IHBwX29wZW5fdmJveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIG9wZW5faHZib3ggdiA9IHBwX29wZW5faHZib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBvcGVuX2hvdmJveCB2ID0gcHBfb3Blbl9ob3Zib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBvcGVuX2JveCB2ID0gcHBfb3Blbl9ib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBjbG9zZV9ib3ggdiA9IHBwX2Nsb3NlX2JveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIG9wZW5fc3RhZyB2ID0gcHBfb3Blbl9zdGFnIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgY2xvc2Vfc3RhZyB2ID0gcHBfY2xvc2Vfc3RhZyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2FzIHYgdyA9IHBwX3ByaW50X2FzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2IHdcbmFuZCBwcmludF9zdHJpbmcgdiA9IHBwX3ByaW50X3N0cmluZyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X3N1YnN0cmluZyB+cG9zIH5sZW4gdiA9XG4gIHBwX3ByaW50X3N1YnN0cmluZyAgfnBvcyB+bGVuIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfc3Vic3RyaW5nX2FzIH5wb3MgfmxlbiBhc19sZW4gdiA9XG4gIHBwX3ByaW50X3N1YnN0cmluZ19hcyB+cG9zIH5sZW4gKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIGFzX2xlbiB2XG5hbmQgcHJpbnRfYnl0ZXMgdiA9IHBwX3ByaW50X2J5dGVzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfaW50IHYgPSBwcF9wcmludF9pbnQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9mbG9hdCB2ID0gcHBfcHJpbnRfZmxvYXQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9jaGFyIHYgPSBwcF9wcmludF9jaGFyIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfYm9vbCB2ID0gcHBfcHJpbnRfYm9vbCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2JyZWFrIHYgdyA9IHBwX3ByaW50X2JyZWFrIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2IHdcbmFuZCBwcmludF9jdXQgdiA9IHBwX3ByaW50X2N1dCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X3NwYWNlIHYgPSBwcF9wcmludF9zcGFjZSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGZvcmNlX25ld2xpbmUgdiA9IHBwX2ZvcmNlX25ld2xpbmUgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9mbHVzaCB2ID0gcHBfcHJpbnRfZmx1c2ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9uZXdsaW5lIHYgPSBwcF9wcmludF9uZXdsaW5lIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfaWZfbmV3bGluZSB2ID0gcHBfcHJpbnRfaWZfbmV3bGluZSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgb3Blbl90Ym94IHYgPSBwcF9vcGVuX3Rib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBjbG9zZV90Ym94IHYgPSBwcF9jbG9zZV90Ym94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfdGJyZWFrIHYgdyA9IHBwX3ByaW50X3RicmVhayAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdiB3XG5cbmFuZCBzZXRfdGFiIHYgPSBwcF9zZXRfdGFiIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfdGFiIHYgPSBwcF9wcmludF90YWIgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9tYXJnaW4gdiA9IHBwX3NldF9tYXJnaW4gKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfbWFyZ2luIHYgPSBwcF9nZXRfbWFyZ2luIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBzZXRfbWF4X2luZGVudCB2ID0gcHBfc2V0X21heF9pbmRlbnQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfbWF4X2luZGVudCB2ID0gcHBfZ2V0X21heF9pbmRlbnQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9nZW9tZXRyeSB+bWF4X2luZGVudCB+bWFyZ2luID1cbiAgcHBfc2V0X2dlb21ldHJ5IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB+bWF4X2luZGVudCB+bWFyZ2luXG5hbmQgc2FmZV9zZXRfZ2VvbWV0cnkgfm1heF9pbmRlbnQgfm1hcmdpbiA9XG4gIHBwX3NhZmVfc2V0X2dlb21ldHJ5IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB+bWF4X2luZGVudCB+bWFyZ2luXG5hbmQgZ2V0X2dlb21ldHJ5IHYgPSBwcF9nZXRfZ2VvbWV0cnkgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCB1cGRhdGVfZ2VvbWV0cnkgdiA9IHBwX3VwZGF0ZV9nZW9tZXRyeSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X21heF9ib3hlcyB2ID0gcHBfc2V0X21heF9ib3hlcyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9tYXhfYm94ZXMgdiA9IHBwX2dldF9tYXhfYm94ZXMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBvdmVyX21heF9ib3hlcyB2ID0gcHBfb3Zlcl9tYXhfYm94ZXMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9lbGxpcHNpc190ZXh0IHYgPSBwcF9zZXRfZWxsaXBzaXNfdGV4dCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9lbGxpcHNpc190ZXh0IHYgPSBwcF9nZXRfZWxsaXBzaXNfdGV4dCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCB2ID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHYgPVxuICBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgdiA9XG4gIHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHYgdyA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdiB3XG5hbmQgZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHYgPVxuICBwcF9nZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgdiA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHYgPVxuICBwcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgc2V0X3ByaW50X3RhZ3MgdiA9XG4gIHBwX3NldF9wcmludF90YWdzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgZ2V0X3ByaW50X3RhZ3MgdiA9XG4gIHBwX2dldF9wcmludF90YWdzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgc2V0X21hcmtfdGFncyB2ID1cbiAgcHBfc2V0X21hcmtfdGFncyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9tYXJrX3RhZ3MgdiA9XG4gIHBwX2dldF9tYXJrX3RhZ3MgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBzZXRfdGFncyB2ID1cbiAgcHBfc2V0X3RhZ3MgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuXG4oKiBDb252ZW5pZW5jZSBmdW5jdGlvbnMgKilcblxubGV0IHBwX3ByaW50X2l0ZXIgPyhwcF9zZXAgPSBwcF9wcmludF9jdXQpIGl0ZXIgcHBfdiBwcGYgdiA9XG4gIGxldCBpc19maXJzdCA9IHJlZiB0cnVlIGluXG4gIGxldCBwcF92IHYgPVxuICAgIGlmICFpc19maXJzdCB0aGVuIGlzX2ZpcnN0IDo9IGZhbHNlIGVsc2UgcHBfc2VwIHBwZiAoKTtcbiAgICBwcF92IHBwZiB2XG4gIGluXG4gIGl0ZXIgcHBfdiB2XG5cbigqIFRvIGZvcm1hdCBhIGxpc3QgKilcbmxldCBwcF9wcmludF9saXN0ID8ocHBfc2VwID0gcHBfcHJpbnRfY3V0KSBwcF92IHBwZiB2ID1cbiAgcHBfcHJpbnRfaXRlciB+cHBfc2VwIExpc3QuaXRlciBwcF92IHBwZiB2XG5cbigqIFRvIGZvcm1hdCBhbiBhcnJheSAqKVxubGV0IHBwX3ByaW50X2FycmF5ID8ocHBfc2VwID0gcHBfcHJpbnRfY3V0KSBwcF92IHBwZiB2ID1cbiAgcHBfcHJpbnRfaXRlciB+cHBfc2VwIEFycmF5Lml0ZXIgcHBfdiBwcGYgdlxuXG4oKiBUbyBmb3JtYXQgYSBzZXF1ZW5jZSAqKVxubGV0IHBwX3ByaW50X3NlcSA/KHBwX3NlcCA9IHBwX3ByaW50X2N1dCkgcHBfdiBwcGYgc2VxID1cbiAgcHBfcHJpbnRfaXRlciB+cHBfc2VwIFNlcS5pdGVyIHBwX3YgcHBmIHNlcVxuXG4oKiBUbyBmb3JtYXQgZnJlZS1mbG93aW5nIHRleHQgKilcbmxldCBwcF9wcmludF90ZXh0IHBwZiBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgbGVmdCA9IHJlZiAwIGluXG4gIGxldCByaWdodCA9IHJlZiAwIGluXG4gIGxldCBmbHVzaCAoKSA9XG4gICAgcHBfcHJpbnRfc3Vic3RyaW5nIH5wb3M6IWxlZnQgfmxlbjooIXJpZ2h0IC0gIWxlZnQpIHBwZiBzO1xuICAgIGluY3IgcmlnaHQ7IGxlZnQgOj0gIXJpZ2h0O1xuICBpblxuICB3aGlsZSAoIXJpZ2h0IDw+IGxlbikgZG9cbiAgICBtYXRjaCBzLlshcmlnaHRdIHdpdGhcbiAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgZmx1c2ggKCk7XG4gICAgICAgIHBwX2ZvcmNlX25ld2xpbmUgcHBmICgpXG4gICAgICB8ICcgJyAtPlxuICAgICAgICBmbHVzaCAoKTsgcHBfcHJpbnRfc3BhY2UgcHBmICgpXG4gICAgICAoKiB0aGVyZSBpcyBubyBzcGVjaWZpYyBzdXBwb3J0IGZvciAnXFx0J1xuICAgICAgICAgYXMgaXQgaXMgdW5jbGVhciB3aGF0IGEgcmlnaHQgc2VtYW50aWNzIHdvdWxkIGJlICopXG4gICAgICB8IF8gLT4gaW5jciByaWdodFxuICBkb25lO1xuICBpZiAhbGVmdCA8PiBsZW4gdGhlbiBmbHVzaCAoKVxuXG4oKiBUbyBmb3JtYXQgZnJlZS1mbG93aW5nIHRleHQgKilcbmxldCBmb3JtYXRfdGV4dCBmbXQ2ID1cbiAgbGV0IG9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzIGluXG4gIGxldCBGb3JtYXQoZm10LF8pID0gZm10NiBpblxuICBsZXQgY29uc19zcGFjZSB+c3BhY2VzIGZtdCA9IEZvcm1hdHRpbmdfbGl0IChCcmVhayhcIlwiLHNwYWNlcywwKSwgZm10KSBpblxuICBsZXQgcmVjIHNraXBfYW5kX2NvdW50X3doaXRlcyBzcGFjZXMgbmV3bGluZXMgbGVuIHMgcG9zID1cbiAgICBpZiBwb3MgPj0gbGVuIHRoZW4gcG9zLCBzcGFjZXMsIG5ld2xpbmVzIGVsc2VcbiAgICBtYXRjaCBzLltwb3NdIHdpdGhcbiAgICB8ICcgJyAtPiBza2lwX2FuZF9jb3VudF93aGl0ZXMgKDErc3BhY2VzKSBuZXdsaW5lcyBsZW4gcyAoMStwb3MpXG4gICAgfCAnXFxuJyAtPiBza2lwX2FuZF9jb3VudF93aGl0ZXMgc3BhY2VzICgxK25ld2xpbmVzKSBsZW4gcyAoMStwb3MpXG4gICAgfCBfIC0+IHBvcywgc3BhY2VzLCBuZXdsaW5lc1xuICBpblxuICBsZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBzcGxpdCBsZW4gcyBwb3MgZm10ID1cbiAgICBpZiBwb3MgPj0gbGVuIHRoZW4gZm10XG4gICAgZWxzZVxuICAgICAgbGV0IHNwYWNlID0gU3RyaW5nLmluZGV4X2Zyb21fb3B0IHMgcG9zICcgJyBpblxuICAgICAgbGV0IG5ld2xpbmUgPSBTdHJpbmcuaW5kZXhfZnJvbV9vcHQgcyBwb3MgJ1xcbicgaW5cbiAgICAgIGxldCBmaXJzdCA9IG1hdGNoIHNwYWNlLCBuZXdsaW5lIHdpdGhcbiAgICAgICAgfCBTb21lIHgsIFNvbWUgeSAtPiBTb21lIChtaW4geCB5KVxuICAgICAgICB8IE5vbmUsIHggfCB4LCBOb25lIC0+IHhcbiAgICAgIGluXG4gICAgICBtYXRjaCBmaXJzdCB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBTdHJpbmdfbGl0ZXJhbChTdHJpbmcuc3ViIHMgcG9zIChsZW4tcG9zKSwgZm10KVxuICAgICAgfCBTb21lIHNlcCAtPlxuICAgICAgICAgIGxldCBiZWZvcmUgPSBTdHJpbmcuc3ViIHMgcG9zIChzZXAtcG9zKSBpblxuICAgICAgICAgIGxldCBwb3MsIHNwYWNlcywgbmV3bGluZXMgPSBza2lwX2FuZF9jb3VudF93aGl0ZXMgMCAwIGxlbiBzIHNlcCBpblxuICAgICAgICAgIGxldCByZXBlYXQsIGJyZWFrID1cbiAgICAgICAgICAgIG1hdGNoIG5ld2xpbmVzLCBzcGFjZXMgd2l0aFxuICAgICAgICAgICAgfCAoMHwxKSwgc3BhY2VzIC0+IDEsIEJyZWFrKFwiXCIsIG1heCBzcGFjZXMgMSwgMClcbiAgICAgICAgICAgIHwgYmwsIF8gLT4gYmwsIEZvcmNlX25ld2xpbmVcbiAgICAgICAgICBpblxuICAgICAgICAgIFN0cmluZ19saXRlcmFsKGJlZm9yZSwgY29ucyB+cmVwZWF0IGJyZWFrIGxlbiBzIHBvcyBmbXQpXG4gIGFuZFtAdGFpbF9tb2RfY29uc10gY29ucyB+cmVwZWF0IGJyZWFrIGxlbiBzIHBvcyBmbXQgPVxuICAgIGlmIHJlcGVhdCA9IDAgdGhlblxuICAgICAgc3BsaXQgbGVuIHMgcG9zIGZtdFxuICAgIGVsc2VcbiAgICAgIEZvcm1hdHRpbmdfbGl0IChicmVhaywgY29ucyB+cmVwZWF0OihyZXBlYXQtMSkgYnJlYWsgbGVuIHMgcG9zIGZtdClcbiAgaW5cbiAgbGV0IGNvbmNhdCBzIGZtdCA9IG1hdGNoIHMgd2l0aFxuICAgIHwgYENoYXIgKCcgJ3wnXFxuJykgLT4gY29uc19zcGFjZSB+c3BhY2VzOjEgZm10XG4gICAgfCBgQ2hhciBjIC0+IENoYXJfbGl0ZXJhbChjLGZtdClcbiAgICB8IGBTdHJpbmcgcyAtPiBzcGxpdCAoU3RyaW5nLmxlbmd0aCBzKSBzIDAgZm10IGluXG4gIGxldCBmbXQgPSBzdHJpbmdfY29uY2F0X21hcCB7Zj1jb25jYXR9IGZtdCBpblxuICBGb3JtYXQoZm10LCBDYW1saW50ZXJuYWxGb3JtYXQuc3RyaW5nX29mX2ZtdCBmbXQpXG5cblxubGV0IHBwX3ByaW50X29wdGlvbiA/KG5vbmUgPSBmdW4gXyAoKSAtPiAoKSkgcHBfdiBwcGYgPSBmdW5jdGlvblxufCBOb25lIC0+IG5vbmUgcHBmICgpXG58IFNvbWUgdiAtPiBwcF92IHBwZiB2XG5cbmxldCBwcF9wcmludF9yZXN1bHQgfm9rIH5lcnJvciBwcGYgPSBmdW5jdGlvblxufCBPayB2IC0+IG9rIHBwZiB2XG58IEVycm9yIGUgLT4gZXJyb3IgcHBmIGVcblxubGV0IHBwX3ByaW50X2VpdGhlciB+bGVmdCB+cmlnaHQgcHBmID0gZnVuY3Rpb25cbnwgRWl0aGVyLkxlZnQgbCAtPiBsZWZ0IHBwZiBsXG58IEVpdGhlci5SaWdodCByIC0+IHJpZ2h0IHBwZiByXG5cbiAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBjb21wdXRlX3RhZyBvdXRwdXQgdGFnX2FjYyA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDE2IGluXG4gIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGJ1ZiBpblxuICBvdXRwdXQgcHBmIHRhZ19hY2M7XG4gIHBwX3ByaW50X2ZsdXNoIHBwZiAoKTtcbiAgbGV0IGxlbiA9IEJ1ZmZlci5sZW5ndGggYnVmIGluXG4gIGlmIGxlbiA8IDIgdGhlbiBCdWZmZXIuY29udGVudHMgYnVmXG4gIGVsc2UgQnVmZmVyLnN1YiBidWYgMSAobGVuIC0gMilcblxuICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gIERlZmluaW5nIGNvbnRpbnVhdGlvbnMgdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50cyBvZlxuICBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYuXG5cbiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdFxuXG4oKiBJbnRlcnByZXQgYSBmb3JtYXR0aW5nIGVudGl0eSBvbiBhIGZvcm1hdHRlci4gKilcbmxldCBvdXRwdXRfZm9ybWF0dGluZ19saXQgcHBmIGZtdGluZ19saXQgPSBtYXRjaCBmbXRpbmdfbGl0IHdpdGhcbiAgfCBDbG9zZV9ib3ggICAgICAgICAgICAgICAgIC0+IHBwX2Nsb3NlX2JveCBwcGYgKClcbiAgfCBDbG9zZV90YWcgICAgICAgICAgICAgICAgIC0+IHBwX2Nsb3NlX3N0YWcgcHBmICgpXG4gIHwgQnJlYWsgKF8sIHdpZHRoLCBvZmZzZXQpICAtPiBwcF9wcmludF9icmVhayBwcGYgd2lkdGggb2Zmc2V0XG4gIHwgRkZsdXNoICAgICAgICAgICAgICAgICAgICAtPiBwcF9wcmludF9mbHVzaCBwcGYgKClcbiAgfCBGb3JjZV9uZXdsaW5lICAgICAgICAgICAgIC0+IHBwX2ZvcmNlX25ld2xpbmUgcHBmICgpXG4gIHwgRmx1c2hfbmV3bGluZSAgICAgICAgICAgICAtPiBwcF9wcmludF9uZXdsaW5lIHBwZiAoKVxuICB8IE1hZ2ljX3NpemUgKF8sIF8pICAgICAgICAgLT4gKClcbiAgfCBFc2NhcGVkX2F0ICAgICAgICAgICAgICAgIC0+IHBwX3ByaW50X2NoYXIgcHBmICdAJ1xuICB8IEVzY2FwZWRfcGVyY2VudCAgICAgICAgICAgLT4gcHBfcHJpbnRfY2hhciBwcGYgJyUnXG4gIHwgU2Nhbl9pbmRpYyBjICAgICAgICAgICAgICAtPiBwcF9wcmludF9jaGFyIHBwZiAnQCc7IHBwX3ByaW50X2NoYXIgcHBmIGNcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhbiBvdXRwdXRfc3RyZWFtLiAqKVxuKCogRGlmZmVyIGZyb20gUHJpbnRmLm91dHB1dF9hY2MgYnkgdGhlIGludGVycHJldGF0aW9uIG9mIGZvcm1hdHRpbmcuICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50Zi4gKilcbmxldCByZWMgb3V0cHV0X2FjYyBwcGYgYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIHMpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgcztcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSAoU3RyaW5nLm1ha2UgMSBjKTtcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGYpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBvdXRwdXRfZm9ybWF0dGluZ19saXQgcHBmIGY7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIHBwX29wZW5fc3RhZyBwcGYgKFN0cmluZ190YWcgKGNvbXB1dGVfdGFnIG91dHB1dF9hY2MgYWNjJykpXG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIGxldCAoaW5kZW50LCBidHkpID0gb3Blbl9ib3hfb2Zfc3RyaW5nIChjb21wdXRlX3RhZyBvdXRwdXRfYWNjIGFjYycpIGluXG4gICAgcHBfb3Blbl9ib3hfZ2VuIHBwZiBpbmRlbnQgYnR5XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9zdHJpbmcgcHBmIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfY2hhciBwcGYgYztcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgZiBwcGY7XG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2ZsdXNoIHBwZiAoKTtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gb3V0cHV0X2FjYyBwcGYgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGEgYnVmZmVyLiAqKVxuKCogRGlmZmVyIGZyb20gUHJpbnRmLmJ1ZnB1dF9hY2MgYnkgdGhlIGludGVycHJldGF0aW9uIG9mIGZvcm1hdHRpbmcuICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50Zi4gKilcbmxldCByZWMgc3RycHV0X2FjYyBwcGYgYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIHMpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgcztcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSAoU3RyaW5nLm1ha2UgMSBjKTtcbiAgfCBBY2NfZGVsYXkgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBmKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIChmICgpKTtcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGYpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBvdXRwdXRfZm9ybWF0dGluZ19saXQgcHBmIGY7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX29wZW5fc3RhZyBwcGYgKFN0cmluZ190YWcgKGNvbXB1dGVfdGFnIHN0cnB1dF9hY2MgYWNjJykpXG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIGxldCAoaW5kZW50LCBidHkpID0gb3Blbl9ib3hfb2Zfc3RyaW5nIChjb21wdXRlX3RhZyBzdHJwdXRfYWNjIGFjYycpIGluXG4gICAgcHBfb3Blbl9ib3hfZ2VuIHBwZiBpbmRlbnQgYnR5XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9zdHJpbmcgcHBmIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfY2hhciBwcGYgYztcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfc3RyaW5nIHBwZiAoZiAoKSk7XG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2ZsdXNoIHBwZiAoKTtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gc3RycHV0X2FjYyBwcGYgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKlxuXG4gIERlZmluaW5nIFtmcHJpbnRmXSBhbmQgdmFyaW91cyBmbGF2b3JzIG9mIFtmcHJpbnRmXS5cblxuKilcblxubGV0IGtmcHJpbnRmIGsgcHBmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGZcbiAgICAoZnVuIGFjYyAtPiBvdXRwdXRfYWNjIHBwZiBhY2M7IGsgcHBmKVxuICAgIEVuZF9vZl9hY2MgZm10XG5cbmFuZCBpa2ZwcmludGYgayBwcGYgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX2lwcmludGYgayBwcGYgZm10XG5cbmxldCBpZnByaW50ZiBfcHBmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9pcHJpbnRmIGlnbm9yZSAoKSBmbXRcblxubGV0IGZwcmludGYgcHBmID0ga2ZwcmludGYgaWdub3JlIHBwZlxuXG5sZXQgcHJpbnRmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGZcbiAgICAoZnVuIGFjYyAtPiBvdXRwdXRfYWNjIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSBhY2MpXG4gICAgRW5kX29mX2FjYyBmbXRcblxubGV0IGVwcmludGYgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZlxuICAgIChmdW4gYWNjIC0+IG91dHB1dF9hY2MgKERMUy5nZXQgZXJyX2Zvcm1hdHRlcl9rZXkpIGFjYylcbiAgICBFbmRfb2ZfYWNjIGZtdFxuXG5sZXQga2RwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmXG4gICAgKGZ1biBhY2MgLT4gayAoZnVuIHBwZiAtPiBvdXRwdXRfYWNjIHBwZiBhY2MpKVxuICAgIEVuZF9vZl9hY2MgZm10XG5cbmxldCBkcHJpbnRmIGZtdCA9IGtkcHJpbnRmIChmdW4gaSAtPiBpKSBmbXRcblxubGV0IGtzcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBsZXQgYiA9IHBwX21ha2VfYnVmZmVyICgpIGluXG4gIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgbGV0IGsgYWNjID1cbiAgICBzdHJwdXRfYWNjIHBwZiBhY2M7XG4gICAgayAoZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBiIHBwZikgaW5cbiAgbWFrZV9wcmludGYgayBFbmRfb2ZfYWNjIGZtdFxuXG5cbmxldCBzcHJpbnRmIGZtdCA9IGtzcHJpbnRmIGlkIGZtdFxuXG5sZXQga2FzcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBsZXQgYiA9IHBwX21ha2VfYnVmZmVyICgpIGluXG4gIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgbGV0IGsgYWNjID1cbiAgICBvdXRwdXRfYWNjIHBwZiBhY2M7XG4gICAgayAoZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBiIHBwZikgaW5cbiAgbWFrZV9wcmludGYgayBFbmRfb2ZfYWNjIGZtdFxuXG5cbmxldCBhc3ByaW50ZiBmbXQgPSBrYXNwcmludGYgaWQgZm10XG5cbigqIEZsdXNoaW5nIHN0YW5kYXJkIGZvcm1hdHRlcnMgYXQgZW5kIG9mIGV4ZWN1dGlvbi4gKilcblxubGV0IGZsdXNoX3N0YW5kYXJkX2Zvcm1hdHRlcnMgKCkgPVxuICBwcF9wcmludF9mbHVzaCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgKCk7XG4gIHBwX3ByaW50X2ZsdXNoIChETFMuZ2V0IGVycl9mb3JtYXR0ZXJfa2V5KSAoKVxuXG5sZXQgKCkgPSBhdF9leGl0IGZsdXNoX3N0YW5kYXJkX2Zvcm1hdHRlcnNcblxubGV0ICgpID0gRG9tYWluLmJlZm9yZV9maXJzdF9zcGF3biAoZnVuICgpIC0+XG4gIGZsdXNoX3N0YW5kYXJkX2Zvcm1hdHRlcnMgKCk7XG4gIGxldCBmcyA9IHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyICgpIGluXG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG4gICAge2ZzIHdpdGggb3V0X3N0cmluZyA9IGJ1ZmZlcmVkX291dF9zdHJpbmcgc3RkX2J1Zl9rZXk7XG4gICAgICAgICAgICAgb3V0X2ZsdXNoID0gYnVmZmVyZWRfb3V0X2ZsdXNoIFN0ZGxpYi5zdGRvdXQgc3RkX2J1Zl9rZXl9O1xuXG4gIGxldCBmcyA9IHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBlcnJfZm9ybWF0dGVyICgpIGluXG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBlcnJfZm9ybWF0dGVyXG4gICAge2ZzIHdpdGggb3V0X3N0cmluZyA9IGJ1ZmZlcmVkX291dF9zdHJpbmcgZXJyX2J1Zl9rZXk7XG4gICAgICAgICAgICAgb3V0X2ZsdXNoID0gYnVmZmVyZWRfb3V0X2ZsdXNoIFN0ZGxpYi5zdGRlcnIgZXJyX2J1Zl9rZXl9O1xuKVxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX21sX3N0cmluZ19sZW5ndGgiLCJjYW1sX3N0cmluZ19nZXQiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiZHVtbXkiLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYl9RdWV1ZSIsIlN0ZGxpYiIsIkNhbWxpbnRlcm5hbEZvcm1hdCIsIlN0ZGxpYl9TdHJpbmciLCJTdGRsaWJfRG9tYWluIiwiU3RkbGliX0J1ZmZlciIsIkNhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcyIsIlN0ZGxpYl9TZXEiLCJTdGRsaWJfQXJyYXkiLCJTdGRsaWJfTGlzdCIsIlN0ZGxpYl9TdGFjayIsIlN0ZGxpYl9VY2hhciIsIlN0ZGxpYl9JbnQiLCJTdGRsaWJfQnl0ZXMiLCJpZCIsIngiLCJTdHJpbmdfdGFnIiwicHBfZW5xdWV1ZSIsInN0YXRlIiwidG9rZW4iLCJwcF9vdXRwdXRfc3RyaW5nIiwicyIsInBwX3N0cmluZ193aWR0aCIsInBwX291dHB1dF9uZXdsaW5lIiwiZm9ybWF0X3BwX3RleHQiLCJzaXplIiwidGV4dCIsImNzdCIsImZvcm1hdF9zdHJpbmciLCJicmVha19uZXdfbGluZSIsInBhcmFtIiwid2lkdGgiLCJhZnRlciIsIm9mZnNldCIsImJlZm9yZSIsImluZGVudCIsInJlYWxfaW5kZW50IiwibiIsImJyZWFrX3NhbWVfbGluZSIsImZvcm1hdF9wcF90b2tlbiIsIm1hdGNoIiwidGFicyIsImFkZF90YWIiLCJscyIsImwiLCJsZW5ndGgiLCJ0YWdfbmFtZSIsIm1hcmtlciIsImxlbiIsInBvcyIsInNvdXJjZSIsImJyZWFrcyIsImZpdHMiLCJvZmYiLCJib3hfdHlwZSIsImluc2VydGlvbl9wb2ludCIsImZpcnN0IiwidGFiIiwidGFpbCIsImhlYWQiLCJ0eSIsInRib3giLCJwcF9pbmZpbml0eSIsImFkdmFuY2VfbGVmdCIsInBlbmRpbmdfY291bnQiLCJlbnF1ZXVlX2FkdmFuY2UiLCJ0b2siLCJlbnF1ZXVlX3N0cmluZ19hcyIsInVua25vd24iLCJpbml0aWFsaXplX3NjYW5fc3RhY2siLCJzdGFjayIsInNldF9zaXplIiwicXVldWVfZWxlbSIsImxlZnRfdG90YWwiLCJzY2FuX3B1c2giLCJiIiwiZWxlbSIsInBwX29wZW5fYm94X2dlbiIsImJyX3R5IiwiemVybyIsInBwX2Nsb3NlX2JveCIsInBwX29wZW5fc3RhZyIsInBwX2Nsb3NlX3N0YWciLCJwcF9zZXRfcHJpbnRfdGFncyIsInBwX3NldF9tYXJrX3RhZ3MiLCJwcF9nZXRfcHJpbnRfdGFncyIsInBwX2dldF9tYXJrX3RhZ3MiLCJwcF9zZXRfdGFncyIsInBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbiIsInBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbiIsInBjdCIsInBvdCIsIm1jdCIsIm1vdCIsInBwX3Jpbml0IiwicHBfZmx1c2hfcXVldWUiLCJlbmRfd2l0aF9uZXdsaW5lIiwicHBfcHJpbnRfYXNfc2l6ZSIsInBwX3ByaW50X2FzIiwiaXNpemUiLCJwcF9wcmludF9zdHJpbmciLCJwcF9wcmludF9zdWJzdHJpbmdfYXMiLCJwcF9wcmludF9zdWJzdHJpbmciLCJwcF9wcmludF9ieXRlcyIsInBwX3ByaW50X2ludCIsImkiLCJwcF9wcmludF9mbG9hdCIsInBwX3ByaW50X2Jvb2wiLCJwcF9wcmludF9jaGFyIiwiYyIsInBwX3ByaW50X25vdGhpbmciLCJwcF9vcGVuX2hib3giLCJwcF9vcGVuX3Zib3giLCJwcF9vcGVuX2h2Ym94IiwicHBfb3Blbl9ob3Zib3giLCJwcF9vcGVuX2JveCIsInBwX3ByaW50X25ld2xpbmUiLCJwcF9wcmludF9mbHVzaCIsInBwX2ZvcmNlX25ld2xpbmUiLCJwcF9wcmludF9pZl9uZXdsaW5lIiwicHBfcHJpbnRfY3VzdG9tX2JyZWFrIiwicHBfcHJpbnRfYnJlYWsiLCJwcF9wcmludF9zcGFjZSIsInBwX3ByaW50X2N1dCIsInBwX29wZW5fdGJveCIsInBwX2Nsb3NlX3Rib3giLCJwcF9wcmludF90YnJlYWsiLCJwcF9wcmludF90YWIiLCJwcF9zZXRfdGFiIiwicHBfc2V0X21heF9ib3hlcyIsInBwX2dldF9tYXhfYm94ZXMiLCJwcF9vdmVyX21heF9ib3hlcyIsInBwX3NldF9lbGxpcHNpc190ZXh0IiwicHBfZ2V0X2VsbGlwc2lzX3RleHQiLCJwcF9saW1pdCIsInBwX3NldF9tYXhfaW5kZW50IiwicHBfZ2V0X21heF9pbmRlbnQiLCJwcF9zZXRfbWFyZ2luIiwibmV3X21heF9pbmRlbnQiLCJ2YWxpZGF0ZV9nZW9tZXRyeSIsIm1hcmdpbiIsIm1heF9pbmRlbnQiLCJjaGVja19nZW9tZXRyeSIsImdlb21ldHJ5IiwicHBfZ2V0X21hcmdpbiIsInBwX3NldF9mdWxsX2dlb21ldHJ5IiwicHBfc2V0X2dlb21ldHJ5IiwibXNnIiwicHBfc2FmZV9zZXRfZ2VvbWV0cnkiLCJwcF9nZXRfZ2VvbWV0cnkiLCJwcF91cGRhdGVfZ2VvbWV0cnkiLCJ1cGRhdGUiLCJwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMiLCJqIiwiaCIsImciLCJmMiIsInBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsInBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsImRpc3BsYXlfbmV3bGluZSIsImJsYW5rX2xpbmUiLCJkaXNwbGF5X2JsYW5rcyIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwiLCJvYyIsImRlZmF1bHRfcHBfbWFya19vcGVuX3RhZyIsImRlZmF1bHRfcHBfbWFya19jbG9zZV90YWciLCJkZWZhdWx0X3BwX3ByaW50X29wZW5fdGFnIiwiZGVmYXVsdF9wcF9wcmludF9jbG9zZV90YWciLCJ1dGZfOF9zY2FsYXJfd2lkdGgiLCJjdXJyZW50Iiwic3RvcCIsImNvdW50IiwiZGVjb2RlIiwiYWR2YW5jZSIsImFzY2lpX3dpZHRoIiwicHBfbWFrZV9mb3JtYXR0ZXIiLCJwcF9xdWV1ZSIsInN5c190b2siLCJzY2FuX3N0YWNrIiwicHBfbWFyZ2luIiwiZm9ybWF0dGVyX29mX291dF9mdW5jdGlvbnMiLCJvdXRfZnVucyIsIm1ha2VfZm9ybWF0dGVyIiwib3V0cHV0IiwiZmx1c2giLCJwcGYiLCJmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwiLCJmb3JtYXR0ZXJfb2ZfYnVmZmVyIiwicHBfYnVmZmVyX3NpemUiLCJwcF9tYWtlX2J1ZmZlciIsInN0ZGJ1ZiIsInN0ZF9mb3JtYXR0ZXIiLCJlcnJfZm9ybWF0dGVyIiwic3RyX2Zvcm1hdHRlciIsInN0ZGJ1Zl9rZXkiLCJzdHJfZm9ybWF0dGVyX2tleSIsImJ1ZmZlcmVkX291dF9zdHJpbmciLCJrZXkiLCJzdHIiLCJvZnMiLCJidWZmZXJlZF9vdXRfZmx1c2giLCJidWYiLCJzdGRfYnVmX2tleSIsImVycl9idWZfa2V5Iiwic3RkX2Zvcm1hdHRlcl9rZXkiLCJlcnJfZm9ybWF0dGVyX2tleSIsImdldF9zdGRfZm9ybWF0dGVyIiwiZ2V0X2Vycl9mb3JtYXR0ZXIiLCJnZXRfc3RyX2Zvcm1hdHRlciIsImdldF9zdGRidWYiLCJmbHVzaF9idWZmZXJfZm9ybWF0dGVyIiwiZmx1c2hfc3RyX2Zvcm1hdHRlciIsIm1ha2Vfc3luY2hyb25pemVkX2Zvcm1hdHRlciIsInN5bmNocm9uaXplZF9mb3JtYXR0ZXJfb2Zfb3V0XyIsIm1ha2Vfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsImNsZWFyX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJzb2IiLCJnZXRfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsImZsdXNoX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJpdGVtcyIsImFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSIsIml0ZW0iLCJmb3JtYXR0ZXJfb2Zfc3ltYm9saWNfb3V0cHV0X2IiLCJvcGVuX2hib3giLCJ2Iiwib3Blbl92Ym94Iiwib3Blbl9odmJveCIsIm9wZW5faG92Ym94Iiwib3Blbl9ib3giLCJjbG9zZV9ib3giLCJvcGVuX3N0YWciLCJjbG9zZV9zdGFnIiwicHJpbnRfYXMiLCJ3IiwicHJpbnRfc3RyaW5nIiwicHJpbnRfc3Vic3RyaW5nIiwicHJpbnRfc3Vic3RyaW5nX2FzIiwiYXNfbGVuIiwicHJpbnRfYnl0ZXMiLCJwcmludF9pbnQiLCJwcmludF9mbG9hdCIsInByaW50X2NoYXIiLCJwcmludF9ib29sIiwicHJpbnRfYnJlYWsiLCJwcmludF9jdXQiLCJwcmludF9zcGFjZSIsImZvcmNlX25ld2xpbmUiLCJwcmludF9mbHVzaCIsInByaW50X25ld2xpbmUiLCJwcmludF9pZl9uZXdsaW5lIiwib3Blbl90Ym94IiwiY2xvc2VfdGJveCIsInByaW50X3RicmVhayIsInNldF90YWIiLCJwcmludF90YWIiLCJzZXRfbWFyZ2luIiwiZ2V0X21hcmdpbiIsInNldF9tYXhfaW5kZW50IiwiZ2V0X21heF9pbmRlbnQiLCJzZXRfZ2VvbWV0cnkiLCJzYWZlX3NldF9nZW9tZXRyeSIsImdldF9nZW9tZXRyeSIsInVwZGF0ZV9nZW9tZXRyeSIsInNldF9tYXhfYm94ZXMiLCJnZXRfbWF4X2JveGVzIiwib3Zlcl9tYXhfYm94ZXMiLCJzZXRfZWxsaXBzaXNfdGV4dCIsImdldF9lbGxpcHNpc190ZXh0Iiwic2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCIsInNldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMiLCJnZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIiwic2V0X3ByaW50X3RhZ3MiLCJnZXRfcHJpbnRfdGFncyIsInNldF9tYXJrX3RhZ3MiLCJnZXRfbWFya190YWdzIiwic2V0X3RhZ3MiLCJwcF9wcmludF9pdGVyIiwib3B0IiwiaXRlciIsInBwX3YiLCJwcF9zZXAiLCJpc19maXJzdCIsInBwX3ByaW50X2xpc3QiLCJwcF9wcmludF9hcnJheSIsInBwX3ByaW50X3NlcSIsInNlcSIsInBwX3ByaW50X3RleHQiLCJsZWZ0IiwicmlnaHQiLCJmb3JtYXRfdGV4dCIsImZtdDYiLCJmbXQiLCJza2lwX2FuZF9jb3VudF93aGl0ZXMiLCJzcGFjZXMiLCJuZXdsaW5lcyIsImNvbmNhdCIsInZhcmlhbnQiLCJzcGFjZSIsIm5ld2xpbmUiLCJ5Iiwic2VwIiwiYnJlYWskIiwicmVwZWF0IiwiYmxvY2siLCJkc3QiLCJwcF9wcmludF9vcHRpb24iLCJub25lIiwicHBfcHJpbnRfcmVzdWx0Iiwib2siLCJlcnJvciIsImUiLCJwcF9wcmludF9laXRoZXIiLCJyIiwiY29tcHV0ZV90YWciLCJ0YWdfYWNjIiwib3V0cHV0X2Zvcm1hdHRpbmdfbGl0IiwiZm10aW5nX2xpdCIsIm91dHB1dF9hY2MiLCJhY2MiLCJwIiwiYnR5Iiwic3RycHV0X2FjYyIsImtmcHJpbnRmIiwiayIsImlrZnByaW50ZiIsImlmcHJpbnRmIiwiZnByaW50ZiIsInByaW50ZiIsImVwcmludGYiLCJrZHByaW50ZiIsImRwcmludGYiLCJrc3ByaW50ZiIsInNwcmludGYiLCJrYXNwcmludGYiLCJhc3ByaW50ZiIsImZsdXNoX3N0YW5kYXJkX2Zvcm1hdHRlcnMiLCJmcyJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLElBQUFDLHdCQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFKLEdBQUFDLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLFFBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxxQkFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLDJCQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLFlBQUFDLEdBQUFDLEdDc0JXLFNBQUM7QUFBQTtBQUFBLElBQUFDO0FBQUFBLE1EdEJaO0FBQUEsWUFBQUMsV0FBQUMsT0FBQUM7QUFBQUEsSUM2TkU7QUFBQSxJQUNBLG1EQUE4QjtBQUFBO0FBQUEsWUFBQUMsaUJBQUFGLE9BQUFHO0FBQUFBLElBK0JELDREQUF5QztBQUFBO0FBQUEsWUFBQUMsZ0JBQUFKLE9BQUFHO0FBQUFBLElBQzFDLDREQUFrRDtBQUFBO0FBQUEsWUFBQUUsa0JBQUFMLE9BSWxELCtCQUF1QjtBQUFBLFlBQUFNLGVBQUFOLE9BQUFPLE1BQUFDO0FBQUFBLElBTW5EO0FBQUEsSUFDQTtBQUFBLElBQTJCO0FBQUEsR0FDRTtBQUFBLE9BQUFDLE1EMVEvQjtBQUFBLFlBQUFDLGNBQUFWLE9BQUFHO0FBQUFBLFFBQUEsSUNvUks7QUFBQSxJQUFPLFdBQW9ELHNCQUF6QixpQ0FBMkI7QUFBQTtBQUFBLFlBQUFRLGVBQUFYLE9BQUFZLE9BQUFDO0FBQUFBLFFBQUFDLFFBRy9DLFVBQUFDLFNBQUEsVUFBQUMsU0FBQTtBQUFBLElBQ2pCO0FBQUEsSUFDQTtBQUFBLElBQXVCO0FBQUE7QUFBQSxLQUFBQyxTQUV2QjtBQUFBLEtBQUFDLGNBRWtCO0FBQUEsSUFDbEI7QUFBQSxJQUNBO0FBQUEsUUFBQUMsSUFDQTtBQUFBLElBNUI2QjtBQUFBLElBNEJpQixrQ0FDckI7QUFBQTtBQUFBLFlBQUFDLGdCQUFBcEIsT0FBQVk7QUFBQUEsUUFBQUUsUUFPUCxVQUFBRCxRQUFBLFVBQUFHLFNBQUE7QUFBQSxJQUNsQjtBQUFBLElBQTBCO0FBQUEsSUF0Q0c7QUFBQSxJQXdDRCxrQ0FDSDtBQUFBO0FBQUEsV0Q1UzNCO0FBQUEsWUFBQUssZ0JBQUFyQixPQUFBTyxRQUFBSztBQUFBQSxJQzRVb0I7QUFBQTtBQUFBO0FBQUEsWUFBQVUsVUE0Qko7QUFBQSxRQUFpQyxjQUNuQztBQUFBO0FBQUEsU0FBQUMsT0FEbUM7QUFBQSxTQUFBQztBQUFBQSxXQUczQyxTQUFBTCxHQUFBTTtBQUFBQSxZQUFnQixTQUNOO0FBQUEsZ0JBQUFDLElBRE0sT0FBQTdCLElBQUE7QUFBQSxZQUVPO0FBQUE7QUFBQSw2QkFBNkIsY0FBVztBQUFBO0FBQUEsUUFDdkQ7QUFBQSxRQUFxRDtBQUFBO0FBQUEsUUFmL0Qsc0NBQW1DO0FBQUE7QUFBQSxRQU1uQyxzQ0FBaUM7QUFBQTtBQUFBLFlBQUF5QixVQWlDckI7QUFBQSxRQUFtQyxjQUNyQywrQkE2Q047QUFBQSxZQUFBVCxVQTlDMkM7QUFBQSxRQWpHdEIsd0NBK0lyQjtBQUFBO0FBQUEsZ0JBeENKO0FBQUE7QUFBQSxZQUFBUyxVQTlFSTtBQUFBLFFBQTZCLGNBQ3pCO0FBQUEsWUFBQUEsVUFEeUIsWUFBQWYsT0FBQSxZQUFBb0IsU0FBQTtBQUFBLFFBR2pDO0FBQUEsUUFDNkQ7QUFBQTtBQUFBO0FBQUEsWUFBQUwsVUE2R2hEO0FBQUEsUUFBaUMsY0FDbkM7QUFBQSxZQUFBTSxXQURtQyxZQUFBQyxTQUc5QjtBQUFBLFFBQ2Isc0NBQ0M7QUFBQTtBQUFBLElBeEdZO0FBQUE7QUFBQSxXQUFBMUIsSUFBQSxVQUVoQix1Q0FzR0k7QUFBQTtBQUFBLFdBQUEyQixNQXhHWSxVQUFBQyxNQUFBLFVBQUFDLFNBQUE7QUFBQSxPQTlEbEI7QUFBQSxPQWRBO0FBQUEsT0FlMEM7QUFBQTtBQUFBO0FBQUE7QUFBQSxRQUFBQyxTQTZEeEI7QUFBQSxRQUFBQyxPQUFBO0FBQUEsUUFBQUMsTUFvRWhCO0FBQUEsUUFBQW5CLFNBQUE7QUFBQSxRQUFBTSxVQUNZO0FBQUEsT0FBbUMsY0FDckM7QUFBQTtBQUFBLFFBQUFBLFVBRHFDO0FBQUEsUUFBQVQsVUFBQTtBQUFBLFFBQUF1QixhQUFBO0FBQUEsT0FHN0M7QUFBQTtBQUFBLGtCQUVZO0FBQUE7QUFBQSxvQkFDTDtBQUFBLG9CQUNBLDRCQTRCTDtBQUFBO0FBQUEsVUF6QkEsY0FBNkIsbUNBeUI3QjtBQUFBLGtCQXhCVTtBQUFBO0FBQUEsb0JBQ0g7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHNCQUdGO0FBQUEsc0JBQ0EsNEJBbUJMO0FBQUE7QUFBQTtBQUFBLFVBaENGLG1DQWdDRTtBQUFBLGtCQWhDRiw2Q0FnQ0U7QUFBQTtBQUFBO0FBQUE7QUFBQSxRQUFBRCxRQXhHWTtBQUFBLFFBQUFoQixJQUFBO0FBQUEsUUFBQWtCLGtCQXNDaEI7QUFBQSxRQUFBZixVQUNZO0FBQUEsT0FBaUMsY0FDbkM7QUFBQSxXQUFBQyxTQURtQyxlQUFBRCxVQUczQztBQUFBO0FBQUEsWUFBQWdCLFFBQUEsWUFBQTFCLFVBUUk7QUFBQTtBQUFBLFNBSmUsa0JBQUEyQixNQUFBO0FBQUEsYUFBQUMsT0FBQSxZQUFBQyxPQUFBO0FBQUEsU0FFWCxnQ0FBQUYsTUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUEsTUFOUjtBQUFBLFdBQUF4QixTQVNBO0FBQUEsT0FDQTtBQUFBLGlCQUNLO0FBQUEsaUJBQ0E7QUFBQSxrRUFrREg7QUFBQTtBQUFBO0FBQUEsUUFBQTJCLEtBeEdZO0FBQUEsUUFBQVAsUUFBQTtBQUFBLFFBQUFFLG9CQU1oQjtBQUFBLE9BQ0E7QUFBQSxZQUFBZixRQWhDSTtBQUFBLFFBQW1DO0FBQUEsYUFBQUEsVUFBQSxVQUFBVCxRQUFBLFlBQUF1QixXQUFBO0FBQUEsU0FHdkM7QUFBQSxVQWpCeUI7QUFBQTtBQUFBO0FBQUEsU0FlakI7QUFBQTtBQUFBO0FBQUEsUUFBQXZCLFVBa0NSO0FBQUEsUUFBQXVCLGFBQ0E7QUFBQSxPQUtBLHFFQXdGSTtBQUFBO0FBQUEsV0FBQU8sT0F4R1ksVUFzQmhCLGlEQWtGSTtBQUFBO0FBQUE7QUFBQSxRQUFBZixhQXhHWTtBQUFBLFFBQUFDLFdBOEZGO0FBQUEsT0FDYjtBQUFBLE9BQTZCLHVEQVMxQjtBQUFBO0FBQUE7QUFBQSxPQUFBZSxjRHBiUjtBQUFBLFlBQUFDLGFBQUE3QztBQUFBQSxJQzJiRTtBQUFBLFNBQUFzQixRQUFNO0FBQUEsS0FBNkIsWUFDekI7QUFBQTtBQUFBLE1BQUFBLFVBRHlCO0FBQUEsTUFBQWYsT0FBQTtBQUFBLE1BQUFvQixTQUFBO0FBQUEsTUFBQTFCLFFBQUE7QUFBQSxNQUFBNkMsZ0JBR2pDO0FBQUEsVUFyWmU7QUFBQSxVQXNaTTtBQUFBO0FBQUEsS0FDYjtBQUFBLE1BQ0k7QUFBQSxrRUFRVDtBQUFBLFNBQUF2QyxTQUx3QjtBQUFBLEtBRXZCO0FBQUEsS0FBZ0M7QUFBQTtBQUFBLEdBR2pDO0FBQUEsWUFBQXdDLGdCQUFBL0MsT0FBQWdEO0FBQUFBLElBSXlCO0FBQUEsSUFBb0IsMEJBQW9CO0FBQUE7QUFBQSxZQUFBQyxrQkFBQWpELE9BQUFPLE1BQUFKO0FBQUFBLElBS0ksc0RBQUU7QUFBQTtBQUFBLE9BQUErQyxVRGxkOUU7QUFBQSxZQUFBQyxzQkFBQUM7QUFBQUEsSUNtZUU7QUFBQSxJQUVBLHFFQUFnRDtBQUFBO0FBQUEsWUFBQUMsU0FBQXJELE9BQUEwQztBQUFBQSxRQUFBcEIsUUFZMUM7QUFBQSxJQUFpQyxZQUM3QjtBQUFBO0FBQUEsS0FBQUEsVUFENkI7QUFBQSxLQUFBZ0MsYUFBQTtBQUFBLEtBQUFDLGFBQUE7QUFBQSxLQUFBaEQsT0FHckM7QUFBQSxJQUVBLDJCQUNFLHNDQWVJO0FBQUEsUUFBQWUsVUFiSjtBQUFBO0FBQUE7QUFBQTtBQUFBLFFBT0U7QUFBQSxhQUFBekIsTUFBZTtBQUFBLFNBQytDO0FBQUEsU0FDNUQ7QUFBQTtBQUFBLFFBRkY7QUFBQTtBQUFBO0FBQUEsUUFMQTtBQUFBLGFBQUFBLElBQVc7QUFBQSxTQUNtRDtBQUFBLFNBQzVEO0FBQUE7QUFBQSxRQUZGO0FBQUE7QUFBQSxHQVdFO0FBQUEsWUFBQTJELFVBQUF4RCxPQUFBeUQsR0FBQXhEO0FBQUFBLElBTVI7QUFBQSxJQUFzQixNQUNaO0FBQUEsUUFBQXlELE9BQ1Y7QUFBQSxJQUNBLGlEQUFtQztBQUFBO0FBQUEsWUFBQUMsZ0JBQUEzRCxPQUFBaUIsUUFBQTJDO0FBQUFBLElBT25DO0FBQUEsSUFDQTtBQUFBLFNBQUFyRCxTQUNFLGlCQUFBbUQsT0FDQTtBQUFBLEtBQ0EsZ0NBRXlDO0FBQUE7QUFBQSxZQUQzQztBQUFBO0FBQUEsUUFBQXZELElBQ0ssV0FBQUksT0FsRU07QUFBQSxJQUMrQix3Q0FpRUM7QUFBQTtBQUFBLE9BQUFzRCxPRDVoQjdDO0FBQUEsWUFBQUMsYUFBQTlELE9BQUFZO0FBQUFBLFFBQUEsSUNvaUJFO0FBQUE7QUFBQSxLQUNBO0FBQUEsTUFHSTtBQUFBLE1BQ0E7QUFBQSxNQUFxQjtBQUFBO0FBQUEsS0FFdkI7QUFBQTtBQUFBO0FBQUE7QUFBQSxhQVBGO0FBQUE7QUFBQSxHQVFHO0FBQUEsWUFBQW1ELGFBQUEvRCxPQUFBNEI7QUFBQUEsSUFLSDtBQUFBLEtBRUU7QUFBQSxLQUNBO0FBQUE7QUFBQSxZQUVGO0FBQUE7QUFBQSxRQUFBM0IsUUFDRTtBQUFBLElBQ0EsNkNBQXdEO0FBQUE7QUFBQSxZQUFBK0QsY0FBQWhFLE9BQUFZO0FBQUFBLElBSzFELGNBQ0U7QUFBQSxZQUNGO0FBQUE7QUFBQSxTQUFBVSxRQUNRO0FBQUEsS0FBZ0M7QUFBQSxVQUFBTSxXQUFBO0FBQUEsTUFHcEMsc0NBQWlDO0FBQUE7QUFBQSxhQUZ6QjtBQUFBO0FBQUE7QUFBQSxhQUZaO0FBQUE7QUFBQSxHQUlxQztBQUFBLFlBQUFxQyxrQkFBQWpFLE9BQUF5RCxHQUVQLHdCQUF3QjtBQUFBLFlBQUFTLGlCQUFBbEUsT0FBQXlELEdBQ3pCLHdCQUF1QjtBQUFBLFlBQUFVLGtCQUFBbkUsT0FBQVksT0FDckIsaUJBQW1CO0FBQUEsWUFBQXdELGlCQUFBcEUsT0FBQVksT0FDcEIsaUJBQWtCO0FBQUEsWUFBQXlELFlBQUFyRSxPQUFBeUQ7QUFBQUEsSUFFaEQ7QUFBQSxJQUF5QixpQ0FBMEI7QUFBQTtBQUFBLFlBQUFhLCtCQUFBdEUsT0FBQVk7QUFBQUEsSUFJTjtBQUFBLEdBSzlDO0FBQUEsWUFBQTJELCtCQUFBdkUsT0FBQVk7QUFBQUEsUUFBQTRELE1BR21DLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBO0FBQUEsSUFNbEM7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQTtBQUFBLEdBQStCO0FBQUEsWUFBQUMsU0FBQTVFO0FBQUFBLElBN1gvQjtBQUFBLElBQTBCO0FBQUEsSUFDMUI7QUFBQSxJQWtZQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUErQjtBQUFBLElBRS9CO0FBQUEsSUFDQTtBQUFBLElBNUUwQixtQ0E2RUw7QUFBQTtBQUFBLFlBQUE2RSxlQUFBN0UsT0FBQThFO0FBQUFBLElBR3JCO0FBQUEscUJBQUFsRSxPQUFxQiw4QkFBc0I7QUFBQSxJQUt0QjtBQUFBO0FBQUEsTUFJckI7QUFBQSxNQUNBO0FBQUEsTUFBa0IscUJBQ087QUFBQSxNQUN6QixzQkFBYztBQUFBO0FBQUEsS0FMWjtBQUFBO0FBQUEsR0FLWTtBQUFBLFlBQUFtRSxpQkFBQS9FLE9BQUFPLE1BQUFKO0FBQUFBLFFBQUEsSUFVZDtBQUFBLGVBQ0sscUNBQThCO0FBQUE7QUFBQSxZQUFBNkUsWUFBQWhGLE9BQUFpRixPQUFBOUU7QUFBQUEsSUFJTyx3Q0FBRTtBQUFBO0FBQUEsWUFBQStFLGdCQUFBbEYsT0FBQUc7QUFBQUEsUUFBQThFLFFBSTFCO0FBQUEsSUFKd0Isd0NBSUc7QUFBQTtBQUFBLFlBQUFFLHNCQUFBcEQsS0FBQUQsS0FBQTlCLE9BQUFPLE1BQUF5QjtBQUFBQSxRQUFBLElBRzdDO0FBQUE7QUFBQSxRQUFBL0IsUUE1TEE7QUFBQSxJQUM4RCxxREE0TEE7QUFBQTtBQUFBLFlBQUFtRixtQkFBQXJELEtBQUFELEtBQUE5QixPQUFBRztBQUFBQSxRQUFBVSxRQWxackI7QUFBQSxJQXNaekMsdURBQTZDO0FBQUE7QUFBQSxZQUFBd0UsZUFBQXJGLE9BQUFHO0FBQUFBO0FBQUFBLEtBQUFBLE1BR1Y7QUFBQSxLQUFBOEUsUUFBbUI7QUFBQSxJQWZaLDBDQWVZO0FBQUE7QUFBQSxZQUFBSyxhQUFBdEYsT0FBQXVGO0FBQUFBLElBR1AsT0FBaUIsdUJBQWpCLDZCQUFpQjtBQUFBO0FBQUEsWUFBQUMsZUFBQXhGLE9BQUExQjtBQUFBQSxJQUdmLE9BQW1CLHVCQUFuQix5QkFBbUI7QUFBQTtBQUFBLFlBQUFtSCxjQUFBekYsT0FBQXlEO0FBQUFBLElBR3BCLE9BQWtCLHVCQUFsQix5QkFBa0I7QUFBQTtBQUFBLFlBQUFpQyxjQUFBMUYsT0FBQTJGO0FBQUFBLFFBQUF4RixJQUk5QztBQUFBLElBNUJzQixvQ0E0Qkw7QUFBQTtBQUFBLFlBQUF5RixpQkFBQTVGLE9BQUFZLE9BRU4sU0FBRTtBQUFBLFlBQUFpRixhQUFBN0YsT0FBQVksT0FJUCxtQ0FBK0I7QUFBQSxZQUFBa0YsYUFBQTlGLE9BQUFpQjtBQUFBQSxJQUMzQix3Q0FBb0M7QUFBQTtBQUFBLFlBQUE4RSxjQUFBL0YsT0FBQWlCO0FBQUFBLElBRW5DLHdDQUFxQztBQUFBO0FBQUEsWUFBQStFLGVBQUFoRyxPQUFBaUI7QUFBQUEsSUFDcEMsd0NBQXNDO0FBQUE7QUFBQSxZQUFBZ0YsWUFBQWpHLE9BQUFpQjtBQUFBQSxJQUN6Qyx3Q0FBbUM7QUFBQTtBQUFBLFlBQUFpRixpQkFBQWxHLE9BQUFZO0FBQUFBLElBWWhFO0FBQUEsSUFBMkMsK0JBQXVCO0FBQUE7QUFBQSxZQUFBdUYsZUFBQW5HLE9BQUFZO0FBQUFBLElBRWxFO0FBQUEsSUFBNEMsK0JBQXVCO0FBQUE7QUFBQSxZQUFBd0YsaUJBQUFwRyxPQUFBWTtBQUFBQSxRQUFBLElBS25FO0FBQUEsZUFDRSwyQ0FBMEU7QUFBQTtBQUFBLFlBQUF5RixvQkFBQXJHLE9BQUFZO0FBQUFBLFFBQUEsSUFLNUU7QUFBQSxlQUNFLDJDQUN5RDtBQUFBO0FBQUEsWUFBQTBGLHNCQUFBdEcsT0FBQWtDLE1BQUFEO0FBQUFBO0FBQUFBLEtBQUFuQixRQU0zRDtBQUFBLEtBQUFELFFBQUE7QUFBQSxLQUFBRyxTQUFBO0FBQUEsU0FDQTtBQUFBO0FBQUE7QUFBQSxLQUFBVCxPQUNFO0FBQUEsS0FBQU4sUUFDQTtBQUFBLFNBSUk7QUFBQSxLQUFBMEIsU0FGRjtBQUFBLElBS0Ysb0RBQXlCO0FBQUE7QUFBQSxZQUFBNEUsZUFBQXZHLE9BQUFhLE9BQUFFO0FBQUFBLElBTzNCO0FBQUEsZ0VBQ2dEO0FBQUE7QUFBQSxZQUFBeUYsZUFBQXhHLE9BQUFZLE9BUXBCLGtDQUF3QjtBQUFBLFlBQUE2RixhQUFBekcsT0FBQVksT0FDMUIsa0NBQXdCO0FBQUEsWUFBQThGLGFBQUExRyxPQUFBWTtBQUFBQSxJQUtsRDtBQUFBLFlBQ0E7QUFBQTtBQUFBLElBR0UsNkRBQTBCO0FBQUE7QUFBQSxZQUFBK0YsY0FBQTNHLE9BQUFZO0FBQUFBLFFBQUEsSUFLNUI7QUFBQTtBQUFBLGFBQ0E7QUFBQTtBQUFBLE1BR0c7QUFBQSxNQUEwQjtBQUFBO0FBQUE7QUFBQTtBQUFBLGNBSDdCO0FBQUE7QUFBQTtBQUFBLGFBREE7QUFBQTtBQUFBLEdBTUc7QUFBQSxZQUFBZ0csZ0JBQUE1RyxPQUFBYSxPQUFBRTtBQUFBQSxRQUFBLElBS0g7QUFBQTtBQUFBLFFBQUFSLE9BQ0UsaUJBQUFtRCxPQUNBO0FBQUEsSUFDQSxnQ0FBeUI7QUFBQTtBQUFBLFlBQUFtRCxhQUFBN0csT0FBQVksT0FHRCxtQ0FBeUI7QUFBQSxZQUFBa0csV0FBQTlHLE9BQUFZO0FBQUFBLFFBQUEsSUFHbkQ7QUFBQTtBQUFBLElBRUUsOENBQTBCO0FBQUE7QUFBQSxZQUFBbUcsaUJBQUEvRyxPQUFBbUI7QUFBQUEsUUFBQSxJQVVDO0FBQUE7QUFBQSxHQUFxQztBQUFBLFlBQUE2RixpQkFBQWhILE9BQUFZLE9BR3BDLGlCQUFrQjtBQUFBLFlBQUFxRyxrQkFBQWpILE9BQUFZLE9BRWpCO0FBQUEsR0FBd0M7QUFBQSxZQUFBc0cscUJBQUFsSCxPQUFBRyxHQUd0Qyx3QkFBc0I7QUFBQSxZQUFBZ0gscUJBQUFuSCxPQUFBWSxPQUNyQixpQkFBaUI7QUFBQSxZQUFBd0csU0FBQWpHLEdBS25ELHNDQUErQztBQUFBLFlBQUFrRyxrQkFBQXJILE9BQUFtQjtBQUFBQSxRQUFBLElBZ0IvQztBQUFBO0FBQUEsUUFBQUEsTUFDRSx3QkFaRjtBQUFBO0FBQUEsUUFBQUEsSUFDVTtBQUFBLElBQ1I7QUFBQSxJQUNBO0FBQUEsSUFDQSxzQkFRaUQ7QUFBQTtBQUFBLFlBQUFtRyxrQkFBQXRILE9BQUFZLE9BR3BCLGdCQUFtQjtBQUFBLFlBQUEyRyxjQUFBdkgsT0FBQW1CO0FBQUFBLFFBQUEsSUFHbEQ7QUFBQTtBQUFBLFFBQUFBLE1BQ1U7QUFBQSxJQUNSO0FBQUEsSUFDQTtBQUFBLFNBQUFxRyxpQkFHTztBQUFBO0FBQUE7QUFBQSxVQUlJO0FBQUEsTUFBQUEsaUJBQVI7QUFBQSxJQUdILCtDQUFzQztBQUFBO0FBQUE7QUFBQSxRRDkwQjFDO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsa0JBQUE3RztBQUFBQSxRQUFBOEcsU0NvMUJzQixVQUFBQyxhQUFBO0FBQUEsSUFDcEI7QUFBQTtBQUFBLGVBTVU7QUFBQTtBQUFBLFlBQUFDLGVBQUFDO0FBQUFBLElBR0osbURBRVk7QUFBQTtBQUFBLFlBQUFDLGNBQUE5SCxPQUFBWSxPQUVTLGdCQUFlO0FBQUEsWUFBQW1ILHFCQUFBL0gsT0FBQVk7QUFBQUEsUUFBQThHLFNBRW5CLFVBQUFDLGFBQUE7QUFBQSxJQUN2QjtBQUFBLElBQ0E7QUFBQSxJQUFrQztBQUFBLEdBQ2hDO0FBQUEsWUFBQUssZ0JBQUFoSSxPQUFBMkgsWUFBQUQ7QUFBQUE7QUFBQUEsS0FBQUcsV0FHRjtBQUFBLEtBQUF2RyxRQUNNO0FBQUEsSUFBMEIsbUJBSTlCLDRDQUFtQztBQUFBO0FBQUEsS0FBQTJHLE1BSkw7QUFBQSxTQUVOO0FBQUEsSUFBa0M7QUFBQSxHQUV2QjtBQUFBLFlBQUFDLHFCQUFBbEksT0FBQTJILFlBQUFEO0FBQUFBLFFBQUFHLFdBR3JDO0FBQUEsSUFDTTtBQUFBLGNBSUo7QUFBQSxlQUFtQztBQUFBO0FBQUEsWUFBQU0sZ0JBQUFuSSxPQUFBWSxPQUdxQywrQkFBRTtBQUFBLFlBQUF3SCxtQkFBQXBJLE9BQUFxSTtBQUFBQSxRQUFBUixXQUc3RDtBQUFBLElBQ1ksT0FBaUIsNEJBQWpCLDZCQUFpQjtBQUFBO0FBQUEsWUFBQVMsK0JBQUF0SSxPQUFBWTtBQUFBQTtBQUFBQSxLQUFBMkgsSUFHWDtBQUFBLEtBQUFoRCxJQUFBO0FBQUEsS0FBQWlELElBQUE7QUFBQSxLQUFBQyxJQUFBO0FBQUEsS0FBQUMsS0FBQTtBQUFBLEtBQUFwSyxJQUFBO0FBQUEsSUFRakM7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBO0FBQUEsR0FBd0I7QUFBQSxZQUFBcUssK0JBQUEzSSxPQUFBWTtBQUFBQSxJQUVvQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEdBTzdDO0FBQUEsWUFBQWdJLCtCQUFBNUksT0FBQTFCLEdBQUFtSyxHQUtDLGVBQTBCO0FBQUEsR0FBdUI7QUFBQSxZQUFBSSwrQkFBQTdJLE9BQUFZLE9BR2pEO0FBQUEsR0FBeUM7QUFBQSxZQUFBa0ksZ0JBQUE5SSxPQUFBWTtBQUFBQSxJQUlaLHdDQUE2QjtBQUFBO0FBQUEsT0FBQW1JLGFBRzNDO0FBQUEsWUFBQUMsZUFBQWhKLE9BQUFtQjtBQUFBQSxRQUFBQSxJQUVmO0FBQUE7QUFBQTtBQUFBO0FBQUEsS0FDQSxZQUFnQiw4Q0FJYjtBQUFBLEtBRkQ7QUFBQSxTQUFBQSxNQUFtQztBQUFBO0FBQUE7QUFBQSxHQUVsQztBQUFBLFlBQUE4SCw2QkFBQWpKLE9BQUFrSjtBQUFBQSxRQUFBLElBU29CO0FBQUEsSUFBbUIsOEJBQW5CO0FBQUEsSUFDdkIscUJBQUF0SSxPQUFpQyxnQ0FBUTtBQUFBLElBQ0ksd0JBQXJCO0FBQUEsSUFDbUIsd0JBQXBCO0FBQUEsSUFDb0Isd0JBQXBCO0FBQUEsSUFBb0I7QUFBQTtBQUFBLE9BQUFILFFEMTdCN0M7QUFBQSxZQUFBMEkseUJBQUF2STtBQUFBQSxJQ2s4QitCLDRCQUV0QjtBQUFBLFFBQUFULElBRnNCLGNBQ0w7QUFBQSxJQUFPLG9DQUN0QjtBQUFBO0FBQUEsWUFBQWlKLDBCQUFBeEk7QUFBQUEsSUFDcUIsNEJBRXZCO0FBQUEsUUFBQVQsSUFGdUIsY0FDTDtBQUFBLElBQU8sc0NBQ3ZCO0FBQUE7QUFBQSxZQUFBa0osMEJBQUEsR0R2OEJYO0FBQUEsWUFBQUMsMkJBQUE7QUFBQSxZQUFBQyxtQkFBQXBKLEdBQUFxSixTQUFBMUg7QUFBQUEsUUFBQTJILE9DbzlCRSxtQkFBQUMsUUFBQSxHQUFBRixZQUFBO0FBQUE7QUFBQSxLQU5FLHNCQUF3QjtBQUFBO0FBQUEsTUFBQUcsU0FFVDtBQUFBLE1BQUFDLFVBQ0M7QUFBQSxNQUFBSixZQUNkO0FBQUEsTUFBQUUsVUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEdBRXFCO0FBQUEsWUFBQUcsWUFBQSxHQUFBakosT0FBQWtCLEtBRUssV0FBRztBQUFBLFdBaERBO0FBQUEsWUFBQWdJLGtCQUFBeEwsR0FBQW1LLEtBQUFELEdBQUFqRCxHQUFBZ0Q7QUFBQUE7QUFBQUEsS0FBQXdCLFdBc0RsQjtBQUFBLEtBQUFDLFVBQ2Y7QUFBQSxJQUVBO0FBQUEsUUFBQUMsYUFDaUI7QUFBQSxJQUNqQjtBQUFBLElBQ0E7QUFBQTtBQUFBLFNBU2tCO0FBQUE7QUFBQSxTQUREO0FBQUEsU0FEQztBQUFBLEtBQUFDLFlBUDRDO0FBQUEsSUFNMUM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHFCQUFlO0FBQUE7QUFBQSxZQUFBQywyQkFBQUM7QUFBQUEsSUFpQ25DO0FBQUEsNkVBS3FCO0FBQUE7QUFBQSxZQUFBQyxlQUFBQyxRQUFBQztBQUFBQTtBQUFBQSxLQUFBQztBQUFBQSxPQU1YO0FBQUE7QUFBQTtBQUFBLHFCRHBoQ1o7QUFBQTtBQUFBO0FBQUEsSUNxaEMyQyxzQkFBbkI7QUFBQSxJQUNpQixzQkFBbEI7QUFBQSxJQUNrQixzQkFBbEI7QUFBQSxJQUNyQjtBQUFBLEdBQUc7QUFBQSxZQUFBQyx5QkFBQXZCO0FBQUFBLFFBQUEsSUFLWTtBQUFBLElBQXFCO0FBQUEsK0JBQXJCO0FBQUEsc0JBQUF0SSxPQUFpQyxnQ0FBUSxHQUFDO0FBQUE7QUFBQSxZQUFBOEosb0JBQUFqSDtBQUFBQSxRQUFBLElBSzFDO0FBQUEsSUFBd0I7QUFBQSwrQkFBeEIsb0NEbGlDakIsV0NraUNnRDtBQUFBO0FBQUEsT0FBQWtILGlCQTVIYjtBQUFBLFlBQUFDLGVBQUFoSztBQUFBQSxJQW1JWCxrREFBNEI7QUFBQTtBQUFBO0FBQUEsSUFBQWlLLFNBR3ZDO0FBQUEsSUFBQUMsZ0JBSU87QUFBQSxJQUFBQyxnQkFDQTtBQUFBLElBQUFDLGdCQUNBO0FBQUEsSUFBQUMsYUFLSDtBQUFBLEdBQ1Q7QUFBQTtBQUFBLElBQUFDO0FBQUFBLE1BRWdCO0FBQUE7QUFBQTtBQUFBLGlCQUFBdEs7QUFBQUEsU0FDRixPQUFvQjtBQUFBLGtCQUFwQiw2Q0FBb0I7QUFBQTtBQUFBLEdBQ2xDO0FBQUEsWUFBQXVLLG9CQUFBQyxLQUFBQyxLQUFBQyxLQUFBeEo7QUFBQUEsUUFBQSxJQUdlO0FBQUEsSUFBb0IscURBQVk7QUFBQTtBQUFBLFlBQUF5SixtQkFBQXJDLElBQUFrQyxLQUFBeEs7QUFBQUE7QUFBQUEsS0FBQTRLLE1BRzNDO0FBQUEsS0FBQTFKLE1BQ0E7QUFBQSxLQUFBdUosTUFDQTtBQUFBLElBQ1Y7QUFBQSxJQUNBO0FBQUEsSUFBZSx1Q0FDQztBQUFBO0FBQUE7QUFBQSxJQUFBSTtBQUFBQSxNQUVBO0FBQUE7QUFBQTtBQUFBLGlCQUFBN0ssT0FBOEIsa0RBQTRCO0FBQUEsSUFBQThLO0FBQUFBLE1BQzFEO0FBQUE7QUFBQTtBQUFBLGlCQUFBOUssT0FBOEIsa0RBQTRCO0FBQUEsSUFBQStLO0FBQUFBLE1BRXBEO0FBQUE7QUFBQTtBQUFBLGlCQUFBL0s7QUFBQUE7QUFBQUEsVUFBQSxJQUVGO0FBQUEsVUFBQTRKO0FBQUFBLFlBQWxCO0FBQUE7QUFBQSxlQUFrQjtBQUFBO0FBQUEsMEJBQ2hCO0FBQUEsMEJEL2tDTjtBQUFBO0FBQUE7QUFBQSxTQ2lsQzJDLHNCQUFuQjtBQUFBLFNBQ2lCLHNCQUFsQjtBQUFBLFNBQ2tCLHNCQUFsQjtBQUFBLFNBQ3JCO0FBQUEsNkJBQWU7QUFBQSxTQUFvQjtBQUFBLFFBQ2hDO0FBQUEsR0FDRztBQUFBO0FBQUEsSUFBQW9CO0FBQUFBLE1BRWdCO0FBQUE7QUFBQTtBQUFBLGlCQUFBaEw7QUFBQUE7QUFBQUEsVUFBQSxJQUVGO0FBQUEsVUFBQTRKO0FBQUFBLFlBQWxCO0FBQUE7QUFBQSxlQUFrQjtBQUFBO0FBQUEsMEJBQ2hCO0FBQUEsMEJEM2xDTjtBQUFBO0FBQUE7QUFBQSxTQzZsQzJDLHNCQUFuQjtBQUFBLFNBQ2lCLHNCQUFsQjtBQUFBLFNBQ2tCLHNCQUFsQjtBQUFBLFNBQ3JCO0FBQUEsNkJBQWU7QUFBQSxTQUFvQjtBQUFBLFFBQ2hDO0FBQUEsR0FDRztBQUFBLFlBQUFxQixrQkFBQWpMO0FBQUFBLElBRW1CLDBEQUF5QjtBQUFBO0FBQUEsWUFBQWtMLGtCQUFBbEw7QUFBQUEsSUFDekIsMERBQXlCO0FBQUE7QUFBQSxZQUFBbUwsa0JBQUFuTDtBQUFBQSxJQUN6QiwwREFBeUI7QUFBQTtBQUFBLFlBQUFvTCxXQUFBcEw7QUFBQUEsSUFDaEMsbURBQWtCO0FBQUE7QUFBQSxZQUFBcUwsdUJBQUFULEtBQUFoQjtBQUFBQSxJQU9wQztBQUFBLFFBQUFySyxJQUNRO0FBQUEsSUFDUjtBQUFBLElBQWdCO0FBQUEsR0FDZjtBQUFBLFlBQUErTCxvQkFBQXRMO0FBQUFBO0FBQUFBLEtBQUFpSyxTQUlZO0FBQUEsS0FBQUcsZ0JBQ087QUFBQSxJQUNwQixvREFBMkM7QUFBQTtBQUFBLFlBQUFtQiw0QkFBQTdCLFFBQUFDO0FBQUFBLElBRzNDO0FBQUE7QUFBQTtBQUFBLHNCQUFBM0o7QUFBQUE7QUFBQUEsZUFBQTRLLE1BQ1k7QUFBQSxtQkFFVjtBQUFBLHVCQUFBbEIsU0FBQSxTQURjO0FBQUEsdUJBQUFDLFFBQUEzSjtBQUFBQSxtQkFBQSxJQUVtQjtBQUFBLGVBQS9CLG1CQUFPO0FBQUEsZUFDUDtBQUFBLGVBQWdCLDJCQUNSO0FBQUE7QUFBQSxjQUVWLHdDQUE2QjtBQUFBLGVBQUM7QUFBQTtBQUFBLFlBQUF3TCwrQkFBQWxEO0FBQUFBLFFBQUEsSUFHSjtBQUFBLElBQXFCO0FBQUEsK0JBQXJCO0FBQUEsc0JBQUF0SSxPQUFpQyxnQ0FBUSxHQUFDO0FBQUE7QUFBQSxZQUFBeUwsNEJBQUF6TCxPQTJCdEUsY0FBaUM7QUFBQSxZQUFBMEwsNkJBQUFDLEtBR2pDLHFCQUFrQztBQUFBLFlBQUFDLDJCQUFBRDtBQUFBQSxJQUdsQyx5Q0FBcUM7QUFBQTtBQUFBLFlBQUFFLDZCQUFBRjtBQUFBQSxRQUFBRyxRQUd6QjtBQUFBLElBQ1o7QUFBQSxJQUFnQztBQUFBLEdBQzNCO0FBQUEsWUFBQUMseUJBQUFKLEtBQUFLLE1BR0w7QUFBQSxHQUFvRTtBQUFBLFlBQUFDLCtCQUFBTjtBQUFBQSxhQUFBak8sRUFBQTZCLEdBQUFvRixHQUFBcEU7QUFBQUEsS0FRdEIsT0FBa0I7QUFBQSx1QkFBbEIsdUNBQWtCO0FBQUE7QUFBQSxhQUFBc0gsRUFBQTdILE9BSjlEO0FBQUEsYUFBQTRILEVBQUE1SCxPQUVBO0FBQUEsYUFBQTJFLEVBQUFwRSxHQUlBO0FBQUEsYUFBQW9ILEVBQUFwSCxHQUVBO0FBQUEsSUFPRix1Q0FBMkI7QUFBQTtBQUFBLFlBQUEyTCxVQUFBQztBQUFBQSxJQVNFLE9BQTJCO0FBQUEsYUFBM0IsdURBQTZCO0FBQUE7QUFBQSxZQUFBQyxVQUFBRDtBQUFBQSxJQUM3QixPQUEyQjtBQUFBLGFBQTNCLHVEQUE2QjtBQUFBO0FBQUEsWUFBQUUsV0FBQUY7QUFBQUEsSUFDM0IsT0FBMkI7QUFBQSxhQUEzQix1REFBNkI7QUFBQTtBQUFBLFlBQUFHLFlBQUFIO0FBQUFBLElBQzNCLE9BQTJCO0FBQUEsYUFBM0IsdURBQTZCO0FBQUE7QUFBQSxZQUFBSSxTQUFBSjtBQUFBQSxJQUNuQyxPQUEyQixZQUEzQix1REFBNkI7QUFBQTtBQUFBLFlBQUFLLFVBQUFMO0FBQUFBLElBQzNCLE9BQTJCO0FBQUEsYUFBM0IsdURBQTZCO0FBQUE7QUFBQSxZQUFBTSxVQUFBTjtBQUFBQSxJQUM3QixPQUEyQjtBQUFBLGFBQTNCLHVEQUE2QjtBQUFBO0FBQUEsWUFBQU8sV0FBQVA7QUFBQUEsSUFDM0IsT0FBMkI7QUFBQSxhQUEzQix1REFBNkI7QUFBQTtBQUFBLFlBQUFRLFNBQUF0SSxPQUFBdUk7QUFBQUEsUUFBQXhOLFFBQy9CO0FBQUEsSUF2a0JhLHdDQXVrQmtCO0FBQUE7QUFBQSxZQUFBeU4sYUFBQVY7QUFBQUEsSUFDekIsT0FBMkI7QUFBQSxhQUEzQix1REFBNkI7QUFBQTtBQUFBLFlBQUFXLGdCQUFBM0wsS0FBQUQsS0FBQWlMO0FBQUFBLElBRWxDLE9BQTJCO0FBQUEsdUJBQTNCLHVEQUE2QjtBQUFBO0FBQUEsWUFBQVksbUJBQUE1TCxLQUFBRCxLQUFBOEwsUUFBQWI7QUFBQUEsSUFFM0IsT0FBMkI7QUFBQTtBQUFBO0FBQUEsYUFBM0I7QUFBQTtBQUFBLGVBQW9DO0FBQUE7QUFBQSxZQUFBYyxZQUFBZDtBQUFBQSxJQUNuQyxPQUEyQjtBQUFBLGFBQTNCLHVEQUE2QjtBQUFBO0FBQUEsWUFBQWUsVUFBQWY7QUFBQUEsSUFDakMsT0FBMkI7QUFBQSxhQUEzQix1REFBNkI7QUFBQTtBQUFBLFlBQUFnQixZQUFBaEI7QUFBQUEsSUFDekIsT0FBMkI7QUFBQSxhQUEzQix1REFBNkI7QUFBQTtBQUFBLFlBQUFpQixXQUFBakI7QUFBQUEsSUFDL0IsT0FBMkI7QUFBQSxhQUEzQix1REFBNkI7QUFBQTtBQUFBLFlBQUFrQixXQUFBbEI7QUFBQUEsSUFDN0IsT0FBMkI7QUFBQSxhQUEzQix1REFBNkI7QUFBQTtBQUFBLFlBQUFtQixZQUFBbkIsR0FBQVM7QUFBQUEsSUFDekIsT0FBMkI7QUFBQSxhQUEzQiwwREFBK0I7QUFBQTtBQUFBLFlBQUFXLFVBQUFwQjtBQUFBQSxJQUNyQyxPQUEyQjtBQUFBLGFBQTNCLHVEQUE2QjtBQUFBO0FBQUEsWUFBQXFCLFlBQUFyQjtBQUFBQSxJQUN6QixPQUEyQjtBQUFBLGFBQTNCLHVEQUE2QjtBQUFBO0FBQUEsWUFBQXNCLGNBQUF0QjtBQUFBQSxJQUN6QixPQUEyQjtBQUFBLGFBQTNCLHVEQUE2QjtBQUFBO0FBQUEsWUFBQXVCLFlBQUF2QjtBQUFBQSxJQUNqQyxPQUEyQjtBQUFBLGFBQTNCLHVEQUE2QjtBQUFBO0FBQUEsWUFBQXdCLGNBQUF4QjtBQUFBQSxJQUN6QixPQUEyQjtBQUFBLGFBQTNCLHVEQUE2QjtBQUFBO0FBQUEsWUFBQXlCLGlCQUFBekI7QUFBQUEsSUFDdkIsT0FBMkI7QUFBQSxhQUEzQix1REFBNkI7QUFBQTtBQUFBLFlBQUEwQixVQUFBMUI7QUFBQUEsSUFFM0MsT0FBMkI7QUFBQSxhQUEzQix1REFBNkI7QUFBQTtBQUFBLFlBQUEyQixXQUFBM0I7QUFBQUEsSUFDM0IsT0FBMkI7QUFBQSxhQUEzQix1REFBNkI7QUFBQTtBQUFBLFlBQUE0QixhQUFBNUIsR0FBQVM7QUFBQUEsSUFDdkIsT0FBMkI7QUFBQSxhQUEzQiwwREFBK0I7QUFBQTtBQUFBLFlBQUFvQixRQUFBN0I7QUFBQUEsSUFFM0MsT0FBMkIsV0FBM0IsdURBQTZCO0FBQUE7QUFBQSxZQUFBOEIsVUFBQTlCO0FBQUFBLElBQ3pCLE9BQTJCO0FBQUEsYUFBM0IsdURBQTZCO0FBQUE7QUFBQSxZQUFBK0IsV0FBQS9CO0FBQUFBLElBRTNCLE9BQTJCO0FBQUEsYUFBM0IsdURBQTZCO0FBQUE7QUFBQSxZQUFBZ0MsV0FBQWhDO0FBQUFBLFFBQUEvTSxRQUM3QjtBQUFBLElBM1lKO0FBQUEsR0EyWWlDO0FBQUEsWUFBQWdQLGVBQUFqQztBQUFBQSxJQUVyQixPQUEyQjtBQUFBLGFBQTNCLHVEQUE2QjtBQUFBO0FBQUEsWUFBQWtDLGVBQUFsQztBQUFBQSxRQUFBL00sUUFDN0I7QUFBQSxJQWxiUjtBQUFBLEdBa2JxQztBQUFBLFlBQUFrUCxhQUFBdkgsWUFBQUQ7QUFBQUEsSUFHcEQsT0FBMkI7QUFBQSxhQUEzQjtBQUFBO0FBQUEsb0JBQStDO0FBQUE7QUFBQSxZQUFBeUgsa0JBQUF4SCxZQUFBRDtBQUFBQSxJQUUxQyxPQUEyQjtBQUFBLGFBQTNCO0FBQUE7QUFBQSxvQkFBK0M7QUFBQTtBQUFBLFlBQUEwSCxhQUFBckM7QUFBQUEsSUFDakMsT0FBMkI7QUFBQSxhQUEzQix1REFBNkI7QUFBQTtBQUFBLFlBQUFzQyxnQkFBQXRDO0FBQUFBLElBQ3ZCLE9BQTJCO0FBQUEsYUFBM0IsdURBQTZCO0FBQUE7QUFBQSxZQUFBdUMsY0FBQXZDO0FBQUFBLElBRWpDLE9BQTJCO0FBQUEsYUFBM0IsdURBQTZCO0FBQUE7QUFBQSxZQUFBd0MsY0FBQXhDO0FBQUFBLFFBQUEvTSxRQUM3QjtBQUFBLElBM2RQO0FBQUEsR0EyZG9DO0FBQUEsWUFBQXdQLGVBQUF6QztBQUFBQSxJQUMzQixPQUEyQjtBQUFBLGFBQTNCLHVEQUE2QjtBQUFBO0FBQUEsWUFBQTBDLGtCQUFBMUM7QUFBQUEsSUFFdkIsT0FBMkI7QUFBQSxhQUEzQix1REFBNkI7QUFBQTtBQUFBLFlBQUEyQyxrQkFBQTNDO0FBQUFBLFFBQUEvTSxRQUM3QjtBQUFBLElBemRYO0FBQUEsR0F5ZHdDO0FBQUEsWUFBQTJQLDBCQUFBNUM7QUFBQUEsSUFHN0MsT0FBMkI7QUFBQSxhQUEzQix1REFBNkI7QUFBQTtBQUFBLFlBQUE2Qyw0QkFBQTdDO0FBQUFBLElBRzNCLE9BQTJCO0FBQUEsYUFBM0IsdURBQTZCO0FBQUE7QUFBQSxZQUFBOEMsNEJBQUE5QztBQUFBQSxJQUU3QixPQUEyQjtBQUFBLGFBQTNCLHVEQUE2QjtBQUFBO0FBQUEsWUFBQStDLCtCQUFBL0MsR0FBQVM7QUFBQUEsSUFHMUIsT0FBMkI7QUFBQSxhQUEzQiwwREFBK0I7QUFBQTtBQUFBLFlBQUF1QywrQkFBQWhEO0FBQUFBLElBRS9CLE9BQTJCO0FBQUEsYUFBM0IsdURBQTZCO0FBQUE7QUFBQSxZQUFBaUQsNkJBQUFqRDtBQUFBQSxJQUcvQixPQUEyQjtBQUFBLGFBQTNCLHVEQUE2QjtBQUFBO0FBQUEsWUFBQWtELDZCQUFBbEQ7QUFBQUEsSUFFN0IsT0FBMkI7QUFBQSxhQUEzQix1REFBNkI7QUFBQTtBQUFBLFlBQUFtRCxlQUFBbkQ7QUFBQUEsSUFFM0MsT0FBMkI7QUFBQSxhQUEzQix1REFBNkI7QUFBQTtBQUFBLFlBQUFvRCxlQUFBcEQ7QUFBQUEsUUFBQS9NLFFBRTdCO0FBQUEsSUE3c0JhO0FBQUEsR0E2c0JnQjtBQUFBLFlBQUFvUSxjQUFBckQ7QUFBQUEsSUFFOUIsT0FBMkI7QUFBQSxhQUEzQix1REFBNkI7QUFBQTtBQUFBLFlBQUFzRCxjQUFBdEQ7QUFBQUEsUUFBQS9NLFFBRTdCO0FBQUEsSUFodEJhO0FBQUEsR0FndEJnQjtBQUFBLFlBQUFzUSxTQUFBdkQ7QUFBQUEsSUFFbEMsT0FBMkIsWUFBM0IsdURBQTZCO0FBQUE7QUFBQSxZQUFBd0QsY0FBQUMsS0FBQUMsTUFBQUMsTUFBQWxHLEtBQUF1QztBQUFBQSxRQUFBNEQsU0FLekIsNkJBQUFDLFdBQ2hCO0FBQUEsYUFBQUYsT0FBQTNEO0FBQUFBLEtBRUUsZ0JBQWtCLHNCQUF1QjtBQUFBLEtBQ3pDLCtCQUFVO0FBQUE7QUFBQSxJQUVaLGtDQUFXO0FBQUE7QUFBQSxZQUFBOEQsY0FBQUwsS0FBQUUsTUFBQWxHLEtBQUF1QztBQUFBQSxRQUFBNEQsU0FHSztBQUFBLElBQ2hCLGdFQUEwQztBQUFBO0FBQUEsWUFBQUcsZUFBQU4sS0FBQUUsTUFBQWxHLEtBQUF1QztBQUFBQSxRQUFBNEQsU0FHekI7QUFBQSxJQUNqQixpRUFBMkM7QUFBQTtBQUFBLFlBQUFJLGFBQUFQLEtBQUFFLE1BQUFsRyxLQUFBd0c7QUFBQUEsUUFBQUwsU0FHNUI7QUFBQSxJQUNmLGdFQUEyQztBQUFBO0FBQUEsWUFBQU0sY0FBQXpHLEtBQUFySztBQUFBQSxRQUFBMkIsTUFJM0MsMEJBQUFvUCxPQUNBLFFBQUFDLFFBQ0E7QUFBQSxhQUFBNUcsTUFBQTNKO0FBQUFBLEtBRUU7QUFBQSxLQUF5RDtBQUFBLEtBQzdDO0FBQUE7QUFBQSxJQUFlO0FBQUEsSUFFN0I7QUFBQTtBQUFBLGNBV0E7QUFBQSxpQkFBcUIsWUFBUTtBQUFBO0FBQUEsU0FBQVUsUUFWckI7QUFBQSxLQUFVO0FBQUEsTUFFWjtBQUFBLE1BQ0E7QUFBQTtBQUFBLDJCQUVBLFVBQVUsOEJBR0w7QUFBQTtBQUFBLEdBRWtCO0FBQUEsWUFBQThQLFlBQUFDO0FBQUFBLFFBQUFDLE1BSTdCO0FBQUEsYUFBQUMsc0JBQUFDLFVBQUFDLFlBQUEzUCxLQUFBM0IsR0FBQTRCO0FBQUFBLFNBQUF5UCxTQUlFLFVBQUFDLFdBQUEsWUFBQTFQLE1BQUE7QUFBQTtBQUFBLHFCQUFtQjtBQUFBLFVBQUFULFFBQ2I7QUFBQSxNQUFPO0FBQUEsV0FBQVMsUUFFSCxhQUFBMFAsYUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsT0FGRyxpQkFHTjtBQUFBLFdBQUExUCxRQUZFLGFBQUF5UCxXQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUVtQjtBQUFBLGFBQUFFLE9BQUF2UixHQUFBbVI7QUFBQUEsU0FBQUssVUE2Qlg7QUFBQTtBQUFBLFVBQUFoTSxJQUFBO0FBQUEsK0JBRUo7QUFBQSxNQXJDYztBQUFBO0FBQUEsU0FBQXhGLE1BbUNWLE1BQUEyQixNQUdGO0FBQUEsS0E3QmYsYUFBbUI7QUFBQTtBQUFBLE1BQUFDLFFBNkJKO0FBQUEsTUFBQTZQLFFBM0JEO0FBQUEsTUFBQUMsVUFDRTtBQUFBLEtBQ2Q7QUFBQTtBQUFBO0FBQUEsUUFBQUMsSUFBQTtBQUFBLFFBQUFqUyxJQUFBO0FBQUEsUUFBQXlDLFFBQ29DLElBQVQ7QUFBQTtBQUFBLFdBQUFBLFFBRDNCO0FBQUE7QUFBQSxVQUFBQSxRQUFBO0FBQUEsS0FJQTtBQUFBLE1BRW1CLHVFQUEwQjtBQUFBO0FBQUEsTUFBQXlQLE1BRjdDO0FBQUEsTUFBQS9RLFNBSWlCO0FBQUEsTUFBQU0sUUFDZTtBQUFBLE1BQUFtUSxXQUFtQztBQUFBLE1BQUFELFNBQUE7QUFBQSxNQUFBelAsTUFBQTtBQUFBLEtBQy9EO0FBQUEsVUFBQWlRLFNBR2EsR0FBQUMsU0FBQTtBQUFBO0FBQUE7QUFBQSxPQUFBRCxVQURxQjtBQUFBLE9BQUFBLFNBR2xDO0FBQUEsT0FBQUMsU0FBQTtBQUFBO0FBQUEsTUFBQWxRLFFBQXVCO0FBQUEsTUFBQWlRLFVBQUE7QUFBQSxNQUFBQyxXQUFBO0FBQUEsTUFBQWxSLFdBQUE7QUFBQSxNQUFBbVIsUUFBdkI7QUFBQSxNQUFBQyxRQUF1QjtBQUFBO0FBQUEsVUFBQUEsUUFFN0IsT0FBQXBSLFNBQUEsVUFBQWtSLFdBQUE7QUFBQTtBQUFBO0FBQUEsV0FBQUUsUUFHRTtBQUFBO0FBQUEsV0FBQUYsV0FBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUF4QkY7QUFBQSxPQUFtQjtBQUFBO0FBQUE7QUFBQSxRQUFBTCxVQUVMO0FBQUEsUUFBQUMsWUFDRTtBQUFBLE9BQ2Q7QUFBQTtBQUFBO0FBQUEsVUFBQUMsTUFBQTtBQUFBLFVBQUFqUyxNQUFBO0FBQUEsVUFBQXlDLFVBQ29DLElBQVQ7QUFBQTtBQUFBLGFBQUFBLFVBRDNCO0FBQUE7QUFBQSxZQUFBQSxVQUFBO0FBQUEsT0FJQTtBQUFBO0FBQUEsU0FBQXlQLFFBQUE7QUFBQSxTQUFBL1E7QUFBQUEsV0FJaUI7QUFBQSxTQUFBTSxVQUNlO0FBQUEsU0FBQW1RLGFBQW1DO0FBQUEsU0FBQUQsV0FBQTtBQUFBLFNBQUF6UCxRQUFBO0FBQUEsUUFDL0Q7QUFBQSxhQUFBaVEsVUFHYSxHQUFBQyxXQUFBO0FBQUE7QUFBQTtBQUFBLFVBQUFELFVBRHFCO0FBQUEsVUFBQUEsVUFHbEM7QUFBQSxVQUFBQyxXQUFBO0FBQUEsWUFBQUUsTUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxPQVRlO0FBQUE7QUFBQTtBQUFBLE1BU3dDO0FBQUE7QUFBQSxJQVVmO0FBQUEsUUFBQWIsUUFDdEM7QUFBQSxJQUNFLDJEQUFvQztBQUFBLEdBQUM7QUFBQSxZQUFBYyxnQkFBQTVCLEtBQUFFLE1BQUFsRyxLQUFBNUo7QUFBQUEsUUFBQXlSLE9BRy9CLDJCQUFBelIsT0FBcUIsU0FBRTtBQUFBLElBQXZCLFlBQ1YsK0JBQ1k7QUFBQSxRQUFBbU0sSUFGRjtBQUFBLElBRVIsK0JBQVU7QUFBQTtBQUFBLFlBQUF1RixnQkFBQUMsSUFBQUMsT0FBQWhJLEtBQUE1SjtBQUFBQSxJQUVGLHVCQUFBbU0sSUFBQSxVQUNWLDZCQUNjO0FBQUEsUUFBQTBGLElBRko7QUFBQSxJQUVQLGdDQUFXO0FBQUE7QUFBQSxZQUFBQyxnQkFBQXhCLE1BQUFDLE9BQUEzRyxLQUFBNUo7QUFBQUEsSUFFSix1QkFBQWMsSUFBQSxVQUNELCtCQUNZO0FBQUEsUUFBQWlSLElBRlg7QUFBQSxJQUVBLGdDQUFXO0FBQUE7QUFBQSxZQUFBQyxZQUFBdEksUUFBQXVJO0FBQUFBLFFBQUFySCxNQUtuQixpQ0FBQWhCLE1BQ0E7QUFBQSxJQUNWO0FBQUEsSUFDQTtBQUFBLFFBQUExSSxNQUNVO0FBQUEsSUFDVjtBQUFBLGNBQ0s7QUFBQSxjQURXLGdDQUNlO0FBQUE7QUFBQSxZQUFBZ1Isc0JBQUF0SSxLQUFBdUk7QUFBQUEsSUFhVTtBQUFBO0FBQUE7QUFBQSxRQUNWLDJCQVMwQztBQUFBO0FBQUEsUUFSMUMsNEJBUTBDO0FBQUE7QUFBQSxRQU4xQyw2QkFNMEM7QUFBQTtBQUFBLFFBTDFDLCtCQUswQztBQUFBO0FBQUEsUUFKMUMsK0JBSTBDO0FBQUE7QUFBQSxRQUYxQyw2QkFFMEM7QUFBQSxnQkFEMUMsNkJBQzBDO0FBQUE7QUFBQSxJQVZoQztBQUFBO0FBQUEsV0FBQWhTLFNBQUEsZUFBQUYsUUFBQTtBQUFBLE9BR1YseUNBTzBDO0FBQUE7QUFBQSxPQUgxQztBQUFBO0FBQUEsV0FBQThFLElBUFU7QUFBQSxPQVVWO0FBQUEsT0FBcUIsNEJBQXFCO0FBQUE7QUFBQTtBQUFBLFlBQUFxTixXQUFBeEksS0FBQXlJO0FBQUFBLElBTTlDLDRCQTBCRztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE9BMUJIO0FBQUE7QUFBQSxjQUFBM1UsSUFBQSxRQUFBNFUsSUFBQTtBQUFBLFVBVXpCO0FBQUEsVUFBZ0Isb0NBZ0JjO0FBQUE7QUFBQSxjQUFBNVIsUUExQkwsUUFBQTRSLE1BQUE7QUFBQTtBQUFBLGVBQUFELFFBQUE7QUFBQSxXQWF6QjtBQUFBLFdBQzZCLE9BQTZCO0FBQUEseUNBQTdCLGdDQVlDO0FBQUE7QUFBQSxjQUFBQSxRQTFCTDtBQUFBLFVBZ0J6QjtBQUFBO0FBQUEsZUFDdUM7QUFBQSxXQUFBM1IsVUFBbkI7QUFBQSxXQUFBNlIsTUFBZ0Q7QUFBQSxXQUFBbFMsU0FBQTtBQUFBLFVBQ3BFLHdDQVE4QjtBQUFBO0FBQUEsa0JBMUJMO0FBQUE7QUFBQTtBQUFBO0FBQUEsZ0JBQUFkLE1BQUEsUUFBQUksT0FBQSxNQUFBMlMsTUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGNBQUEvUyxJQUFBLFFBQUErUyxNQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsZ0JBQUF2TixNQUFBLFFBQUFwRixTQUFBLE1BQUEyUyxNQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsY0FBQXZOLElBQUEsUUFBQXVOLE1BQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxnQkFBQS9TLE1BQUEsUUFBQUksT0FBQSxNQUFBMlMsTUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGNBQUEvUyxJQUFBLFFBQUErUyxNQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsZ0JBQUF2TixNQUFBLFFBQUFwRixTQUFBLE1BQUEyUyxNQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsY0FBQXZOLElBQUEsUUFBQXVOLE1BQUE7QUFBQTtBQUFBO0FBQUEsY0FBQTVVLE1BQUEsUUFBQTRVLE1BQUE7QUFBQSxVQXVCRztBQUFBLFVBQWdCLDJCQUdkO0FBQUE7QUFBQSxjQUFBQSxNQTFCTDtBQUFBLFVBd0JHO0FBQUEsVUFBZ0IsNkJBRWQ7QUFBQTtBQUFBLGNBQUFqTCxNQTFCTCxRQUFBaUwsTUFBQTtBQUFBLFVBeUJHO0FBQUEsVUFBZ0IsZ0NBQ2Q7QUFBQTtBQUFBLE9BSkY7QUFBQSxPQUFnQiw0QkFJZDtBQUFBO0FBQUEsTUFuQjlCO0FBQUEsTUFDd0MsT0FBRDtBQUFBLDRCQUFDLG9DQWtCVjtBQUFBO0FBQUEsS0FORjtBQUFBLEtBQWdCLDhCQU1kO0FBQUE7QUFBQSxJQXZCOUI7QUFBQSxJQUN1Qyx1Q0FzQlQ7QUFBQTtBQUFBLFlBQUFFLFdBQUE1SSxLQUFBeUk7QUFBQUEsSUFNTCw0QkE2Qkc7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxPQTdCSDtBQUFBO0FBQUEsY0FBQTNVLElBQUEsUUFBQTRVLElBQUE7QUFBQSxVQWF6QjtBQUFBLFVBQWdCLG9DQWdCYztBQUFBO0FBQUEsY0FBQTVSLFFBN0JMLFFBQUE0UixNQUFBO0FBQUE7QUFBQSxlQUFBRCxRQUFBO0FBQUEsV0FnQnpCO0FBQUEsV0FDNkIsT0FBNkI7QUFBQSx5Q0FBN0IsZ0NBWUM7QUFBQTtBQUFBLGNBQUFBLFFBN0JMO0FBQUEsVUFtQnpCO0FBQUE7QUFBQSxlQUN1QztBQUFBLFdBQUEzUixVQUFuQjtBQUFBLFdBQUE2UixNQUFnRDtBQUFBLFdBQUFsUyxTQUFBO0FBQUEsVUFDcEUsd0NBUThCO0FBQUE7QUFBQSxrQkE3Qkw7QUFBQTtBQUFBO0FBQUE7QUFBQSxnQkFBQWQsTUFBQSxRQUFBSSxPQUFBLE1BQUEyUyxNQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsY0FBQS9TLElBQUEsUUFBQStTLE1BQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxnQkFBQXZOLE1BQUEsUUFBQXBGLFNBQUEsTUFBQTJTLE1BQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxjQUFBdk4sSUFBQSxRQUFBdU4sTUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGdCQUFBL1MsTUFBQSxRQUFBSSxPQUFBLE1BQUEyUyxNQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsY0FBQS9TLElBQUEsUUFBQStTLE1BQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxnQkFBQXZOLE1BQUEsUUFBQXBGLFNBQUEsTUFBQTJTLE1BQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxjQUFBdk4sSUFBQSxRQUFBdU4sTUFBQTtBQUFBO0FBQUE7QUFBQSxjQUFBQSxNQUFBO0FBQUE7QUFBQSxlQUFBNVIsVUFBQTtBQUFBO0FBQUEsZ0JBQUFoRCxNQUFBLFFBQUFpQyxTQUFBLFlBQUEyUyxNQUFBO0FBQUEsWUFVekI7QUFBQSxZQUN3QyxPQUFELDhCQUFDLG1CQWtCVjtBQUFBO0FBQUE7QUFBQSxjQUFBNVUsTUE3Qkw7QUFBQSxVQTBCRztBQUFBLFVBQXNDLE9BQU0scUJBQU4sbUJBR3BDO0FBQUE7QUFBQSxjQUFBNFUsTUE3Qkw7QUFBQSxVQTJCRztBQUFBLFVBQWdCLDZCQUVkO0FBQUE7QUFBQSxjQUFBakwsTUE3QkwsUUFBQWlMLE1BQUE7QUFBQSxVQTRCRztBQUFBLFVBQWdCLGdDQUNkO0FBQUE7QUFBQSxPQUpGO0FBQUEsT0FBZ0IsNEJBSWQ7QUFBQTtBQUFBLE1BdEI5QjtBQUFBLE1BQ3dDLE9BQUQ7QUFBQSw0QkFBQyxvQ0FxQlY7QUFBQTtBQUFBLEtBTkY7QUFBQSxLQUFnQiw4QkFNZDtBQUFBO0FBQUEsSUExQjlCO0FBQUEsSUFDdUMsdUNBeUJUO0FBQUE7QUFBQSxZQUFBRyxTQUFBQyxHQUFBOUksS0FBQTVKO0FBQUFBLFFBQUEwUSxNQVFyQjtBQUFBLElBQ1g7QUFBQTtBQUFBLHNCQUFBMkIsS0FDYyxzQkFBa0IseUJBQU87QUFBQTtBQUFBLGlCQUN2QjtBQUFBO0FBQUEsWUFBQU0sVUFBQUQsR0FBQTlJLEtBQUE1SjtBQUFBQSxRQUFBMFEsTUFFSjtBQUFBLElBQ1osb0RBQXNCO0FBQUE7QUFBQSxZQUFBa0MsU0FBQWhKLEtBQUE1SjtBQUFBQSxRQUFBMFEsTUFFWDtBQUFBLElBQ1gsb0REeC9DRixtQkN3L0M0QjtBQUFBO0FBQUEsWUFBQW1DLFFBQUFqSjtBQUFBQSxhQUFBLEtEeC9DNUI7QUFBQSxJQzAvQ2tCLG1CRDEvQ2xCLDRCQzAvQ2tCO0FBQUEsR0FBbUI7QUFBQSxZQUFBa0osT0FBQTlTO0FBQUFBLFFBQUEwUSxNQUUxQjtBQUFBLElBQ1Q7QUFBQTtBQUFBLHNCQUFBMkI7QUFBQUEsY0FDeUIsT0FBMkI7QUFBQSx1QkFBM0IseURBQStCO0FBQUE7QUFBQTtBQUFBLGlCQUN4QztBQUFBO0FBQUEsWUFBQVUsUUFBQS9TO0FBQUFBLFFBQUEwUSxNQUVOO0FBQUEsSUFDVjtBQUFBO0FBQUEsc0JBQUEyQjtBQUFBQSxjQUN5QixPQUEyQjtBQUFBLHVCQUEzQix5REFBK0I7QUFBQTtBQUFBO0FBQUEsaUJBQ3hDO0FBQUE7QUFBQSxZQUFBVyxTQUFBTixHQUFBMVM7QUFBQUEsUUFBQTBRLE1BRUw7QUFBQSxJQUNYO0FBQUE7QUFBQSxzQkFBQTJCO0FBQUFBLGNBQ2M7QUFBQSxtQ0FBQXpJLEtBQWMsMkJBQWtCLEdBQUM7QUFBQTtBQUFBO0FBQUEsaUJBQy9CO0FBQUE7QUFBQSxZQUFBcUosUUFBQXZDLEtBRUEseUJBQUEvTCxHQUFtQixTQUFDLE9BQUs7QUFBQSxZQUFBdU8sU0FBQVIsR0FBQTFTO0FBQUFBLFFBQUEwUSxNQUU5QixVQUFBN04sSUFDSCxtQkFBQStHLE1BQ0U7QUFBQSxhQUFBOEksSUFBQUw7QUFBQUEsS0FFUjtBQUFBLEtBQ0UsT0FBOEIsY0FBOUIsK0JBQThCO0FBQUE7QUFBQSxJQUNsQyxvREFBNEI7QUFBQTtBQUFBLFlBQUFjLFFBQUF6QyxLQUdaLHdCQUFlO0FBQUEsWUFBQTBDLFVBQUFWLEdBQUExUztBQUFBQSxRQUFBMFEsTUFFbkIsVUFBQTdOLElBQ0osbUJBQUErRyxNQUNFO0FBQUEsYUFBQThJLElBQUFMO0FBQUFBLEtBRVI7QUFBQSxLQUNFLE9BQThCLGNBQTlCLCtCQUE4QjtBQUFBO0FBQUEsSUFDbEMsb0RBQTRCO0FBQUE7QUFBQSxZQUFBZ0IsU0FBQTNDLEtBR1gseUJBQWdCO0FBQUEsWUFBQTRDLDBCQUFBdFQ7QUFBQUEsSUFLakMsZUFBZTtBQUFBLElBQ0EsT0FBMkI7QUFBQSxhQUEzQix1REFBOEI7QUFBQTtBQUFBLEdBRXRDO0FBQUEsR0FFQTtBQUFBO0FBQUEsY0FBQUE7QUFBQUEsTUFDUDtBQUFBO0FBQUEsT0FBQXVULEtBQ1M7QUFBQSxXQUdjO0FBQUEsTUFGdkI7QUFBQTtBQUFBO0FBQUEsMkJBQ3dCO0FBQUE7QUFBQSxxQkFDRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsT0FBQUEsT0FFZDtBQUFBLFdBR2M7QUFBQSxNQURnQztBQUFBO0FBQUE7QUFBQTtBQUFBLGlCQUEvQjtBQUFBO0FBQUE7QUFBQSw0QkFDRDtBQUFBO0FBQUE7QUFBQSx5QkFBOEM7QUFBQTtBQUFBLEdBQ3RFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVEdGpERCIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjI4NTU3LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvY2FsbGJhY2subWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFJlZ2lzdGVyaW5nIE9DYW1sIHZhbHVlcyB3aXRoIHRoZSBDIHJ1bnRpbWUgZm9yIGxhdGVyIGNhbGxiYWNrcyAqKVxuXG5leHRlcm5hbCByZWdpc3Rlcl9uYW1lZF92YWx1ZSA6IHN0cmluZyAtPiBPYmoudCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZVwiXG5cbmxldCByZWdpc3RlciBuYW1lIHYgPVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBuYW1lIChPYmoucmVwciB2KVxuXG5sZXQgcmVnaXN0ZXJfZXhjZXB0aW9uIG5hbWUgKGV4biA6IGV4bikgPVxuICBsZXQgZXhuID0gT2JqLnJlcHIgZXhuIGluXG4gIGxldCBzbG90ID0gaWYgT2JqLnRhZyBleG4gPSBPYmoub2JqZWN0X3RhZyB0aGVuIGV4biBlbHNlIE9iai5maWVsZCBleG4gMCBpblxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBuYW1lIHNsb3RcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSIsIlN0ZGxpYl9PYmoiLCJyZWdpc3Rlcl9leGNlcHRpb24iLCJuYW1lIiwiZXhuIiwic2xvdCJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyw0QkFBQTtBQUFBLElBQUFDLGFBQUE7QUFBQSxZQUFBQyxtQkFBQUMsTUFBQUM7QUFBQUE7QUFBQUEsS0FBQSxJQ3lCZ0I7QUFBQSxLQUFBQyxPQUFBO0FBQUEsSUFDZCw0Q0FBOEI7QUFBQTtBQUFBLEdEMUJoQyIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjI4NTgwLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InB0aW1lLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9wdGltZS9wdGltZS5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIHB0aW1lIHByb2dyYW1tZXJzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG4oKiBKdWxpYW4gZGF5IGFuZCBwcm9sZXB0aWMgR3JlZ29yaWFuIGNhbGVuZGFyIGRhdGUgY29udmVyc2lvbi5cblxuICAgRm9ybXVsYWUgYXJlIGZyb20gdGhlIGNhbGVuZGFyIEZBUTpcbiAgIGh0dHA6Ly93d3cudG9uZGVyaW5nLmRrL2NsYXVzL2NhbC9qdWxwZXJpb2QucGhwI2Zvcm11bGFcblxuICAgVGhlc2UgZm9ybXVsYWUgd29yayBmb3IgcG9zaXRpdmUgSnVsaWFuIGRheXMuIFRoZXkgcmVwcmVzZW50XG4gICBHZWdvcmlhbiBjYWxlbmRhciBCQ0UgeWVhciBgeWAgYnkgYC0oeS0xKWAsIGUuZy4gMiBCQ0UgaXMgLTEsIHRoaXNcbiAgIGZvbGxvd3MgdGhlIGNvbnZlbnRpb24gb2YgSVNPIDg2MDEuXG5cbiAgIEFsbCB0aW1lc3RhbXBzIGluIFB0aW1lJ3MgW21pbjttYXhdIHJhbmdlIGFyZSByZXByZXNlbnRlZCBieVxuICAgcG9zaXRpdmUgSnVsaWFuIGRheXMgYW5kIHRoZSBmb3JtdWxhZSBkbyBub3Qgb3ZlcmZsb3cgb24gMzItYml0XG4gICBwbGF0Zm9ybXMgaW4gdGhpcyByZXN0cmljdGVkIHJhbmdlLiAqKVxuXG5sZXQgamRfdG9fZGF0ZSBqZCA9XG4gIGxldCBhID0gamQgKyAzMjA0NCBpblxuICBsZXQgYiA9ICg0ICogYSArIDMpIC8gMTQ2MDk3IGluXG4gIGxldCBjID0gYSAtICgoMTQ2MDk3ICogYikgLyA0KSBpblxuICBsZXQgZCA9ICg0ICogYyArIDMpIC8gMTQ2MSBpblxuICBsZXQgZSA9IGMgLSAoKDE0NjEgKiBkKSAvIDQpIGluXG4gIGxldCBtID0gKDUgKiBlICsgMikgLyAxNTMgaW5cbiAgbGV0IGRheSA9IGUgLSAoKDE1MyAqIG0gKyAyKSAvIDUpICsgMSBpblxuICBsZXQgbW9udGggPSBtICsgMyAtICgxMiAqIChtIC8gMTApKSBpblxuICBsZXQgeWVhciA9IDEwMCAqIGIgKyBkIC0gNDgwMCArIChtIC8gMTApIGluXG4gICh5ZWFyLCBtb250aCwgZGF5KVxuXG5sZXQgamRfdG9feWVhciBqZCA9ICgqIFNhbWUgYXMgYWJvdmUgYnV0IG9ubHkgZm9yIHRoZSB5ZWFyICopXG4gIGxldCBhID0gamQgKyAzMjA0NCBpblxuICBsZXQgYiA9ICg0ICogYSArIDMpIC8gMTQ2MDk3IGluXG4gIGxldCBjID0gYSAtICgoMTQ2MDk3ICogYikgLyA0KSBpblxuICBsZXQgZCA9ICg0ICogYyArIDMpIC8gMTQ2MSBpblxuICBsZXQgZSA9IGMgLSAoKDE0NjEgKiBkKSAvIDQpIGluXG4gIGxldCBtID0gKDUgKiBlICsgMikgLyAxNTMgaW5cbiAgMTAwICogYiArIGQgLSA0ODAwICsgKG0gLyAxMClcblxubGV0IGpkX29mX2RhdGUgKHllYXIsIG1vbnRoLCBkYXkpID1cbiAgbGV0IGEgPSAoMTQgLSBtb250aCkgLyAxMiBpblxuICBsZXQgeSA9IHllYXIgKyA0ODAwIC0gYSBpblxuICBsZXQgbSA9IG1vbnRoICsgMTIgKiBhIC0gMyBpblxuICBkYXkgKyAoKDE1MyAqIG0pICsgMikvIDUgKyAzNjUgKiB5ICtcbiAgKHkgLyA0KSAtICh5IC8gMTAwKSArICh5IC8gNDAwKSAtIDMyMDQ1XG5cbmxldCBqZF9wb3NpeF9lcG9jaCA9IDJfNDQwXzU4OCAgICAgICAgICAoKiB0aGUgSnVsaWFuIGRheSBvZiB0aGUgUE9TSVggZXBvY2ggKilcbmxldCBqZF9wdGltZV9taW4gPSAxXzcyMV8wNjAgICAgICAgICAgICAgICAgICAoKiB0aGUgSnVsaWFuIGRheSBvZiBQdGltZS5taW4gKilcbmxldCBqZF9wdGltZV9tYXggPSA1XzM3M180ODQgICAgICAgICAgICAgICAgICAoKiB0aGUgSnVsaWFuIGRheSBvZiBQdGltZS5tYXggKilcblxuKCogUGljb3NlY29uZCBwcmVjaXNpb24gUE9TSVggdGltZXN0YW1wcyBhbmQgdGltZSBzcGFuIHJlcHJlc2VudGF0aW9uLlxuXG4gICBQT1NJWCB0aW1lc3RhbXBzIGFuZCBzcGFucyBhcmUgcmVwcmVzZW50ZWQgYnkgaW50ICogaW50NjQgcGFpcnNcbiAgIHdpdGggdGhlIGludDY0IGluIHRoZSByYW5nZSBbMEw7ODZfMzk5Xzk5OV85OTlfOTk5Xzk5OUxdLiBBIHBhaXJcbiAgIFsoZCwgcHMpXSBkZW5vdGVzIHRoZSBQT1NJWCBwaWNvc2Vjb25kIGR1cmF0aW9uIFtkXSAqIDg2XzQwMGUxMiArXG4gICBbcHNdLlxuXG4gICBGb3IgYSB0aW1lc3RhbXAgdGhpcyBjYW4gYmUgc2VlbiBhcyBhIFBPU0lYIGRheSBjb3VudCBmcm9tIHRoZVxuICAgZXBvY2ggcGFpcmVkIHdpdGggYSBwaWNvc2Vjb25kIHByZWNpc2lvbiBQT1NJWCB0aW1lIHBvaW50IGluIHRoYXRcbiAgIGRheSBzdGFydGluZyBmcm9tIDAwOjAwOjAwLlxuXG4gICBCeSBkZWZpbml0aW9uIHdpdGggYSBuZWdhdGl2ZSBbZF0gdGhlIFtwc10gZHVyYXRpb24gYnJpbmdzIHVzXG4gICB0b3dhcmRzIHplcm8sICpub3QqIHRvd2FyZHMgaW5maW5pdHk6XG5cblxuICAgICAgICAgKGQgKiA4Nl80MDBlMTIpIChkICogODZfNDAwZTEyICsgcHMpICAgICAgIDBcbiAgICAgLi4uIC0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tIC4uLlxuICAgICAgICAgICAgICBbLS0tLS0tLS0tLS0tLS0tLT58XG4gICAgICAgICAgICAgICAgICAgcHNcblxuICAgW2RdIGlzIGxhcmdlbHkgc3VmZmljZW50IHRvIHJlcHJlc2VudCBhbGwgdGhlIGRheXMgaW4gUHRpbWUnc1xuICAgW21pbjttYXhdIHJhbmdlIG9uIGJvdGggMzItYml0IGFuZCA2NC1iaXQgcGxhdGZvcm1zLiAqKVxuXG50eXBlIHQgPSBpbnQgKiBpbnQ2NFxuXG5sZXQgcHNfY291bnRfaW5fcHMgICAgPSAgICAgICAgICAgICAgICAgICAgICAxTFxubGV0IHBzX2NvdW50X2luX25zICAgID0gICAgICAgICAgICAgICAgICAxXzAwMExcbmxldCBwc19jb3VudF9pbl8xMDBucyA9ICAgICAgICAgICAgICAgIDEwMF8wMDBMXG5sZXQgcHNfY291bnRfaW5fdXMgICAgPSAgICAgICAgICAgICAgMV8wMDBfMDAwTFxubGV0IHBzX2NvdW50X2luXzEwMHVzID0gICAgICAgICAgICAxMDBfMDAwXzAwMExcbmxldCBwc19jb3VudF9pbl9tcyAgICA9ICAgICAgICAgIDFfMDAwXzAwMF8wMDBMXG5sZXQgcHNfY291bnRfaW5fMTAwbXMgPSAgICAgICAgMTAwXzAwMF8wMDBfMDAwTFxubGV0IHBzX2NvdW50X2luX3MgICAgID0gICAgICAxXzAwMF8wMDBfMDAwXzAwMExcbmxldCBwc19jb3VudF9pbl9taW4gICA9ICAgICA2MF8wMDBfMDAwXzAwMF8wMDBMXG5sZXQgcHNfY291bnRfaW5faG91ciAgPSAgIDM2MDBfMDAwXzAwMF8wMDBfMDAwTFxubGV0IHBzX2NvdW50X2luX2RheSAgID0gODZfNDAwXzAwMF8wMDBfMDAwXzAwMExcbmxldCBwc19kYXlfbWF4ICAgICAgICA9IDg2XzM5OV85OTlfOTk5Xzk5OV85OTlMXG5cbmxldCBkYXlfbWluID0gamRfcHRpbWVfbWluIC0gamRfcG9zaXhfZXBvY2hcbmxldCBkYXlfbWF4ID0gamRfcHRpbWVfbWF4IC0gamRfcG9zaXhfZXBvY2hcblxubGV0IGVwb2NoID0gKDAsIDBMKSAgICAgICAgICAgICAoKiAxOTcwLTAxLTAxIDAwOjAwOjAwIFVUQyAqKVxubGV0IG1pbiA9IChkYXlfbWluLCAwTCkgICAgICAgICAoKiAwMDAwLTAxLTAxIDAwOjAwOjAwIFVUQyAqKVxubGV0IG1heCA9IChkYXlfbWF4LCBwc19kYXlfbWF4KSAoKiA5OTk5LTEyLTMxIDIzOjU5OjU5IFVUQyAqKVxuXG4oKiBQT1NJWCB0aW1lIHNwYW5zICopXG5cbnR5cGUgc3BhbiA9IHRcblxubW9kdWxlIFNwYW4gPSBzdHJ1Y3RcblxuICBsZXQgc3RkbGliX2FicyA9IGFic1xuXG4gICgqIEFyaXRobWV0aWMgKilcblxuICBsZXQgbmVnID0gZnVuY3Rpb25cbiAgfCAoZCwgMEwpICAtPiAoLWQsIDBMKVxuICB8IChkLCBwcykgLT4gKC0oZCArIDEpLCBJbnQ2NC5zdWIgcHNfY291bnRfaW5fZGF5IHBzKVxuXG4gIGxldCBhZGQgKGQwLCBwczApIChkMSwgcHMxKSA9XG4gICAgbGV0IGQgPSBkMCArIGQxIGluXG4gICAgbGV0IHBzID0gSW50NjQuYWRkIHBzMCBwczEgaW5cbiAgICBsZXQgcHNfY2xhbXAgPSBJbnQ2NC5yZW0gcHMgcHNfY291bnRfaW5fZGF5IGluXG4gICAgbGV0IGQgPSBkICsgSW50NjQuY29tcGFyZSBwcyBwc19jbGFtcCBpblxuICAgIGQsIHBzX2NsYW1wXG5cbiAgbGV0IHN1YiBzMCBzMSA9IGFkZCBzMCAobmVnIHMxKVxuICBsZXQgYWJzIChkLCBfIGFzIHMpID0gaWYgZCA8IDAgdGhlbiBuZWcgcyBlbHNlIHNcblxuICAoKiBQT1NJWCB0aW1lIHNwYW5zICopXG5cbiAgdHlwZSB0ID0gc3BhblxuXG4gIGxldCB6ZXJvID0gKDAsIDBMKVxuICBsZXQgdiAoZCwgcHMgYXMgcykgPVxuICAgIGlmIHBzIDwgMEwgfHwgcHMgPiBwc19kYXlfbWF4XG4gICAgdGhlbiBpbnZhbGlkX2FyZyAoRm9ybWF0LnNwcmludGYgXCJpbGxlZ2FsIHB0aW1lIHRpbWUgc3BhbjogKCVkLCVMZClcIiBkIHBzKVxuICAgIGVsc2Ugc1xuXG4gIGxldCBvZl9kX3BzIChkLCBwcyBhcyBzKSA9IGlmIHBzIDwgMEwgfHwgcHMgPiBwc19kYXlfbWF4IHRoZW4gTm9uZSBlbHNlIFNvbWUgc1xuICBsZXQgdW5zYWZlX29mX2RfcHMgcyA9IHNcbiAgbGV0IHVuc2FmZV9vZl9kX3BzX29wdGlvbiBzID0gc1xuICBsZXQgdG9fZF9wcyBzID0gc1xuXG4gIGxldCBvZl9pbnRfcyBzZWNzID1cbiAgICBsZXQgZCA9IHN0ZGxpYl9hYnMgc2VjcyBpblxuICAgIGxldCBzID0gKGQgLyA4Nl80MDAsIEludDY0LihtdWwgKG9mX2ludCAoZCBtb2QgODZfNDAwKSkgcHNfY291bnRfaW5fcykpIGluXG4gICAgaWYgc2VjcyA8IDAgdGhlbiBuZWcgcyBlbHNlIHNcblxuICBsZXQgZGF5X2ludF9taW4gPSBtaW5faW50IC8gODZfNDAwXG4gIGxldCBkYXlfaW50X21heCA9IG1heF9pbnQgLyA4Nl80MDBcbiAgbGV0IHRvX2ludF9zIChkLCBwcykgPVxuICAgIGlmIGQgPCBkYXlfaW50X21pbiB8fCBkID4gZGF5X2ludF9tYXggdGhlbiBOb25lIGVsc2VcbiAgICBsZXQgZGF5c19zID0gZCAqIDg2XzQwMCBpblxuICAgIGxldCBkYXlfcyA9IEludDY0Lih0b19pbnQgKGRpdiBwcyBwc19jb3VudF9pbl9zKSkgKCogYWx3YXlzIHBvc2l0aXZlICopIGluXG4gICAgbGV0IHNlY3MgPSBkYXlzX3MgKyBkYXlfcyBpblxuICAgIGlmIHNlY3MgPCBkYXlzX3MgKCogcG9zaXRpdmUgb3ZlcmZsb3cgKikgdGhlbiBOb25lIGVsc2UgU29tZSBzZWNzXG5cbiAgbGV0IG1pbl9pbnRfZmxvYXQgPSBmbG9hdCBtaW5faW50XG4gIGxldCBtYXhfaW50X2Zsb2F0ID0gZmxvYXQgbWF4X2ludFxuICBsZXQgb2ZfZmxvYXRfcyBzZWNzID1cbiAgICBpZiBzZWNzIDw+IHNlY3MgKCogbmFuICopIHRoZW4gTm9uZSBlbHNlXG4gICAgbGV0IGRheXMgPSBmbG9vciAoc2VjcyAvLiA4Nl80MDAuKSBpblxuICAgIGlmIGRheXMgPCBtaW5faW50X2Zsb2F0IHx8IGRheXMgPiBtYXhfaW50X2Zsb2F0IHRoZW4gTm9uZSBlbHNlXG4gICAgbGV0IHJlbV9zID0gbW9kX2Zsb2F0IHNlY3MgODZfNDAwLiBpblxuICAgIGxldCByZW1fcyA9IGlmIHJlbV9zIDwgMC4gdGhlbiA4Nl80MDAuICsuIHJlbV9zIGVsc2UgcmVtX3MgaW5cbiAgICBpZiByZW1fcyA+PSA4Nl80MDAuIHRoZW5cbiAgICAgICgqIEd1YXJkIGFnYWluc3QgYSBwb3RlbnRpYWwgb3ZlcmZsb3cgaW4gdGhlIGNvbXB1dGF0aW9uIG9mIFtyZW1fc10gKilcbiAgICAgIGxldCBkYXlzID0gZGF5cyArLiAxLiBpblxuICAgICAgaWYgZGF5cyA+IG1heF9pbnRfZmxvYXQgdGhlbiBOb25lIGVsc2VcbiAgICAgIFNvbWUgKGludF9vZl9mbG9hdCBkYXlzLCAwTClcbiAgICBlbHNlXG4gICAgbGV0IGZyYWNfcywgcmVtX3MgPSBtb2RmIHJlbV9zIGluXG4gICAgbGV0IHJlbV9wcyA9IEludDY0LihtdWwgKG9mX2Zsb2F0IHJlbV9zKSBwc19jb3VudF9pbl9zKSBpblxuICAgIGxldCBmcmFjX3BzID0gSW50NjQuKG9mX2Zsb2F0IChmcmFjX3MgKi4gMWUxMikpIGluXG4gICAgU29tZSAoaW50X29mX2Zsb2F0IGRheXMsIChJbnQ2NC5hZGQgcmVtX3BzIGZyYWNfcHMpKVxuXG4gIGxldCB0b19mbG9hdF9zIChkLCBwcykgPVxuICAgIGxldCBkYXlzX3MgPSAoZmxvYXQgZCkgKi4gODZfNDAwLiBpblxuICAgIGxldCBkYXlfcyA9IEludDY0Lih0b19mbG9hdCAoZGl2IHBzIHBzX2NvdW50X2luX3MpKSBpblxuICAgIGxldCBkYXlfcmVtX3BzID0gSW50NjQuKHRvX2Zsb2F0IChyZW0gcHMgcHNfY291bnRfaW5fcykpIGluXG4gICAgZGF5c19zICsuIGRheV9zICsuIChkYXlfcmVtX3BzICouIDFlLTEyKVxuXG4gICgqIFByZWRpY2F0ZXMgKilcblxuICBsZXQgZXF1YWwgKGQwLCBwczApIChkMSwgcHMxKSA9XG4gICAgKGNvbXBhcmUgOiBpbnQgLT4gaW50IC0+IGludCkgZDAgZDEgPSAwICYmXG4gICAgSW50NjQuY29tcGFyZSBwczAgcHMxID0gMFxuXG4gIGxldCBjb21wYXJlIChkMCwgcHMwKSAoZDEsIHBzMSkgPVxuICAgIGxldCBjID0gKGNvbXBhcmUgOiBpbnQgLT4gaW50IC0+IGludCkgZDAgZDEgaW5cbiAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2UgKGNvbXBhcmUgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQpIHBzMCBwczFcblxuICAoKiBSb3VuZGluZyAqKVxuXG4gIGxldCByb3VuZF9kaXYgYSBiID0gKCogYSA+PSAwIGFuZCBiID4gMCAqKVxuICAgIGlmIGEgPSAwTCB0aGVuIDBMIGVsc2VcbiAgICBJbnQ2NC4oZGl2IChhZGQgYSAoZGl2IGIgMkwpKSBiKVxuXG4gIGxldCBmcmFjX2RpdiA9IFt8IDFfMDAwXzAwMF8wMDBfMDAwTDtcbiAgICAgICAgICAgICAgICAgICAgICAxMDBfMDAwXzAwMF8wMDBMO1xuICAgICAgICAgICAgICAgICAgICAgICAxMF8wMDBfMDAwXzAwMEw7XG4gICAgICAgICAgICAgICAgICAgICAgICAxXzAwMF8wMDBfMDAwTDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgMTAwXzAwMF8wMDBMO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgMTBfMDAwXzAwMEw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMV8wMDBfMDAwTDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMF8wMDBMO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwXzAwMEw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFfMDAwTDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDBMO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMEw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxTDsgfF1cblxuICBsZXQgcm91bmQgfmZyYWNfczpmcmFjIChzaWduLCBfIGFzIHQpID1cbiAgICBsZXQgZnJhYyA9IGlmIGZyYWMgPCAwIHRoZW4gMCBlbHNlIChpZiBmcmFjID4gMTIgdGhlbiAxMiBlbHNlIGZyYWMpIGluXG4gICAgbGV0IChkLCBwcykgPSBpZiBzaWduIDwgMCB0aGVuIG5lZyB0IGVsc2UgdCBpblxuICAgIGxldCBycHMgPSBJbnQ2NC5tdWwgKHJvdW5kX2RpdiBwcyBmcmFjX2Rpdi4oZnJhYykpIGZyYWNfZGl2LihmcmFjKSBpblxuICAgIGxldCB0ID0gaWYgcnBzID4gcHNfZGF5X21heCB0aGVuIChkICsgMSwgMEwpIGVsc2UgKGQsIHJwcykgaW5cbiAgICBpZiBzaWduIDwgMCB0aGVuIG5lZyB0IGVsc2UgdFxuXG4gIGxldCB0cnVuY2F0ZSB+ZnJhY19zOmZyYWMgKHNpZ24sIF8gYXMgdCkgPVxuICAgIGxldCBmcmFjID0gaWYgZnJhYyA8IDAgdGhlbiAwIGVsc2UgKGlmIGZyYWMgPiAxMiB0aGVuIDEyIGVsc2UgZnJhYykgaW5cbiAgICBsZXQgKGQsIHBzKSA9IGlmIHNpZ24gPCAwIHRoZW4gbmVnIHQgZWxzZSB0IGluXG4gICAgbGV0IHRwcyA9IEludDY0LihzdWIgcHMgKHJlbSBwcyBmcmFjX2Rpdi4oZnJhYykpKSBpblxuICAgIGlmIHNpZ24gPCAwIHRoZW4gbmVnIChkLCB0cHMpIGVsc2UgKGQsIHRwcylcblxuICBsZXQgdHJ1bmNhdGVfZG93biB+ZnJhY19zOmZyYWMgKGQsIHBzKSA9XG4gICAgKGQsIEludDY0LihzdWIgcHMgKHJlbSBwcyBmcmFjX2Rpdi4oZnJhYyApKSkpXG5cbiAgKCogUHJldHR5IHByaW50aW5nICopXG5cbiAgbGV0IGR1bXAgcHBmIChkLCBwcykgPSBGb3JtYXQuZnByaW50ZiBwcGYgXCJAWzwxPiglZCxALCVMZClAXVwiIGQgcHNcblxuICAoKiBXYXJuaW5nIGxhYm9yaW91cyBjb2RlIGZvbGxvd3MuIElzIHRoZXJlIGEgYmV0dGVyIHdheSA/ICopXG5cbiAgbGV0IGRpdmlkZV9wcyB+Y2FycnkgcHMgaGkgbG8gPVxuICAgIGxldCBoaV9kID0gSW50NjQuKHRvX2ludCAoZGl2IHBzIGhpKSkgaW5cbiAgICBsZXQgcmVtX3BzID0gSW50NjQucmVtIHBzIGhpIGluXG4gICAgbGV0IGxvX2QgPSBJbnQ2NC50b19pbnQgKHJvdW5kX2RpdiByZW1fcHMgbG8pIGluXG4gICAgaWYgbG9fZCA9IGNhcnJ5IHRoZW4gaGlfZCArIDEsIDAgZWxzZSBoaV9kLCBsb19kXG5cbiAgbGV0IHBwX3lfZCBwcGYgfm5lZyBkIHBzID0gKCogYXNzZXJ0IGQgPj0gMCAqKVxuICAgIGxldCB5LCByZW1fZCA9XG4gICAgICBsZXQgbWF4X2QgPSBtYXhfaW50IC8gNCBpblxuICAgICAgaWYgZCA+IG1heF9kIHRoZW4gKCogZCAqIDQgb3ZlcmZsb3dzICopIGQgLyAzNjUsIGQgbW9kIDM2NSBlbHNlXG4gICAgICBsZXQgeSA9IChkICogNCkgLyAxNDYxICgqIC8gMzY1LjI1ICopIGluXG4gICAgICB5LCBkIC0gKHkgKiAxNDYxKSAvIDRcbiAgICBpblxuICAgIGxldCBkYXlzID0gcmVtX2QgKyBJbnQ2NC50b19pbnQgKHJvdW5kX2RpdiBwcyBwc19jb3VudF9pbl9kYXkpIGluXG4gICAgbGV0IHksIGRheXMgPSBpZiBkYXlzID0gMzY2IHRoZW4geSArIDEsIDEgZWxzZSB5LCBkYXlzIGluXG4gICAgbGV0IHkgPSBpZiBuZWcgdGhlbiAteSBlbHNlIHkgaW5cbiAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCIlZHlcIiB5O1xuICAgIGlmIGRheXMgPD4gMCB0aGVuIEZvcm1hdC5mcHJpbnRmIHBwZiBcIiVkZFwiIGRheXM7XG4gICAgKClcblxuICBsZXQgcHBfZF9oIHBwZiB+bmVnIGQgcHMgPVxuICAgIGxldCBoLCBfID0gZGl2aWRlX3BzIH5jYXJyeToxIHBzIHBzX2NvdW50X2luX2hvdXIgcHNfY291bnRfaW5faG91ciBpblxuICAgIGxldCBkLCBoID0gaWYgaCA9IDI0IHRoZW4gZCArIDEsIDAgZWxzZSBkLCBoIGluXG4gICAgaWYgZCA9IDM2NiB0aGVuIEZvcm1hdC5mcHJpbnRmIHBwZiBcIiVkeTFkXCIgKGlmIG5lZyB0aGVuIC0xIGVsc2UgMSkgZWxzZVxuICAgIGlmIGQgPSAzNjUgJiYgaCA+PSA2XG4gICAgdGhlbiBGb3JtYXQuZnByaW50ZiBwcGYgXCIlZHlcIiAoaWYgbmVnIHRoZW4gLTEgZWxzZSAxKSBlbHNlXG4gICAgbGV0IGQgPSBpZiBuZWcgdGhlbiAtZCBlbHNlIGQgaW5cbiAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCIlZGRcIiBkO1xuICAgIGlmIGggPD4gMCB0aGVuIEZvcm1hdC5mcHJpbnRmIHBwZiBcIiVkaFwiIGg7XG4gICAgKClcblxuICBsZXQgcHBfaF9tIHBwZiB+bmVnIHBzID1cbiAgICBsZXQgaCwgbSA9IGRpdmlkZV9wcyB+Y2Fycnk6NjAgcHMgcHNfY291bnRfaW5faG91ciBwc19jb3VudF9pbl9taW4gaW5cbiAgICBpZiBoID0gMjQgdGhlbiBGb3JtYXQuZnByaW50ZiBwcGYgXCIlZGRcIiAoaWYgbmVnIHRoZW4gLTEgZWxzZSAxKSBlbHNlXG4gICAgbGV0IGggPSBpZiBuZWcgdGhlbiAtaCBlbHNlIGggaW5cbiAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCIlZGhcIiBoO1xuICAgIGlmIG0gPD4gMCB0aGVuIEZvcm1hdC5mcHJpbnRmIHBwZiBcIiVkbWluXCIgbTtcbiAgICAoKVxuXG4gIGxldCBwcF9tX3MgcHBmIH5uZWcgcHMgPVxuICAgIGxldCBtLCBzID0gZGl2aWRlX3BzIH5jYXJyeTo2MCBwcyBwc19jb3VudF9pbl9taW4gcHNfY291bnRfaW5fcyBpblxuICAgIGlmIG0gPSA2MCB0aGVuIEZvcm1hdC5mcHJpbnRmIHBwZiBcIiVkaFwiIChpZiBuZWcgdGhlbiAtMSBlbHNlIDEpIGVsc2VcbiAgICBsZXQgbSA9IGlmIG5lZyB0aGVuIC1tIGVsc2UgbSBpblxuICAgIEZvcm1hdC5mcHJpbnRmIHBwZiBcIiVkbWluXCIgbTtcbiAgICBpZiBzIDw+IDAgdGhlbiBGb3JtYXQuZnByaW50ZiBwcGYgXCIlZHNcIiBzO1xuICAgICgpXG5cbiAgbGV0IHBwX3MgcHBmIH5uZWcgcHMgPVxuICAgIGxldCBzLCBtcyA9IGRpdmlkZV9wcyB+Y2Fycnk6MTAwMCBwcyBwc19jb3VudF9pbl9zIHBzX2NvdW50X2luX21zIGluXG4gICAgaWYgcyA9IDYwIHRoZW4gRm9ybWF0LmZwcmludGYgcHBmIFwiJWRtaW5cIiAoaWYgbmVnIHRoZW4gLTEgZWxzZSAxKSBlbHNlXG4gICAgbGV0IHMgPSBpZiBuZWcgdGhlbiAtcyBlbHNlIHMgaW5cbiAgICBpZiBtcyA8PiAwIHRoZW4gRm9ybWF0LmZwcmludGYgcHBmIFwiJWQuJTAzZHNcIiBzIG1zIGVsc2VcbiAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCIlZHNcIiBzXG5cbiAgbGV0IHBwX3VuaXQgaGlnaGVyX3N0ciBoaSBoaV9zdHIgZnJhY19saW1pdCBsbyBwcGYgfm5lZyBwcyA9XG4gICAgbGV0IHBwX3VuaXRfaW50ZWdyYWwgcHBmIH5uZWcgaCA9XG4gICAgICBpZiBoID0gMTAwMFxuICAgICAgdGhlbiBGb3JtYXQuZnByaW50ZiBwcGYgXCIlZCVzXCIgKGlmIG5lZyB0aGVuIC0xIGVsc2UgMSkgaGlnaGVyX3N0clxuICAgICAgZWxzZSBGb3JtYXQuZnByaW50ZiBwcGYgXCIlZCVzXCIgKGlmIG5lZyB0aGVuIC1oIGVsc2UgaCkgaGlfc3RyXG4gICAgaW5cbiAgICBpZiBwcyA8IGZyYWNfbGltaXQgdGhlbiBiZWdpblxuICAgICAgbGV0IGgsIGwgPSBkaXZpZGVfcHMgfmNhcnJ5OjEwMDAgcHMgaGkgbG8gaW5cbiAgICAgIGlmIGggPj0gMTAwIHx8IGwgPSAwIHRoZW4gcHBfdW5pdF9pbnRlZ3JhbCBwcGYgfm5lZyBoIGVsc2VcbiAgICAgIGxldCBoID0gaWYgbmVnIHRoZW4gLWggZWxzZSBoIGluXG4gICAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCIlZC4lMDNkJXNcIiBoIGwgaGlfc3RyXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIGxldCBtcywgXyA9IGRpdmlkZV9wcyB+Y2Fycnk6MSBwcyBoaSBoaSBpblxuICAgICAgcHBfdW5pdF9pbnRlZ3JhbCBwcGYgfm5lZyBtc1xuICAgIGVuZFxuXG4gIGxldCBwcF9tcyA9XG4gICAgcHBfdW5pdCBcInNcIiBwc19jb3VudF9pbl9tcyBcIm1zXCIgcHNfY291bnRfaW5fMTAwbXMgcHNfY291bnRfaW5fdXNcblxuICBsZXQgcHBfdXMgPVxuICAgIHBwX3VuaXQgXCJtc1wiIHBzX2NvdW50X2luX3VzIFwidXNcIiBwc19jb3VudF9pbl8xMDB1cyBwc19jb3VudF9pbl9uc1xuXG4gIGxldCBwcF9ucyA9XG4gICAgcHBfdW5pdCBcInVzXCIgcHNfY291bnRfaW5fbnMgXCJuc1wiIHBzX2NvdW50X2luXzEwMG5zIHBzX2NvdW50X2luX3BzXG5cbiAgbGV0IHBwX3BzIHBwZiB+bmVnIHBzID1cbiAgICBsZXQgcHMgPSBJbnQ2NC50b19pbnQgcHMgaW5cbiAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCIlZHBzXCIgKGlmIG5lZyB0aGVuIC1wcyBlbHNlIHBzKVxuXG4gIGxldCBwcCBwcGYgKHNpZ24sIF8gYXMgcykgPVxuICAgIGxldCBuZWcgPSBzaWduIDwgMCBpblxuICAgIG1hdGNoIChhYnMgcykgd2l0aFxuICAgIHwgKDAsIHBzKSAtPlxuICAgICAgICBpZiBwcyA+PSBwc19jb3VudF9pbl9ob3VyIHRoZW4gcHBfaF9tIHBwZiB+bmVnIHBzIGVsc2VcbiAgICAgICAgaWYgcHMgPj0gcHNfY291bnRfaW5fbWluIHRoZW4gcHBfbV9zIHBwZiB+bmVnIHBzIGVsc2VcbiAgICAgICAgaWYgcHMgPj0gcHNfY291bnRfaW5fcyB0aGVuIHBwX3MgcHBmIH5uZWcgcHMgZWxzZVxuICAgICAgICBpZiBwcyA+PSBwc19jb3VudF9pbl9tcyB0aGVuIHBwX21zIHBwZiB+bmVnIHBzIGVsc2VcbiAgICAgICAgaWYgcHMgPj0gcHNfY291bnRfaW5fdXMgdGhlbiBwcF91cyBwcGYgfm5lZyBwcyBlbHNlXG4gICAgICAgIGlmIHBzID49IHBzX2NvdW50X2luX25zIHRoZW4gcHBfbnMgcHBmIH5uZWcgcHMgZWxzZVxuICAgICAgICBwcF9wcyBwcGYgfm5lZyBwc1xuICAgIHwgKGQsIHBzKSAtPlxuICAgICAgICBpZiBkID4gMzY1IHRoZW4gcHBfeV9kIHBwZiB+bmVnIGQgcHMgZWxzZVxuICAgICAgICBwcF9kX2ggcHBmIH5uZWcgZCBwc1xuZW5kXG5cbigqIFBPU0lYIHRpbWVzdGFtcHMgKilcblxubGV0IHYgKGQsIHBzIGFzIHMpID1cbiAgaWYgKHBzIDwgMEwgfHwgcHMgPiBwc19kYXlfbWF4IHx8IGQgPCBkYXlfbWluIHx8IGQgPiBkYXlfbWF4KVxuICB0aGVuIGludmFsaWRfYXJnIChGb3JtYXQuc3ByaW50ZiBcImlsbGVnYWwgcHRpbWUgdGltZXN0YW1wOiAoJWQsJUxkKVwiIGQgcHMpXG4gIGVsc2Ugc1xuXG5sZXQgdW5zYWZlX29mX2RfcHMgcyA9IHNcblxubGV0IG9mX3NwYW4gKGQsIF8gYXMgc3BhbikgPVxuICBpZiBkIDwgZGF5X21pbiB8fCBkID4gZGF5X21heCB0aGVuIE5vbmUgZWxzZSBTb21lIHNwYW5cblxubGV0IHRvX3NwYW4gdCA9IHRcblxubGV0IG9mX2Zsb2F0X3Mgc2VjcyA9IG1hdGNoIFNwYW4ub2ZfZmxvYXRfcyBzZWNzIHdpdGhcbnwgTm9uZSAtPiBOb25lXG58IFNvbWUgZCAtPiBvZl9zcGFuIGRcblxubGV0IHRvX2Zsb2F0X3MgPSBTcGFuLnRvX2Zsb2F0X3NcblxubGV0IHRydW5jYXRlID0gU3Bhbi50cnVuY2F0ZV9kb3duXG5cbmxldCBmcmFjX3MgKF8sIHBzKSA9ICgwLCBJbnQ2NC4ocmVtIHBzIHBzX2NvdW50X2luX3MpKVxuXG4oKiBQcmVkaWNhdGVzICopXG5cbmxldCBlcXVhbCA9IFNwYW4uZXF1YWxcbmxldCBjb21wYXJlID0gU3Bhbi5jb21wYXJlXG5sZXQgaXNfZWFybGllciB0IH50aGFuID0gY29tcGFyZSB0IHRoYW4gPSAtMVxubGV0IGlzX2xhdGVyIHQgfnRoYW4gPSBjb21wYXJlIHQgdGhhbiA9IDFcblxuKCogUE9TSVggYXJpdGhtZXRpYyAqKVxuXG5sZXQgYWRkX3NwYW4gdCBkID0gb2Zfc3BhbiAoU3Bhbi5hZGQgdCBkKVxubGV0IHN1Yl9zcGFuIHQgZCA9IG9mX3NwYW4gKFNwYW4uc3ViIHQgZClcbmxldCBkaWZmIHQxIHQwID0gU3Bhbi5zdWIgdDEgdDBcblxuKCogVGltZSB6b25lIG9mZnNldHMgYmV0d2VlbiBsb2NhbCBhbmQgVVRDIHRpbWVsaW5lcyAqKVxuXG50eXBlIHR6X29mZnNldF9zID0gaW50XG5cbigqIERhdGUtdGltZSBjb252ZXJzaW9uXG5cbiAgIFBPU0lYIHRpbWUgY291bnRzIHNlY29uZHMgc2luY2UgMTk3MC0wMS0wMSAwMDowMDowMCBVVEMgd2l0aG91dFxuICAgY291bnRpbmcgbGVhcCBzZWNvbmRzIC0tIHdoZW4gYSBsZWFwIHNlY29uZCBvY2N1cnMgYSBQT1NJWCBzZWNvbmRcbiAgIGNhbiBiZSB0d28gU0kgc2Vjb25kcyBvciB6ZXJvIFNJIHNlY29uZC4gSGVuY2UgODY0MDAgUE9TSVggc2Vjb25kc1xuICAgYWx3YXlzIHJlcHJlc2VudCBhbiBVVEMgZGF5IGFuZCB0aGUgdHJhbnNsYXRpb25zIGJlbG93IGFyZSBhY2N1cmF0ZVxuICAgd2l0aG91dCBoYXZpbmcgdG8gcmVmZXIgdG8gYSBsZWFwIHNlY29uZHMgdGFibGUuICopXG5cbnR5cGUgZGF0ZSA9IChpbnQgKiBpbnQgKiBpbnQpXG50eXBlIHRpbWUgPSAoaW50ICogaW50ICogaW50KSAqIHR6X29mZnNldF9zXG5cbmxldCBtYXhfbW9udGhfZGF5ID0gICAgICAgICAgICAgICAoKiBtYXggZGF5IG51bWJlciBpbiBhIGdpdmVuIHllYXIncyBtb250aC4gKilcbiAgbGV0IGlzX2xlYXBfeWVhciB5ID0gKHkgbW9kIDQgPSAwKSAmJiAoeSBtb2QgMTAwIDw+IDAgfHwgeSBtb2QgNDAwID0gMCkgaW5cbiAgbGV0IG1sZW4gPSBbfDMxOyAyOCAoKiBvciBub3QgKik7IDMxOyAzMDsgMzE7IDMwOyAzMTsgMzE7IDMwOyAzMTsgMzA7IDMxfF0gaW5cbiAgZnVuIHkgbSAtPiBpZiAobSA9IDIgJiYgaXNfbGVhcF95ZWFyIHkpIHRoZW4gMjkgZWxzZSBtbGVuLihtIC0gMSlcblxubGV0IGlzX2RhdGVfdmFsaWQgKHksIG0sIGQpID1cbiAgMCA8PSB5ICYmIHkgPD0gOTk5OSAmJlxuICAxIDw9IG0gJiYgbSA8PSAxMiAmJlxuICAxIDw9IGQgJiYgZCA8PSBtYXhfbW9udGhfZGF5IHkgbVxuXG5sZXQgaXNfdGltZV92YWxpZCAoKGhoLCBtbSwgc3MpLCBfKSA9XG4gIDAgPD0gaGggJiYgaGggPD0gMjMgJiZcbiAgMCA8PSBtbSAmJiBtbSA8PSA1OSAmJlxuICAwIDw9IHNzICYmIHNzIDw9IDYwXG5cbmxldCBvZl9kYXRlX3RpbWUgKGRhdGUsICgoaGgsIG1tLCBzcyksIHR6X29mZnNldF9zIGFzIHQpKSA9XG4gICgqIFdlIGZpcnN0IHZlcmlmeSB0aGF0IHRoZSBnaXZlbiBkYXRlIGFuZCB0aW1lIGFyZSBQdGltZS12YWxpZC5cbiAgICAgT25jZSB0aGlzIGhhcyBiZWVuIGVzdGFibGlzaGVkIHdlIGZpbmQgZmluZCB0aGUgbnVtYmVyIG9mIEp1bGlhblxuICAgICBkYXlzIHNpbmNlIHRoZSBlcG9jaCBmb3IgdGhlIGdpdmVuIHByb2xlcHRpYyBHZW9yZ2lhbiBjYWxlbmRhclxuICAgICBkYXRlLiBUaGlzIGdpdmVzIHVzIHRoZSBQT1NJWCBkYXkgY29tcG9uZW50IG9mIHRoZSB0aW1lc3RhbXAuIFRoZVxuICAgICByZW1haW5pbmcgdGltZSBmaWVsZHMgYXJlIHVzZWQgdG8gZGVyaXZlIHRoZSBwaWNvc2Vjb25kIHByZWNpc2lvblxuICAgICB0aW1lIGluIHRoYXQgZGF5IGNvbXBlbnNhdGVkIGJ5IHRoZSB0aW1lIHpvbmUgb2Zmc2V0LiBUaGUgZmluYWxcbiAgICAgcmVzdWx0IGlzIGNoZWNrZWQgdG8gYmUgaW4gUHRpbWUncyBbbWluO21heF0gcmFuZ2UuXG5cbiAgICAgQnkgZGVmaW5pdGlvbiBQT1NJWCB0aW1lc3RhbXBzIGNhbm5vdCByZXByZXNlbnQgbGVhcCBzZWNvbmRzLlxuICAgICBXaXRoIHRoZSBjb2RlIGJlbG93IGFueSBkYXRlLXRpbWUgd2l0aCBhIHNlY29uZHMgdmFsdWUgb2YgNjBcbiAgICAgKGxlYXAgc2Vjb25kIGFkZGl0aW9uKSBpcyBtYXBwZWQgdG8gdGhlIFBPU0lYIHRpbWVzdGFtcCB0aGF0XG4gICAgIGhhcHBlbnMgMSBzZWNvbmQgbGF0ZXIgd2hpY2ggaXMgd2hhdCBQT1NJWCBta3RpbWUgd291bGQgdG8uIEFueVxuICAgICBmb3JtYWxseSBub24tZXhpc3RpbmcgVVRDIGRhdGUtdGltZSB3aXRoIGEgc2Vjb25kcyB2YWx1ZSBvZiA1OVxuICAgICAobGVhcCBzZWNvbmQgc3VidHJhY3Rpb24pIGlzIG1hcHBlZCBvbiB0aGUgUE9TSVggdGltZXN0YW1wIHRoYXRcbiAgICAgcmVwcmVzZW50cyB0aGlzIG5vbiBleGlzdGluZyBpbnN0YW50LiAqKVxuICBpZiBub3QgKGlzX2RhdGVfdmFsaWQgZGF0ZSAmJiBpc190aW1lX3ZhbGlkIHQpIHRoZW4gTm9uZSBlbHNlXG4gIGxldCBkID0gamRfb2ZfZGF0ZSBkYXRlIC0gamRfcG9zaXhfZXBvY2ggaW5cbiAgbGV0IGhoX3BzID0gSW50NjQuKG11bCAob2ZfaW50IGhoKSBwc19jb3VudF9pbl9ob3VyKSBpblxuICBsZXQgbW1fcHMgPSBJbnQ2NC4obXVsIChvZl9pbnQgbW0pIHBzX2NvdW50X2luX21pbikgaW5cbiAgbGV0IHNzX3BzID0gSW50NjQuKG11bCAob2ZfaW50IHNzKSBwc19jb3VudF9pbl9zKSBpblxuICBsZXQgcHMgPSBJbnQ2NC4oYWRkIGhoX3BzIChhZGQgbW1fcHMgc3NfcHMpKSBpblxuICBzdWJfc3BhbiAoZCwgcHMpIChTcGFuLm9mX2ludF9zIHR6X29mZnNldF9zKVxuXG5sZXQgdG9fZGF0ZV90aW1lID8odHpfb2Zmc2V0X3MgPSAwKSB0ID1cbiAgKCogVG8gcmVuZGVyIHRoZSB0aW1lc3RhbXAgaW4gdGhlIGdpdmVuIHRpbWUgem9uZSBvZmZzZXQgd2UgZmlyc3RcbiAgICAgZXhwcmVzcyB0aGUgdGltZXN0YW1wIGluIGxvY2FsIHRpbWUgYW5kIHRoZW4gY29tcHV0ZSB0aGUgZGF0ZVxuICAgICBmaWVsZHMgb24gdGhhdCBzdGFtcCBhcyBpZiBpdCB3ZXJlIFVUQy4gSWYgdGhlIGxvY2FsIHRpbWVzdGFtcCBpc1xuICAgICBub3QgaW4gW21pbjttYXhdIHRoZW4gaXRzIGRhdGUgZmllbGRzIGNhbm5vdCBiZSB2YWxpZCBhY2NvcmRpbmdcbiAgICAgdG8gdGhlIGNvbnN0cmFpbnRzIGd1YXJhbnRlZWQgYnkgUHRpbWUgYW5kIHdlIGZhbGxiYWNrIHRvIFVUQyxcbiAgICAgaS5lLiBhIHRpbWUgem9uZSBvZmZzZXQgb2YgMC5cblxuICAgICBXZSB0aGVuIGFwcGx5IHRoZSBmb2xsb3dpbmcgYWxnb3JpdGhtIHdob3NlIGRlc2NyaXB0aW9uIG1ha2VzXG4gICAgIHNlbnNlIG9uIGEgUE9TSVggdGltZXN0YW1wIChpLmUuIFVUQykgYnV0IHdvcmtzIGVxdWFsbHkgd2VsbCB0b1xuICAgICByZW5kZXIgdGhlIGRhdGUtdGltZSBmaWVsZHMgb2YgYSBsb2NhbCB0aW1lc3RhbXAuXG5cbiAgICAgV2UgZmlyc3QgdGFrZSB0YWtlIHRoZSBQT1NJWCBkYXkgY291bnQgW2RdIChlcXVpdmFsZW50IGJ5XG4gICAgIGRlZmluaXRpb24gdG8gYW4gVVRDIGRheSBjb3VudCkgZnJvbSB0aGUgZXBvY2gsIGNvbnZlcnQgaXQgdG8gYVxuICAgICBKdWxpYW4gZGF5IGFuZCB1c2UgdGhpcyB0byBnZXQgdGhlIHByb2xlcHRpYyBHcmVnb3JpYW4gY2FsZW5kYXJcbiAgICAgZGF0ZS4gVGhlIFBPU0lYIHBpY29zZWNvbmRzIFtwc10gaW4gdGhlIGRheSBhcmUgYXJlIGNvbnZlcnRlZCB0b1xuICAgICBhIGRheXRpbWUgYWNjb3JkaW5nIHRvIHRvIGl0cyB2YXJpb3VzIHVuaXRzLlxuXG4gICAgIEJ5IGRlZmluaXRpb24gbm8gUE9TSVggdGltZXN0YW1wIGNhbiByZXByZXNlbnQgYSBkYXRlLXRpbWUgd2l0aCBhXG4gICAgIHNlY29uZHMgdmFsdWUgb2YgNjAgKGxlYXAgc2Vjb25kIGFkZGl0aW9uKSBhbmQgdGh1cyB0aGUgZnVuY3Rpb25cbiAgICAgd2lsbCBuZXZlciByZXR1cm4gYSBkYXRlLXRpbWUgd2l0aCBzdWNoIGEgdmFsdWUuICBPbiB0aGUgb3RoZXJcbiAgICAgaGFuZCBpdCB3aWxsIHJldHVybiBhbiBpbmV4aXN0aW5nIFVUQyBkYXRlLXRpbWUgd2l0aCBhIHNlY29uZHNcbiAgICAgdmFsdWUgb2YgNTkgd2hlbmV2ZXIgYSBsZWFwIHNlY29uZCBpcyBzdWJ0cmFjdGVkIHNpbmNlIHRoZXJlIGlzIGFcbiAgICAgUE9TSVggdGltZXN0YW1wIHRoYXQgcmVwcmVzZW50cyB0aGlzIGluc3RhbnQuICopXG4gIGxldCAoZCwgcHMpLCB0el9vZmZzZXRfcyA9IG1hdGNoIGFkZF9zcGFuIHQgKFNwYW4ub2ZfaW50X3MgdHpfb2Zmc2V0X3MpIHdpdGhcbiAgfCBOb25lIC0+IHQsIDAgKCogZmFsbGJhY2sgdG8gVVRDICopXG4gIHwgU29tZSBsb2NhbCAtPiBsb2NhbCwgdHpfb2Zmc2V0X3NcbiAgaW5cbiAgbGV0IGpkID0gZCArIGpkX3Bvc2l4X2Vwb2NoIGluXG4gIGxldCBkYXRlID0gamRfdG9fZGF0ZSBqZCBpblxuICBsZXQgaGggPSBJbnQ2NC4odG9faW50IChkaXYgcHMgcHNfY291bnRfaW5faG91cikpIGluXG4gIGxldCBoaF9yZW0gPSBJbnQ2NC5yZW0gcHMgcHNfY291bnRfaW5faG91ciBpblxuICBsZXQgbW0gPSBJbnQ2NC4odG9faW50IChkaXYgaGhfcmVtIHBzX2NvdW50X2luX21pbikpIGluXG4gIGxldCBtbV9yZW0gPSBJbnQ2NC5yZW0gaGhfcmVtIHBzX2NvdW50X2luX21pbiBpblxuICBsZXQgc3MgPSBJbnQ2NC4odG9faW50IChkaXYgbW1fcmVtIHBzX2NvdW50X2luX3MpKSBpblxuICBkYXRlLCAoKGhoLCBtbSwgc3MpLCB0el9vZmZzZXRfcylcblxubGV0IG9mX2RhdGUgP3R6X29mZnNldF9zOih0eiA9IDApIGRhdGUgPSBvZl9kYXRlX3RpbWUgKGRhdGUsICgoMDAsIDAwLCAwMCksIHR6KSlcbmxldCB0b19kYXRlID90el9vZmZzZXRfcyB0ID0gZnN0ICh0b19kYXRlX3RpbWUgP3R6X29mZnNldF9zIHQpXG5sZXQgb2ZfeWVhciA/dHpfb2Zmc2V0X3MgeSA9IG9mX2RhdGUgP3R6X29mZnNldF9zICh5LCAwMSwgMDEpXG5sZXQgdG9feWVhciA/KHR6X29mZnNldF9zID0gMCkgdCA9XG4gIGxldCBkID0gbWF0Y2ggYWRkX3NwYW4gdCAoU3Bhbi5vZl9pbnRfcyB0el9vZmZzZXRfcykgd2l0aFxuICB8IE5vbmUgLT4gZnN0IHQgKCogZmFsbGJhY2sgdG8gVVRDICopIHwgU29tZSAobG9jYWxfZCwgXykgLT4gbG9jYWxfZFxuICBpblxuICBqZF90b195ZWFyIChkICsgamRfcG9zaXhfZXBvY2gpXG5cblxudHlwZSB3ZWVrZGF5ID0gWyBgU3VuIHwgYE1vbiB8IGBUdWUgfCBgV2VkIHwgYFRodSB8IGBGcmkgfCBgU2F0IF1cblxubGV0IHdlZWtkYXlfbnVtID8odHpfb2Zmc2V0X3MgPSAwKSB0ID1cbiAgbGV0IChkLCBfKSA9IFNwYW4uYWRkIHQgKFNwYW4ub2ZfaW50X3MgdHpfb2Zmc2V0X3MpIGluXG4gICgqIE4uQi4gaW4gY29udHJhc3QgdG8gW3RvX2RhdGVfdGltZV0gd2UgZG9uJ3QgY2FyZSBpZiB3ZSBmYWxsIG91dHNpZGVcbiAgICBbbWluO21heF0uIEV2ZW4gaWYgaXQgaGFwcGVucyB0aGUgcmVzdWx0IG9mIHRoZSBjb21wdXRhdGlvbiBpcyBzdGlsbFxuICAgICBjb3JyZWN0ICopXG4gIGxldCBpID0gKGQgKyA0ICgqIEVwb2NoLCBkID0gMCwgd2FzIGEgdGh1LCB3ZSB3YW50IDQgZm9yIHRoYXQgZGF5ICopKSBtb2QgNyBpblxuICBpZiBpIDwgMCB0aGVuIDcgKyBpIGVsc2UgaVxuXG5sZXQgd2Vla2RheSA9XG4gIGxldCB3ZGF5ID0gW3wgYFN1bjsgYE1vbjsgYFR1ZTsgYFdlZDsgYFRodTsgYEZyaTsgYFNhdDsgfF0gaW5cbiAgZnVuID90el9vZmZzZXRfcyB0IC0+IHdkYXkuKHdlZWtkYXlfbnVtID90el9vZmZzZXRfcyB0KVxuXG4oKiBSRkMgMzMzOSB0aW1lc3RhbXAgY29udmVyc2lvbnMgKilcblxuKCogUkZDIDMzMzkgdGltZXN0YW1wIHBhcnNlciAqKVxuXG50eXBlIGVycm9yX3JhbmdlID0gaW50ICogaW50XG50eXBlIHJmYzMzMzlfZXJyb3IgPVxuICBbIGBJbnZhbGlkX3N0YW1wIHwgYEVvaSB8IGBFeHBfY2hhcnMgb2YgY2hhciBsaXN0IHwgYFRyYWlsaW5nX2lucHV0IF1cblxubGV0IHBwX3JmYzMzMzlfZXJyb3IgcHBmID0gZnVuY3Rpb25cbnwgYEludmFsaWRfc3RhbXAgLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiQFtpbnZhbGlkQCB0aW1lQCBzdGFtcEBdXCJcbnwgYEVvaSAtPiBGb3JtYXQuZnByaW50ZiBwcGYgXCJAW3VuZXhwZWN0ZWRAIGVuZEAgb2ZAIGlucHV0QF1cIlxufCBgVHJhaWxpbmdfaW5wdXQgLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiQFt0cmFpbGluZ0AgaW5wdXRAXVwiXG58IGBFeHBfY2hhcnMgY3MgLT5cbiAgICBsZXQgcmVjIHBwX2NoYXJzIHBwZiA9IGZ1bmN0aW9uXG4gICAgfCBjIDo6IGNzIC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcIkAgJUNcIiBjOyBwcF9jaGFycyBwcGYgY3NcbiAgICB8IFtdIC0+ICgpXG4gICAgaW5cbiAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCJAW2V4cGVjdGVkQCBhQCBjaGFyYWN0ZXJAIGluOiVhQF1cIiBwcF9jaGFycyBjc1xuXG5sZXQgcHBfcmFuZ2UgcHBmIChzLCBlKSA9XG4gIGlmIHMgPSBlICB0aGVuIEZvcm1hdC5wcF9wcmludF9pbnQgcHBmIHMgZWxzZSBGb3JtYXQuZnByaW50ZiBwcGYgXCIlZC0lZFwiIHMgZVxuXG5sZXQgX3JmYzMzMzlfZXJyb3JfdG9fc3RyaW5nIChyLCBlcnIpID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiQFs8aD4lYTogJWFAXVwiIHBwX3JhbmdlIHIgcHBfcmZjMzMzOV9lcnJvciBlcnJcblxubGV0IHJmYzMzMzlfc3RyaW5nX2Vycm9yID0gZnVuY3Rpb25cbnwgT2sgXyBhcyB2IC0+IHYgfCBFcnJvciAoYFJGQzMzMzkgZSkgLT4gRXJyb3IgKF9yZmMzMzM5X2Vycm9yX3RvX3N0cmluZyBlKVxuXG5sZXQgcmZjMzMzOV9lcnJvcl90b19tc2cgPSBmdW5jdGlvblxufCBPayBfIGFzIHYgLT4gdiB8IEVycm9yIChgUkZDMzMzOSBlKSAtPlxuICAgIEVycm9yIChgTXNnIChfcmZjMzMzOV9lcnJvcl90b19zdHJpbmcgZSkpXG5cbmV4Y2VwdGlvbiBSRkMzMzM5IG9mIChpbnQgKiBpbnQpICogcmZjMzMzOV9lcnJvciAgICAgICAgICAgICAgICAgICgqIEludGVybmFsICopXG5cbmxldCBlcnJvciByIGUgPSByYWlzZSAoUkZDMzMzOSAociwgZSkpXG5sZXQgZXJyb3JfcG9zIHAgZSA9IGVycm9yIChwLCBwKSBlXG5sZXQgZXJyb3JfZXhwX2RpZ2l0IHAgPVxuICBlcnJvcl9wb3MgcCAoYEV4cF9jaGFycyBbJzAnOyAnMSc7ICcyJzsgJzMnOyAnNCc7ICc1JzsgJzYnOyAnNyc7ICc4JzsgJzknXSlcblxubGV0IGlzX2RpZ2l0ID0gZnVuY3Rpb24gJzAnIC4uICc5JyAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuXG5sZXQgcGFyc2VfZGlnaXRzIH5jb3VudCBwb3MgbWF4IHMgPVxuICBsZXQgc3RvcCA9IHBvcyArIGNvdW50IC0gMSBpblxuICBpZiBzdG9wID4gbWF4IHRoZW4gZXJyb3JfcG9zIG1heCBgRW9pIGVsc2VcbiAgbGV0IHJlYyBsb29wIGsgYWNjID1cbiAgICBpZiBrID4gc3RvcCB0aGVuIGFjYyBlbHNlXG4gICAgaWYgaXNfZGlnaXQgcy5ba10gdGhlbiBsb29wIChrKzEpIChhY2MgKiAxMCArIENoYXIuY29kZSBzLltrXSAtIDB4MzApIGVsc2VcbiAgICBlcnJvcl9leHBfZGlnaXQga1xuICBpblxuICBsb29wIHBvcyAwXG5cbmxldCBwYXJzZV9jaGFyIGMgcG9zIG1heCBzID1cbiAgaWYgcG9zID4gbWF4IHRoZW4gZXJyb3JfcG9zIG1heCBgRW9pIGVsc2VcbiAgaWYgcy5bcG9zXSA9IGMgdGhlbiAoKSBlbHNlIGVycm9yX3BvcyBwb3MgKGBFeHBfY2hhcnMgW2NdKVxuXG5sZXQgcGFyc2VfZHRfc2VwIH5zdHJpY3QgcG9zIG1heCBzID1cbiAgbGV0IGlzX2R0X3NlcCA9IGZ1bmN0aW9uXG4gIHwgJ1QnIC0+IHRydWVcbiAgfCAndCcgfCAnICcgd2hlbiBub3Qgc3RyaWN0IC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG4gIGluXG4gIGlmIHBvcyA+IG1heCB0aGVuIGVycm9yX3BvcyBtYXggYEVvaSBlbHNlXG4gIGlmIGlzX2R0X3NlcCBzLltwb3NdIHRoZW4gKCkgZWxzZVxuICBlcnJvcl9wb3MgcG9zIChgRXhwX2NoYXJzIChbJ1QnXSBAIGlmIHN0cmljdCB0aGVuIFtdIGVsc2UgWyd0JzsgJyAnXSkpXG5cbmxldCBkZWNpZGVfZnJhY19vcl90eiB+c3RyaWN0IHBvcyBtYXggcyA9XG4gIGlmIHBvcyA+IG1heCB0aGVuIGVycm9yX3BvcyBtYXggYEVvaSBlbHNlXG4gIG1hdGNoIHMuW3Bvc10gd2l0aFxuICB8ICcuJyAtPiBgRnJhY1xuICB8ICcrJyB8ICctJyB8ICdaJyAtPiBgVHpcbiAgfCAneicgd2hlbiBub3Qgc3RyaWN0ICAtPiBgVHpcbiAgfCBjIC0+XG4gICAgICBsZXQgY2hhcnMgPSBbJy4nOyAnKyc7ICctJzsgJ1onXSBAIGlmIHN0cmljdCB0aGVuIFtdIGVsc2UgWyd6J10gaW5cbiAgICAgIGVycm9yX3BvcyBwb3MgKGBFeHBfY2hhcnMgY2hhcnMpXG5cbmxldCBwYXJzZV9mcmFjX3BzIHBvcyBtYXggcyA9XG4gIGlmIHBvcyA+IG1heCB0aGVuIGVycm9yX3BvcyBtYXggYEVvaSBlbHNlXG4gIGlmIG5vdCAoaXNfZGlnaXQgcy5bcG9zXSkgdGhlbiBlcnJvcl9leHBfZGlnaXQgcG9zIGVsc2VcbiAgbGV0IHJlYyBsb29wIGsgYWNjIHBvdyA9XG4gICAgaWYgayA+IG1heCB0aGVuIGVycm9yX3BvcyBtYXggYEVvaSBlbHNlXG4gICAgaWYgbm90IChpc19kaWdpdCBzLltrXSkgdGhlbiAoU29tZSBhY2MpLCBrIGVsc2VcbiAgICBsZXQgY291bnQgPSBrIC0gcG9zICsgMSBpblxuICAgIGlmIGNvdW50ID4gMTIgdGhlbiAoKiB0cnVuY2F0ZSAqKSBsb29wIChrICsgMSkgYWNjIHBvdyBlbHNlXG4gICAgbGV0IHBvdyA9IEludDY0LmRpdiBwb3cgMTBMIGluXG4gICAgbGV0IGFjYyA9IEludDY0LihhZGQgYWNjIChtdWwgKG9mX2ludCAoQ2hhci5jb2RlIHMuW2tdIC0gMHgzMCkpIHBvdykpIGluXG4gICAgbG9vcCAoayArIDEpIGFjYyBwb3dcbiAgaW5cbiAgbG9vcCBwb3MgMEwgcHNfY291bnRfaW5fc1xuXG5sZXQgcGFyc2VfdHpfcyB+c3RyaWN0IHBvcyBtYXggcyA9XG4gIGxldCBwYXJzZV90el9tYWcgc2lnbiBwb3MgPVxuICAgIGxldCBoaF9wb3MgPSBwb3MgaW5cbiAgICBsZXQgaGggPSBwYXJzZV9kaWdpdHMgfmNvdW50OjIgaGhfcG9zIG1heCBzIGluXG4gICAgbGV0IG1tLCBtbV9wb3MgPSBtYXRjaCBzdHJpY3Qgd2l0aFxuICAgIHwgdHJ1ZSAtPlxuICAgICAgICBsZXQgbW1fcG9zID0gaGhfcG9zICsgMyBpblxuICAgICAgICBwYXJzZV9jaGFyICc6JyAobW1fcG9zIC0gMSkgbWF4IHM7XG4gICAgICAgIHBhcnNlX2RpZ2l0cyB+Y291bnQ6MiBtbV9wb3MgbWF4IHMsIG1tX3Bvc1xuICAgIHwgZmFsc2UgLT5cbiAgICAgICAgbGV0IG5leHQgPSBoaF9wb3MgKyAyIGluXG4gICAgICAgIGlmIG5leHQgPiBtYXggfHwgbm90IChzLltuZXh0XSA9ICc6JyB8fCBpc19kaWdpdCBzLltuZXh0XSlcbiAgICAgICAgdGhlbiAoMCwgaGhfcG9zICgqIGVuZCBwb3Mgb2YgcGFyc2UgLSAxLCBvbmUgaXMgYWRkZWQgYXQgdGhlIGVuZCAqKSlcbiAgICAgICAgZWxzZVxuICAgICAgICBsZXQgbW1fcG9zID0gaWYgcy5bbmV4dF0gPSAnOicgdGhlbiBoaF9wb3MgKyAzIGVsc2UgaGhfcG9zICsgMiBpblxuICAgICAgICBwYXJzZV9kaWdpdHMgfmNvdW50OjIgbW1fcG9zIG1heCBzLCBtbV9wb3NcbiAgICBpblxuICAgIGlmIGhoID4gMjMgdGhlbiBlcnJvciAoaGhfcG9zLCBoaF9wb3MgKyAxKSBgSW52YWxpZF9zdGFtcCBlbHNlXG4gICAgaWYgbW0gPiA1OSB0aGVuIGVycm9yIChtbV9wb3MsIG1tX3BvcyArIDEpIGBJbnZhbGlkX3N0YW1wIGVsc2VcbiAgICBsZXQgc2VjcyA9IGhoICogMzYwMCArIG1tICogNjAgaW5cbiAgICBsZXQgdHpfcyA9IG1hdGNoIHNlY3MgPSAwICYmIHNpZ24gPSAtMSB3aXRoXG4gICAgfCB0cnVlIC0+IE5vbmUgKCogLTAwOjAwIGNvbnZlbnRpb24gKilcbiAgICB8IGZhbHNlIC0+IFNvbWUgKHNpZ24gKiBzZWNzKVxuICAgIGluXG4gICAgdHpfcywgbW1fcG9zICsgMVxuICBpblxuICBpZiBwb3MgPiBtYXggdGhlbiBlcnJvcl9wb3MgbWF4IGBFb2kgZWxzZVxuICBtYXRjaCBzLltwb3NdIHdpdGhcbiAgfCAnWicgLT4gU29tZSAwLCBwb3NcbiAgfCAneicgd2hlbiBub3Qgc3RyaWN0IC0+IFNvbWUgMCwgcG9zXG4gIHwgJysnIC0+IHBhcnNlX3R6X21hZyAoIDEpIChwb3MgKyAxKVxuICB8ICctJyAtPiBwYXJzZV90el9tYWcgKC0xKSAocG9zICsgMSlcbiAgfCBjIC0+XG4gICAgICBsZXQgY2hhcnMgPSBbJysnOyAnLSc7ICdaJ10gQCBpZiBzdHJpY3QgdGhlbiBbXSBlbHNlIFsneiddIGluXG4gICAgICBlcnJvcl9wb3MgcG9zIChgRXhwX2NoYXJzIGNoYXJzKVxuXG5sZXQgb2ZfcmZjMzMzOSA/KHN0cmljdCA9IGZhbHNlKSA/KHN1YiA9IGZhbHNlKSA/KHN0YXJ0ID0gMCkgcyA9XG4gIHRyeVxuICAgIGxldCBzX2xlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgIGxldCBtYXggPSBzX2xlbiAtIDEgaW5cbiAgICBpZiBzX2xlbiA9IDAgfHwgc3RhcnQgPCAwIHx8IHN0YXJ0ID4gbWF4IHRoZW4gZXJyb3JfcG9zIHN0YXJ0IGBFb2kgZWxzZVxuICAgIGxldCB5X3BvcyA9IHN0YXJ0IGluXG4gICAgbGV0IG1fcG9zID0geV9wb3MgKyA1IGluXG4gICAgbGV0IGRfcG9zID0gbV9wb3MgKyAzIGluXG4gICAgbGV0IGhoX3BvcyA9IGRfcG9zICsgMyBpblxuICAgIGxldCBtbV9wb3MgPSBoaF9wb3MgKyAzIGluXG4gICAgbGV0IHNzX3BvcyA9IG1tX3BvcyArIDMgaW5cbiAgICBsZXQgZGVjaWRlX3BvcyA9IHNzX3BvcyArIDIgaW5cbiAgICBsZXQgeSA9IHBhcnNlX2RpZ2l0cyB+Y291bnQ6NCB5X3BvcyBtYXggcyBpblxuICAgIHBhcnNlX2NoYXIgJy0nIChtX3BvcyAtIDEpIG1heCBzO1xuICAgIGxldCBtID0gcGFyc2VfZGlnaXRzIH5jb3VudDoyIG1fcG9zIG1heCBzIGluXG4gICAgcGFyc2VfY2hhciAnLScgKGRfcG9zIC0gMSkgbWF4IHM7XG4gICAgbGV0IGQgPSBwYXJzZV9kaWdpdHMgfmNvdW50OjIgZF9wb3MgbWF4IHMgaW5cbiAgICBwYXJzZV9kdF9zZXAgfnN0cmljdCAoaGhfcG9zIC0gMSkgbWF4IHM7XG4gICAgbGV0IGhoID0gIHBhcnNlX2RpZ2l0cyB+Y291bnQ6MiBoaF9wb3MgbWF4IHMgaW5cbiAgICBwYXJzZV9jaGFyICc6JyAobW1fcG9zIC0gMSkgbWF4IHM7XG4gICAgbGV0IG1tID0gIHBhcnNlX2RpZ2l0cyB+Y291bnQ6MiBtbV9wb3MgbWF4IHMgaW5cbiAgICBwYXJzZV9jaGFyICc6JyAoc3NfcG9zIC0gMSkgbWF4IHM7XG4gICAgbGV0IHNzID0gcGFyc2VfZGlnaXRzIH5jb3VudDoyIHNzX3BvcyBtYXggcyBpblxuICAgIGxldCBmcmFjLCB0el9wb3MgPSBtYXRjaCBkZWNpZGVfZnJhY19vcl90eiB+c3RyaWN0IGRlY2lkZV9wb3MgbWF4IHMgd2l0aFxuICAgIHwgYEZyYWMgLT4gcGFyc2VfZnJhY19wcyAoZGVjaWRlX3BvcyArIDEpIG1heCBzXG4gICAgfCBgVHogLT4gTm9uZSwgZGVjaWRlX3Bvc1xuICAgIGluXG4gICAgbGV0IHR6X3Nfb3B0LCBsYXN0X3BvcyA9IHBhcnNlX3R6X3MgfnN0cmljdCB0el9wb3MgbWF4IHMgaW5cbiAgICBsZXQgdHpfcyA9IG1hdGNoIHR6X3Nfb3B0IHdpdGggTm9uZSAtPiAwIHwgU29tZSBzIC0+IHMgaW5cbiAgICBtYXRjaCBvZl9kYXRlX3RpbWUgKCh5LCBtLCBkKSwgKChoaCwgbW0sIHNzKSwgdHpfcykpIHdpdGhcbiAgICB8IE5vbmUgLT4gZXJyb3IgKHN0YXJ0LCBsYXN0X3BvcykgYEludmFsaWRfc3RhbXBcbiAgICB8IFNvbWUgdCAtPlxuICAgICAgICBsZXQgdCwgdHpfcyA9IG1hdGNoIGZyYWMgd2l0aFxuICAgICAgICB8IE5vbmUgfCBTb21lIDBMIC0+IHQsIHR6X3NcbiAgICAgICAgfCBTb21lIGZyYWMgLT5cbiAgICAgICAgICAgIG1hdGNoIGFkZF9zcGFuIHQgKDAsIGZyYWMpIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBlcnJvciAoc3RhcnQsIGxhc3RfcG9zKSBgSW52YWxpZF9zdGFtcFxuICAgICAgICAgICAgfCBTb21lIHQgLT4gdCwgdHpfc1xuICAgICAgICBpblxuICAgICAgICBpZiBub3Qgc3ViICYmIGxhc3RfcG9zIDw+IG1heFxuICAgICAgICB0aGVuIGVycm9yX3BvcyAobGFzdF9wb3MgKyAxKSBgVHJhaWxpbmdfaW5wdXRcbiAgICAgICAgZWxzZSBPayAodCwgdHpfc19vcHQsIGxhc3RfcG9zIC0gc3RhcnQgKyAxKVxuICB3aXRoIFJGQzMzMzkgKHIsIGUpIC0+IEVycm9yIChgUkZDMzMzOSAociwgZSkpXG5cbigqIFJGQyAzMzM5IHRpbWVzdGFtcCBmb3JtYXR0ZXIgKilcblxubGV0IHJmYzMzMzlfYWRqdXN0X3R6X29mZnNldCB0el9vZmZzZXRfcyA9XG4gICgqIFRoZSBSRkMgMzMzOSB0aW1lIHpvbmUgb2Zmc2V0IGZpZWxkIGlzIGxpbWl0ZWQgaW4gZXhwcmVzc2lvbiB0b1xuICAgICB0aGUgYm91bmRzIGJlbG93IHdpdGggbWludXRlIHByZWNpc2lvbi4gSWYgdGhlIHJlcXVlc3RlZCB0aW1lXG4gICAgIHpvbmUgb2Zmc2V0IGV4Y2VlZHMgdGhlc2UgYm91bmRzIG9yIGlzIG5vdCBhbiAqaW50ZWdyYWwqIG51bWJlclxuICAgICBvZiBtaW51dGVzIHdlIHNpbXBseSB1c2UgVVRDLiBBbiBhbHRlcm5hdGl2ZSB3b3VsZCBiZSB0b1xuICAgICBjb21wZW5zYXRlIHRoZSBvZmZzZXQgKmFuZCogdGhlIHRpbWVzdGFtcCBidXQgaXQncyBtb3JlXG4gICAgIGNvbXBsaWNhdGVkIHRvIGV4cGxhaW4gYW5kIG1heWJlIG1vcmUgc3VycHJpc2luZyB0byB0aGUgdXNlci4gKilcbiAgbGV0IG1pbiA9IC04NjM0MCAoKiAtMjNoNTkgaW4gc2VjcyAqKSBpblxuICBsZXQgbWF4ID0gKzg2MzQwICgqICsyM2g1OSBpbiBzZWNzICopIGluXG4gIGlmIG1pbiA8PSB0el9vZmZzZXRfcyAmJiB0el9vZmZzZXRfcyA8PSBtYXggJiYgdHpfb2Zmc2V0X3MgbW9kIDYwID0gMFxuICB0aGVuIHR6X29mZnNldF9zLCBmYWxzZVxuICBlbHNlIDAgKCogVVRDICopLCB0cnVlXG5cbmxldCBzX2ZyYWNfb2ZfcHMgZnJhYyBwcyA9XG4gIEludDY0LihkaXYgKHJlbSBwcyBwc19jb3VudF9pbl9zKSBTcGFuLmZyYWNfZGl2LihmcmFjKSlcblxubGV0IHRvX3JmYzMzMzkgPyhzcGFjZSA9IGZhbHNlKSA/ZnJhY19zOihmcmFjID0gMCkgP3R6X29mZnNldF9zIChfLCBwcyBhcyB0KSA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDI1NSBpblxuICBsZXQgdHpfb2Zmc2V0X3MsIHR6X3Vua25vd24gPSBtYXRjaCB0el9vZmZzZXRfcyB3aXRoXG4gIHwgU29tZSB0eiAtPiByZmMzMzM5X2FkanVzdF90el9vZmZzZXQgdHpcbiAgfCBOb25lIC0+IDAsIHRydWVcbiAgaW5cbiAgbGV0ICh5LCBtLCBkKSwgKChoaCwgc3MsIG1tKSwgdHpfb2Zmc2V0X3MpID0gdG9fZGF0ZV90aW1lIH50el9vZmZzZXRfcyB0IGluXG4gIGxldCBkdF9zZXAgPSBpZiBzcGFjZSB0aGVuICcgJyBlbHNlICdUJyBpblxuICBQcmludGYuYnByaW50ZiBidWYgXCIlMDRkLSUwMmQtJTAyZCVjJTAyZDolMDJkOiUwMmRcIiB5IG0gZCBkdF9zZXAgaGggc3MgbW07XG4gIGxldCBmcmFjID0gaWYgZnJhYyA8IDAgdGhlbiAwIGVsc2UgKGlmIGZyYWMgPiAxMiB0aGVuIDEyIGVsc2UgZnJhYykgaW5cbiAgaWYgZnJhYyA8PiAwIHRoZW4gUHJpbnRmLmJwcmludGYgYnVmIFwiLiUwKkxkXCIgZnJhYyAoc19mcmFjX29mX3BzIGZyYWMgcHMpO1xuICBpZiB0el9vZmZzZXRfcyA9IDAgJiYgbm90IHR6X3Vua25vd24gdGhlbiBQcmludGYuYnByaW50ZiBidWYgXCJaXCIgZWxzZVxuICBiZWdpblxuICAgIGxldCB0el9zaWduID0gaWYgdHpfb2Zmc2V0X3MgPCAwIHx8IHR6X3Vua25vd24gdGhlbiAnLScgZWxzZSAnKycgaW5cbiAgICBsZXQgdHpfbWluID0gYWJzICh0el9vZmZzZXRfcyAvIDYwKSBpblxuICAgIGxldCB0el9oaCA9IHR6X21pbiAvIDYwIGluXG4gICAgbGV0IHR6X21tID0gdHpfbWluIG1vZCA2MCBpblxuICAgIFByaW50Zi5icHJpbnRmIGJ1ZiBcIiVjJTAyZDolMDJkXCIgdHpfc2lnbiB0el9oaCB0el9tbTtcbiAgZW5kO1xuICBCdWZmZXIuY29udGVudHMgYnVmXG5cbmxldCBwcF9yZmMzMzM5ID9zcGFjZSA/ZnJhY19zID90el9vZmZzZXRfcyAoKSBwcGYgdCA9XG4gIEZvcm1hdC5mcHJpbnRmIHBwZiBcIiVzXCIgKHRvX3JmYzMzMzkgP3NwYWNlID9mcmFjX3MgP3R6X29mZnNldF9zIHQpXG5cbigqIFByZXR0eSBwcmludGluZyAqKVxuXG5sZXQgcHBfaHVtYW4gP2ZyYWNfczooZnJhYyA9IDApID90el9vZmZzZXRfcyAoKSBwcGYgKF8sIHBzIGFzIHQpID1cbiAgbGV0IHR6X29mZnNldF9zLCB0el91bmtub3duID0gbWF0Y2ggdHpfb2Zmc2V0X3Mgd2l0aFxuICB8IFNvbWUgdHogLT4gcmZjMzMzOV9hZGp1c3RfdHpfb2Zmc2V0IHR6XG4gIHwgTm9uZSAtPiAwLCB0cnVlXG4gIGluXG4gIGxldCAoeSwgbSwgZCksICgoaGgsIHNzLCBtbSksIHR6X29mZnNldF9zKSA9IHRvX2RhdGVfdGltZSB+dHpfb2Zmc2V0X3MgdCBpblxuICBGb3JtYXQuZnByaW50ZiBwcGYgXCIlMDRkLSUwMmQtJTAyZCAlMDJkOiUwMmQ6JTAyZFwiIHkgbSBkIGhoIHNzIG1tO1xuICBsZXQgZnJhYyA9IGlmIGZyYWMgPCAwIHRoZW4gMCBlbHNlIChpZiBmcmFjID4gMTIgdGhlbiAxMiBlbHNlIGZyYWMpIGluXG4gIGlmIGZyYWMgPD4gMCB0aGVuIEZvcm1hdC5mcHJpbnRmIHBwZiBcIi4lMCpMZFwiIGZyYWMgKHNfZnJhY19vZl9wcyBmcmFjIHBzKTtcbiAgbGV0IHR6X3NpZ24gPSBpZiB0el9vZmZzZXRfcyA8IDAgfHwgdHpfdW5rbm93biB0aGVuICctJyBlbHNlICcrJyBpblxuICBsZXQgdHpfbWluID0gYWJzICh0el9vZmZzZXRfcyAvIDYwKSBpblxuICBsZXQgdHpfaGggPSB0el9taW4gLyA2MCBpblxuICBsZXQgdHpfbW0gPSB0el9taW4gbW9kIDYwIGluXG4gIEZvcm1hdC5mcHJpbnRmIHBwZiBcIiAlYyUwMmQ6JTAyZFwiIHR6X3NpZ24gdHpfaGggdHpfbW07XG4gICgpXG5cbmxldCBwcCA9IHBwX2h1bWFuIH50el9vZmZzZXRfczowICgpXG5sZXQgZHVtcCA9IFNwYW4uZHVtcFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NoZWNrX2JvdW5kIiwiY2FtbF9ncmVhdGVyZXF1YWwiLCJjYW1sX2dyZWF0ZXJ0aGFuIiwiY2FtbF9pbnQ2NF9hZGQiLCJjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSIsImNhbWxfaW50NjRfZGl2IiwiY2FtbF9pbnQ2NF9tb2QiLCJjYW1sX2ludDY0X211bCIsImNhbWxfaW50NjRfb2ZfZmxvYXQiLCJjYW1sX2ludDY0X29mX2ludDMyIiwiY2FtbF9pbnQ2NF9zdWIiLCJjYW1sX2ludDY0X3RvX2Zsb2F0IiwiY2FtbF9pbnQ2NF90b19pbnQzMiIsImNhbWxfaW50X2NvbXBhcmUiLCJjYW1sX2xlc3N0aGFuIiwiY2FtbF9saXN0X29mX2pzX2FycmF5IiwiY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlIiwiY2FtbF9ub3RlcXVhbCIsImNhbWxfb2JqX2R1cCIsImNhbWxfc3RyaW5nX2dldCIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiY2FtbF9jYWxsNCIsImEzIiwiY2FtbF9jYWxsNiIsImE0IiwiYTUiLCJjYW1sX2NhbGw3IiwiYTYiLCJnbG9iYWxfZGF0YSIsImFjYyIsInBzX2NvdW50X2luX3BzIiwicHNfY291bnRfaW5fbnMiLCJwc19jb3VudF9pbl8xMDBucyIsInBzX2NvdW50X2luX3VzIiwicHNfY291bnRfaW5fMTAwdXMiLCJwc19jb3VudF9pbl9tcyIsInBzX2NvdW50X2luXzEwMG1zIiwicHNfY291bnRfaW5fcyIsInBzX2NvdW50X2luX21pbiIsInBzX2NvdW50X2luX2hvdXIiLCJwc19jb3VudF9pbl9kYXkiLCJwc19kYXlfbWF4IiwiZXBvY2giLCJ6ZXJvIiwiU3RkbGliX0Zvcm1hdCIsIlN0ZGxpYiIsIlN0ZGxpYl9CdWZmZXIiLCJTdGRsaWJfUHJpbnRmIiwiU3RkbGliX0ludDY0IiwibWluIiwic3RkbGliX2FicyIsIm5lZyIsInBhcmFtIiwiZCIsInBzIiwiYWRkIiwicHMxIiwiZDEiLCJwczAiLCJkMCIsInBzX2NsYW1wIiwic3ViIiwiczAiLCJzMSIsImFicyIsInMiLCJ2Iiwib2ZfZF9wcyIsInVuc2FmZV9vZl9kX3BzIiwidW5zYWZlX29mX2RfcHNfb3B0aW9uIiwidG9fZF9wcyIsIm9mX2ludF9zIiwic2VjcyIsImRheV9pbnRfbWluIiwiZGF5X2ludF9tYXgiLCJ0b19pbnRfcyIsImRheXNfcyIsImRheV9zIiwibWluX2ludF9mbG9hdCIsIm1heF9pbnRfZmxvYXQiLCJvZl9mbG9hdF9zIiwiZGF5cyIsInJlbV9zIiwibWF0Y2giLCJmcmFjX3MiLCJyZW1fcHMiLCJmcmFjX3BzIiwidG9fZmxvYXRfcyIsImRheV9yZW1fcHMiLCJlcXVhbCIsImNvbXBhcmUiLCJjIiwicm91bmRfZGl2IiwiYSIsImIiLCJmcmFjX2RpdiIsInJvdW5kIiwiZnJhYyIsInQiLCJzaWduIiwicnBzIiwidHJ1bmNhdGUiLCJ0cHMiLCJ0cnVuY2F0ZV9kb3duIiwiY3N0XzEiLCJkdW1wIiwicHBmIiwiZGl2aWRlX3BzIiwiY2FycnkiLCJoaSIsImxvIiwiaGlfZCIsImxvX2QiLCJjc3RfZF9zIiwicHBfdW5pdCIsImhpZ2hlcl9zdHIiLCJoaV9zdHIiLCJmcmFjX2xpbWl0IiwicHBfdW5pdF9pbnRlZ3JhbCIsImgiLCJtcyIsImwiLCJjc3RfZGQiLCJjc3RfZGgiLCJjc3RfZG1pbiIsImNzdF9kcyIsImNzdF9keSIsImNzdF9taW4iLCJwcCIsIm0iLCJjc3RfbXMiLCJjc3RfdXMiLCJtYXhfZCIsInJlbV9kIiwieSIsIm9mX3NwYW4iLCJzcGFuIiwidG9fc3BhbiIsImlzX2VhcmxpZXIiLCJ0aGFuIiwiaXNfbGF0ZXIiLCJhZGRfc3BhbiIsInN1Yl9zcGFuIiwiZGlmZiIsInQxIiwidDAiLCJtbGVuIiwib2ZfZGF0ZV90aW1lIiwidHpfb2Zmc2V0X3MiLCJzcyIsIm1tIiwiaGgiLCJkYXRlIiwiZGF5IiwibW9udGgiLCJ5ZWFyIiwiaGhfcHMiLCJtbV9wcyIsInNzX3BzIiwidG9fZGF0ZV90aW1lIiwib3B0IiwibG9jYWwiLCJqZCIsImUiLCJoaF9yZW0iLCJtbV9yZW0iLCJvZl9kYXRlIiwidHoiLCJ0b19kYXRlIiwib2ZfeWVhciIsInRvX3llYXIiLCJsb2NhbF9kIiwid2Vla2RheV9udW0iLCJpIiwid2RheSIsIndlZWtkYXkiLCJjc3QiLCJjc3RfaW5wdXQiLCJwcF9yZmMzMzM5X2Vycm9yIiwiY3MiLCJwcF9jaGFycyIsInBwX3JhbmdlIiwiY3N0X2giLCJyZmMzMzM5X2Vycm9yX3RvX3N0cmluZyIsImVyciIsInIiLCJyZmMzMzM5X3N0cmluZ19lcnJvciIsInJmYzMzMzlfZXJyb3JfdG9fbXNnIiwiUkZDMzMzOSIsImR1bW15IiwiZXJyb3IiLCJlcnJvcl9wb3MiLCJwIiwiaXNfZGlnaXQiLCJwYXJzZV9kaWdpdHMiLCJjb3VudCIsInBvcyIsIm1heCIsInN0b3AiLCJrIiwicGFyc2VfY2hhciIsIm9mX3JmYzMzMzkiLCJzdHJpY3QiLCJzdGFydCIsInNfbGVuIiwibV9wb3MiLCJkX3BvcyIsImhoX3BvcyIsIm1tX3BvcyIsInNzX3BvcyIsImRlY2lkZV9wb3MiLCJzd2l0Y2hlciIsImNoYXJzIiwicG93IiwidHpfcG9zIiwicGFyc2VfdHpfbWFnIiwibmV4dCIsInR6X3MiLCJsYXN0X3BvcyIsInR6X3Nfb3B0IiwiZXhuIiwicmZjMzMzOV9hZGp1c3RfdHpfb2Zmc2V0Iiwic19mcmFjX29mX3BzIiwiY3N0XzBfTGQiLCJ0b19yZmMzMzM5Iiwic3BhY2UiLCJidWYiLCJ0el91bmtub3duIiwiZHRfc2VwIiwidHpfc2lnbiIsInR6X21pbiIsInR6X2hoIiwidHpfbW0iLCJwcF9yZmMzMzM5IiwicHBfaHVtYW4iXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyw2QkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxpQkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsSUFBQUMsc0JB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QTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRURqc0JuQyIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjI5ODU1LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6ImZtdC5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvZm10L2ZtdC5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBDb3B5cmlnaHQgKGMpIDIwMTQgVGhlIGZtdCBwcm9ncmFtbWVycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxubGV0IGludmFsaWRfYXJnJyA9IGludmFsaWRfYXJnXG5cbigqIEVycm9ycyAqKVxuXG5sZXQgZXJyX3N0cl9mb3JtYXR0ZXIgPSBcIkZvcm1hdC5zdHJfZm9ybWF0dGVyIGNhbid0IGJlIHNldC5cIlxuXG4oKiBTdGFuZGFyZCBvdXRwdXRzICopXG5cbmxldCBzdGRvdXQgPSBGb3JtYXQuc3RkX2Zvcm1hdHRlclxubGV0IHN0ZGVyciA9IEZvcm1hdC5lcnJfZm9ybWF0dGVyXG5cbigqIEZvcm1hdHRpbmcgKilcblxubGV0IHBmID0gRm9ybWF0LmZwcmludGZcbmxldCBwciA9IEZvcm1hdC5wcmludGZcbmxldCBlcHIgPSBGb3JtYXQuZXByaW50ZlxubGV0IHN0ciA9IEZvcm1hdC5hc3ByaW50ZlxubGV0IGtwZiA9IEZvcm1hdC5rZnByaW50ZlxubGV0IGtzdHIgPSBGb3JtYXQua2FzcHJpbnRmXG5sZXQgZmFpbHdpdGggZm10ID0ga3N0ciBmYWlsd2l0aCBmbXRcbmxldCBmYWlsd2l0aF9ub3RyYWNlIGZtdCA9IGtzdHIgKGZ1biBzIC0+IHJhaXNlX25vdHJhY2UgKEZhaWx1cmUgcykpIGZtdFxubGV0IGludmFsaWRfYXJnIGZtdCA9IGtzdHIgaW52YWxpZF9hcmcgZm10XG5sZXQgZXJyb3IgZm10ID0ga3N0ciAoZnVuIHMgLT4gRXJyb3IgcykgZm10XG5sZXQgZXJyb3JfbXNnIGZtdCA9IGtzdHIgKGZ1biBzIC0+IEVycm9yIChgTXNnIHMpKSBmbXRcblxuKCogRm9ybWF0dGVycyAqKVxuXG50eXBlICdhIHQgPSBGb3JtYXQuZm9ybWF0dGVyIC0+ICdhIC0+IHVuaXRcblxubGV0IGZsdXNoIHBwZiBfID0gRm9ybWF0LnBwX3ByaW50X2ZsdXNoIHBwZiAoKVxubGV0IG5vcCBmbXQgcHBmID0gKClcbmxldCBhbnkgZm10IHBwZiBfID0gcGYgcHBmIGZtdFxubGV0IHVzaW5nIGYgcHAgcHBmIHYgPSBwcCBwcGYgKGYgdilcbmxldCBjb25zdCBwcF92IHYgcHBmIF8gPSBwcF92IHBwZiB2XG5sZXQgaWYnIGJvb2wgcHAgPSBpZiBib29sIHRoZW4gcHAgZWxzZSBub3BcbmxldCBmbXQgZm10IHBwZiA9IHBmIHBwZiBmbXRcblxuKCogU2VwYXJhdG9ycyAqKVxuXG5sZXQgY3V0IHBwZiBfID0gRm9ybWF0LnBwX3ByaW50X2N1dCBwcGYgKClcbmxldCBzcCBwcGYgXyA9IEZvcm1hdC5wcF9wcmludF9zcGFjZSBwcGYgKClcbmxldCBzcHMgbiBwcGYgXyA9IEZvcm1hdC5wcF9wcmludF9icmVhayBwcGYgbiAwXG5sZXQgY29tbWEgcHBmIF8gPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiBcIixcIjsgc3AgcHBmICgpXG5sZXQgc2VtaSBwcGYgXyA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmIFwiO1wiOyBzcCBwcGYgKClcblxuKCogU2VxdWVuY2luZyAqKVxuXG5sZXQgaXRlciA/c2VwOihwcF9zZXAgPSBjdXQpIGl0ZXIgcHBfZWx0IHBwZiB2ID1cbiAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgbGV0IHBwX2VsdCB2ID1cbiAgICBpZiAhaXNfZmlyc3QgdGhlbiAoaXNfZmlyc3QgOj0gZmFsc2UpIGVsc2UgcHBfc2VwIHBwZiAoKTtcbiAgICBwcF9lbHQgcHBmIHZcbiAgaW5cbiAgaXRlciBwcF9lbHQgdlxuXG5sZXQgaXRlcl9iaW5kaW5ncyA/c2VwOihwcF9zZXAgPSBjdXQpIGl0ZXIgcHBfYmluZGluZyBwcGYgdiA9XG4gIGxldCBpc19maXJzdCA9IHJlZiB0cnVlIGluXG4gIGxldCBwcF9iaW5kaW5nIGsgdiA9XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW4gKGlzX2ZpcnN0IDo9IGZhbHNlKSBlbHNlIHBwX3NlcCBwcGYgKCk7XG4gICAgcHBfYmluZGluZyBwcGYgKGssIHYpXG4gIGluXG4gIGl0ZXIgcHBfYmluZGluZyB2XG5cbmxldCBhcHBlbmQgcHBfdjAgcHBfdjEgcHBmIHYgPSBwcF92MCBwcGYgdjsgcHBfdjEgcHBmIHZcbmxldCAoICsrICkgPSBhcHBlbmRcbmxldCBjb25jYXQgP3NlcCBwcHMgcHBmIHYgPSBpdGVyID9zZXAgTGlzdC5pdGVyIChmdW4gcHBmIHBwIC0+IHBwIHBwZiB2KSBwcGYgcHBzXG5cbigqIEJveGVzICopXG5cbmxldCBib3ggPyhpbmRlbnQgPSAwKSBwcF92IHBwZiB2ID1cbiAgRm9ybWF0LihwcF9vcGVuX2JveCBwcGYgaW5kZW50OyBwcF92IHBwZiB2OyBwcF9jbG9zZV9ib3ggcHBmICgpKVxuXG5sZXQgaGJveCBwcF92IHBwZiB2ID1cbiAgRm9ybWF0LihwcF9vcGVuX2hib3ggcHBmICgpOyBwcF92IHBwZiB2OyBwcF9jbG9zZV9ib3ggcHBmICgpKVxuXG5sZXQgdmJveCA/KGluZGVudCA9IDApIHBwX3YgcHBmIHYgPVxuICBGb3JtYXQuKHBwX29wZW5fdmJveCBwcGYgaW5kZW50OyBwcF92IHBwZiB2OyBwcF9jbG9zZV9ib3ggcHBmICgpKVxuXG5sZXQgaHZib3ggPyhpbmRlbnQgPSAwKSBwcF92IHBwZiB2ID1cbiAgRm9ybWF0LihwcF9vcGVuX2h2Ym94IHBwZiBpbmRlbnQ7IHBwX3YgcHBmIHY7IHBwX2Nsb3NlX2JveCBwcGYgKCkpXG5cbmxldCBob3Zib3ggPyhpbmRlbnQgPSAwKSBwcF92IHBwZiB2ID1cbiAgRm9ybWF0LihwcF9vcGVuX2hvdmJveCBwcGYgaW5kZW50OyBwcF92IHBwZiB2OyBwcF9jbG9zZV9ib3ggcHBmICgpKVxuXG4oKiBCcmFja2V0cyAqKVxuXG5sZXQgc3Vycm91bmQgczEgczIgcHBfdiBwcGYgdiA9XG4gIEZvcm1hdC4ocHBfcHJpbnRfc3RyaW5nIHBwZiBzMTsgcHBfdiBwcGYgdjsgcHBfcHJpbnRfc3RyaW5nIHBwZiBzMilcblxubGV0IHBhcmVucyBwcF92ID0gYm94IH5pbmRlbnQ6MSAoc3Vycm91bmQgXCIoXCIgXCIpXCIgcHBfdilcbmxldCBicmFja2V0cyBwcF92ID0gYm94IH5pbmRlbnQ6MSAoc3Vycm91bmQgXCJbXCIgXCJdXCIgcHBfdilcbmxldCBveGZvcmRfYnJhY2tldHMgcHBfdiA9IGJveCB+aW5kZW50OjIgKHN1cnJvdW5kIFwiW3xcIiBcInxdXCIgcHBfdilcbmxldCBicmFjZXMgcHBfdiA9IGJveCB+aW5kZW50OjEgKHN1cnJvdW5kIFwie1wiIFwifVwiIHBwX3YpXG5sZXQgcXVvdGUgPyhtYXJrID0gXCJcXFwiXCIpIHBwX3YgPVxuICBsZXQgcHBfbWFyayBwcGYgXyA9IEZvcm1hdC5wcF9wcmludF9hcyBwcGYgMSBtYXJrIGluXG4gIGJveCB+aW5kZW50OjEgKHBwX21hcmsgKysgcHBfdiArKyBwcF9tYXJrKVxuXG4oKiBTdGRsaWIgdHlwZXMgZm9ybWF0dGVycyAqKVxuXG5sZXQgYm9vbCA9IEZvcm1hdC5wcF9wcmludF9ib29sXG5sZXQgaW50ID0gRm9ybWF0LnBwX3ByaW50X2ludFxubGV0IG5hdGl2ZWludCBwcGYgdiA9IHBmIHBwZiBcIiVuZFwiIHZcbmxldCBpbnQzMiBwcGYgdiA9IHBmIHBwZiBcIiVsZFwiIHZcbmxldCBpbnQ2NCBwcGYgdiA9IHBmIHBwZiBcIiVMZFwiIHZcbmxldCB1aW50IHBwZiB2ID0gcGYgcHBmIFwiJXVcIiB2XG5sZXQgdWludDMyIHBwZiB2ID0gcGYgcHBmIFwiJWx1XCIgdlxubGV0IHVpbnQ2NCBwcGYgdiA9IHBmIHBwZiBcIiVMdVwiIHZcbmxldCB1bmF0aXZlaW50IHBwZiB2ID0gcGYgcHBmIFwiJW51XCIgdlxubGV0IGNoYXIgPSBGb3JtYXQucHBfcHJpbnRfY2hhclxubGV0IHN0cmluZyA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmdcbmxldCBidWZmZXIgcHBmIGIgPSBzdHJpbmcgcHBmIChCdWZmZXIuY29udGVudHMgYilcbmxldCBleG4gcHBmIGUgPSBzdHJpbmcgcHBmIChQcmludGV4Yy50b19zdHJpbmcgZSlcbmxldCBleG5fYmFja3RyYWNlIHBwZiAoZSwgYnQpID1cbiAgbGV0IHBwX2JhY2t0cmFjZV9zdHIgcHBmIHMgPVxuICAgIGxldCBzdG9wID0gU3RyaW5nLmxlbmd0aCBzIC0gMSAoKiB0aGVyZSdzIGEgbmV3bGluZSBhdCB0aGUgZW5kICopIGluXG4gICAgbGV0IHJlYyBsb29wIGxlZnQgcmlnaHQgPVxuICAgICAgaWYgcmlnaHQgPSBzdG9wIHRoZW4gc3RyaW5nIHBwZiAoU3RyaW5nLnN1YiBzIGxlZnQgKHJpZ2h0IC0gbGVmdCkpIGVsc2VcbiAgICAgIGlmIHMuW3JpZ2h0XSA8PiAnXFxuJyB0aGVuIGxvb3AgbGVmdCAocmlnaHQgKyAxKSBlbHNlXG4gICAgICBiZWdpblxuICAgICAgICBzdHJpbmcgcHBmIChTdHJpbmcuc3ViIHMgbGVmdCAocmlnaHQgLSBsZWZ0KSk7XG4gICAgICAgIGN1dCBwcGYgKCk7XG4gICAgICAgIGxvb3AgKHJpZ2h0ICsgMSkgKHJpZ2h0ICsgMSlcbiAgICAgIGVuZFxuICAgIGluXG4gICAgaWYgcyA9IFwiXCIgdGhlbiAoc3RyaW5nIHBwZiBcIk5vIGJhY2t0cmFjZSBhdmFpbGFibGUuXCIpIGVsc2VcbiAgICBsb29wIDAgMFxuICBpblxuICBwZiBwcGYgXCJAWzx2PkV4Y2VwdGlvbjogJWFALCVhQF1cIlxuICAgIGV4biBlIHBwX2JhY2t0cmFjZV9zdHIgKFByaW50ZXhjLnJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIGJ0KVxuXG5sZXQgZmxvYXQgcHBmIHYgPSBwZiBwcGYgXCIlZ1wiIHZcbmxldCByb3VuZCB4ID0gZmxvb3IgKHggKy4gMC41KVxubGV0IHJvdW5kX2RmcmFjIGQgeCA9XG4gIGlmIHggLS4gKHJvdW5kIHgpID0gMC4gdGhlbiB4IGVsc2UgICAgICAgICAgICAgICAgICAgKCogeCBpcyBhbiBpbnRlZ2VyLiAqKVxuICBsZXQgbSA9IDEwLiAqKiAoZmxvYXRfb2ZfaW50IGQpIGluICAgICAgICAgICAgICAgICgqIG0gbW92ZXMgMTBeLWQgdG8gMS4gKilcbiAgKGZsb29yICgoeCAqLiBtKSArLiAwLjUpKSAvLiBtXG5cbmxldCByb3VuZF9kc2lnIGQgeCA9XG4gIGlmIHggPSAwLiB0aGVuIDAuIGVsc2VcbiAgbGV0IG0gPSAxMC4gKiogKGZsb29yIChsb2cxMCAoYWJzX2Zsb2F0IHgpKSkgaW4gICAgICAgKCogdG8gbm9ybWFsaXplIHguICopXG4gIChyb3VuZF9kZnJhYyBkICh4IC8uIG0pKSAqLiBtXG5cbmxldCBmbG9hdF9kZnJhYyBkIHBwZiBmID0gcGYgcHBmIFwiJWdcIiAocm91bmRfZGZyYWMgZCBmKVxubGV0IGZsb2F0X2RzaWcgZCBwcGYgZiA9IHBmIHBwZiBcIiVnXCIgKHJvdW5kX2RzaWcgZCBmKVxuXG5sZXQgcGFpciA/c2VwOihwcF9zZXAgPSBjdXQpIHBwX2ZzdCBwcF9zbmQgcHBmIChmc3QsIHNuZCkgPVxuICBwcF9mc3QgcHBmIGZzdDsgcHBfc2VwIHBwZiAoKTsgcHBfc25kIHBwZiBzbmRcblxubGV0IG9wdGlvbiA/bm9uZToocHBfbm9uZSA9IG5vcCkgcHBfdiBwcGYgPSBmdW5jdGlvblxufCBOb25lIC0+IHBwX25vbmUgcHBmICgpXG58IFNvbWUgdiAtPiBwcF92IHBwZiB2XG5cbmxldCByZXN1bHQgfm9rIH5lcnJvciBwcGYgPSBmdW5jdGlvblxufCBPayB2IC0+IG9rIHBwZiB2XG58IEVycm9yIGUgLT4gZXJyb3IgcHBmIGVcblxubGV0IGxpc3QgP3NlcCBwcF9lbHQgPSBpdGVyID9zZXAgTGlzdC5pdGVyIHBwX2VsdFxubGV0IGFycmF5ID9zZXAgcHBfZWx0ID0gaXRlciA/c2VwIEFycmF5Lml0ZXIgcHBfZWx0XG5sZXQgc2VxID9zZXAgcHBfZWx0ID0gaXRlciA/c2VwIFNlcS5pdGVyIHBwX2VsdFxubGV0IGhhc2h0YmwgP3NlcCBwcF9iaW5kaW5nID0gaXRlcl9iaW5kaW5ncyA/c2VwIEhhc2h0YmwuaXRlciBwcF9iaW5kaW5nXG5sZXQgcXVldWUgP3NlcCBwcF9lbHQgPSBpdGVyIFF1ZXVlLml0ZXIgcHBfZWx0XG5sZXQgc3RhY2sgP3NlcCBwcF9lbHQgPSBpdGVyIFN0YWNrLml0ZXIgcHBfZWx0XG5cbigqIFN0ZGxpYiB0eXBlIGR1bXBlcnMgKilcblxubW9kdWxlIER1bXAgPSBzdHJ1Y3RcblxuICAoKiBTdGRsaWIgdHlwZXMgKilcblxuICBsZXQgc2lnX25hbWVzID1cbiAgICBTeXMuWyBzaWdhYnJ0LCBcIlNJR0FCUlRcIjsgc2lnYWxybSwgXCJTSUdBTFJNXCI7IHNpZ2ZwZSwgXCJTSUdGUEVcIjtcbiAgICAgICAgICBzaWdodXAsIFwiU0lHSFVQXCI7IHNpZ2lsbCwgXCJTSUdJTExcIjsgc2lnaW50LCBcIlNJR0lOVFwiO1xuICAgICAgICAgIHNpZ2tpbGwsIFwiU0lHS0lMTFwiOyBzaWdwaXBlLCBcIlNJR1BJUEVcIjsgc2lncXVpdCwgXCJTSUdRVUlUXCI7XG4gICAgICAgICAgc2lnc2VndiwgXCJTSUdTRUdWXCI7IHNpZ3Rlcm0sIFwiU0lHVEVSTVwiOyBzaWd1c3IxLCBcIlNJR1VTUjFcIjtcbiAgICAgICAgICBzaWd1c3IyLCBcIlNJR1VTUjJcIjsgc2lnY2hsZCwgXCJTSUdDSExEXCI7IHNpZ2NvbnQsIFwiU0lHQ09OVFwiO1xuICAgICAgICAgIHNpZ3N0b3AsIFwiU0lHU1RPUFwiOyBzaWd0c3RwLCBcIlNJR1RTVFBcIjsgc2lndHRpbiwgXCJTSUdUVElOXCI7XG4gICAgICAgICAgc2lndHRvdSwgXCJTSUdUVE9VXCI7IHNpZ3Z0YWxybSwgXCJTSUdWVEFMUk1cIjsgc2lncHJvZiwgXCJTSUdQUk9GXCI7XG4gICAgICAgICAgc2lnYnVzLCBcIlNJR0JVU1wiOyBzaWdwb2xsLCBcIlNJR1BPTExcIjsgc2lnc3lzLCBcIlNJR1NZU1wiO1xuICAgICAgICAgIHNpZ3RyYXAsIFwiU0lHVFJBUFwiOyBzaWd1cmcsIFwiU0lHVVJHXCI7IHNpZ3hjcHUsIFwiU0lHWENQVVwiO1xuICAgICAgICAgIHNpZ3hmc3osIFwiU0lHWEZTWlwiOyBdXG5cbiAgbGV0IHNpZ25hbCBwcGYgcyA9IG1hdGNoIExpc3QuYXNzcV9vcHQgcyBzaWdfbmFtZXMgd2l0aFxuICB8IFNvbWUgbmFtZSAtPiBzdHJpbmcgcHBmIG5hbWVcbiAgfCBOb25lIC0+IHBmIHBwZiBcIlNJRyglZClcIiBzXG5cbiAgbGV0IHVjaGFyIHBwZiB1ID0gcGYgcHBmIFwiVSslMDRYXCIgKFVjaGFyLnRvX2ludCB1KVxuICBsZXQgc3RyaW5nIHBwZiBzID0gcGYgcHBmIFwiJVNcIiBzXG4gIGxldCBwYWlyIHBwX2ZzdCBwcF9zbmQgPVxuICAgIHBhcmVucyAodXNpbmcgZnN0IChib3ggcHBfZnN0KSArKyBjb21tYSArKyB1c2luZyBzbmQgKGJveCBwcF9zbmQpKVxuXG4gIGxldCBvcHRpb24gcHBfdiBwcGYgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gcGYgcHBmIFwiTm9uZVwiXG4gIHwgU29tZSB2IC0+IHBmIHBwZiBcIkBbPDI+U29tZUAgQFslYUBdQF1cIiBwcF92IHZcblxuICBsZXQgcmVzdWx0IH5vayB+ZXJyb3IgcHBmID0gZnVuY3Rpb25cbiAgfCBPayB2IC0+IHBmIHBwZiBcIkBbPDI+T2tAIEBbJWFAXUBdXCIgb2sgdlxuICB8IEVycm9yIGUgLT4gcGYgcHBmIFwiQFs8Mj5FcnJvckAgQFslYUBdQF1cIiBlcnJvciBlXG5cbiAgKCogU2VxdWVuY2luZyAqKVxuXG4gIGxldCBpdGVyIGl0ZXJfZiBwcF9uYW1lIHBwX2VsdCA9XG4gICAgbGV0IHBwX3YgPSBpdGVyIH5zZXA6c3AgaXRlcl9mIChib3ggcHBfZWx0KSBpblxuICAgIHBhcmVucyAocHBfbmFtZSArKyBzcCArKyBwcF92KVxuXG4gIGxldCBpdGVyX2JpbmRpbmdzIGl0ZXJfZiBwcF9uYW1lIHBwX2sgcHBfdiA9XG4gICAgbGV0IHBwX3YgPSBpdGVyX2JpbmRpbmdzIH5zZXA6c3AgaXRlcl9mIChwYWlyIHBwX2sgcHBfdikgaW5cbiAgICBwYXJlbnMgKHBwX25hbWUgKysgc3AgKysgcHBfdilcblxuICAoKiBTdGRsaWIgZGF0YSBzdHJ1Y3R1cmVzICopXG5cbiAgbGV0IGxpc3QgcHBfZWx0ID0gYnJhY2tldHMgKGxpc3QgfnNlcDpzZW1pIChib3ggcHBfZWx0KSlcbiAgbGV0IGFycmF5IHBwX2VsdCA9IG94Zm9yZF9icmFja2V0cyAoYXJyYXkgfnNlcDpzZW1pIChib3ggcHBfZWx0KSlcbiAgbGV0IHNlcSBwcF9lbHQgPSBicmFja2V0cyAoc2VxIH5zZXA6c2VtaSAoYm94IHBwX2VsdCkpXG5cbiAgbGV0IGhhc2h0YmwgcHBfayBwcF92ID1cbiAgICBpdGVyX2JpbmRpbmdzIEhhc2h0YmwuaXRlciAoYW55IFwiaGFzaHRibFwiKSBwcF9rIHBwX3ZcblxuICBsZXQgc3RhY2sgcHBfZWx0ID0gaXRlciBTdGFjay5pdGVyIChhbnkgXCJzdGFja1wiKSBwcF9lbHRcbiAgbGV0IHF1ZXVlIHBwX2VsdCA9IGl0ZXIgUXVldWUuaXRlciAoYW55IFwicXVldWVcIikgcHBfZWx0XG5cbiAgKCogUmVjb3JkcyAqKVxuXG4gIGxldCBmaWVsZCA/KGxhYmVsID0gc3RyaW5nKSBsIHByaiBwcF92IHBwZiB2ID1cbiAgICBwZiBwcGYgXCJAWzwxPiVhID1AICVhQF1cIiBsYWJlbCBsIHBwX3YgKHByaiB2KVxuXG4gIGxldCByZWNvcmQgcHBzID1cbiAgICBib3ggfmluZGVudDoyIChzdXJyb3VuZCBcInsgXCIgXCIgfVwiIEBAIHZib3ggKGNvbmNhdCB+c2VwOihhbnkgXCI7QCxcIikgcHBzKSlcbmVuZFxuXG4oKiBNYWduaXR1ZGVzICopXG5cbmxldCBpbG9nMTAgeCA9XG4gIGxldCByZWMgbG9vcCBwIHggPSBpZiB4ID0gMCB0aGVuIHAgZWxzZSBsb29wIChwICsgMSkgKHggLyAxMCkgaW5cbiAgbG9vcCAoLTEpIHhcblxubGV0IGlwb3cxMCBuID1cbiAgbGV0IHJlYyBsb29wIGFjYyBuID0gaWYgbiA9IDAgdGhlbiBhY2MgZWxzZSBsb29wIChhY2MgKiAxMCkgKG4gLSAxKSBpblxuICBsb29wIDEgblxuXG5sZXQgc2lfc3ltYl9tYXggPSAxNlxubGV0IHNpX3N5bWIgPVxuICBbfCBcInlcIjsgXCJ6XCI7IFwiYVwiOyBcImZcIjsgXCJwXCI7IFwiblwiOyBcInVcIjsgXCJtXCI7IFwiXCI7IFwia1wiOyBcIk1cIjsgXCJHXCI7IFwiVFwiOyBcIlBcIjtcbiAgICAgXCJFXCI7IFwiWlwiOyBcIllcInxdXG5cbmxldCByZWMgcHBfYXRfZmFjdG9yIH5zY2FsZSB1IHN5bWIgZmFjdG9yIHBwZiBzID1cbiAgbGV0IG0gPSBzIC8gZmFjdG9yIGluXG4gIGxldCBuID0gcyBtb2QgZmFjdG9yIGluXG4gIG1hdGNoIG0gd2l0aFxuICB8IG0gd2hlbiBtID49IDEwMCAtPiAoKiBObyBmcmFjdGlvbmFsIGRpZ2l0ICopXG4gICAgICBsZXQgbV91cCA9IGlmIG4gPiAwIHRoZW4gbSArIDEgZWxzZSBtIGluXG4gICAgICBpZiBtX3VwID49IDEwMDAgdGhlbiBzaV9zaXplIH5zY2FsZSB1IHBwZiAobV91cCAqIGZhY3RvcikgZWxzZVxuICAgICAgcGYgcHBmIFwiJWQlcyVzXCIgbV91cCBzeW1iIHVcbiAgfCBtIHdoZW4gbSA+PSAxMCAtPiAoKiBPbmUgZnJhY3Rpb25hbCBkaWdpdCB3Lm8uIHRyYWlsaW5nIDAgKilcbiAgICAgIGxldCBmX2ZhY3RvciA9IGZhY3RvciAvIDEwIGluXG4gICAgICBsZXQgZl9tID0gbiAvIGZfZmFjdG9yIGluXG4gICAgICBsZXQgZl9uID0gbiBtb2QgZl9mYWN0b3IgaW5cbiAgICAgIGxldCBmX21fdXAgPSBpZiBmX24gPiAwIHRoZW4gZl9tICsgMSBlbHNlIGZfbSBpblxuICAgICAgYmVnaW4gbWF0Y2ggZl9tX3VwIHdpdGhcbiAgICAgIHwgMCAtPiBwZiBwcGYgXCIlZCVzJXNcIiBtIHN5bWIgdVxuICAgICAgfCBmIHdoZW4gZiA+PSAxMCAtPiBzaV9zaXplIH5zY2FsZSB1IHBwZiAobSAqIGZhY3RvciArIGYgKiBmX2ZhY3RvcilcbiAgICAgIHwgZiAtPiBwZiBwcGYgXCIlZC4lZCVzJXNcIiBtIGYgc3ltYiB1XG4gICAgICBlbmRcbiAgfCBtIC0+ICgqIFR3byBvciB6ZXJvIGZyYWN0aW9uYWwgZGlnaXRzIHcuby4gdHJhaWxpbmcgMCAqKVxuICAgICAgbGV0IGZfZmFjdG9yID0gZmFjdG9yIC8gMTAwIGluXG4gICAgICBsZXQgZl9tID0gbiAvIGZfZmFjdG9yIGluXG4gICAgICBsZXQgZl9uID0gbiBtb2QgZl9mYWN0b3IgaW5cbiAgICAgIGxldCBmX21fdXAgPSBpZiBmX24gPiAwIHRoZW4gZl9tICsgMSBlbHNlIGZfbSBpblxuICAgICAgbWF0Y2ggZl9tX3VwIHdpdGhcbiAgICAgIHwgMCAtPiBwZiBwcGYgXCIlZCVzJXNcIiBtIHN5bWIgdVxuICAgICAgfCBmIHdoZW4gZiA+PSAxMDAgLT4gc2lfc2l6ZSB+c2NhbGUgdSBwcGYgKG0gKiBmYWN0b3IgKyBmICogZl9mYWN0b3IpXG4gICAgICB8IGYgd2hlbiBmIG1vZCAxMCA9IDAgLT4gcGYgcHBmIFwiJWQuJWQlcyVzXCIgbSAoZiAvIDEwKSBzeW1iIHVcbiAgICAgIHwgZiAtPiBwZiBwcGYgXCIlZC4lMDJkJXMlc1wiIG0gZiBzeW1iIHVcblxuYW5kIHNpX3NpemUgfnNjYWxlIHUgcHBmIHMgPSBtYXRjaCBzY2FsZSA8IC04IHx8IHNjYWxlID4gOCB3aXRoXG58IHRydWUgLT4gaW52YWxpZF9hcmcgXCJ+c2NhbGUgaXMgJWQsIG11c3QgYmUgaW4gWy04OzhdXCIgc2NhbGVcbnwgZmFsc2UgLT5cbiAgICBsZXQgcG93X2Rpdl8zID0gaWYgcyA9IDAgdGhlbiAwIGVsc2UgKGlsb2cxMCBzIC8gMykgaW5cbiAgICBsZXQgc3ltYiA9IChzY2FsZSArIDgpICsgcG93X2Rpdl8zIGluXG4gICAgbGV0IHN5bWIsIGZhY3RvciA9IG1hdGNoIHN5bWIgPiBzaV9zeW1iX21heCB3aXRoXG4gICAgfCB0cnVlIC0+IHNpX3N5bWJfbWF4LCBpcG93MTAgKCg4IC0gc2NhbGUpICogMylcbiAgICB8IGZhbHNlIC0+IHN5bWIsIGlwb3cxMCAocG93X2Rpdl8zICogMylcbiAgICBpblxuICAgIGlmIGZhY3RvciA9IDFcbiAgICB0aGVuIHBmIHBwZiBcIiVkJXMlc1wiIHMgc2lfc3ltYi4oc3ltYikgdVxuICAgIGVsc2UgcHBfYXRfZmFjdG9yIH5zY2FsZSB1IHNpX3N5bWIuKHN5bWIpIGZhY3RvciBwcGYgc1xuXG5sZXQgYnl0ZV9zaXplIHBwZiBzID0gc2lfc2l6ZSB+c2NhbGU6MCBcIkJcIiBwcGYgc1xuXG5sZXQgYmlfYnl0ZV9zaXplIHBwZiBzID1cbiAgKCogWFhYIHdlIHNob3VsZCBnZXQgcmlkIG9mIHRoaXMuICopXG4gIGxldCBfcHBfYnl0ZV9zaXplIGsgaSBwcGYgcyA9XG4gICAgbGV0IHBwX2ZyYWMgPSBmbG9hdF9kZnJhYyAxIGluXG4gICAgbGV0IGRpdl9yb3VuZF91cCBtIG4gPSAobSArIG4gLSAxKSAvIG4gaW5cbiAgICBsZXQgZmxvYXQgPSBmbG9hdF9vZl9pbnQgaW5cbiAgICBpZiBzIDwgayB0aGVuIHBmIHBwZiBcIiVkQlwiIHMgZWxzZVxuICAgIGxldCBtID0gayAqIGsgaW5cbiAgICBpZiBzIDwgbSB0aGVuIGJlZ2luXG4gICAgICBsZXQga3N0ciA9IGlmIGkgPSBcIlwiIHRoZW4gXCJrXCIgKCogU0kgKikgZWxzZSBcIktcIiAoKiBJRUMgKikgaW5cbiAgICAgIGxldCBzayA9IHMgLyBrIGluXG4gICAgICBpZiBzayA8IDEwXG4gICAgICB0aGVuIHBmIHBwZiBcIiVhJXMlc0JcIiBwcF9mcmFjIChmbG9hdCBzIC8uIGZsb2F0IGspIGtzdHIgaVxuICAgICAgZWxzZSBwZiBwcGYgXCIlZCVzJXNCXCIgKGRpdl9yb3VuZF91cCBzIGspIGtzdHIgaVxuICAgIGVuZCBlbHNlXG4gICAgbGV0IGcgPSBrICogbSBpblxuICAgIGlmIHMgPCBnIHRoZW4gYmVnaW5cbiAgICAgIGxldCBzbSA9IHMgLyBtIGluXG4gICAgICBpZiBzbSA8IDEwXG4gICAgICB0aGVuIHBmIHBwZiBcIiVhTSVzQlwiIHBwX2ZyYWMgKGZsb2F0IHMgLy4gZmxvYXQgbSkgaVxuICAgICAgZWxzZSBwZiBwcGYgXCIlZE0lc0JcIiAoZGl2X3JvdW5kX3VwIHMgbSkgaVxuICAgIGVuZCBlbHNlXG4gICAgbGV0IHQgPSBrICogZyBpblxuICAgIGlmIHMgPCB0IHRoZW4gYmVnaW5cbiAgICAgIGxldCBzZyA9IHMgLyBnIGluXG4gICAgICBpZiBzZyA8IDEwXG4gICAgICB0aGVuIHBmIHBwZiBcIiVhRyVzQlwiIHBwX2ZyYWMgKGZsb2F0IHMgLy4gZmxvYXQgZykgaVxuICAgICAgZWxzZSBwZiBwcGYgXCIlZEclc0JcIiAoZGl2X3JvdW5kX3VwIHMgZykgaVxuICAgIGVuZCBlbHNlXG4gICAgbGV0IHAgPSBrICogdCBpblxuICAgIGlmIHMgPCBwIHRoZW4gYmVnaW5cbiAgICAgIGxldCBzdCA9IHMgLyB0IGluXG4gICAgICBpZiBzdCA8IDEwXG4gICAgICB0aGVuIHBmIHBwZiBcIiVhVCVzQlwiIHBwX2ZyYWMgKGZsb2F0IHMgLy4gZmxvYXQgdCkgaVxuICAgICAgZWxzZSBwZiBwcGYgXCIlZFQlc0JcIiAoZGl2X3JvdW5kX3VwIHMgdCkgaVxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBsZXQgc3AgPSBzIC8gcCBpblxuICAgICAgaWYgc3AgPCAxMFxuICAgICAgdGhlbiBwZiBwcGYgXCIlYVAlc0JcIiBwcF9mcmFjIChmbG9hdCBzIC8uIGZsb2F0IHApIGlcbiAgICAgIGVsc2UgcGYgcHBmIFwiJWRQJXNCXCIgKGRpdl9yb3VuZF91cCBzIHApIGlcbiAgICBlbmRcbiAgaW5cbiAgX3BwX2J5dGVfc2l6ZSAxMDI0IFwiaVwiIHBwZiBzXG5cbigqIFhYWCBGcm9tIDQuMDggb24gdXNlIEludDY0LnVuc2lnbmVkXypcblxuICAgU2VlIEhhY2tlcidzIERlbGlnaHQgZm9yIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGVzZSB1bnNpZ25lZF8qIGZ1bnMgKilcblxubGV0IHVuc2lnbmVkX2NvbXBhcmUgeDAgeDEgPSBJbnQ2NC4oY29tcGFyZSAoc3ViIHgwIG1pbl9pbnQpIChzdWIgeDEgbWluX2ludCkpXG5sZXQgdW5zaWduZWRfZGl2IG4gZCA9IG1hdGNoIGQgPCBJbnQ2NC56ZXJvIHdpdGhcbnwgdHJ1ZSAtPiBpZiB1bnNpZ25lZF9jb21wYXJlIG4gZCA8IDAgdGhlbiBJbnQ2NC56ZXJvIGVsc2UgSW50NjQub25lXG58IGZhbHNlIC0+XG4gICAgbGV0IHEgPSBJbnQ2NC4oc2hpZnRfbGVmdCAoZGl2IChzaGlmdF9yaWdodF9sb2dpY2FsIG4gMSkgZCkgMSkgaW5cbiAgICBsZXQgciA9IEludDY0LihzdWIgbiAobXVsIHEgZCkpIGluXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSByIGQgPj0gMCB0aGVuIEludDY0LnN1Y2MgcSBlbHNlIHFcblxubGV0IHVuc2lnbmVkX3JlbSBuIGQgPSBJbnQ2NC4oc3ViIG4gKG11bCAodW5zaWduZWRfZGl2IG4gZCkgZCkpXG5cbmxldCB1c19zcGFuICAgPSAgICAgICAgICAgICAgICAgIDFfMDAwTFxubGV0IG1zX3NwYW4gICA9ICAgICAgICAgICAgICAxXzAwMF8wMDBMXG5sZXQgc2VjX3NwYW4gID0gICAgICAgICAgMV8wMDBfMDAwXzAwMExcbmxldCBtaW5fc3BhbiAgPSAgICAgICAgIDYwXzAwMF8wMDBfMDAwTFxubGV0IGhvdXJfc3BhbiA9ICAgICAgIDM2MDBfMDAwXzAwMF8wMDBMXG5sZXQgZGF5X3NwYW4gID0gICAgIDg2XzQwMF8wMDBfMDAwXzAwMExcbmxldCB5ZWFyX3NwYW4gPSAzMV81NTdfNjAwXzAwMF8wMDBfMDAwTFxuXG5sZXQgcmVjIHBwX3NpX3NwYW4gdW5pdF9zdHIgc2lfdW5pdCBzaV9oaWdoZXJfdW5pdCBwcGYgc3BhbiA9XG4gIGxldCBnZXEgeCB5ID0gdW5zaWduZWRfY29tcGFyZSB4IHkgPj0gMCBpblxuICBsZXQgbSA9IHVuc2lnbmVkX2RpdiBzcGFuIHNpX3VuaXQgaW5cbiAgbGV0IG4gPSB1bnNpZ25lZF9yZW0gc3BhbiBzaV91bml0IGluXG4gIG1hdGNoIG0gd2l0aFxuICB8IG0gd2hlbiBnZXEgbSAxMDBMIC0+ICgqIE5vIGZyYWN0aW9uYWwgZGlnaXQgKilcbiAgICAgIGxldCBtX3VwID0gaWYgSW50NjQuZXF1YWwgbiAwTCB0aGVuIG0gZWxzZSBJbnQ2NC5zdWNjIG0gaW5cbiAgICAgIGxldCBzcGFuJyA9IEludDY0Lm11bCBtX3VwIHNpX3VuaXQgaW5cbiAgICAgIGlmIGdlcSBzcGFuJyBzaV9oaWdoZXJfdW5pdCB0aGVuIHVpbnQ2NF9uc19zcGFuIHBwZiBzcGFuJyBlbHNlXG4gICAgICBwZiBwcGYgXCIlTGQlc1wiIG1fdXAgdW5pdF9zdHJcbiAgfCBtIHdoZW4gZ2VxIG0gMTBMIC0+ICgqIE9uZSBmcmFjdGlvbmFsIGRpZ2l0IHcuby4gdHJhaWxpbmcgemVybyAqKVxuICAgICAgbGV0IGZfZmFjdG9yID0gdW5zaWduZWRfZGl2IHNpX3VuaXQgMTBMIGluXG4gICAgICBsZXQgZl9tID0gdW5zaWduZWRfZGl2IG4gZl9mYWN0b3IgaW5cbiAgICAgIGxldCBmX24gPSB1bnNpZ25lZF9yZW0gbiBmX2ZhY3RvciBpblxuICAgICAgbGV0IGZfbV91cCA9IGlmIEludDY0LmVxdWFsIGZfbiAwTCB0aGVuIGZfbSBlbHNlIEludDY0LnN1Y2MgZl9tIGluXG4gICAgICBiZWdpbiBtYXRjaCBmX21fdXAgd2l0aFxuICAgICAgfCAwTCAtPiBwZiBwcGYgXCIlTGQlc1wiIG0gdW5pdF9zdHJcbiAgICAgIHwgZiB3aGVuIGdlcSBmIDEwTCAtPlxuICAgICAgICAgIHVpbnQ2NF9uc19zcGFuIHBwZiBJbnQ2NC4oYWRkIChtdWwgbSBzaV91bml0KSAobXVsIGYgZl9mYWN0b3IpKVxuICAgICAgfCBmIC0+IHBmIHBwZiBcIiVMZC4lTGQlc1wiIG0gZiB1bml0X3N0clxuICAgICAgZW5kXG4gIHwgbSAtPiAoKiBUd28gb3IgemVybyBmcmFjdGlvbmFsIGRpZ2l0cyB3Lm8uIHRyYWlsaW5nIHplcm8gKilcbiAgICAgIGxldCBmX2ZhY3RvciA9IHVuc2lnbmVkX2RpdiBzaV91bml0IDEwMEwgaW5cbiAgICAgIGxldCBmX20gPSB1bnNpZ25lZF9kaXYgbiBmX2ZhY3RvciBpblxuICAgICAgbGV0IGZfbiA9IHVuc2lnbmVkX3JlbSBuIGZfZmFjdG9yIGluXG4gICAgICBsZXQgZl9tX3VwID0gaWYgSW50NjQuZXF1YWwgZl9uIDBMIHRoZW4gZl9tIGVsc2UgSW50NjQuc3VjYyBmX20gaW5cbiAgICAgIG1hdGNoIGZfbV91cCB3aXRoXG4gICAgICB8IDBMIC0+IHBmIHBwZiBcIiVMZCVzXCIgbSB1bml0X3N0clxuICAgICAgfCBmIHdoZW4gZ2VxIGYgMTAwTCAtPlxuICAgICAgICAgIHVpbnQ2NF9uc19zcGFuIHBwZiBJbnQ2NC4oYWRkIChtdWwgbSBzaV91bml0KSAobXVsIGYgZl9mYWN0b3IpKVxuICAgICAgfCBmIHdoZW4gSW50NjQuZXF1YWwgKEludDY0LnJlbSBmIDEwTCkgMEwgLT5cbiAgICAgICAgICBwZiBwcGYgXCIlTGQuJUxkJXNcIiBtIChJbnQ2NC5kaXYgZiAxMEwpIHVuaXRfc3RyXG4gICAgICB8IGYgLT5cbiAgICAgICAgICBwZiBwcGYgXCIlTGQuJTAyTGQlc1wiIG0gZiB1bml0X3N0clxuXG5hbmQgcHBfbm9uX3NpIHVuaXRfc3RyIHVuaXQgdW5pdF9sb19zdHIgdW5pdF9sbyB1bml0X2xvX3NpemUgcHBmIHNwYW4gPVxuICBsZXQgZ2VxIHggeSA9IHVuc2lnbmVkX2NvbXBhcmUgeCB5ID49IDAgaW5cbiAgbGV0IG0gPSB1bnNpZ25lZF9kaXYgc3BhbiB1bml0IGluXG4gIGxldCBuID0gdW5zaWduZWRfcmVtIHNwYW4gdW5pdCBpblxuICBpZiBJbnQ2NC5lcXVhbCBuIDBMIHRoZW4gcGYgcHBmIFwiJUxkJXNcIiBtIHVuaXRfc3RyIGVsc2VcbiAgbGV0IGZfbSA9IHVuc2lnbmVkX2RpdiBuIHVuaXRfbG8gaW5cbiAgbGV0IGZfbiA9IHVuc2lnbmVkX3JlbSBuIHVuaXRfbG8gaW5cbiAgbGV0IGZfbV91cCA9IGlmIEludDY0LmVxdWFsIGZfbiAwTCB0aGVuIGZfbSBlbHNlIEludDY0LnN1Y2MgZl9tIGluXG4gIG1hdGNoIGZfbV91cCB3aXRoXG4gIHwgZiB3aGVuIGdlcSBmIHVuaXRfbG9fc2l6ZSAtPlxuICAgICAgdWludDY0X25zX3NwYW4gcHBmIEludDY0LihhZGQgKG11bCBtIHVuaXQpIChtdWwgZiB1bml0X2xvKSlcbiAgfCBmIC0+XG4gICAgICBwZiBwcGYgXCIlTGQlcyVMZCVzXCIgbSB1bml0X3N0ciBmIHVuaXRfbG9fc3RyXG5cbmFuZCB1aW50NjRfbnNfc3BhbiBwcGYgc3BhbiA9XG4gIGxldCBnZXEgeCB5ID0gdW5zaWduZWRfY29tcGFyZSB4IHkgPj0gMCBpblxuICBsZXQgbHQgeCB5ID0gdW5zaWduZWRfY29tcGFyZSB4IHkgPSAtMSBpblxuICBtYXRjaCBzcGFuIHdpdGhcbiAgfCBzIHdoZW4gbHQgcyB1c19zcGFuIC0+IHBmIHBwZiBcIiVMZG5zXCIgc1xuICB8IHMgd2hlbiBsdCBzIG1zX3NwYW4gLT4gcHBfc2lfc3BhbiBcInVzXCIgdXNfc3BhbiBtc19zcGFuIHBwZiBzXG4gIHwgcyB3aGVuIGx0IHMgc2VjX3NwYW4gLT4gcHBfc2lfc3BhbiBcIm1zXCIgbXNfc3BhbiBzZWNfc3BhbiBwcGYgc1xuICB8IHMgd2hlbiBsdCBzIG1pbl9zcGFuIC0+IHBwX3NpX3NwYW4gXCJzXCIgc2VjX3NwYW4gbWluX3NwYW4gcHBmIHNcbiAgfCBzIHdoZW4gbHQgcyBob3VyX3NwYW4gLT4gcHBfbm9uX3NpIFwibWluXCIgbWluX3NwYW4gXCJzXCIgc2VjX3NwYW4gNjBMIHBwZiBzXG4gIHwgcyB3aGVuIGx0IHMgZGF5X3NwYW4gLT4gcHBfbm9uX3NpIFwiaFwiIGhvdXJfc3BhbiBcIm1pblwiIG1pbl9zcGFuIDYwTCBwcGYgc1xuICB8IHMgd2hlbiBsdCBzIHllYXJfc3BhbiAtPiBwcF9ub25fc2kgXCJkXCIgZGF5X3NwYW4gXCJoXCIgaG91cl9zcGFuIDI0TCBwcGYgc1xuICB8IHMgLT5cbiAgICAgIGxldCBtID0gdW5zaWduZWRfZGl2IHMgeWVhcl9zcGFuIGluXG4gICAgICBsZXQgbiA9IHVuc2lnbmVkX3JlbSBzIHllYXJfc3BhbiBpblxuICAgICAgaWYgSW50NjQuZXF1YWwgbiAwTCB0aGVuIHBmIHBwZiBcIiVMZGFcIiBtIGVsc2VcbiAgICAgIGxldCBmX20gPSB1bnNpZ25lZF9kaXYgbiBkYXlfc3BhbiBpblxuICAgICAgbGV0IGZfbiA9IHVuc2lnbmVkX3JlbSBuIGRheV9zcGFuIGluXG4gICAgICBsZXQgZl9tX3VwID0gaWYgSW50NjQuZXF1YWwgZl9uIDBMIHRoZW4gZl9tIGVsc2UgSW50NjQuc3VjYyBmX20gaW5cbiAgICAgIG1hdGNoIGZfbV91cCB3aXRoXG4gICAgICB8IGYgd2hlbiBnZXEgZiAzNjZMIC0+IHBmIHBwZiBcIiVMZGFcIiAoSW50NjQuc3VjYyBtKVxuICAgICAgfCBmIC0+IHBmIHBwZiBcIiVMZGElTGRkXCIgbSBmXG5cbigqIEJpbmFyeSBmb3JtYXR0aW5nICopXG5cbnR5cGUgJ2EgdmVjID0gaW50ICogKGludCAtPiAnYSlcblxubGV0IGl0ZXJfdmVjIGYgKG4sIGdldCkgPSBmb3IgaSA9IDAgdG8gbiAtIDEgZG8gZiBpIChnZXQgaSkgZG9uZVxubGV0IHZlYyA/c2VwID0gaXRlcl9iaW5kaW5ncyA/c2VwIGl0ZXJfdmVjXG5cbmxldCBvbl9zdHJpbmcgPSB1c2luZyBTdHJpbmcuKGZ1biBzIC0+IGxlbmd0aCBzLCBnZXQgcylcbmxldCBvbl9ieXRlcyA9IHVzaW5nIEJ5dGVzLihmdW4gYiAtPiBsZW5ndGggYiwgZ2V0IGIpXG5cbmxldCBzdWJfdmVjcyB3IChuLCBnZXQpID1cbiAgKG4gLSAxKSAvIHcgKyAxLFxuICBmdW4gaiAtPlxuICAgIGxldCBvZmYgPSB3ICogaiBpblxuICAgIG1pbiB3IChuIC0gb2ZmKSwgZnVuIGkgLT4gZ2V0IChpICsgb2ZmKVxuXG5sZXQgcHJlZml4MHggPSBbXG4gIDB4ZiAgICAgICAsIGZtdCBcIiUwMXhcIjtcbiAgMHhmZiAgICAgICwgZm10IFwiJTAyeFwiO1xuICAweGZmZiAgICAgLCBmbXQgXCIlMDN4XCI7XG4gIDB4ZmZmZiAgICAsIGZtdCBcIiUwNHhcIjtcbiAgMHhmZmZmZiAgICwgZm10IFwiJTA1eFwiO1xuICAweGZmZmZmZiAgLCBmbXQgXCIlMDZ4XCI7XG4gIDB4ZmZmZmZmZiAsIGZtdCBcIiUwN3hcIjsgXVxuXG5sZXQgcGFkZGVkMHggfm1heCA9IG1hdGNoIExpc3QuZmluZF9vcHQgKGZ1biAoeCwgXykgLT4gbWF4IDw9IHgpIHByZWZpeDB4IHdpdGhcbnwgU29tZSAoXywgcHApIC0+IHBwXG58IE5vbmUgLT4gZm10IFwiJTA4eFwiXG5cbmxldCBhc2NpaSA/KHcgPSAwKSA/KHN1YnN0ID0gY29uc3QgY2hhciAnLicpICgpIHBwZiAobiwgXyBhcyB2KSA9XG4gIGxldCBwcF9jaGFyIHBwZiAoXywgYykgPVxuICAgIGlmICdcXHgyMCcgPD0gYyAmJiBjIDwgJ1xceDdmJyB0aGVuIGNoYXIgcHBmIGMgZWxzZSBzdWJzdCBwcGYgKClcbiAgaW5cbiAgdmVjIHBwX2NoYXIgcHBmIHY7XG4gIGlmIG4gPCB3IHRoZW4gc3BzICh3IC0gbikgcHBmICgpXG5cbmxldCBvY3RldHMgPyh3ID0gMCkgPyhzZXAgPSBzcCkgKCkgcHBmIChuLCBfIGFzIHYpID1cbiAgbGV0IHBwX3NlcCBwcGYgaSA9IGlmIGkgPiAwICYmIGkgbW9kIDIgPSAwIHRoZW4gc2VwIHBwZiAoKSBpblxuICBsZXQgcHBfY2hhciBwcGYgKGksIGMpID0gcHBfc2VwIHBwZiBpOyBwZiBwcGYgXCIlMDJ4XCIgKENoYXIuY29kZSBjKSBpblxuICB2ZWMgfnNlcDpub3AgcHBfY2hhciBwcGYgdjtcbiAgZm9yIGkgPSBuIHRvIHcgLSAxIGRvIHBwX3NlcCBwcGYgaTsgc3BzIDIgcHBmICgpIGRvbmVcblxubGV0IGFkZHJlc3NlcyA/YWRkciA/KHcgPSAxNikgcHBfdmVjIHBwZiAobiwgXyBhcyB2KSA9XG4gIGxldCBhZGRyID0gbWF0Y2ggYWRkciB3aXRoXG4gIHwgU29tZSBwcCAtPiBwcFxuICB8IF8gLT4gcGFkZGVkMHggfm1heDooKChuIC0gMSkgLyB3KSAqIHcpICsrIGNvbnN0IHN0cmluZyBcIjogXCJcbiAgaW5cbiAgbGV0IHBwX3N1YiBwcGYgKGksIHN1YikgPSBhZGRyIHBwZiAoaSAqIHcpOyBib3ggcHBfdmVjIHBwZiBzdWIgaW5cbiAgdmJveCAodmVjIHBwX3N1YikgcHBmIChzdWJfdmVjcyB3IHYpXG5cbmxldCBoZXggPyh3ID0gMTYpICgpID1cbiAgYWRkcmVzc2VzIH53ICgob2N0ZXRzIH53ICgpIHw+IGJveCkgKysgc3BzIDIgKysgKGFzY2lpIH53ICgpIHw+IGJveCkpXG5cbigqIFRleHQgYW5kIGxpbmVzICopXG5cbmxldCBpc19ubCBjID0gYyA9ICdcXG4nXG5sZXQgaXNfbmxfb3Jfc3AgYyA9IGlzX25sIGMgfHwgYyA9ICcgJ1xubGV0IGlzX3doaXRlID0gZnVuY3Rpb24gJyAnIHwgJ1xcdCcgLi4gJ1xccicgIC0+IHRydWUgfCBfIC0+IGZhbHNlXG5sZXQgbm90X3doaXRlIGMgPSBub3QgKGlzX3doaXRlIGMpXG5sZXQgbm90X3doaXRlX29yX25sIGMgPSBpc19ubCBjIHx8IG5vdF93aGl0ZSBjXG5cbmxldCByZWMgc3RvcF9hdCBzYXQgfnN0YXJ0IH5tYXggcyA9XG4gIGlmIHN0YXJ0ID4gbWF4IHRoZW4gc3RhcnQgZWxzZVxuICBpZiBzYXQgcy5bc3RhcnRdIHRoZW4gc3RhcnQgZWxzZVxuICBzdG9wX2F0IHNhdCB+c3RhcnQ6KHN0YXJ0ICsgMSkgfm1heCBzXG5cbmxldCBzdWIgcyBzdGFydCBzdG9wIH5tYXggPVxuICBpZiBzdGFydCA9IHN0b3AgdGhlbiBcIlwiIGVsc2VcbiAgaWYgc3RhcnQgPSAwICYmIHN0b3AgPiBtYXggdGhlbiBzIGVsc2VcbiAgU3RyaW5nLnN1YiBzIHN0YXJ0IChzdG9wIC0gc3RhcnQpXG5cbmxldCB3b3JkcyBwcGYgcyA9XG4gIGxldCBtYXggPSBTdHJpbmcubGVuZ3RoIHMgLSAxIGluXG4gIGxldCByZWMgbG9vcCBzdGFydCBzID0gbWF0Y2ggc3RvcF9hdCBpc193aGl0ZSB+c3RhcnQgfm1heCBzIHdpdGhcbiAgfCBzdG9wIHdoZW4gc3RvcCA+IG1heCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiAoc3ViIHMgc3RhcnQgc3RvcCB+bWF4KVxuICB8IHN0b3AgLT5cbiAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmIChzdWIgcyBzdGFydCBzdG9wIH5tYXgpO1xuICAgICAgbWF0Y2ggc3RvcF9hdCBub3Rfd2hpdGUgfnN0YXJ0OnN0b3Agfm1heCBzIHdpdGhcbiAgICAgIHwgc3RvcCB3aGVuIHN0b3AgPiBtYXggLT4gKClcbiAgICAgIHwgc3RvcCAtPiBGb3JtYXQucHBfcHJpbnRfc3BhY2UgcHBmICgpOyBsb29wIHN0b3Agc1xuICBpblxuICBsZXQgc3RhcnQgPSBzdG9wX2F0IG5vdF93aGl0ZSB+c3RhcnQ6MCB+bWF4IHMgaW5cbiAgaWYgc3RhcnQgPiBtYXggdGhlbiAoKSBlbHNlIGxvb3Agc3RhcnQgc1xuXG5sZXQgcGFyYWdyYXBocyBwcGYgcyA9XG4gIGxldCBtYXggPSBTdHJpbmcubGVuZ3RoIHMgLSAxIGluXG4gIGxldCByZWMgbG9vcCBzdGFydCBzID0gbWF0Y2ggc3RvcF9hdCBpc193aGl0ZSB+c3RhcnQgfm1heCBzIHdpdGhcbiAgfCBzdG9wIHdoZW4gc3RvcCA+IG1heCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiAoc3ViIHMgc3RhcnQgc3RvcCB+bWF4KVxuICB8IHN0b3AgLT5cbiAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmIChzdWIgcyBzdGFydCBzdG9wIH5tYXgpO1xuICAgICAgbWF0Y2ggc3RvcF9hdCBub3Rfd2hpdGVfb3JfbmwgfnN0YXJ0OnN0b3Agfm1heCBzIHdpdGhcbiAgICAgIHwgc3RvcCB3aGVuIHN0b3AgPiBtYXggLT4gKClcbiAgICAgIHwgc3RvcCAtPlxuICAgICAgICAgIGlmIHMuW3N0b3BdIDw+ICdcXG4nXG4gICAgICAgICAgdGhlbiAoRm9ybWF0LnBwX3ByaW50X3NwYWNlIHBwZiAoKTsgbG9vcCBzdG9wIHMpIGVsc2VcbiAgICAgICAgICBtYXRjaCBzdG9wX2F0IG5vdF93aGl0ZV9vcl9ubCB+c3RhcnQ6KHN0b3AgKyAxKSB+bWF4IHMgd2l0aFxuICAgICAgICAgIHwgc3RvcCB3aGVuIHN0b3AgPiBtYXggLT4gKClcbiAgICAgICAgICB8IHN0b3AgLT5cbiAgICAgICAgICAgICAgaWYgcy5bc3RvcF0gPD4gJ1xcbidcbiAgICAgICAgICAgICAgdGhlbiAoRm9ybWF0LnBwX3ByaW50X3NwYWNlIHBwZiAoKTsgbG9vcCBzdG9wIHMpIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggc3RvcF9hdCBub3Rfd2hpdGUgfnN0YXJ0OihzdG9wICsgMSkgfm1heCBzIHdpdGhcbiAgICAgICAgICAgICAgfCBzdG9wIHdoZW4gc3RvcCA+IG1heCAtPiAoKVxuICAgICAgICAgICAgICB8IHN0b3AgLT5cbiAgICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9mb3JjZV9uZXdsaW5lIHBwZiAoKTtcbiAgICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9mb3JjZV9uZXdsaW5lIHBwZiAoKTtcbiAgICAgICAgICAgICAgICAgIGxvb3Agc3RvcCBzXG4gIGluXG4gIGxldCBzdGFydCA9IHN0b3BfYXQgbm90X3doaXRlIH5zdGFydDowIH5tYXggcyBpblxuICBpZiBzdGFydCA+IG1heCB0aGVuICgpIGVsc2UgbG9vcCBzdGFydCBzXG5cbmxldCB0ZXh0IHBwZiBzID1cbiAgbGV0IG1heCA9IFN0cmluZy5sZW5ndGggcyAtIDEgaW5cbiAgbGV0IHJlYyBsb29wIHN0YXJ0IHMgPSBtYXRjaCBzdG9wX2F0IGlzX25sX29yX3NwIH5zdGFydCB+bWF4IHMgd2l0aFxuICB8IHN0b3Agd2hlbiBzdG9wID4gbWF4IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmIChzdWIgcyBzdGFydCBzdG9wIH5tYXgpXG4gIHwgc3RvcCAtPlxuICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBwcGYgKHN1YiBzIHN0YXJ0IHN0b3Agfm1heCk7XG4gICAgICBiZWdpbiBtYXRjaCBzLltzdG9wXSB3aXRoXG4gICAgICB8ICcgJyAtPiBGb3JtYXQucHBfcHJpbnRfc3BhY2UgcHBmICgpXG4gICAgICB8ICdcXG4nIC0+IEZvcm1hdC5wcF9mb3JjZV9uZXdsaW5lIHBwZiAoKVxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgZW5kO1xuICAgICAgbG9vcCAoc3RvcCArIDEpIHNcbiAgaW5cbiAgbG9vcCAwIHNcblxubGV0IGxpbmVzIHBwZiBzID1cbiAgbGV0IG1heCA9IFN0cmluZy5sZW5ndGggcyAtIDEgaW5cbiAgbGV0IHJlYyBsb29wIHN0YXJ0IHMgPSBtYXRjaCBzdG9wX2F0IGlzX25sIH5zdGFydCB+bWF4IHMgd2l0aFxuICB8IHN0b3Agd2hlbiBzdG9wID4gbWF4IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmIChzdWIgcyBzdGFydCBzdG9wIH5tYXgpXG4gIHwgc3RvcCAtPlxuICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBwcGYgKHN1YiBzIHN0YXJ0IHN0b3Agfm1heCk7XG4gICAgICBGb3JtYXQucHBfZm9yY2VfbmV3bGluZSBwcGYgKCk7XG4gICAgICBsb29wIChzdG9wICsgMSkgc1xuICBpblxuICBsb29wIDAgc1xuXG5sZXQgdHJ1bmNhdGVkIH5tYXggcHBmIHMgPSBtYXRjaCBTdHJpbmcubGVuZ3RoIHMgPD0gbWF4IHdpdGhcbnwgdHJ1ZSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiBzXG58IGZhbHNlIC0+XG4gICAgZm9yIGkgPSAwIHRvIG1heCAtIDQgZG8gRm9ybWF0LnBwX3ByaW50X2NoYXIgcHBmIHMuW2ldIGRvbmU7XG4gICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBwcGYgXCIuLi5cIlxuXG5sZXQgdGV4dF9sb2MgcHBmICgobDAsIGMwKSwgKGwxLCBjMSkpID1cbiAgaWYgKGwwIDogaW50KSA9PSAobDEgOiBpbnQpICYmIChjMCA6IGludCkgPT0gKGMxIDogaW50KVxuICB0aGVuIHBmIHBwZiBcIiVkLiVkXCIgbDAgYzBcbiAgZWxzZSBwZiBwcGYgXCIlZC4lZC0lZC4lZFwiIGwwIGMwIGwxIGMxXG5cbigqIEhDSSBmcmFnbWVudHMgKilcblxubGV0IG9uZV9vZiA/KGVtcHR5ID0gbm9wKSBwcF92IHBwZiA9IGZ1bmN0aW9uXG58IFtdIC0+IGVtcHR5IHBwZiAoKVxufCBbdl0gLT4gcHBfdiBwcGYgdlxufCBbdjA7IHYxXSAtPiBwZiBwcGYgXCJAW2VpdGhlciAlYSBvckAgJWFAXVwiIHBwX3YgdjAgcHBfdiB2MVxufCBfIDo6IF8gYXMgdnMgLT5cbiAgICBsZXQgcmVjIGxvb3AgcHBmID0gZnVuY3Rpb25cbiAgICB8IFt2XSAtPiBwZiBwcGYgXCJvckAgJWFcIiBwcF92IHZcbiAgICB8IHYgOjogdnMgLT4gcGYgcHBmIFwiJWEsQCBcIiBwcF92IHY7IGxvb3AgcHBmIHZzXG4gICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICBpblxuICAgIHBmIHBwZiBcIkBbb25lQCBvZkAgJWFAXVwiIGxvb3AgdnNcblxubGV0IGRpZF95b3VfbWVhblxuICAgID8ocHJlID0gYW55IFwiVW5rbm93blwiKSA/KHBvc3QgPSBub3ApIH5raW5kIHBwX3YgcHBmICh2LCBoaW50cylcbiAgPVxuICBtYXRjaCBoaW50cyB3aXRoXG4gIHwgW10gLT4gcGYgcHBmIFwiQFslYSAlcyAlYSVhLkBdXCIgcHJlICgpIGtpbmQgcHBfdiB2IHBvc3QgKClcbiAgfCBoaW50cyAtPlxuICAgICAgcGYgcHBmIFwiQFslYSAlcyAlYSVhLkAgRGlkIHlvdSBtZWFuICVhID9AXVwiXG4gICAgICAgIHByZSAoKSBraW5kIHBwX3YgdiBwb3N0ICgpIChvbmVfb2YgcHBfdikgaGludHNcblxubGV0IGNhcmRpbmFsID96ZXJvIH5vbmUgP290aGVyICgpID1cbiAgbGV0IG90aGVyID0gbWF0Y2ggb3RoZXIgd2l0aFxuICB8IFNvbWUgb3RoZXIgLT4gb3RoZXJcbiAgfCBOb25lIC0+IGZ1biBwcGYgaSAtPiBvbmUgcHBmIGk7IGNoYXIgcHBmICdzJ1xuICBpblxuICBsZXQgemVybyA9IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpvdGhlciB6ZXJvIGluXG4gIGZ1biBwcGYgaSAtPiBtYXRjaCBJbnQuYWJzIGkgd2l0aFxuICB8IDAgLT4gemVybyBwcGYgMCB8IDEgLT4gb25lIHBwZiAxIHwgbiAtPiBvdGhlciBwcGYgaVxuXG5sZXQgb3JkaW5hbCA9XG4gIGxldCBvbmUgcHBmIGkgPSBpbnQgcHBmIGk7IHN0cmluZyBwcGYgXCJzdFwiIGluXG4gIGxldCB0d28gcHBmIGkgPSBpbnQgcHBmIGk7IHN0cmluZyBwcGYgXCJuZFwiIGluXG4gIGxldCB0aHJlZSBwcGYgaSA9IGludCBwcGYgaTsgc3RyaW5nIHBwZiBcInJkXCIgaW5cbiAgbGV0IG90aGVyIHBwZiBpID0gaW50IHBwZiBpOyBzdHJpbmcgcHBmIFwidGhcIiBpblxuICBmdW4gP3plcm8gPyhvbmUgPSBvbmUpID8odHdvID0gdHdvKSA/KHRocmVlID0gdGhyZWUpID8ob3RoZXIgPSBvdGhlcikgKCkgLT5cbiAgICBsZXQgemVybyA9IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpvdGhlciB6ZXJvIGluXG4gICAgZnVuIHBwZiBpIC0+XG4gICAgICBpZiBpID0gMCB0aGVuIHplcm8gcHBmIGkgZWxzZVxuICAgICAgbGV0IG4gPSBJbnQuYWJzIGkgaW5cbiAgICAgIGxldCBtb2QxMCA9IG4gbW9kIDEwIGluXG4gICAgICBsZXQgbW9kMTAwID0gbiBtb2QgMTAwIGluXG4gICAgICBpZiBtb2QxMCA9IDEgJiYgbW9kMTAwIDw+IDExIHRoZW4gb25lIHBwZiBpIGVsc2VcbiAgICAgIGlmIG1vZDEwID0gMiAmJiBtb2QxMDAgPD4gMTIgdGhlbiB0d28gcHBmIGkgZWxzZVxuICAgICAgaWYgbW9kMTAgPSAzICYmIG1vZDEwMCA8PiAxMyB0aGVuIHRocmVlIHBwZiBpIGVsc2VcbiAgICAgIG90aGVyIHBwZiBpXG5cbigqIENvbmRpdGlvbmFsIFVURi04IGFuZCBzdHlsZWQgZm9ybWF0dGluZy4gKilcblxubW9kdWxlIEltYXAgPSBNYXAuTWFrZSAoSW50KVxuXG50eXBlICdhIGF0dHIgPSBpbnQgKiAoJ2EgLT4gc3RyaW5nKSAqIChzdHJpbmcgLT4gJ2EpXG5sZXQgaWQgPSByZWYgMFxubGV0IGF0dHIgKHR5cGUgYSkgZW5jIGRlYyA9IGluY3IgaWQ7ICghaWQsIGVuYywgZGVjKVxuXG50eXBlIEZvcm1hdC5zdGFnICs9XG58IEZtdF9zdG9yZV9nZXQgOiAnYSBhdHRyIC0+IEZvcm1hdC5zdGFnXG58IEZtdF9zdG9yZV9zZXQgOiAnYSBhdHRyICogJ2EgLT4gRm9ybWF0LnN0YWdcblxubGV0IHN0b3JlICgpID1cbiAgbGV0IHMgPSByZWYgSW1hcC5lbXB0eSBpblxuICBmdW4gfm90aGVyIC0+IGZ1bmN0aW9uXG4gIHwgRm10X3N0b3JlX2dldCAoaWQsIF8sIF8pIC0+IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpcIlwiIChJbWFwLmZpbmRfb3B0IGlkICFzKVxuICB8IEZtdF9zdG9yZV9zZXQgKChpZCwgZW5jLCBfKSwgdikgLT4gcyA6PSBJbWFwLmFkZCBpZCAoZW5jIHYpICFzOyBcIm9rXCJcbiAgfCBzdGFnIC0+IG90aGVyIHN0YWdcblxubGV0IHNldHVwX3N0b3JlIHBwZiA9XG4gIGxldCBmdW5zID0gRm9ybWF0LnBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgcHBmICgpIGluXG4gIGxldCBtYXJrX29wZW5fc3RhZyA9IHN0b3JlICgpIH5vdGhlcjpmdW5zLm1hcmtfb3Blbl9zdGFnIGluXG4gIEZvcm1hdC5wcF9zZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHBwZiB7IGZ1bnMgd2l0aCBtYXJrX29wZW5fc3RhZyB9XG5cbmxldCBzdG9yZV9vcCBvcCBwcGYgPVxuICBsZXQgZnVucyA9IEZvcm1hdC5wcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHBwZiAoKSBpblxuICBmdW5zLm1hcmtfb3Blbl9zdGFnIG9wXG5cbmxldCBnZXQgKF8sIF8sIGRlYyBhcyBhdHRyKSBwcGYgPSBtYXRjaCBzdG9yZV9vcCAoRm10X3N0b3JlX2dldCBhdHRyKSBwcGYgd2l0aFxufCBcIlwiIC0+IE5vbmUgfCBzIC0+IFNvbWUgKGRlYyBzKVxuXG5sZXQgcmVjIHNldCBhdHRyIHYgcHBmID0gbWF0Y2ggc3RvcmVfb3AgKEZtdF9zdG9yZV9zZXQgKGF0dHIsIHYpKSBwcGYgd2l0aFxufCBcIm9rXCIgLT4gKCkgfCBfIC0+IHNldHVwX3N0b3JlIHBwZjsgc2V0IGF0dHIgdiBwcGZcblxubGV0IGRlZiB4ID0gZnVuY3Rpb24gU29tZSB5IC0+IHkgfCBfIC0+IHhcblxubGV0IHV0Zl84X2F0dHIgPVxuICBsZXQgZW5jID0gZnVuY3Rpb24gdHJ1ZSAtPiBcInRcIiB8IGZhbHNlIC0+IFwiZlwiIGluXG4gIGxldCBkZWMgPSBmdW5jdGlvbiBcInRcIiAtPiB0cnVlIHwgXCJmXCIgLT4gZmFsc2UgfCBfIC0+IGFzc2VydCBmYWxzZSBpblxuICBhdHRyIGVuYyBkZWNcblxubGV0IHV0Zl84IHBwZiA9IGdldCB1dGZfOF9hdHRyIHBwZiB8PiBkZWYgdHJ1ZVxubGV0IHNldF91dGZfOCBwcGYgeCA9IHNldCB1dGZfOF9hdHRyIHggcHBmXG5cbnR5cGUgc3R5bGVfcmVuZGVyZXIgPSBbIGBBbnNpX3R0eSB8IGBOb25lIF1cbmxldCBzdHlsZV9yZW5kZXJlcl9hdHRyID1cbiAgbGV0IGVuYyA9IGZ1bmN0aW9uIGBBbnNpX3R0eSAtPiBcIkFcIiB8IGBOb25lIC0+IFwiTlwiIGluXG4gIGxldCBkZWMgPSBmdW5jdGlvbiBcIkFcIiAtPiBgQW5zaV90dHkgfCBcIk5cIiAtPiBgTm9uZSB8IF8gLT4gYXNzZXJ0IGZhbHNlIGluXG4gIGF0dHIgZW5jIGRlY1xuXG5sZXQgc3R5bGVfcmVuZGVyZXIgcHBmID0gZ2V0IHN0eWxlX3JlbmRlcmVyX2F0dHIgcHBmIHw+IGRlZiBgTm9uZVxubGV0IHNldF9zdHlsZV9yZW5kZXJlciBwcGYgeCA9IHNldCBzdHlsZV9yZW5kZXJlcl9hdHRyIHggcHBmXG5cbmxldCB3aXRoX2J1ZmZlciA/bGlrZSBidWYgPVxuICBsZXQgcHBmID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgYnVmIGluXG4gICgqIE4uQi4gdGhpcyBkb2VzIHNsaWdodHkgbW9yZSBpdCBhbHNvIG1ha2VzIGJ1ZiB1c2Ugb3RoZXIgaW5zdGFsbGVkXG4gICAgIHNlbWFudGljIHRhZyBhY3Rpb25zLiAqKVxuICBtYXRjaCBsaWtlIHdpdGhcbiAgfCBOb25lIC0+IHBwZlxuICB8IFNvbWUgbGlrZSAtPlxuICAgICAgbGV0IGZ1bnMgPSBGb3JtYXQucHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBsaWtlICgpIGluXG4gICAgICBGb3JtYXQucHBfc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBwcGYgZnVucztcbiAgICAgIHBwZlxuXG5sZXQgc3RyX2xpa2UgcHBmIGZtdCA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gIGxldCBicHBmID0gd2l0aF9idWZmZXIgfmxpa2U6cHBmIGJ1ZiBpblxuICBsZXQgZmx1c2ggcHBmID1cbiAgICBGb3JtYXQucHBfcHJpbnRfZmx1c2ggcHBmICgpO1xuICAgIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICAgIEJ1ZmZlci5yZXNldCBidWY7IHNcbiAgaW5cbiAgRm9ybWF0LmtmcHJpbnRmIGZsdXNoIGJwcGYgZm10XG5cbigqIENvbmRpdGlvbmFsIFVURi04IGZvcm1hdHRpbmcgKilcblxubGV0IGlmX3V0Zl84IHBwX3UgcHAgPSBmdW4gcHBmIHYgLT4gKGlmIHV0Zl84IHBwZiB0aGVuIHBwX3UgZWxzZSBwcCkgcHBmIHZcblxuKCogU3R5bGVkIGZvcm1hdHRpbmcgKilcblxudHlwZSBjb2xvciA9XG4gIFsgYEJsYWNrIHwgYEJsdWUgfCBgQ3lhbiB8IGBHcmVlbiB8IGBNYWdlbnRhIHwgYFJlZCB8IGBXaGl0ZSB8IGBZZWxsb3cgXVxuXG50eXBlIHN0eWxlID1cbiAgWyBgTm9uZSB8ICBgQm9sZCB8IGBGYWludCB8IGBJdGFsaWMgfCBgVW5kZXJsaW5lIHwgYFJldmVyc2VcbiAgfCBgRmcgb2YgWyBjb2xvciB8IGBIaSBvZiBjb2xvciBdXG4gIHwgYEJnIG9mIFsgY29sb3IgfCBgSGkgb2YgY29sb3IgXVxuICB8IGNvbG9yICgqKiBkZXByZWNhdGVkICopIF1cblxubGV0IGFuc2lfc3R5bGVfY29kZSA9IGZ1bmN0aW9uXG58IGBCb2xkIC0+IFwiMVwiXG58IGBGYWludCAtPiBcIjJcIlxufCBgSXRhbGljIC0+IFwiM1wiXG58IGBVbmRlcmxpbmUgLT4gXCI0XCJcbnwgYFJldmVyc2UgLT4gXCI3XCJcbnwgYEZnIGBCbGFjayAtPiBcIjMwXCJcbnwgYEZnIGBSZWQgLT4gXCIzMVwiXG58IGBGZyBgR3JlZW4gLT4gXCIzMlwiXG58IGBGZyBgWWVsbG93IC0+IFwiMzNcIlxufCBgRmcgYEJsdWUgLT4gXCIzNFwiXG58IGBGZyBgTWFnZW50YSAtPiBcIjM1XCJcbnwgYEZnIGBDeWFuIC0+IFwiMzZcIlxufCBgRmcgYFdoaXRlIC0+IFwiMzdcIlxufCBgQmcgYEJsYWNrIC0+IFwiNDBcIlxufCBgQmcgYFJlZCAtPiBcIjQxXCJcbnwgYEJnIGBHcmVlbiAtPiBcIjQyXCJcbnwgYEJnIGBZZWxsb3cgLT4gXCI0M1wiXG58IGBCZyBgQmx1ZSAtPiBcIjQ0XCJcbnwgYEJnIGBNYWdlbnRhIC0+IFwiNDVcIlxufCBgQmcgYEN5YW4gLT4gXCI0NlwiXG58IGBCZyBgV2hpdGUgLT4gXCI0N1wiXG58IGBGZyAoYEhpIGBCbGFjaykgLT4gXCI5MFwiXG58IGBGZyAoYEhpIGBSZWQpIC0+IFwiOTFcIlxufCBgRmcgKGBIaSBgR3JlZW4pIC0+IFwiOTJcIlxufCBgRmcgKGBIaSBgWWVsbG93KSAtPiBcIjkzXCJcbnwgYEZnIChgSGkgYEJsdWUpIC0+IFwiOTRcIlxufCBgRmcgKGBIaSBgTWFnZW50YSkgLT4gXCI5NVwiXG58IGBGZyAoYEhpIGBDeWFuKSAtPiBcIjk2XCJcbnwgYEZnIChgSGkgYFdoaXRlKSAtPiBcIjk3XCJcbnwgYEJnIChgSGkgYEJsYWNrKSAtPiBcIjEwMFwiXG58IGBCZyAoYEhpIGBSZWQpIC0+IFwiMTAxXCJcbnwgYEJnIChgSGkgYEdyZWVuKSAtPiBcIjEwMlwiXG58IGBCZyAoYEhpIGBZZWxsb3cpIC0+IFwiMTAzXCJcbnwgYEJnIChgSGkgYEJsdWUpIC0+IFwiMTA0XCJcbnwgYEJnIChgSGkgYE1hZ2VudGEpIC0+IFwiMTA1XCJcbnwgYEJnIChgSGkgYEN5YW4pIC0+IFwiMTA2XCJcbnwgYEJnIChgSGkgYFdoaXRlKSAtPiBcIjEwN1wiXG58IGBOb25lIC0+IFwiMFwiXG4oKiBkZXByZWNhdGVkICopXG58IGBCbGFjayAtPiBcIjMwXCJcbnwgYFJlZCAtPiBcIjMxXCJcbnwgYEdyZWVuIC0+IFwiMzJcIlxufCBgWWVsbG93IC0+IFwiMzNcIlxufCBgQmx1ZSAtPiBcIjM0XCJcbnwgYE1hZ2VudGEgLT4gXCIzNVwiXG58IGBDeWFuIC0+IFwiMzZcIlxufCBgV2hpdGUgLT4gXCIzN1wiXG5cbmxldCBwcF9zZ3IgcHBmIHN0eWxlID1cbiAgRm9ybWF0LnBwX3ByaW50X2FzIHBwZiAwIFwiXFwwMjdbXCI7XG4gIEZvcm1hdC5wcF9wcmludF9hcyBwcGYgMCBzdHlsZTtcbiAgRm9ybWF0LnBwX3ByaW50X2FzIHBwZiAwIFwibVwiXG5cbmxldCBjdXJyX3N0eWxlID0gYXR0ciBGdW4uaWQgRnVuLmlkXG5cbmxldCBzdHlsZWQgc3R5bGUgcHBfdiBwcGYgdiA9IG1hdGNoIHN0eWxlX3JlbmRlcmVyIHBwZiB3aXRoXG58IGBOb25lIC0+IHBwX3YgcHBmIHZcbnwgYEFuc2lfdHR5IC0+XG4gICAgbGV0IHByZXYgPSBtYXRjaCBnZXQgY3Vycl9zdHlsZSBwcGYgd2l0aFxuICAgIHwgTm9uZSAtPiBsZXQgemVybyA9IFwiMFwiIGluIHNldCBjdXJyX3N0eWxlIHplcm8gcHBmOyB6ZXJvXG4gICAgfCBTb21lIHMgLT4gc1xuICAgIGluXG4gICAgbGV0IGhlcmUgPSBhbnNpX3N0eWxlX2NvZGUgc3R5bGUgaW5cbiAgICBsZXQgY3VyciA9IG1hdGNoIHN0eWxlIHdpdGhcbiAgICB8IGBOb25lIC0+IGhlcmVcbiAgICB8IF8gLT4gU3RyaW5nLmNvbmNhdCBcIjtcIiBbcHJldjsgaGVyZV1cbiAgICBpblxuICAgIGxldCBmaW5hbGx5ICgpID0gc2V0IGN1cnJfc3R5bGUgcHJldiBwcGYgaW5cbiAgICBzZXQgY3Vycl9zdHlsZSBjdXJyIHBwZjtcbiAgICBGdW4ucHJvdGVjdCB+ZmluYWxseSBAQCBmdW4gKCkgLT5cbiAgICBwcF9zZ3IgcHBmIGhlcmU7IHBwX3YgcHBmIHY7IHBwX3NnciBwcGYgcHJldlxuXG4oKiBSZWNvcmRzICopXG5cbmxldCBpZCA9IEZ1bi5pZFxubGV0IGxhYmVsID0gc3R5bGVkIChgRmcgYFllbGxvdykgc3RyaW5nXG5sZXQgZmllbGQgPyhsYWJlbCA9IGxhYmVsKSA/KHNlcCA9IGFueSBcIjpAIFwiKSBsIHByaiBwcF92IHBwZiB2ID1cbiAgcGYgcHBmIFwiQFs8MT4lYSVhJWFAXVwiIGxhYmVsIGwgc2VwICgpIHBwX3YgKHByaiB2KVxuXG5sZXQgcmVjb3JkID8oc2VwID0gY3V0KSBwcHMgPSB2Ym94IChjb25jYXQgfnNlcCBwcHMpXG5cbigqIENvbnZlcnRpbmcgd2l0aCBzdHJpbmcgY29udmVydGVycy4gKilcblxubGV0IG9mX3RvX3N0cmluZyBmIHBwZiB2ID0gc3RyaW5nIHBwZiAoZiB2KVxubGV0IHRvX3RvX3N0cmluZyBwcF92IHYgPSBzdHIgXCIlYVwiIHBwX3YgdlxuXG4oKiBEZXByZWNhdGVkICopXG5cbmxldCBzdHJmID0gc3RyXG5sZXQga3N0cmYgPSBrc3RyXG5sZXQgc3RyZl9saWtlID0gc3RyX2xpa2VcbmxldCBhbHdheXMgPSBhbnlcbmxldCB1bml0ID0gYW55XG5sZXQgcHJlZml4IHBwX3AgcHBfdiBwcGYgdiA9IHBwX3AgcHBmICgpOyBwcF92IHBwZiB2XG5sZXQgc3VmZml4IHBwX3MgcHBfdiBwcGYgdiA9IHBwX3YgcHBmIHY7IHBwX3MgcHBmICgpXG5sZXQgc3R5bGVkX3VuaXQgc3R5bGUgZm10ID0gc3R5bGVkIHN0eWxlIChhbnkgZm10KVxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NoZWNrX2JvdW5kIiwiY2FtbF9kaXYiLCJjYW1sX2ZyZXNoX29vX2lkIiwiY2FtbF9pbnQ2NF9hZGQiLCJjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSIsImNhbWxfaW50NjRfZGl2IiwiY2FtbF9pbnQ2NF9tdWwiLCJjYW1sX2ludDY0X3N1YiIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfbWxfc3RyaW5nX2xlbmd0aCIsImNhbWxfbW9kIiwiY2FtbF9tdWwiLCJjYW1sX25vdGVxdWFsIiwiY2FtbF9zdHJpbmdfZ2V0IiwiY2FtbF90cmFtcG9saW5lIiwiY2FtbF90cmFtcG9saW5lX3JldHVybiIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJjYW1sX2NhbGwzIiwiYTIiLCJjYW1sX2NhbGw0IiwiYTMiLCJjYW1sX2NhbGw2IiwiYTQiLCJhNSIsImNhbWxfY2FsbDciLCJhNiIsImNhbWxfY2FsbDkiLCJhNyIsImE4IiwiZ2xvYmFsX2RhdGEiLCJ5IiwidXNfc3BhbiIsIm1zX3NwYW4iLCJzZWNfc3BhbiIsIm1pbl9zcGFuIiwiaG91cl9zcGFuIiwiZGF5X3NwYW4iLCJ5ZWFyX3NwYW4iLCJTdGRsaWJfSW50NjQiLCJTdGRsaWJfU3RyaW5nIiwiU3RkbGliX0Z1biIsIlN0ZGxpYl9Gb3JtYXQiLCJTdGRsaWJfQnVmZmVyIiwiQXNzZXJ0X2ZhaWx1cmUiLCJTdGRsaWJfT3B0aW9uIiwiU3RkbGliX0ludCIsIlN0ZGxpYl9MaXN0IiwiU3RkbGliIiwiU3RkbGliX1F1ZXVlIiwiU3RkbGliX1N0YWNrIiwiU3RkbGliX0hhc2h0YmwiLCJTdGRsaWJfVWNoYXIiLCJTdGRsaWJfU2VxIiwiU3RkbGliX0FycmF5IiwiU3RkbGliX1ByaW50ZXhjIiwiU3RkbGliX1N5cyIsIlN0ZGxpYl9NYXAiLCJzdGRvdXQiLCJzdGRlcnIiLCJwZiIsInByIiwiZXByIiwic3RyIiwia3BmIiwia3N0ciIsImZhaWx3aXRoIiwiZm10IiwiZmFpbHdpdGhfbm90cmFjZSIsInMiLCJpbnZhbGlkX2FyZyIsImVycm9yIiwiZXJyb3JfbXNnIiwiZmx1c2giLCJwcGYiLCJwYXJhbSIsIm5vcCIsImFueSIsInVzaW5nIiwicHAiLCJ2IiwiY29uc3QkIiwicHBfdiIsImlmJCIsImJvb2wiLCJjdXQiLCJzcCIsInNwcyIsIm4iLCJjb21tYSIsImNzdCIsInNlbWkiLCJpdGVyIiwib3B0IiwicHBfZWx0IiwicHBfc2VwIiwiaXNfZmlyc3QiLCJpdGVyX2JpbmRpbmdzIiwicHBfYmluZGluZyIsImsiLCJhcHBlbmQiLCJwcF92MCIsInBwX3YxIiwiY29uY2F0Iiwic2VwIiwicHBzIiwiYm94IiwiaW5kZW50IiwiaGJveCIsInZib3giLCJodmJveCIsImhvdmJveCIsInN1cnJvdW5kIiwiczEiLCJzMiIsInBhcmVucyIsImJyYWNrZXRzIiwiYnJhY2VzIiwicXVvdGUiLCJtYXJrIiwicHBfbWFyayIsImludCIsIm5hdGl2ZWludCIsImludDMyIiwiaW50NjQiLCJ1aW50IiwidWludDMyIiwidWludDY0IiwidW5hdGl2ZWludCIsImNoYXIiLCJzdHJpbmciLCJidWZmZXIiLCJiIiwiZXhuIiwiZSIsImNzdF92IiwiZXhuX2JhY2t0cmFjZSIsImJ0IiwicHBfYmFja3RyYWNlX3N0ciIsInN0b3AiLCJsZWZ0IiwicmlnaHQiLCJjc3RfZyIsImZsb2F0Iiwicm91bmRfZGZyYWMiLCJkIiwieCIsIm0iLCJmbG9hdF9kZnJhYyIsImZsb2F0X2RzaWciLCJwYWlyIiwicHBfZnN0IiwicHBfc25kIiwic25kIiwiZnN0Iiwib3B0aW9uIiwicHBfbm9uZSIsInJlc3VsdCIsIm9rIiwibGlzdCIsImFycmF5Iiwic2VxIiwiaGFzaHRibCIsInF1ZXVlIiwic3RhY2siLCJzaWdfbmFtZXMiLCJzaWduYWwiLCJtYXRjaCIsIm5hbWUiLCJ1Y2hhciIsInUiLCJjc3RfMiIsImNzdF9Ob25lIiwiaXRlcl9mIiwicHBfbmFtZSIsInBwX2siLCJjc3RfaGFzaHRibCIsImNzdF9zdGFjayIsImNzdF9xdWV1ZSIsImNzdF8xIiwiZmllbGQiLCJsIiwicHJqIiwibGFiZWwiLCJyZWNvcmQiLCJpcG93MTAiLCJhY2MiLCJjc3RfZiIsImNzdF9tIiwic2lfc3ltYiIsImNzdF9kX3NfcyIsImNzdF9kX2Rfc19zIiwic2lfc2l6ZSIsInNjYWxlIiwicG93X2Rpdl8zIiwicCIsInN5bWIiLCJmYWN0b3IiLCJtX3VwIiwiZl9mYWN0b3IiLCJmX20iLCJmX24iLCJmX21fdXAiLCJieXRlX3NpemUiLCJiaV9ieXRlX3NpemUiLCJwcF9mcmFjIiwiZGl2X3JvdW5kX3VwIiwiaSIsInNrIiwic20iLCJzZyIsInN0IiwidW5zaWduZWRfY29tcGFyZSIsIngwIiwieDEiLCJ1bnNpZ25lZF9kaXYiLCJxIiwiciIsInVuc2lnbmVkX3JlbSIsImNzdF9MZF9zIiwiY3N0X0xkX0xkX3MiLCJwcF9zaV9zcGFuIiwiY291bnRlciIsInVuaXRfc3RyIiwic2lfdW5pdCIsInNpX2hpZ2hlcl91bml0Iiwic3BhbiIsImdlcSIsInBwX25vbl9zaSIsInVuaXQiLCJ1bml0X2xvX3N0ciIsInVuaXRfbG8iLCJ1bml0X2xvX3NpemUiLCJjc3RfTGRhIiwidWludDY0X25zX3NwYW4iLCJsdCIsImNzdF91cyIsImNzdF9tcyIsImNzdF9zIiwiY3N0X21pbiIsImNzdF9oIiwiY3N0X2QiLCJpdGVyX3ZlYyIsImdldCIsInZlYyIsIm9uX3N0cmluZyIsIm9uX2J5dGVzIiwiY3N0XzAyeCIsInByZWZpeDB4IiwiYXNjaWkiLCJ3Iiwic3Vic3QiLCJwcF9jaGFyIiwiYyIsIm9jdGV0cyIsImFkZHJlc3NlcyIsImFkZHIiLCJwcF92ZWMiLCJtYXgiLCJwcF9zdWIiLCJzdWIiLCJqIiwib2ZmIiwiaGV4IiwiaXNfd2hpdGUiLCJub3Rfd2hpdGUiLCJub3Rfd2hpdGVfb3JfbmwiLCJzdG9wX2F0Iiwic2F0Iiwic3RhcnQiLCJ3b3JkcyIsInBhcmFncmFwaHMiLCJjc3Rfc3JjX2ZtdF9tbCIsInRleHQiLCJsaW5lcyIsInRydW5jYXRlZCIsInRleHRfbG9jIiwiYzEiLCJsMSIsImMwIiwibDAiLCJvbmVfb2YiLCJ2cyIsImVtcHR5IiwibG9vcCIsInYxIiwiY3N0X1Vua25vd24iLCJkaWRfeW91X21lYW4iLCJraW5kIiwicHJlIiwicG9zdCIsImhpbnRzIiwiY2FyZGluYWwiLCJ6ZXJvIiwib25lIiwib3RoZXIiLCJ0d28iLCJ0aHJlZSIsIm9yZGluYWwiLCJtb2QxMCIsIm1vZDEwMCIsIkltYXAiLCJpZCIsImF0dHIiLCJlbmMiLCJkZWMiLCJGbXRfc3RvcmVfZ2V0IiwiRm10X3N0b3JlX3NldCIsInN0b3JlX29wIiwib3AiLCJmdW5zIiwic2V0IiwiY3N0X29rIiwibWFya19vcGVuX3N0YWciLCJzdGFnIiwiZGVmIiwiY3N0X3QiLCJ1dGZfOF9hdHRyIiwidXRmXzgiLCJzZXRfdXRmXzgiLCJjc3RfQSIsImNzdF9OIiwic3R5bGVfcmVuZGVyZXJfYXR0ciIsInN0eWxlX3JlbmRlcmVyIiwic2V0X3N0eWxlX3JlbmRlcmVyIiwid2l0aF9idWZmZXIiLCJsaWtlIiwiYnVmIiwic3RyX2xpa2UiLCJicHBmIiwiaWZfdXRmXzgiLCJwcF91IiwicHBfc2dyIiwic3R5bGUiLCJjdXJyX3N0eWxlIiwic3R5bGVkIiwiY3N0XzAiLCJwcmV2IiwiY3N0XzMwIiwiY3N0XzMxIiwiY3N0XzMyIiwiY3N0XzMzIiwiY3N0XzM0IiwiY3N0XzM1IiwiY3N0XzM2IiwiY3N0XzM3IiwiaGVyZSIsInZhcmlhbnQiLCJjdXJyIiwiZmluYWxseSQiLCJvZl90b19zdHJpbmciLCJ0b190b19zdHJpbmciLCJwcmVmaXgiLCJwcF9wIiwic3VmZml4IiwicHBfcyIsInN0eWxlZF91bml0Il0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsV0FBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyw2QkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxpQkFBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsSUFBQUMsd0JBQUE7QUFBQSxJQUFBQyxXQUFBO0FBQUEsSUFBQUMsV0FBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxJQUFBQyxrQkFBQTtBQUFBLElBQUFDLHlCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQU4sR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFSLEdBQUFDLElBQUFFLElBQUFFLElBQUFFLElBQUFFLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBWCxHQUFBQyxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQWIsR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUMsSUFBQUUsSUFBQUUsSUFBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLElBQUE7QUFBQSxJQUFBQyxVQUFBO0FBQUEsSUFBQUMsVUFBQTtBQUFBLElBQUFDLFdBQUE7QUFBQSxJQUFBQyxXQUFBO0FBQUEsSUFBQUMsWUFBQTtBQUFBLElBQUFDLFdBQUE7QUFBQSxJQUFBQyxZQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyxpQkFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxpQkFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLElBQUFDLGtCQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLGFBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDLEtBQUE7QUFBQSxJ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O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVEdnhCdkMiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjozMTY1MSwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiIuY29vcmRpbmF0ZS5vYmpzL2pzb28vZGVmYXVsdC9jb29yZGluYXRlLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvd29ya3NwYWNlX3Jvb3Qvb2NhbWwtY29vcmRpbmF0ZS9saWIvY29vcmRpbmF0ZS5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBDb3B5cmlnaHQgKGMpIDIwMjUgVGhvbWFzIEdhemFnbmFpcmUuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbigqKiBBc3Ryb2R5bmFtaWNzIGNvb3JkaW5hdGUgZnJhbWUgdHJhbnNmb3Jtcy4gKilcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG4oKiAgVHlwZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxudHlwZSB2ZWMzID0geyB4IDogZmxvYXQ7IHkgOiBmbG9hdDsgeiA6IGZsb2F0IH1cbnR5cGUgZ2VvZGV0aWMgPSB7IGxhdCA6IGZsb2F0OyBsb24gOiBmbG9hdDsgYWx0IDogZmxvYXQgfVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcbigqICBDb25zdGFudHMgKFdHUy04NCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG5sZXQgZWFydGhfcmFkaXVzID0gNjM3OC4xMzdcbmxldCBlYXJ0aF9mbGF0dGVuaW5nID0gMS4gLy4gMjk4LjI1NzIyMzU2M1xubGV0IGVhcnRoX211ID0gMzk4NjAwLjQ0MThcbmxldCBlYXJ0aF9qMiA9IDAuMDAxMDgyNjNcbmxldCBlYXJ0aF9yb3RhdGlvbl9yYXRlID0gNy4yOTIxMTUxNDY3ZS01XG5sZXQgdHdvcGkgPSAyLiAqLiBGbG9hdC5waVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcbigqICBVdGlsaXR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG5sZXQgdmVjMyB4IHkgeiA9IHsgeDsgeTsgeiB9XG5sZXQgdmVjM19sZW5ndGggdiA9IHNxcnQgKCh2LnggKi4gdi54KSArLiAodi55ICouIHYueSkgKy4gKHYueiAqLiB2LnopKVxuXG5sZXQgbm9ybWFsaXplX2FuZ2xlIGEgPVxuICBsZXQgYSA9IEZsb2F0LnJlbSBhIHR3b3BpIGluXG4gIGlmIGEgPCAwLiB0aGVuIGEgKy4gdHdvcGkgZWxzZSBhXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuKCogIFRpbWUgY29udmVyc2lvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbmxldCBqdWxpYW5fZGF0ZV9vZl91bml4IHQgPSAodCAvLiA4NjQwMC4pICsuIDI0NDA1ODcuNVxubGV0IHVuaXhfb2ZfanVsaWFuX2RhdGUgamQgPSAoamQgLS4gMjQ0MDU4Ny41KSAqLiA4NjQwMC5cblxubGV0IGp1bGlhbl9jZW50dXJpZXMgdW5peF90ID1cbiAgbGV0IGpkID0ganVsaWFuX2RhdGVfb2ZfdW5peCB1bml4X3QgaW5cbiAgKGpkIC0uIDI0NTE1NDUuMCkgLy4gMzY1MjUuMFxuXG4oKiogR01TVCB1c2luZyB0aGUgSUFVIDE5ODIgbW9kZWwuXG5cbiAgICBSZWZlcmVuY2U6IFZhbGxhZG8sIEVxLiAzLTQ3LiBHTVNUID0gNjczMTAuNTQ4NDEgKyAoODc2NjAwaCArXG4gICAgODY0MDE4NC44MTI4NjYpVFxuICAgICsgMC4wOTMxMDQgVF4yIC0gNi4yZS02IFReMyB3aGVyZSBUIGlzIEp1bGlhbiBjZW50dXJpZXMgZnJvbSBKMjAwMC4wLiAqKVxubGV0IGdtc3Rfb2ZfdW5peCB1bml4X3RpbWUgPVxuICBsZXQgdCA9IGp1bGlhbl9jZW50dXJpZXMgdW5peF90aW1lIGluXG4gIGxldCBnbXN0X3NlYyA9XG4gICAgNjczMTAuNTQ4NDFcbiAgICArLiAoKCg4NzY2MDAuMCAqLiAzNjAwLikgKy4gODY0MDE4NC44MTI4NjYpICouIHQpXG4gICAgKy4gKDAuMDkzMTA0ICouIHQgKi4gdClcbiAgICAtLiAoNi4yZS02ICouIHQgKi4gdCAqLiB0KVxuICBpblxuICBub3JtYWxpemVfYW5nbGUgKGdtc3Rfc2VjICouIHR3b3BpIC8uIDg2NDAwLilcblxubGV0IGdtc3QgcHRpbWUgPSBnbXN0X29mX3VuaXggKFB0aW1lLnRvX2Zsb2F0X3MgcHRpbWUpXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuKCogIEZyYW1lIHRyYW5zZm9ybXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqKiBaLWF4aXMgcm90YXRpb24gYnkgYW5nbGUgdGhldGEuIFJ6KM64KSA9XG4gICAgW1tjb3MgzrgsIHNpbiDOuCwgMF0sIFstc2luIM64LCBjb3MgzrgsIDBdLCBbMCwgMCwgMV1dICopXG5sZXQgcm90YXRlX3ogdGhldGEgdiA9XG4gIGxldCBjID0gY29zIHRoZXRhIGFuZCBzID0gc2luIHRoZXRhIGluXG4gIHsgeCA9IChjICouIHYueCkgKy4gKHMgKi4gdi55KTsgeSA9ICgtLnMgKi4gdi54KSArLiAoYyAqLiB2LnkpOyB6ID0gdi56IH1cblxubGV0IHRlbWVfdG9fZWNlZiB+Z21zdCB2ID0gcm90YXRlX3ogZ21zdCB2XG5sZXQgZWNlZl90b190ZW1lIH5nbXN0IHYgPSByb3RhdGVfeiAoLS5nbXN0KSB2XG5sZXQgajIwMDBfdG9fZWNlZiB+Z21zdCB2ID0gcm90YXRlX3ogZ21zdCB2XG5sZXQgZWNlZl90b19qMjAwMCB+Z21zdCB2ID0gcm90YXRlX3ogKC0uZ21zdCkgdlxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcbigqICBHZW9kZXRpYyBjb252ZXJzaW9ucyAoV0dTLTg0IGVsbGlwc29pZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiogQm93cmluZydzIGl0ZXJhdGl2ZSBtZXRob2QgZm9yIEVDRUYg4oaSIGdlb2RldGljLlxuXG4gICAgUmVmZXJlbmNlOiBWYWxsYWRvIEFsZ29yaXRobSAxMiwgTW9udGVuYnJ1Y2sgJiBHaWxsIMKnNS4zLiBDb252ZXJnZXMgaW4gMi0zXG4gICAgaXRlcmF0aW9ucyBmb3IgdHlwaWNhbCBwb3NpdGlvbnMuICopXG5sZXQgZWNlZl90b19nZW9kZXRpYyB2ID1cbiAgbGV0IGEgPSBlYXJ0aF9yYWRpdXMgaW5cbiAgbGV0IGYgPSBlYXJ0aF9mbGF0dGVuaW5nIGluXG4gIGxldCBlMiA9ICgyLiAqLiBmKSAtLiAoZiAqLiBmKSBpblxuICAoKiBmaXJzdCBlY2NlbnRyaWNpdHkgc3F1YXJlZCAqKVxuICBsZXQgcCA9IHNxcnQgKCh2LnggKi4gdi54KSArLiAodi55ICouIHYueSkpIGluXG4gIGxldCBsb25fcmFkID0gYXRhbjIgdi55IHYueCBpblxuICAoKiBJbml0aWFsIGxhdGl0dWRlIGVzdGltYXRlICopXG4gIGxldCBsYXRfcmFkID0gcmVmIChhdGFuMiB2LnogcCkgaW5cbiAgKCogSXRlcmF0ZSBCb3dyaW5nJ3MgbWV0aG9kICopXG4gIGZvciBfID0gMSB0byA1IGRvXG4gICAgbGV0IHNpbl9sYXQgPSBzaW4gIWxhdF9yYWQgaW5cbiAgICBsZXQgbiA9IGEgLy4gc3FydCAoMS4gLS4gKGUyICouIHNpbl9sYXQgKi4gc2luX2xhdCkpIGluXG4gICAgbGF0X3JhZCA6PSBhdGFuMiAodi56ICsuIChlMiAqLiBuICouIHNpbl9sYXQpKSBwXG4gIGRvbmU7XG4gIGxldCBzaW5fbGF0ID0gc2luICFsYXRfcmFkIGluXG4gIGxldCBuID0gYSAvLiBzcXJ0ICgxLiAtLiAoZTIgKi4gc2luX2xhdCAqLiBzaW5fbGF0KSkgaW5cbiAgbGV0IGFsdCA9XG4gICAgaWYgYWJzX2Zsb2F0IChjb3MgIWxhdF9yYWQpID4gMWUtMTAgdGhlbiAocCAvLiBjb3MgIWxhdF9yYWQpIC0uIG5cbiAgICBlbHNlIChhYnNfZmxvYXQgdi56IC8uIHNpbl9sYXQpIC0uIChuICouICgxLiAtLiBlMikpXG4gIGluXG4gIHsgbGF0ID0gIWxhdF9yYWQgKi4gMTgwLiAvLiBGbG9hdC5waTsgbG9uID0gbG9uX3JhZCAqLiAxODAuIC8uIEZsb2F0LnBpOyBhbHQgfVxuXG4oKiogR2VvZGV0aWMg4oaSIEVDRUYuXG5cbiAgICBSZWZlcmVuY2U6IFZhbGxhZG8gQWxnb3JpdGhtIDExLiAqKVxubGV0IGdlb2RldGljX3RvX2VjZWYgZyA9XG4gIGxldCBhID0gZWFydGhfcmFkaXVzIGluXG4gIGxldCBmID0gZWFydGhfZmxhdHRlbmluZyBpblxuICBsZXQgZTIgPSAoMi4gKi4gZikgLS4gKGYgKi4gZikgaW5cbiAgbGV0IGxhdF9yYWQgPSBnLmxhdCAqLiBGbG9hdC5waSAvLiAxODAuIGluXG4gIGxldCBsb25fcmFkID0gZy5sb24gKi4gRmxvYXQucGkgLy4gMTgwLiBpblxuICBsZXQgc2luX2xhdCA9IHNpbiBsYXRfcmFkIGluXG4gIGxldCBjb3NfbGF0ID0gY29zIGxhdF9yYWQgaW5cbiAgbGV0IG4gPSBhIC8uIHNxcnQgKDEuIC0uIChlMiAqLiBzaW5fbGF0ICouIHNpbl9sYXQpKSBpblxuICB7XG4gICAgeCA9IChuICsuIGcuYWx0KSAqLiBjb3NfbGF0ICouIGNvcyBsb25fcmFkO1xuICAgIHkgPSAobiArLiBnLmFsdCkgKi4gY29zX2xhdCAqLiBzaW4gbG9uX3JhZDtcbiAgICB6ID0gKChuICouICgxLiAtLiBlMikpICsuIGcuYWx0KSAqLiBzaW5fbGF0O1xuICB9XG5cbmxldCB0ZW1lX3RvX2dlb2RldGljIH5nbXN0IHYgPSBlY2VmX3RvX2dlb2RldGljICh0ZW1lX3RvX2VjZWYgfmdtc3QgdilcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG4oKiAgUHJldHR5LXByaW50aW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxubGV0IHBwX3ZlYzMgcHBmIHYgPSBGbXQucGYgcHBmIFwiKCUuM2YsICUuM2YsICUuM2YpXCIgdi54IHYueSB2LnpcblxubGV0IHBwX2dlb2RldGljIHBwZiBnID1cbiAgRm10LnBmIHBwZiBcIiUuNGbCsCVzICUuNGbCsCVzICUuM2Yga21cIiAoYWJzX2Zsb2F0IGcubGF0KVxuICAgIChpZiBnLmxhdCA+PSAwLiB0aGVuIFwiTlwiIGVsc2UgXCJTXCIpXG4gICAgKGFic19mbG9hdCBnLmxvbilcbiAgICAoaWYgZy5sb24gPj0gMC4gdGhlbiBcIkVcIiBlbHNlIFwiV1wiKVxuICAgIGcuYWx0XG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2FsbDMiLCJmIiwiYTAiLCJhMSIsImEyIiwiY2FtbF9jYWxsNSIsImEzIiwiYTQiLCJnbG9iYWxfZGF0YSIsIkZtdCIsIlN0ZGxpYl9GbG9hdCIsIlB0aW1lIiwidHdvcGkiLCJ2ZWMzIiwieCIsInkiLCJ6IiwidmVjM19sZW5ndGgiLCJ2Iiwibm9ybWFsaXplX2FuZ2xlIiwiYSIsImp1bGlhbl9kYXRlX29mX3VuaXgiLCJ0IiwidW5peF9vZl9qdWxpYW5fZGF0ZSIsImpkIiwianVsaWFuX2NlbnR1cmllcyIsInVuaXhfdCIsImdtc3Rfb2ZfdW5peCIsInVuaXhfdGltZSIsImdtc3Rfc2VjIiwiZ21zdCIsInB0aW1lIiwicm90YXRlX3oiLCJ0aGV0YSIsImMiLCJzIiwidGVtZV90b19lY2VmIiwiZWNlZl90b190ZW1lIiwiajIwMDBfdG9fZWNlZiIsImVjZWZfdG9fajIwMDAiLCJlY2VmX3RvX2dlb2RldGljIiwicCIsImxvbl9yYWQiLCJsYXRfcmFkIiwiZm9yJCIsInNpbl9sYXQiLCJuIiwiYWx0IiwiZ2VvZGV0aWNfdG9fZWNlZiIsImciLCJjb3NfbGF0IiwidGVtZV90b19nZW9kZXRpYyIsImNzdCIsInBwX3ZlYzMiLCJwcGYiLCJwcF9nZW9kZXRpYyJdLCJtYXBwaW5ncyI6Ik9BQUFBLFVBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQyxJQUFBQyxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUosR0FBQUMsSUFBQUMsSUFBQUMsSUFBQUUsSUFBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLE1BQUE7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ZSI6MzE4MzMsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLmdsb2JlLm9ianMvanNvby9kZWZhdWx0L2dsb2JlLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvd29ya3NwYWNlX3Jvb3Qvb2NhbWwtZ2xvYmUvbGliL21hdGgubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgQ29weXJpZ2h0IChjKSAyMDI1IFRob21hcyBHYXphZ25haXJlLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG4oKiogTGluZWFyIGFsZ2VicmEgcHJpbWl0aXZlcyBmb3IgM0QgcmVuZGVyaW5nOiBWZWMzIGFuZCBNYXQ0LiAqKVxuXG5tb2R1bGUgVmVjMyA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IHggOiBmbG9hdDsgeSA6IGZsb2F0OyB6IDogZmxvYXQgfVxuXG4gIGxldCBjcmVhdGUgeCB5IHogPSB7IHg7IHk7IHogfVxuICBsZXQgemVybyA9IHsgeCA9IDAuOyB5ID0gMC47IHogPSAwLiB9XG4gIGxldCBhZGQgYSBiID0geyB4ID0gYS54ICsuIGIueDsgeSA9IGEueSArLiBiLnk7IHogPSBhLnogKy4gYi56IH1cbiAgbGV0IHN1YiBhIGIgPSB7IHggPSBhLnggLS4gYi54OyB5ID0gYS55IC0uIGIueTsgeiA9IGEueiAtLiBiLnogfVxuICBsZXQgc2NhbGUgcyB2ID0geyB4ID0gcyAqLiB2Lng7IHkgPSBzICouIHYueTsgeiA9IHMgKi4gdi56IH1cbiAgbGV0IGRvdCBhIGIgPSAoYS54ICouIGIueCkgKy4gKGEueSAqLiBiLnkpICsuIChhLnogKi4gYi56KVxuXG4gIGxldCBjcm9zcyBhIGIgPVxuICAgIHtcbiAgICAgIHggPSAoYS55ICouIGIueikgLS4gKGEueiAqLiBiLnkpO1xuICAgICAgeSA9IChhLnogKi4gYi54KSAtLiAoYS54ICouIGIueik7XG4gICAgICB6ID0gKGEueCAqLiBiLnkpIC0uIChhLnkgKi4gYi54KTtcbiAgICB9XG5cbiAgbGV0IGxlbmd0aCB2ID0gc3FydCAoZG90IHYgdilcblxuICBsZXQgbm9ybWFsaXplIHYgPVxuICAgIGxldCBsID0gbGVuZ3RoIHYgaW5cbiAgICBpZiBsID4gMWUtMTAgdGhlbiBzY2FsZSAoMS4gLy4gbCkgdiBlbHNlIHplcm9cblxuICBsZXQgbmVnYXRlIHYgPSB7IHggPSAtLnYueDsgeSA9IC0udi55OyB6ID0gLS52LnogfVxuZW5kXG5cbm1vZHVsZSBNYXQ0ID0gc3RydWN0XG4gIHR5cGUgdCA9IGZsb2F0IGFycmF5XG4gICgqKiBDb2x1bW4tbWFqb3IgNHg0IG1hdHJpeCBzdG9yZWQgYXMgYSBmbGF0IDE2LWVsZW1lbnQgYXJyYXkuIExheW91dDpcbiAgICAgIFttMCBtMSBtMiBtMyB8IG00IG01IG02IG03IHwgbTggbTkgbTEwIG0xMSB8IG0xMiBtMTMgbTE0IG0xNV0gd2hlcmUgZWFjaFxuICAgICAgZ3JvdXAgb2YgNCBpcyBvbmUgY29sdW1uLiAqKVxuXG4gIGxldCBpZGVudGl0eSAoKSA9XG4gICAgW3wgMS47IDAuOyAwLjsgMC47IDAuOyAxLjsgMC47IDAuOyAwLjsgMC47IDEuOyAwLjsgMC47IDAuOyAwLjsgMS4gfF1cblxuICBsZXQgbXVsdGlwbHkgKGEgOiB0KSAoYiA6IHQpIDogdCA9XG4gICAgbGV0IHIgPSBBcnJheS5tYWtlIDE2IDAuIGluXG4gICAgZm9yIGNvbCA9IDAgdG8gMyBkb1xuICAgICAgZm9yIHJvdyA9IDAgdG8gMyBkb1xuICAgICAgICBsZXQgdiA9IHJlZiAwLiBpblxuICAgICAgICBmb3IgayA9IDAgdG8gMyBkb1xuICAgICAgICAgIHYgOj0gIXYgKy4gKGEuKChrICogNCkgKyByb3cpICouIGIuKChjb2wgKiA0KSArIGspKVxuICAgICAgICBkb25lO1xuICAgICAgICByLigoY29sICogNCkgKyByb3cpIDwtICF2XG4gICAgICBkb25lXG4gICAgZG9uZTtcbiAgICByXG5cbiAgbGV0IHBlcnNwZWN0aXZlIH5mb3Z5IH5hc3BlY3Qgfm5lYXIgfmZhciA9XG4gICAgbGV0IGYgPSAxLiAvLiB0YW4gKGZvdnkgLy4gMi4pIGluXG4gICAgbGV0IG5mID0gMS4gLy4gKG5lYXIgLS4gZmFyKSBpblxuICAgIFt8XG4gICAgICBmIC8uIGFzcGVjdDtcbiAgICAgIDAuO1xuICAgICAgMC47XG4gICAgICAwLjtcbiAgICAgIDAuO1xuICAgICAgZjtcbiAgICAgIDAuO1xuICAgICAgMC47XG4gICAgICAwLjtcbiAgICAgIDAuO1xuICAgICAgKGZhciArLiBuZWFyKSAqLiBuZjtcbiAgICAgIC0xLjtcbiAgICAgIDAuO1xuICAgICAgMC47XG4gICAgICAyLiAqLiBmYXIgKi4gbmVhciAqLiBuZjtcbiAgICAgIDAuO1xuICAgIHxdXG5cbiAgbGV0IGxvb2tfYXQgfmV5ZSB+Y2VudGVyIH51cCA9XG4gICAgbGV0IG9wZW4gVmVjMyBpblxuICAgIGxldCBmID0gbm9ybWFsaXplIChzdWIgY2VudGVyIGV5ZSkgaW5cbiAgICBsZXQgcyA9IG5vcm1hbGl6ZSAoY3Jvc3MgZiB1cCkgaW5cbiAgICBsZXQgdSA9IGNyb3NzIHMgZiBpblxuICAgIFt8XG4gICAgICBzLng7XG4gICAgICB1Lng7XG4gICAgICAtLmYueDtcbiAgICAgIDAuO1xuICAgICAgcy55O1xuICAgICAgdS55O1xuICAgICAgLS5mLnk7XG4gICAgICAwLjtcbiAgICAgIHMuejtcbiAgICAgIHUuejtcbiAgICAgIC0uZi56O1xuICAgICAgMC47XG4gICAgICAtLmRvdCBzIGV5ZTtcbiAgICAgIC0uZG90IHUgZXllO1xuICAgICAgZG90IGYgZXllO1xuICAgICAgMS47XG4gICAgfF1cblxuICBsZXQgcm90YXRlX3ggYW5nbGUgPVxuICAgIGxldCBjID0gY29zIGFuZ2xlIGFuZCBzID0gc2luIGFuZ2xlIGluXG4gICAgW3wgMS47IDAuOyAwLjsgMC47IDAuOyBjOyBzOyAwLjsgMC47IC0uczsgYzsgMC47IDAuOyAwLjsgMC47IDEuIHxdXG5cbiAgbGV0IHJvdGF0ZV95IGFuZ2xlID1cbiAgICBsZXQgYyA9IGNvcyBhbmdsZSBhbmQgcyA9IHNpbiBhbmdsZSBpblxuICAgIFt8IGM7IDAuOyAtLnM7IDAuOyAwLjsgMS47IDAuOyAwLjsgczsgMC47IGM7IDAuOyAwLjsgMC47IDAuOyAxLiB8XVxuXG4gIGxldCB0b19mbG9hdF9hcnJheSAobSA6IHQpIDogZmxvYXQgYXJyYXkgPSBBcnJheS5jb3B5IG1cbmVuZFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NoZWNrX2JvdW5kIiwiU3RkbGliX0FycmF5IiwiY3JlYXRlIiwieCIsInkiLCJ6IiwiYWRkIiwiYSIsImIiLCJzdWIiLCJzY2FsZSIsInMiLCJ2IiwiZG90IiwiY3Jvc3MiLCJsZW5ndGgiLCJ6ZXJvIiwibm9ybWFsaXplIiwibCIsIm5lZ2F0ZSIsImlkZW50aXR5IiwicGFyYW0iLCJtdWx0aXBseSIsInIiLCJjb2wiLCJyb3ciLCJrIiwicGVyc3BlY3RpdmUiLCJmb3Z5IiwiYXNwZWN0IiwibmVhciIsImZhciIsImYiLCJuZiIsImxvb2tfYXQiLCJleWUiLCJjZW50ZXIiLCJ1cCIsInUiLCJyb3RhdGVfeCIsImFuZ2xlIiwiYyIsInJvdGF0ZV95IiwidG9fZmxvYXRfYXJyYXkiLCJtIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLFlBQUFDLE9BQUFDLEdBQUFDLEdBQUFDLEdDVXFCLHNCQUFXO0FBQUEsWUFBQUMsSUFBQUMsR0FBQUMsR0FFQSxvREFBa0M7QUFBQSxZQUFBQyxJQUFBRixHQUFBQyxHQUNsQyxvREFBa0M7QUFBQSxZQUFBRSxNQUFBQyxHQUFBQyxHQUNsQywyQ0FBOEI7QUFBQSxZQUFBQyxJQUFBTixHQUFBQyxHQUNGO0FBQUEsWUFBQU0sTUFBQVAsR0FBQUM7QUFBQUEsSUFJdEI7QUFBQTtBQUFBO0FBQUE7QUFBQSxHQUdqQztBQUFBLFlBQUFPLE9BQUFILEdBRWlCLE9BQUwsVUFBSyxVQUFTO0FBQUEsT0FBQUksT0R4Qi9CO0FBQUEsWUFBQUMsVUFBQUw7QUFBQUEsUUFBQU0sSUMyQlk7QUFBQSxJQUNSLG1CQUFpQyx1QkFBWTtBQUFBO0FBQUEsWUFBQUMsT0FBQVAsR0FFckIscUNBQXdCO0FBQUE7QUFBQSxRRDlCcEQ7QUFBQSxZQUFBUSxTQUFBQyxPQ3dDSSw4QkFBb0U7QUFBQSxZQUFBQyxTQUFBZixHQUFBQztBQUFBQSxRQUFBZSxJQUc1RCxpQ0FBQUMsTUFDUjtBQUFBO0FBQUEsU0FBQUMsTUFDRTtBQUFBO0FBQUE7QUFBQSxVQUFBYixNQUVFLElBQUFjLElBQUE7QUFBQTtBQUFBO0FBQUEsWUFDRTtBQUFBLFlBQWtEO0FBQUEsWUFBakI7QUFBQSxRQUFBZCxJQUFyQjtBQUFBLFlBQXVDO0FBQUE7QUFBQSxnQkFFckQ7QUFBQTtBQUFBLGdCQUF5QjtBQUFBO0FBQUE7QUFBQSxzQkFHN0I7QUFBQSxRQUg2QjtBQUFBO0FBQUE7QUFBQSxPQUY0QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsR0FLeEQ7QUFBQSxZQUFBZSxZQUFBQyxNQUFBQyxRQUFBQyxNQUFBQztBQUFBQSxRQUFBQyxJQUdPLEtBQU0scUJBQUFDLEtBQ0w7QUFBQSxJQUVJO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxHQWdCWDtBQUFBLFlBQUFDLFFBQUFDLEtBQUFDLFFBQUFDO0FBQUFBO0FBQUFBLEtBQUFMLElBSU0sVUFBVTtBQUFBLEtBQUFyQixJQUNWLFVBQVU7QUFBQSxLQUFBMkIsSUFDVjtBQUFBLFNBZ0JOO0FBQUEsU0FERTtBQUFBLFNBREE7QUFBQSxJQVZHO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxHQWNMO0FBQUEsWUFBQUMsU0FBQUM7QUFBQUEsUUFBQUMsSUFHTSxpQkFBQTlCLElBQWtCO0FBQUEsSUFDYztBQUFBLEdBQTBCO0FBQUEsWUFBQStCLFNBQUFGO0FBQUFBLFFBQUFDLElBRzFELGlCQUFBOUIsSUFBa0I7QUFBQSxJQUNiO0FBQUEsR0FBcUQ7QUFBQSxZQUFBZ0MsZUFBQUMsR0FFekIsb0NBQVk7QUFBQSxHRDdHekQiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjozMTk3NSwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiIuZ2xvYmUub2Jqcy9qc29vL2RlZmF1bHQvZ2xvYmUuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9vY2FtbC1nbG9iZS9saWIvc3BoZXJlLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIENvcHlyaWdodCAoYykgMjAyNSBUaG9tYXMgR2F6YWduYWlyZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuKCoqIFBvaW50IGNsb3VkIGdlbmVyYXRpb24gZm9yIHRoZSBkb3QtY2xvdWQgZ2xvYmUuXG5cbiAgICBVc2VzIGdvbGRlbiBzcGlyYWwgZGlzdHJpYnV0aW9uIGZvciBldmVuIHNwYWNpbmcsIHdpdGggYnJpZ2h0bmVzcyBiYXNlZCBvblxuICAgIHBvbHlnb24tdHJhY2VkIGNvbnRpbmVudCBvdXRsaW5lcy4gUG9pbnRzIG5lYXIgY29hc3RsaW5lcyBnbG93IGJyaWdodGVzdCxcbiAgICBjcmVhdGluZyBhIHJlY29nbml6YWJsZSBFYXJ0aCBzaWxob3VldHRlLiAqKVxuXG50eXBlIHBvaW50ID0geyBwb3MgOiBNYXRoLlZlYzMudDsgYnJpZ2h0bmVzcyA6IGZsb2F0IH1cblxuKCogLS0tIFJheS1jYXN0aW5nIHBvaW50LWluLXBvbHlnb24gdGVzdCAtLS0gKilcblxubGV0IHBvaW50X2luX3BvbHlnb24gbGF0IGxvbiAodmVydGljZXMgOiAoZmxvYXQgKiBmbG9hdCkgYXJyYXkpID1cbiAgbGV0IG4gPSBBcnJheS5sZW5ndGggdmVydGljZXMgaW5cbiAgaWYgbiA8IDMgdGhlbiBmYWxzZVxuICBlbHNlXG4gICAgbGV0IGluc2lkZSA9IHJlZiBmYWxzZSBpblxuICAgIGxldCBqID0gcmVmIChuIC0gMSkgaW5cbiAgICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICAgIGxldCBsYXRfaSwgbG9uX2kgPSB2ZXJ0aWNlcy4oaSkgaW5cbiAgICAgIGxldCBsYXRfaiwgbG9uX2ogPSB2ZXJ0aWNlcy4oIWopIGluXG4gICAgICBpZiBsYXRfaSA+IGxhdCA8PiAobGF0X2ogPiBsYXQpIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IHggPVxuICAgICAgICAgIGxvbl9pICsuICgobGF0IC0uIGxhdF9pKSAqLiAobG9uX2ogLS4gbG9uX2kpIC8uIChsYXRfaiAtLiBsYXRfaSkpXG4gICAgICAgIGluXG4gICAgICAgIGlmIGxvbiA8IHggdGhlbiBpbnNpZGUgOj0gbm90ICFpbnNpZGVcbiAgICAgIGVuZDtcbiAgICAgIGogOj0gaVxuICAgIGRvbmU7XG4gICAgIWluc2lkZVxuXG4oKiAtLS0gU3F1YXJlZCBkaXN0YW5jZSBmcm9tIHBvaW50IHRvIGxpbmUgc2VnbWVudCAtLS0gKilcblxubGV0IHBvaW50X3RvX3NlZ19kaXN0X3NxIHB4IHB5IGF4IGF5IGJ4IGJ5ID1cbiAgbGV0IGR4ID0gYnggLS4gYXggYW5kIGR5ID0gYnkgLS4gYXkgaW5cbiAgbGV0IGxlbl9zcSA9IChkeCAqLiBkeCkgKy4gKGR5ICouIGR5KSBpblxuICBpZiBsZW5fc3EgPCAxZS0xMCB0aGVuXG4gICAgbGV0IGV4ID0gcHggLS4gYXggYW5kIGV5ID0gcHkgLS4gYXkgaW5cbiAgICAoZXggKi4gZXgpICsuIChleSAqLiBleSlcbiAgZWxzZVxuICAgIGxldCB0ID0gKCgocHggLS4gYXgpICouIGR4KSArLiAoKHB5IC0uIGF5KSAqLiBkeSkpIC8uIGxlbl9zcSBpblxuICAgIGxldCB0ID0gRmxvYXQubWF4IDAuIChGbG9hdC5taW4gMS4gdCkgaW5cbiAgICBsZXQgY3ggPSBheCArLiAodCAqLiBkeCkgYW5kIGN5ID0gYXkgKy4gKHQgKi4gZHkpIGluXG4gICAgbGV0IGV4ID0gcHggLS4gY3ggYW5kIGV5ID0gcHkgLS4gY3kgaW5cbiAgICAoZXggKi4gZXgpICsuIChleSAqLiBleSlcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG4oKiAgQ29udGluZW50IHBvbHlnb25zIOKAlCAobGF0aXR1ZGUsIGxvbmdpdHVkZSkgdmVydGV4IGFycmF5cyAgICAgICAgICAgKilcbigqICBUcmFjZWQgdG8gfjXCsCBhY2N1cmFjeTsgZW5vdWdoIGZvciAzMGstcG9pbnQgY2xvdWQgcmVjb2duaXRpb24uICAgKilcbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG5sZXQgYWZyaWNhID1cbiAgW3xcbiAgICAoMzUuLCAtNS4pO1xuICAgICgzNy4sIDEwLik7XG4gICAgKDMyLiwgMTMuKTtcbiAgICAoMzEuLCAyNS4pO1xuICAgICgzMC4sIDMzLik7XG4gICAgKDIyLiwgMzcuKTtcbiAgICAoMTIuLCA0NC4pO1xuICAgICgyLiwgNTEuKTtcbiAgICAoLTIuLCA0Mi4pO1xuICAgICgtNy4sIDQwLik7XG4gICAgKC0xMS4sIDQwLik7XG4gICAgKC0xNi4sIDQxLik7XG4gICAgKC0yNS4sIDM1Lik7XG4gICAgKC0yNy4sIDMzLik7XG4gICAgKC0zNS4sIDI2Lik7XG4gICAgKC0zNC4sIDE4Lik7XG4gICAgKC0yOS4sIDE3Lik7XG4gICAgKC0yMi4sIDE0Lik7XG4gICAgKC0xNy4sIDEyLik7XG4gICAgKC02LiwgMTIuKTtcbiAgICAoNC4sIDEwLik7XG4gICAgKDYuLCAzLik7XG4gICAgKDUuLCAtMy4pO1xuICAgICg1LiwgLTguKTtcbiAgICAoOC4sIC0xNC4pO1xuICAgICgxMi4sIC0xNy4pO1xuICAgICgxNS4sIC0xNy4pO1xuICAgICgyMS4sIC0xNy4pO1xuICAgICgyOC4sIC0xMy4pO1xuICAgICgzMy4sIC04Lik7XG4gIHxdXG5cbmxldCBldXJhc2lhID1cbiAgW3xcbiAgICAoKiBJYmVyaWEg4oaSIE5XIEV1cm9wZSAqKVxuICAgICgzNi4sIC0xMC4pO1xuICAgICgzOS4sIC05Lik7XG4gICAgKDQ0LiwgLTkuKTtcbiAgICAoNDQuLCAtMi4pO1xuICAgICg0OC4sIC01Lik7XG4gICAgKDUxLiwgMi4pO1xuICAgICg1NC4sIDguKTtcbiAgICAoNTcuLCAxMC4pO1xuICAgICgqIFNjYW5kaW5hdmlhICopXG4gICAgKDU4LiwgNi4pO1xuICAgICg2Mi4sIDUuKTtcbiAgICAoNjYuLCAxNC4pO1xuICAgICg3MS4sIDI3Lik7XG4gICAgKCogQXJjdGljIFJ1c3NpYSAqKVxuICAgICg2OS4sIDM0Lik7XG4gICAgKDY2LiwgNDQuKTtcbiAgICAoNjkuLCA1OC4pO1xuICAgICg3My4sIDgwLik7XG4gICAgKDc2LiwgOTcuKTtcbiAgICAoNzMuLCAxMTUuKTtcbiAgICAoNzIuLCAxMzUuKTtcbiAgICAoNzAuLCAxNTAuKTtcbiAgICAoNjYuLCAxNzAuKTtcbiAgICAoKiBSdXNzaWFuIEZhciBFYXN0ICopXG4gICAgKDYwLiwgMTY1Lik7XG4gICAgKDU2LiwgMTYyLik7XG4gICAgKDUzLiwgMTU5Lik7XG4gICAgKDUwLiwgMTQwLik7XG4gICAgKCogTkUgQXNpYSAqKVxuICAgICg0NS4sIDE0Mi4pO1xuICAgICg0My4sIDEzNS4pO1xuICAgICgzOS4sIDEyNS4pO1xuICAgICgzNS4sIDEyNi4pO1xuICAgICgzMS4sIDEyMi4pO1xuICAgICgqIFNFIENoaW5hICopXG4gICAgKDI1LiwgMTE5Lik7XG4gICAgKDIyLiwgMTEzLik7XG4gICAgKDIyLiwgMTA4Lik7XG4gICAgKCogU0UgQXNpYSBtYWlubGFuZCAqKVxuICAgICgxNi4sIDEwOC4pO1xuICAgICgxMC4sIDEwNy4pO1xuICAgICg4LiwgMTA1Lik7XG4gICAgKDEuLCAxMDQuKTtcbiAgICAoKiBNYWxheSBQZW5pbnN1bGEg4oaSIE15YW5tYXIgKilcbiAgICAoNy4sIDEwMC4pO1xuICAgICgxNC4sIDk5Lik7XG4gICAgKDE2LiwgOTcuKTtcbiAgICAoMjEuLCA5Mi4pO1xuICAgICgqIEluZGlhICopXG4gICAgKDIyLiwgODguKTtcbiAgICAoMTguLCA4NC4pO1xuICAgICgxMy4sIDgwLik7XG4gICAgKDguLCA3Ny4pO1xuICAgICgxMC4sIDc2Lik7XG4gICAgKDE1LiwgNzQuKTtcbiAgICAoMjEuLCA3My4pO1xuICAgICgyNC4sIDY4Lik7XG4gICAgKCogUGFraXN0YW4g4oaSIElyYW4gKilcbiAgICAoMjUuLCA2Mi4pO1xuICAgICgyNi4sIDU3Lik7XG4gICAgKCogUGVyc2lhbiBHdWxmIOKGkiBJcmFxICopXG4gICAgKDMwLiwgNDguKTtcbiAgICAoMzMuLCA0NC4pO1xuICAgICgzNy4sIDM2Lik7XG4gICAgKCogVHVya2V5IOKGkiBNZWRpdGVycmFuZWFuICopXG4gICAgKDM3LiwgMzAuKTtcbiAgICAoMzYuLCAyOC4pO1xuICAgICgzOC4sIDI0Lik7XG4gICAgKDQwLiwgMjAuKTtcbiAgICAoNDIuLCAxOS4pO1xuICAgICgqIEFkcmlhdGljIOKGkiBJdGFseSAqKVxuICAgICg0Ni4sIDE0Lik7XG4gICAgKDQ0LiwgMTMuKTtcbiAgICAoNDEuLCAxNy4pO1xuICAgICgzOC4sIDE2Lik7XG4gICAgKDM3LiwgMTUuKTtcbiAgICAoKiBXIE1lZGl0ZXJyYW5lYW4gKilcbiAgICAoMzkuLCA5Lik7XG4gICAgKDQzLiwgNS4pO1xuICAgICg0MC4sIDAuKTtcbiAgICAoMzcuLCAtMi4pO1xuICAgICgzNi4sIC02Lik7XG4gIHxdXG5cbmxldCBhcmFiaWEgPVxuICBbfFxuICAgICgzMC4sIDQ4Lik7XG4gICAgKDI5LiwgNDguKTtcbiAgICAoMjYuLCA1MC4pO1xuICAgICgyNC4sIDU0Lik7XG4gICAgKDIyLiwgNTkuKTtcbiAgICAoMTcuLCA1NS4pO1xuICAgICgxNC4sIDQ5Lik7XG4gICAgKDEzLiwgNDQuKTtcbiAgICAoMTYuLCA0My4pO1xuICAgICgyMC4sIDQwLik7XG4gICAgKDI0LiwgMzguKTtcbiAgICAoMjguLCAzNS4pO1xuICAgICgzMC4sIDM1Lik7XG4gICAgKDMzLiwgMzYuKTtcbiAgICAoMzMuLCA0NC4pO1xuICB8XVxuXG5sZXQgbm9ydGhfYW1lcmljYSA9XG4gIFt8XG4gICAgKCogQWxhc2thIOKGkiBBcmN0aWMgKilcbiAgICAoNjUuLCAtMTY4Lik7XG4gICAgKDcxLiwgLTE1Ny4pO1xuICAgICg3Mi4sIC0xMjguKTtcbiAgICAoNzQuLCAtOTUuKTtcbiAgICAoNzMuLCAtODAuKTtcbiAgICAoNjkuLCAtNjguKTtcbiAgICAoKiBFYXN0IGNvYXN0ICopXG4gICAgKDYwLiwgLTY0Lik7XG4gICAgKDUzLiwgLTU2Lik7XG4gICAgKDQ3LiwgLTYwLik7XG4gICAgKDQ0LiwgLTY3Lik7XG4gICAgKDQwLiwgLTc0Lik7XG4gICAgKDM1LiwgLTc2Lik7XG4gICAgKDMwLiwgLTgxLik7XG4gICAgKDI1LiwgLTgwLik7XG4gICAgKCogR3VsZiDihpIgTWV4aWNvICopXG4gICAgKDMwLiwgLTg2Lik7XG4gICAgKDI5LiwgLTk1Lik7XG4gICAgKDI2LiwgLTk3Lik7XG4gICAgKDIwLiwgLTk3Lik7XG4gICAgKCogQ2VudHJhbCBBbWVyaWNhICopXG4gICAgKDE3LiwgLTkyLik7XG4gICAgKDE1LiwgLTg3Lik7XG4gICAgKDEwLiwgLTg0Lik7XG4gICAgKDguLCAtNzguKTtcbiAgICAoKiBXZXN0IGNvYXN0ICopXG4gICAgKDE2LiwgLTk1Lik7XG4gICAgKDE5LiwgLTEwNS4pO1xuICAgICgyMy4sIC0xMTAuKTtcbiAgICAoMzAuLCAtMTE1Lik7XG4gICAgKDMyLiwgLTExNy4pO1xuICAgICgzOC4sIC0xMjMuKTtcbiAgICAoNDYuLCAtMTI0Lik7XG4gICAgKDQ5LiwgLTEyNS4pO1xuICAgICg1NC4sIC0xMzEuKTtcbiAgICAoNTguLCAtMTM3Lik7XG4gICAgKDYwLiwgLTE0Ny4pO1xuICAgICg2My4sIC0xNjUuKTtcbiAgfF1cblxubGV0IHNvdXRoX2FtZXJpY2EgPVxuICBbfFxuICAgICgxMi4sIC03Mi4pO1xuICAgICgxMC4sIC02Ny4pO1xuICAgICg3LiwgLTYwLik7XG4gICAgKDUuLCAtNTIuKTtcbiAgICAoMC4sIC01MC4pO1xuICAgICgtNS4sIC0zNS4pO1xuICAgICgtMTIuLCAtMzcuKTtcbiAgICAoLTIzLiwgLTQyLik7XG4gICAgKC0zMy4sIC01Mi4pO1xuICAgICgtMzUuLCAtNTcuKTtcbiAgICAoLTQyLiwgLTY0Lik7XG4gICAgKC01Mi4sIC02OC4pO1xuICAgICgtNTUuLCAtNjkuKTtcbiAgICAoLTU1LiwgLTY2Lik7XG4gICAgKC01MC4sIC03My4pO1xuICAgICgtNDUuLCAtNzQuKTtcbiAgICAoLTM0LiwgLTcyLik7XG4gICAgKC0yMy4sIC03MC4pO1xuICAgICgtMTYuLCAtNzUuKTtcbiAgICAoLTUuLCAtODEuKTtcbiAgICAoMC4sIC04MC4pO1xuICAgICg3LiwgLTc4Lik7XG4gICAgKDExLiwgLTc1Lik7XG4gIHxdXG5cbmxldCBhdXN0cmFsaWEgPVxuICBbfFxuICAgICgtMTIuLCAxMzEuKTtcbiAgICAoLTExLiwgMTM2Lik7XG4gICAgKC0xNC4sIDE0Mi4pO1xuICAgICgtMTkuLCAxNDYuKTtcbiAgICAoLTI0LiwgMTUzLik7XG4gICAgKC0yOC4sIDE1My4pO1xuICAgICgtMzQuLCAxNTEuKTtcbiAgICAoLTM4LiwgMTQ1Lik7XG4gICAgKC0zNi4sIDEzNy4pO1xuICAgICgtMzQuLCAxMzYuKTtcbiAgICAoLTMyLiwgMTMzLik7XG4gICAgKC0zMi4sIDExNS4pO1xuICAgICgtMjIuLCAxMTQuKTtcbiAgICAoLTE0LiwgMTI3Lik7XG4gIHxdXG5cbmxldCBncmVlbmxhbmQgPVxuICBbfFxuICAgICg2MC4sIC00My4pO1xuICAgICg2My4sIC00MC4pO1xuICAgICg2Ni4sIC0zNi4pO1xuICAgICg3Mi4sIC0yMi4pO1xuICAgICg3OC4sIC0xOC4pO1xuICAgICg4NC4sIC0zMC4pO1xuICAgICg4My4sIC01OC4pO1xuICAgICg3OC4sIC03Mi4pO1xuICAgICg3Ni4sIC02OC4pO1xuICAgICg3MC4sIC01NS4pO1xuICAgICg2NC4sIC01MC4pO1xuICB8XVxuXG5sZXQgdWsgPVxuICBbfFxuICAgICg1MC4sIC01Lik7XG4gICAgKDUxLiwgMS4pO1xuICAgICg1My4sIDAuKTtcbiAgICAoNTUuLCAtMi4pO1xuICAgICg1OC4sIC0zLik7XG4gICAgKDU5LiwgLTUuKTtcbiAgICAoNTcuLCAtNy4pO1xuICAgICg1NS4sIC02Lik7XG4gICAgKDU0LiwgLTMuKTtcbiAgICAoNTIuLCAtNS4pO1xuICB8XVxuXG5sZXQgaXJlbGFuZCA9XG4gIFt8XG4gICAgKDUyLiwgLTYuKTtcbiAgICAoNTMuLCAtNi4pO1xuICAgICg1NS4sIC02Lik7XG4gICAgKDU1LiwgLTguKTtcbiAgICAoNTQuLCAtMTAuKTtcbiAgICAoNTIuLCAtMTAuKTtcbiAgICAoNTEuLCAtOS4pO1xuICB8XVxuXG5sZXQgaWNlbGFuZCA9IFt8ICg2NC4sIC0yMi4pOyAoNjQuLCAtMTQuKTsgKDY2LiwgLTE0Lik7ICg2Ni4sIC0yNC4pIHxdXG5cbmxldCBqYXBhbiA9XG4gIFt8XG4gICAgKDMxLiwgMTMxLik7XG4gICAgKDMzLiwgMTMwLik7XG4gICAgKDM1LiwgMTMzLik7XG4gICAgKDM2LiwgMTM3Lik7XG4gICAgKDM4LiwgMTM5Lik7XG4gICAgKDQwLiwgMTQwLik7XG4gICAgKDQyLiwgMTQxLik7XG4gICAgKDQ0LiwgMTQ1Lik7XG4gICAgKDQ1LiwgMTQyLik7XG4gICAgKDQzLiwgMTQxLik7XG4gICAgKDM4LiwgMTQxLik7XG4gICAgKDM1LiwgMTQwLik7XG4gICAgKDM0LiwgMTM1Lik7XG4gICAgKDMzLiwgMTMxLik7XG4gIHxdXG5cbmxldCBtYWRhZ2FzY2FyID1cbiAgW3xcbiAgICAoLTEyLiwgNDkuKTtcbiAgICAoLTE2LiwgNTAuKTtcbiAgICAoLTIyLiwgNDguKTtcbiAgICAoLTI2LiwgNDcuKTtcbiAgICAoLTI0LiwgNDQuKTtcbiAgICAoLTE2LiwgNDQuKTtcbiAgICAoLTEzLiwgNDguKTtcbiAgfF1cblxubGV0IHNyaV9sYW5rYSA9IFt8ICgxMC4sIDgwLik7ICg4LiwgODIuKTsgKDYuLCA4MS4pOyAoNy4sIDgwLik7ICg5LiwgODAuKSB8XVxuXG5sZXQgc3VtYXRyYSA9XG4gIFt8XG4gICAgKDUuLCA5NS4pO1xuICAgICgyLiwgOTkuKTtcbiAgICAoLTIuLCAxMDQuKTtcbiAgICAoLTUuLCAxMDUuKTtcbiAgICAoLTYuLCAxMDQuKTtcbiAgICAoLTMuLCAxMDAuKTtcbiAgICAoMS4sIDk3Lik7XG4gIHxdXG5cbmxldCBib3JuZW8gPVxuICBbfFxuICAgICg3LiwgMTE3Lik7XG4gICAgKDUuLCAxMTkuKTtcbiAgICAoMi4sIDExOC4pO1xuICAgICgtMS4sIDExNy4pO1xuICAgICgtNC4sIDExNS4pO1xuICAgICgtMy4sIDExMS4pO1xuICAgICgwLiwgMTA5Lik7XG4gICAgKDMuLCAxMTAuKTtcbiAgfF1cblxubGV0IGphdmEgPVxuICBbfFxuICAgICgtNi4sIDEwNi4pOyAoLTcuLCAxMTAuKTsgKC04LiwgMTE0Lik7ICgtOC4sIDExNS4pOyAoLTguLCAxMTAuKTsgKC03LiwgMTA2Lik7XG4gIHxdXG5cbmxldCBwYXB1YSA9XG4gIFt8XG4gICAgKC0xLiwgMTMzLik7XG4gICAgKC0yLiwgMTM4Lik7XG4gICAgKC00LiwgMTQxLik7XG4gICAgKC04LiwgMTQxLik7XG4gICAgKC05LiwgMTM4Lik7XG4gICAgKC04LiwgMTM0Lik7XG4gICAgKC01LiwgMTMzLik7XG4gIHxdXG5cbmxldCBwaGlsaXBwaW5lcyA9XG4gIFt8XG4gICAgKDE4LiwgMTIxLik7XG4gICAgKDE1LiwgMTIyLik7XG4gICAgKDEyLiwgMTI0Lik7XG4gICAgKDguLCAxMjYuKTtcbiAgICAoNy4sIDEyNC4pO1xuICAgICgxMC4sIDEyMC4pO1xuICAgICgxNC4sIDEyMC4pO1xuICB8XVxuXG5sZXQgbmV3X3plYWxhbmRfbiA9XG4gIFt8XG4gICAgKC0zNS4sIDE3My4pO1xuICAgICgtMzcuLCAxNzYuKTtcbiAgICAoLTM5LiwgMTc4Lik7XG4gICAgKC00Mi4sIDE3NS4pO1xuICAgICgtMzkuLCAxNzQuKTtcbiAgICAoLTM3LiwgMTc0Lik7XG4gIHxdXG5cbmxldCBuZXdfemVhbGFuZF9zID1cbiAgW3xcbiAgICAoLTQyLiwgMTcyLik7XG4gICAgKC00NC4sIDE3MS4pO1xuICAgICgtNDYuLCAxNjguKTtcbiAgICAoLTQ2LiwgMTY2Lik7XG4gICAgKC00NC4sIDE2OC4pO1xuICAgICgtNDIuLCAxNzAuKTtcbiAgfF1cblxubGV0IGFsbF9wb2x5Z29ucyA9XG4gIFt8XG4gICAgYWZyaWNhO1xuICAgIGV1cmFzaWE7XG4gICAgYXJhYmlhO1xuICAgIG5vcnRoX2FtZXJpY2E7XG4gICAgc291dGhfYW1lcmljYTtcbiAgICBhdXN0cmFsaWE7XG4gICAgZ3JlZW5sYW5kO1xuICAgIHVrO1xuICAgIGlyZWxhbmQ7XG4gICAgaWNlbGFuZDtcbiAgICBqYXBhbjtcbiAgICBtYWRhZ2FzY2FyO1xuICAgIHNyaV9sYW5rYTtcbiAgICBzdW1hdHJhO1xuICAgIGJvcm5lbztcbiAgICBqYXZhO1xuICAgIHBhcHVhO1xuICAgIHBoaWxpcHBpbmVzO1xuICAgIG5ld196ZWFsYW5kX247XG4gICAgbmV3X3plYWxhbmRfcztcbiAgfF1cblxuKCogLS0tIExhbmQgZGV0ZWN0aW9uIGFuZCBjb2FzdCBwcm94aW1pdHkgLS0tICopXG5cbmxldCBpc19sYW5kIGxhdCBsb24gPVxuICBsYXQgPCAtNjUuICgqIEFudGFyY3RpY2EgKilcbiAgfHwgQXJyYXkuZXhpc3RzIChmdW4gcG9seSAtPiBwb2ludF9pbl9wb2x5Z29uIGxhdCBsb24gcG9seSkgYWxsX3BvbHlnb25zXG5cbmxldCBtaW5fY29hc3RfZGlzdF9zcSBsYXQgbG9uID1cbiAgbGV0IGJlc3QgPSByZWYgaW5maW5pdHkgaW5cbiAgQXJyYXkuaXRlclxuICAgIChmdW4gcG9seWdvbiAtPlxuICAgICAgbGV0IG4gPSBBcnJheS5sZW5ndGggcG9seWdvbiBpblxuICAgICAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgICAgIGxldCBsYXRfaSwgbG9uX2kgPSBwb2x5Z29uLihpKSBpblxuICAgICAgICBsZXQgbGF0X2osIGxvbl9qID0gcG9seWdvbi4oKGkgKyAxKSBtb2QgbikgaW5cbiAgICAgICAgbGV0IGQgPSBwb2ludF90b19zZWdfZGlzdF9zcSBsYXQgbG9uIGxhdF9pIGxvbl9pIGxhdF9qIGxvbl9qIGluXG4gICAgICAgIGlmIGQgPCAhYmVzdCB0aGVuIGJlc3QgOj0gZFxuICAgICAgZG9uZSlcbiAgICBhbGxfcG9seWdvbnM7XG4gICFiZXN0XG5cbigqIC0tLSBQb2ludCBjbG91ZCBnZW5lcmF0aW9uIC0tLSAqKVxuXG5sZXQgZ2VuZXJhdGVfY2xvdWQgfm51bV9wb2ludHMgPVxuICBsZXQgcGkgPSBGbG9hdC5waSBpblxuICBsZXQgZ29sZGVuX3JhdGlvID0gKDEuICsuIHNxcnQgNS4pIC8uIDIuIGluXG4gIEFycmF5LmluaXQgbnVtX3BvaW50cyAoZnVuIGkgLT5cbiAgICAgIGxldCBmaSA9IEZsb2F0Lm9mX2ludCBpIGluXG4gICAgICBsZXQgbiA9IEZsb2F0Lm9mX2ludCBudW1fcG9pbnRzIGluXG4gICAgICBsZXQgdGhldGEgPSBhY29zICgxLiAtLiAoMi4gKi4gKGZpICsuIDAuNSkgLy4gbikpIGluXG4gICAgICBsZXQgcGhpID0gMi4gKi4gcGkgKi4gZmkgLy4gZ29sZGVuX3JhdGlvIGluXG4gICAgICBsZXQgeCA9IHNpbiB0aGV0YSAqLiBjb3MgcGhpIGluXG4gICAgICBsZXQgeSA9IGNvcyB0aGV0YSBpblxuICAgICAgbGV0IHogPSBzaW4gdGhldGEgKi4gc2luIHBoaSBpblxuICAgICAgbGV0IGxhdCA9IDkwLiAtLiAodGhldGEgKi4gMTgwLiAvLiBwaSkgaW5cbiAgICAgIGxldCBsb25fcmF3ID0gcGhpICouIDE4MC4gLy4gcGkgaW5cbiAgICAgIGxldCBsb24gPSBGbG9hdC5yZW0gbG9uX3JhdyAzNjAuIGluXG4gICAgICBsZXQgbG9uID0gaWYgbG9uID4gMTgwLiB0aGVuIGxvbiAtLiAzNjAuIGVsc2UgbG9uIGluXG4gICAgICBsZXQgb25fbGFuZCA9IGlzX2xhbmQgbGF0IGxvbiBpblxuICAgICAgbGV0IGNvYXN0X2QgPSBzcXJ0IChtaW5fY29hc3RfZGlzdF9zcSBsYXQgbG9uKSBpblxuICAgICAgbGV0IGNvYXN0X2dsb3cgPSBGbG9hdC5tYXggMC4gKDEuIC0uIChjb2FzdF9kIC8uIDguKSkgaW5cbiAgICAgIGxldCBicmlnaHRuZXNzID1cbiAgICAgICAgaWYgb25fbGFuZCB0aGVuIDAuNTUgKy4gKDAuNDUgKi4gY29hc3RfZ2xvdylcbiAgICAgICAgZWxzZSAwLjEwICsuICgwLjI1ICouIGNvYXN0X2dsb3cpXG4gICAgICBpblxuICAgICAgeyBwb3MgPSBNYXRoLlZlYzMuY3JlYXRlIHggeSB6OyBicmlnaHRuZXNzIH0pXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2hlY2tfYm91bmQiLCJjYW1sX29ial9kdXAiLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYl9GbG9hdCIsIkdsb2JlX01hdGgiLCJTdGRsaWJfQXJyYXkiLCJTdGRsaWIiLCJhZnJpY2EiLCJldXJhc2lhIiwiYXJhYmlhIiwibm9ydGhfYW1lcmljYSIsInNvdXRoX2FtZXJpY2EiLCJhdXN0cmFsaWEiLCJncmVlbmxhbmQiLCJ1ayIsImlyZWxhbmQiLCJqYXBhbiIsIm1hZGFnYXNjYXIiLCJzcmlfbGFua2EiLCJzdW1hdHJhIiwiYm9ybmVvIiwiamF2YSIsInBhcHVhIiwicGhpbGlwcGluZXMiLCJuZXdfemVhbGFuZF9uIiwibmV3X3plYWxhbmRfcyIsImFsbF9wb2x5Z29ucyIsImlzX2xhbmQiLCJsYXQiLCJsb24iLCJ2ZXJ0aWNlcyIsIm4iLCJpbnNpZGUiLCJqIiwiaSIsIm1hdGNoIiwibG9uX2kiLCJsYXRfaSIsImxvbl9qIiwibGF0X2oiLCJ4IiwibWluX2NvYXN0X2Rpc3Rfc3EiLCJiZXN0IiwicG9seWdvbiIsImR4IiwiZHkiLCJsZW5fc3EiLCJleCIsImV5IiwiZCIsInQiLCJjeCIsImN5IiwiZ2VuZXJhdGVfY2xvdWQiLCJudW1fcG9pbnRzIiwicGkiLCJmaSIsInRoZXRhIiwicGhpIiwieSIsInoiLCJsb25fcmF3Iiwib25fbGFuZCIsImNvYXN0X2QiLCJjb2FzdF9nbG93IiwiYnJpZ2h0bmVzcyJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLElBQUFDLGFBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDO0FBQUFBLE1BQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDO0FBQUFBLE1BQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDO0FBQUFBLE1BQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDO0FBQUFBLE1BQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUM7QUFBQUEsTUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDO0FBQUFBLE1BQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQztBQUFBQSxNQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUM7QUFBQUEsTUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQztBQUFBQSxNQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDO0FBQUFBLE1BQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQztBQUFBQSxNQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDO0FBQUFBLE1BQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQztBQUFBQSxNQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDO0FBQUFBLE1BQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQztBQUFBQSxNQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQztBQUFBQSxNQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDO0FBQUFBLE1BQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUM7QUFBQUEsTUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUM7QUFBQUEsTUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUM7QUFBQUEsTUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxRQUFBQyxLQUFBQztBQUFBQSxRQUFBLElDb2NFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHdCQUFBQztBQUFBQSxvQkFBQUMsSUFwYkE7QUFBQSxnQkFDQSxVQUFjO0FBQUEsd0JBSVosOEJBRkE7QUFBQSxnQkFFQTtBQUFBLHFCQUFBQyxXQUFBO0FBQUE7QUFBQSxxQkFBQUMsSUFBQSxHQUFBRCxTQUFBLEdBQUFFLElBQUE7QUFBQTtBQUFBO0FBQUEsbUJBQUFDLFFBQ3FCO0FBQUEsbUJBQUFDLFFBQVk7QUFBQSxtQkFBQUMsUUFBQTtBQUFBLG1CQUFBRixVQUNaO0FBQUEsbUJBQUFHLFFBQWE7QUFBQSxtQkFBQUMsUUFBQTtBQUFBLGtCQUNoQztBQUFBO0FBQUEsb0JBQUFDO0FBQUFBLHNCQUVJO0FBQUEsb0JBQUFSLFdBRUY7QUFBQTtBQUFBLHVCQUFBQSxXQUpGO0FBQUEsMEJBTUE7QUFBQSxrQ0FBQUEsV0FBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxnQkFFRjtBQUFBLGVBcWF3RDtBQUFBLDRCQUFjO0FBQUE7QUFBQSxZQUFBUyxrQkFBQWIsS0FBQUM7QUFBQUEsUUFBQWEsT0FHeEU7QUFBQSxJQUNBO0FBQUE7QUFBQSxlQUFBQztBQUFBQSxXQUFBWixJQUVJLHdCQUNBO0FBQUE7QUFBQSxZQUFBRyxJQUFBO0FBQUE7QUFBQTtBQUFBLFVBQUFDLFFBQ3FCO0FBQUEsVUFBQUMsUUFBVztBQUFBLFVBQUFDLFFBQUE7QUFBQSxjQUM5QjtBQUFBLFVBQUFGLFVBQW1CO0FBQUEsVUFBQUcsUUFBdUI7QUFBQSxVQUFBQyxRQUFBO0FBQUEsVUFBQUssS0F6YXZDO0FBQUEsVUFBQUMsS0FBa0I7QUFBQSxVQUFBQyxTQUNkO0FBQUEsU0FDYjtBQUFBLGNBQUFDLEtBQ1csYUFBQUMsS0FBa0IsYUFBQUMsSUFDSDtBQUFBO0FBQUE7QUFBQSxXQUFBQyxJQUVoQjtBQUFBLGVBQ2E7QUFBQSxXQUFBQSxNQUFiO0FBQUEsV0FBQUMsS0FDQztBQUFBLFdBQUFDLEtBQXlCO0FBQUEsV0FBQUwsT0FDekI7QUFBQSxXQUFBQyxPQUFrQjtBQUFBLFdBQUFDLElBQ0g7QUFBQSxTQWlhcEIsZ0JBQWtCO0FBQUEsaUJBQWxCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxPQUpGO0FBQUEsTUFLSTtBQUFBO0FBQUEsSUFDTTtBQUFBLEdBQ1Q7QUFBQSxZQUFBSSxlQUFBQztBQUFBQSxRQUFBQyxLQUtMO0FBQUEsSUFFQTtBQUFBO0FBQUE7QUFBQSxzQkFBQXJCO0FBQUFBO0FBQUFBLGVBQUFzQixLQUNhO0FBQUEsZUFBQXpCLElBQ0Q7QUFBQSxlQUFBMEIsUUFDSTtBQUFBLGVBQUFDLE1BQ0Y7QUFBQSxlQUFBbEIsSUFDRixrQkFBYTtBQUFBLGVBQUFtQixJQUNiO0FBQUEsZUFBQUMsSUFDQSxrQkFBYTtBQUFBLGVBQUFoQyxNQUNYO0FBQUEsZUFBQWlDLFVBQ0k7QUFBQSxlQUFBaEMsTUFDSjtBQUFBLGVBQUFBLFFBQ1Y7QUFBQSxlQUFBaUMsVUFDYztBQUFBLGVBQUFDLFVBQ0EsVUFBSztBQUFBLGVBQUFDLGFBQ0Y7QUFBQSxlQUFBQztBQUFBQSxpQkFDakI7QUFBQSxjQUlRLDREQUFzQjtBQUFBLGFBQWMsRUFBQztBQUFBO0FBQUEsR0Q3ZW5EIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MzI0NjksImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLmdsb2JlLm9ianMvanNvby9kZWZhdWx0L2dsb2JlLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvd29ya3NwYWNlX3Jvb3Qvb2NhbWwtZ2xvYmUvbGliL2dlb21ldHJ5Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIENvcHlyaWdodCAoYykgMjAyNSBUaG9tYXMgR2F6YWduYWlyZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuKCoqIEdsb2JlIGdlb21ldHJ5IGNvbXB1dGF0aW9ucyAocHVyZSBtYXRoLCBubyBXZWJHTCkuICopXG5cbmxldCBwaSA9IEZsb2F0LnBpXG5cbigqKiBTYXRlbGxpdGUgZ3JvdW5kIGZvb3RwcmludCBoYWxmLWFuZ2xlIChyYWRpYW5zKS5cblxuICAgIEdpdmVuIGEgc2F0ZWxsaXRlIGF0IFthbHRpdHVkZV0ga20gYW5kIGEgbWluaW11bSBlbGV2YXRpb24gYW5nbGVcbiAgICBbbWluX2VsZXZhdGlvbl0gcmFkaWFucywgcmV0dXJucyB0aGUgYW5ndWxhciByYWRpdXMgb2YgdGhlIGdyb3VuZCBmb290cHJpbnRcbiAgICBjaXJjbGUuXG5cbiAgICBGcm9tIGdlb21ldHJ5OiByaG8gPSBhc2luKFIgLyAoUiArIGgpKSwgaGFsZl9hbmdsZSA9IHBpLzIgLSBlbGV2YXRpb24gLSByaG8uXG4qKVxubGV0IGZvb3RwcmludF9hbmdsZSB+YWx0aXR1ZGUgfm1pbl9lbGV2YXRpb24gPVxuICBsZXQgciA9IENvb3JkaW5hdGUuZWFydGhfcmFkaXVzIGluXG4gIGxldCByaG8gPSBhc2luIChyIC8uIChyICsuIGFsdGl0dWRlKSkgaW5cbiAgKHBpIC8uIDIuKSAtLiBtaW5fZWxldmF0aW9uIC0uIHJob1xuXG4oKiogR2VuZXJhdGUgbGF0L2xvbiBncmlkIGxpbmUgdmVydGljZXMgb24gdGhlIHVuaXQgc3BoZXJlLlxuXG4gICAgUmV0dXJucyBwYWlycyBvZiAoeCx5LHopIGVuZHBvaW50cyBpbiBHTCBjb29yZGluYXRlcyAoWT11cCkuIFtzcGFjaW5nXSBpc1xuICAgIGRlZ3JlZXMgYmV0d2VlbiBsaW5lcy4gKilcbmxldCBncmlkX2xpbmVzID8oc3BhY2luZyA9IDMwLikgPyhzZWdtZW50cyA9IDcyKSAoKSA9XG4gIGxldCBkZWdfdG9fcmFkIGQgPSBkICouIHBpIC8uIDE4MC4gaW5cbiAgbGV0IHZlcnRpY2VzID0gcmVmIFtdIGluXG4gIGxldCByID0gMS4wMDIgaW5cbiAgbGV0IGxhdCA9IHJlZiAoLTkwLiArLiBzcGFjaW5nKSBpblxuICB3aGlsZSAhbGF0IDwgOTAuIGRvXG4gICAgbGV0IGxhdF9yYWQgPSBkZWdfdG9fcmFkICFsYXQgaW5cbiAgICBsZXQgY29zX2xhdCA9IGNvcyBsYXRfcmFkIGFuZCBzaW5fbGF0ID0gc2luIGxhdF9yYWQgaW5cbiAgICBmb3IgaSA9IDAgdG8gc2VnbWVudHMgLSAxIGRvXG4gICAgICBsZXQgbG9uMCA9IEZsb2F0Lm9mX2ludCBpICouIDIuICouIHBpIC8uIEZsb2F0Lm9mX2ludCBzZWdtZW50cyBpblxuICAgICAgbGV0IGxvbjEgPSBGbG9hdC5vZl9pbnQgKGkgKyAxKSAqLiAyLiAqLiBwaSAvLiBGbG9hdC5vZl9pbnQgc2VnbWVudHMgaW5cbiAgICAgIHZlcnRpY2VzIDo9XG4gICAgICAgIE1hdGguVmVjMy5jcmVhdGVcbiAgICAgICAgICAociAqLiBjb3NfbGF0ICouIGNvcyBsb24wKVxuICAgICAgICAgIChyICouIHNpbl9sYXQpXG4gICAgICAgICAgKHIgKi4gY29zX2xhdCAqLiBzaW4gbG9uMClcbiAgICAgICAgOjogTWF0aC5WZWMzLmNyZWF0ZVxuICAgICAgICAgICAgIChyICouIGNvc19sYXQgKi4gY29zIGxvbjEpXG4gICAgICAgICAgICAgKHIgKi4gc2luX2xhdClcbiAgICAgICAgICAgICAociAqLiBjb3NfbGF0ICouIHNpbiBsb24xKVxuICAgICAgICA6OiAhdmVydGljZXNcbiAgICBkb25lO1xuICAgIGxhdCA6PSAhbGF0ICsuIHNwYWNpbmdcbiAgZG9uZTtcbiAgbGV0IGxvbiA9IHJlZiAoLTE4MC4pIGluXG4gIHdoaWxlICFsb24gPCAxODAuIGRvXG4gICAgbGV0IGxvbl9yYWQgPSBkZWdfdG9fcmFkICFsb24gaW5cbiAgICBmb3IgaSA9IDAgdG8gc2VnbWVudHMgLSAxIGRvXG4gICAgICBsZXQgbGF0MCA9XG4gICAgICAgICgtLnBpIC8uIDIuKSArLiAoRmxvYXQub2ZfaW50IGkgKi4gcGkgLy4gRmxvYXQub2ZfaW50IHNlZ21lbnRzKVxuICAgICAgaW5cbiAgICAgIGxldCBsYXQxID1cbiAgICAgICAgKC0ucGkgLy4gMi4pICsuIChGbG9hdC5vZl9pbnQgKGkgKyAxKSAqLiBwaSAvLiBGbG9hdC5vZl9pbnQgc2VnbWVudHMpXG4gICAgICBpblxuICAgICAgdmVydGljZXMgOj1cbiAgICAgICAgTWF0aC5WZWMzLmNyZWF0ZVxuICAgICAgICAgIChyICouIGNvcyBsYXQwICouIGNvcyBsb25fcmFkKVxuICAgICAgICAgIChyICouIHNpbiBsYXQwKVxuICAgICAgICAgIChyICouIGNvcyBsYXQwICouIHNpbiBsb25fcmFkKVxuICAgICAgICA6OiBNYXRoLlZlYzMuY3JlYXRlXG4gICAgICAgICAgICAgKHIgKi4gY29zIGxhdDEgKi4gY29zIGxvbl9yYWQpXG4gICAgICAgICAgICAgKHIgKi4gc2luIGxhdDEpXG4gICAgICAgICAgICAgKHIgKi4gY29zIGxhdDEgKi4gc2luIGxvbl9yYWQpXG4gICAgICAgIDo6ICF2ZXJ0aWNlc1xuICAgIGRvbmU7XG4gICAgbG9uIDo9ICFsb24gKy4gc3BhY2luZ1xuICBkb25lO1xuICBMaXN0LnJldiAhdmVydGljZXNcblxuKCoqIEdlbmVyYXRlIGEgY2lyY2xlIG9mIHBvaW50cyBvbiB0aGUgdW5pdCBzcGhlcmUgYXJvdW5kIFtjZW50ZXJdLlxuXG4gICAgW2NlbnRlcl0gaXMgYSBHTC1jb29yZGluYXRlIHVuaXQgdmVjdG9yLiBbaGFsZl9hbmdsZV0gaXMgdGhlIGFuZ3VsYXIgcmFkaXVzXG4gICAgaW4gcmFkaWFucy4gUmV0dXJucyBbc2VnbWVudHNdIHBhaXJzIG9mIGxpbmUgZW5kcG9pbnRzLiAqKVxubGV0IGNpcmNsZV9vbl9zcGhlcmUgY2VudGVyIH5oYWxmX2FuZ2xlIH5zZWdtZW50cyA9XG4gIGxldCBvcGVuIE1hdGguVmVjMyBpblxuICBsZXQgbiA9IG5vcm1hbGl6ZSBjZW50ZXIgaW5cbiAgbGV0IGFyYml0cmFyeSA9XG4gICAgaWYgYWJzX2Zsb2F0IG4ueSA8IDAuOSB0aGVuIGNyZWF0ZSAwLiAxLiAwLiBlbHNlIGNyZWF0ZSAxLiAwLiAwLlxuICBpblxuICBsZXQgdSA9IG5vcm1hbGl6ZSAoY3Jvc3MgbiBhcmJpdHJhcnkpIGluXG4gIGxldCB2ID0gY3Jvc3MgbiB1IGluXG4gIGxldCBjb3NfYSA9IGNvcyBoYWxmX2FuZ2xlIGFuZCBzaW5fYSA9IHNpbiBoYWxmX2FuZ2xlIGluXG4gIGxldCByID0gMS4wMDMgaW5cbiAgbGV0IHZlcnRzID0gcmVmIFtdIGluXG4gIGZvciBpID0gMCB0byBzZWdtZW50cyAtIDEgZG9cbiAgICBsZXQgdDAgPSBGbG9hdC5vZl9pbnQgaSAqLiAyLiAqLiBwaSAvLiBGbG9hdC5vZl9pbnQgc2VnbWVudHMgaW5cbiAgICBsZXQgdDEgPSBGbG9hdC5vZl9pbnQgKGkgKyAxKSAqLiAyLiAqLiBwaSAvLiBGbG9hdC5vZl9pbnQgc2VnbWVudHMgaW5cbiAgICBsZXQgcG9pbnQgdCA9XG4gICAgICBsZXQgY3QgPSBjb3MgdCBhbmQgc3QgPSBzaW4gdCBpblxuICAgICAgY3JlYXRlXG4gICAgICAgIChyICouICgoY29zX2EgKi4gbi54KSArLiAoc2luX2EgKi4gY3QgKi4gdS54KSArLiAoc2luX2EgKi4gc3QgKi4gdi54KSkpXG4gICAgICAgIChyICouICgoY29zX2EgKi4gbi55KSArLiAoc2luX2EgKi4gY3QgKi4gdS55KSArLiAoc2luX2EgKi4gc3QgKi4gdi55KSkpXG4gICAgICAgIChyICouICgoY29zX2EgKi4gbi56KSArLiAoc2luX2EgKi4gY3QgKi4gdS56KSArLiAoc2luX2EgKi4gc3QgKi4gdi56KSkpXG4gICAgaW5cbiAgICB2ZXJ0cyA6PSBwb2ludCB0MCA6OiBwb2ludCB0MSA6OiAhdmVydHNcbiAgZG9uZTtcbiAgTGlzdC5yZXYgIXZlcnRzXG5cbmxldCBmaWxsZWRfY2lyY2xlX29uX3NwaGVyZSBjZW50ZXIgfmhhbGZfYW5nbGUgfnNlZ21lbnRzID1cbiAgbGV0IG9wZW4gTWF0aC5WZWMzIGluXG4gIGxldCBuID0gbm9ybWFsaXplIGNlbnRlciBpblxuICBsZXQgYXJiaXRyYXJ5ID1cbiAgICBpZiBhYnNfZmxvYXQgbi55IDwgMC45IHRoZW4gY3JlYXRlIDAuIDEuIDAuIGVsc2UgY3JlYXRlIDEuIDAuIDAuXG4gIGluXG4gIGxldCB1ID0gbm9ybWFsaXplIChjcm9zcyBuIGFyYml0cmFyeSkgaW5cbiAgbGV0IHYgPSBjcm9zcyBuIHUgaW5cbiAgbGV0IGNvc19hID0gY29zIGhhbGZfYW5nbGUgYW5kIHNpbl9hID0gc2luIGhhbGZfYW5nbGUgaW5cbiAgbGV0IHIgPSAxLjAwMyBpblxuICBsZXQgY2VudGVyX3B0ID0gc2NhbGUgciBuIGluXG4gIGxldCBwb2ludCB0ID1cbiAgICBsZXQgY3QgPSBjb3MgdCBhbmQgc3QgPSBzaW4gdCBpblxuICAgIGNyZWF0ZVxuICAgICAgKHIgKi4gKChjb3NfYSAqLiBuLngpICsuIChzaW5fYSAqLiBjdCAqLiB1LngpICsuIChzaW5fYSAqLiBzdCAqLiB2LngpKSlcbiAgICAgIChyICouICgoY29zX2EgKi4gbi55KSArLiAoc2luX2EgKi4gY3QgKi4gdS55KSArLiAoc2luX2EgKi4gc3QgKi4gdi55KSkpXG4gICAgICAociAqLiAoKGNvc19hICouIG4ueikgKy4gKHNpbl9hICouIGN0ICouIHUueikgKy4gKHNpbl9hICouIHN0ICouIHYueikpKVxuICBpblxuICBsZXQgdHJpcyA9IHJlZiBbXSBpblxuICBmb3IgaSA9IDAgdG8gc2VnbWVudHMgLSAxIGRvXG4gICAgbGV0IHQwID0gRmxvYXQub2ZfaW50IGkgKi4gMi4gKi4gcGkgLy4gRmxvYXQub2ZfaW50IHNlZ21lbnRzIGluXG4gICAgbGV0IHQxID0gRmxvYXQub2ZfaW50IChpICsgMSkgKi4gMi4gKi4gcGkgLy4gRmxvYXQub2ZfaW50IHNlZ21lbnRzIGluXG4gICAgdHJpcyA6PSBjZW50ZXJfcHQgOjogcG9pbnQgdDAgOjogcG9pbnQgdDEgOjogIXRyaXNcbiAgZG9uZTtcbiAgTGlzdC5yZXYgIXRyaXNcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiZ2xvYmFsX2RhdGEiLCJHbG9iZV9NYXRoIiwiU3RkbGliX0xpc3QiLCJDb29yZGluYXRlIiwiU3RkbGliX0Zsb2F0IiwicGkiLCJmb290cHJpbnRfYW5nbGUiLCJhbHRpdHVkZSIsIm1pbl9lbGV2YXRpb24iLCJyIiwicmhvIiwiZ3JpZF9saW5lcyIsIm9wdCIsInBhcmFtIiwic3BhY2luZyIsInNlZ21lbnRzIiwiZGVnX3RvX3JhZCIsImQiLCJsYXQiLCJ2ZXJ0aWNlcyIsImxhdF9yYWQiLCJjb3NfbGF0Iiwic2luX2xhdCIsImkiLCJsb24wIiwibG9uMSIsImxvbiIsImxvbl9yYWQiLCJsYXQwIiwibGF0MSIsImNpcmNsZV9vbl9zcGhlcmUiLCJjZW50ZXIiLCJoYWxmX2FuZ2xlIiwibiIsImFyYml0cmFyeSIsInUiLCJ2IiwiY29zX2EiLCJzaW5fYSIsInZlcnRzIiwidDAiLCJ0MSIsInBvaW50IiwidCIsImN0Iiwic3QiLCJmaWxsZWRfY2lyY2xlX29uX3NwaGVyZSIsImNlbnRlcl9wdCIsInRyaXMiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGFBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxLQUFBO0FBQUEsWUFBQUMsZ0JBQUFDLFVBQUFDO0FBQUFBLFFBQUFDLElDa0JFLGVBQUFDLE1BQ1U7QUFBQSxJQUN3QjtBQUFBO0FBQUEsWUFBQUMsV0FBQSxHQUFBQyxLQUFBQztBQUFBQSxRQUFBQyxVQU1yQixnQkFBQUMsV0FBQTtBQUFBLGFBQUFDLFdBQUFDLEdBQ3FC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fX0seyJvZmZzZXQiOnsibGluZSI6MzI2NjMsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLmdsb2JlLm9ianMvanNvby9kZWZhdWx0L2dsb2JlLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvd29ya3NwYWNlX3Jvb3Qvb2NhbWwtZ2xvYmUvbGliL2NvbG9yLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIENvcHlyaWdodCAoYykgMjAyNSBUaG9tYXMgR2F6YWduYWlyZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuKCoqIENvbG9yIHV0aWxpdGllcyBmb3IgZ2xvYmUgcmVuZGVyaW5nLiAqKVxuXG50eXBlIHQgPSBmbG9hdCAqIGZsb2F0ICogZmxvYXRcblxubGV0IHJnYiByIGcgYiA9IChyLCBnLCBiKVxuXG4oKiogR2VuZXJhdGUgYSBjb2xvciBmcm9tIGEgaHVlIHZhbHVlIGluIFswLCAxXS4gTWFwcyB0aHJvdWdoIGEgY3lhbi1vcmFuZ2UtcGlua1xuICAgIHBhbGV0dGUgc3VpdGFibGUgZm9yIGRhcmsgYmFja2dyb3VuZHMuICopXG5sZXQgb2ZfaHVlIGggPSAoMC4zICsuICgwLjcgKi4gaCksIDAuOCAtLiAoMC4zICouIGgpLCAxLjAgLS4gKDAuNSAqLiBoKSlcblxuKCoqIEdlbmVyYXRlIFtuXSBkaXN0aW5jdCBjb2xvcnMgZXZlbmx5IHNwYWNlZCBpbiBodWUuICopXG5sZXQgcGFsZXR0ZSBuID1cbiAgTGlzdC5pbml0IG4gKGZ1biBpIC0+IG9mX2h1ZSAoRmxvYXQub2ZfaW50IGkgLy4gRmxvYXQub2ZfaW50IChtYXggMSBuKSkpXG5cbigqKiBNYXAgYSBwcm9iYWJpbGl0eSB2YWx1ZSB0byBncmVlbiDihpIgeWVsbG93IOKGkiByZWQuICopXG5sZXQgb2ZfcHJvYmFiaWxpdHkgcCA9XG4gIGlmIHAgPCAxZS03IHRoZW4gKDAuMSwgMC45LCAwLjIpXG4gIGVsc2UgaWYgcCA8IDFlLTUgdGhlblxuICAgIGxldCB0ID0gKGxvZzEwIHAgKy4gNy4pIC8uIDIuIGluXG4gICAgKDAuMSArLiAoMC45ICouIHQpLCAwLjkgLS4gKDAuNCAqLiB0KSwgMC4yIC0uICgwLjEgKi4gdCkpXG4gIGVsc2UgKDEuMCwgMC4yLCAwLjEpXG5cbmxldCBnaG9zdCA9ICgwLjE1LCAwLjIsIDAuMjUpXG5sZXQgd2hpdGUgPSAoMS4sIDEuLCAxLilcbmxldCBjeWFuID0gKDAuMywgMC44NSwgMS4wKVxubGV0IGdyaWRfZGVmYXVsdCA9ICgwLjE1LCAwLjM1LCAwLjUpXG5sZXQgcHAgcHBmIChyLCBnLCBiKSA9IEZtdC5wZiBwcGYgXCIoJS4yZiwgJS4yZiwgJS4yZilcIiByIGcgYlxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwzIiwiZiIsImEwIiwiYTEiLCJhMiIsImdsb2JhbF9kYXRhIiwiRm10IiwiU3RkbGliIiwiU3RkbGliX0xpc3QiLCJyZ2IiLCJyIiwiZyIsImIiLCJvZl9odWUiLCJoIiwicGFsZXR0ZSIsIm4iLCJpIiwib2ZfcHJvYmFiaWxpdHkiLCJwIiwidCIsImNzdCIsInBwIiwicHBmIiwicGFyYW0iXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUMsSUFBQUMsSUFBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLE1BQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLFlBQUFDLElBQUFDLEdBQUFDLEdBQUFDLEdDU2dCLG9CQUFTO0FBQUEsWUFBQUMsT0FBQUMsR0FJUSx1REFBdUM7QUFBQSxZQUFBQyxRQUFBQztBQUFBQSxJQUl0RTtBQUFBO0FBQUE7QUFBQSxzQkFBQUMsR0FBNkQsT0FBVSxXQUFWLDRCQUFVLEdBQUM7QUFBQTtBQUFBLFdEakIxRTtBQUFBLFlBQUFDLGVBQUFDO0FBQUFBLElDcUJFLGFBQWlCO0FBQUEsSUFDWixpQkFHQTtBQUFBLFFBQUFDLElBRk07QUFBQSxJQUNTO0FBQUEsR0FDQTtBQUFBO0FBQUEsSUFBQUMsTUR6QnRCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxHQUFBQyxLQUFBQztBQUFBQSxRQUFBWixJQytCTyxVQUFBRCxJQUFBLFVBQUFELElBQUE7QUFBQSxJQUFnQixxREFBcUM7QUFBQTtBQUFBLEdEL0I1RCIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjMyNzMzLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6Impzb29fcnVudGltZS5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjc3RfNl8zXzIiXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBLHlCQUFBQyxZQUFBIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MzI3NDYsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvb19ydW50aW1lLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9qc19vZl9vY2FtbC1jb21waWxlci9ydW50aW1lL2pzb29fcnVudGltZS5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm1vZHVsZSBKcyA9IHN0cnVjdFxuICB0eXBlIHRcblxuICB0eXBlICdhIGpzX2FycmF5ID0gdFxuXG4gIHR5cGUgKCdhLCAnYikgbWV0aF9jYWxsYmFjayA9IHRcblxuICBleHRlcm5hbCBzdHJpbmcgOiBzdHJpbmcgLT4gdCA9IFwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgYnl0ZXN0cmluZyA6IHN0cmluZyAtPiB0ID0gXCJjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXCJcblxuICBleHRlcm5hbCB0b19ieXRlc3RyaW5nIDogdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcIlxuXG4gIGV4dGVybmFsIGJvb2wgOiBib29sIC0+IHQgPSBcImNhbWxfanNfZnJvbV9ib29sXCJcblxuICBleHRlcm5hbCB0b19ib29sIDogdCAtPiBib29sID0gXCJjYW1sX2pzX3RvX2Jvb2xcIlxuXG4gIGV4dGVybmFsIGFycmF5IDogJ2EgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2FycmF5XCJcblxuICBleHRlcm5hbCB0b19hcnJheSA6IHQgLT4gJ2EgYXJyYXkgPSBcImNhbWxfanNfdG9fYXJyYXlcIlxuXG4gIGV4dGVybmFsIG51bWJlcl9vZl9mbG9hdCA6IGZsb2F0IC0+IHQgPSBcImNhbWxfanNfZnJvbV9mbG9hdFwiXG5cbiAgZXh0ZXJuYWwgZmxvYXRfb2ZfbnVtYmVyIDogdCAtPiBmbG9hdCA9IFwiY2FtbF9qc190b19mbG9hdFwiXG5cbiAgZXh0ZXJuYWwgbnVtYmVyX29mX2ludDMyIDogaW50MzIgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2ludDMyXCJcblxuICBleHRlcm5hbCBpbnQzMl9vZl9udW1iZXIgOiB0IC0+IGludDMyID0gXCJjYW1sX2pzX3RvX2ludDMyXCJcblxuICBleHRlcm5hbCBudW1iZXJfb2ZfbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IHQgPSBcImNhbWxfanNfZnJvbV9uYXRpdmVpbnRcIlxuXG4gIGV4dGVybmFsIG5hdGl2ZWludF9vZl9udW1iZXIgOiB0IC0+IG5hdGl2ZWludCA9IFwiY2FtbF9qc190b19uYXRpdmVpbnRcIlxuXG4gIGV4dGVybmFsIHR5cGVvZiA6IHQgLT4gdCA9IFwiY2FtbF9qc190eXBlb2ZcIlxuXG4gIGV4dGVybmFsIGluc3RhbmNlb2YgOiB0IC0+IHQgLT4gYm9vbCA9IFwiY2FtbF9qc19pbnN0YW5jZW9mXCJcblxuICBleHRlcm5hbCBkZWJ1Z2dlciA6IHVuaXQgLT4gdW5pdCA9IFwiZGVidWdnZXJcIlxuXG4gIGV4dGVybmFsIGdldCA6IHQgLT4gdCAtPiB0ID0gXCJjYW1sX2pzX2dldFwiXG5cbiAgZXh0ZXJuYWwgc2V0IDogdCAtPiB0IC0+IHQgLT4gdW5pdCA9IFwiY2FtbF9qc19zZXRcIlxuXG4gIGV4dGVybmFsIGRlbGV0ZSA6IHQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2pzX2RlbGV0ZVwiXG5cbiAgZXh0ZXJuYWwgY2FsbCA6IHQgLT4gdCAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfY2FsbFwiXG5cbiAgZXh0ZXJuYWwgZnVuX2NhbGwgOiB0IC0+IHQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19mdW5fY2FsbFwiXG5cbiAgZXh0ZXJuYWwgbWV0aF9jYWxsIDogdCAtPiBzdHJpbmcgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX21ldGhfY2FsbFwiXG5cbiAgZXh0ZXJuYWwgbmV3X29iaiA6IHQgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX25ld1wiXG5cbiAgZXh0ZXJuYWwgbmV3X29ial9hcnIgOiB0IC0+IHQganNfYXJyYXkgLT4gdCA9IFwiY2FtbF9vanNfbmV3X2FyclwiXG5cbiAgZXh0ZXJuYWwgb2JqIDogKHN0cmluZyAqIHQpIGFycmF5IC0+IHQgPSBcImNhbWxfanNfb2JqZWN0XCJcblxuICBleHRlcm5hbCBlcXVhbHMgOiB0IC0+IHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiB0IC0+IHQgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcblxuICBleHRlcm5hbCBwdXJlX2V4cHIgOiAodW5pdCAtPiAnYSkgLT4gJ2EgPSBcImNhbWxfanNfcHVyZV9leHByXCJcblxuICBleHRlcm5hbCBldmFsX3N0cmluZyA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc19ldmFsX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwganNfZXhwciA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc19leHByXCJcblxuICBleHRlcm5hbCBwdXJlX2pzX2V4cHIgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfcHVyZV9qc19leHByXCJcblxuICBleHRlcm5hbCBjYWxsYmFjayA6ICgnYiAtPiAnYSkgLT4gKCdiLCAnYSkgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfdW5zYWZlXCJcblxuICBleHRlcm5hbCBjYWxsYmFja193aXRoX2FyZ3VtZW50cyA6XG4gICAgKHQganNfYXJyYXkgLT4gJ2IpIC0+ICgnYywgdCBqc19hcnJheSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzXCJcblxuICBleHRlcm5hbCBjYWxsYmFja193aXRoX2FyaXR5IDogaW50IC0+ICgnYSAtPiAnYikgLT4gKCdjLCAnYSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0XCJcblxuICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrIDogKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZVwiXG5cbiAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFja193aXRoX2FyaXR5IDogaW50IC0+ICgnYiAtPiAnYSkgLT4gKCdiLCAnYSkgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3RcIlxuXG4gIGV4dGVybmFsIG1ldGhfY2FsbGJhY2tfd2l0aF9hcmd1bWVudHMgOlxuICAgICgnYiAtPiB0IGpzX2FycmF5IC0+ICdhKSAtPiAoJ2IsIHQganNfYXJyYXkgLT4gJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzXCJcblxuICBleHRlcm5hbCB3cmFwX2NhbGxiYWNrIDogKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja1wiXG5cbiAgZXh0ZXJuYWwgd3JhcF9tZXRoX2NhbGxiYWNrIDogKCdhIC0+ICdiKSAtPiAoJ2EsICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrXCJcblxuICBleHRlcm5hbCBydW50aW1lX3ZhbHVlIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzb29fcnVudGltZV92YWx1ZVwiXG4gICgqKiBbcnVudGltZV92YWx1ZSBcIkZPT1wiXSByZXR1cm5zIHRoZSBKYXZhU2NyaXB0IHZhbHVlIEZPTyBwcm92aWRlZCBieSB0aGUgSmF2YVNjcmlwdCBydW50aW1lICh3aXRoICcvL1Byb3ZpZGVzOiBGT08nKS4gVGhlIHN0cmluZyBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nIGxpdGVyYWwuICopXG5cbiAgZXh0ZXJuYWwgY3VzdG9tX2lkZW50aWZpZXIgOiBPYmoudCAtPiBzdHJpbmcgPSBcImNhbWxfY3VzdG9tX2lkZW50aWZpZXJcIlxuZW5kXG5cbm1vZHVsZSBTeXMgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBjYWxsYmFjayA9ICdhXG5cbiAgZXh0ZXJuYWwgY3JlYXRlX2ZpbGUgOiBuYW1lOnN0cmluZyAtPiBjb250ZW50OnN0cmluZyAtPiB1bml0ID0gXCJjYW1sX2NyZWF0ZV9maWxlXCJcblxuICBleHRlcm5hbCByZWFkX2ZpbGUgOiBuYW1lOnN0cmluZyAtPiBzdHJpbmcgPSBcImNhbWxfcmVhZF9maWxlX2NvbnRlbnRcIlxuXG4gIGV4dGVybmFsIHNldF9jaGFubmVsX291dHB1dCcgOiBvdXRfY2hhbm5lbCAtPiAoanNfc3RyaW5nOkpzLnQgLT4gdW5pdCkgY2FsbGJhY2sgLT4gdW5pdFxuICAgID0gXCJjYW1sX21sX3NldF9jaGFubmVsX291dHB1dFwiXG5cbiAgZXh0ZXJuYWwgc2V0X2NoYW5uZWxfaW5wdXQnIDogaW5fY2hhbm5lbCAtPiAodW5pdCAtPiBzdHJpbmcpIGNhbGxiYWNrIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGxcIlxuXG4gIGV4dGVybmFsIG1vdW50X3BvaW50IDogdW5pdCAtPiBzdHJpbmcgbGlzdCA9IFwiY2FtbF9saXN0X21vdW50X3BvaW50XCJcblxuICBleHRlcm5hbCBtb3VudF9hdXRvbG9hZCA6IHN0cmluZyAtPiAoc3RyaW5nIC0+IHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uKSBjYWxsYmFjayAtPiB1bml0XG4gICAgPSBcImNhbWxfbW91bnRfYXV0b2xvYWRcIlxuXG4gIGV4dGVybmFsIHVubW91bnQgOiBzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF91bm1vdW50XCJcblxuICB0eXBlIHJlZGlyZWN0aW9uXG5cbiAgZXh0ZXJuYWwgcmVkaXJlY3RfY2hhbm5lbCA6IG91dF9jaGFubmVsIC0+IGludG86b3V0X2NoYW5uZWwgLT4gcmVkaXJlY3Rpb25cbiAgICA9IFwiY2FtbF9tbF9jaGFubmVsX3JlZGlyZWN0XCJcblxuICBleHRlcm5hbCByZXN0b3JlX2NoYW5uZWwgOiBvdXRfY2hhbm5lbCAtPiByZWRpcmVjdGlvbiAtPiB1bml0XG4gICAgPSBcImNhbWxfbWxfY2hhbm5lbF9yZXN0b3JlXCJcblxuICBtb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gICAgZXh0ZXJuYWwgdXNlX2pzX3N0cmluZyA6IHVuaXQgLT4gYm9vbCA9IFwiY2FtbF9qc29vX2ZsYWdzX3VzZV9qc19zdHJpbmdcIlxuXG4gICAgdHlwZSBlZmZlY3RzX2JhY2tlbmQgPVxuICAgICAgWyBgRGlzYWJsZWRcbiAgICAgIHwgYENwc1xuICAgICAgfCBgRG91YmxlX3RyYW5zbGF0aW9uXG4gICAgICBdXG5cbiAgICBleHRlcm5hbCBlZmZlY3RzXyA6IHVuaXQgLT4gc3RyaW5nID0gXCJjYW1sX2pzb29fZmxhZ3NfZWZmZWN0c1wiXG5cbiAgICBsZXQgZWZmZWN0cyAoKSA9XG4gICAgICBtYXRjaCBlZmZlY3RzXyAoKSB3aXRoXG4gICAgICB8IFwiZGlzYWJsZWRcIiAtPiBgRGlzYWJsZWRcbiAgICAgIHwgXCJjcHNcIiAtPiBgQ3BzXG4gICAgICB8IFwiZG91YmxlLXRyYW5zbGF0aW9uXCIgLT4gYERvdWJsZV90cmFuc2xhdGlvblxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICBlbmRcblxuICBsZXQgdmVyc2lvbiA9IFJ1bnRpbWVfdmVyc2lvbi5zXG5cbiAgbGV0IGdpdF92ZXJzaW9uID0gUnVudGltZV92ZXJzaW9uLmdpdF92ZXJzaW9uXG5lbmRcblxubW9kdWxlIEVycm9yIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCByYWlzZV8gOiB0IC0+ICdhXG5cbiAgdmFsIGF0dGFjaF9qc19iYWNrdHJhY2UgOiBleG4gLT4gZm9yY2U6Ym9vbCAtPiBleG5cbiAgKCoqIEF0dGFjaCBhIEphdmFTY3JpcHQgZXJyb3IgdG8gYW4gT0NhbWwgZXhjZXB0aW9uLiAgaWYgW2ZvcmNlID0gZmFsc2VdIGFuZCBhXG4gICAgSmF2YVNjcmlwdCBlcnJvciBpcyBhbHJlYWR5IGF0dGFjaGVkLCBpdCB3aWxsIGRvIG5vdGhpbmcuIFRoaXMgZnVuY3Rpb24gaXMgdXNlZnVsIHRvXG4gICAgc3RvcmUgYW5kIHJldHJpZXZlIGluZm9ybWF0aW9uIGFib3V0IEphdmFTY3JpcHQgc3RhY2sgdHJhY2VzLlxuXG4gICAgQXR0YWNoaW5nIEphdmFTY3JpcHQgZXJyb3JzIHdpbGwgaGFwcGVuIGF1dG9tYXRpY2FsbHkgd2hlbiBjb21waWxpbmcgd2l0aFxuICAgIFstLWVuYWJsZSB3aXRoLWpzLWVycm9yXS4gKilcblxuICB2YWwgb2ZfZXhuIDogZXhuIC0+IHQgb3B0aW9uXG4gICgqKiBFeHRyYWN0IGEgSmF2YVNjcmlwdCBlcnJvciBhdHRhY2hlZCB0byBhbiBPQ2FtbCBleGNlcHRpb24sIGlmIGFueS4gIFRoaXMgaXMgdXNlZnVsIHRvXG4gICAgICBpbnNwZWN0IGFuIGV2ZW50dWFsIHN0YWNrIHRyYWNlLCBlc3BlY2lhbGx5IHdoZW4gc291cmNlbWFwIGlzIGVuYWJsZWQuICopXG5cbiAgZXhjZXB0aW9uIEV4biBvZiB0XG4gICgqKiBUaGUgW0Vycm9yXSBleGNlcHRpb24gd3JhcCBqYXZhc2NyaXB0IGV4Y2VwdGlvbnMgd2hlbiBjYXVnaHQgYnkgT0NhbWwgY29kZS5cbiAgICAgIEluIGNhc2UgdGhlIGphdmFzY3JpcHQgZXhjZXB0aW9uIGlzIG5vdCBhbiBpbnN0YW5jZSBvZiBqYXZhc2NyaXB0IFtFcnJvcl0sXG4gICAgICBpdCB3aWxsIGJlIHNlcmlhbGl6ZWQgYW5kIHdyYXBwZWQgaW50byBhIFtGYWlsdXJlXSBleGNlcHRpb24uXG4gICopXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0XG5cbiAgZXhjZXB0aW9uIEV4biBvZiB0XG5cbiAgbGV0IF8gPSBDYWxsYmFjay5yZWdpc3Rlcl9leGNlcHRpb24gXCJqc0Vycm9yXCIgKEV4biAoT2JqLm1hZ2ljIFt8fF0pKVxuXG4gIGV4dGVybmFsIHJhaXNlXyA6IHQgLT4gJ2EgPSBcImNhbWxfdGhyb3dfanNfZXhjZXB0aW9uXCJcblxuICBleHRlcm5hbCBvZl9leG4gOiBleG4gLT4gdCBvcHRpb24gPSBcImNhbWxfanNfZXJyb3Jfb3B0aW9uX29mX2V4Y2VwdGlvblwiXG5cbiAgZXh0ZXJuYWwgYXR0YWNoX2pzX2JhY2t0cmFjZSA6IGV4biAtPiBmb3JjZTpib29sIC0+IGV4biA9IFwiY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2VcIlxuZW5kXG5cbltAQEBvY2FtbC53YXJuaW5nIFwiLTMyLTYwXCJdXG5cbm1vZHVsZSBGb3JfY29tcGF0aWJpbGl0eV9vbmx5ID0gc3RydWN0XG4gICgqIEFkZCBwcmltaXRpdmVzIGZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMuIEV4aXN0aW5nIHVzZXJzIG1pZ2h0XG4gICAgIGRlcGVuZCBvbiBpdCAoZS5nLiBnZW5fanNfYXBpKSwgd2UgZG9uJ3Qgd2FudCB0aGUgb2NhbWwgY29tcGlsZXJcbiAgICAgdG8gY29tcGxhaW4gYWJvdXQgdGhlc2UgbWlzc2luZyBwcmltaXRpdmVzLiAqKVxuXG4gIGV4dGVybmFsIGNhbWxfanNfZnJvbV9zdHJpbmcgOiBzdHJpbmcgLT4gSnMudCA9IFwiY2FtbF9qc19mcm9tX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgY2FtbF9qc190b19ieXRlX3N0cmluZyA6IEpzLnQgLT4gc3RyaW5nID0gXCJjYW1sX2pzX3RvX2J5dGVfc3RyaW5nXCJcblxuICBleHRlcm5hbCBjYW1sX2pzX3RvX3N0cmluZyA6IEpzLnQgLT4gc3RyaW5nID0gXCJjYW1sX2pzX3RvX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgY2FtbF9saXN0X29mX2pzX2FycmF5IDogJ2EgSnMuanNfYXJyYXkgLT4gJ2EgbGlzdCA9IFwiY2FtbF9saXN0X29mX2pzX2FycmF5XCJcblxuICBleHRlcm5hbCBjYW1sX2xpc3RfdG9fanNfYXJyYXkgOiAnYSBsaXN0IC0+ICdhIEpzLmpzX2FycmF5ID0gXCJjYW1sX2xpc3RfdG9fanNfYXJyYXlcIlxuXG4gIGV4dGVybmFsIHZhcmlhYmxlIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX3ZhclwiXG5cbiAgZXh0ZXJuYWwgY2FtbF9zdHJpbmdfb2ZfYXJyYXkgOiAnYSBhcnJheSAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2FycmF5XCJcbmVuZFxuXG5tb2R1bGUgVHlwZWRfYXJyYXkgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0eXBlZEFycmF5ID0gSnMudFxuXG4gIHR5cGUgYXJyYXlCdWZmZXIgPSBKcy50XG5cbiAgdHlwZSB1aW50OEFycmF5ID0gSnMudFxuXG4gIGV4dGVybmFsIGtpbmQgOiAoJ2EsICdiKSB0eXBlZEFycmF5IC0+ICgnYSwgJ2IpIEJpZ2FycmF5LmtpbmRcbiAgICA9IFwiY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5XCJcblxuICBleHRlcm5hbCBmcm9tX2dlbmFycmF5IDpcbiAgICAoJ2EsICdiLCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuR2VuYXJyYXkudCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5XG4gICAgPSBcImNhbWxfYmFfdG9fdHlwZWRfYXJyYXlcIlxuXG4gIGV4dGVybmFsIHRvX2dlbmFycmF5IDpcbiAgICAoJ2EsICdiKSB0eXBlZEFycmF5IC0+ICgnYSwgJ2IsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5HZW5hcnJheS50XG4gICAgPSBcImNhbWxfYmFfZnJvbV90eXBlZF9hcnJheVwiXG5cbiAgbW9kdWxlIEJpZ3N0cmluZyA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IChjaGFyLCBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkFycmF5MS50XG5cbiAgICBleHRlcm5hbCB0b19hcnJheUJ1ZmZlciA6IHQgLT4gYXJyYXlCdWZmZXIgPSBcImJpZ3N0cmluZ190b19hcnJheV9idWZmZXJcIlxuXG4gICAgZXh0ZXJuYWwgdG9fdWludDhBcnJheSA6IHQgLT4gdWludDhBcnJheSA9IFwiYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5XCJcblxuICAgIGV4dGVybmFsIG9mX2FycmF5QnVmZmVyIDogYXJyYXlCdWZmZXIgLT4gdCA9IFwiYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlclwiXG5cbiAgICBleHRlcm5hbCBvZl91aW50OEFycmF5IDogdWludDhBcnJheSAtPiB0ID0gXCJiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXlcIlxuICBlbmRcblxuICBleHRlcm5hbCBzdHJpbmdfb2ZfdWludDhBcnJheSA6IHVpbnQ4QXJyYXkgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl91aW50OF9hcnJheVwiXG5cbiAgZXh0ZXJuYWwgYnl0ZXNfb2ZfdWludDhBcnJheSA6IHVpbnQ4QXJyYXkgLT4gYnl0ZXMgPSBcImNhbWxfYnl0ZXNfb2ZfdWludDhfYXJyYXlcIlxuXG4gIGV4dGVybmFsIHVpbnQ4QXJyYXlfb2ZfYnl0ZXMgOiBieXRlcyAtPiB1aW50OEFycmF5ID0gXCJjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXCJcbmVuZFxuXG5tb2R1bGUgSW50NjQgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgY3JlYXRlX2ludDY0X2xvX21pX2hpIDogaW50IC0+IGludCAtPiBpbnQgLT4gSW50NjQudFxuICAgID0gXCJjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaVwiXG5lbmRcblxubW9kdWxlIEVmZmVjdCA6IHNpZ1xuICBleHRlcm5hbCBhc3N1bWVfbm9fcGVyZm9ybSA6ICh1bml0IC0+ICdhKSAtPiAnYSA9IFwiY2FtbF9hc3N1bWVfbm9fcGVyZm9ybVwiXG4gICgqKiBQYXNzaW5nIGEgZnVuY3Rpb24gW2ZdIGFzIGFyZ3VtZW50IG9mIGBhc3N1bWVfbm9fcGVyZm9ybWAgZ3VhcmFudGVlcyB0aGF0LFxuICAgICAgd2hlbiBjb21waWxpbmcgd2l0aCBgLS1lZmZlY3RzPWRvdWJsZS10cmFuc2xhdGlvbmAsIHRoZSBkaXJlY3Qtc3R5bGVcbiAgICAgIHZlcnNpb24gb2YgW2ZdIGlzIGNhbGxlZCwgd2hpY2ggaXMgZmFzdGVyIHRoYW4gdGhlIENQUyB2ZXJzaW9uLiBBcyBhXG4gICAgICBjb25zZXF1ZW5jZSwgcGVyZm9ybWluZyBhbiBlZmZlY3QgaW4gYSB0cmFuc2l0aXZlIGNhbGxlZSBvZiBbZl0gd2lsbFxuICAgICAgcmFpc2UgYEVmZmVjdC5VbmhhbmRsZWRgLCByZWdhcmRsZXNzIG9mIGFueSBlZmZlY3QgaGFuZGxlcnMgaW5zdGFsbGVkXG4gICAgICBiZWZvcmUgdGhlIGNhbGwgdG8gYGFzc3VtZV9ub19wZXJmb3JtYCwgdW5sZXNzIGEgbmV3IGVmZmVjdCBoYW5kbGVyIHdhc1xuICAgICAgaW5zdGFsbGVkIGluIHRoZSBtZWFudGltZS5cblxuICAgICAgVGhpcyBiZWhhdmlvdXIgaXMgdGhlIHNhbWUgd2hlbiBkb3VibGUgdHJhbnNsYXRpb24gaXMgZGlzYWJsZWQuICopXG5lbmQgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgYXNzdW1lX25vX3BlcmZvcm0gOiAodW5pdCAtPiAnYSkgLT4gJ2EgPSBcImNhbWxfYXNzdW1lX25vX3BlcmZvcm1cIlxuZW5kXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImdsb2JhbF9kYXRhIiwiQXNzZXJ0X2ZhaWx1cmUiLCJKc29vX3J1bnRpbWVfUnVudGltZV92ZXJzaW9uIiwiU3RkbGliX0NhbGxiYWNrIiwiZWZmZWN0cyIsInBhcmFtIiwibWF0Y2giLCJ2ZXJzaW9uIiwiZ2l0X3ZlcnNpb24iLCJFeG4iLCJFcnJvciJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxpQkFBQTtBQUFBLElBQUFDLCtCQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQTtBQUFBLFlBQUFDLFFBQUFDO0FBQUFBLFFBQUFDLFFDaUtZO0FBQUEsSUFBVyxvQkFFTjtBQUFBLElBRk0seUJBQ0Q7QUFBQSxJQURDO0FBQUEsS0FJVjtBQUFBLElBRG1CO0FBQUEsR0FDUDtBQUFBO0FBQUEsSUFBQUMsVURyS3pCO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLE1BQUE7QUFBQSxHQ3dNVTtBQUFBO0FBQUEsSUFBQUM7QUFBQUEsTUFBNEQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVEeE10RSIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjMyNzk0LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6ImJyci5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvYnJyL2pzdHIubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgQ29weXJpZ2h0IChjKSAyMDIwIFRoZSBicnIgcHJvZ3JhbW1lcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbigqIE1pbmkgSnYsIHRoaXMgYWxsb3dzIHVzIHRvIHVzZSBKc3RyIGluIEp2ICopXG5cbnR5cGUganZcbmV4dGVybmFsIGp2X2NhbGwgOiBqdiAtPiBzdHJpbmcgLT4ganYgYXJyYXkgLT4gJ2EgPSBcImNhbWxfanNfbWV0aF9jYWxsXCJcbmV4dGVybmFsIGp2X2FwcGx5IDoganYgLT4ganYgYXJyYXkgLT4gJ2EgPSBcImNhbWxfanNfZnVuX2NhbGxcIlxuZXh0ZXJuYWwganZfZ2V0IDoganYgLT4gc3RyaW5nIC0+IGp2ID0gXCJjYW1sX2pzX2dldFwiXG5leHRlcm5hbCBqdl9vZl9pbnQgOiBpbnQgLT4ganYgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBqdl90b19pbnQgOiBqdiAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBqdl9vZl9mbG9hdCA6IGZsb2F0IC0+IGp2ID0gXCJjYW1sX2pzX2Zyb21fZmxvYXRcIlxuZXh0ZXJuYWwganZfdG9fZmxvYXQgOiBqdiAtPiBmbG9hdCA9IFwiY2FtbF9qc190b19mbG9hdFwiXG5leHRlcm5hbCBqdl90b19ib29sIDoganYgLT4gYm9vbCA9IFwiY2FtbF9qc190b19ib29sXCJcbmV4dGVybmFsIGp2X3B1cmVfanNfZXhwciA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9wdXJlX2pzX2V4cHJcIlxubGV0IGp2X2dsb2JhbCA9IGp2X3B1cmVfanNfZXhwciBcImdsb2JhbFRoaXNcIlxuXG4oKiBTdHJpbmdzICopXG5cbnR5cGUgdCA9IGp2XG5leHRlcm5hbCBqdl90b19qc3RyX2xpc3QgOiBqdiAtPiB0IGxpc3QgPSBcImNhbWxfbGlzdF9vZl9qc19hcnJheVwiXG5leHRlcm5hbCBqdl9vZl9qc3RyX2xpc3QgOiB0IGxpc3QgLT4ganYgPSBcImNhbWxfbGlzdF90b19qc19hcnJheVwiXG5leHRlcm5hbCB2IDogc3RyaW5nIC0+IHQgPSBcImNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXCJcbmxldCBsZW5ndGggcyA9IGp2X3RvX2ludCAoanZfZ2V0IHMgXCJsZW5ndGhcIilcblxuZXh0ZXJuYWwganN0cl90b19zdHJpbmcgOiB0IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcIlxubGV0IGpzdHJfb2ZfaW50ID8oYmFzZSA9IDEwKSBpID1cbiAganZfY2FsbCAoanZfb2ZfaW50IGkpIFwidG9TdHJpbmdcIiBbfCBqdl9vZl9pbnQgYmFzZSB8XVxuXG5sZXQgZXJyX2JvdW5kcyBpIGxlbiA9XG4gIGxldCAoICsgKSBzMCBzMSA9IGp2X2NhbGwgczAgXCJjb25jYXRcIiBbfCBzMSB8XSBpblxuICBqc3RyX3RvX3N0cmluZyBAQFxuICB2IFwiaW5kZXggXCIgKyBqc3RyX29mX2ludCBpICsgdiBcIiBub3QgaW4gYm91bmRzIFswO1wiICtcbiAganN0cl9vZl9pbnQgKGxlbiAtIDEpICsgdiBcIl1cIlxuXG5sZXQgZ2V0IHMgaSA9XG4gIGlmIGkgPj0gbGVuZ3RoIHMgdGhlbiBpbnZhbGlkX2FyZyAoZXJyX2JvdW5kcyBpIChsZW5ndGggcykpIGVsc2VcbiAgbGV0IHUgPSBqdl90b19pbnQgKGp2X2NhbGwgcyBcImNvZGVQb2ludEF0XCIgW3xqdl9vZl9pbnQgaXxdKSBpblxuICBsZXQgdSA9IGlmIHUgPCAweEQ4MDAgfHwgdSA+IDB4REZGRiB0aGVuIHUgZWxzZSAweEZGRkQgKCogVWNoYXIucmVwICopIGluXG4gIFVjaGFyLnVuc2FmZV9vZl9pbnQgdVxuXG5sZXQganN0cl9vZl91Y2hhcl9pbnQgaSA9XG4gIGp2X2NhbGwgKGp2X2dldCBqdl9nbG9iYWwgXCJTdHJpbmdcIikgXCJmcm9tQ29kZVBvaW50XCIgW3wganZfb2ZfaW50IGkgfF1cblxubGV0IGdldF9qc3RyIHMgaSA9IGpzdHJfb2ZfdWNoYXJfaW50IChVY2hhci50b19pbnQgKGdldCBzIGkpKVxuXG4oKiBDb25zdGFudHMgKilcblxubGV0IGVtcHR5ID0gdiBcIlwiXG5sZXQgc3AgPSB2IFwiIFwiXG5sZXQgbmwgPSB2IFwiXFxuXCJcblxuKCogQXNzZW1ibGluZyAqKVxuXG5sZXQgYXBwZW5kIHMwIHMxID0ganZfY2FsbCBzMCBcImNvbmNhdFwiIFt8IHMxIHxdXG5sZXQgKCArICkgPSBhcHBlbmRcbmxldCBjb25jYXQgPyhzZXAgPSBlbXB0eSkgc3MgPSBqdl9jYWxsIChqdl9vZl9qc3RyX2xpc3Qgc3MpIFwiam9pblwiIFt8IHNlcCB8XVxubGV0IHBhZF9zdGFydCA/KHBhZCA9IHNwKSBsZW4gcyA9IGp2X2NhbGwgcyBcInBhZFN0YXJ0XCIgW3wganZfb2ZfaW50IGxlbjsgcGFkIHxdXG5sZXQgcGFkX2VuZCA/KHBhZCA9IHNwKSBsZW4gcyA9IGp2X2NhbGwgcyBcInBhZEVuZFwiIFt8IGp2X29mX2ludCBsZW47IHBhZCB8XVxubGV0IHJlcGVhdCBuIHMgPSBqdl9jYWxsIHMgXCJyZXBlYXRcIiBbfCBqdl9vZl9pbnQgbiB8XVxuXG4oKiBGaW5kaW5nICopXG5cbmxldCBmaW5kX3N1YiA/KHN0YXJ0ID0gMCkgfnN1YiBzID1cbiAgbGV0IGkgPSBqdl90b19pbnQgKGp2X2NhbGwgcyBcImluZGV4T2ZcIiBbfCBzdWI7IGp2X29mX2ludCBzdGFydCB8XSkgaW5cbiAgaWYgaSA9IC0xIHRoZW4gTm9uZSBlbHNlIFNvbWUgaVxuXG5sZXQgZmluZF9sYXN0X3N1YiA/YmVmb3JlIH5zdWIgcyA9XG4gIGxldCBiZWZvcmUgPSBtYXRjaCBiZWZvcmUgd2l0aCBOb25lIC0+IGxlbmd0aCBzIHwgU29tZSBiIC0+IGIgaW5cbiAgbGV0IHBvcyA9IGJlZm9yZSAtIGxlbmd0aCBzdWIgaW5cbiAgaWYgcG9zIDwgMCB0aGVuIE5vbmUgZWxzZVxuICBsZXQgaSA9IGp2X3RvX2ludCAoanZfY2FsbCBzIFwibGFzdEluZGV4T2ZcIiBbfHN1YjsganZfb2ZfaW50IHBvc3xdKSBpblxuICBpZiBpID0gLTEgdGhlbiBOb25lIGVsc2UgU29tZSBpXG5cbigqIEJyZWFraW5nICopXG5cbmxldCBzbGljZSA/KHN0YXJ0ID0gMCkgP3N0b3AgcyA9XG4gIGxldCBhcmdzID0gbWF0Y2ggc3RvcCB3aXRoXG4gIHwgTm9uZSAtPiBbfCBqdl9vZl9pbnQgc3RhcnQgfF1cbiAgfCBTb21lIHN0b3AgLT4gW3wganZfb2ZfaW50IHN0YXJ0OyBqdl9vZl9pbnQgc3RvcCB8XVxuICBpblxuICBqdl9jYWxsIHMgXCJzbGljZVwiIGFyZ3NcblxubGV0IHN1YiA/KHN0YXJ0ID0gMCkgP2xlbiBzID1cbiAgbGV0IGFyZ3MgPSBtYXRjaCBsZW4gd2l0aFxuICB8IE5vbmUgLT4gW3wganZfb2ZfaW50IHN0YXJ0IHxdXG4gIHwgU29tZSBsZW4gLT4gW3wganZfb2ZfaW50IHN0YXJ0OyBqdl9vZl9pbnQgbGVuIHxdXG4gIGluXG4gIGp2X2NhbGwgcyBcInN1YnN0clwiIGFyZ3NcblxubGV0IGN1dHMgfnNlcCBzID0ganZfdG9fanN0cl9saXN0IChqdl9jYWxsIHMgXCJzcGxpdFwiIFt8IHNlcCB8XSlcblxuKCogVHJhdmVyc2luZyBhbmQgdHJhbnNmb3JtaW5nICopXG5cbmxldCBpdGVyYXRvciA6IGp2ID0ganZfcHVyZV9qc19leHByIFwiU3ltYm9sLml0ZXJhdG9yXCJcbmV4dGVybmFsIGdldF9zeW1ib2wgOiBqdiAtPiBqdiAtPiBqdiA9IFwiY2FtbF9qc19nZXRcIlxuXG5sZXQgZm9sZF91Y2hhcnMgZiBzIGFjYyA9XG4gIGxldCByZWMgbG9vcCBpdCBhY2MgPVxuICAgIGxldCByID0ganZfY2FsbCBpdCBcIm5leHRcIiBbfHxdIGluXG4gICAgaWYganZfdG9fYm9vbCAoanZfZ2V0IHIgXCJkb25lXCIpIHRoZW4gYWNjIGVsc2VcbiAgICBsZXQgdSA9IGp2X2NhbGwgKGp2X2dldCByIFwidmFsdWVcIikgXCJjb2RlUG9pbnRBdFwiIFt8IGp2X29mX2ludCAwIHxdIGluXG4gICAgbGV0IHUgPSBpZiB1IDwgMHhEODAwIHx8IHUgPiAweERGRkYgdGhlbiB1IGVsc2UgMHhGRkZEICgqIFVjaGFyLnJlcCAqKSBpblxuICAgIGxvb3AgaXQgKGYgKFVjaGFyLnVuc2FmZV9vZl9pbnQgdSkgYWNjKVxuICBpblxuICBsb29wIChqdl9hcHBseSAoZ2V0X3N5bWJvbCBzIGl0ZXJhdG9yKSBbfHxdKSBhY2NcblxubGV0IGZvbGRfanN0cl91Y2hhcnMgZiBzIGFjYyA9XG4gIGxldCBmJyB1IGFjYyA9IGYgKGpzdHJfb2ZfdWNoYXJfaW50IChVY2hhci50b19pbnQgdSkpIGFjYyBpblxuICBmb2xkX3VjaGFycyBmJyBzIGFjY1xuXG5sZXQgdHJpbSBzID0ganZfY2FsbCBzIFwidHJpbVwiIFt8fF1cblxuKCogTm9ybWFsaXphdGlvbiAqKVxuXG50eXBlIG5vcm1hbGl6YXRpb24gPSBbIGBORkQgfCBgTkZDIHwgYE5GS0QgfCBgTkZLQyBdXG5cbmxldCBub3JtYWxpemVkIG5mIHMgPVxuICBsZXQgbmYgPSBtYXRjaCBuZiB3aXRoXG4gIHwgYE5GRCAtPiB2IFwiTkZEXCIgfCBgTkZDIC0+IHYgXCJORkNcIiB8IGBORktEIC0+IHYgXCJORktEXCIgfCBgTkZLQyAtPiB2IFwiTkZLQ1wiXG4gIGluXG4gIGp2X2NhbGwgcyBcIm5vcm1hbGl6ZVwiIFt8IG5mIHxdXG5cbigqIENhc2UgbWFwcGluZyAqKVxuXG5sZXQgbG93ZXJjYXNlZCBzID0ganZfY2FsbCBzIFwidG9Mb3dlckNhc2VcIiBbfHxdXG5sZXQgdXBwZXJjYXNlZCBzID0ganZfY2FsbCBzIFwidG9VcHBlckNhc2VcIiBbfHxdXG5cbigqIFByZWRpY2F0ZXMgYW5kIGNvbXBhcmlzb25zICopXG5cbmxldCBpc19lbXB0eSBzID0gbGVuZ3RoIHMgPSAwXG5sZXQgc3RhcnRzX3dpdGggfnByZWZpeCBzID0ganZfdG9fYm9vbCBAQCBqdl9jYWxsIHMgXCJzdGFydHNXaXRoXCIgW3wgcHJlZml4IHxdXG5sZXQgaW5jbHVkZXMgfmFmZml4IHMgPSBqdl90b19ib29sIEBAIGp2X2NhbGwgcyBcImluY2x1ZGVzXCIgW3wgYWZmaXggfF1cbmxldCBlbmRzX3dpdGggfnN1ZmZpeCBzID0ganZfdG9fYm9vbCBAQCBqdl9jYWxsIHMgXCJlbmRzV2l0aFwiIFt8IHN1ZmZpeCB8XVxubGV0IGVxdWFsID0gKCA9IClcbmxldCBjb21wYXJlID0gY29tcGFyZVxuXG4oKiBDb252ZXJzaW9ucyAqKVxuXG5sZXQgb2ZfdWNoYXIgdSA9IGpzdHJfb2ZfdWNoYXJfaW50IChVY2hhci50b19pbnQgdSlcbmxldCBvZl9jaGFyIGMgPSBqc3RyX29mX3VjaGFyX2ludCAoQ2hhci5jb2RlIGMpXG5cbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiB0ID0gXCJjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1wiXG5leHRlcm5hbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcIlxuZXh0ZXJuYWwgYmluYXJ5X3RvX29jdGV0cyA6IHQgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9qc2J5dGVzXCJcbmV4dGVybmFsIGJpbmFyeV9vZl9vY3RldHMgOiBzdHJpbmcgLT4gdCA9IFwiY2FtbF9qc2J5dGVzX29mX3N0cmluZ1wiXG5cbmxldCBudW1iZXIgPSBqdl9nZXQganZfZ2xvYmFsIFwiTnVtYmVyXCJcblxubGV0IG9mX2ludCA9IGpzdHJfb2ZfaW50XG5sZXQgdG9faW50ID9iYXNlIHMgPVxuICBsZXQgYXJncyA9IG1hdGNoIGJhc2Ugd2l0aCBOb25lIC0+IFt8IHMgfF0gfCBTb21lIGIgLT4gW3wgczsganZfb2ZfaW50IGIgfF0gaW5cbiAgbGV0IG4gPSBqdl9jYWxsIG51bWJlciBcInBhcnNlSW50XCIgYXJncyBpblxuICBpZiBub3QgKG4gPSBuKSB0aGVuICgqIE5hTiAqKSBOb25lIGVsc2UgU29tZSAoanZfdG9faW50IG4pXG5cbmxldCB0b19mbG9hdCBzID0ganZfdG9fZmxvYXQgQEAganZfY2FsbCBudW1iZXIgXCJwYXJzZUZsb2F0XCIgW3wgcyB8XVxubGV0IG9mX2Zsb2F0ID9mcmFjIG4gPSBtYXRjaCBmcmFjIHdpdGhcbnwgTm9uZSAtPiBqdl9jYWxsIChqdl9vZl9mbG9hdCBuKSBcInRvU3RyaW5nXCIgW3x8XVxufCBTb21lIGZyYWMgLT4ganZfY2FsbCAoanZfb2ZfZmxvYXQgbikgXCJ0b0ZpeGVkXCIgW3xqdl9vZl9pbnQgZnJhY3xdXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfZXF1YWwiLCJjYW1sX2pzX21ldGhfY2FsbCIsImNhbWxfbGlzdF9vZl9qc19hcnJheSIsImNhbWxfY2FsbDIiLCJmIiwiYTAiLCJhMSIsImdsb2JhbF9kYXRhIiwiU3RkbGliX1VjaGFyIiwiU3RkbGliIiwianZfZ2xvYmFsIiwibGVuZ3RoIiwicyIsImpzdHJfb2ZfaW50Iiwib3B0IiwiaSIsImJhc2UiLCJnZXQiLCJsZW4iLCJzMSIsInMwIiwidSIsImpzdHJfb2ZfdWNoYXJfaW50IiwiZ2V0X2pzdHIiLCJhcHBlbmQiLCJlbXB0eSIsImNvbmNhdCIsInNzIiwic2VwIiwic3AiLCJwYWRfc3RhcnQiLCJwYWQiLCJwYWRfZW5kIiwicmVwZWF0IiwibiIsImZpbmRfc3ViIiwic3ViIiwic3RhcnQiLCJmaW5kX2xhc3Rfc3ViIiwiYmVmb3JlIiwiYiIsInBvcyIsInNsaWNlIiwic3RvcCIsImFyZ3MiLCJjdXRzIiwiaXRlcmF0b3IiLCJmb2xkX3VjaGFycyIsImFjYyIsIml0IiwiciIsImZvbGRfanN0cl91Y2hhcnMiLCJ0cmltIiwibm9ybWFsaXplZCIsIm5mIiwibG93ZXJjYXNlZCIsInVwcGVyY2FzZWQiLCJpc19lbXB0eSIsInN0YXJ0c193aXRoIiwicHJlZml4IiwiaW5jbHVkZXMiLCJhZmZpeCIsImVuZHNfd2l0aCIsInN1ZmZpeCIsImNvbXBhcmUiLCJvZl91Y2hhciIsIm9mX2NoYXIiLCJjIiwibnVtYmVyIiwidG9faW50IiwidG9fZmxvYXQiLCJvZl9mbG9hdCIsImZyYWMiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLG9CQUFBO0FBQUEsSUFBQUMsd0JBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQyxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxZQ2lCZ0I7QUFBQSxZQUFBQyxPQUFBQyxHQVE0QjtBQUFBLFlBQUFDLFlBQUFDLEtBQUFDO0FBQUFBLFFBQUFDLE9BRzVCO0FBQUEsSUFDZCx1QkFBcUQ7QUFBQTtBQUFBLFlBQUFDLElBQUFMLEdBQUFHO0FBQUFBLElBU3JDO0FBQUE7QUFBQSxNQUFBRyxNQWJPO0FBQUEsTUFBQUMsS0FVdkI7QUFBQSxNQUFBQSxPQURhO0FBQUEsTUFBQUMsS0FGSztBQUFBLE1BQUFBLE9BQUE7QUFBQSxNQUFBQSxPQUFBO0FBQUEsVUFDbEIsZ0NBRGtCO0FBQUEsS0FNeUMsOEJBR3RDO0FBQUE7QUFBQSxRQUFBQyxJQUZILGtCQUFBQSxNQUNsQjtBQUFBLElBQ0Esc0NBQXFCO0FBQUE7QUFBQSxZQUFBQyxrQkFBQVAsR0FHckIsd0NBQXFFO0FBQUEsWUFBQVEsU0FBQVgsR0FBQUc7QUFBQUEsUUFBQSxJQUVw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QTtBQUFBLFlBQUFvQyxTQUFBMUQsR0FFNUIsMkJBQW1DO0FBQUEsWUFBQTJELFNBQUFDLE1BQUF0QztBQUFBQSxJQUM1QyxXQUNiLG1CQUN5RDtBQUFBLFFBQUFzQyxTQUY1QztBQUFBLElBRVIsd0JBQW9EO0FBQUE7QUFBQSxHQVg3QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVEckp0QyIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjMyOTc4LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6ImJyci5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvYnJyL2p2Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIENvcHlyaWdodCAoYykgMjAyMCBUaGUgYnJyIHByb2dyYW1tZXJzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG5leHRlcm5hbCBwdXJlX2pzX2V4cHIgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfcHVyZV9qc19leHByXCJcbmV4dGVybmFsIGpzX2V4cHIgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfZXhwclwiXG5cbigqIFZhbHVlcyAqKVxuXG50eXBlIHRcbnR5cGUganYgPSB0XG5cbmV4dGVybmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcbmV4dGVybmFsIHN0cmljdF9lcXVhbCA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuZXh0ZXJuYWwgdHlwZW9mIDogdCAtPiBKc3RyLnQgPSBcImNhbWxfanNfdHlwZW9mXCJcbmV4dGVybmFsIGluc3RhbmNlb2YgOiB0IC0+IGNvbnM6dCAtPiBib29sID0gXCJjYW1sX2pzX2luc3RhbmNlb2ZcIlxuZXh0ZXJuYWwgcmVwciA6ICdhIC0+IHQgPSBcIiVpZGVudGl0eVwiXG5cbigqIE51bGwgYW5kIHVuZGVmaW5lZCAqKVxuXG5sZXQgbnVsbCA9IHB1cmVfanNfZXhwciBcIm51bGxcIlxubGV0IHVuZGVmaW5lZCA9IHB1cmVfanNfZXhwciBcInVuZGVmaW5lZFwiXG5sZXQgaXNfbnVsbCB2ID0gc3RyaWN0X2VxdWFsIHYgbnVsbFxubGV0IGlzX3VuZGVmaW5lZCB2ID0gc3RyaWN0X2VxdWFsIHYgdW5kZWZpbmVkXG5sZXQgaXNfbm9uZSB2ID0gaXNfbnVsbCB2IHx8IGlzX3VuZGVmaW5lZCB2XG5sZXQgaXNfc29tZSB2ID0gbm90IChpc19ub25lIHYpXG5sZXQgdG9fb3B0aW9uIGNvbnYgdiA9IGlmIGlzX25vbmUgdiB0aGVuIE5vbmUgZWxzZSBTb21lIChjb252IHYpXG5sZXQgb2Zfb3B0aW9uIH5ub25lIGNvbnYgPSBmdW5jdGlvbiBOb25lIC0+IG5vbmUgfCBTb21lIHYgLT4gY29udiB2XG5cbigqIE9iamVjdHMgKilcblxubGV0IGdsb2JhbCA9IHB1cmVfanNfZXhwciBcImdsb2JhbFRoaXNcIlxuXG4oKiBQcm9wZXJ0aWVzICopXG5cbnR5cGUgcHJvcCA9IHN0cmluZ1xuXG5leHRlcm5hbCBnZXQgOiB0IC0+IHByb3AgLT4gdCA9IFwiY2FtbF9qc19nZXRcIlxuZXh0ZXJuYWwgc2V0IDogdCAtPiBwcm9wIC0+IHQgLT4gdW5pdCA9IFwiY2FtbF9qc19zZXRcIlxuZXh0ZXJuYWwgZGVsZXRlIDogdCAtPiBwcm9wIC0+IHVuaXQgPSBcImNhbWxfanNfZGVsZXRlXCJcbmxldCBzZXRfaWZfc29tZSBvIHAgPSBmdW5jdGlvbiBOb25lIC0+ICgpIHwgU29tZSB2IC0+IHNldCBvIHAgdlxubGV0IGZpbmQgbyBwID0gbGV0IHYgPSBnZXQgbyBwIGluIGlmIGlzX25vbmUgdiB0aGVuIE5vbmUgZWxzZSBTb21lIHZcbmxldCBmaW5kX21hcCBmIG8gcCA9IGxldCB2ID0gZ2V0IG8gcCBpbiBpZiBpc19ub25lIHYgdGhlbiBOb25lIGVsc2UgU29tZSAoZiB2KVxubGV0IHJlYyBmaW5kX3BhdGggbyA9IGZ1bmN0aW9uXG58IFtdIC0+IFNvbWUgb1xufCBwIDo6IHBzIC0+IG1hdGNoIGZpbmQgbyBwIHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSBvIC0+IGZpbmRfcGF0aCBvIHBzXG5cbigqIENyZWF0aW5nICopXG5cbmV4dGVybmFsIG9iaiA6IChwcm9wICogdCkgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19vYmplY3RcIlxuZXh0ZXJuYWwgbmV3JyA6IHQgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX25ld1wiXG5cbigqIE1ldGhvZHMgKilcblxuZXh0ZXJuYWwgY2FsbCA6IHQgLT4gc3RyaW5nIC0+IHQgYXJyYXkgLT4gJ2EgPSBcImNhbWxfanNfbWV0aF9jYWxsXCJcblxuKCogQm9vbGVhbnMgKilcblxubGV0IHRydWUnID0gcHVyZV9qc19leHByIFwidHJ1ZVwiXG5sZXQgZmFsc2UnID0gcHVyZV9qc19leHByIFwiZmFsc2VcIlxuZXh0ZXJuYWwgdG9fYm9vbCA6IHQgLT4gYm9vbCA9IFwiY2FtbF9qc190b19ib29sXCJcbmV4dGVybmFsIG9mX2Jvb2wgOiBib29sIC0+IHQgPSBcImNhbWxfanNfZnJvbV9ib29sXCJcbm1vZHVsZSBCb29sID0gc3RydWN0XG4gIGxldCBmaW5kIG8gcCA9IGxldCBiID0gZ2V0IG8gcCBpbiBpZiBpc19ub25lIGIgdGhlbiBOb25lIGVsc2UgU29tZSAodG9fYm9vbCBiKVxuICBsZXQgZ2V0IG8gcCA9IHRvX2Jvb2wgKGdldCBvIHApXG4gIGxldCBzZXQgbyBwIGIgPSBzZXQgbyBwIChvZl9ib29sIGIpXG4gIGxldCBzZXRfaWZfc29tZSBvIHAgPSBmdW5jdGlvbiBOb25lIC0+ICgpIHwgU29tZSBiIC0+IHNldCBvIHAgYlxuZW5kXG5cbigqIEludGVnZXJzICopXG5cbmV4dGVybmFsIHRvX2ludCA6IHQgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5tb2R1bGUgSW50ID0gc3RydWN0XG4gIGxldCBmaW5kIG8gcCA9IGxldCBpID0gZ2V0IG8gcCBpbiBpZiBpc19ub25lIGkgdGhlbiBOb25lIGVsc2UgU29tZSAodG9faW50IGkpXG4gIGxldCBnZXQgbyBwID0gdG9faW50IChnZXQgbyBwKVxuICBsZXQgc2V0IG8gcCBpID0gc2V0IG8gcCAob2ZfaW50IGkpXG4gIGxldCBzZXRfaWZfc29tZSBvIHAgPSBmdW5jdGlvbiBOb25lIC0+ICgpIHwgU29tZSBpIC0+IHNldCBvIHAgaVxuZW5kXG5cbigqIEZsb2F0cyAqKVxuXG5leHRlcm5hbCB0b19mbG9hdCA6IHQgLT4gZmxvYXQgPSBcImNhbWxfanNfdG9fZmxvYXRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fZmxvYXRcIlxubW9kdWxlIEZsb2F0ID0gc3RydWN0XG4gIGxldCBmaW5kIG8gcCA9IGxldCBmID0gZ2V0IG8gcCBpbiBpZiBpc19ub25lIGYgdGhlbiBOb25lIGVsc2UgU29tZSh0b19mbG9hdCBmKVxuICBsZXQgZ2V0IG8gcCA9IHRvX2Zsb2F0IChnZXQgbyBwKVxuICBsZXQgc2V0IG8gcCBiID0gc2V0IG8gcCAob2ZfZmxvYXQgYilcbiAgbGV0IHNldF9pZl9zb21lIG8gcCA9IGZ1bmN0aW9uIE5vbmUgLT4gKCkgfCBTb21lIGYgLT4gc2V0IG8gcCBmXG5lbmRcblxuKCogSW50MzIgKilcblxuZXh0ZXJuYWwgdG9faW50MzIgOiB0IC0+IGludDMyID0gXCJjYW1sX2pzX3RvX2ludDMyXCJcbmV4dGVybmFsIG9mX2ludDMyIDogaW50MzIgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2ludDMyXCJcbm1vZHVsZSBJbnQzMiA9IHN0cnVjdFxuICBsZXQgZmluZCBvIHAgPSBsZXQgZiA9IGdldCBvIHAgaW4gaWYgaXNfbm9uZSBmIHRoZW4gTm9uZSBlbHNlIFNvbWUodG9faW50MzIgZilcbiAgbGV0IGdldCBvIHAgPSB0b19pbnQzMiAoZ2V0IG8gcClcbiAgbGV0IHNldCBvIHAgYiA9IHNldCBvIHAgKG9mX2ludDMyIGIpXG4gIGxldCBzZXRfaWZfc29tZSBvIHAgPSBmdW5jdGlvbiBOb25lIC0+ICgpIHwgU29tZSBmIC0+IHNldCBvIHAgZlxuZW5kXG5cbigqIEpzdHIgKilcblxuZXh0ZXJuYWwgdG9fanN0ciA6IHQgLT4gSnN0ci50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgb2ZfanN0ciA6IEpzdHIudCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxubW9kdWxlIEpzdHIgPSBzdHJ1Y3RcbiAgbGV0IGZpbmQgbyBwID0gbGV0IHMgPSBnZXQgbyBwIGluIGlmIGlzX25vbmUgcyB0aGVuIE5vbmUgZWxzZSBTb21lICh0b19qc3RyIHMpXG4gIGxldCBnZXQgbyBwID0gdG9fanN0ciAoZ2V0IG8gcClcbiAgbGV0IHNldCBvIHAgYiA9IHNldCBvIHAgKG9mX2pzdHIgYilcbiAgbGV0IHNldF9pZl9zb21lIG8gcCA9IGZ1bmN0aW9uIE5vbmUgLT4gKCkgfCBTb21lIGYgLT4gc2V0IG8gcCBmXG5cbiAgKCogV2hlbiBkbyB3ZSBnZXQgLi4vID8gKilcbiAgdHlwZSB0ID0gSnN0ci50XG4gIGxldCB0b19zdHJpbmcgPSBKc3RyLnRvX3N0cmluZ1xuZW5kXG5cbigqIFN0cmluZyAqKVxuXG5leHRlcm5hbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gdCA9IFwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcIlxuZXh0ZXJuYWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXCJcblxuKCogQXJyYXlzICopXG5cbmxldCBpc19hcnJheSBqdiA9IHRvX2Jvb2wgKGNhbGwgKGdldCBnbG9iYWwgXCJBcnJheVwiKSBcImlzQXJyYXlcIiBbfCBqdiB8XSlcblxubW9kdWxlIEphcnJheSA9IHN0cnVjdFxuICB0eXBlIHQgPSBqdlxuICBsZXQgY3JlYXRlIG4gPSBuZXcnIChnZXQgZ2xvYmFsIFwiQXJyYXlcIikgW3wgb2ZfaW50IG4gfF1cbiAgbGV0IGxlbmd0aCBhID0gdG9faW50IChnZXQgYSBcImxlbmd0aFwiKVxuICBleHRlcm5hbCBnZXQgOiB0IC0+IGludCAtPiB0ID0gXCJjYW1sX2pzX2dldFwiXG4gIGV4dGVybmFsIHNldCA6IHQgLT4gaW50IC0+IHQgLT4gdW5pdCA9IFwiY2FtbF9qc19zZXRcIlxuZW5kXG5cbmxldCB0b19hcnJheSBjb252IHYgPVxuICBsZXQgbGVuID0gSmFycmF5Lmxlbmd0aCB2IGluXG4gIEFycmF5LmluaXQgbGVuIChmdW4gaSAtPiBjb252IChKYXJyYXkuZ2V0IHYgaSkpXG5cbmxldCBvZl9hcnJheSBjb252IGEgPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgbGV0IGphID0gSmFycmF5LmNyZWF0ZSBsZW4gaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG8gSmFycmF5LnNldCBqYSBpIChjb252IChBcnJheS5nZXQgYSBpKSkgZG9uZTtcbiAgamFcblxubGV0IHRvX2xpc3QgY29udiB2ID1cbiAgbGV0IGxlbiA9IEphcnJheS5sZW5ndGggdiBpblxuICBMaXN0LmluaXQgbGVuIChmdW4gaSAtPiBjb252IChKYXJyYXkuZ2V0IHYgaSkpXG5cbmxldCBvZl9saXN0IGNvbnYgbCA9XG4gICgqIFNob3VsZCBiZSBiZW5jaG1hcmtlZCBjaGVja2luZyBsZW5ndGggb2YgW2xdIGZpcnN0IG1heSBiZSBmYXN0ZXJcbiAgICAgICB0aGFuIGV4dGVuZGluZyB0aGUgYXJyYXkgcmVwZWF0ZWRseSAqKVxuICBsZXQgcmVjIGxvb3AgaSBqYSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gamFcbiAgfCB2IDo6IHZzIC0+IEphcnJheS5zZXQgamEgaSAoY29udiB2KTsgbG9vcCAoaSArIDEpIGphIHZzXG4gIGluXG4gIGxvb3AgMCAoSmFycmF5LmNyZWF0ZSAwKSBsXG5cbmV4dGVybmFsIHRvX2p2X2FycmF5IDogdCAtPiB0IGFycmF5ID0gXCJjYW1sX2pzX3RvX2FycmF5XCJcbmV4dGVybmFsIG9mX2p2X2FycmF5IDogdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fYXJyYXlcIlxuZXh0ZXJuYWwgdG9fanZfbGlzdCA6IHQgLT4gdCBsaXN0ID0gXCJjYW1sX2xpc3Rfb2ZfanNfYXJyYXlcIlxuZXh0ZXJuYWwgb2ZfanZfbGlzdCA6IHQgbGlzdCAtPiB0ID0gXCJjYW1sX2xpc3RfdG9fanNfYXJyYXlcIlxuZXh0ZXJuYWwgdG9fanN0cl9hcnJheSA6IHQgLT4gSnN0ci50IGFycmF5ID0gXCJjYW1sX2pzX3RvX2FycmF5XCJcbmV4dGVybmFsIG9mX2pzdHJfYXJyYXkgOiBKc3RyLnQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2FycmF5XCJcbmV4dGVybmFsIHRvX2pzdHJfbGlzdCA6IHQgLT4gSnN0ci50IGxpc3QgPSBcImNhbWxfbGlzdF9vZl9qc19hcnJheVwiXG5leHRlcm5hbCBvZl9qc3RyX2xpc3QgOiBKc3RyLnQgbGlzdCAtPiB0ID0gXCJjYW1sX2xpc3RfdG9fanNfYXJyYXlcIlxuXG4oKiBGdW5jdGlvbnMgKilcblxuZXh0ZXJuYWwgYXBwbHkgOiB0IC0+IHQgYXJyYXkgLT4gJ2EgPSBcImNhbWxfanNfZnVuX2NhbGxcIlxuZXh0ZXJuYWwgY2FsbGJhY2sgOiBhcml0eTppbnQgLT4gKF8gLT4gXykgLT4gdCA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdFwiXG5cbigqIEVycm9ycyAqKVxuXG5tb2R1bGUgRXJyb3IgPSBzdHJ1Y3RcbiAgdHlwZSBlbnVtID1cbiAgWyBgQWJvcnRfZXJyb3IgfCBgQ29uc3RyYWludF9lcnJvciB8IGBEYXRhX2Nsb25lX2Vycm9yIHwgYERhdGFfZXJyb3JcbiAgfCBgRW5jb2RpbmdfZXJyb3IgfCBgSGllcmFyY2h5X3JlcXVlc3RfZXJyb3IgfCBgSW5kZXhfc2l6ZV9lcnJvclxuICB8IGBJbnZhbGlkX2FjY2Vzc19lcnJvciB8IGBJbnZhbGlkX2NoYXJhY3Rlcl9lcnJvclxuICB8IGBJbnZhbGlkX21vZGlmaWNhdGlvbl9lcnJvciB8IGBJbnZhbGlkX25vZGVfdHlwZV9lcnJvclxuICB8IGBJbnZhbGlkX3N0YXRlX2Vycm9yIHwgYE5hbWVzcGFjZV9lcnJvciB8IGBOZXR3b3JrX2Vycm9yXG4gIHwgYE5vX21vZGlmaWNhdGlvbl9hbGxvd2VkX2Vycm9yIHwgYE5vdF9hbGxvd2VkX2Vycm9yIHwgYE5vdF9mb3VuZF9lcnJvclxuICB8IGBOb3RfcmVhZGFibGVfZXJyb3IgfCBgTm90X3N1cHBvcnRlZF9lcnJvciB8IGBPcGVyYXRpb25fZXJyb3JcbiAgfCBgUXVvdGFfZXhjZWVkZWRfZXJyb3IgfCBgUmVhZF9vbmx5X2Vycm9yIHwgYFNlY3VyaXR5X2Vycm9yXG4gIHwgYFN5bnRheF9lcnJvciB8IGBUaW1lb3V0X2Vycm9yIHwgYFRyYW5zYWN0aW9uX2luYWN0aXZlX2Vycm9yIHwgYFR5cGVfZXJyb3JcbiAgfCBgVHlwZV9taXNtYXRjaF9lcnJvciB8IGBVcmxfbWlzbWF0Y2hfZXJyb3IgfCBgVW5rbm93bl9lcnJvclxuICB8IGBWZXJzaW9uX2Vycm9yIHwgYFdyb25nX2RvY3VtZW50X2Vycm9yIHwgYE90aGVyIF1cblxuICB0eXBlIHQgPSBKc29vX3J1bnRpbWUuRXJyb3IudFxuICBsZXQgdiA/bmFtZSBtc2cgOiB0ID1cbiAgICBsZXQgZSA9IG5ldycgKGdldCBnbG9iYWwgXCJFcnJvclwiKSBbfCBvZl9qc3RyIG1zZyB8XSBpblxuICAgIG1hdGNoIG5hbWUgd2l0aFxuICAgIHwgTm9uZSAtPiBPYmoubWFnaWMgZVxuICAgIHwgU29tZSBuIC0+IHNldCBlIFwibmFtZVwiIChvZl9qc3RyIG4pOyBPYmoubWFnaWMgZVxuXG4gIGxldCBuYW1lIChlIDogdCkgPSB0b19qc3RyIChnZXQgKE9iai5tYWdpYyBlKSBcIm5hbWVcIilcbiAgbGV0IGVudW0gZSA9IG1hdGNoIHRvX3N0cmluZyAoZ2V0IChPYmoubWFnaWMgZSkgXCJuYW1lXCIpIHdpdGhcbiAgfCBcIkFib3J0RXJyb3JcIiAtPiBgQWJvcnRfZXJyb3JcbiAgfCBcIkNvbnN0cmFpbnRFcnJvclwiIC0+IGBDb25zdHJhaW50X2Vycm9yXG4gIHwgXCJEYXRhQ2xvbmVFcnJvclwiIC0+IGBEYXRhX2Nsb25lX2Vycm9yXG4gIHwgXCJEYXRhRXJyb3JcIiAtPiBgRGF0YV9lcnJvclxuICB8IFwiRW5jb2RpbmdFcnJvclwiIC0+IGBFbmNvZGluZ19lcnJvclxuICB8IFwiSGllcmFyY2h5UmVxdWVzdEVycm9yXCIgLT4gYEhpZXJhcmNoeV9yZXF1ZXN0X2Vycm9yXG4gIHwgXCJJbmRleFNpemVFcnJvclwiIC0+IGBJbmRleF9zaXplX2Vycm9yXG4gIHwgXCJJbnZhbGlkQWNjZXNzRXJyb3JcIiAtPiBgSW52YWxpZF9hY2Nlc3NfZXJyb3JcbiAgfCBcIkludmFsaWRDaGFyYWN0ZXJFcnJvclwiIC0+IGBJbnZhbGlkX2NoYXJhY3Rlcl9lcnJvclxuICB8IFwiSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yXCIgLT4gYEludmFsaWRfbW9kaWZpY2F0aW9uX2Vycm9yXG4gIHwgXCJJbnZhbGlkTm9kZVR5cGVFcnJvclwiIC0+IGBJbnZhbGlkX25vZGVfdHlwZV9lcnJvclxuICB8IFwiSW52YWxpZFN0YXRlRXJyb3JcIiAtPiBgSW52YWxpZF9zdGF0ZV9lcnJvclxuICB8IFwiTmFtZXNwYWNlRXJyb3JcIiAtPiBgTmFtZXNwYWNlX2Vycm9yXG4gIHwgXCJOZXR3b3JrRXJyb3JcIiAtPiBgTmV0d29ya19lcnJvclxuICB8IFwiTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3JcIiAtPiBgTm9fbW9kaWZpY2F0aW9uX2FsbG93ZWRfZXJyb3JcbiAgfCBcIk5vdEFsbG93ZWRFcnJvclwiIC0+IGBOb3RfYWxsb3dlZF9lcnJvclxuICB8IFwiTm90Rm91bmRFcnJvclwiIC0+IGBOb3RfZm91bmRfZXJyb3JcbiAgfCBcIk5vdFJlYWRhYmxlRXJyb3JcIiAtPiBgTm90X3JlYWRhYmxlX2Vycm9yXG4gIHwgXCJOb3RTdXBwb3J0ZWRFcnJvclwiIC0+IGBOb3Rfc3VwcG9ydGVkX2Vycm9yXG4gIHwgXCJPcGVyYXRpb25FcnJvclwiIC0+IGBPcGVyYXRpb25fZXJyb3JcbiAgfCBcIlF1b3RhRXhjZWVkZWRFcnJvclwiIC0+IGBRdW90YV9leGNlZWRlZF9lcnJvclxuICB8IFwiUmVhZE9ubHlFcnJvclwiIC0+IGBSZWFkX29ubHlfZXJyb3JcbiAgfCBcIlNlY3VyaXR5RXJyb3JcIiAtPiBgU2VjdXJpdHlfZXJyb3JcbiAgfCBcIlN5bnRheEVycm9yXCIgLT4gYFN5bnRheF9lcnJvclxuICB8IFwiVGltZW91dEVycm9yXCIgLT4gYFRpbWVvdXRfZXJyb3JcbiAgfCBcIlR5cGVFcnJvclwiIC0+IGBUeXBlX2Vycm9yXG4gIHwgXCJUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3JcIiAtPiBgVHJhbnNhY3Rpb25faW5hY3RpdmVfZXJyb3JcbiAgfCBcIlR5cGVNaXNtYXRjaEVycm9yXCIgLT4gYFR5cGVfbWlzbWF0Y2hfZXJyb3JcbiAgfCBcIlVSTE1pc21hdGNoRXJyb3JcIiAtPiBgVXJsX21pc21hdGNoX2Vycm9yXG4gIHwgXCJVbmtub3duRXJyb3JcIiAtPiBgVW5rbm93bl9lcnJvclxuICB8IFwiVmVyc2lvbkVycm9yXCIgLT4gYFZlcnNpb25fZXJyb3JcbiAgfCBcIldyb25nRG9jdW1lbnRFcnJvclwiIC0+IGBXcm9uZ19kb2N1bWVudF9lcnJvclxuICB8IF8gLT4gYE90aGVyXG5cbiAgbGV0IG1lc3NhZ2UgZSA9IHRvX2pzdHIgKGdldCAoT2JqLm1hZ2ljIGUpIFwibWVzc2FnZVwiKVxuICBsZXQgc3RhY2sgZSA9IHRvX2pzdHIgKGdldCAoT2JqLm1hZ2ljIGUpIFwic3RhY2tcIilcbiAgbGV0IHRvX3Jlc3VsdCBlID0gRXJyb3IgZVxuZW5kXG5cbmV4dGVybmFsIG9mX2Vycm9yIDogRXJyb3IudCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgdG9fZXJyb3IgOiB0IC0+IEVycm9yLnQgPSBcIiVpZGVudGl0eVwiXG5cbmxldCB0aHJvdyA/bmFtZSBtc2cgPVxuICBsZXQgZSA9IEVycm9yLnYgP25hbWUgbXNnIGluXG4gIChqc19leHByIFwiKGZ1bmN0aW9uIChleG4pIHsgdGhyb3cgZXhuIH0pXCIgOiBFcnJvci50IC0+ICdhKSBlXG5cbmV4Y2VwdGlvbiBFcnJvciA9IEpzb29fcnVudGltZS5FcnJvci5FeG5cblxuKCogSXRlcmFibGUgYW5kIGl0ZXJhdG9yICopXG5cbm1vZHVsZSBJdCA9IHN0cnVjdFxuICB0eXBlIHQgPSBqdlxuICB0eXBlIHJlc3VsdCA9IGp2XG5cbiAgbGV0IHN5bWJvbCA6IGp2ID0gcHVyZV9qc19leHByIFwiU3ltYm9sLml0ZXJhdG9yXCJcbiAgZXh0ZXJuYWwgZ2V0X3N5bWJvbCA6IGp2IC0+IGp2IC0+IGp2ID0gXCJjYW1sX2pzX2dldFwiXG5cbiAgbGV0IGl0ZXJhYmxlIG8gPSBtYXRjaCB0b19vcHRpb24gRnVuLmlkIChnZXRfc3ltYm9sIG8gc3ltYm9sKSB3aXRoXG4gIHwgTm9uZSAtPiBOb25lIHwgU29tZSBmdW5jIC0+IGFwcGx5IGZ1bmMgW3x8XVxuXG4gIGxldCBpdGVyYXRvciBvID0gYXBwbHkgKGdldF9zeW1ib2wgbyBzeW1ib2wpIFt8fF1cblxuICBsZXQgbmV4dCBpdCA9IGNhbGwgaXQgXCJuZXh0XCIgW3x8XVxuXG4gIGxldCByZXN1bHRfZG9uZSBvID0gbWF0Y2ggdG9fb3B0aW9uIHRvX2Jvb2wgKGdldCBvIFwiZG9uZVwiKSB3aXRoXG4gIHwgTm9uZSAtPiBmYWxzZSB8IFNvbWUgZCAtPiBkXG5cbiAgbGV0IHJlc3VsdF92YWx1ZSBvID0gdG9fb3B0aW9uIEZ1bi5pZCAoZ2V0IG8gXCJ2YWx1ZVwiKVxuICBsZXQgZ2V0X3Jlc3VsdF92YWx1ZSBvID0gZ2V0IG8gXCJ2YWx1ZVwiXG5cbiAgbGV0IGZvbGQgb2ZfanYgZiBpdCBhY2MgPVxuICAgIGxldCByZWMgbG9vcCBpdCBhY2MgPVxuICAgICAgbGV0IHIgPSBuZXh0IGl0IGluXG4gICAgICBpZiByZXN1bHRfZG9uZSByIHRoZW4gYWNjIGVsc2VcbiAgICAgIGxvb3AgaXQgKGYgKG9mX2p2IChnZXRfcmVzdWx0X3ZhbHVlIHIpKSBhY2MpXG4gICAgaW5cbiAgICBsb29wIGl0IGFjY1xuXG4gIGxldCBmb2xkX2JpbmRpbmdzIH5rZXkgfnZhbHVlIGYgaXQgYWNjID1cbiAgICBsZXQgcmVjIGxvb3AgaXQgYWNjID1cbiAgICAgIGxldCByID0gbmV4dCBpdCBpblxuICAgICAgaWYgcmVzdWx0X2RvbmUgciB0aGVuIGFjYyBlbHNlXG4gICAgICBsZXQgYXJyID0gZ2V0X3Jlc3VsdF92YWx1ZSByIGluXG4gICAgICBsb29wIGl0IChmIChrZXkgKEphcnJheS5nZXQgYXJyIDApKSAodmFsdWUgKEphcnJheS5nZXQgYXJyIDEpKSBhY2MpXG4gICAgaW5cbiAgICBsb29wIGl0IGFjY1xuZW5kXG5cbigqIFByb21pc2VzICopXG5cbm1vZHVsZSBQcm9taXNlID0gc3RydWN0XG4gIHR5cGUgdCA9IGp2XG4gIGxldCBwcm9taXNlID0gZ2V0IGdsb2JhbCBcIlByb21pc2VcIlxuICBsZXQgY3JlYXRlIGYgPVxuICAgIGxldCBnIHJlcyByZWogPVxuICAgICAgZiAoZnVuIHggLT4gYXBwbHkgcmVzIFt8cmVwciB4fF0pIChmdW4geCAtPiBhcHBseSByZWogW3xyZXByIHh8XSkgaW5cbiAgICBuZXcnIHByb21pc2UgW3wgY2FsbGJhY2sgfmFyaXR5OjIgZyB8XVxuICBsZXQgcmVzb2x2ZSB2ID0gY2FsbCBwcm9taXNlIFwicmVzb2x2ZVwiIFt8IHJlcHIgdiB8XVxuICBsZXQgcmVqZWN0IHYgPSBjYWxsIHByb21pc2UgXCJyZWplY3RcIiBbfCByZXByIHYgfF1cbiAgbGV0IGF3YWl0IHAgayA9IGlnbm9yZSAoY2FsbCBwIFwidGhlblwiIFt8IGNhbGxiYWNrIH5hcml0eToxIGsgfF0pXG4gIGxldCBiaW5kIHAgcmVzID0gY2FsbCBwIFwidGhlblwiIFt8IGNhbGxiYWNrIH5hcml0eToxIHJlcyB8XVxuICBsZXQgdGhlbicgcCByZXMgcmVqID1cbiAgICBjYWxsIHAgXCJ0aGVuXCIgW3wgY2FsbGJhY2sgfmFyaXR5OjEgcmVzOyBjYWxsYmFjayB+YXJpdHk6MSByZWp8XVxuXG4gIGxldCBhbGwgYXJyID0gY2FsbCBwcm9taXNlIFwiYWxsXCIgW3wgcmVwciBhcnIgfF1cbmVuZFxuXG4oKiBVbmljb2RlIGlkZW50aWZpZXJzICopXG5cbnR5cGUgcHJvcCcgPSBKc3RyLnRcbmV4dGVybmFsIGdldCcgOiB0IC0+IHByb3AnIC0+IHQgPSBcImNhbWxfanNfZ2V0XCJcbmV4dGVybmFsIHNldCcgOiB0IC0+IHByb3AnIC0+IHQgLT4gdW5pdCA9IFwiY2FtbF9qc19zZXRcIlxuZXh0ZXJuYWwgZGVsZXRlJyA6IHQgLT4gcHJvcCcgLT4gdW5pdCA9IFwiY2FtbF9qc19kZWxldGVcIlxubGV0IGZpbmQnIG8gcCA9IGxldCB2ID0gZ2V0JyBvIHAgaW4gaWYgaXNfbm9uZSB2IHRoZW4gTm9uZSBlbHNlIFNvbWUgdlxubGV0IGZpbmRfbWFwJyBmIG8gcCA9IGxldCB2ID0gZ2V0JyBvIHAgaW4gaWYgaXNfbm9uZSB2IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGYgdilcblxuKCogWFhYIHRoZSBmb2xsb3dpbmcgd2VyZSBzdXBwb3NlZCB0byBiZSBkaXJlY3QgY2FsbCB0byBleHRlcm5hbHMgbGlrZSBmb3JcbiAgIHRoZSBhYm92ZSBidXQgdGhleSBhcmUgbm90IGltcGxlbWVudGVkIHRoYXQgd2F5IGZvciBub3cuIFNlZSBkaXNjdXNzaW9uIGhlcmU6XG4gICBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9qc19vZl9vY2FtbC9wdWxsLzk5NyNpc3N1ZWNvbW1lbnQtNjk0OTI1NzY1LlxuICAgSXQgd291bGQgbGlrZWx5IG5lZWQgYSBiaXQgb2YgdXBzdHJlYW0gY2Fqb2xpbmcgdG8gbW92ZSBvbiDigJMgT1RPSFxuICAgdGhlc2Ugc2hvdWxkIGVuZCB1cCBiZWluZyB1c2VkIHBlcnZhc2l2ZWx5LiAqKVxuXG5sZXQgb2JqJyBwcm9wcyA9IG9iaiAoQXJyYXkubWFwIChmdW4gKHAsIHYpIC0+IEpzdHIudG9fc3RyaW5nIHAsIHYpIHByb3BzKVxubGV0IGNhbGwnIG8gbSBhcmdzID0gY2FsbCBvIChKc3RyLnRvX3N0cmluZyBtKSBhcmdzXG5cbigqIERlYnVnZ2VyICopXG5cbmV4dGVybmFsIGRlYnVnZ2VyIDogdW5pdCAtPiB1bml0ID0gXCJkZWJ1Z2dlclwiXG5cbigqIEZlYXR1cmUgZGV0ZWN0aW9uICopXG5cbmxldCBoYXMgcCB2ID0gaXNfc29tZSAoZ2V0IChyZXByIHYpIHApXG5sZXQgZGVmaW5lZCB2ID0gaXNfc29tZSAocmVwciB2KVxuXG4oKiBDb252ZXJzaW9uIGludGVyZmFjZSAqKVxuXG5tb2R1bGUgdHlwZSBDT05WID0gc2lnXG4gIHR5cGUgdFxuICBleHRlcm5hbCB0b19qdiA6IHQgLT4ganYgPSBcIiVpZGVudGl0eVwiXG4gIGV4dGVybmFsIG9mX2p2IDoganYgLT4gdCA9IFwiJWlkZW50aXR5XCJcbmVuZFxuXG5tb2R1bGUgSWQgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgdG9fanYgOiAnYSAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuICBleHRlcm5hbCBvZl9qdiA6IHQgLT4gJ2EgPSBcIiVpZGVudGl0eVwiXG5lbmRcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9qc19nZXQiLCJjYW1sX2pzX3NldCIsImNhbWxfanNfc3RyaWN0X2VxdWFscyIsImNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3QiLCJjYW1sX3N0cmluZ19jb21wYXJlIiwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmciLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWJfQXJyYXkiLCJTdGRsaWJfTGlzdCIsIkpzb29fcnVudGltZSIsIm51bGwkIiwidW5kZWZpbmVkJCIsImlzX251bGwiLCJ2IiwiaXNfdW5kZWZpbmVkIiwiaXNfbm9uZSIsImlzX3NvbWUiLCJ0b19vcHRpb24iLCJjb252Iiwib2Zfb3B0aW9uIiwibm9uZSIsInBhcmFtIiwiZ2xvYmFsIiwic2V0X2lmX3NvbWUiLCJvIiwicCIsImZpbmQiLCJmaW5kX21hcCIsImZpbmRfcGF0aCIsInBzIiwibWF0Y2giLCJiIiwiZ2V0Iiwic2V0IiwiaSIsInMiLCJpc19hcnJheSIsImp2IiwiY3JlYXRlIiwibiIsImxlbmd0aCIsImEiLCJ0b19hcnJheSIsImxlbiIsIm9mX2FycmF5IiwiamEiLCJ0b19saXN0Iiwib2ZfbGlzdCIsImwiLCJ2cyIsIm5hbWUiLCJtc2ciLCJlIiwiZW51bSQiLCJzd2l0Y2gkIiwibWVzc2FnZSIsInN0YWNrIiwidGhyb3ckIiwiRXJyb3IiLCJzeW1ib2wiLCJpdGVyYWJsZSIsImZ1bmMiLCJpdGVyYXRvciIsIm5leHQiLCJpdCIsInJlc3VsdF9kb25lIiwiZCIsInJlc3VsdF92YWx1ZSIsImdldF9yZXN1bHRfdmFsdWUiLCJmb2xkIiwib2ZfanYiLCJhY2MiLCJyIiwiZm9sZF9iaW5kaW5ncyIsImtleSIsInZhbHVlIiwiYXJyIiwicHJvbWlzZSIsImciLCJyZXMiLCJyZWoiLCJ4IiwicmVzb2x2ZSIsInJlamVjdCIsImF3YWl0JCIsImsiLCJiaW5kIiwidGhlbiIsImFsbCIsIm9iaiIsInByb3BzIiwiY2FsbCIsIm0iLCJhcmdzIiwiaGFzIiwiZGVmaW5lZCIsIkp2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QUEsYUFBdUIscUNBQXVCO0FBQUE7QUFBQSxZQUFBUSxJQUFBWixLQUVuRCx1QkFBaUM7QUFBQSxZQUFBbEQsT0FBQUYsR0FBQUMsT0FBQVosSUFTekIsTUFBZSw4QkFBK0I7QUFBQSxZQUFBYyxXQUFBM0IsR0FBQXdCLEdBQUFDO0FBQUFBLFFBQUFaLElBQ3hDO0FBQUEsSUFBZSw0QkFBOEIsaUJBQUs7QUFBQTtBQUFBLFlBQUE0RSxJQUFBQztBQUFBQSxJQVEzRCxPQUFKO0FBQUEsYUFBSTtBQUFBO0FBQUEsd0JBQUFyRTtBQUFBQSxvQkFBQVIsSUFBVyxVQUFBWSxJQUFBO0FBQUEsZ0JBQWUseUNBQWdCO0FBQUEsZUFBSTtBQUFBLHNCQUFPO0FBQUE7QUFBQSxZQUFBa0UsS0FBQW5FLEdBQUFvRSxHQUFBQztBQUFBQSxJQUM5QyxPQUFQLDZCQUFPLGlDQUF1QjtBQUFBO0FBQUEsWUFBQUMsSUFBQXJFLEdBQUFaLEdBUWI7QUFBQSxZQUFBa0YsUUFBQWxGLEdBQ3RCLGlCQUFnQjtBQUFBO0FBQUEsSUFBQW1GO0FBQUFBLE1BeENJO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVEalNwQyIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjMzMzI0LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6ImJyci5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvYnJyL2Z1dC5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBDb3B5cmlnaHQgKGMpIDIwMjAgVGhlIGJyciBwcm9ncmFtbWVycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuKCogV2UgcmVwcmVzZW50IGZ1dHVyZXMgYnkgYW4gb2JqZWN0IHsgZnV0IDogPHByb21pc2U+IH0gd2l0aCBhIHNpbmdsZVxuICAgW2Z1dF0gSmF2YVNjcmlwdCBQcm9taXNlIG9iamVjdCB3aGljaCwgYnkgY29uc3RydWN0aW9uLCAqbmV2ZXIqXG4gICByZWplY3RzLiBUaGUgcHJvbWlzZSBpcyB3cmFwcGVkIGluIGFuIG9iamVjdCBiZWNhdXNlIEphdmFTY3JpcHQnc1xuICAgW3Jlc29sdmVdIHdoaWNoIHNob3VsZCBiZSBtb25hZGljIFtyZXR1cm5dIHVuZm9ydHVuYXRlbHkgYWxzb1xuICAgbW9uYWRpY2FsbHkgW2pvaW5dcy4gVGhpcyBKYXZhU2NyaXB0IGV4cHJlc3Npb246XG5cbiAgICAgUHJvbWlzZS5yZXNvbHZlIChQcm9taXNlLnJlc29sdmUgKFwiTm9vb29vbyFcIikpXG5cbiAgIGV2YWx1YXRlcyB0bzogIFByb21pc2UgezxmdWxmaWxsZWQ+OiBcIk5vb29vb28hXCJ9XG4gICAgIGluc3RlYWQgb2Y6ICBQcm9taXNlIHs8ZnVsZmlsbGVkPjogUHJvbWlzZSB7PGZ1bGZpbGxlZD46IFwiXCJOb29vb29vIVwiXCJ9fVxuXG4gICBUaGlzIG1ha2VzIGl0IGltcG9zc2libGUgdG8gdHlwZSBbcmVzb2x2ZV0gY29ycmVjdGx5IGluIE9DYW1sIHNpbmNlIGl0XG4gICB3b3VsZCBuZWVkIHRvIGhhdmUgdGhlc2UgdHdvIHR5cGVzOlxuXG4gICAgIHZhbCByZXNvbHZlIDogJ2EgLT4gJ2EgUHJvbWlzZS50XG4gICAgIHZhbCByZXNvbHZlIDogJ2EgUHJvbWlzZS50IC0+ICdhIFByb21pc2UudFxuXG4gICBJbiBnZW5lcmFsIHRoaXMgYnJlYWtzIHR5cGUgc2FmZXR5IGZvciBleGFtcGxlIFtiaW5kXWluZyBhIFsnYVxuICAgRnV0LnQgRnV0LnRdIHZhbHVlIHlvdXIgZnVuY3Rpb24gY291bGQgZW5kIHVwIHdpdGggYSBncm91bmQgdmFsdWVcbiAgIG9mIHR5cGUgWydhXSBub3QgdGhlIGV4cGVjdGVkIFsnYSBGdXQudF0gdmFsdWUgYXMgYXJndW1lbnQuIEJ5XG4gICB3cmFwcGluZyB0aGUgcHJvbWlzZSBpbiBhbiBvYmplY3Qgd2UgY2FuIGNvbnRyb2wgdGhhdC4gKilcblxudHlwZSAnYSB0ID0gSnYudCAoKiBhIEphdmFTY3JpcHQgb2JqZWN0IG9mIHRoZSBmb3JtOiB7IGZ1dCA6IDxwcm9taXNlPiB9ICopXG5cbmxldCBmdXQgcCA9IEp2Lm9iaiBbfCBcImZ1dFwiLCBwIHxdXG5sZXQgcHJvbWlzZSBmID0gSnYuZ2V0IGYgXCJmdXRcIlxubGV0IHByb21pc2UnIGYgPSBKdi5nZXQgZiBcImZ1dFwiXG5sZXQgY3JlYXRlICgpID0gKCogVWdseSBhcyBzaGl0IGJ1dCB0aGF0J3Mgd2hhdCBuZXcgUHJvbWlzZSBnaXZlcyB1cy4gICopXG4gIGxldCBub3Rfc2V0ID0gZnVuIF8gLT4gYXNzZXJ0IGZhbHNlIGluXG4gIGxldCBpc19zZXQgPSBmdW4gXyAtPiBKdi50aHJvdyAoSnN0ci52IFwiVGhlIGZ1dHVyZSBpcyBhbHJlYWR5IHNldFwiKSBpblxuICBsZXQgc2V0dGVyID0gcmVmIG5vdF9zZXQgaW5cbiAgbGV0IHNldF9zZXR0ZXIgcmVzb2x2ZSBfcmVqZWN0ID0gc2V0dGVyIDo9IHJlc29sdmUgaW5cbiAgbGV0IHAgPSBKdi5Qcm9taXNlLmNyZWF0ZSBzZXRfc2V0dGVyIGluXG4gIGxldCBzZXQgdiA9ICFzZXR0ZXIgdjsgc2V0dGVyIDo9IGlzX3NldCBpblxuICBmdXQgcCwgc2V0XG5cbmxldCBhd2FpdCBmIGsgPSBKdi5Qcm9taXNlLmF3YWl0IChwcm9taXNlIGYpIGtcbmxldCByZXR1cm4gdiA9IGZ1dCBAQCBKdi5Qcm9taXNlLnJlc29sdmUgdlxubGV0IGJpbmQgZiBmbiA9IGZ1dCBAQCBKdi5Qcm9taXNlLmJpbmQgKHByb21pc2UgZikgKGZ1biB2IC0+IHByb21pc2UgKGZuIHYpKVxubGV0IG1hcCBmbiBmID0gYmluZCBmIChmdW4gdiAtPiByZXR1cm4gKGZuIHYpKVxubGV0IHBhaXIgZjAgZjEgPVxuICBmdXQgQEBcbiAgSnYuUHJvbWlzZS5iaW5kIChwcm9taXNlIGYwKSBAQCBmdW4gdjAgLT5cbiAgSnYuUHJvbWlzZS5iaW5kIChwcm9taXNlIGYxKSBAQCBmdW4gdjEgLT5cbiAgSnYuUHJvbWlzZS5yZXNvbHZlICh2MCwgdjEpXG5cbmxldCBvZl9saXN0IGZzID1cbiAgbGV0IGFyciA9IEp2Lm9mX2xpc3QgcHJvbWlzZScgZnMgaW5cbiAgbGV0IGFsbCA9IEp2LlByb21pc2UuYWxsIGFyciBpblxuICBsZXQgdG9fbGlzdCBsID0gSnYuUHJvbWlzZS5yZXNvbHZlIChKdi50b19saXN0IE9iai5tYWdpYyBsKSBpblxuICBmdXQgQEAgSnYuUHJvbWlzZS5iaW5kIGFsbCB0b19saXN0XG5cbmxldCB0aWNrIH5tcyA9XG4gIGZ1dCBAQCBKdi5Qcm9taXNlLmNyZWF0ZSBAQCBmdW4gcmVzIF9yZWogLT5cbiAgaWdub3JlIChKdi5hcHBseSAoSnYuZ2V0IEp2Lmdsb2JhbCBcInNldFRpbWVvdXRcIilcbiAgICAgICAgICAgIEp2Llt8IGNhbGxiYWNrIH5hcml0eToxIHJlczsgb2ZfaW50IG1zIHxdKVxuXG4oKiBDb252ZXJ0aW5nIHdpdGggSmF2YVNjcmlwdCBwcm9taXNlcyAqKVxuXG50eXBlIG5vbnJlYyAoJ2EsICdiKSByZXN1bHQgPSAoJ2EsICdiKSByZXN1bHQgdFxudHlwZSAnYSBvcl9lcnJvciA9ICgnYSwgSnYuRXJyb3IudCkgcmVzdWx0XG5cbmxldCBvayB2ID0gcmV0dXJuIChPayB2KVxubGV0IGVycm9yIGUgPSByZXR1cm4gKEVycm9yIGUpXG5cbmxldCBvZl9wcm9taXNlJyB+b2sgfmVycm9yIHAgPVxuICBsZXQgb2sgdiA9IEp2LlByb21pc2UucmVzb2x2ZSAoT2sgKG9rIHYpKSBpblxuICBsZXQgZXJyb3IgZSA9IEp2LlByb21pc2UucmVzb2x2ZSAoRXJyb3IgKGVycm9yIGUpKSBpblxuICBmdXQgQEAgSnYuUHJvbWlzZS50aGVuJyBwIG9rIGVycm9yXG5cbmxldCB0b19wcm9taXNlJyB+b2sgfmVycm9yIGYgPVxuICBKdi5Qcm9taXNlLmNyZWF0ZSBAQCBmdW4gcmVzIHJlaiAtPlxuICBhd2FpdCBmIEBAIGZ1bmN0aW9uXG4gIHwgT2sgdiAtPiByZXMgKG9rIHYpXG4gIHwgRXJyb3IgZSAtPiByZWogKGVycm9yIGUpXG5cbmxldCBvZl9wcm9taXNlIH5vayB2ID0gb2ZfcHJvbWlzZScgfm9rIH5lcnJvcjpKdi50b19lcnJvciB2XG5sZXQgdG9fcHJvbWlzZSB+b2sgdiA9IHRvX3Byb21pc2UnIH5vayB+ZXJyb3I6SnYub2ZfZXJyb3IgdlxuXG4oKiBGdXR1cmUgc3ludGF4ZXMgKilcblxubW9kdWxlIFN5bnRheCA9IHN0cnVjdFxuICBsZXQgKCBsZXQqICkgPSBiaW5kXG4gIGxldCAoIGFuZCogKSA9IHBhaXJcbiAgbGV0ICggbGV0KyApIGYgZm4gPSBtYXAgZm4gZlxuICBsZXQgKCBhbmQrICkgPSAoIGFuZCogKVxuZW5kXG5cbm1vZHVsZSBSZXN1bHRfc3ludGF4ID0gc3RydWN0XG4gIGxldCByZXN1bHRfcGFpciByID0gbWF0Y2ggciB3aXRoXG4gIHwgKEVycm9yIF8gYXMgciksIF8gfCBfLCAoRXJyb3IgXyBhcyByKSAtPiByXG4gIHwgT2sgdjAsIE9rIHYxIC0+IE9rICh2MCwgdjEpXG5cbiAgbGV0ICggbGV0KiApIGYgZm4gPSBiaW5kIGYgQEAgZnVuY3Rpb25cbiAgfCBPayB2IC0+IGZuIHZcbiAgfCBFcnJvciBfIGFzIGUgLT4gcmV0dXJuIGVcblxuICBsZXQgKCBhbmQqICkgZjAgZjEgPSBtYXAgcmVzdWx0X3BhaXIgKHBhaXIgZjAgZjEpXG4gIGxldCAoIGxldCsgKSBmIGZuID0gbWFwIChSZXN1bHQubWFwIGZuKSBmXG4gIGxldCAoIGFuZCsgKSA9ICggYW5kKiApXG5lbmRcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImNhbWxfY2FsbDMiLCJhMiIsImdsb2JhbF9kYXRhIiwiU3RkbGliX1Jlc3VsdCIsIkp2IiwiQXNzZXJ0X2ZhaWx1cmUiLCJwcm9taXNlIiwiY3JlYXRlIiwicGFyYW0iLCJub3Rfc2V0IiwiaXNfc2V0Iiwic2V0dGVyIiwic2V0X3NldHRlciIsInJlc29sdmUiLCJyZWplY3QiLCJwIiwic2V0IiwidiIsImF3YWl0JCIsImsiLCJyZXR1cm4kIiwiYmluZCIsImZuIiwibWFwIiwicGFpciIsImYwIiwiZjEiLCJ2MCIsInYxIiwib2ZfbGlzdCIsImZzIiwiYXJyIiwiYWxsIiwidG9fbGlzdCIsImwiLCJ0aWNrIiwibXMiLCJyZXMiLCJyZWoiLCJvayIsImVycm9yIiwiZSIsIm9mX3Byb21pc2UiLCJ0b19wcm9taXNlIiwibGV0JCIsInJlc3VsdF9wYWlyIiwiciIsIm1hdGNoIiwiYW5kIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRTtBQUFBQSxJQUFB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QUE7QUFBQSxJQUN1QjtBQUFBLEdBQ2Q7QUFBQSxZQUFBRixNQUFBaEQsR0FBQTBCO0FBQUFBLElBRVQ7QUFBQTtBQUFBLHNCQUFBbUI7QUFBQUEsY0FBVSxlQUVaLGlCQUFRO0FBQUEsa0JBQUF4QixJQUZJO0FBQUEsY0FDcEIsd0JBQ2dCO0FBQUE7QUFBQTtBQUFBLFlBQUErQixJQUFBdkIsSUFBQUMsSUFFVyxPQUFZLGlCQUFaLGFBQVk7QUFBQSxZQUFBa0IsTUFBQWhELEdBQUEwQjtBQUFBQSxRQUFBLElBQ3pCO0FBQUEsSUFBZSx1QkFBZixxQkFBaUI7QUFBQTtBQUFBLEdEdkczQyIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjMzNTAxLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6ImJyci5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvYnJyL2Jyci5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBDb3B5cmlnaHQgKGMpIDIwMjAgVGhlIGJyciBwcm9ncmFtbWVycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuKCogRE9NIGV2ZW50cy5cblxuICAgV2UgbmVlZCB0aGF0IHVuZGVybmVhdGggc29tZSBvZiB0aGUgQVBJcyBiZWxvdywgc29cbiAgIHRoYXQgY29tZXMgZmlyc3QuICopXG5cbm1vZHVsZSBFdiA9IHN0cnVjdFxuICB0eXBlICdhIHR5cGUnID0gSnN0ci50XG4gIG1vZHVsZSBUeXBlID0gc3RydWN0XG4gICAgdHlwZSB2b2lkXG4gICAgdHlwZSAnYSB0ID0gJ2EgdHlwZSdcbiAgICBleHRlcm5hbCBjcmVhdGUgOiBKc3RyLnQgLT4gJ2EgdCA9IFwiJWlkZW50aXR5XCJcbiAgICBleHRlcm5hbCBuYW1lIDogJ2EgdCAtPiBKc3RyLnQgPSBcIiVpZGVudGl0eVwiXG4gICAgZXh0ZXJuYWwgdm9pZCA6IEpzdHIudCAtPiAnYSB0ID0gXCIlaWRlbnRpdHlcIlxuICBlbmRcbiAgdHlwZSB2b2lkID0gVHlwZS52b2lkIHR5cGUnXG5cbiAgKCogRXZlbnRzICopXG5cbiAgdHlwZSBpbml0ID0gSnYudFxuICBsZXQgaW5pdCA/YnViYmxlcyA/Y2FuY2VsYWJsZSA/Y29tcG9zZWQgKCkgPVxuICAgIGxldCBvID0gSnYub2JqIFt8fF0gaW5cbiAgICBKdi5Cb29sLnNldF9pZl9zb21lIG8gXCJidWJibGVzXCIgYnViYmxlcztcbiAgICBKdi5Cb29sLnNldF9pZl9zb21lIG8gXCJjYW5jZWxhYmxlXCIgY2FuY2VsYWJsZTtcbiAgICBKdi5Cb29sLnNldF9pZl9zb21lIG8gXCJjb21wb3NlZFwiIGNvbXBvc2VkO1xuICAgIG9cblxuICB0eXBlIHRhcmdldCA9IEp2LnRcbiAgZXh0ZXJuYWwgdGFyZ2V0X3RvX2p2IDogdGFyZ2V0IC0+ICdhID0gXCIlaWRlbnRpdHlcIlxuICBleHRlcm5hbCB0YXJnZXRfb2ZfanYgOiAnYSAtPiB0YXJnZXQgPSBcIiVpZGVudGl0eVwiXG5cbiAgdHlwZSAnYSB0ID0gSnYudFxuICB0eXBlICdhIGV2ZW50ID0gJ2EgdFxuICBleHRlcm5hbCB0b19qdiA6ICdhIHQgLT4gSnYudCA9IFwiJWlkZW50aXR5XCJcbiAgZXh0ZXJuYWwgb2ZfanYgOiBKdi50IC0+ICdhIHQgPSBcIiVpZGVudGl0eVwiXG4gIGxldCBldmVudCA9IEp2LmdldCBKdi5nbG9iYWwgXCJFdmVudFwiXG4gIGxldCBjcmVhdGUgPyhpbml0ID0gSnYub2JqIFt8fF0pIHQgPSBKdi5uZXcnIGV2ZW50IEp2Llt8IG9mX2pzdHIgdDsgaW5pdHxdXG4gIGV4dGVybmFsIGFzX3R5cGUgOiAnYSB0IC0+ICdhID0gXCIlaWRlbnRpdHlcIlxuICBsZXQgdHlwZScgZSA9IEp2LkpzdHIuZ2V0IGUgXCJ0eXBlXCJcbiAgbGV0IHRhcmdldCBlID0gSnYuZ2V0IGUgXCJ0YXJnZXRcIlxuICBsZXQgY3VycmVudF90YXJnZXQgZSA9IEp2LmdldCBlIFwiY3VycmVudFRhcmdldFwiXG4gIGxldCBjb21wb3NlZF9wYXRoIGUgPSBKdi50b19saXN0IHRhcmdldF9vZl9qdiAoSnYuY2FsbCBlIFwiY29tcG9zZWRQYXRoXCIgW3x8XSlcbiAgbGV0IGV2ZW50X3BoYXNlIGUgPVxuICAgIG1hdGNoIEp2LkludC5nZXQgZSBcImV2ZW50UGhhc2VcIiB3aXRoXG4gICAgfCAxIC0+IGBDYXB0dXJpbmcgfCAyIC0+IGBBdF90YXJnZXQgfCAzIC0+IGBCdWJibGluZyB8IF8gLT4gYE5vbmVcblxuICBsZXQgYnViYmxlcyBlID0gSnYuQm9vbC5nZXQgZSBcImJ1YmJsZXNcIlxuICBsZXQgc3RvcF9wcm9wYWdhdGlvbiBlID0gaWdub3JlIEBAIEp2LmNhbGwgZSBcInN0b3BQcm9wYWdhdGlvblwiIFt8fF1cbiAgbGV0IHN0b3BfaW1tZWRpYXRlX3Byb3BhZ2F0aW9uIGUgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGUgXCJzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb25cIiBbfHxdXG5cbiAgbGV0IGNhbmNlbGFibGUgZSA9IEp2LkJvb2wuZ2V0IGUgXCJjYW5jZWxhYmxlXCJcbiAgbGV0IHByZXZlbnRfZGVmYXVsdCBlID0gaWdub3JlIEBAIEp2LmNhbGwgZSBcInByZXZlbnREZWZhdWx0XCIgW3x8XVxuICBsZXQgZGVmYXVsdF9wcmV2ZW50ZWQgZSA9IEp2LkJvb2wuZ2V0IGUgXCJkZWZhdWx0UHJldmVudGVkXCJcbiAgbGV0IGNvbXBvc2VkIGUgPSBKdi5Cb29sLmdldCBlIFwiY29tcG9zZWRcIlxuICBsZXQgaXNfdHJ1c3RlZCBlID0gSnYuQm9vbC5nZXQgZSBcImlzVHJ1c3RlZFwiXG4gIGxldCB0aW1lc3RhbXBfbXMgZSA9IEp2LkZsb2F0LmdldCBlIFwidGltZVN0YW1wXCJcbiAgbGV0IGRpc3BhdGNoIGUgdCA9IEp2LnRvX2Jvb2wgQEAgSnYuY2FsbCB0IFwiZGlzcGF0Y2hFdmVudFwiIFt8IGUgfF1cblxuICAoKiBMaXN0ZW5pbmcgKilcblxuICB0eXBlIGxpc3Rlbl9vcHRzID0gSnYudFxuICBsZXQgbGlzdGVuX29wdHMgP2NhcHR1cmUgP29uY2UgP3Bhc3NpdmUgKCkgPVxuICAgIGxldCBvID0gSnYub2JqIFt8fF0gaW5cbiAgICBKdi5Cb29sLnNldF9pZl9zb21lIG8gXCJjYXB0dXJlXCIgY2FwdHVyZTtcbiAgICBKdi5Cb29sLnNldF9pZl9zb21lIG8gXCJvbmNlXCIgb25jZTtcbiAgICBKdi5Cb29sLnNldF9pZl9zb21lIG8gXCJwYXNzaXZlXCIgcGFzc2l2ZTtcbiAgICBvXG5cbiAgdHlwZSBsaXN0ZW5lciA9IHVuaXQgLT4gdW5pdFxuXG4gIGxldCBsaXN0ZW4gPyhvcHRzID0gSnYub2JqIFt8fF0pIHR5cGUnIGYgdCA9XG4gICAgbGV0IHR5cGUnID0gSnYub2ZfanN0ciB0eXBlJyBpblxuICAgIGxldCBmID0gSnYuY2FsbGJhY2sgfmFyaXR5OjEgZiBpblxuICAgIGxldCB1bmxpc3RlbiAoKSA9XG4gICAgICBpZ25vcmUgQEAgSnYuY2FsbCB0IFwicmVtb3ZlRXZlbnRMaXN0ZW5lclwiIFt8dHlwZSc7IGY7IG9wdHMgfF1cbiAgICBpblxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIHQgXCJhZGRFdmVudExpc3RlbmVyXCIgW3x0eXBlJzsgZjsgb3B0cyB8XTtcbiAgICB1bmxpc3RlblxuXG4gIGxldCB1bmxpc3RlbiB1bmxpc3RlbiA9IHVubGlzdGVuICgpXG5cbiAgbGV0IG5leHQgP2NhcHR1cmUgdHlwZScgdCA9XG4gICAgbGV0IGZ1dCwgc2V0ID0gRnV0LmNyZWF0ZSAoKSBpblxuICAgIGxldCBvcHRzID0gbGlzdGVuX29wdHMgP2NhcHR1cmUgfm9uY2U6dHJ1ZSAoKSBpblxuICAgIGlnbm9yZSAobGlzdGVuIH5vcHRzIHR5cGUnIHNldCB0IDogbGlzdGVuZXIpO1xuICAgIGZ1dFxuXG4gICgqIEV2ZW50IG9iamVjdHMgKilcblxuICBtb2R1bGUgRGF0YV90cmFuc2ZlciA9IHN0cnVjdFxuICAgIG1vZHVsZSBFZmZlY3QgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEpzdHIudFxuICAgICAgbGV0IG5vbmUgPSBKc3RyLnYgXCJub25lXCJcbiAgICAgIGxldCBjb3B5ID0gSnN0ci52IFwiY29weVwiXG4gICAgICBsZXQgY29weV9saW5rID0gSnN0ci52IFwiY29weUxpbmtcIlxuICAgICAgbGV0IGNvcHlfbW92ZSA9IEpzdHIudiBcImNvcHlNb3ZlXCJcbiAgICAgIGxldCBsaW5rID0gSnN0ci52IFwibGlua1wiXG4gICAgICBsZXQgbGlua19tb3ZlID0gSnN0ci52IFwibGlua01vdmVcIlxuICAgICAgbGV0IG1vdmUgPSBKc3RyLnYgXCJtb3ZlXCJcbiAgICAgIGxldCBhbGwgPSBKc3RyLnYgXCJhbGxcIlxuICAgICAgbGV0IHVuaW5pdGlhbGl6ZWQgPSBKc3RyLnYgXCJ1bmluaXRpYWxpemVkXCJcbiAgICBlbmRcbiAgICBtb2R1bGUgSXRlbSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIEtpbmQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSnN0ci50XG4gICAgICAgIGxldCBmaWxlID0gSnN0ci52IFwiZmlsZVwiXG4gICAgICAgIGxldCBzdHJpbmcgPSBKc3RyLnYgXCJzdHJpbmdcIlxuICAgICAgZW5kXG4gICAgICB0eXBlIHQgPSBKdi50XG4gICAgICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcbiAgICAgIGxldCBraW5kIGkgPSBKdi5Kc3RyLmdldCBpIFwia2luZFwiXG4gICAgICBsZXQgdHlwZScgaSA9IEp2LkpzdHIuZ2V0IGkgXCJ0eXBlXCJcbiAgICAgIGxldCBnZXRfZmlsZSBpID0gSnYudG9fb3B0aW9uIEZ1bi5pZCAoSnYuY2FsbCBpIFwiZ2V0QXNGaWxlXCIgW3x8XSlcbiAgICAgIGxldCBnZXRfanN0ciBpID1cbiAgICAgICAgbGV0IHN0ciwgc2V0X3N0ciA9IEZ1dC5jcmVhdGUgKCkgaW5cbiAgICAgICAgbGV0IHNldF9zdHIgPSBKdi5jYWxsYmFjayB+YXJpdHk6MSBzZXRfc3RyIGluXG4gICAgICAgIGlnbm9yZSAoSnYuY2FsbCBpIFwiZ2V0QXNTdHJpbmdcIiBbfCBzZXRfc3RyIHxdKTtcbiAgICAgICAgc3RyXG4gICAgZW5kXG4gICAgbW9kdWxlIEl0ZW1fbGlzdCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gSnYudFxuICAgICAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICAgIGxldCBsZW5ndGggbCA9IEp2LkludC5nZXQgbCBcImxlbmd0aFwiXG5cbiAgICAgIGxldCBhZGRfanN0ciBsIH50eXBlJyBzdHIgPVxuICAgICAgICBKdi50b19vcHRpb24gSXRlbS5vZl9qdiBAQFxuICAgICAgICBKdi5jYWxsIGwgXCJhZGRcIiBKdi5bfCBvZl9qc3RyIHN0cjsgb2ZfanN0ciB0eXBlJyB8XVxuXG4gICAgICBsZXQgYWRkX2ZpbGUgdCBmaWxlID1cbiAgICAgICAgSnYudG9fb3B0aW9uIEl0ZW0ub2ZfanYgQEBcbiAgICAgICAgSnYuY2FsbCB0IFwiYWRkXCIgSnYuW3wgZmlsZSB8XVxuXG4gICAgICBsZXQgcmVtb3ZlIGwgaSA9IGlnbm9yZSAoSnYuY2FsbCBsIFwicmVtb3ZlXCIgSnYuW3xvZl9pbnQgaXxdKVxuICAgICAgbGV0IGNsZWFyIGwgPSBpZ25vcmUgKEp2LmNhbGwgbCBcImNsZWFyXCIgW3x8XSlcbiAgICAgIGV4dGVybmFsIGl0ZW0gOiB0IC0+IGludCAtPiBJdGVtLnQgPSBcImNhbWxfanNfZ2V0XCJcblxuICAgICAgbGV0IGl0ZW1zIGwgPVxuICAgICAgICBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgIGZvciBpID0gbGVuZ3RoIGwgLSAxIGRvd250byAwIGRvIGFjYyA6PSBpdGVtIGwgaSA6OiAhYWNjIGRvbmU7XG4gICAgICAgICFhY2NcbiAgICBlbmRcblxuICAgIHR5cGUgdCA9IEp2LnRcbiAgICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcbiAgICBsZXQgZHJvcF9lZmZlY3QgZCA9IEp2LkpzdHIuZ2V0IGQgXCJkcm9wRWZmZWN0XCJcbiAgICBsZXQgc2V0X2Ryb3BfZWZmZWN0IGQgZSA9IEp2LkpzdHIuc2V0IGQgXCJkcm9wRWZmZWN0XCIgZVxuICAgIGxldCBlZmZlY3RfYWxsb3dlZCBkID0gSnYuSnN0ci5nZXQgZCBcImVmZmVjdEFsbG93ZWRcIlxuICAgIGxldCBzZXRfZWZmZWN0X2FsbG93ZWQgZCBlID0gSnYuSnN0ci5zZXQgZCBcImVmZmVjdEFsbG93ZWRcIiBlXG4gICAgbGV0IGl0ZW1zIGQgPSBJdGVtX2xpc3Qub2ZfanYgQEAgSnYuZ2V0IGQgXCJpdGVtc1wiXG4gIGVuZFxuICBtb2R1bGUgQ2xpcGJvYXJkID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSnYudFxuICAgIGxldCBkYXRhIGMgPSBKdi5maW5kX21hcCBEYXRhX3RyYW5zZmVyLm9mX2p2IGMgXCJjbGlwYm9hcmREYXRhXCJcbiAgZW5kXG4gIG1vZHVsZSBDb21wb3NpdGlvbiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEp2LnRcbiAgICBsZXQgZGF0YSBpID0gSnYuSnN0ci5nZXQgaSBcImRhdGFcIlxuICBlbmRcbiAgbW9kdWxlIEVycm9yID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSnYudFxuICAgIGxldCBtZXNzYWdlIGUgPSBKdi5Kc3RyLmdldCBlIFwibWVzc2FnZVwiXG4gICAgbGV0IGZpbGVuYW1lIGUgPSBKdi5Kc3RyLmdldCBlIFwiZmlsZW5hbWVcIlxuICAgIGxldCBsaW5lbm8gZSA9IEp2LkludC5nZXQgZSBcImxpbmVub1wiXG4gICAgbGV0IGNvbG5vIGUgPSBKdi5JbnQuZ2V0IGUgXCJjb2xub1wiXG4gICAgbGV0IGVycm9yIGUgPSBKdi5nZXQgZSBcImVycm9yXCJcbiAgZW5kXG4gIG1vZHVsZSBFeHRlbmRhYmxlID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSnYudFxuICAgIGxldCB3YWl0X3VudGlsIGUgZnV0ID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIGUgXCJ3YWl0VW50aWxcIiBbfCBGdXQudG9fcHJvbWlzZSB+b2s6SnYucmVwciBmdXQgfF1cbiAgZW5kXG4gIG1vZHVsZSBGb2N1cyA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEp2LnRcbiAgICBsZXQgcmVsYXRlZF90YXJnZXQgbSA9IEp2LmZpbmRfbWFwIHRhcmdldF9vZl9qdiBtIFwicmVsYXRlZFRhcmdldFwiXG4gIGVuZFxuICBtb2R1bGUgSGFzaF9jaGFuZ2UgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKdi50XG4gICAgbGV0IG9sZF91cmwgZSA9IEp2LkpzdHIuZ2V0IGUgXCJvbGRVUkxcIlxuICAgIGxldCBuZXdfdXJsIGUgPSBKdi5Kc3RyLmdldCBlIFwibmV3VVJMXCJcbiAgZW5kXG4gIG1vZHVsZSBJbnB1dCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEp2LnRcbiAgICBsZXQgZGF0YSBpID0gSnYuSnN0ci5nZXQgaSBcImRhdGFcIlxuICAgIGxldCBkYXRhX3RyYW5zZmVyIGkgPSBKdi5maW5kIGkgXCJkYXRhVHJhbnNmZXJcIlxuICAgIGxldCBpbnB1dF90eXBlIGkgPSBKdi5Kc3RyLmdldCBpIFwiaW5wdXRUeXBlXCJcbiAgICBsZXQgaXNfY29tcG9zaW5nIGkgPSBKdi5Cb29sLmdldCBpIFwiaXNDb21wb3NpbmdcIlxuICBlbmRcbiAgbW9kdWxlIEtleWJvYXJkID0gc3RydWN0XG4gICAgbW9kdWxlIExvY2F0aW9uID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBpbnRcbiAgICAgIGxldCBzdGFuZGFyZCA9IDB4MDBcbiAgICAgIGxldCBsZWZ0ID0gMHgwMVxuICAgICAgbGV0IHJpZ2h0ID0gMHgwMlxuICAgICAgbGV0IG51bXBhZCA9IDB4MDNcbiAgICBlbmRcbiAgICB0eXBlIHQgPSBKdi50XG4gICAgbGV0IGtleSBrID0gSnYuSnN0ci5nZXQgayBcImtleVwiXG4gICAgbGV0IGNvZGUgayA9IEp2LkpzdHIuZ2V0IGsgXCJjb2RlXCJcbiAgICBsZXQgbG9jYXRpb24gayA9IEp2LkludC5nZXQgayBcImxvY2F0aW9uXCJcbiAgICBsZXQgcmVwZWF0IGsgPSBKdi5Cb29sLmdldCBrIFwicmVwZWF0XCJcbiAgICBsZXQgaXNfY29tcG9zaW5nIGsgPSBKdi5Cb29sLmdldCBrIFwiaXNDb21wb3NpbmdcIlxuICAgIGxldCBhbHRfa2V5IGsgPSBKdi5Cb29sLmdldCBrIFwiYWx0S2V5XCJcbiAgICBsZXQgY3RybF9rZXkgayA9IEp2LkJvb2wuZ2V0IGsgXCJjdHJsS2V5XCJcbiAgICBsZXQgc2hpZnRfa2V5IGsgPSBKdi5Cb29sLmdldCBrIFwic2hpZnRLZXlcIlxuICAgIGxldCBtZXRhX2tleSBrID0gSnYuQm9vbC5nZXQgayBcIm1ldGFLZXlcIlxuICAgIGxldCBnZXRfbW9kaWZpZXJfc3RhdGUgayBrZXkgPVxuICAgICAgSnYudG9fYm9vbCBAQCBKdi5jYWxsIGsgXCJnZXRNb2RpZmllclN0YXRlXCIgSnYuW3wgb2ZfanN0ciBrZXkgfF1cbiAgZW5kXG4gIG1vZHVsZSBNb3VzZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEp2LnRcbiAgICBsZXQgcmVsYXRlZF90YXJnZXQgbSA9IEp2LmZpbmRfbWFwIHRhcmdldF9vZl9qdiBtIFwicmVsYXRlZFRhcmdldFwiXG4gICAgbGV0IG9mZnNldF94IG0gPSBKdi5GbG9hdC5nZXQgbSBcIm9mZnNldFhcIlxuICAgIGxldCBvZmZzZXRfeSBtID0gSnYuRmxvYXQuZ2V0IG0gXCJvZmZzZXRZXCJcbiAgICBsZXQgY2xpZW50X3ggbSA9IEp2LkZsb2F0LmdldCBtIFwiY2xpZW50WFwiXG4gICAgbGV0IGNsaWVudF95IG0gPSBKdi5GbG9hdC5nZXQgbSBcImNsaWVudFlcIlxuICAgIGxldCBwYWdlX3ggbSA9IEp2LkZsb2F0LmdldCBtIFwicGFnZVhcIlxuICAgIGxldCBwYWdlX3kgbSA9IEp2LkZsb2F0LmdldCBtIFwicGFnZVlcIlxuICAgIGxldCBzY3JlZW5feCBtID0gSnYuRmxvYXQuZ2V0IG0gXCJzY3JlZW5YXCJcbiAgICBsZXQgc2NyZWVuX3kgbSA9IEp2LkZsb2F0LmdldCBtIFwic2NyZWVuWVwiXG4gICAgbGV0IG1vdmVtZW50X3ggbSA9IEp2LkZsb2F0LmdldCBtIFwibW92ZW1lbnRYXCJcbiAgICBsZXQgbW92ZW1lbnRfeSBtID0gSnYuRmxvYXQuZ2V0IG0gXCJtb3ZlbWVudFlcIlxuICAgIGxldCBidXR0b24gbSA9IEp2LkludC5nZXQgbSBcImJ1dHRvblwiXG4gICAgbGV0IGJ1dHRvbnMgbSA9IEp2LkludC5nZXQgbSBcImJ1dHRvbnNcIlxuICAgIGxldCBhbHRfa2V5IG0gPSBKdi5Cb29sLmdldCBtIFwiYWx0S2V5XCJcbiAgICBsZXQgY3RybF9rZXkgbSA9IEp2LkJvb2wuZ2V0IG0gXCJjdHJsS2V5XCJcbiAgICBsZXQgc2hpZnRfa2V5IG0gPSBKdi5Cb29sLmdldCBtIFwic2hpZnRLZXlcIlxuICAgIGxldCBtZXRhX2tleSBtID0gSnYuQm9vbC5nZXQgbSBcIm1ldGFLZXlcIlxuICAgIGxldCBnZXRfbW9kaWZpZXJfc3RhdGUgbSBrZXkgPVxuICAgICAgSnYudG9fYm9vbCBAQCBKdi5jYWxsIG0gXCJnZXRNb2RpZmllclN0YXRlXCIgSnYuW3wgb2ZfanN0ciBrZXkgfF1cbiAgZW5kXG4gIG1vZHVsZSBEcmFnID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSnYudFxuICAgIGV4dGVybmFsIGFzX21vdXNlIDogdCAtPiBNb3VzZS50ID0gXCIlaWRlbnRpdHlcIlxuICAgIGxldCBkYXRhX3RyYW5zZmVyIGQgPSBKdi5maW5kX21hcCBGdW4uaWQgZCBcImRhdGFUcmFuc2ZlclwiXG4gIGVuZFxuICBtb2R1bGUgUG9pbnRlciA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgZXZlbnQgPSAnYSB0XG4gICAgdHlwZSB0ID0gSnYudFxuICAgIGV4dGVybmFsIGFzX21vdXNlIDogdCAtPiBNb3VzZS50ID0gXCIlaWRlbnRpdHlcIlxuICAgIGxldCBpZCBwID0gSnYuSW50LmdldCBwIFwicG9pbnRlcklkXCJcbiAgICBsZXQgd2lkdGggcCA9IEp2LkZsb2F0LmdldCBwIFwid2lkdGhcIlxuICAgIGxldCBoZWlnaHQgcCA9IEp2LkZsb2F0LmdldCBwIFwiaGVpZ2h0XCJcbiAgICBsZXQgcHJlc3N1cmUgcCA9IEp2LkZsb2F0LmdldCBwIFwicHJlc3N1cmVcIlxuICAgIGxldCB0YW5nZW50aWFsX3ByZXNzdXJlIHAgPSBKdi5GbG9hdC5nZXQgcCBcInRhbmdlbnRpYWxQcmVzc3VyZVwiXG4gICAgbGV0IHRpbHRfeCBwID0gSnYuSW50LmdldCBwIFwidGlsdFhcIlxuICAgIGxldCB0aWx0X3kgcCA9IEp2LkludC5nZXQgcCBcInRpbHRZXCJcbiAgICBsZXQgdHdpc3QgcCA9IEp2LkludC5nZXQgcCBcInR3aXN0XCJcbiAgICBsZXQgYWx0aXR1ZGVfYW5nbGUgcCA9IEp2LkZsb2F0LmdldCBwIFwiYWx0aXR1ZGVBbmdsZVwiXG4gICAgbGV0IGF6aW11dGhfYW5nbGUgcCA9IEp2LkZsb2F0LmdldCBwIFwiYXppbXV0aEFuZ2xlXCJcbiAgICBsZXQgdHlwZScgcCA9IEp2LkpzdHIuZ2V0IHAgXCJwb2ludGVyVHlwZVwiXG4gICAgbGV0IGlzX3ByaW1hcnkgcCA9IEp2LkJvb2wuZ2V0IHAgXCJpc1ByaW1hcnlcIlxuICAgIGxldCBnZXRfY29hbGVzY2VkX2V2ZW50cyBwID1cbiAgICAgIEp2LnRvX2xpc3QgRnVuLmlkIChKdi5jYWxsIHAgXCJnZXRDb2FsZXNjZWRFdmVudHNcIiBbfHxdKVxuXG4gICAgbGV0IGdldF9wcmVkaWN0ZWRfZXZlbnRzIHAgPVxuICAgICAgSnYudG9fbGlzdCBGdW4uaWQgKEp2LmNhbGwgcCBcImdldFByZWRpY3RlZEV2ZW50c1wiIFt8fF0pXG4gIGVuZFxuICBtb2R1bGUgV2hlZWwgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgRGVsdGFfbW9kZSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gaW50XG4gICAgICBsZXQgcGl4ZWwgPSAweDAwXG4gICAgICBsZXQgbGluZSA9IDB4MDFcbiAgICAgIGxldCBwYWdlID0gMHgwMlxuICAgIGVuZFxuICAgIHR5cGUgdCA9IEp2LnRcbiAgICBleHRlcm5hbCBhc19tb3VzZSA6IHQgLT4gTW91c2UudCA9IFwiJWlkZW50aXR5XCJcbiAgICBsZXQgZGVsdGFfeCB3ID0gSnYuRmxvYXQuZ2V0IHcgXCJkZWx0YVhcIlxuICAgIGxldCBkZWx0YV95IHcgPSBKdi5GbG9hdC5nZXQgdyBcImRlbHRhWVwiXG4gICAgbGV0IGRlbHRhX3ogdyA9IEp2LkZsb2F0LmdldCB3IFwiZGVsdGFaXCJcbiAgICBsZXQgZGVsdGFfbW9kZSB3ID0gSnYuSW50LmdldCB3IFwiZGVsdGFNb2RlXCJcbiAgZW5kXG5cbiAgKCogRXZlbnQgdHlwZXMgKilcblxuICBsZXQgYWJvcnQgPSBUeXBlLnZvaWQgKEpzdHIudiBcImFib3J0XCIpXG4gIGxldCBhY3RpdmF0ZSA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJhY3RpdmF0ZVwiKVxuICBsZXQgYXV4Y2xpY2sgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiZGJsY2xpY2tcIilcbiAgbGV0IGJlZm9yZWlucHV0ID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImJlZm9yZWlucHV0XCIpXG4gIGxldCBiZWZvcmV1bmxvYWQgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiYmVmb3JldW5sb2FkXCIpXG4gIGxldCBibHVyID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImJsdXJcIilcbiAgbGV0IGNhbnBsYXkgPSBUeXBlLnZvaWQgKEpzdHIudiBcImNhbnBsYXlcIilcbiAgbGV0IGNhbnBsYXl0aHJvdWdoID0gVHlwZS52b2lkIChKc3RyLnYgXCJjYW5wbGF5dGhyb3VnaFwiKVxuICBsZXQgY2hhbmdlID0gVHlwZS52b2lkIChKc3RyLnYgXCJjaGFuZ2VcIilcbiAgbGV0IGNsaWNrID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImNsaWNrXCIpXG4gIGxldCBjbGlwYm9hcmRjaGFuZ2UgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiY2xpcGJvYXJkY2hhbmdlXCIpXG4gIGxldCBjbG9zZSA9IFR5cGUudm9pZCAoSnN0ci52IFwiY2xvc2VcIilcbiAgbGV0IGNvbXBvc2l0aW9uZW5kID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImNvbXBvc2l0aW9uZW5kXCIpXG4gIGxldCBjb21wb3NpdGlvbnN0YXJ0ID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImNvbXBvc2l0aW9uc3RhcnRcIilcbiAgbGV0IGNvbXBvc2l0aW9udWRwYXRlID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImNvbXBvc2l0aW9udXBkYXRlXCIpXG4gIGxldCBjb250cm9sbGVyY2hhbmdlID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImNvbnRyb2xsZXJjaGFuZ2VcIilcbiAgbGV0IGNvcHkgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiY29weVwiKVxuICBsZXQgY3V0ID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImN1dFwiKVxuICBsZXQgZGJsY2xpY2sgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiZGJsY2xpY2tcIilcbiAgbGV0IGRvbV9jb250ZW50X2xvYWRlZCA9IFR5cGUudm9pZCAoSnN0ci52IFwiRE9NQ29udGVudExvYWRlZFwiKVxuICBsZXQgZHJhZyA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJkcmFnXCIpXG4gIGxldCBkcmFnZW5kID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImRyYWdlbmRcIilcbiAgbGV0IGRyYWdlbnRlciA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJkcmFnZW50ZXJcIilcbiAgbGV0IGRyYWdleGl0ID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImRyYWdleGl0XCIpXG4gIGxldCBkcmFnbGVhdmUgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiZHJhZ2xlYXZlXCIpXG4gIGxldCBkcmFnb3ZlciA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJkcmFnb3ZlclwiKVxuICBsZXQgZHJhZ3N0YXJ0ID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImRyYWdzdGFydFwiKVxuICBsZXQgZHJvcCA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJkcm9wXCIpXG4gIGxldCBkdXJhdGlvbmNoYW5nZSA9IFR5cGUudm9pZCAoSnN0ci52IFwiZHVyYXRpb25jaGFuZ2VcIilcbiAgbGV0IGVtcHRpZWQgPSBUeXBlLnZvaWQgKEpzdHIudiBcImVtcHRpZWRcIilcbiAgbGV0IGVuZGVkID0gVHlwZS52b2lkIChKc3RyLnYgXCJlbmRlZFwiKVxuICBsZXQgZXJyb3IgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiZXJyb3JcIilcbiAgbGV0IGZvY3VzID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImZvY3VzXCIpXG4gIGxldCBmb2N1c2luID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImZvY3VzaW5cIilcbiAgbGV0IGZvY3Vzb3V0ID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImZvY3Vzb3V0XCIpXG4gIGxldCBmdWxsc2NyZWVuY2hhbmdlID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImZ1bGxzY3JlZW5jaGFuZ2VcIilcbiAgbGV0IGZ1bGxzY3JlZW5lcnJvciA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJmdWxsc2NyZWVuZXJyb3JcIilcbiAgbGV0IGdvdHBvaW50ZXJjYXB0dXJlID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImdvdHBvaW50ZXJjYXB0dXJlXCIpXG4gIGxldCBoYXNoY2hhbmdlID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImhhc2hjaGFuZ2VcIilcbiAgbGV0IGlucHV0ID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImlucHV0XCIpXG4gIGxldCBpbnN0YWxsID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImluc3RhbGxcIilcbiAgbGV0IGtleWRvd24gPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwia2V5ZG93blwiKVxuICBsZXQga2V5dXAgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwia2V5dXBcIilcbiAgbGV0IGxhbmd1YWdlY2hhbmdlID0gVHlwZS52b2lkIChKc3RyLnYgXCJsYW5ndWFnZWNoYW5nZVwiKVxuICBsZXQgbG9hZCA9IFR5cGUudm9pZCAoSnN0ci52IFwibG9hZFwiKVxuICBsZXQgbG9hZGVkZGF0YSA9IFR5cGUudm9pZCAoSnN0ci52IFwibG9hZGVkZGF0YVwiKVxuICBsZXQgbG9hZGVkbWV0YWRhdGEgPSBUeXBlLnZvaWQgKEpzdHIudiBcImxvYWRlZG1ldGFkYXRhXCIpXG4gIGxldCBsb2Fkc3RhcnQgPSBUeXBlLnZvaWQgKEpzdHIudiBcImxvYWRzdGFydFwiKVxuICBsZXQgbG9zdHBvaW50ZXJjYXB0dXJlID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImxvc3Rwb2ludGVyY2FwdHVyZVwiKVxuICBsZXQgbW91c2Vkb3duID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcIm1vdXNlZG93blwiKVxuICBsZXQgbW91c2VlbnRlciA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJtb3VzZWVudGVyXCIpXG4gIGxldCBtb3VzZWxlYXZlID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcIm1vdXNlbGVhdmVcIilcbiAgbGV0IG1vdXNlbW92ZSA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJtb3VzZW1vdmVcIilcbiAgbGV0IG1vdXNlb3V0ID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcIm1vdXNlb3V0XCIpXG4gIGxldCBtb3VzZW92ZXIgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwibW91c2VvdmVyXCIpXG4gIGxldCBtb3VzZXVwID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcIm1vdXNldXBcIilcbiAgbGV0IG9wZW4nID0gVHlwZS52b2lkIChKc3RyLnYgXCJvcGVuXCIpXG4gIGxldCBwYXN0ZSA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJwYXN0ZVwiKVxuICBsZXQgcGF1c2UgPSBUeXBlLnZvaWQgKEpzdHIudiBcInBhdXNlXCIpXG4gIGxldCBwbGF5ID0gVHlwZS52b2lkIChKc3RyLnYgXCJwbGF5XCIpXG4gIGxldCBwbGF5aW5nID0gVHlwZS52b2lkIChKc3RyLnYgXCJwbGF5aW5nXCIpXG4gIGxldCBwb2ludGVyY2FuY2VsID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcInBvaW50ZXJjYW5jZWxcIilcbiAgbGV0IHBvaW50ZXJkb3duID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcInBvaW50ZXJkb3duXCIpXG4gIGxldCBwb2ludGVyZW50ZXIgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwicG9pbnRlcmVudGVyXCIpXG4gIGxldCBwb2ludGVybGVhdmUgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwicG9pbnRlcmxlYXZlXCIpXG4gIGxldCBwb2ludGVybG9ja2NoYW5nZSA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJwb2ludGVybG9ja2NoYW5nZVwiKVxuICBsZXQgcG9pbnRlcmxvY2tlcnJvciA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJwb2ludGVybG9ja2Vycm9yXCIpXG4gIGxldCBwb2ludGVybW92ZSA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJwb2ludGVybW92ZVwiKVxuICBsZXQgcG9pbnRlcm91dCA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJwb2ludGVyb3V0XCIpXG4gIGxldCBwb2ludGVyb3ZlciA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJwb2ludGVyb3ZlclwiKVxuICBsZXQgcG9pbnRlcnJhd3VwZGF0ZSA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJwb2ludGVycmF3dXBkYXRlXCIpXG4gIGxldCBwb2ludGVydXAgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwicG9pbnRlcnVwXCIpXG4gIGxldCBwcm9ncmVzcyA9IFR5cGUudm9pZCAoSnN0ci52IFwicHJvZ3Jlc3NcIilcbiAgbGV0IHJhdGVjaGFuZ2UgPSBUeXBlLnZvaWQgKEpzdHIudiBcInJhdGVjaGFuZ2VcIilcbiAgbGV0IHJlc2V0ID0gVHlwZS52b2lkIChKc3RyLnYgXCJyZXNldFwiKVxuICBsZXQgcmVzaXplID0gVHlwZS52b2lkIChKc3RyLnYgXCJyZXNpemVcIilcbiAgbGV0IHNjcm9sbCA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJzY3JvbGxcIilcbiAgbGV0IHNlZWtlZCA9IFR5cGUudm9pZCAoSnN0ci52IFwic2Vla2VkXCIpXG4gIGxldCBzZWVraW5nID0gVHlwZS52b2lkIChKc3RyLnYgXCJzZWVraW5nXCIpXG4gIGxldCBzZWxlY3QgPSBUeXBlLnZvaWQgKEpzdHIudiBcInNlbGVjdFwiKVxuICBsZXQgc3RhbGxlZCA9IFR5cGUudm9pZCAoSnN0ci52IFwic3RhbGxlZFwiKVxuICBsZXQgc3RhdGVjaGFuZ2UgPSBUeXBlLnZvaWQgKEpzdHIudiBcInN0YXRlY2hhbmdlXCIpXG4gIGxldCBzdXNwZW5kID0gVHlwZS52b2lkIChKc3RyLnYgXCJzdXNwZW5kXCIpXG4gIGxldCB0aW1ldXBkYXRlID0gVHlwZS52b2lkIChKc3RyLnYgXCJ0aW1ldXBkYXRlXCIpXG4gIGxldCB1bmxvYWQgPSBUeXBlLnZvaWQgKEpzdHIudiBcInVubG9hZFwiKVxuICBsZXQgdXBkYXRlZm91bmQgPSBUeXBlLnZvaWQgKEpzdHIudiBcInVwZGF0ZWZvdW5kXCIpXG4gIGxldCB2aXNpYmlsaXR5Y2hhbmdlID0gVHlwZS52b2lkIChKc3RyLnYgXCJ2aXNpYmlsaXR5Y2hhbmdlXCIpXG4gIGxldCB2b2x1bWVjaGFuZ2UgPSBUeXBlLnZvaWQgKEpzdHIudiBcInZvbHVtZWNoYW5nZVwiKVxuICBsZXQgd2FpdGluZyA9IFR5cGUudm9pZCAoSnN0ci52IFwid2FpdGluZ1wiKVxuICBsZXQgd2hlZWwgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwid2hlZWxcIilcbmVuZFxuXG4oKiBEYXRhIGNvbnRhaW5lcnMgYW5kIGVuY29kaW5ncyAqKVxuXG5tb2R1bGUgVGFycmF5ID0gc3RydWN0XG5cbiAgKCogQXJyYXkgYnVmZmVycyAqKVxuXG4gIG1vZHVsZSBCdWZmZXIgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKdi50XG4gICAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICBsZXQgYXJyYXlfYnVmZmVyID0gSnYuZ2V0IEp2Lmdsb2JhbCBcIkFycmF5QnVmZmVyXCJcbiAgICBsZXQgY3JlYXRlIG4gPSBKdi5uZXcnIGFycmF5X2J1ZmZlciBKdi5bfCBvZl9pbnQgbiB8XVxuICAgIGxldCBieXRlX2xlbmd0aCBhID0gSnYuSW50LmdldCBhIFwiYnl0ZUxlbmd0aFwiXG4gICAgbGV0IHNsaWNlID8oc3RhcnQgPSAwKSA/c3RvcCAgYSA9XG4gICAgICBsZXQgc3RvcCA9IG1hdGNoIHN0b3Agd2l0aCBOb25lIC0+IGJ5dGVfbGVuZ3RoIGEgfCBTb21lIHN0b3AgLT4gc3RvcCBpblxuICAgICAgSnYuY2FsbCBhIFwic2xpY2VcIiBKdi5bfCBvZl9pbnQgc3RhcnQ7IG9mX2ludCBzdG9wIHxdXG4gIGVuZFxuXG4gICgqIENvbW1vbiB0byB0eXBlZCBhcnJheXMgYW5kIERhdGFWaWV3cyAqKVxuXG4gIGxldCBidWZmZXIgbyA9IEJ1ZmZlci5vZl9qdiBAQCBKdi5nZXQgbyBcImJ1ZmZlclwiXG4gIGxldCBieXRlX29mZnNldCBvID0gSnYuSW50LmdldCBvIFwiYnl0ZU9mZnNldFwiXG4gIGxldCBieXRlX2xlbmd0aCBvID0gSnYuSW50LmdldCBvIFwiYnl0ZUxlbmd0aFwiXG5cbiAgKCogQnl0ZS1sZXZlbCBkYXRhIGFjY2VzcyAqKVxuXG4gIG1vZHVsZSBEYXRhX3ZpZXcgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKdi50ICgqIERhdGFWaWV3IG9iamVjdCAqKVxuICAgIGluY2x1ZGUgKEp2LklkIDogSnYuQ09OViB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gICAgbGV0IGRhdGF2aWV3ID0gSnYuZ2V0IEp2Lmdsb2JhbCBcIkRhdGFWaWV3XCJcbiAgICBsZXQgb2ZfYnVmZmVyID8oYnl0ZV9vZmZzZXQgPSAwKSA/Ynl0ZV9sZW5ndGggYiA9XG4gICAgICBsZXQgYnl0ZV9sZW5ndGggPSBtYXRjaCBieXRlX2xlbmd0aCB3aXRoXG4gICAgICB8IE5vbmUgLT4gQnVmZmVyLmJ5dGVfbGVuZ3RoIGJcbiAgICAgIHwgU29tZSBsIC0+IGxcbiAgICAgIGluXG4gICAgICBKdi5uZXcnIGRhdGF2aWV3XG4gICAgICAgIEp2Llt8QnVmZmVyLnRvX2p2IGI7IG9mX2ludCBieXRlX29mZnNldDsgb2ZfaW50IGJ5dGVfbGVuZ3RofF1cblxuICAgIGxldCBidWZmZXIgPSBidWZmZXJcbiAgICBsZXQgYnl0ZV9vZmZzZXQgPSBieXRlX29mZnNldFxuICAgIGxldCBieXRlX2xlbmd0aCA9IGJ5dGVfbGVuZ3RoXG5cbiAgICBsZXQgZ2V0X2ludDggYiBpID1cbiAgICAgIEp2LnRvX2ludCBAQCBKdi5jYWxsIGIgXCJnZXRJbnQ4XCIgSnYuW3wgb2ZfaW50IGkgfF1cblxuICAgIGxldCBnZXRfaW50MTZfYmUgYiBpID1cbiAgICAgIEp2LnRvX2ludCBAQCBKdi5jYWxsIGIgXCJnZXRJbnQxNlwiIEp2Llt8IG9mX2ludCBpIHxdXG5cbiAgICBsZXQgZ2V0X2ludDE2X2xlIGIgaSA9XG4gICAgICBKdi50b19pbnQgQEAgSnYuY2FsbCBiIFwiZ2V0SW50MTZcIiBKdi5bfCBvZl9pbnQgaTsgSnYudHJ1ZScgfF1cblxuICAgIGxldCBnZXRfaW50MzJfYmUgYiBpID1cbiAgICAgIEp2LnRvX2ludDMyIEBAIEp2LmNhbGwgYiBcImdldEludDMyXCIgSnYuW3wgb2ZfaW50IGkgfF1cblxuICAgIGxldCBnZXRfaW50MzJfbGUgYiBpID1cbiAgICAgIEp2LnRvX2ludDMyIEBAIEp2LmNhbGwgYiBcImdldEludDMyXCIgSnYuW3wgb2ZfaW50IGk7IEp2LnRydWUnIHxdXG5cbiAgICBsZXQgZ2V0X3VpbnQ4IGIgaSA9XG4gICAgICBKdi50b19pbnQgQEAgSnYuY2FsbCBiIFwiZ2V0VWludDhcIiBKdi5bfCBvZl9pbnQgaSB8XVxuXG4gICAgbGV0IGdldF91aW50MTZfYmUgYiBpID1cbiAgICAgIEp2LnRvX2ludCBAQCBKdi5jYWxsIGIgXCJnZXRVaW50MTZcIiBKdi5bfCBvZl9pbnQgaSB8XVxuXG4gICAgbGV0IGdldF91aW50MTZfbGUgYiBpID1cbiAgICAgIEp2LnRvX2ludCBAQCBKdi5jYWxsIGIgXCJnZXRVaW50MTZcIiBKdi5bfCBvZl9pbnQgaTsgSnYudHJ1ZScgfF1cblxuICAgIGxldCBnZXRfdWludDMyX2JlIGIgaSA9XG4gICAgICBKdi50b19pbnQzMiBAQCBKdi5jYWxsIGIgXCJnZXRVaW50MzJcIiBKdi5bfCBvZl9pbnQgaSB8XVxuXG4gICAgbGV0IGdldF91aW50MzJfbGUgYiBpID1cbiAgICAgIEp2LnRvX2ludDMyIEBAIEp2LmNhbGwgYiBcImdldFVpbnQzMlwiIEp2Llt8IG9mX2ludCBpOyBKdi50cnVlJyB8XVxuXG4gICAgbGV0IGdldF9mbG9hdDMyX2JlIGIgaSA9XG4gICAgICBKdi50b19mbG9hdCBAQCBKdi5jYWxsIGIgXCJnZXRGbG9hdDMyXCIgSnYuW3wgb2ZfaW50IGkgfF1cblxuICAgIGxldCBnZXRfZmxvYXQzMl9sZSBiIGkgPVxuICAgICAgSnYudG9fZmxvYXQgQEAgSnYuY2FsbCBiIFwiZ2V0RmxvYXQzMlwiIEp2Llt8IG9mX2ludCBpOyBKdi50cnVlJyB8XVxuXG4gICAgbGV0IGdldF9mbG9hdDY0X2JlIGIgaSA9XG4gICAgICBKdi50b19mbG9hdCBAQCBKdi5jYWxsIGIgXCJnZXRGbG9hdDY0XCIgSnYuW3wgb2ZfaW50IGkgfF1cblxuICAgIGxldCBnZXRfZmxvYXQ2NF9sZSBiIGkgPVxuICAgICAgSnYudG9fZmxvYXQgQEAgSnYuY2FsbCBiIFwiZ2V0RmxvYXQ2NFwiIEp2Llt8IG9mX2ludCBpOyBKdi50cnVlJyB8XVxuXG4gICAgbGV0IHNldF9pbnQ4IGIgaSB2ID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIGIgXCJzZXRJbnQ4XCIgSnYuW3wgb2ZfaW50IGk7IG9mX2ludCB2IHxdXG5cbiAgICBsZXQgc2V0X2ludDE2X2JlIGIgaSB2ID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIGIgXCJzZXRJbnQxNlwiIEp2Llt8IG9mX2ludCBpOyBvZl9pbnQgdiB8XVxuXG4gICAgbGV0IHNldF9pbnQxNl9sZSBiIGkgdiA9XG4gICAgICBpZ25vcmUgQEAgSnYuY2FsbCBiIFwic2V0SW50MTZcIiBKdi5bfCBvZl9pbnQgaTsgb2ZfaW50IHY7IEp2LnRydWUnIHxdXG5cbiAgICBsZXQgc2V0X2ludDMyX2JlIGIgaSB2ID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIGIgXCJzZXRJbnQzMlwiIEp2Llt8IG9mX2ludCBpOyBvZl9pbnQzMiB2IHxdXG5cbiAgICBsZXQgc2V0X2ludDMyX2xlIGIgaSB2ID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIGIgXCJzZXRJbnQzMlwiIEp2Llt8IG9mX2ludCBpOyBvZl9pbnQzMiB2OyBKdi50cnVlJyB8XVxuXG4gICAgbGV0IHNldF91aW50OCBiIGkgdiA9XG4gICAgICBpZ25vcmUgQEAgSnYuY2FsbCBiIFwic2V0VWludDhcIiBKdi5bfCBvZl9pbnQgaTsgb2ZfaW50IHYgfF1cblxuICAgIGxldCBzZXRfdWludDE2X2JlIGIgaSB2ID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIGIgXCJzZXRVaW50MTZcIiBKdi5bfCBvZl9pbnQgaTsgb2ZfaW50IHYgfF1cblxuICAgIGxldCBzZXRfdWludDE2X2xlIGIgaSB2ID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIGIgXCJzZXRVaW50MTZcIiBKdi5bfCBvZl9pbnQgaTsgb2ZfaW50IHY7IEp2LnRydWUnIHxdXG5cbiAgICBsZXQgc2V0X3VpbnQzMl9iZSBiIGkgdiA9XG4gICAgICBpZ25vcmUgQEAgSnYuY2FsbCBiIFwic2V0VWludDMyXCIgSnYuW3wgb2ZfaW50IGk7IG9mX2ludDMyIHYgfF1cblxuICAgIGxldCBzZXRfdWludDMyX2xlIGIgaSB2ID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIGIgXCJzZXRVaW50MzJcIiBKdi5bfCBvZl9pbnQgaTsgb2ZfaW50MzIgdjsgSnYudHJ1ZScgfF1cblxuICAgIGxldCBzZXRfZmxvYXQzMl9iZSBiIGkgdiA9XG4gICAgICBpZ25vcmUgQEAgSnYuY2FsbCBiIFwic2V0RmxvYXQzMlwiIEp2Llt8IG9mX2ludCBpOyBvZl9mbG9hdCB2IHxdXG5cbiAgICBsZXQgc2V0X2Zsb2F0MzJfbGUgYiBpIHYgPVxuICAgICAgaWdub3JlIEBAIEp2LmNhbGwgYiBcInNldEZsb2F0MzJcIiBKdi5bfCBvZl9pbnQgaTsgb2ZfZmxvYXQgdjsgSnYudHJ1ZScgfF1cblxuICAgIGxldCBzZXRfZmxvYXQ2NF9iZSBiIGkgdiA9XG4gICAgICBpZ25vcmUgQEAgSnYuY2FsbCBiIFwic2V0RmxvYXQ2NFwiIEp2Llt8IG9mX2ludCBpOyBvZl9mbG9hdCB2IHxdXG5cbiAgICBsZXQgc2V0X2Zsb2F0NjRfbGUgYiBpIHYgPVxuICAgICAgaWdub3JlIEBAIEp2LmNhbGwgYiBcInNldEZsb2F0NjRcIiBKdi5bfCBvZl9pbnQgaTsgb2ZfZmxvYXQgdjsgSnYudHJ1ZScgfF1cbiAgZW5kXG5cbiAgKCogQXJyYXkgdHlwZXMgKilcblxuICB0eXBlICgnYSwgJ2IpIHR5cGUnID1cbiAgfCBJbnQ4IDogKGludCwgQmlnYXJyYXkuaW50OF9zaWduZWRfZWx0KSB0eXBlJ1xuICB8IEludDE2IDogKGludCwgQmlnYXJyYXkuaW50MTZfc2lnbmVkX2VsdCkgdHlwZSdcbiAgfCBJbnQzMiA6IChpbnQzMiwgQmlnYXJyYXkuaW50MzJfZWx0KSB0eXBlJ1xuICB8IFVpbnQ4IDogKGludCwgQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHQpIHR5cGUnXG4gIHwgVWludDhfY2xhbXBlZCA6IChpbnQsIEJpZ2FycmF5LmludDhfdW5zaWduZWRfZWx0KSB0eXBlJ1xuICB8IFVpbnQxNiA6IChpbnQsIEJpZ2FycmF5LmludDE2X3Vuc2lnbmVkX2VsdCkgdHlwZSdcbiAgfCBVaW50MzIgOiAoaW50MzIsIEJpZ2FycmF5LmludDMyX2VsdCkgdHlwZSdcbiAgfCBGbG9hdDMyIDogKGZsb2F0LCBCaWdhcnJheS5mbG9hdDMyX2VsdCkgdHlwZSdcbiAgfCBGbG9hdDY0IDogKGZsb2F0LCBCaWdhcnJheS5mbG9hdDY0X2VsdCkgdHlwZSdcblxuICBsZXQgdHlwZV9zaXplX2luX2J5dGVzIDogdHlwZSBhIGIuIChhLCBiKSB0eXBlJyAtPiBpbnQgPSBmdW5jdGlvblxuICB8IEludDggfCBVaW50OCB8IFVpbnQ4X2NsYW1wZWQgLT4gMSB8IEludDE2IHwgVWludDE2IC0+IDJcbiAgfCBJbnQzMiB8IFVpbnQzMiB8IEZsb2F0MzIgLT4gNCB8IEZsb2F0NjQgIC0+IDhcblxuICAoKiBUeXBlZCBhcnJheXMgKilcblxuICB0eXBlICgnYSwgJ2IpIHQgPSBKdi50XG4gIGV4dGVybmFsIHRvX2p2IDogKCdhLCAnYikgdCAtPiBKdi50ID0gXCIlaWRlbnRpdHlcIlxuICBleHRlcm5hbCBvZl9qdiA6IEp2LnQgLT4gKCdhLCAnYikgdCA9IFwiJWlkZW50aXR5XCJcblxuICBsZXQgY29uc19vZl90eXBlIDogdHlwZSBhIGIuIChhLCBiKSB0eXBlJyAtPiBKdi50ID0gZnVuY3Rpb25cbiAgfCBJbnQ4IC0+IEp2LmdldCBKdi5nbG9iYWwgXCJJbnQ4QXJyYXlcIlxuICB8IEludDE2IC0+IEp2LmdldCBKdi5nbG9iYWwgXCJJbnQxNkFycmF5XCJcbiAgfCBJbnQzMiAtPiBKdi5nZXQgSnYuZ2xvYmFsIFwiSW50MzJBcnJheVwiXG4gIHwgVWludDggLT4gSnYuZ2V0IEp2Lmdsb2JhbCBcIlVpbnQ4QXJyYXlcIlxuICB8IFVpbnQ4X2NsYW1wZWQgLT4gSnYuZ2V0IEp2Lmdsb2JhbCBcIlVpbnQ4Q2xhbXBlZEFycmF5XCJcbiAgfCBVaW50MTYgLT4gSnYuZ2V0IEp2Lmdsb2JhbCBcIlVpbnQxNkFycmF5XCJcbiAgfCBVaW50MzIgLT4gSnYuZ2V0IEp2Lmdsb2JhbCBcIlVpbnQzMkFycmF5XCJcbiAgfCBGbG9hdDMyIC0+IEp2LmdldCBKdi5nbG9iYWwgXCJGbG9hdDMyQXJyYXlcIlxuICB8IEZsb2F0NjQgLT4gSnYuZ2V0IEp2Lmdsb2JhbCBcIkZsb2F0NjRBcnJheVwiXG5cbiAgbGV0IGNyZWF0ZSB0IG4gPSBKdi5uZXcnIChjb25zX29mX3R5cGUgdCkgSnYuW3wgb2ZfaW50IG4gfF1cbiAgbGV0IG9mX2J1ZmZlciB0ID8oYnl0ZV9vZmZzZXQgPSAwKSA/bGVuZ3RoIGIgPVxuICAgIGxldCBhcmdzID0gbWF0Y2ggbGVuZ3RoIHdpdGhcbiAgICB8IE5vbmUgLT4gSnYuW3wgYjsgb2ZfaW50IGJ5dGVfb2Zmc2V0IHxdXG4gICAgfCBTb21lIGwgLT4gSnYuW3wgYjsgb2ZfaW50IGJ5dGVfb2Zmc2V0OyBvZl9pbnQgbCB8XVxuICAgIGluXG4gICAgSnYubmV3JyAoY29uc19vZl90eXBlIHQpIGFyZ3NcblxuICBsZXQgbGVuZ3RoIGEgPSBKdi5JbnQuZ2V0IGEgXCJsZW5ndGhcIlxuICBsZXQgdHlwZScgOiB0eXBlIGEgYi4gKGEsIGIpIHQgLT4gKGEsIGIpIHR5cGUnID0gZnVuIGEgLT5cbiAgICBsZXQgbSA9IE9iai5tYWdpYyBpblxuICAgIG1hdGNoIEpzdHIudG9fc3RyaW5nIChKdi5Kc3RyLmdldCAoSnYuZ2V0IGEgXCJjb25zdHJ1Y3RvclwiKSBcIm5hbWVcIikgd2l0aFxuICAgIHwgXCJJbnQ4QXJyYXlcIiAtPiBtIEludDhcbiAgICB8IFwiSW50MTZBcnJheVwiIC0+IG0gSW50MTZcbiAgICB8IFwiSW50MzJBcnJheVwiIC0+IG0gSW50MzJcbiAgICB8IFwiVWludDhBcnJheVwiIC0+IG0gVWludDhcbiAgICB8IFwiVWludDhDbGFtcGVkQXJyYXlcIiAtPiBtIFVpbnQ4X2NsYW1wZWRcbiAgICB8IFwiVWludDE2QXJyYXlcIiAtPiBtIFVpbnQxNlxuICAgIHwgXCJVaW50MzJBcnJheVwiIC0+IG0gVWludDMyXG4gICAgfCBcIkZsb2F0MzJBcnJheVwiIC0+IG0gRmxvYXQzMlxuICAgIHwgXCJGbG9hdDY0QXJyYXlcIiAtPiBtIEZsb2F0NjRcbiAgICB8IHMgLT5cbiAgICAgICAgbGV0IHQgPSBKc3RyLm9mX3N0cmluZyBzIGluXG4gICAgICAgIEp2LnRocm93IChKc3RyLmFwcGVuZCAoSnN0ci52IFwiVW5rbm93biB0eXBlZCBhcnJheTogXCIpIHQpXG5cbiAgbGV0IHRvX2p2X29mX3R5cGUgOiB0eXBlIGEgYi4gKGEsIGIpIHR5cGUnIC0+IGEgLT4gSnYudCA9IGZ1bmN0aW9uXG4gIHwgSW50OCAtPiBKdi5vZl9pbnRcbiAgfCBJbnQxNiAtPiBKdi5vZl9pbnRcbiAgfCBJbnQzMiAtPiBKdi5vZl9pbnQzMlxuICB8IFVpbnQ4IC0+IEp2Lm9mX2ludFxuICB8IFVpbnQ4X2NsYW1wZWQgLT4gSnYub2ZfaW50XG4gIHwgVWludDE2IC0+IEp2Lm9mX2ludFxuICB8IFVpbnQzMiAtPiBKdi5vZl9pbnQzMlxuICB8IEZsb2F0MzIgLT4gSnYub2ZfZmxvYXRcbiAgfCBGbG9hdDY0IC0+IEp2Lm9mX2Zsb2F0XG5cbiAgbGV0IG9mX2p2X29mX3R5cGUgOiB0eXBlIGEgYi4gKGEsIGIpIHR5cGUnIC0+IEp2LnQgLT4gYSA9IGZ1bmN0aW9uXG4gIHwgSW50OCAtPiBKdi50b19pbnRcbiAgfCBJbnQxNiAtPiBKdi50b19pbnRcbiAgfCBJbnQzMiAtPiBKdi50b19pbnQzMlxuICB8IFVpbnQ4IC0+IEp2LnRvX2ludFxuICB8IFVpbnQ4X2NsYW1wZWQgLT4gSnYudG9faW50XG4gIHwgVWludDE2IC0+IEp2LnRvX2ludFxuICB8IFVpbnQzMiAtPiBKdi50b19pbnQzMlxuICB8IEZsb2F0MzIgLT4gSnYudG9fZmxvYXRcbiAgfCBGbG9hdDY0IC0+IEp2LnRvX2Zsb2F0XG5cbiAgbGV0IGVsdF90b19qdiBhID0gdG9fanZfb2ZfdHlwZSAodHlwZScgYSlcbiAgbGV0IGVsdF9vZl9qdiBhID0gb2ZfanZfb2ZfdHlwZSAodHlwZScgYSlcblxuICAoKiBTZXR0aW5nLCBjb3B5aW5nIGFuZCBzbGljaW5nICopXG5cbiAgbGV0IGNvbXBpbGVkX3RvX3dhc20gPSBtYXRjaCBTeXMuYmFja2VuZF90eXBlIHdpdGhcbiAgfCBPdGhlciBcIndhc21fb2Zfb2NhbWxcIiAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG4gIGV4dGVybmFsIGdldCA6ICgnYSwgJ2IpIHQgLT4gaW50IC0+ICdhID0gXCJjYW1sX2pzX2dldFwiXG4gIGV4dGVybmFsIHNldCA6ICgnYSwgJ2IpIHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfanNfc2V0XCJcblxuICBsZXQgZ2V0ID1cbiAgICBpZiBjb21waWxlZF90b193YXNtXG4gICAgdGhlbiBmdW4gYSBpIC0+IGVsdF9vZl9qdiBhIChKdi5KYXJyYXkuZ2V0IChKdi5yZXByIGEpIGkpXG4gICAgZWxzZSBnZXRcblxuICBsZXQgc2V0ID1cbiAgICBpZiBjb21waWxlZF90b193YXNtXG4gICAgdGhlbiBmdW4gYSBpIHYgLT4gSnYuSmFycmF5LnNldCAoSnYucmVwciBhKSBpIChlbHRfdG9fanYgYSB2KVxuICAgIGVsc2Ugc2V0XG5cbiAgbGV0IHNldF90YXJyYXkgYSB+ZHN0IGIgPSBpZ25vcmUgQEAgSnYuY2FsbCBhIFwic2V0XCIgSnYuW3wgYjsgb2ZfaW50IGRzdCB8XVxuXG4gIGxldCBmaWxsID8oc3RhcnQgPSAwKSA/c3RvcCB2IGEgPVxuICAgIGxldCBzdG9wID0gbWF0Y2ggc3RvcCB3aXRoIE5vbmUgLT4gbGVuZ3RoIGEgfCBTb21lIHN0b3AgLT4gc3RvcCBpblxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGEgXCJmaWxsXCIgSnYuW3wgZWx0X3RvX2p2IGEgdjsgb2ZfaW50IHN0YXJ0OyBvZl9pbnQgc3RvcCB8XVxuXG4gIGxldCBjb3B5X3dpdGhpbiA/KHN0YXJ0ID0gMCkgP3N0b3AgfmRzdCBhID1cbiAgICBsZXQgc3RvcCA9IG1hdGNoIHN0b3Agd2l0aCBOb25lIC0+IGxlbmd0aCBhIHwgU29tZSBzdG9wIC0+IHN0b3AgaW5cbiAgICBpZ25vcmUgQEBcbiAgICBKdi5jYWxsIGEgXCJjb3B5V2l0aGluXCIgSnYuW3wgb2ZfaW50IGRzdDsgb2ZfaW50IHN0YXJ0OyBvZl9pbnQgc3RvcCB8XVxuXG4gIGxldCBzbGljZSA/KHN0YXJ0ID0gMCkgP3N0b3AgIGEgPVxuICAgIGxldCBzdG9wID0gbWF0Y2ggc3RvcCB3aXRoIE5vbmUgLT4gYnl0ZV9sZW5ndGggYSB8IFNvbWUgc3RvcCAtPiBzdG9wIGluXG4gICAgSnYuY2FsbCBhIFwic2xpY2VcIiBKdi5bfCBvZl9pbnQgc3RhcnQ7IG9mX2ludCBzdG9wIHxdXG5cbiAgbGV0IHN1YiA/KHN0YXJ0ID0gMCkgP3N0b3AgIGEgPVxuICAgIGxldCBzdG9wID0gbWF0Y2ggc3RvcCB3aXRoIE5vbmUgLT4gYnl0ZV9sZW5ndGggYSB8IFNvbWUgc3RvcCAtPiBzdG9wIGluXG4gICAgSnYuY2FsbCBhIFwic3ViYXJyYXlcIiBKdi5bfCBvZl9pbnQgc3RhcnQ7IG9mX2ludCBzdG9wIHxdXG5cbiAgKCogUHJlZGljYXRlcyAqKVxuXG4gIGxldCBmaW5kIHNhdCBhID1cbiAgICBsZXQgb2ZfanYgPSBlbHRfb2ZfanYgYSBpblxuICAgIGxldCBzYXQgdiBpID0gSnYub2ZfYm9vbCAoc2F0IGkgKG9mX2p2IHYpKSBpblxuICAgIEp2LnRvX29wdGlvbiBvZl9qdiAoSnYuY2FsbCBhIFwiZmluZFwiIEp2Llt8IGNhbGxiYWNrIH5hcml0eToyIHNhdCB8XSlcblxuICBsZXQgZmluZF9pbmRleCBzYXQgYSA9XG4gICAgbGV0IG9mX2p2ID0gZWx0X29mX2p2IGEgaW5cbiAgICBsZXQgc2F0IHYgaSA9IEp2Lm9mX2Jvb2wgKHNhdCBpIChvZl9qdiB2KSkgaW5cbiAgICBsZXQgaSA9IEp2LnRvX2ludCAoSnYuY2FsbCBhIFwiZmluZEluZGV4XCIgSnYuW3wgY2FsbGJhY2sgfmFyaXR5OjIgc2F0IHxdKSBpblxuICAgIGlmIGkgPSAtMSB0aGVuIE5vbmUgZWxzZSBTb21lIGlcblxuICBsZXQgZm9yX2FsbCBzYXQgYSA9XG4gICAgbGV0IG9mX2p2ID0gZWx0X29mX2p2IGEgaW5cbiAgICBsZXQgc2F0IHYgaSA9IEp2Lm9mX2Jvb2wgKHNhdCBpIChvZl9qdiB2KSkgaW5cbiAgICBKdi50b19ib29sIEBAIEp2LmNhbGwgYSBcImV2ZXJ5XCIgSnYuW3wgY2FsbGJhY2sgfmFyaXR5OjIgc2F0IHxdXG5cbiAgbGV0IGV4aXN0cyBzYXQgYSA9XG4gICAgbGV0IG9mX2p2ID0gZWx0X29mX2p2IGEgaW5cbiAgICBsZXQgc2F0IHYgaSA9IEp2Lm9mX2Jvb2wgKHNhdCBpIChvZl9qdiB2KSkgaW5cbiAgICBKdi50b19ib29sIEBAIEp2LmNhbGwgYSBcImV2ZXJ5XCIgSnYuW3wgY2FsbGJhY2sgfmFyaXR5OjIgc2F0IHxdXG5cbiAgKCogVHJhdmVyc2FscyAqKVxuXG4gIGxldCBmaWx0ZXIgc2F0IGEgPVxuICAgIGxldCBvZl9qdiA9IGVsdF9vZl9qdiBhIGluXG4gICAgbGV0IHNhdCB2IGkgPSBKdi5vZl9ib29sIChzYXQgaSAob2ZfanYgdikpIGluXG4gICAgSnYuY2FsbCBhIFwiZmlsdGVyXCIgSnYuW3wgY2FsbGJhY2sgfmFyaXR5OjIgc2F0IHxdXG5cbiAgbGV0IGl0ZXIgZiBhID1cbiAgICBsZXQgb2ZfanYgPSBlbHRfb2ZfanYgYSBpblxuICAgIGxldCBmIHYgaSA9IGYgaSAob2ZfanYgdikgaW5cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBhIFwiZm9yRWFjaFwiIEp2Llt8IGNhbGxiYWNrIH5hcml0eToyIGYgfF1cblxuICBsZXQgbWFwIGYgYSA9XG4gICAgbGV0IG9mX2p2ID0gZWx0X29mX2p2IGEgaW5cbiAgICBsZXQgZiB2ID0gZiAob2ZfanYgdikgaW5cbiAgICBKdi5jYWxsIGEgXCJtYXBcIiBKdi5bfCBjYWxsYmFjayB+YXJpdHk6MSBmIHxdXG5cbiAgbGV0IGZvbGRfbGVmdCBmIGFjYyBhID1cbiAgICBsZXQgb2ZfanYgPSBlbHRfb2ZfanYgYSBpblxuICAgIGxldCBmIGFjYyB2ID0gZiBhY2MgKG9mX2p2IHYpIGluXG4gICAgT2JqLm1hZ2ljIEBAIEp2LmNhbGwgYSBcInJlZHVjZVwiIFt8SnYuY2FsbGJhY2sgfmFyaXR5OjIgZjsgSnYucmVwciBhY2N8XVxuXG4gIGxldCBmb2xkX3JpZ2h0IGYgYSBhY2MgPVxuICAgIGxldCBvZl9qdiA9IGVsdF9vZl9qdiBhIGluXG4gICAgbGV0IGYgYWNjIHYgPSBmIChvZl9qdiB2KSBhY2MgaW5cbiAgICBPYmoubWFnaWMgQEAgSnYuY2FsbCBhIFwicmVkdWNlUmlnaHRcIiBbfEp2LmNhbGxiYWNrIH5hcml0eToyIGY7IEp2LnJlcHIgYWNjfF1cblxuICBsZXQgcmV2ZXJzZSBhID0gSnYuY2FsbCBhIFwicmV2ZXJzZVwiIEp2Llt8fF1cblxuICAoKiBUeXBlIGFsaWFzZXMgKilcblxuICB0eXBlIGludDggPSAoaW50LCBCaWdhcnJheS5pbnQ4X3NpZ25lZF9lbHQpIHRcbiAgdHlwZSBpbnQxNiA9IChpbnQsIEJpZ2FycmF5LmludDE2X3NpZ25lZF9lbHQpIHRcbiAgdHlwZSBpbnQzMiA9IChpbnQzMiwgQmlnYXJyYXkuaW50MzJfZWx0KSB0XG4gIHR5cGUgdWludDggPSAoaW50LCBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCkgdFxuICB0eXBlIHVpbnQ4X2NsYW1wZWQgPSAoaW50LCBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCkgdFxuICB0eXBlIHVpbnQxNiA9IChpbnQsIEJpZ2FycmF5LmludDE2X3Vuc2lnbmVkX2VsdCkgdFxuICB0eXBlIHVpbnQzMiA9IChpbnQzMiwgQmlnYXJyYXkuaW50MzJfZWx0KSB0XG4gIHR5cGUgZmxvYXQzMiA9IChmbG9hdCwgQmlnYXJyYXkuZmxvYXQzMl9lbHQpIHRcbiAgdHlwZSBmbG9hdDY0ID0gKGZsb2F0LCBCaWdhcnJheS5mbG9hdDY0X2VsdCkgdFxuXG4gICgqIENvbnZlcnRpbmcgKilcblxuICBsZXQgb2ZfdGFycmF5IHQgYSA9IEp2Lm5ldycgKGNvbnNfb2ZfdHlwZSB0KSBbfCBhIHxdXG4gIGxldCBvZl9pbnRfYXJyYXkgdCBhID0gSnYubmV3JyAoY29uc19vZl90eXBlIHQpIEp2Llt8IG9mX2FycmF5IEp2Lm9mX2ludCBhIHxdXG4gIGxldCBvZl9mbG9hdF9hcnJheSB0IGEgPSBKdi5uZXcnIChjb25zX29mX3R5cGUgdCkgSnYuW3wgb2ZfYXJyYXkgb2ZfZmxvYXQgYXxdXG4gIGxldCB0b19pbnRfanN0ciA/KHNlcCA9IEpzdHIuc3ApIGIgPVxuICAgIEp2LnRvX2pzdHIgQEAgSnYuY2FsbCBiIFwiam9pblwiIEp2Llt8IG9mX2pzdHIgc2VwIHxdXG5cbiAgbGV0IHRvX2hleF9qc3RyID8oc2VwID0gSnN0ci5lbXB0eSkgYSA9XG4gICAgbGV0IGhleCA9IEpzdHIudiBcIjAxMjM0NTY3ODlhYmNkZWZcIiBpblxuICAgIGxldCBkID0gRGF0YV92aWV3Lm9mX2J1ZmZlciAoYnVmZmVyIGEpIGluXG4gICAgbGV0IHMgPSByZWYgSnN0ci5lbXB0eSBpblxuICAgIGZvciBpID0gMCB0byBEYXRhX3ZpZXcuYnl0ZV9sZW5ndGggZCAtIDEgZG9cbiAgICAgIGxldCBiID0gRGF0YV92aWV3LmdldF91aW50OCBkIGkgaW5cbiAgICAgIGxldCBzZXAgPSBpZiBpID0gMCB0aGVuIEpzdHIuZW1wdHkgZWxzZSBzZXAgaW5cbiAgICAgIHMgOj0gSnN0ci4oIXMgKyBzZXAgKyBnZXRfanN0ciBoZXggKGIgbHNyIDQpICsgZ2V0X2pzdHIgaGV4IChiIGxhbmQgMHhGKSlcbiAgICBkb25lO1xuICAgICFzXG5cbiAgbGV0IHVpbnQ4X29mX2J1ZmZlciBiID0gb2ZfYnVmZmVyIFVpbnQ4IGJcblxuICBleHRlcm5hbCB0b19zdHJpbmcgOiB1aW50OCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX3VpbnQ4X2FycmF5XCJcblxuICBsZXQgb2ZfanN0ciBzID1cbiAgICBsZXQgZW5jID0gSnYubmV3JyAoSnYuZ2V0IEp2Lmdsb2JhbCBcIlRleHRFbmNvZGVyXCIpIFt8fF0gaW5cbiAgICBKdi5jYWxsIGVuYyBcImVuY29kZVwiIFt8IEp2Lm9mX2pzdHIgcyB8XVxuXG4gIGxldCB0b19qc3RyIGEgPVxuICAgIGxldCBhcmdzID0gW3wgSnYub2Zfc3RyaW5nIFwidXRmLThcIjsgSnYub2JqIFt8IFwiZmF0YWxcIiwgSnYudHJ1ZScgfF18XSBpblxuICAgIGxldCBkZWMgPSBKdi5uZXcnIChKdi5nZXQgSnYuZ2xvYmFsIFwiVGV4dERlY29kZXJcIikgYXJncyBpblxuICAgIG1hdGNoIEp2LmNhbGwgZGVjIFwiZGVjb2RlXCIgW3wgYSB8XSB3aXRoXG4gICAgfCBleGNlcHRpb24gSnYuRXJyb3IgZSAtPiBFcnJvciBlIHwgcyAtPiBPayAoSnYudG9fanN0ciBzKVxuXG4gIGxldCBvZl9iaW5hcnlfanN0ciBzID1cbiAgICBsZXQgY29kZSBzIGkgPVxuICAgICAgbGV0IGMgPSBKdi50b19pbnQgQEAgSnYuY2FsbCAoSnYub2ZfanN0ciBzKSBcImNoYXJDb2RlQXRcIiBbfEp2Lm9mX2ludCBpfF1pblxuICAgICAgaWYgYyA8PSAyNTUgdGhlbiBjIGVsc2VcbiAgICAgIEp2LnRocm93IEpzdHIuKG9mX2ludCBpICsgdiBcIjogY2hhciBjb2RlIFwiICsgb2ZfaW50IGMgKyB2IFwiZXhjZWVkcyAyNTVcIilcbiAgICBpblxuICAgIHRyeVxuICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChKc3RyLmxlbmd0aCBzKSBpblxuICAgICAgbGV0IGQgPSBEYXRhX3ZpZXcub2ZfYnVmZmVyIGIgaW5cbiAgICAgIGZvciBpID0gMCB0byBKc3RyLmxlbmd0aCBzIC0gMSBkbyBEYXRhX3ZpZXcuc2V0X2ludDggZCBpIChjb2RlIHMgaSkgZG9uZTtcbiAgICAgIE9rIChvZl9idWZmZXIgSW50OCBiKVxuICAgIHdpdGhcbiAgICB8IEp2LkVycm9yIGUgLT4gRXJyb3IgZVxuXG4gIGxldCB0b19iaW5hcnlfanN0ciBhID1cbiAgICBsZXQgY2hyIGIgPVxuICAgICAgSnYudG9fanN0ciBAQFxuICAgICAgSnYuY2FsbCAoSnYuZ2V0IEp2Lmdsb2JhbCBcIlN0cmluZ1wiKSBcImZyb21DaGFyQ29kZVwiIFt8IEp2Lm9mX2ludCBiIHxdXG4gICAgaW5cbiAgICBsZXQgZCA9IERhdGFfdmlldy5vZl9idWZmZXIgKGJ1ZmZlciBhKSBpblxuICAgIGxldCBzID0gcmVmIEpzdHIuZW1wdHkgaW5cbiAgICBmb3IgaSA9IDAgdG8gRGF0YV92aWV3LmJ5dGVfbGVuZ3RoIGQgLSAxIGRvXG4gICAgICBsZXQgYiA9IERhdGFfdmlldy5nZXRfdWludDggZCBpIGluXG4gICAgICBzIDo9IEpzdHIuKCFzICsgY2hyIGIpO1xuICAgIGRvbmU7XG4gICAgIXNcblxuICAoKiBCaWdhcnJheSAqKVxuXG4gIGxldCB0eXBlX3RvX2JpZ2FycmF5X2tpbmQgOiB0eXBlIGEgYi4gKGEsIGIpIHR5cGUnIC0+IChhLCBiKSBCaWdhcnJheS5raW5kID1cbiAgICBmdW5jdGlvblxuICAgIHwgSW50OCAtPiBCaWdhcnJheS5pbnQ4X3NpZ25lZFxuICAgIHwgSW50MTYgLT4gQmlnYXJyYXkuaW50MTZfc2lnbmVkXG4gICAgfCBJbnQzMiAtPiBCaWdhcnJheS5pbnQzMlxuICAgIHwgVWludDggLT4gQmlnYXJyYXkuaW50OF91bnNpZ25lZFxuICAgIHwgVWludDhfY2xhbXBlZCAtPiBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkXG4gICAgfCBVaW50MTYgLT4gQmlnYXJyYXkuaW50MTZfdW5zaWduZWRcbiAgICB8IFVpbnQzMiAtPiBCaWdhcnJheS5pbnQzMlxuICAgIHwgRmxvYXQzMiAtPiBCaWdhcnJheS5mbG9hdDMyXG4gICAgfCBGbG9hdDY0IC0+IEJpZ2FycmF5LmZsb2F0NjRcblxuICBsZXQgdHlwZV9vZl9iaWdhcnJheV9raW5kIDpcbiAgICB0eXBlIGEgYi4gKGEsIGIpIEJpZ2FycmF5LmtpbmQgLT4gKGEsIGIpIHR5cGUnIG9wdGlvbiA9XG4gICAgZnVuY3Rpb25cbiAgICB8IEJpZ2FycmF5LkludDhfc2lnbmVkIC0+IFNvbWUgSW50OFxuICAgIHwgQmlnYXJyYXkuSW50MTZfc2lnbmVkIC0+IFNvbWUgSW50MTZcbiAgICB8IEJpZ2FycmF5LkludDMyIC0+IFNvbWUgSW50MzJcbiAgICB8IEJpZ2FycmF5LkludDhfdW5zaWduZWQgLT4gU29tZSBVaW50OFxuICAgIHwgQmlnYXJyYXkuSW50MTZfdW5zaWduZWQgLT4gU29tZSBVaW50MTZcbiAgICB8IEJpZ2FycmF5LkZsb2F0MzIgLT4gU29tZSBGbG9hdDMyXG4gICAgfCBCaWdhcnJheS5GbG9hdDY0IC0+IFNvbWUgRmxvYXQ2NFxuICAgIHwgXyAtPiBOb25lXG5cbiAgZXh0ZXJuYWwgYmlnYXJyYXlfa2luZCA6ICgnYSwgJ2IpIHQgLT4gKCdhLCdiKSBCaWdhcnJheS5raW5kID1cbiAgICBcImNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheVwiXG5cbiAgZXh0ZXJuYWwgb2ZfYmlnYXJyYXkxIDpcbiAgICAoJ2EsICdiLCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuQXJyYXkxLnQgLT4gKCdhLCAnYikgdCA9XG4gICAgXCJjYW1sX2JhX3RvX3R5cGVkX2FycmF5XCJcblxuICBleHRlcm5hbCB0b19iaWdhcnJheTEgOlxuICAgICgnYSwgJ2IpIHQgLT4gKCdhLCAnYiwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkFycmF5MS50ID1cbiAgICBcImNhbWxfYmFfZnJvbV90eXBlZF9hcnJheVwiXG5cbiAgZXh0ZXJuYWwgb2ZfYmlnYXJyYXkgOlxuICAgICgnYSwgJ2IsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5HZW5hcnJheS50IC0+ICgnYSwgJ2IpIHQgPVxuICAgIFwiY2FtbF9iYV90b190eXBlZF9hcnJheVwiXG5lbmRcblxubW9kdWxlIEJsb2IgPSBzdHJ1Y3RcblxuICAoKiBFbnVtZXJhdGlvbnMgKilcblxuICBtb2R1bGUgRW5kaW5nX3R5cGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKc3RyLnRcbiAgICBsZXQgdHJhbnNwYXJlbnQgPSBKc3RyLnYgXCJ0cmFuc3BhcmVudFwiXG4gICAgbGV0IG5hdGl2ZSA9IEpzdHIudiBcIm5hdGl2ZVwiXG4gIGVuZFxuXG4gICgqIEluaXRpYWxpc2F0aW9uIG9iamVjdHMgKilcblxuICB0eXBlIGluaXQgPSBKdi50XG4gIGxldCBpbml0ID90eXBlJyA/ZW5kaW5ncyAoKSA9XG4gICAgbGV0IG8gPSBKdi5vYmogW3x8XSBpblxuICAgIEp2LkpzdHIuc2V0X2lmX3NvbWUgbyBcInR5cGVcIiB0eXBlJztcbiAgICBKdi5Kc3RyLnNldF9pZl9zb21lIG8gXCJlbmRpbmdzXCIgZW5kaW5ncztcbiAgICBvXG5cbiAgKCogQmxvYnMgKilcblxuICB0eXBlIHQgPSBKdi50XG4gIGluY2x1ZGUgKEp2LklkIDogSnYuQ09OViB3aXRoIHR5cGUgdCA6PSB0KVxuICBsZXQgYmxvYiA9IEp2LmdldCBKdi5nbG9iYWwgXCJCbG9iXCJcbiAgbGV0IG9mX2pzdHIgPyhpbml0ID0gSnYudW5kZWZpbmVkKSBzID1cbiAgICBsZXQgYSA9IEp2LkphcnJheS5jcmVhdGUgMSBpblxuICAgIEp2LkphcnJheS5zZXQgYSAwIChKdi5vZl9qc3RyIHMpO1xuICAgIEp2Lm5ldycgYmxvYiBbfCBhOyBpbml0IHxdXG5cbiAgbGV0IG9mX2phcnJheSA/KGluaXQgPSBKdi51bmRlZmluZWQpIGEgPSBKdi5uZXcnIGJsb2IgW3wgYTsgaW5pdCB8XVxuICBsZXQgb2ZfYXJyYXlfYnVmZmVyID8oaW5pdCA9IEp2LnVuZGVmaW5lZCkgYiA9XG4gICAgSnYubmV3JyBibG9iIFt8IEp2Lm9mX2p2X2FycmF5IFt8IFRhcnJheS5CdWZmZXIudG9fanYgYiB8XTsgaW5pdCB8XVxuXG4gIGxldCBieXRlX2xlbmd0aCBiID0gSnYuSW50LmdldCBiIFwic2l6ZVwiXG4gIGxldCB0eXBlJyBiID0gSnYuSnN0ci5nZXQgYiBcInR5cGVcIlxuICBsZXQgc2xpY2UgPyhzdGFydCA9IDApID9zdG9wID8odHlwZScgPSBKc3RyLmVtcHR5KSBiID1cbiAgICBsZXQgc3RvcCA9IG1hdGNoIHN0b3Agd2l0aCBOb25lIC0+IGJ5dGVfbGVuZ3RoIGIgfCBTb21lIHN0b3AgLT4gc3RvcCBpblxuICAgIEp2LmNhbGwgYiBcInNsaWNlXCIgSnYuW3wgb2ZfaW50IHN0YXJ0OyBvZl9pbnQgc3RvcDsgb2ZfanN0ciB0eXBlJyB8XVxuXG4gIGxldCBzdHJlYW0gYiA9IEp2LmdldCBiIFwic3RyZWFtXCJcblxuICAoKiBMb2FkaW5nICopXG5cbiAgdHlwZSBwcm9ncmVzcyA9IChmbG9hdCAqIGZsb2F0KSBvcHRpb24gLT4gdW5pdFxuXG4gICgqIElmIHdlIHdhbnQgcHJvZ3Jlc3Mgd2UgbmVlZCBhIEZpbGVSZWFkZXIgKilcblxuICBsZXQgZmlsZV9yZWFkZXIgP3Byb2dyZXNzIGNvbnYgPVxuICAgIGxldCBwcm9ncmVzc19kYXRhIGUgPVxuICAgICAgbGV0IGUgPSBFdi50b19qdiBlIGluXG4gICAgICBpZiBub3QgKEp2LkJvb2wuZ2V0IGUgXCJsZW5ndGhDb21wdXRhYmxlXCIpIHRoZW4gTm9uZSBlbHNlXG4gICAgICBsZXQgbG9hZGVkID0gSnYuRmxvYXQuZ2V0IGUgXCJsb2FkZWRcIiBpblxuICAgICAgbGV0IHRvdGFsID0gSnYuRmxvYXQuZ2V0IGUgXCJ0b3RhbFwiIGluXG4gICAgICBTb21lIChsb2FkZWQsIHRvdGFsKVxuICAgIGluXG4gICAgbGV0IHJlYWRlciA9IEp2Lm5ldycgKEp2LmdldCBKdi5nbG9iYWwgXCJGaWxlUmVhZGVyXCIpIFt8fF0gaW5cbiAgICBsZXQgZnV0LCBzZXRfZnV0ID0gRnV0LmNyZWF0ZSAoKSBpblxuICAgIGxldCBvayBlID1cbiAgICAgIGJlZ2luIG1hdGNoIHByb2dyZXNzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIHByb2dyZXNzIC0+IHByb2dyZXNzIChwcm9ncmVzc19kYXRhIGUpXG4gICAgICBlbmQ7XG4gICAgICBzZXRfZnV0IChPayAoY29udiAoSnYuZ2V0IHJlYWRlciBcInJlc3VsdFwiKSkpXG4gICAgaW5cbiAgICBsZXQgZXJyb3IgX2UgPSBzZXRfZnV0IChFcnJvciAoSnYudG9fZXJyb3IgKEp2LmdldCByZWFkZXIgXCJlcnJvclwiKSkpIGluXG4gICAgbGV0IHQgPSBFdi50YXJnZXRfb2ZfanYgcmVhZGVyIGluXG4gICAgbGV0IG9wdHMgPSBFdi5saXN0ZW5fb3B0cyB+b25jZTp0cnVlICgpIGluXG4gICAgaWdub3JlIChFdi5saXN0ZW4gfm9wdHMgRXYubG9hZCBvayB0IDogRXYubGlzdGVuZXIpO1xuICAgIGlnbm9yZSAoRXYubGlzdGVuIH5vcHRzIEV2LmVycm9yIGVycm9yIHQgOiBFdi5saXN0ZW5lcik7XG4gICAgYmVnaW4gbWF0Y2ggcHJvZ3Jlc3Mgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBwcm9ncmVzcyAtPlxuICAgICAgICBsZXQgcHJvZ3Jlc3MgZSA9IHByb2dyZXNzIChwcm9ncmVzc19kYXRhIGUpIGluXG4gICAgICAgIGlnbm9yZSAoRXYubGlzdGVuIEV2LnByb2dyZXNzIHByb2dyZXNzIHQgOiBFdi5saXN0ZW5lcik7XG4gICAgZW5kO1xuICAgIGZ1dCwgcmVhZGVyXG5cbiAgbGV0IGFycmF5X2J1ZmZlciA/cHJvZ3Jlc3MgYiA9IG1hdGNoIHByb2dyZXNzIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgICBGdXQub2ZfcHJvbWlzZSB+b2s6VGFycmF5LkJ1ZmZlci5vZl9qdiAoSnYuY2FsbCBiIFwiYXJyYXlCdWZmZXJcIiBbfHxdKVxuICB8IFNvbWUgXyAtPlxuICAgICAgbGV0IGZ1dCwgcmVhZGVyID0gZmlsZV9yZWFkZXIgP3Byb2dyZXNzIFRhcnJheS5CdWZmZXIub2ZfanYgaW5cbiAgICAgIGlnbm9yZSAoSnYuY2FsbCByZWFkZXIgXCJyZWFkQXNBcnJheUJ1ZmZlclwiIFt8IGIgfF0pO1xuICAgICAgZnV0XG5cbiAgbGV0IHRleHQgP3Byb2dyZXNzIGIgPSBtYXRjaCBwcm9ncmVzcyB3aXRoXG4gIHwgTm9uZSAtPiBGdXQub2ZfcHJvbWlzZSB+b2s6SnYudG9fanN0ciAoSnYuY2FsbCBiIFwidGV4dFwiIFt8fF0pXG4gIHwgU29tZSBfIC0+XG4gICAgICBsZXQgZnV0LCByZWFkZXIgPSBmaWxlX3JlYWRlciA/cHJvZ3Jlc3MgSnYudG9fanN0ciBpblxuICAgICAgaWdub3JlIChKdi5jYWxsIHJlYWRlciBcInJlYWRBc1RleHRcIiBbfCBiIHxdKTtcbiAgICAgIGZ1dFxuXG4gIGxldCBkYXRhX3VyaSA/cHJvZ3Jlc3MgYiA9XG4gICAgKCogVGhlcmUncyBubyBkaXJlY3Qgc3VwcG9ydCBmb3IgZGF0YSB1cmxzIGluIGJsb2Igb2JqZWN0cy5cbiAgICAgICBXZSBkbyB0aGlzIHZpYSB0aGUgRmlsZVJlYWRlciBBUEkuICopXG4gICAgbGV0IGZ1dCwgcmVhZGVyID0gZmlsZV9yZWFkZXIgP3Byb2dyZXNzIEp2LnRvX2pzdHIgaW5cbiAgICBpZ25vcmUgKEp2LmNhbGwgcmVhZGVyIFwicmVhZEFzRGF0YVVSTFwiIFt8IGIgfF0pO1xuICAgIGZ1dFxuZW5kXG5cbm1vZHVsZSBGaWxlID0gc3RydWN0XG4gIHR5cGUgdCA9IEp2LnRcbiAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgKCogSW5pdGlhbGlzYXRpb24gb2JqZWN0cyAqKVxuXG4gIHR5cGUgaW5pdCA9IEp2LnRcbiAgbGV0IGluaXQgP2Jsb2JfaW5pdCA/bGFzdF9tb2RpZmllZF9tcyAoKSA9XG4gICAgbGV0IG8gPSBtYXRjaCBibG9iX2luaXQgd2l0aCBOb25lIC0+IEp2Lm9iaiBbfHxdIHwgU29tZSBiIC0+IEp2LnJlcHIgYiBpblxuICAgIEp2LkludC5zZXRfaWZfc29tZSBvIFwibGFzdE1vZGlmaWVkXCIgbGFzdF9tb2RpZmllZF9tcztcbiAgICBvXG5cbiAgbGV0IGZpbGUgPSBKdi5nZXQgSnYuZ2xvYmFsIFwiRmlsZVwiXG4gIGxldCBvZl9ibG9iID8oaW5pdCA9IEp2Lm9iaiBbfHxdKSBuYW1lIGIgPVxuICAgIEp2Lm5ldycgZmlsZSBbfEJsb2IudG9fanYgYjsgSnYub2ZfanN0ciBuYW1lOyBpbml0fF1cblxuICBsZXQgbmFtZSBmID0gSnYuSnN0ci5nZXQgZiBcIm5hbWVcIlxuICBsZXQgcmVsYXRpdmVfcGF0aCBmID1cbiAgICBsZXQgcCA9IEp2LmZpbmRfbWFwIEp2LnRvX2pzdHIgZiBcIndlYmtpdFJlbGF0aXZlUGF0aFwiIGluXG4gICAgT3B0aW9uLnZhbHVlIH5kZWZhdWx0OkpzdHIuZW1wdHkgcFxuXG4gIGxldCBsYXN0X21vZGlmaWVkX21zIGYgPSBKdi5JbnQuZ2V0IGYgXCJsYXN0TW9kaWZpZWRcIlxuICBleHRlcm5hbCBhc19ibG9iIDogdCAtPiBCbG9iLnQgPSBcIiVpZGVudGl0eVwiXG5lbmRcblxubW9kdWxlIEJhc2U2NCA9IHN0cnVjdFxuXG4gIHR5cGUgZGF0YSA9IEpzdHIudFxuXG4gIGxldCBkYXRhX3V0Zl84X29mX2pzdHIgcyA9IFRhcnJheS50b19iaW5hcnlfanN0ciAoVGFycmF5Lm9mX2pzdHIgcylcbiAgbGV0IGRhdGFfdXRmXzhfdG9fanN0ciBkID0gbWF0Y2ggVGFycmF5Lm9mX2JpbmFyeV9qc3RyIGQgd2l0aFxuICB8IEVycm9yIF8gYXMgZSAtPiBlIHwgT2sgdCAtPiBUYXJyYXkudG9fanN0ciB0XG5cbiAgbGV0IGRhdGFfb2ZfYmluYXJ5X2pzdHIgPSBGdW4uaWRcbiAgbGV0IGRhdGFfdG9fYmluYXJ5X2pzdHIgPSBGdW4uaWRcblxuICBsZXQgZW5jb2RlIGJzID1cbiAgICBtYXRjaCBKdi5hcHBseSAoSnYuZ2V0IEp2Lmdsb2JhbCBcImJ0b2FcIikgSnYuW3wgb2ZfanN0ciBicyB8XSB3aXRoXG4gICAgfCBleGNlcHRpb24gSnYuRXJyb3IgZSAtPiBFcnJvciBlXG4gICAgfCB2IC0+IE9rIChKdi50b19qc3RyIHYpXG5cbiAgbGV0IGRlY29kZSBzID1cbiAgICBtYXRjaCBKdi5hcHBseSAoSnYuZ2V0IEp2Lmdsb2JhbCBcImF0b2JcIikgSnYuW3wgb2ZfanN0ciBzIHxdIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBKdi5FcnJvciBlIC0+IEVycm9yIGVcbiAgICB8IHYgLT4gT2sgKEp2LnRvX2pzdHIgdilcbmVuZFxuXG5tb2R1bGUgSnNvbiA9IHN0cnVjdFxuICB0eXBlIHQgPSBKdi50XG4gIGxldCBqc29uID0gSnYuZ2V0IEp2Lmdsb2JhbCBcIkpTT05cIlxuICBsZXQgZW5jb2RlIHYgPSBKdi50b19qc3RyIChKdi5jYWxsIGpzb24gXCJzdHJpbmdpZnlcIiBbfCB2IHxdKVxuICBsZXQgZGVjb2RlIHMgPSBtYXRjaCBKdi5jYWxsIGpzb24gXCJwYXJzZVwiIFt8SnYub2ZfanN0ciBzfF0gd2l0aFxuICB8IGV4Y2VwdGlvbiBKdi5FcnJvciBlIC0+IEVycm9yIGUgfCB2IC0+IE9rIHZcbmVuZFxuXG5tb2R1bGUgVXJpID0gc3RydWN0XG4gIHR5cGUgdCA9IEp2LnRcbiAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgbGV0IGVuY29kZSA9IEp2LmdldCBKdi5nbG9iYWwgXCJlbmNvZGVVUklcIlxuICBsZXQgZGVjb2RlID0gSnYuZ2V0IEp2Lmdsb2JhbCBcImRlY29kZVVSSVwiXG4gIGxldCBlbmNvZGVfY29tcG9uZW50ID0gSnYuZ2V0IEp2Lmdsb2JhbCBcImVuY29kZVVSSUNvbXBvbmVudFwiXG4gIGxldCBkZWNvZGVfY29tcG9uZW50ID0gSnYuZ2V0IEp2Lmdsb2JhbCBcImRlY29kZVVSSUNvbXBvbmVudFwiXG5cbiAgbGV0IHVybCA9IEp2LmdldCBKdi5nbG9iYWwgXCJVUkxcIlxuXG4gIGxldCB2ID9iYXNlIHMgPSBtYXRjaCBiYXNlIHdpdGhcbiAgfCBOb25lIC0+IEp2Lm5ldycgdXJsIFt8IEp2Lm9mX2pzdHIgcyB8XVxuICB8IFNvbWUgYiAtPiBKdi5uZXcnIHVybCBbfCBKdi5vZl9qc3RyIHM7IEp2Lm9mX2pzdHIgYiB8XVxuXG4gIGxldCB3aXRoX3VyaSA/c2NoZW1lID9ob3N0ID9wb3J0ID9wYXRoID9xdWVyeSA/ZnJhZ21lbnQgdSA9XG4gICAgbGV0IHUgPSBKdi5uZXcnIHVybCBbfCB1IHxdIGluXG4gICAgdHJ5XG4gICAgICBKdi5Kc3RyLnNldF9pZl9zb21lIHUgXCJwcm90b2NvbFwiIHNjaGVtZTtcbiAgICAgIEp2LkpzdHIuc2V0X2lmX3NvbWUgdSBcImhvc3RuYW1lXCIgaG9zdDtcbiAgICAgIGJlZ2luIG1hdGNoIHBvcnQgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgcCAtPiBKdi5Kc3RyLnNldF9pZl9zb21lIHUgXCJwb3J0XCIgKE9wdGlvbi5tYXAgSnN0ci5vZl9pbnQgcClcbiAgICAgIGVuZDtcbiAgICAgIEp2LkpzdHIuc2V0X2lmX3NvbWUgdSBcInBhdGhuYW1lXCIgcGF0aDtcbiAgICAgIEp2LkpzdHIuc2V0X2lmX3NvbWUgdSBcInNlYXJjaFwiIHF1ZXJ5O1xuICAgICAgSnYuSnN0ci5zZXRfaWZfc29tZSB1IFwiaGFzaFwiIGZyYWdtZW50O1xuICAgICAgT2sgdVxuICAgIHdpdGggSnYuRXJyb3IgZSAtPiBFcnJvciBlXG5cbiAgbGV0IHNjaGVtZSB1ID1cbiAgICBsZXQgcCA9IEp2LkpzdHIuZ2V0IHUgXCJwcm90b2NvbFwiIGluXG4gICAgaWYgSnN0ci5sZW5ndGggcCA8PiAwIHRoZW4gSnN0ci5zbGljZSBwIH5zdG9wOigtMSkgKCogcmVtb3ZlICc6JyAqKSBlbHNlIHBcblxuICBsZXQgaG9zdCB1ID0gSnYuSnN0ci5nZXQgdSBcImhvc3RuYW1lXCJcbiAgbGV0IHBvcnQgdSA9XG4gICAgbGV0IHAgPSBKdi5Kc3RyLmdldCB1IFwicG9ydFwiIGluXG4gICAgaWYgSnN0ci5pc19lbXB0eSBwIHRoZW4gTm9uZSBlbHNlIEpzdHIudG9faW50IHBcblxuICBsZXQgc2xhc2ggPSBKc3RyLnYgXCIvXCJcblxuICBsZXQgcGF0aCB1ID0gSnYuSnN0ci5nZXQgdSBcInBhdGhuYW1lXCJcblxuICBsZXQgcXVlcnkgdSA9XG4gICAgbGV0IHEgPSBKdi5Kc3RyLmdldCB1IFwic2VhcmNoXCIgaW5cbiAgICBpZiBKc3RyLmlzX2VtcHR5IHEgdGhlbiBxIGVsc2UgSnN0ci5zbGljZSBxIH5zdGFydDoxICgqIHJlbW92ZSAnPycgKilcblxuICBsZXQgZnJhZ21lbnQgdSA9XG4gICAgbGV0IGYgPSBKdi5Kc3RyLmdldCB1IFwiaGFzaFwiIGluXG4gICAgaWYgSnN0ci5pc19lbXB0eSBmIHRoZW4gZiBlbHNlIEpzdHIuc2xpY2UgZiB+c3RhcnQ6MSAoKiByZW1vdmUgJyMnICopXG5cbiAgKCogUGF0aCAqKVxuXG4gIHR5cGUgcGF0aCA9IEpzdHIudCBsaXN0XG5cbiAgbGV0IHBhdGhfc2VnbWVudHMgdSA9XG4gICAgbGV0IGRlY29kZV9zZWcgcyA9IEp2Lih0b19qc3RyIChhcHBseSBkZWNvZGVfY29tcG9uZW50IFt8IG9mX2pzdHIgcyB8XSkpIGluXG4gICAgdHJ5XG4gICAgICBsZXQgcCA9IHBhdGggdSBhbmQgcHJlZml4ID0gc2xhc2ggaW5cbiAgICAgIGxldCBwID0gaWYgSnN0ci5zdGFydHNfd2l0aCB+cHJlZml4IHAgdGhlbiBKc3RyLnNsaWNlIHAgfnN0YXJ0OjEgZWxzZSBwIGluXG4gICAgICBPayAoTGlzdC5tYXAgZGVjb2RlX3NlZyAoSnN0ci5jdXRzIH5zZXA6c2xhc2ggcCkpXG4gICAgd2l0aCBKdi5FcnJvciBlIC0+IEVycm9yIGVcblxuICBsZXQgd2l0aF9wYXRoX3NlZ21lbnRzIHUgc2VncyA9XG4gICAgbGV0IGVuY29kZV9zZWcgcyA9XG4gICAgICBKc3RyLmFwcGVuZCBzbGFzaCBKdi4odG9fanN0ciAoYXBwbHkgZW5jb2RlX2NvbXBvbmVudCBbfCBvZl9qc3RyIHMgfF0pKVxuICAgIGluXG4gICAgdHJ5XG4gICAgICBsZXQgdSA9IEp2Lm5ldycgdXJsIFt8IHUgfF0gaW5cbiAgICAgIGxldCBwYXRoID0gSnN0ci5jb25jYXQgKExpc3QubWFwIGVuY29kZV9zZWcgc2VncykgaW5cbiAgICAgIEp2LnNldCB1IFwicGF0aG5hbWVcIiAoSnYub2ZfanN0ciBwYXRoKTtcbiAgICAgIE9rIHVcbiAgICB3aXRoIEp2LkVycm9yIGUgLT4gRXJyb3IgZVxuXG4gICgqIFBhcmFtcyAqKVxuXG4gIG1vZHVsZSBQYXJhbXMgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKdi50XG4gICAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICBsZXQgdXNwID0gSnYuZ2V0IEp2Lmdsb2JhbCBcIlVSTFNlYXJjaFBhcmFtc1wiXG4gICAgbGV0IGlzX2VtcHR5IHAgPSBKdi5JdC5yZXN1bHRfZG9uZSAoSnYuSXQubmV4dCAoSnYuY2FsbCBwIFwiZW50cmllc1wiIFt8fF0pKVxuICAgIGxldCBtZW0gayBwID0gSnYudG9fYm9vbCAoSnYuY2FsbCBwIFwiaGFzXCIgW3xKdi5vZl9qc3RyIGt8XSlcbiAgICBsZXQgZmluZCBrIHAgPSBKdi50b19vcHRpb24gSnYudG9fanN0ciAoSnYuY2FsbCBwIFwiZ2V0XCIgW3xKdi5vZl9qc3RyIGt8XSlcbiAgICBsZXQgZmluZF9hbGwgayBwID0gSnYudG9fanN0cl9saXN0IChKdi5jYWxsIHAgXCJnZXRBbGxcIiBbfEp2Lm9mX2pzdHIga3xdKVxuICAgIGxldCBmb2xkIGYgcCBhY2MgPVxuICAgICAgbGV0IGtleSA9IEp2LnRvX2pzdHIgaW5cbiAgICAgIGxldCB2YWx1ZSA9IEp2LnRvX2pzdHIgaW5cbiAgICAgIEp2Lkl0LmZvbGRfYmluZGluZ3MgfmtleSB+dmFsdWUgZiAoSnYuY2FsbCBwIFwiZW50cmllc1wiIFt8fF0pIGFjY1xuXG4gICAgbGV0IG9mX2pzdHIgcyA9XG4gICAgICAoKiBOb3RlIHRoYXQgaXQgc2VlbXMgdGhhdCB0aGlzIG5ldmVyIGVycm9ycy4gQXQgbGVhc3QgZGVjb2RpbmdcbiAgICAgICAgIGVycm9ycyBzZWVtIHRvIGJlIHJlcGxhY2VkIGJ5IFUrRkZGRC4gKilcbiAgICAgIEp2Lm5ldycgdXNwIFt8IEp2Lm9mX2pzdHIgc3xdXG5cbiAgICBsZXQgdG9fanN0ciBwID0gSnYudG9fanN0ciAoSnYuY2FsbCBwIFwidG9TdHJpbmdcIiBbfHxdKVxuICAgIGxldCBvZl9hc3NvYyBsID1cbiAgICAgIGxldCBwID0gb2ZfanN0ciBKc3RyLmVtcHR5IGluXG4gICAgICBsZXQgYXBwIHAgKGssIHYpID1cbiAgICAgICAgaWdub3JlIChKdi5jYWxsIHAgXCJhcHBlbmRcIiBKdi5bfG9mX2pzdHIgazsgb2ZfanN0ciB2fF0pXG4gICAgICBpblxuICAgICAgTGlzdC5pdGVyIChhcHAgcCkgbDsgcFxuXG4gICAgbGV0IHRvX2Fzc29jIHAgPSBMaXN0LnJldiAoZm9sZCAoZnVuIGsgdiBhY2MgLT4gKGssIHYpIDo6IGFjYykgcCBbXSlcbiAgICBsZXQgb2Zfb2JqIG8gPSBKdi5uZXcnIHVzcCBbfCBvIHxdXG4gIGVuZFxuXG4gIGxldCBxdWVyeV9wYXJhbXMgdSA9IFBhcmFtcy5vZl9qc3RyIChxdWVyeSB1KVxuICBsZXQgd2l0aF9xdWVyeV9wYXJhbXMgdSBwcyA9XG4gICAgbGV0IHUgPSBKdi5uZXcnIHVybCBbfCB1IHxdIGluXG4gICAgSnYuSnN0ci5zZXQgdSBcInNlYXJjaFwiIChQYXJhbXMudG9fanN0ciBwcyk7XG4gICAgdVxuXG4gIGxldCBmcmFnbWVudF9wYXJhbXMgdSA9IFBhcmFtcy5vZl9qc3RyIChmcmFnbWVudCB1KVxuICBsZXQgd2l0aF9mcmFnbWVudF9wYXJhbXMgdSBwcyA9XG4gICAgbGV0IHUgPSBKdi5uZXcnIHVybCBbfCB1IHxdIGluXG4gICAgSnYuSnN0ci5zZXQgdSBcImhhc2hcIiAoUGFyYW1zLnRvX2pzdHIgcHMpO1xuICAgIHVcblxuICAoKiBDb252ZXJ0aW5nICopXG5cbiAgbGV0IHRvX2pzdHIgdSA9IEp2LnRvX2pzdHIgKEp2LmNhbGwgdSBcInRvU3RyaW5nXCIgW3x8XSlcbiAgbGV0IG9mX2pzdHIgP2Jhc2UgcyA9IG1hdGNoIHYgP2Jhc2UgcyB3aXRoXG4gIHwgZXhjZXB0aW9uIEp2LkVycm9yIGUgLT4gRXJyb3IgZSB8IHYgLT4gT2sgdlxuXG4gICgqIFBlcmNlbnQtZW5jb2RpbmcgKilcblxuICBsZXQgY29kZSBmIHMgPSBtYXRjaCBKdi5hcHBseSBmIFt8SnYub2ZfanN0ciBzfF0gd2l0aFxuICB8IGV4Y2VwdGlvbiBKdi5FcnJvciBlIC0+IEVycm9yIGVcbiAgfCB2IC0+IE9rIChKdi50b19qc3RyIHYpXG5cbiAgbGV0IGVuY29kZSBzID0gY29kZSBlbmNvZGUgc1xuICBsZXQgZGVjb2RlIHMgPSBjb2RlIGRlY29kZSBzXG4gIGxldCBlbmNvZGVfY29tcG9uZW50IHMgPSBjb2RlIGVuY29kZV9jb21wb25lbnQgc1xuICBsZXQgZGVjb2RlX2NvbXBvbmVudCBzID0gY29kZSBkZWNvZGVfY29tcG9uZW50IHNcbmVuZFxuXG5tb2R1bGUgUmVnZXhwID0gc3RydWN0XG4gIG1vZHVsZSBSZXN1bHQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKdi50XG4gICAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICBsZXQgaW5wdXQgciA9IEp2LkpzdHIuZ2V0IHIgXCJpbnB1dFwiXG4gICAgbGV0IG1hdGNoJyByID0gSnYudG9fanN0ciAoSnYuSmFycmF5LmdldCByIDApXG4gICAgbGV0IHN0YXJ0X2luZGV4IHIgPSBKdi5JbnQuZ2V0IHIgXCJpbmRleFwiXG4gICAgbGV0IHN0b3BfaW5kZXggciA9IHN0YXJ0X2luZGV4IHIgKyBKc3RyLmxlbmd0aCAobWF0Y2gnIHIpXG4gICAgbGV0IGZvbGRfZ3JvdXBzIGYgciBhY2MgPVxuICAgICAgbGV0IGFjYyA9IHJlZiBhY2MgaW5cbiAgICAgIGZvciBpID0gMSAoKiAwIGlzIHRoZSB3aG9sZSBtYXRjaCAqKSB0byBKdi5KYXJyYXkubGVuZ3RoIHIgLSAxIGRvXG4gICAgICAgIGFjYyA6PSBmIChKdi50b19qc3RyIChKdi5KYXJyYXkuZ2V0IHIgaSkpICFhY2NcbiAgICAgIGRvbmU7XG4gICAgICAhYWNjXG5cbiAgICBsZXQgZm9sZF9ncm91cF9pbmRpY2VzIGYgciBhY2MgPSBtYXRjaCBKdi5maW5kIHIgXCJpbmRpY2VzXCIgd2l0aFxuICAgIHwgTm9uZSAtPiBhY2MgKCogaGFwcGVucyBpZiByZWdleHAgaGFkIG5vIFtkXSBmbGFnLiAqKVxuICAgIHwgU29tZSBhIC0+XG4gICAgICAgIGxldCBhY2MgPSByZWYgYWNjIGluXG4gICAgICAgIGZvciBpID0gMSAoKiAwIGlzIHRoZSB3aG9sZSBtYXRjaCAqKSB0byBKdi5KYXJyYXkubGVuZ3RoIGEgLSAxIGRvXG4gICAgICAgICAgbGV0IHJhbmdlID0gSnYuSmFycmF5LmdldCBhIGkgaW5cbiAgICAgICAgICBsZXQgc3RhcnQgPSBKdi50b19pbnQgKEp2LkphcnJheS5nZXQgcmFuZ2UgMCkgaW5cbiAgICAgICAgICBsZXQgc3RvcCA9IEp2LnRvX2ludCAoSnYuSmFycmF5LmdldCByYW5nZSAxKSBpblxuICAgICAgICAgIGFjYyA6PSBmIH5zdGFydCB+c3RvcCAhYWNjXG4gICAgICAgIGRvbmU7XG4gICAgICAgICFhY2NcblxuICAgICgqIE5vIGl0ZXJhdG9yIHByb3RvY29sIG9uIE9iamVjdCBtZW1iZXJzID8gKilcbiAgICBsZXQgb2JqX2VudHJpZXMganYgPSBKdi5jYWxsIChKdi5nZXQgSnYuZ2xvYmFsIFwiT2JqZWN0XCIpIFwiZW50cmllc1wiIFt8IGp2IHxdXG4gICAgbGV0IG9ial9rZXkgYSA9IEp2LkphcnJheS5nZXQgYSAwXG4gICAgbGV0IG9ial92YWx1ZSBhID0gSnYuSmFycmF5LmdldCBhIDFcblxuICAgIGxldCBmb2xkX25hbWVkX2dyb3VwcyBmIHIgYWNjID0gbWF0Y2ggSnYuZmluZCByIFwiZ3JvdXBzXCIgd2l0aFxuICAgIHwgTm9uZSAtPiBhY2NcbiAgICB8IFNvbWUgZ3JvdXBzIC0+XG4gICAgICAgIGxldCBlbnRyaWVzID0gb2JqX2VudHJpZXMgZ3JvdXBzIGluXG4gICAgICAgIGxldCBhY2MgPSByZWYgYWNjIGluXG4gICAgICAgIGZvciBpID0gMCB0byBKdi5KYXJyYXkubGVuZ3RoIGVudHJpZXMgLSAxIGRvXG4gICAgICAgICAgbGV0IGVudHJ5ID0gSnYuSmFycmF5LmdldCBlbnRyaWVzIGkgaW5cbiAgICAgICAgICBsZXQgbWF0Y2gnID0gb2JqX3ZhbHVlIGVudHJ5IGluXG4gICAgICAgICAgaWYgSnYuaXNfdW5kZWZpbmVkIG1hdGNoJyB0aGVuICgpIGVsc2VcbiAgICAgICAgICBsZXQgbmFtZSA9IEp2LnRvX2pzdHIgKG9ial9rZXkgZW50cnkpIGluXG4gICAgICAgICAgYWNjIDo9IGYgfm5hbWUgKEp2LnRvX2pzdHIgbWF0Y2gnKSAhYWNjXG4gICAgICAgIGRvbmU7XG4gICAgICAgICFhY2NcblxuICAgIGxldCBmb2xkX25hbWVkX2dyb3VwX2luZGljZXMgZiByIGFjYyA9IG1hdGNoIEp2LmZpbmQgciBcImluZGljZXNcIiB3aXRoXG4gICAgfCBOb25lIC0+IGFjYyAoKiBoYXBwZW5zIGlmIHJlZ2V4cCBoYWQgbm8gW2RdIGZsYWcuICopXG4gICAgfCBTb21lIGEgLT5cbiAgICAgICAgbWF0Y2ggSnYuZmluZCBhIFwiZ3JvdXBzXCIgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgIHwgU29tZSBncm91cHMgLT5cbiAgICAgICAgICAgIGxldCBlbnRyaWVzID0gb2JqX2VudHJpZXMgZ3JvdXBzIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gcmVmIGFjYyBpblxuICAgICAgICAgICAgZm9yIGkgPSAwIHRvIEp2LkphcnJheS5sZW5ndGggZW50cmllcyAtIDEgZG9cbiAgICAgICAgICAgICAgbGV0IGVudHJ5ID0gSnYuSmFycmF5LmdldCBlbnRyaWVzIGkgaW5cbiAgICAgICAgICAgICAgbGV0IHJhbmdlID0gb2JqX3ZhbHVlIGVudHJ5IGluXG4gICAgICAgICAgICAgIGlmIEp2LmlzX3VuZGVmaW5lZCByYW5nZSB0aGVuICgpIGVsc2VcbiAgICAgICAgICAgICAgbGV0IG5hbWUgPSBKdi50b19qc3RyIChvYmpfa2V5IGVudHJ5KSBpblxuICAgICAgICAgICAgICBsZXQgc3RhcnQgPSBKdi50b19pbnQgKEp2LkphcnJheS5nZXQgcmFuZ2UgMCkgaW5cbiAgICAgICAgICAgICAgbGV0IHN0b3AgPSBKdi50b19pbnQgKEp2LkphcnJheS5nZXQgcmFuZ2UgMSkgaW5cbiAgICAgICAgICAgICAgYWNjIDo9IGYgfm5hbWUgfnN0YXJ0IH5zdG9wICFhY2NcbiAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAhYWNjXG4gIGVuZFxuXG4gIHR5cGUgdCA9IEp2LnRcbiAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgbGV0IHJlZ2V4cCA9IEp2LmdldCBKdi5nbG9iYWwgXCJSZWdFeHBcIlxuICBsZXQgZXNjYXBlIHMgPSBKdi50b19qc3RyIChKdi5jYWxsIHJlZ2V4cCBcImVzY2FwZVwiIEp2Llt8b2ZfanN0ciBzfF0pXG4gIGxldCBjcmVhdGUgP2ZsYWdzIHMgPVxuICAgIGxldCBmbGFncyA9IEp2Lm9mX29wdGlvbiB+bm9uZTpKdi51bmRlZmluZWQgSnYub2ZfanN0ciBmbGFncyBpblxuICAgIEp2Lm5ldycgcmVnZXhwIEp2Llt8b2ZfanN0ciBzOyBmbGFnc3xdXG5cbiAgbGV0IGV4ZWMgciBzID1cbiAgICBKdi50b19vcHRpb24gUmVzdWx0Lm9mX2p2IEBAIEp2LmNhbGwgciBcImV4ZWNcIiBKdi5bfG9mX2pzdHIgc3xdXG5cbiAgbGV0IG1hdGNoJyByIHMgPVxuICAgIEp2LnRvX29wdGlvbiBSZXN1bHQub2ZfanYgQEAgSnYuY2FsbCAoSnYub2ZfanN0ciBzKSBcIm1hdGNoXCIgSnYuW3xyfF1cblxuICBsZXQgZm9sZF9tYXRjaGVzIHIgZiBzIGFjYyA9XG4gICAgbGV0IGl0ZXIgPSBKdi5jYWxsIChKdi5vZl9qc3RyIHMpIFwibWF0Y2hBbGxcIiBKdi5bfHJ8XSBpblxuICAgIEp2Lkl0LmZvbGQgUmVzdWx0Lm9mX2p2IGYgaXRlciBhY2NcblxuICBsZXQgcmVwbGFjZSByIH5ieSBzID1cbiAgICBKdi50b19qc3RyIEBAIEp2LmNhbGwgKEp2Lm9mX2pzdHIgcykgXCJyZXBsYWNlXCIgSnYuW3xyOyBvZl9qc3RyIGJ5fF1cblxuICBsZXQgcmVwbGFjZV9hbGwgciB+YnkgcyA9XG4gICAgSnYudG9fanN0ciBAQCBKdi5jYWxsIChKdi5vZl9qc3RyIHMpIFwicmVwbGFjZUFsbFwiIEp2Llt8cjsgb2ZfanN0ciBieXxdXG5cbiAgbGV0IHNlYXJjaCByIHMgPVxuICAgIEp2LnRvX2ludCBAQCBKdi5jYWxsIChKdi5vZl9qc3RyIHMpIFwic2VhcmNoXCIgSnYuW3xyfF1cblxuICBsZXQgc3BsaXQgP2xpbWl0IHIgcyA9IG1hdGNoIGxpbWl0IHdpdGhcbiAgfCBOb25lIC0+IEp2LnRvX2pzdHJfYXJyYXkgQEAgSnYuY2FsbCAoSnYub2ZfanN0ciBzKSBcInNwbGl0XCIgSnYuW3xyfF1cbiAgfCBTb21lIGxpbWl0IC0+XG4gICAgICBKdi50b19qc3RyX2FycmF5IEBAIEp2LmNhbGwgKEp2Lm9mX2pzdHIgcykgXCJzcGxpdFwiIEp2Llt8cjsgb2ZfaW50IGxpbWl0fF1cblxuICBsZXQgdGVzdCByIHMgPSBKdi50b19ib29sIEBAIEp2LmNhbGwgciBcInRlc3RcIiBKdi5bfG9mX2pzdHIgc3xdXG4gIGxldCBsYXN0X2luZGV4IHIgPSBKdi5JbnQuZ2V0IHIgXCJsYXN0SW5kZXhcIlxuICBsZXQgc2V0X2xhc3RfaW5kZXggciBpID0gSnYuSW50LnNldCByIFwibGFzdEluZGV4XCIgaVxuICBsZXQgZG90X2FsbCByID0gSnYuQm9vbC5nZXQgciBcImRvdEFsbFwiXG4gIGxldCBmbGFncyByID0gSnYuSnN0ci5nZXQgciBcImZsYWdzXCJcbiAgbGV0IGdsb2JhbCByID0gSnYuQm9vbC5nZXQgciBcImdsb2JhbFwiXG4gIGxldCBoYXNfaW5kaWNlcyByID0gSnYuQm9vbC5nZXQgciBcImhhc0luZGljZXNcIlxuICBsZXQgaWdub3JlX2Nhc2UgciA9IEp2LkJvb2wuZ2V0IHIgXCJpZ25vcmVDYXNlXCJcbiAgbGV0IG11bHRpbGluZSByID0gSnYuQm9vbC5nZXQgciBcIm11bHRpbGluZVwiXG4gIGxldCBzb3VyY2UgciA9IEp2LkpzdHIuZ2V0IHIgXCJzb3VyY2VcIlxuICBsZXQgc3RpY2t5IHIgPSBKdi5Cb29sLmdldCByIFwic3RpY2t5XCJcbiAgbGV0IHVuaWNvZGUgciA9IEp2LkJvb2wuZ2V0IHIgXCJ1bmljb2RlXCJcbiAgbGV0IHVuaWNvZGVfc2V0cyByID0gSnYuQm9vbC5nZXQgciBcInVuaWNvZGVTZXRzXCJcbmVuZFxuXG5cbigqIERPTSBpbnRlcmFjdGlvbiAqKVxuXG5tb2R1bGUgQXQgPSBzdHJ1Y3RcbiAgdHlwZSBuYW1lID0gSnN0ci50XG4gIHR5cGUgdCA9IG5hbWUgKiBKc3RyLnRcbiAgbGV0W0BpbmxpbmVdIHYgbiB2ID0gKG4sIHYpXG4gIGxldCB2b2lkID0gKEpzdHIuZW1wdHksIEpzdHIuZW1wdHkpXG4gIGxldCBpc192b2lkIChuLCB2KSA9IEpzdHIuaXNfZW1wdHkgbiAmJiBKc3RyLmlzX2VtcHR5IHZcbiAgbGV0IGlmJyBiIGF0ID0gaWYgYiB0aGVuIGF0IGVsc2Ugdm9pZFxuICBsZXQgaWZfc29tZSA9IGZ1bmN0aW9uIE5vbmUgLT4gdm9pZCB8IFNvbWUgYXQgLT4gYXRcbiAgbGV0IHRydWUnIG4gPSAobiwgSnN0ci5lbXB0eSlcbiAgbGV0IGludCBuIGkgPSAobiwgSnN0ci5vZl9pbnQgaSlcbiAgbGV0IGZsb2F0IG4gZiA9IChuLCBKc3RyLm9mX2Zsb2F0IGYpXG4gIGxldCB0b19wYWlyID0gRnVuLmlkXG4gIGxldCBhZGRfaWYgYiBhdCBsID0gaWYgYiB0aGVuIGF0IDo6IGwgZWxzZSBsXG4gIGxldCBhZGRfaWZfc29tZSBuYW1lIG8gbCA9IG1hdGNoIG8gd2l0aCBOb25lIC0+IGwgfCBTb21lIGEgLT4gKG5hbWUsIGEpIDo6IGxcbiAgbW9kdWxlIE5hbWUgPSBzdHJ1Y3RcbiAgICBsZXQgYWNjZXNza2V5ID0gSnN0ci52IFwiYWNjZXNza2V5XCJcbiAgICBsZXQgYWN0aW9uID0gSnN0ci52IFwiYWN0aW9uXCJcbiAgICBsZXQgYXV0b2NvbXBsZXRlID0gSnN0ci52IFwiYXV0b2NvbXBsZXRlXCJcbiAgICBsZXQgYXV0b2ZvY3VzID0gSnN0ci52IFwiYXV0b2ZvY3VzXCJcbiAgICBsZXQgY2hhcnNldCA9IEpzdHIudiBcImNoYXJzZXRcIlxuICAgIGxldCBjaGVja2VkID0gSnN0ci52IFwiY2hlY2tlZFwiXG4gICAgbGV0IGNsYXNzJyA9IEpzdHIudiBcImNsYXNzXCJcbiAgICBsZXQgY29scyA9IEpzdHIudiBcImNvbHNcIlxuICAgIGxldCBjb250ZW50ID0gSnN0ci52IFwiY29udGVudFwiXG4gICAgbGV0IGNvbnRlbnRlZGl0YWJsZSA9IEpzdHIudiBcImNvbnRlbnRlZGl0YWJsZVwiXG4gICAgbGV0IGRlZmVyID0gSnN0ci52IFwiZGVmZXJcIlxuICAgIGxldCBkaXIgPSBKc3RyLnYgXCJkaXJcIlxuICAgIGxldCBkaXNhYmxlZCA9IEpzdHIudiBcImRpc2FibGVkXCJcbiAgICBsZXQgZG93bmxvYWQgPSBKc3RyLnYgXCJkb3dubG9hZFwiXG4gICAgbGV0IGRyYWdnYWJsZSA9IEpzdHIudiBcImRyYWdnYWJsZVwiXG4gICAgbGV0IGZvcicgPSBKc3RyLnYgXCJmb3JcIlxuICAgIGxldCBoZWlnaHQgPSBKc3RyLnYgXCJoZWlnaHRcIlxuICAgIGxldCBoaWRkZW4gPSBKc3RyLnYgXCJoaWRkZW5cIlxuICAgIGxldCBocmVmID0gSnN0ci52IFwiaHJlZlwiXG4gICAgbGV0IGlkID0gSnN0ci52IFwiaWRcIlxuICAgIGxldCBsYW5nID0gSnN0ci52IFwibGFuZ1wiXG4gICAgbGV0IGxpc3QgPSBKc3RyLnYgXCJsaXN0XCJcbiAgICBsZXQgbWVkaWEgPSBKc3RyLnYgXCJtZWRpYVwiXG4gICAgbGV0IG1ldGhvZCcgPSBKc3RyLnYgXCJtZXRob2RcIlxuICAgIGxldCBuYW1lID0gSnN0ci52IFwibmFtZVwiXG4gICAgbGV0IHBsYWNlaG9sZGVyID0gSnN0ci52IFwicGxhY2Vob2xkZXJcIlxuICAgIGxldCByZWwgPSBKc3RyLnYgXCJyZWxcIlxuICAgIGxldCByZXF1aXJlZCA9IEpzdHIudiBcInJlcXVpcmVkXCJcbiAgICBsZXQgcm93cyA9IEpzdHIudiBcInJvd3NcIlxuICAgIGxldCBzZWxlY3RlZCA9IEpzdHIudiBcInNlbGVjdGVkXCJcbiAgICBsZXQgc3BlbGxjaGVjayA9IEpzdHIudiBcInNwZWxsY2hlY2tcIlxuICAgIGxldCBzcmMgPSBKc3RyLnYgXCJzcmNcIlxuICAgIGxldCBzdHlsZSA9IEpzdHIudiBcInN0eWxlXCJcbiAgICBsZXQgdGFiaW5kZXggPSBKc3RyLnYgXCJ0YWJpbmRleFwiXG4gICAgbGV0IHRpdGxlID0gSnN0ci52IFwidGl0bGVcIlxuICAgIGxldCB0eXBlJyA9IEpzdHIudiBcInR5cGVcIlxuICAgIGxldCB2YWx1ZSA9IEpzdHIudiBcInZhbHVlXCJcbiAgICBsZXQgd2lkdGggPSBKc3RyLnYgXCJ3aWR0aFwiXG4gICAgbGV0IHdyYXAgPSBKc3RyLnYgXCJ3cmFwXCJcbiAgZW5kXG4gIHR5cGUgJ2EgY29ucyA9ICdhIC0+IHRcbiAgbGV0IGFjY2Vzc2tleSBzID0gdiBOYW1lLmFjY2Vzc2tleSBzXG4gIGxldCBhY3Rpb24gcyA9IHYgTmFtZS5hY3Rpb24gc1xuICBsZXQgYXV0b2NvbXBsZXRlIHMgPSB2IE5hbWUuYXV0b2NvbXBsZXRlIHNcbiAgbGV0IGF1dG9mb2N1cyA9IHRydWUnIE5hbWUuYXV0b2ZvY3VzXG4gIGxldCBjaGFyc2V0ID0gdiBOYW1lLmNoYXJzZXRcbiAgbGV0IGNoZWNrZWQgPSB0cnVlJyBOYW1lLmNoZWNrZWRcbiAgbGV0IGNsYXNzJyBzID0gdiBOYW1lLmNsYXNzJyBzXG4gIGxldCBjb2xzIGkgPSBpbnQgTmFtZS5jb2xzIGlcbiAgbGV0IGNvbnRlbnQgcyA9IHYgTmFtZS5jb250ZW50IHNcbiAgbGV0IGNvbnRlbnRlZGl0YWJsZSBzID0gdHJ1ZScgTmFtZS5jb250ZW50ZWRpdGFibGVcbiAgbGV0IGRlZmVyID0gdHJ1ZScgTmFtZS5kZWZlclxuICBsZXQgZGlyIHMgPSB2IE5hbWUuZGlyIHNcbiAgbGV0IGRpc2FibGVkID0gdHJ1ZScgTmFtZS5kaXNhYmxlZFxuICBsZXQgZG93bmxvYWQgcyA9IHYgTmFtZS5kb3dubG9hZCBzXG4gIGxldCBkcmFnZ2FibGUgcyA9IHYgTmFtZS5kcmFnZ2FibGUgc1xuICBsZXQgZm9yJyBzID0gdiBOYW1lLmZvcicgc1xuICBsZXQgaGVpZ2h0IGkgPSBpbnQgTmFtZS5oZWlnaHQgaVxuICBsZXQgaGlkZGVuID0gdHJ1ZScgTmFtZS5oaWRkZW5cbiAgbGV0IGhyZWYgcyA9IHYgTmFtZS5ocmVmIHNcbiAgbGV0IGlkIHMgPSB2IE5hbWUuaWQgc1xuICBsZXQgbGFuZyBzID0gdiBOYW1lLmxhbmcgc1xuICBsZXQgbGlzdCBzID0gdiBOYW1lLmxpc3Qgc1xuICBsZXQgbWVkaWEgcyA9IHYgTmFtZS5tZWRpYSBzXG4gIGxldCBtZXRob2QnIHMgPSB2IE5hbWUubWV0aG9kJyBzXG4gIGxldCBuYW1lIHMgPSB2IE5hbWUubmFtZSBzXG4gIGxldCBwbGFjZWhvbGRlciBzID0gdiBOYW1lLnBsYWNlaG9sZGVyIHNcbiAgbGV0IHJlbCBzID0gdiBOYW1lLnJlbCBzXG4gIGxldCByZXF1aXJlZCA9IHRydWUnIE5hbWUucmVxdWlyZWRcbiAgbGV0IHJvd3MgaSA9IGludCBOYW1lLnJvd3MgaVxuICBsZXQgc2VsZWN0ZWQgPSB0cnVlJyBOYW1lLnNlbGVjdGVkXG4gIGxldCBzcGVsbGNoZWNrID0gdiBOYW1lLnNwZWxsY2hlY2tcbiAgbGV0IHNyYyBzID0gdiBOYW1lLnNyYyBzXG4gIGxldCBzdHlsZSBzID0gdiBOYW1lLnN0eWxlIHNcbiAgbGV0IHRhYmluZGV4IGkgPSBpbnQgTmFtZS50YWJpbmRleCBpXG4gIGxldCB0aXRsZSBzID0gdiBOYW1lLnRpdGxlIHNcbiAgbGV0IHR5cGUnIHMgPSB2IE5hbWUudHlwZScgc1xuICBsZXQgdmFsdWUgcyA9IHYgTmFtZS52YWx1ZSBzXG4gIGxldCB3aWR0aCBpID0gaW50IE5hbWUud2lkdGggaVxuICBsZXQgd3JhcCBzID0gdiBOYW1lLndyYXAgc1xuZW5kXG5cbm1vZHVsZSBFbCA9IHN0cnVjdFxuICB0eXBlIGRvY3VtZW50ID0gSnYudFxuICB0eXBlIHdpbmRvdyA9IEp2LnRcbiAgdHlwZSB0YWdfbmFtZSA9IEpzdHIudFxuICB0eXBlIGVsID0gSnYudFxuICB0eXBlIHQgPSBKdi50XG4gIGluY2x1ZGUgKEp2LklkIDogSnYuQ09OViB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gIGxldCBnbG9iYWxfZG9jdW1lbnQgPSBKdi5nZXQgSnYuZ2xvYmFsIFwiZG9jdW1lbnRcIlxuICBsZXQgZG9jdW1lbnQgZSA9IEp2LmdldCBlIFwib3duZXJEb2N1bWVudFwiXG4gIGxldCBnbG9iYWxfcm9vdCA9XG4gICAgaWYgSnYuaXNfbm9uZSBnbG9iYWxfZG9jdW1lbnQgdGhlbiAoKiBlLmcuIHdlYiB3b3JrZXIgKikgSnYudW5kZWZpbmVkIGVsc2VcbiAgICBKdi5nZXQgZ2xvYmFsX2RvY3VtZW50IFwiZG9jdW1lbnRFbGVtZW50XCJcblxuICBsZXQgZWxfbGlzdF9vZl9ub2RlX2xpc3QgbmwgPVxuICAgIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICBsZXQgbGVuID0gSnYuSW50LmdldCBubCBcImxlbmd0aFwiIGluXG4gICAgZm9yIGkgPSBsZW4gLSAxIGRvd250byAwIGRvIGFjYyA6PSBKdi5KYXJyYXkuZ2V0IG5sIGkgOjogIWFjYyBkb25lO1xuICAgICFhY2NcblxuICBsZXQgYXBwZW5kX2NoaWxkIGUgbiA9IGlnbm9yZSAoSnYuY2FsbCBlIFwiYXBwZW5kQ2hpbGRcIiBbfCBuIHxdKVxuXG4gIGxldCByZWMgc2V0X2F0dHMgZSBzcyBjbHNzID0gZnVuY3Rpb25cbiAgfCAoYSwgdikgOjogYXQgLT5cbiAgICAgIGlmIEpzdHIuaXNfZW1wdHkgYSB0aGVuIHNldF9hdHRzIGUgc3MgY2xzcyBhdCBlbHNlXG4gICAgICBpZiBKc3RyLmVxdWFsIGEgQXQuTmFtZS5zdHlsZSB0aGVuIHNldF9hdHRzIGUgKHYgOjogc3MpIGNsc3MgYXQgZWxzZVxuICAgICAgaWYgSnN0ci5lcXVhbCBhIEF0Lk5hbWUuY2xhc3MnIHRoZW5cbiAgICAgICAgc2V0X2F0dHMgZSBzcyAoaWYgSnN0ci5pc19lbXB0eSB2IHRoZW4gY2xzcyBlbHNlIHYgOjogY2xzcykgYXRcbiAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgaWdub3JlIChKdi5jYWxsIGUgXCJzZXRBdHRyaWJ1dGVcIiBKdi5bfG9mX2pzdHIgYTsgb2ZfanN0ciB2fF0pO1xuICAgICAgICBzZXRfYXR0cyBlIHNzIGNsc3MgYXRcbiAgICAgIGVuZFxuICB8IFtdIC0+XG4gICAgICBpZiBzcyA8PiBbXSB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBhID0gQXQuTmFtZS5zdHlsZSBpblxuICAgICAgICBsZXQgdiA9IEpzdHIuY29uY2F0IH5zZXA6KEpzdHIudiBcIjtcIikgKExpc3QucmV2IHNzKSBpblxuICAgICAgICBpZ25vcmUgKEp2LmNhbGwgZSBcInNldEF0dHJpYnV0ZVwiIEp2Llt8b2ZfanN0ciBhOyBvZl9qc3RyIHZ8XSk7XG4gICAgICBlbmQ7XG4gICAgICBpZiBjbHNzIDw+IFtdIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IGEgPSBBdC5OYW1lLmNsYXNzJyBpblxuICAgICAgICBsZXQgdiA9IEpzdHIuY29uY2F0IH5zZXA6KEpzdHIudiBcIiBcIikgKExpc3QucmV2IGNsc3MpIGluXG4gICAgICAgIGlnbm9yZSAoSnYuY2FsbCBlIFwic2V0QXR0cmlidXRlXCIgSnYuW3xvZl9qc3RyIGE7IG9mX2pzdHIgdnxdKVxuICAgICAgZW5kXG5cbiAgbGV0IHYgPyhkID0gZ2xvYmFsX2RvY3VtZW50KSA/KGF0ID0gW10pIG5hbWUgY3MgPVxuICAgIGxldCBlID0gSnYuY2FsbCBkIFwiY3JlYXRlRWxlbWVudFwiIFt8IEp2Lm9mX2pzdHIgbmFtZSB8XSBpblxuICAgIHNldF9hdHRzIGUgW10gW10gYXQ7XG4gICAgTGlzdC5pdGVyIChhcHBlbmRfY2hpbGQgZSkgY3M7XG4gICAgZVxuXG4gIGxldCB0eHQgPyhkID0gZ2xvYmFsX2RvY3VtZW50KSBzID1cbiAgICBKdi5jYWxsIGQgXCJjcmVhdGVUZXh0Tm9kZVwiIFt8SnYub2ZfanN0ciBzfF1cblxuICBsZXQgdHh0JyA/KGQgPSBnbG9iYWxfZG9jdW1lbnQpIHMgPVxuICAgIEp2LmNhbGwgZCBcImNyZWF0ZVRleHROb2RlXCIgW3wgSnYub2Zfc3RyaW5nIHMgfF1cblxuICBsZXQgc3AgPyhkID0gZ2xvYmFsX2RvY3VtZW50KSAoKSA9IHR4dCAoSnN0ci52IFwiIFwiKVxuICBsZXQgbmJzcCA/KGQgPSBnbG9iYWxfZG9jdW1lbnQpICgpID0gdHh0IChKc3RyLnYgXCJcXHV7MDBBMH1cIilcblxuICBsZXQgaXNfdHh0IGUgPSBKdi5JbnQuZ2V0IGUgXCJub2RlVHlwZVwiID0gM1xuICBsZXQgaXNfZWwgZSA9IEp2LkludC5nZXQgZSBcIm5vZGVUeXBlXCIgPSAxXG4gIGxldCB0YWdfbmFtZSBlID0gSnN0ci5sb3dlcmNhc2VkIEBAIEp2LkpzdHIuZ2V0IGUgXCJub2RlTmFtZVwiXG4gIGxldCBoYXNfdGFnX25hbWUgbiBlID0gSnN0ci5lcXVhbCBuICh0YWdfbmFtZSBlKVxuICBsZXQgdHh0X3RleHQgdHh0ID0gbWF0Y2ggaXNfdHh0IHR4dCB3aXRoXG4gIHwgdHJ1ZSAtPiBKdi5Kc3RyLmdldCB0eHQgXCJub2RlVmFsdWVcIlxuICB8IGZhbHNlIC0+IEpzdHIuZW1wdHlcblxuICBsZXQgdGV4dF9jb250ZW50IGUgPSBKdi5Kc3RyLmdldCBlIFwidGV4dENvbnRlbnRcIlxuXG4gIGV4dGVybmFsIGFzX3RhcmdldCA6IHQgLT4gRXYudGFyZ2V0ID0gXCIlaWRlbnRpdHlcIlxuXG4gICgqIEVsZW1lbnQgbG9va3VwcyAqKVxuXG4gIGxldCBmaW5kX2J5X2NsYXNzID8ocm9vdCA9IGdsb2JhbF9yb290KSBjID1cbiAgICBlbF9saXN0X29mX25vZGVfbGlzdCBAQFxuICAgIEp2LmNhbGwgcm9vdCBcImdldEVsZW1lbnRzQnlDbGFzc05hbWVcIiBbfCBKdi5vZl9qc3RyIGMgfF1cblxuICBsZXQgZmluZF9ieV90YWdfbmFtZSA/KHJvb3QgPSBnbG9iYWxfcm9vdCkgbiA9XG4gICAgZWxfbGlzdF9vZl9ub2RlX2xpc3QgQEBcbiAgICBKdi5jYWxsIHJvb3QgXCJnZXRFbGVtZW50c0J5VGFnTmFtZVwiIFt8IEp2Lm9mX2pzdHIgbiB8XVxuXG4gIGxldCBmaW5kX2ZpcnN0X2J5X3NlbGVjdG9yID8ocm9vdCA9IGdsb2JhbF9yb290KSBzZWwgPVxuICAgIEp2LnRvX29wdGlvbiBvZl9qdiBAQCBKdi5jYWxsIHJvb3QgXCJxdWVyeVNlbGVjdG9yXCIgW3wgSnYub2ZfanN0ciBzZWwgfF1cblxuICBsZXQgZm9sZF9maW5kX2J5X3NlbGVjdG9yID8ocm9vdCA9IGdsb2JhbF9yb290KSBmIHNlbCBhY2MgPVxuICAgIGxldCBubCA9IEp2LmNhbGwgcm9vdCBcInF1ZXJ5U2VsZWN0b3JBbGxcIiBbfCBKdi5vZl9qc3RyIHNlbCB8XSBpblxuICAgIGxldCBhY2MgPSByZWYgYWNjIGluXG4gICAgZm9yIGkgPSAwIHRvIChKdi5JbnQuZ2V0IG5sIFwibGVuZ3RoXCIpIC0gMSBkb1xuICAgICAgYWNjIDo9IGYgKG9mX2p2IChKdi5KYXJyYXkuZ2V0IG5sIGkpKSAhYWNjXG4gICAgZG9uZTtcbiAgICAhYWNjXG5cbiAgKCogUGFyZW50IGFuZCBjaGlsZHJlbiAqKVxuXG4gIGxldCBwYXJlbnQgZSA9IG1hdGNoIEp2LmZpbmQgZSBcInBhcmVudE5vZGVcIiB3aXRoXG4gIHwgU29tZSBlIHdoZW4gaXNfZWwgZSAtPiBTb21lIGVcbiAgfCBfIC0+IE5vbmVcblxuICBsZXQgZGVsZXRlX2NoaWxkcmVuIGUgPVxuICAgIHdoaWxlIG5vdCAoSnYuaXNfbnVsbCAoSnYuZ2V0IGUgXCJmaXJzdENoaWxkXCIpKSBkb1xuICAgICAgaWdub3JlIEBAIEp2LmNhbGwgZSBcInJlbW92ZUNoaWxkXCIgW3wgSnYuZ2V0IGUgXCJmaXJzdENoaWxkXCIgfF07XG4gICAgZG9uZVxuXG4gIGxldCBjaGlsZHJlbiA/KG9ubHlfZWxzID0gZmFsc2UpIGUgPSBtYXRjaCBvbmx5X2VscyB3aXRoXG4gIHwgdHJ1ZSAtPiBlbF9saXN0X29mX25vZGVfbGlzdCAoSnYuZ2V0IGUgXCJjaGlsZHJlblwiKVxuICB8IGZhbHNlIC0+IGVsX2xpc3Rfb2Zfbm9kZV9saXN0IChKdi5nZXQgZSBcImNoaWxkTm9kZXNcIilcblxuICBsZXQgc2V0X2NoaWxkcmVuIGUgbCA9IGRlbGV0ZV9jaGlsZHJlbiBlOyBMaXN0Lml0ZXIgKGFwcGVuZF9jaGlsZCBlKSBsXG4gIGxldCBhcHBlbmRfY2hpbGQgZSBjID0gaWdub3JlIEBAIEp2LmNhbGwgZSBcImFwcGVuZENoaWxkXCIgW3wgYyB8XVxuXG4gIGxldCBwcmVwZW5kX2NoaWxkcmVuIGUgbCA9IGlnbm9yZSBAQCBKdi5jYWxsIGUgXCJwcmVwZW5kXCIgKEFycmF5Lm9mX2xpc3QgbClcbiAgbGV0IGFwcGVuZF9jaGlsZHJlbiBlIGwgPSBpZ25vcmUgQEAgSnYuY2FsbCBlIFwiYXBwZW5kXCIgKEFycmF5Lm9mX2xpc3QgbClcbiAgbGV0IHByZXZpb3VzX3NpYmxpbmcgZSA9IEp2LmZpbmQgZSBcInByZXZpb3VzRWxlbWVudFNpYmxpbmdcIlxuICBsZXQgbmV4dF9zaWJsaW5nIGUgPSBKdi5maW5kIGUgXCJuZXh0RWxlbWVudFNpYmxpbmdcIlxuICBsZXQgaW5zZXJ0X3NpYmxpbmdzIGxvYyBlIGwgPSBpZ25vcmUgQEAgbWF0Y2ggbG9jIHdpdGhcbiAgfCBgQmVmb3JlIC0+IEp2LmNhbGwgZSBcImJlZm9yZVwiIChBcnJheS5vZl9saXN0IGwpXG4gIHwgYEFmdGVyIC0+ICBKdi5jYWxsIGUgXCJhZnRlclwiIChBcnJheS5vZl9saXN0IGwpXG4gIHwgYFJlcGxhY2UgLT4gSnYuY2FsbCBlIFwicmVwbGFjZVdpdGhcIiAoQXJyYXkub2ZfbGlzdCBsKVxuXG4gIGxldCByZW1vdmUgZSA9IGlnbm9yZSBAQCBKdi5jYWxsIGUgXCJyZW1vdmVcIiBbfCBlIHxdXG5cbiAgKCogQXR0cmlidXRlcyAqKVxuXG4gIGxldCBhdCBhIGUgPVxuICAgIEp2LnRvX29wdGlvbiBKdi50b19qc3RyIChKdi5jYWxsIGUgXCJnZXRBdHRyaWJ1dGVcIiBbfEp2Lm9mX2pzdHIgYXxdKVxuXG4gIGxldCBzZXRfYXQgYSB2IGUgPVxuICAgIGlmIEpzdHIuaXNfZW1wdHkgYSB0aGVuICgpIGVsc2VcbiAgICBtYXRjaCB2IHdpdGhcbiAgICB8IE5vbmUgLT4gaWdub3JlIChKdi5jYWxsIGUgXCJyZW1vdmVBdHRyaWJ1dGVcIiBKdi5bfG9mX2pzdHIgYXxdKVxuICAgIHwgU29tZSB2IC0+IGlnbm9yZSAoSnYuY2FsbCBlIFwic2V0QXR0cmlidXRlXCIgSnYuW3xvZl9qc3RyIGE7IG9mX2pzdHIgdnxdKVxuXG4gICgqIFByb3BlcnRpZXMgKilcblxuICBtb2R1bGUgUHJvcCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IG4gOiBKc3RyLnQ7XG4gICAgICAgIGp2X3RvIDogSnYudCAtPiAnYTtcbiAgICAgICAganZfb2YgOiAnYSAtPiBKdi50OyB9XG5cbiAgICBsZXQganZfdG9fYm9vbCBiID0gaWYgSnYuaXNfdW5kZWZpbmVkIGIgdGhlbiBmYWxzZSBlbHNlIEp2LnRvX2Jvb2wgYlxuICAgIGxldCBqdl90b19pbnQgaSA9IGlmIEp2LmlzX3VuZGVmaW5lZCBpIHRoZW4gMCBlbHNlIEp2LnRvX2ludCBpXG4gICAgbGV0IGp2X3RvX2Zsb2F0IGYgPSBpZiBKdi5pc191bmRlZmluZWQgZiB0aGVuIDAuIGVsc2UgSnYudG9fZmxvYXQgZlxuICAgIGxldCBqdl90b19qc3RyIHMgPSBpZiBKdi5pc191bmRlZmluZWQgcyB0aGVuIEpzdHIuZW1wdHkgZWxzZSBKdi50b19qc3RyIHNcblxuICAgIGxldCBib29sIG4gPSB7IG47IGp2X3RvID0ganZfdG9fYm9vbCA7IGp2X29mID0gSnYub2ZfYm9vbCB9XG4gICAgbGV0IGludCBuID0geyBuOyBqdl90byA9IGp2X3RvX2ludCA7IGp2X29mID0gSnYub2ZfaW50IH1cbiAgICBsZXQgZmxvYXQgbiA9IHsgbjsganZfdG8gPSBqdl90b19mbG9hdCA7IGp2X29mID0gSnYub2ZfZmxvYXQgfVxuICAgIGxldCBqc3RyIG4gPSB7IG47IGp2X3RvID0ganZfdG9fanN0ciA7IGp2X29mID0gSnYub2ZfanN0ciB9XG5cbiAgICBsZXQgY2hlY2tlZCA9IGJvb2wgKEpzdHIudiBcImNoZWNrZWRcIilcbiAgICBsZXQgaGVpZ2h0ID0gaW50IChKc3RyLnYgXCJoZWlnaHRcIilcbiAgICBsZXQgaGlkZGVuID0gYm9vbCAoSnN0ci52IFwiaGlkZGVuXCIpXG4gICAgbGV0IGlkID0ganN0ciAoSnN0ci52IFwiaWRcIilcbiAgICBsZXQgbmFtZSA9IGpzdHIgKEpzdHIudiBcIm5hbWVcIilcbiAgICBsZXQgdGl0bGUgPSBqc3RyIChKc3RyLnYgXCJ0aXRsZVwiKVxuICAgIGxldCB2YWx1ZSA9IGpzdHIgKEpzdHIudiBcInZhbHVlXCIpXG4gICAgbGV0IHdpZHRoID0gaW50IChKc3RyLnYgXCJ3aWR0aFwiKVxuICBlbmRcblxuICBsZXQgcHJvcCBwIGUgPSBwLlByb3AuanZfdG8gQEAgSnYuZ2V0JyBlIHAuUHJvcC5uXG4gIGxldCBzZXRfcHJvcCBwIHYgZSA9IGlnbm9yZSBAQCBKdi5zZXQnIGUgcC5Qcm9wLm4gKHAuUHJvcC5qdl9vZiB2KVxuXG4gICgqIENsYXNzICopXG5cbiAgbGV0IGNsYXNzJyBjIGUgPVxuICAgIEp2LnRvX2Jvb2wgKEp2LmNhbGwgKEp2LmdldCBlIFwiY2xhc3NMaXN0XCIpIFwiY29udGFpbnNcIiBbfEp2Lm9mX2pzdHIgY3xdKVxuXG4gIGxldCBzZXRfY2xhc3MgYyBiIGUgPSBtYXRjaCBiIHdpdGhcbiAgfCB0cnVlIC0+IGlnbm9yZSAoSnYuY2FsbCAoSnYuZ2V0IGUgXCJjbGFzc0xpc3RcIikgXCJhZGRcIiBbfEp2Lm9mX2pzdHIgY3xdKVxuICB8IGZhbHNlIC0+IGlnbm9yZSAoSnYuY2FsbCAoSnYuZ2V0IGUgXCJjbGFzc0xpc3RcIikgXCJyZW1vdmVcIiBbfEp2Lm9mX2pzdHIgY3xdKVxuXG4gICgqIFN0eWxlICopXG5cbiAgbW9kdWxlIFN0eWxlID0gc3RydWN0XG4gICAgdHlwZSBwcm9wID0gSnN0ci50XG4gICAgbGV0IGJhY2tncm91bmRfY29sb3IgPSBKc3RyLnYgXCJiYWNrZ3JvdW5kLWNvbG9yXCJcbiAgICBsZXQgYm90dG9tID0gSnN0ci52IFwiYm90dG9tXCJcbiAgICBsZXQgY29sb3IgPSBKc3RyLnYgXCJjb2xvclwiXG4gICAgbGV0IGN1cnNvciA9IEpzdHIudiBcImN1cnNvclwiXG4gICAgbGV0IGRpc3BsYXkgPSBKc3RyLnYgXCJkaXNwbGF5XCJcbiAgICBsZXQgaGVpZ2h0ID0gSnN0ci52IFwiaGVpZ2h0XCJcbiAgICBsZXQgbGVmdCA9IEpzdHIudiBcImxlZnRcIlxuICAgIGxldCBwb3NpdGlvbiA9IEpzdHIudiBcInBvc2l0aW9uXCJcbiAgICBsZXQgcmlnaHQgPSBKc3RyLnYgXCJyaWdodFwiXG4gICAgbGV0IHRvcCA9IEpzdHIudiBcInRvcFwiXG4gICAgbGV0IHZpc2liaWxpdHkgPSBKc3RyLnYgXCJ2aXNpYmlsaXR5XCJcbiAgICBsZXQgd2lkdGggPSBKc3RyLnYgXCJ3aWR0aFwiXG4gICAgbGV0IHpfaW5kZXggPSBKc3RyLnYgXCJ6LWluZGV4XCJcbiAgICBsZXQgem9vbSA9IEpzdHIudiBcInpvb21cIlxuICBlbmRcblxuICBsZXQgY29tcHV0ZWRfc3R5bGUgPyh3ID0gSnYuZ2V0IEp2Lmdsb2JhbCBcIndpbmRvd1wiKSBwIGUgPVxuICAgIGxldCBzdHlsZSA9IEp2LmNhbGwgdyBcImdldENvbXB1dGVkU3R5bGVcIiBbfGV8XSBpblxuICAgIGxldCB2ID0gSnYuZ2V0JyBzdHlsZSBwIGluXG4gICAgaWYgSnYuaXNfbm9uZSB2IHRoZW4gSnN0ci5lbXB0eSBlbHNlIEp2LnRvX2pzdHIgdlxuXG4gIGxldCBpbmxpbmVfc3R5bGUgcCBlID1cbiAgICBsZXQgc3R5bGUgPSBKdi5nZXQgZSBcInN0eWxlXCIgaW5cbiAgICBpZiBKdi5pc19ub25lIHN0eWxlIHRoZW4gSnN0ci5lbXB0eSBlbHNlXG4gICAgbGV0IHYgPSBKdi5nZXQnIHN0eWxlIHAgaW5cbiAgICBpZiBKdi5pc19ub25lIHYgdGhlbiBKc3RyLmVtcHR5IGVsc2UgSnYudG9fanN0ciB2XG5cbiAgbGV0IHNldF9pbmxpbmVfc3R5bGUgPyhpbXBvcnRhbnQgPSBmYWxzZSkgcCB2IGUgPVxuICAgIGxldCBwcmlvcml0eSA9IGlmIGltcG9ydGFudCB0aGVuIEpzdHIudiBcImltcG9ydGFudFwiIGVsc2UgSnN0ci5lbXB0eSBpblxuICAgIGxldCBzdHlsZSA9IEp2LmdldCBlIFwic3R5bGVcIiBpblxuICAgIGlmIEp2LmlzX25vbmUgc3R5bGUgdGhlbiAoKSBlbHNlXG4gICAgKGlnbm9yZSBAQFxuICAgICBKdi5jYWxsIHN0eWxlIFwic2V0UHJvcGVydHlcIiBKdi5bfG9mX2pzdHIgcDsgb2ZfanN0ciB2OyBvZl9qc3RyIHByaW9yaXR5fF0pXG5cbiAgbGV0IHJlbW92ZV9pbmxpbmVfc3R5bGUgcCBlID1cbiAgICBsZXQgc3R5bGUgPSBKdi5nZXQgZSBcInN0eWxlXCIgaW5cbiAgICBpZiBKdi5pc19ub25lIHN0eWxlIHRoZW4gKCkgZWxzZVxuICAgIChpZ25vcmUgQEAgSnYuY2FsbCBzdHlsZSBcInJlbW92ZVByb3BlcnR5XCIgSnYuW3xvZl9qc3RyIHB8XSlcblxuICAoKiBMYXlvdXQgKilcblxuICBsZXQgaW5uZXJfeCBlID0gSnYuRmxvYXQuZ2V0IGUgXCJjbGllbnRMZWZ0XCJcbiAgbGV0IGlubmVyX3kgZSA9IEp2LkZsb2F0LmdldCBlIFwiY2xpZW50VG9wXCJcbiAgbGV0IGlubmVyX3cgZSA9IEp2LkZsb2F0LmdldCBlIFwiY2xpZW50V2lkdGhcIlxuICBsZXQgaW5uZXJfaCBlID0gSnYuRmxvYXQuZ2V0IGUgXCJjbGllbnRIZWlnaHRcIlxuICBsZXQgYm91bmRfeCBlID0gSnYuRmxvYXQuZ2V0IChKdi5jYWxsIGUgXCJnZXRCb3VuZGluZ0NsaWVudFJlY3RcIiBbfHxdKSBcInhcIlxuICBsZXQgYm91bmRfeSBlID0gSnYuRmxvYXQuZ2V0IChKdi5jYWxsIGUgXCJnZXRCb3VuZGluZ0NsaWVudFJlY3RcIiBbfHxdKSBcInlcIlxuICBsZXQgYm91bmRfdyBlID0gSnYuRmxvYXQuZ2V0IChKdi5jYWxsIGUgXCJnZXRCb3VuZGluZ0NsaWVudFJlY3RcIiBbfHxdKSBcIndpZHRoXCJcbiAgbGV0IGJvdW5kX2ggZSA9IEp2LkZsb2F0LmdldCAoSnYuY2FsbCBlIFwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0XCIgW3x8XSkgXCJoZWlnaHRcIlxuXG4gICgqIE9mZnNldCAqKVxuXG4gIGxldCBvZmZzZXRfdyBlID0gSnYuSW50LmdldCBlIFwib2Zmc2V0V2lkdGhcIlxuICBsZXQgb2Zmc2V0X2ggZSA9IEp2LkludC5nZXQgZSBcIm9mZnNldEhlaWdodFwiXG5cbiAgbGV0IG9mZnNldF9sZWZ0IGUgPSBKdi5JbnQuZ2V0IGUgXCJvZmZzZXRMZWZ0XCJcbiAgbGV0IG9mZnNldF90b3AgZSA9IEp2LkludC5nZXQgZSBcIm9mZnNldFRvcFwiXG5cbiAgbGV0IG9mZnNldF9wYXJlbnQgZSA9IEp2LmdldCBlIFwib2Zmc2V0UGFyZW50XCIgfD4gSnYudG9fb3B0aW9uIG9mX2p2XG5cbiAgKCogU2Nyb2xsaW5nICopXG5cbiAgbGV0IHNjcm9sbF94IGUgPSBKdi5GbG9hdC5nZXQgZSBcInNjcm9sbExlZnRcIlxuICBsZXQgc2Nyb2xsX3kgZSA9IEp2LkZsb2F0LmdldCBlIFwic2Nyb2xsVG9wXCJcbiAgbGV0IHNjcm9sbF93IGUgPSBKdi5GbG9hdC5nZXQgZSBcInNjcm9sbFdpZHRoXCJcbiAgbGV0IHNjcm9sbF9oIGUgPSBKdi5GbG9hdC5nZXQgZSBcInNjcm9sbEhlaWdodFwiXG5cbiAgbGV0IHNjcm9sbF9pbnRvX3ZpZXcgPyhhbGlnbl92ID0gYFN0YXJ0KSA/YmVoYXZpb3IgZSA9XG4gICAgbGV0IGFsaWduID0gbWF0Y2ggYWxpZ25fdiB3aXRoXG4gICAgICB8IGBTdGFydCAtPiBcInN0YXJ0XCJcbiAgICAgIHwgYENlbnRlciAtPiBcImNlbnRlclwiXG4gICAgICB8IGBOZWFyZXN0IC0+IFwibmVhcmVzdFwiXG4gICAgICB8IGBFbmQgLT4gXCJlbmRcIlxuICAgIGluXG4gICAgbGV0IGJlaGF2aW9yID1cbiAgICAgIEp2Lm9mX29wdGlvbiB+bm9uZTpKdi5udWxsIEp2Lm9mX3N0cmluZyBAQFxuICAgICAgICBPcHRpb24ubWFwIChmdW5jdGlvblxuICAgICAgICAgICAgfCBgU21vb3RoIC0+IFwic21vb3RoXCJcbiAgICAgICAgICAgIHwgYEluc3RhbnQgLT4gXCJpbnN0YW50XCJcbiAgICAgICAgICAgIHwgYEF1dG8gLT4gXCJhdXRvXCIpXG4gICAgICAgICAgYmVoYXZpb3JcbiAgICBpblxuICAgIGxldCBvcHRpb25zID0gSnYub2JqIFt8XCJibG9ja1wiLCBKdi5vZl9zdHJpbmcgYWxpZ247IFwiYmVoYXZpb3JcIiAsIGJlaGF2aW9yIHxdIGluXG4gICAgaWdub3JlIEBAIEp2LmNhbGwgZSBcInNjcm9sbEludG9WaWV3XCIgW3wgb3B0aW9ucyB8XVxuXG4gICgqIEZvY3VzICopXG5cbiAgbGV0IGhhc19mb2N1cyBlID1cbiAgICBtYXRjaCBKdi50b19vcHRpb24gRnVuLmlkIChKdi5nZXQgKGRvY3VtZW50IGUpIFwiYWN0aXZlRWxlbWVudFwiKSB3aXRoXG4gICAgfCBOb25lIC0+IGZhbHNlIHwgU29tZSBlJyAtPiBlID09IGUnXG5cbiAgbGV0IHNldF9oYXNfZm9jdXMgYiBlID1cbiAgICBpZ25vcmUgKGlmIGIgdGhlbiBKdi5jYWxsIGUgXCJmb2N1c1wiIFt8fF0gZWxzZSBKdi5jYWxsIGUgXCJibHVyXCIgW3x8XSlcblxuICAoKiBQb2ludGVyIGxvY2tpbmcgKilcblxuICBsZXQgaXNfbG9ja2luZ19wb2ludGVyIGUgPVxuICAgIG1hdGNoIEp2LnRvX29wdGlvbiBGdW4uaWQgKEp2LmdldCAoZG9jdW1lbnQgZSkgXCJwb2ludGVyTG9ja0VsZW1lbnRcIikgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZSB8IFNvbWUgZScgLT4gZSA9PSBlJ1xuXG4gIGxldCByZXF1ZXN0X3BvaW50ZXJfbG9jayBlID1cbiAgICBsZXQgZnV0LCBzZXQgPSBGdXQuY3JlYXRlICgpIGluXG4gICAgbGV0IGQgPSAoT2JqLm1hZ2ljIGRvY3VtZW50IGUgOiBFdi50YXJnZXQpIGluXG4gICAgbGV0IG9wdHMgPSBFdi5saXN0ZW5fb3B0cyB+b25jZTp0cnVlICgpIGluXG4gICAgbGV0IHVubGlzdGVuID0gcmVmIChmdW4gKCkgLT4gKCkpIGluXG4gICAgbGV0IGxvY2tlZCBfZXYgPSBzZXQgKE9rICgpKTsgIXVubGlzdGVuICgpXG4gICAgYW5kIGVycm9yIF9ldiA9XG4gICAgICBsZXQgZXJyID0gSnYuRXJyb3IudiAoSnN0ci52IFwiQ291bGQgbm90IGxvY2sgcG9pbnRlclwiKSBpblxuICAgICAgc2V0IChFcnJvciBlcnIpOyAhdW5saXN0ZW4gKClcbiAgICBpblxuICAgIGxldCBrID0gRXYubGlzdGVuIH5vcHRzIEV2LnBvaW50ZXJsb2NrY2hhbmdlIGxvY2tlZCBkIGluXG4gICAgbGV0IGsnID0gRXYubGlzdGVuIH5vcHRzIEV2LnBvaW50ZXJsb2NrZXJyb3IgZXJyb3IgZCBpblxuICAgIHVubGlzdGVuIDo9IChmdW4gKCkgLT4gRXYudW5saXN0ZW4gazsgRXYudW5saXN0ZW4gaycpO1xuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGUgXCJyZXF1ZXN0UG9pbnRlckxvY2tcIiBbfHxdO1xuICAgIGZ1dFxuXG4gICgqIENsaWNrIHNpbWx1YXRpb24gKilcblxuICBsZXQgY2xpY2sgZSA9IGlnbm9yZSAoSnYuY2FsbCBlIFwiY2xpY2tcIiBbfHxdKVxuICBsZXQgc2VsZWN0X3RleHQgZSA9IGlnbm9yZSAoSnYuY2FsbCBlIFwic2VsZWN0XCIgW3x8XSlcblxuICAoKiBGdWxsc2NyZWVuICopXG5cbiAgbW9kdWxlIE5hdmlnYXRpb25fdWkgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKc3RyLnRcbiAgICBsZXQgYXV0byA9IEpzdHIudiBcImF1dG9cIlxuICAgIGxldCBoaWRlID0gSnN0ci52IFwiaGlkZVwiXG4gICAgbGV0IHNob3cgPSBKc3RyLnYgXCJzaG93XCJcbiAgZW5kXG5cbiAgdHlwZSBmdWxsc2NyZWVuX29wdHMgPSBKdi50XG4gIGxldCBmdWxsc2NyZWVuX29wdHMgP25hdmlnYXRpb25fdWkgKCkgPVxuICAgIGxldCBvID0gSnYub2JqIFt8fF0gaW5cbiAgICBKdi5Kc3RyLnNldF9pZl9zb21lIG8gXCJuYXZpZ2F0aW9uVUlcIiBuYXZpZ2F0aW9uX3VpO1xuICAgIG9cblxuICBsZXQgcmVxdWVzdF9mdWxsc2NyZWVuID8ob3B0cyA9IEp2Lm9iaiBbfHxdKSBlID1cbiAgICBGdXQub2ZfcHJvbWlzZSB+b2s6aWdub3JlIEBAIEp2LmNhbGwgZSBcInJlcXVlc3RGdWxsc2NyZWVuXCIgW3wgb3B0cyB8XVxuXG4gICgqIElucHV0ICopXG5cbiAgbW9kdWxlIElucHV0ID0gc3RydWN0XG4gICAgbGV0IGZpbGVzIGUgPSBtYXRjaCBKdi5maW5kIGUgXCJmaWxlc1wiIHdpdGhcbiAgICB8IE5vbmUgLT4gW10gfCBTb21lIGZpbGVzIC0+IEp2LnRvX2xpc3QgRmlsZS5vZl9qdiBmaWxlc1xuICBlbmRcblxuICAoKiBFbGVtZW50IHRhZyBuYW1lcyAqKVxuXG4gIG1vZHVsZSBOYW1lID0gc3RydWN0XG4gICAgbGV0IGEgPSBKc3RyLnYgXCJhXCJcbiAgICBsZXQgYWJiciA9IEpzdHIudiBcImFiYnJcIlxuICAgIGxldCBhZGRyZXNzID0gSnN0ci52IFwiYWRkcmVzc1wiXG4gICAgbGV0IGFyZWEgPSBKc3RyLnYgXCJhcmVhXCJcbiAgICBsZXQgYXJ0aWNsZSA9IEpzdHIudiBcImFydGljbGVcIlxuICAgIGxldCBhc2lkZSA9IEpzdHIudiBcImFzaWRlXCJcbiAgICBsZXQgYXVkaW8gPSBKc3RyLnYgXCJhdWRpb1wiXG4gICAgbGV0IGIgPSBKc3RyLnYgXCJiXCJcbiAgICBsZXQgYmFzZSA9IEpzdHIudiBcImJhc2VcIlxuICAgIGxldCBiZGkgPSBKc3RyLnYgXCJiZGlcIlxuICAgIGxldCBiZG8gPSBKc3RyLnYgXCJiZG9cIlxuICAgIGxldCBibG9ja3F1b3RlID0gSnN0ci52IFwiYmxvY2txdW90ZVwiXG4gICAgbGV0IGJvZHkgPSBKc3RyLnYgXCJib2R5XCJcbiAgICBsZXQgYnIgPSBKc3RyLnYgXCJiclwiXG4gICAgbGV0IGJ1dHRvbiA9IEpzdHIudiBcImJ1dHRvblwiXG4gICAgbGV0IGNhbnZhcyA9IEpzdHIudiBcImNhbnZhc1wiXG4gICAgbGV0IGNhcHRpb24gPSBKc3RyLnYgXCJjYXB0aW9uXCJcbiAgICBsZXQgY2l0ZSA9IEpzdHIudiBcImNpdGVcIlxuICAgIGxldCBjb2RlID0gSnN0ci52IFwiY29kZVwiXG4gICAgbGV0IGNvbCA9IEpzdHIudiBcImNvbFwiXG4gICAgbGV0IGNvbGdyb3VwID0gSnN0ci52IFwiY29sZ3JvdXBcIlxuICAgIGxldCBjb21tYW5kID0gSnN0ci52IFwiY29tbWFuZFwiXG4gICAgbGV0IGRhdGFsaXN0ID0gSnN0ci52IFwiZGF0YWxpc3RcIlxuICAgIGxldCBkZCA9IEpzdHIudiBcImRkXCJcbiAgICBsZXQgZGVsID0gSnN0ci52IFwiZGVsXCJcbiAgICBsZXQgZGV0YWlscyA9IEpzdHIudiBcImRldGFpbHNcIlxuICAgIGxldCBkZm4gPSBKc3RyLnYgXCJkZm5cIlxuICAgIGxldCBkaXYgPSBKc3RyLnYgXCJkaXZcIlxuICAgIGxldCBkbCA9IEpzdHIudiBcImRsXCJcbiAgICBsZXQgZHQgPSBKc3RyLnYgXCJkdFwiXG4gICAgbGV0IGVtID0gSnN0ci52IFwiZW1cIlxuICAgIGxldCBlbWJlZCA9IEpzdHIudiBcImVtYmVkXCJcbiAgICBsZXQgZmllbGRzZXQgPSBKc3RyLnYgXCJmaWVsZHNldFwiXG4gICAgbGV0IGZpZ2NhcHRpb24gPSBKc3RyLnYgXCJmaWdjYXB0aW9uXCJcbiAgICBsZXQgZmlndXJlID0gSnN0ci52IFwiZmlndXJlXCJcbiAgICBsZXQgZm9vdGVyID0gSnN0ci52IFwiZm9vdGVyXCJcbiAgICBsZXQgZm9ybSA9IEpzdHIudiBcImZvcm1cIlxuICAgIGxldCBoMSA9IEpzdHIudiBcImgxXCJcbiAgICBsZXQgaDIgPSBKc3RyLnYgXCJoMlwiXG4gICAgbGV0IGgzID0gSnN0ci52IFwiaDNcIlxuICAgIGxldCBoNCA9IEpzdHIudiBcImg0XCJcbiAgICBsZXQgaDUgPSBKc3RyLnYgXCJoNVwiXG4gICAgbGV0IGg2ID0gSnN0ci52IFwiaDZcIlxuICAgIGxldCBoZWFkID0gSnN0ci52IFwiaGVhZFwiXG4gICAgbGV0IGhlYWRlciA9IEpzdHIudiBcImhlYWRlclwiXG4gICAgbGV0IGhncm91cCA9IEpzdHIudiBcImhncm91cFwiXG4gICAgbGV0IGhyID0gSnN0ci52IFwiaHJcIlxuICAgIGxldCBodG1sID0gSnN0ci52IFwiaHRtbFwiXG4gICAgbGV0IGkgPSBKc3RyLnYgXCJpXCJcbiAgICBsZXQgaWZyYW1lID0gSnN0ci52IFwiaWZyYW1lXCJcbiAgICBsZXQgaW1nID0gSnN0ci52IFwiaW1nXCJcbiAgICBsZXQgaW5wdXQgPSBKc3RyLnYgXCJpbnB1dFwiXG4gICAgbGV0IGlucyA9IEpzdHIudiBcImluc1wiXG4gICAgbGV0IGtiZCA9IEpzdHIudiBcImtiZFwiXG4gICAgbGV0IGtleWdlbiA9IEpzdHIudiBcImtleWdlblwiXG4gICAgbGV0IGxhYmVsID0gSnN0ci52IFwibGFiZWxcIlxuICAgIGxldCBsZWdlbmQgPSBKc3RyLnYgXCJsZWdlbmRcIlxuICAgIGxldCBsaSA9IEpzdHIudiBcImxpXCJcbiAgICBsZXQgbGluayA9IEpzdHIudiBcImxpbmtcIlxuICAgIGxldCBtYXAgPSBKc3RyLnYgXCJtYXBcIlxuICAgIGxldCBtYXJrID0gSnN0ci52IFwibWFya1wiXG4gICAgbGV0IG1lbnUgPSBKc3RyLnYgXCJtZW51XCJcbiAgICBsZXQgbWV0YSA9IEpzdHIudiBcIm1ldGFcIlxuICAgIGxldCBtZXRlciA9IEpzdHIudiBcIm1ldGVyXCJcbiAgICBsZXQgbmF2ID0gSnN0ci52IFwibmF2XCJcbiAgICBsZXQgbm9zY3JpcHQgPSBKc3RyLnYgXCJub3NjcmlwdFwiXG4gICAgbGV0IG9iamVjdCcgPSBKc3RyLnYgXCJvYmplY3RcIlxuICAgIGxldCBvbCA9IEpzdHIudiBcIm9sXCJcbiAgICBsZXQgb3B0Z3JvdXAgPSBKc3RyLnYgXCJvcHRncm91cFwiXG4gICAgbGV0IG9wdGlvbiA9IEpzdHIudiBcIm9wdGlvblwiXG4gICAgbGV0IG91dHB1dCA9IEpzdHIudiBcIm91dHB1dFwiXG4gICAgbGV0IHAgPSBKc3RyLnYgXCJwXCJcbiAgICBsZXQgcGFyYW0gPSBKc3RyLnYgXCJwYXJhbVwiXG4gICAgbGV0IHByZSA9IEpzdHIudiBcInByZVwiXG4gICAgbGV0IHByb2dyZXNzID0gSnN0ci52IFwicHJvZ3Jlc3NcIlxuICAgIGxldCBxID0gSnN0ci52IFwicVwiXG4gICAgbGV0IHJwID0gSnN0ci52IFwicnBcIlxuICAgIGxldCBydCA9IEpzdHIudiBcInJ0XCJcbiAgICBsZXQgcnVieSA9IEpzdHIudiBcInJ1YnlcIlxuICAgIGxldCBzID0gSnN0ci52IFwic1wiXG4gICAgbGV0IHNhbXAgPSBKc3RyLnYgXCJzYW1wXCJcbiAgICBsZXQgc2NyaXB0ID0gSnN0ci52IFwic2NyaXB0XCJcbiAgICBsZXQgc2VjdGlvbiA9IEpzdHIudiBcInNlY3Rpb25cIlxuICAgIGxldCBzZWxlY3QgPSBKc3RyLnYgXCJzZWxlY3RcIlxuICAgIGxldCBzbWFsbCA9IEpzdHIudiBcInNtYWxsXCJcbiAgICBsZXQgc291cmNlID0gSnN0ci52IFwic291cmNlXCJcbiAgICBsZXQgc3BhbiA9IEpzdHIudiBcInNwYW5cIlxuICAgIGxldCBzdHJvbmcgPSBKc3RyLnYgXCJzdHJvbmdcIlxuICAgIGxldCBzdHlsZSA9IEpzdHIudiBcInN0eWxlXCJcbiAgICBsZXQgc3ViID0gSnN0ci52IFwic3ViXCJcbiAgICBsZXQgc3VtbWFyeSA9IEpzdHIudiBcInN1bW1hcnlcIlxuICAgIGxldCBzdXAgPSBKc3RyLnYgXCJzdXBcIlxuICAgIGxldCB0YWJsZSA9IEpzdHIudiBcInRhYmxlXCJcbiAgICBsZXQgdGJvZHkgPSBKc3RyLnYgXCJ0Ym9keVwiXG4gICAgbGV0IHRkID0gSnN0ci52IFwidGRcIlxuICAgIGxldCB0ZXh0YXJlYSA9IEpzdHIudiBcInRleHRhcmVhXCJcbiAgICBsZXQgdGZvb3QgPSBKc3RyLnYgXCJ0Zm9vdFwiXG4gICAgbGV0IHRoID0gSnN0ci52IFwidGhcIlxuICAgIGxldCB0aGVhZCA9IEpzdHIudiBcInRoZWFkXCJcbiAgICBsZXQgdGltZSA9IEpzdHIudiBcInRpbWVcIlxuICAgIGxldCB0aXRsZSA9IEpzdHIudiBcInRpdGxlXCJcbiAgICBsZXQgdHIgPSBKc3RyLnYgXCJ0clwiXG4gICAgbGV0IHRyYWNrID0gSnN0ci52IFwidHJhY2tcIlxuICAgIGxldCB1ID0gSnN0ci52IFwidVwiXG4gICAgbGV0IHVsID0gSnN0ci52IFwidWxcIlxuICAgIGxldCB2YXIgPSBKc3RyLnYgXCJ2YXJcIlxuICAgIGxldCB2aWRlbyA9IEpzdHIudiBcInZpZGVvXCJcbiAgICBsZXQgd2JyID0gSnN0ci52IFwid2JyXCJcbiAgZW5kXG5cbiAgdHlwZSBjb25zID0gID9kOmRvY3VtZW50IC0+ID9hdDpBdC50IGxpc3QgLT4gdCBsaXN0IC0+IHRcbiAgdHlwZSB2b2lkX2NvbnMgPSA/ZDpkb2N1bWVudCAtPiA/YXQ6QXQudCBsaXN0IC0+IHVuaXQgLT4gdFxuICBsZXQgY29ucyBuYW1lID9kID9hdCBjcyA9IHYgP2QgP2F0IG5hbWUgY3NcbiAgbGV0IHZvaWRfY29ucyBuYW1lID9kID9hdCAoKSA9IHYgP2QgP2F0IG5hbWUgW11cblxuICBsZXQgYSA9IGNvbnMgTmFtZS5hXG4gIGxldCBhYmJyID0gY29ucyBOYW1lLmFiYnJcbiAgbGV0IGFkZHJlc3MgPSBjb25zIE5hbWUuYWRkcmVzc1xuICBsZXQgYXJlYSA9IHZvaWRfY29ucyBOYW1lLmFyZWFcbiAgbGV0IGFydGljbGUgPSBjb25zIE5hbWUuYXJ0aWNsZVxuICBsZXQgYXNpZGUgPSBjb25zIE5hbWUuYXNpZGVcbiAgbGV0IGF1ZGlvID0gY29ucyBOYW1lLmF1ZGlvXG4gIGxldCBiID0gY29ucyBOYW1lLmJcbiAgbGV0IGJhc2UgPSB2b2lkX2NvbnMgTmFtZS5iYXNlXG4gIGxldCBiZGkgPSBjb25zIE5hbWUuYmRpXG4gIGxldCBiZG8gPSBjb25zIE5hbWUuYmRvXG4gIGxldCBibG9ja3F1b3RlID0gY29ucyBOYW1lLmJsb2NrcXVvdGVcbiAgbGV0IGJvZHkgPSBjb25zIE5hbWUuYm9keVxuICBsZXQgYnIgPSB2b2lkX2NvbnMgTmFtZS5iclxuICBsZXQgYnV0dG9uID0gY29ucyBOYW1lLmJ1dHRvblxuICBsZXQgY2FudmFzID0gY29ucyBOYW1lLmNhbnZhc1xuICBsZXQgY2FwdGlvbiA9IGNvbnMgTmFtZS5jYXB0aW9uXG4gIGxldCBjaXRlID0gY29ucyBOYW1lLmNpdGVcbiAgbGV0IGNvZGUgPSBjb25zIE5hbWUuY29kZVxuICBsZXQgY29sID0gdm9pZF9jb25zIE5hbWUuY29sXG4gIGxldCBjb2xncm91cCA9IGNvbnMgTmFtZS5jb2xncm91cFxuICBsZXQgY29tbWFuZCA9IGNvbnMgTmFtZS5jb21tYW5kXG4gIGxldCBkYXRhbGlzdCA9IGNvbnMgTmFtZS5kYXRhbGlzdFxuICBsZXQgZGQgPSBjb25zIE5hbWUuZGRcbiAgbGV0IGRlbCA9IGNvbnMgTmFtZS5kZWxcbiAgbGV0IGRldGFpbHMgPSBjb25zIE5hbWUuZGV0YWlsc1xuICBsZXQgZGZuID0gY29ucyBOYW1lLmRmblxuICBsZXQgZGl2ID0gY29ucyBOYW1lLmRpdlxuICBsZXQgZGwgPSBjb25zIE5hbWUuZGxcbiAgbGV0IGR0ID0gY29ucyBOYW1lLmR0XG4gIGxldCBlbSA9IGNvbnMgTmFtZS5lbVxuICBsZXQgZW1iZWQgPSB2b2lkX2NvbnMgTmFtZS5lbWJlZFxuICBsZXQgZmllbGRzZXQgPSBjb25zIE5hbWUuZmllbGRzZXRcbiAgbGV0IGZpZ2NhcHRpb24gPSBjb25zIE5hbWUuZmlnY2FwdGlvblxuICBsZXQgZmlndXJlID0gY29ucyBOYW1lLmZpZ3VyZVxuICBsZXQgZm9vdGVyID0gY29ucyBOYW1lLmZvb3RlclxuICBsZXQgZm9ybSA9IGNvbnMgTmFtZS5mb3JtXG4gIGxldCBoMSA9IGNvbnMgTmFtZS5oMVxuICBsZXQgaDIgPSBjb25zIE5hbWUuaDJcbiAgbGV0IGgzID0gY29ucyBOYW1lLmgzXG4gIGxldCBoNCA9IGNvbnMgTmFtZS5oNFxuICBsZXQgaDUgPSBjb25zIE5hbWUuaDVcbiAgbGV0IGg2ID0gY29ucyBOYW1lLmg2XG4gIGxldCBoZWFkID0gY29ucyBOYW1lLmhlYWRcbiAgbGV0IGhlYWRlciA9IGNvbnMgTmFtZS5oZWFkZXJcbiAgbGV0IGhncm91cCA9IGNvbnMgTmFtZS5oZ3JvdXBcbiAgbGV0IGhyID0gdm9pZF9jb25zIE5hbWUuaHJcbiAgbGV0IGh0bWwgPSBjb25zIE5hbWUuaHRtbFxuICBsZXQgaSA9IGNvbnMgTmFtZS5pXG4gIGxldCBpZnJhbWUgPSBjb25zIE5hbWUuaWZyYW1lXG4gIGxldCBpbWcgPSB2b2lkX2NvbnMgTmFtZS5pbWdcbiAgbGV0IGlucHV0ID0gdm9pZF9jb25zIE5hbWUuaW5wdXRcbiAgbGV0IGlucyA9IGNvbnMgTmFtZS5pbnNcbiAgbGV0IGtiZCA9IGNvbnMgTmFtZS5rYmRcbiAgbGV0IGtleWdlbiA9IGNvbnMgTmFtZS5rZXlnZW5cbiAgbGV0IGxhYmVsID0gY29ucyBOYW1lLmxhYmVsXG4gIGxldCBsZWdlbmQgPSBjb25zIE5hbWUubGVnZW5kXG4gIGxldCBsaSA9IGNvbnMgTmFtZS5saVxuICBsZXQgbGluayA9IHZvaWRfY29ucyBOYW1lLmxpbmtcbiAgbGV0IG1hcCA9IGNvbnMgTmFtZS5tYXBcbiAgbGV0IG1hcmsgPSBjb25zIE5hbWUubWFya1xuICBsZXQgbWVudSA9IGNvbnMgTmFtZS5tZW51XG4gIGxldCBtZXRhID0gdm9pZF9jb25zIE5hbWUubWV0YVxuICBsZXQgbWV0ZXIgPSBjb25zIE5hbWUubWV0ZXJcbiAgbGV0IG5hdiA9IGNvbnMgTmFtZS5uYXZcbiAgbGV0IG5vc2NyaXB0ID0gY29ucyBOYW1lLm5vc2NyaXB0XG4gIGxldCBvYmplY3QnID0gY29ucyBOYW1lLm9iamVjdCdcbiAgbGV0IG9sID0gY29ucyBOYW1lLm9sXG4gIGxldCBvcHRncm91cCA9IGNvbnMgTmFtZS5vcHRncm91cFxuICBsZXQgb3B0aW9uID0gY29ucyBOYW1lLm9wdGlvblxuICBsZXQgb3V0cHV0ID0gY29ucyBOYW1lLm91dHB1dFxuICBsZXQgcCA9IGNvbnMgTmFtZS5wXG4gIGxldCBwYXJhbSA9IHZvaWRfY29ucyBOYW1lLnBhcmFtXG4gIGxldCBwcmUgPSBjb25zIE5hbWUucHJlXG4gIGxldCBwcm9ncmVzcyA9IGNvbnMgTmFtZS5wcm9ncmVzc1xuICBsZXQgcSA9IGNvbnMgTmFtZS5xXG4gIGxldCBycCA9IGNvbnMgTmFtZS5ycFxuICBsZXQgcnQgPSBjb25zIE5hbWUucnRcbiAgbGV0IHJ1YnkgPSBjb25zIE5hbWUucnVieVxuICBsZXQgcyA9IGNvbnMgTmFtZS5zXG4gIGxldCBzYW1wID0gY29ucyBOYW1lLnNhbXBcbiAgbGV0IHNjcmlwdCA9IGNvbnMgTmFtZS5zY3JpcHRcbiAgbGV0IHNlY3Rpb24gPSBjb25zIE5hbWUuc2VjdGlvblxuICBsZXQgc2VsZWN0ID0gY29ucyBOYW1lLnNlbGVjdFxuICBsZXQgc21hbGwgPSBjb25zIE5hbWUuc21hbGxcbiAgbGV0IHNvdXJjZSA9IHZvaWRfY29ucyBOYW1lLnNvdXJjZVxuICBsZXQgc3BhbiA9IGNvbnMgTmFtZS5zcGFuXG4gIGxldCBzdHJvbmcgPSBjb25zIE5hbWUuc3Ryb25nXG4gIGxldCBzdHlsZSA9IGNvbnMgTmFtZS5zdHlsZVxuICBsZXQgc3ViID0gY29ucyBOYW1lLnN1YlxuICBsZXQgc3VtbWFyeSA9IGNvbnMgTmFtZS5zdW1tYXJ5XG4gIGxldCBzdXAgPSBjb25zIE5hbWUuc3VwXG4gIGxldCB0YWJsZSA9IGNvbnMgTmFtZS50YWJsZVxuICBsZXQgdGJvZHkgPSBjb25zIE5hbWUudGJvZHlcbiAgbGV0IHRkID0gY29ucyBOYW1lLnRkXG4gIGxldCB0ZXh0YXJlYSA9IGNvbnMgTmFtZS50ZXh0YXJlYVxuICBsZXQgdGZvb3QgPSBjb25zIE5hbWUudGZvb3RcbiAgbGV0IHRoID0gY29ucyBOYW1lLnRoXG4gIGxldCB0aGVhZCA9IGNvbnMgTmFtZS50aGVhZFxuICBsZXQgdGltZSA9IGNvbnMgTmFtZS50aW1lXG4gIGxldCB0aXRsZSA9IGNvbnMgTmFtZS50aXRsZVxuICBsZXQgdHIgPSBjb25zIE5hbWUudHJcbiAgbGV0IHRyYWNrID0gdm9pZF9jb25zIE5hbWUudHJhY2tcbiAgbGV0IHUgPSBjb25zIE5hbWUudVxuICBsZXQgdWwgPSBjb25zIE5hbWUudWxcbiAgbGV0IHZhciA9IGNvbnMgTmFtZS52YXJcbiAgbGV0IHZpZGVvID0gY29ucyBOYW1lLnZpZGVvXG4gIGxldCB3YnIgPSB2b2lkX2NvbnMgTmFtZS53YnJcbmVuZFxuXG5tb2R1bGUgUmFuZ2UgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSnYudFxuICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcblxuICB0eXBlIGNvbXBhcmVfaG93ID0gaW50XG4gIGxldCBlbmRfdG9fZW5kID0gSnYuSW50LmdldCBKdi5nbG9iYWwgXCJSYW5nZS5FTkRfVE9fRU5EXCJcbiAgbGV0IGVuZF90b19zdGFydCA9IEp2LkludC5nZXQgSnYuZ2xvYmFsIFwiUmFuZ2UuRU5EX1RPX1NUQVJUXCJcbiAgbGV0IHN0YXJ0X3RvX2VuZCA9IEp2LkludC5nZXQgSnYuZ2xvYmFsIFwiUmFuZ2UuU1RBUlRfVE9fRU5EXCJcbiAgbGV0IHN0YXJ0X3RvX3N0YXJ0ID0gSnYuSW50LmdldCBKdi5nbG9iYWwgXCJSYW5nZS5TVEFSVF9UT19TVEFSVFwiXG5cbiAgbGV0IHJhbmdlID0gSnYuZ2V0IEp2Lmdsb2JhbCBcIlJhbmdlXCJcbiAgbGV0IGNyZWF0ZSAoKSA9IEp2Lm5ldycgcmFuZ2UgW3x8XVxuICBsZXQgY2xvbmVfcmFuZ2UgciA9IEp2LmNhbGwgciBcImNsb25lUmFuZ2VcIiBbfHxdXG4gIGxldCBjb2xsYXBzZSByIGIgPSBpZ25vcmUgQEAgSnYuY2FsbCByIFwiY29sbGFwc2VcIiBKdi5bfG9mX2Jvb2wgYnxdXG4gIGxldCBjb2xsYXBzZV90b19zdGFydCByID0gY29sbGFwc2UgciB0cnVlXG4gIGxldCBjb2xsYXBzZV90b19lbmQgciA9IGNvbGxhcHNlIHIgZmFsc2VcblxuICBsZXQgY29tcGFyZV9ib3VuZGFyeV9wb2ludHMgciBob3cgcicgPVxuICAgIEp2LnRvX2ludCBAQCBKdi5jYWxsIHIgXCJjb21wYXJlQm91bmRhcnlQb2ludHNcIiBbfEp2Lm9mX2ludCBob3c7IHInfF1cblxuICBsZXQgY29tcGFyZV9wb2ludCByIGVsIG9mZnNldCA9XG4gICAgSnYudG9faW50IEBAIEp2LmNhbGwgciBcImNvbXBhcmVQb2ludFwiIFt8RWwudG9fanYgZWw7IEp2Lm9mX2ludCBvZmZzZXR8XVxuXG4gICgqICBsZXQgY3JlYXRlX2NvbnRleHR1YWxfZnJhZ21lbnQgciA9IGZhaWx3aXRoIFwiY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50XCIgKilcblxuICBsZXQgZGVsZXRlX2NvbnRlbnRzIHIgPSBpZ25vcmUgQEAgSnYuY2FsbCByIFwiZGVsZXRlQ29udGVudHNcIiBbfHxdXG4gICgqXG4gIGxldCBleHRyYWN0X2NvbnRlbnRzIHIgPSBmYWlsd2l0aCBcImV4dHJhY3RDb250ZW50c1wiXG4gIGxldCBnZXRfYm91bmRpbmdfY2xpZW50X3JlY3QgciA9IGZhaWx3aXRoIFwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0XCJcbiAgbGV0IGdldF9jbGllbnRfcmVjdHMgciA9IGZhaWx3aXRoIFwiZ2V0Q2xpZW50UmVjdHNcIiAqKVxuXG4gIGxldCBpbnNlcnRfbm9kZSByIGVsID0gaWdub3JlIEBAIEp2LmNhbGwgciBcImluc2VydE5vZGVcIiBbfEVsLnRvX2p2IGVsfF1cbiAgbGV0IGludGVyc2VjdHNfbm9kZSByIGVsID1cbiAgICBKdi50b19ib29sIEBAIEp2LmNhbGwgciBcImludGVyc2VjdHNOb2RlXCIgW3xFbC50b19qdiBlbHxdXG5cbiAgbGV0IGlzX3BvaW50X2luX3JhbmdlIHIgZWwgb2Zmc2V0ID1cbiAgICBKdi50b19ib29sIEBAIEp2LmNhbGwgciBcImlzUG9pbnRJblJhbmdlXCIgW3xFbC50b19qdiBlbDsgSnYub2ZfaW50IG9mZnNldHxdXG5cbiAgbGV0IHNlbGVjdF9ub2RlIHIgZWwgPSBpZ25vcmUgQEAgSnYuY2FsbCByIFwic2VsZWN0Tm9kZVwiIFt8RWwudG9fanYgZWx8XVxuXG4gIGxldCBzZWxlY3Rfbm9kZV9jb250ZW50cyByIGVsID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCByIFwic2VsZWN0Tm9kZUNvbnRlbnRzXCIgW3xFbC50b19qdiBlbHxdXG5cbiAgbGV0IHNldF9lbmQgciBlbCBvZmZzZXQgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIHIgXCJzZXRFbmRcIiBbfEVsLnRvX2p2IGVsOyBKdi5vZl9pbnQgb2Zmc2V0fF1cblxuICBsZXQgc2V0X2VuZF9hZnRlciByIGVsID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCByIFwic2V0RW5kQWZ0ZXJcIiBbfEVsLnRvX2p2IGVsfF1cblxuICBsZXQgc2V0X2VuZF9iZWZvcmUgciBlbCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgciBcInNldEVuZEJlZm9yZVwiIFt8RWwudG9fanYgZWx8XVxuXG4gIGxldCBzZXRfc3RhcnQgciBlbCBvZmZzZXQgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIHIgXCJzZXRTdGFydFwiIFt8RWwudG9fanYgZWw7IEp2Lm9mX2ludCBvZmZzZXR8XVxuXG4gIGxldCBzZXRfc3RhcnRfYWZ0ZXIgciBlbCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgciBcInNldFN0YXJ0QWZ0ZXJcIiBbfEVsLnRvX2p2IGVsfF1cblxuICBsZXQgc2V0X3N0YXJ0X2JlZm9yZSByIGVsID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCByIFwic2V0U3RhcnRCZWZvcmVcIiBbfEVsLnRvX2p2IGVsfF1cblxuICBsZXQgc3Vycm91bmRfY29udGVudHMgciBlbCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgciBcInN1cnJvdW5kQ29udGVudHNcIiBbfEVsLnRvX2p2IGVsfF1cblxuICBsZXQgdG9fc3RyaW5nIHIgPSBKdi50b19qc3RyIEBAIEp2LmNhbGwgciBcInRvU3RyaW5nXCIgW3x8XVxuXG4gICgqIFByb3BlcnRpZXMgKilcblxuICBsZXQgY29sbGFwc2VkIHIgPSBKdi5Cb29sLmdldCByIFwiY29sbGFwc2VkXCJcbiAgbGV0IGNvbW1vbl9hbmNlc3Rvcl9jb250YWluZXIgciA9XG4gICAgRWwub2ZfanYgKEp2LmdldCByIFwiY29tbW9uQW5jZXN0b3JDb250YWluZXJcIilcblxuICBsZXQgZW5kX2NvbnRhaW5lciByID0gRWwub2ZfanYgKEp2LmdldCByIFwiZW5kQ29udGFpbmVyXCIpXG4gIGxldCBlbmRfb2Zmc2V0IHIgPSBKdi5JbnQuZ2V0IHIgXCJlbmRPZmZzZXRcIlxuICBsZXQgc3RhcnRfY29udGFpbmVyIHIgPSBFbC5vZl9qdiAoSnYuZ2V0IHIgXCJzdGFydENvbnRhaW5lclwiKVxuICBsZXQgc3RhcnRfb2Zmc2V0IHIgPSBKdi5JbnQuZ2V0IHIgXCJzYXJ0T2Zmc2V0XCJcbmVuZFxuXG5cbm1vZHVsZSBEb2N1bWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPSBFbC5kb2N1bWVudFxuICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcblxuICBsZXQgYXNfdGFyZ2V0IGQgPSBkXG5cbiAgKCogRWxlbWVudHMgKilcblxuICBsZXQgcm9vdCBkID0gRWwub2ZfanYgKEp2LmdldCBkIFwiZG9jdW1lbnRFbGVtZW50XCIpXG4gIGxldCBib2R5IGQgPVxuICAgIGxldCBiID0gSnYuZ2V0IGQgXCJib2R5XCIgaW5cbiAgICBpZiBKdi5pc19zb21lIGIgdGhlbiBFbC5vZl9qdiBiIGVsc2VcbiAgICBsZXQgZXJyID0gXCJEb2N1bWVudCBib2R5IGlzIG51bGwuIFRyeSB0byBkZWZlciB5b3VyIHNjcmlwdCBleGVjdXRpb24uXCIgIGluXG4gICAgSnYudGhyb3cgKEpzdHIudiBlcnIpXG5cbiAgbGV0IGhlYWQgZCA9IEVsLm9mX2p2IChKdi5nZXQgZCBcImhlYWRcIilcbiAgbGV0IGFjdGl2ZV9lbCBkID0gSnYudG9fb3B0aW9uIEVsLm9mX2p2IChKdi5nZXQgZCBcImFjdGl2ZUVsZW1lbnRcIilcblxuICBsZXQgZmluZF9lbF9ieV9pZCBkIGlkID1cbiAgICBKdi50b19vcHRpb24gRWwub2ZfanYgKEp2LmNhbGwgZCBcImdldEVsZW1lbnRCeUlkXCIgW3wgSnYub2ZfanN0ciBpZCB8XSlcblxuICBsZXQgZmluZF9lbHNfYnlfbmFtZSBkIG4gPVxuICAgIEVsLmVsX2xpc3Rfb2Zfbm9kZV9saXN0IChKdi5jYWxsIGQgXCJnZXRFbGVtZW50c0J5TmFtZVwiIFt8IEp2Lm9mX2pzdHIgbiB8XSlcblxuICAoKiBQcm9wZXJ0aWVzICopXG5cbiAgbGV0IHJlZmVycmVyIGQgPSBKdi5Kc3RyLmdldCBkIFwicmVmZXJyZXJcIlxuICBsZXQgdGl0bGUgZCA9IEp2LkpzdHIuZ2V0IGQgXCJ0aXRsZVwiXG4gIGxldCBzZXRfdGl0bGUgZCB0ID0gSnYuSnN0ci5zZXQgZCBcInRpdGxlXCIgdFxuXG4gIG1vZHVsZSBWaXNpYmlsaXR5X3N0YXRlID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSnN0ci50XG4gICAgbGV0IGhpZGRlbiA9IEpzdHIudiBcImhpZGRlblwiXG4gICAgbGV0IHZpc2libGUgPSBKc3RyLnYgXCJ2aXNpYmxlXCJcbiAgZW5kXG5cbiAgbGV0IHZpc2liaWxpdHlfc3RhdGUgZCA9IEp2LkpzdHIuZ2V0IGQgXCJ2aXNpYmlsaXR5U3RhdGVcIlxuXG4gICgqIFBvaW50ZXIgbG9jayAqKVxuXG4gIGxldCBwb2ludGVyX2xvY2tfZWxlbWVudCBkID1cbiAgICBKdi50b19vcHRpb24gRWwub2ZfanYgQEAgSnYuZ2V0IGQgXCJwb2ludGVyTG9ja0VsZW1lbnRcIlxuXG4gIGxldCBleGl0X3BvaW50ZXJfbG9jayBkID1cbiAgICBsZXQgZnV0ID0gRXYubmV4dCBFdi5wb2ludGVybG9ja2NoYW5nZSAoYXNfdGFyZ2V0IGQpIGluXG4gICAgaWdub3JlIEBAIEp2LmNhbGwgZCBcImV4aXRQb2ludGVyTG9ja1wiIFt8fF07XG4gICAgZnV0XG5cbiAgKCogRnVsbHNjcmVlbiAqKVxuXG4gIGxldCBmdWxsc2NyZWVuX2F2YWlsYWJsZSBkID0gSnYuQm9vbC5nZXQgZCBcImZ1bGxzY3JlZW5FbmFibGVkXCJcbiAgbGV0IGZ1bGxzY3JlZW5fZWxlbWVudCBkID1cbiAgICBKdi50b19vcHRpb24gRWwub2ZfanYgQEAgSnYuZ2V0IGQgXCJmdWxsc2NyZWVuRWxlbWVudFwiXG5cbiAgbGV0IGV4aXRfZnVsbHNjcmVlbiBkID1cbiAgICBGdXQub2ZfcHJvbWlzZSB+b2s6aWdub3JlIEBAIEp2LmNhbGwgZCBcImV4aXRGdWxsc2NyZWVuXCIgW3x8XVxuZW5kXG5cbigqIEJyb3dzZXIgaW50ZXJhY3Rpb24gKilcblxubW9kdWxlIEFib3J0ID0gc3RydWN0XG4gIG1vZHVsZSBTaWduYWwgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKdi50XG4gICAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG4gICAgZXh0ZXJuYWwgYXNfdGFyZ2V0IDogdCAtPiBFdi50YXJnZXQgPSBcIiVpZGVudGl0eVwiXG4gICAgbGV0IGFib3J0ZWQgcyA9IEp2LkJvb2wuZ2V0IHMgXCJhYm9ydGVkXCJcbiAgICBsZXQgYWJvcnQgPSBFdi5UeXBlLnZvaWQgKEpzdHIudiBcImFib3J0XCIpXG4gIGVuZFxuICB0eXBlIHQgPSBKdi50XG4gIGluY2x1ZGUgKEp2LklkIDogSnYuQ09OViB3aXRoIHR5cGUgdCA6PSB0KVxuICBsZXQgY29udHJvbGxlciAoKSA9IEp2Lm5ldycgKEp2LmdldCBKdi5nbG9iYWwgXCJBYm9ydENvbnRyb2xsZXJcIikgW3x8XVxuICBsZXQgc2lnbmFsIGMgPSBTaWduYWwub2ZfanYgKEp2LmdldCBjIFwic2lnbmFsXCIpXG4gIGxldCBhYm9ydCBjID0gaWdub3JlIEBAIEp2LmNhbGwgYyBcImFib3J0XCIgW3x8XVxuZW5kXG5cbm1vZHVsZSBDb25zb2xlID0gc3RydWN0XG4gIHR5cGUgdCA9IEp2LnRcbiAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG4gIGxldCBjYWxsIGMgbWV0aCBhcmdzID0gaWdub3JlIChKdi5jYWxsIGMgbWV0aCBhcmdzKVxuXG4gIGxldCBjID0gcmVmIChKdi5nZXQgSnYuZ2xvYmFsIFwiY29uc29sZVwiKVxuICBsZXQgZ2V0ICgpID0gIWNcbiAgbGV0IHNldCBuID0gYyA6PSBuXG4gIGxldCBjbGVhciAoKSA9IGNhbGwgIWMgXCJjbGVhclwiIFt8fF1cblxuICAoKiBMb2cgZnVuY3Rpb25zICopXG5cbiAgdHlwZSBtc2cgPSBbXSA6IG1zZyB8ICggOjogKSA6ICdhICogbXNnIC0+IG1zZ1xuICB0eXBlICdhIG1zZ3IgPSAnYSAtPiBtc2dcbiAgbGV0IG1zZyB2ID0gW3ZdXG4gIGxldCBzdHIgdiA9XG4gICAgbGV0IHYgPSBKdi5yZXByIHYgaW5cbiAgICBpZiBKdi5pc19udWxsIHYgdGhlbiBKc3RyLnYgXCJudWxsXCIgZWxzZVxuICAgIGlmIEp2LmlzX3VuZGVmaW5lZCB2IHRoZW4gSnN0ci52IFwidW5kZWZpbmVkXCIgZWxzZVxuICAgIEp2LnRvX2pzdHIgQEAgSnYuY2FsbCB2IFwidG9TdHJpbmdcIiBbfHxdXG5cbiAgbGV0IG1zZ190b19qdl9hcnJheSBtc2cgPVxuICAgIGxldCByZWMgbG9vcCBhIGkgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYVxuICAgIHwgdiA6OiB2cyAtPiBKdi5KYXJyYXkuc2V0IGEgaSAoSnYucmVwciB2KTsgbG9vcCBhIChpICsgMSkgdnNcbiAgICBpblxuICAgIEp2LnRvX2p2X2FycmF5IEBAIGxvb3AgKEp2LkphcnJheS5jcmVhdGUgMCkgMCBtc2dcblxuICB0eXBlIGxvZyA9IG1zZyAtPiB1bml0XG5cbiAgKCogTGV2ZWxsZWQgbG9nZ2luZyAqKVxuXG4gIGxldCBsb2cgbXNnID0gY2FsbCAhYyBcImxvZ1wiIChtc2dfdG9fanZfYXJyYXkgbXNnKVxuICBsZXQgdHJhY2UgbXNnID0gY2FsbCAhYyBcInRyYWNlXCIgKG1zZ190b19qdl9hcnJheSBtc2cpXG4gIGxldCBlcnJvciBtc2cgPSBjYWxsICFjIFwiZXJyb3JcIiAobXNnX3RvX2p2X2FycmF5IG1zZylcbiAgbGV0IHdhcm4gbXNnID0gY2FsbCAhYyBcIndhcm5cIiAobXNnX3RvX2p2X2FycmF5IG1zZylcbiAgbGV0IGluZm8gbXNnID0gY2FsbCAhYyBcImluZm9cIiAobXNnX3RvX2p2X2FycmF5IG1zZylcbiAgbGV0IGRlYnVnIG1zZyA9IGNhbGwgIWMgXCJkZWJ1Z1wiIChtc2dfdG9fanZfYXJyYXkgbXNnKVxuXG4gICgqIEFzc2VydGluZyBhbmQgZHVtcGluZyAqKVxuXG4gIGxldCBhc3NlcnQnIGIgbXNnID0gY2FsbCAhYyBcImFzc2VydFwiIChtc2dfdG9fanZfYXJyYXkgKEp2Lm9mX2Jvb2wgYiA6OiBtc2cpKVxuICBsZXQgZGlyIG8gPSBjYWxsICFjIFwiZGlyXCIgW3xKdi5yZXByIG98XVxuICBsZXQgdGFibGUgP2NvbHMgdiA9XG4gICAgbGV0IG1zZyA9IG1hdGNoIGNvbHMgd2l0aFxuICAgIHwgTm9uZSAtPiBbfEp2LnJlcHIgdnxdIHwgU29tZSBsIC0+IFt8SnYucmVwciB2OyBKdi5vZl9qc3RyX2xpc3QgbHxdXG4gICAgaW5cbiAgICBjYWxsICFjIFwidGFibGVcIiBtc2dcblxuICAoKiBHcm91cGluZyAqKVxuXG4gIGxldCBncm91cF9lbmQgKCkgPSBjYWxsICFjIFwiZ3JvdXBFbmRcIiBbfHxdXG4gIGxldCBncm91cCA/KGNsb3NlZCA9IGZhbHNlKSBtc2cgPSBtYXRjaCBjbG9zZWQgd2l0aFxuICB8IGZhbHNlIC0+IGNhbGwgIWMgXCJncm91cFwiIChtc2dfdG9fanZfYXJyYXkgbXNnKVxuICB8IHRydWUgLT4gY2FsbCAhYyBcImdyb3VwQ29sbGFwc2VkXCIgKG1zZ190b19qdl9hcnJheSBtc2cpXG5cbiAgKCogQ291bnRpbmcgKilcblxuICBsZXQgY291bnQgbGFiZWwgPSBjYWxsICFjIFwiY291bnRcIiBbfEp2Lm9mX2pzdHIgbGFiZWx8XVxuICBsZXQgY291bnRfcmVzZXQgbGFiZWwgPSBjYWxsICFjIFwiY291bnRSZXNldFwiIFt8SnYub2ZfanN0ciBsYWJlbHxdXG5cbiAgKCogVGltaW5nICopXG5cbiAgbGV0IHRpbWUgbGFiZWwgPSBjYWxsICFjIFwidGltZVwiIFt8IEp2Lm9mX2pzdHIgbGFiZWwgfF1cbiAgbGV0IHRpbWVfbG9nIGxhYmVsIG1zZyA9IGNhbGwgIWMgXCJ0aW1lTG9nXCIgKG1zZ190b19qdl9hcnJheSAobGFiZWwgOjogbXNnKSlcbiAgbGV0IHRpbWVfZW5kIGxhYmVsID0gY2FsbCAhYyBcInRpbWVFbmRcIiBbfCBKdi5vZl9qc3RyIGxhYmVsIHxdXG5cbiAgKCogUHJvZmlsaW5nICopXG5cbiAgbGV0IHByb2ZpbGUgbGFiZWwgPSBjYWxsICFjIFwicHJvZmlsZVwiIFt8SnYucmVwciBsYWJlbHxdXG4gIGxldCBwcm9maWxlX2VuZCBsYWJlbCA9IGNhbGwgIWMgXCJwcm9maWxlRW5kXCIgW3xKdi5yZXByIGxhYmVsfF1cbiAgbGV0IHRpbWVfc3RhbXAgbGFiZWwgPSBjYWxsICFjIFwidGltZVN0YW1wXCIgW3wgSnYub2ZfanN0ciBsYWJlbCB8XVxuXG4gICgqIFJlc3VsdCBsb2dnaW5nICopXG5cbiAgbGV0IGxvZ19yZXN1bHQgPyhvayA9IGZ1biB2IC0+IFt2XSkgP2Vycm9yOihlcnIgPSBmdW4gZSAtPiBbc3RyIGVdKSByID1cbiAgICAobWF0Y2ggciB3aXRoIE9rIHYgLT4gbG9nIChvayB2KSB8IEVycm9yIGUgLT4gZXJyb3IgKGVyciBlKSk7XG4gICAgclxuXG4gIGxldCBsb2dfaWZfZXJyb3IgPyhsID0gZXJyb3IpID8oZXJyb3JfbXNnID0gZnVuIGUgLT4gW3N0ciBlXSkgfnVzZSA9IGZ1bmN0aW9uXG4gIHwgT2sgdiAtPiB2IHwgRXJyb3IgZSAtPiBsIChlcnJvcl9tc2cgZSk7IHVzZVxuXG4gIGxldCBsb2dfaWZfZXJyb3InID9sID9lcnJvcl9tc2cgfnVzZSByID1cbiAgICBPayAobG9nX2lmX2Vycm9yID9sID9lcnJvcl9tc2cgfnVzZSByKVxuZW5kXG5cbm1vZHVsZSBXaW5kb3cgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gRWwud2luZG93XG4gIGluY2x1ZGUgKEp2LklkIDogSnYuQ09OViB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gIGxldCBhc190YXJnZXQgdyA9IEV2LnRhcmdldF9vZl9qdiB3XG5cbiAgbGV0IGNsb3NlZCB3ID0gSnYuQm9vbC5nZXQgdyBcImNsb3NlZFwiXG4gIGxldCBzY3JvbGxfeCB3ID0gSnYuRmxvYXQuZ2V0IHcgXCJzY3JvbGxYXCJcbiAgbGV0IHNjcm9sbF95IHcgPSBKdi5GbG9hdC5nZXQgdyBcInNjcm9sbFlcIlxuXG4gIGxldCBpbm5lcl93aWR0aCB3ID0gSnYuSW50LmdldCB3IFwiaW5uZXJXaWR0aFwiXG4gIGxldCBpbm5lcl9oZWlnaHQgdyA9IEp2LkludC5nZXQgdyBcImlubmVySGVpZ2h0XCJcblxuICBsZXQgcGFyZW50IHcgPVxuICAgIGxldCBwID0gSnYuZ2V0IHcgXCJwYXJlbnRcIiBpblxuICAgIGlmIHAgPT0gdyB0aGVuIE5vbmUgZWxzZSBTb21lIHBcblxuICAoKiBNZWRpYSBwcm9wZXJ0aWVzICopXG5cbiAgbGV0IGRldmljZV9waXhlbF9yYXRpbyB3ID0gSnYuRmxvYXQuZ2V0IHcgXCJkZXZpY2VQaXhlbFJhdGlvXCJcbiAgbGV0IG1hdGNoZXNfbWVkaWEgdyBzID1cbiAgICBsZXQgbyA9IEp2LmNhbGwgdyBcIm1hdGNoTWVkaWFcIiBbfEp2Lm9mX2pzdHIgc3xdIGluXG4gICAgSnYuQm9vbC5nZXQgbyBcIm1hdGNoZXNcIlxuXG4gIGxldCBwcmVmZXJzX2RhcmtfY29sb3Jfc2NoZW1lIHcgPVxuICAgIG1hdGNoZXNfbWVkaWEgdyAoSnN0ci52IFwiKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKVwiKVxuXG4gICgqIE9wZXJhdGlvbnMgKilcblxuICBsZXQgb3BlbicgPyhmZWF0dXJlcyA9IEpzdHIuZW1wdHkpID8obmFtZSA9IEpzdHIuZW1wdHkpIHcgdSA9XG4gICAgSnYudG9fb3B0aW9uIG9mX2p2IEBAXG4gICAgICBKdi5jYWxsIHcgXCJvcGVuXCIgW3xKdi5vZl9qc3RyIHU7IEp2Lm9mX2pzdHIgbmFtZTsgSnYub2ZfanN0ciBmZWF0dXJlc3xdXG5cbiAgbGV0IGNsb3NlIHcgPSBpZ25vcmUgKEp2LmNhbGwgdyBcImNsb3NlXCIgW3x8XSlcbiAgbGV0IHByaW50IHcgPSBpZ25vcmUgKEp2LmNhbGwgdyBcInByaW50XCIgW3x8XSlcbiAgbGV0IHJlbG9hZCB3ID0gaWdub3JlIChKdi5jYWxsIChKdi5nZXQgdyBcImxvY2F0aW9uXCIpIFwicmVsb2FkXCIgW3x8XSlcblxuICAoKiBMb2NhdGlvbiBhbmQgaGlzdG9yeSAqKVxuXG4gIGxldCBsb2NhdGlvbiB3ID0gSnYubmV3JyBVcmkudXJsIFt8IEp2LmdldCB3IFwibG9jYXRpb25cIiB8XVxuICBsZXQgc2V0X2xvY2F0aW9uIHcgdSA9IEp2LnNldCB3IFwibG9jYXRpb25cIiAoVXJpLnRvX2p2IHUpXG5cbiAgbW9kdWxlIEhpc3RvcnkgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU2Nyb2xsX3Jlc3RvcmF0aW9uID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBKc3RyLnRcbiAgICAgIGxldCBhdXRvID0gSnN0ci52IFwiYXV0b1wiXG4gICAgICBsZXQgbWFudWFsID0gSnN0ci52IFwibWFudWFsXCJcbiAgICBlbmRcbiAgICB0eXBlIHQgPSBKdi50XG4gICAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG4gICAgbGV0IGxlbmd0aCBoID0gSnYuSW50LmdldCBoIFwibGVuZ3RoXCJcbiAgICBsZXQgc2Nyb2xsX3Jlc3RvcmF0aW9uIGggPSBKdi5Kc3RyLmdldCBoIFwic2Nyb2xsUmVzdG9yYXRpb25cIlxuICAgIGxldCBzZXRfc2Nyb2xsX3Jlc3RvcmF0aW9uIGggciA9IEp2LkpzdHIuc2V0IGggXCJzY3JvbGxSZXN0b3JhdGlvblwiIHJcblxuICAgICgqIE1vdmluZyBpbiBoaXN0b3J5ICopXG5cbiAgICBsZXQgYmFjayBoID0gaWdub3JlIEBAIEp2LmNhbGwgaCBcImJhY2tcIiBbfHxdXG4gICAgbGV0IGZvcndhcmQgaCA9IGlnbm9yZSBAQCBKdi5jYWxsIGggXCJmb3J3YXJkXCIgW3x8XVxuICAgIGxldCBnbyBoIGQgPSBpZ25vcmUgQEAgSnYuY2FsbCBoIFwiZ29cIiBKdi5bfCBvZl9pbnQgZCB8XVxuXG4gICAgKCogTWFraW5nIGhpc3RvcnkgKilcblxuICAgIHR5cGUgc3RhdGUgPSBKdi50XG4gICAgbGV0IHN0YXRlIGggPSBKdi5nZXQgaCBcInN0YXRlXCJcbiAgICBsZXQgcHVzaF9zdGF0ZSA/KHN0YXRlID0gSnYubnVsbCkgPyh0aXRsZSA9IEpzdHIuZW1wdHkpID8odXJpID0gSnYubnVsbCkgaCA9XG4gICAgICBpZ25vcmUgQEAgSnYuY2FsbCBoIFwicHVzaFN0YXRlXCIgW3xzdGF0ZTsgSnYub2ZfanN0ciB0aXRsZTsgdXJpfF1cblxuICAgIGxldCByZXBsYWNlX3N0YXRlXG4gICAgICAgID8oc3RhdGUgPSBKdi5udWxsKSA/KHRpdGxlID0gSnN0ci5lbXB0eSkgPyh1cmkgPSBKdi5udWxsKSBoXG4gICAgICA9XG4gICAgICBpZ25vcmUgQEAgSnYuY2FsbCBoIFwicmVwbGFjZVN0YXRlXCIgW3xzdGF0ZTsgSnYub2ZfanN0ciB0aXRsZTsgdXJpfF1cblxuICAgICgqIEV2ZW50ICopXG5cbiAgICBtb2R1bGUgRXYgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBQb3BzdGF0ZSA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBKdi50XG4gICAgICAgIGxldCBzdGF0ZSBlID0gSnYuZ2V0IGUgXCJzdGF0ZVwiXG4gICAgICBlbmRcbiAgICAgIGxldCBwb3BzdGF0ZSA9IEV2LlR5cGUuY3JlYXRlIChKc3RyLnYgXCJwb3BzdGF0ZVwiKVxuICAgIGVuZFxuICBlbmRcblxuICBsZXQgaGlzdG9yeSB3ID0gSGlzdG9yeS5vZl9qdiBAQCBKdi5nZXQgdyBcImhpc3RvcnlcIlxuZW5kXG5cbm1vZHVsZSBOYXZpZ2F0b3IgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSnYudFxuICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcblxuICBsZXQgbGFuZ3VhZ2VzIG4gPSBtYXRjaCBKdi5maW5kIG4gXCJsYW5ndWFnZXNcIiB3aXRoXG4gIHwgU29tZSBhIC0+IEp2LnRvX2pzdHJfbGlzdCBhXG4gIHwgTm9uZSAtPlxuICAgICAgbWF0Y2ggSnYuSnN0ci5maW5kIG4gXCJsYW5ndWFnZVwiIHdpdGhcbiAgICAgIHwgU29tZSB2IC0+IFt2XSB8IE5vbmUgLT4gW11cblxuICBsZXQgbWF4X3RvdWNoX3BvaW50cyBuID1cbiAgICBsZXQgdCA9IEp2LmdldCBuIFwibWF4VG91Y2hQb2ludHNcIiBpblxuICAgIGlmIEp2LmlzX25vbmUgdCB0aGVuIDAgZWxzZSBKdi50b19pbnQgdFxuXG4gIGxldCBvbmxpbmUgbiA9IEp2LkJvb2wuZ2V0IG4gXCJvbkxpbmVcIlxuZW5kXG5cbm1vZHVsZSBQZXJmb3JtYW5jZSA9IHN0cnVjdFxuICBtb2R1bGUgRW50cnkgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVHlwZSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gSnN0ci50XG4gICAgICBsZXQgZnJhbWUgPSBKc3RyLnYgXCJmcmFtZVwiXG4gICAgICBsZXQgbmF2aWdhdGlvbiA9IEpzdHIudiBcIm5hdmlnYXRpb25cIlxuICAgICAgbGV0IHJlc291cmNlID0gSnN0ci52IFwicmVzb3VyY2VcIlxuICAgICAgbGV0IG1hcmsgPSBKc3RyLnYgXCJtYXJrXCJcbiAgICAgIGxldCBtZWFzdXJlID0gSnN0ci52IFwibWVhc3VyZVwiXG4gICAgICBsZXQgcGFpbnQgPSBKc3RyLnYgXCJwYWludFwiXG4gICAgICBsZXQgbG9uZ3Rhc2sgPSBKc3RyLnYgXCJsb25ndGFza1wiXG4gICAgZW5kXG4gICAgdHlwZSB0ID0gSnYudFxuICAgIHR5cGUgZW50cnkgPSB0XG4gICAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG4gICAgbGV0IG5hbWUgZSA9IEp2LkpzdHIuZ2V0IGUgXCJuYW1lXCJcbiAgICBsZXQgdHlwZScgZSA9IEp2LkpzdHIuZ2V0IGUgXCJlbnRyeVR5cGVcIlxuICAgIGxldCBzdGFydF90aW1lIGUgPSBKdi5GbG9hdC5nZXQgZSBcInN0YXJ0VGltZVwiXG4gICAgbGV0IGVuZF90aW1lIGUgPSBKdi5GbG9hdC5nZXQgZSBcImVuZFRpbWVcIlxuICAgIGxldCBkdXJhdGlvbiBlID0gSnYuRmxvYXQuZ2V0IGUgXCJkdXJhdGlvblwiXG4gICAgbGV0IHRvX2pzb24gZSA9IEp2LmNhbGwgZSBcInRvSlNPTlwiIFt8fF1cblxuICAgIG1vZHVsZSBSZXNvdXJjZV90aW1pbmcgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEp2LnRcbiAgICAgIGluY2x1ZGUgKEp2LklkIDogSnYuQ09OViB3aXRoIHR5cGUgdCA6PSB0KVxuICAgICAgbGV0IGFzX2VudHJ5ID0gRnVuLmlkXG4gICAgICBsZXQgaW5pdGlhdG9yX3R5cGUgZSA9IEp2LkpzdHIuZ2V0IGUgXCJpbml0aWF0b3JUeXBlXCJcbiAgICAgIGxldCBuZXh0X2hvcF9wcm90b2NvbCBlID0gSnYuSnN0ci5nZXQgZSBcIm5leHRIb3BQcm90b2NvbFwiXG4gICAgICBsZXQgd29ya2VyX3N0YXJ0IGUgPSBKdi5GbG9hdC5nZXQgZSBcIndvcmtlclN0YXJ0XCJcbiAgICAgIGxldCByZWRpcmVjdF9zdGFydCBlID0gSnYuRmxvYXQuZ2V0IGUgXCJyZWRpcmVjdFN0YXJ0XCJcbiAgICAgIGxldCByZWRpcmVjdF9lbmQgZSA9IEp2LkZsb2F0LmdldCBlIFwicmVkaXJlY3RFbmRcIlxuICAgICAgbGV0IGZldGNoX3N0YXJ0IGUgPSBKdi5GbG9hdC5nZXQgZSBcImZldGNoU3RhcnRcIlxuICAgICAgbGV0IGRvbWFpbl9sb29rdXBfc3RhcnQgZSA9IEp2LkZsb2F0LmdldCBlIFwiZG9tYWluTG9va3VwU3RhcnRcIlxuICAgICAgbGV0IGRvbWFpbl9sb29rdXBfZW5kIGUgPSBKdi5GbG9hdC5nZXQgZSBcImRvbWFpbkxvb2t1cEVuZFwiXG4gICAgICBsZXQgY29ubmVjdF9zdGFydCBlID0gSnYuRmxvYXQuZ2V0IGUgXCJjb25uZWN0U3RhcnRcIlxuICAgICAgbGV0IGNvbm5lY3RfZW5kIGUgPSBKdi5GbG9hdC5nZXQgZSBcImNvbm5lY3RFbmRcIlxuICAgICAgbGV0IHNlY3VyZV9jb25uZWN0aW9uX3N0YXJ0IGUgPSBKdi5GbG9hdC5nZXQgZSBcInNlY3VyZUNvbm5lY3Rpb25TdGFydFwiXG4gICAgICBsZXQgcmVxdWVzdF9zdGFydCBlID0gSnYuRmxvYXQuZ2V0IGUgXCJyZXF1ZXN0U3RhcnRcIlxuICAgICAgbGV0IHJlc3BvbnNlX3N0YXJ0IGUgPSBKdi5GbG9hdC5nZXQgZSBcInJlc3BvbnNlU3RhcnRcIlxuICAgICAgbGV0IHJlc3BvbnNlX2VuZCBlID0gSnYuRmxvYXQuZ2V0IGUgXCJyZXNwb25zZUVuZFwiXG4gICAgICBsZXQgdHJhbnNmZXJfc2l6ZSBlID0gSnYuSW50LmdldCBlIFwidHJhbnNmZXJTaXplXCJcbiAgICAgIGxldCBlbmNvZGVkX2JvZHlfc2l6ZSBlID0gSnYuSW50LmdldCBlIFwiZW5jb2RlZEJvZHlTaXplXCJcbiAgICAgIGxldCBkZWNvZGVkX2JvZHlfc2l6ZSBlID0gSnYuSW50LmdldCBlIFwiZGVjb2RlZEJvZHlTaXplXCJcbiAgICBlbmRcbiAgICBtb2R1bGUgTmF2aWdhdGlvbl90aW1pbmcgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUeXBlID0gIHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBKc3RyLnRcbiAgICAgICAgbGV0IG5hdmlnYXRlID0gSnN0ci52IFwibmF2aWdhdGVcIlxuICAgICAgICBsZXQgcmVsb2FkID0gSnN0ci52IFwicmVsb2FkXCJcbiAgICAgICAgbGV0IGJhY2tfZm9yd2FyZCA9IEpzdHIudiBcImJhY2tfZm9yd2FyZFwiXG4gICAgICAgIGxldCBwcmVyZW5kZXIgPSBKc3RyLnYgXCJwcmVyZW5kZXJcIlxuICAgICAgZW5kXG4gICAgICB0eXBlIHQgPSBKdi50XG4gICAgICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcblxuICAgICAgbGV0IGFzX3Jlc291cmNlX3RpbWluZyA9IEZ1bi5pZFxuICAgICAgbGV0IGFzX2VudHJ5ID0gRnVuLmlkXG4gICAgICBsZXQgdW5sb2FkX2V2ZW50X3N0YXJ0IGUgPSBKdi5GbG9hdC5nZXQgZSBcInVubG9hZEV2ZW50U3RhcnRcIlxuICAgICAgbGV0IHVubG9hZF9ldmVudF9lbmQgZSA9IEp2LkZsb2F0LmdldCBlIFwidW5sb2FkRXZlbnRFbmRcIlxuICAgICAgbGV0IGRvbV9pbnRlcmFjdGl2ZSBlID0gSnYuRmxvYXQuZ2V0IGUgXCJkb21JbnRlcmFjdGl2ZVwiXG4gICAgICBsZXQgZG9tX2NvbnRlbnRfbG9hZGVkX2V2ZW50X3N0YXJ0IGUgPVxuICAgICAgICBKdi5GbG9hdC5nZXQgZSBcImRvbUNvbnRlbnRMb2FkZWRFdmVudFN0YXJ0XCJcblxuICAgICAgbGV0IGRvbV9jb250ZW50X2xvYWRlZF9ldmVudF9lbmQgZSA9XG4gICAgICAgIEp2LkZsb2F0LmdldCBlIFwiZG9tQ29udGVudExvYWRlZEV2ZW50RW5kXCJcblxuICAgICAgbGV0IGRvbV9jb21wbGV0ZSBlID0gSnYuRmxvYXQuZ2V0IGUgXCJkb21Db21wbGV0ZVwiXG4gICAgICBsZXQgbG9hZF9ldmVudF9zdGFydCBlID0gSnYuRmxvYXQuZ2V0IGUgXCJsb2FkRXZlbnRTdGFydFwiXG4gICAgICBsZXQgbG9hZF9ldmVudF9lbmQgZSA9IEp2LkZsb2F0LmdldCBlIFwibG9hZEV2ZW50RW5kXCJcbiAgICAgIGxldCB0eXBlJyBlID0gSnYuSnN0ci5nZXQgZSBcInR5cGUnXCJcbiAgICAgIGxldCByZWRpcmVjdF9jb3VudCBlID0gSnYuSW50LmdldCBlIFwicmVkaXJlY3RDb3VudFwiXG4gICAgZW5kXG4gICAgbGV0IGFzX3Jlc291cmNlX3RpbWluZyA9IEZ1bi5pZFxuICAgIGxldCBhc19uYXZpZ2F0aW9uX3RpbWluZyA9IEZ1bi5pZFxuICBlbmRcblxuICB0eXBlIHQgPSBKdi50XG4gIGluY2x1ZGUgKEp2LklkIDogSnYuQ09OViB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gIGxldCB0aW1lX29yaWdpbl9tcyBwID0gSnYuRmxvYXQuZ2V0IHAgXCJ0aW1lT3JpZ2luXCJcbiAgbGV0IGNsZWFyX21hcmtzIHAgbiA9XG4gICAgbGV0IGFyZ3MgPSBtYXRjaCBuIHdpdGggTm9uZSAtPiBbfHxdIHwgU29tZSBuIC0+IEp2Llt8b2ZfanN0ciBuIHxdIGluXG4gICAgaWdub3JlIEBAIEp2LmNhbGwgcCBcImNsZWFyTWFya3NcIiBhcmdzXG5cbiAgbGV0IGNsZWFyX21lYXN1cmVzIHAgbiA9XG4gICAgbGV0IGFyZ3MgPSBtYXRjaCBuIHdpdGggTm9uZSAtPiBbfHxdIHwgU29tZSBuIC0+IEp2Llt8b2ZfanN0ciBuIHxdIGluXG4gICAgaWdub3JlIEBAIEp2LmNhbGwgcCBcImNsZWFyTWVhc3VyZXNcIiBhcmdzXG5cbiAgbGV0IGNsZWFyX3Jlc291cmNlX3RpbWluZ3MgcCA9IGlnbm9yZSBAQCBKdi5jYWxsIHAgXCJjbGVhclJlc291cmNlVGltaW5nc1wiIFt8fF1cbiAgbGV0IGdldF9lbnRyaWVzID90eXBlJyA/bmFtZSBwID0gbWF0Y2ggbmFtZSwgdHlwZScgd2l0aFxuICB8IE5vbmUsIE5vbmUgLT5cbiAgICAgIEp2LnRvX2xpc3QgRW50cnkub2ZfanYgQEAgSnYuY2FsbCBwIFwiZ2V0RW50cmllc1wiIFt8fF1cbiAgfCBOb25lLCBTb21lIHQgLT5cbiAgICAgIEp2LnRvX2xpc3QgRW50cnkub2ZfanYgQEAgSnYuY2FsbCBwIFwiZ2V0RW50cmllc0J5VHlwZVwiIEp2Llt8IG9mX2pzdHIgdCB8XVxuICB8IFNvbWUgbiwgTm9uZSAtPlxuICAgICAgSnYudG9fbGlzdCBFbnRyeS5vZl9qdiBAQCBKdi5jYWxsIHAgXCJnZXRFbnRyaWVzQnlOYW1lXCIgSnYuW3wgb2ZfanN0ciBuIHxdXG4gIHwgU29tZSBuLCBTb21lIHQgLT5cbiAgICAgIEp2LnRvX2xpc3QgRW50cnkub2ZfanYgQEAgSnYuY2FsbCBwIFwiZ2V0RW50cmllc0J5TmFtZVwiXG4gICAgICAgIEp2Llt8IG9mX2pzdHIgbjsgb2ZfanN0ciB0IHxdXG5cbiAgbGV0IG1hcmsgcCBuID0gaWdub3JlIEBAIEp2LmNhbGwgcCBcIm1hcmtcIiBKdi5bfCBvZl9qc3RyIG4gfF1cbiAgbGV0IG1lYXN1cmUgP3N0YXJ0ID9zdG9wIHAgbiA9IG1hdGNoIHN0YXJ0LCBzdG9wIHdpdGhcbiAgfCBOb25lLCBOb25lIC0+IGlnbm9yZSBAQCBKdi5jYWxsIHAgXCJtZWFzdXJlXCIgW3x8XVxuICB8IFNvbWUgcywgTm9uZSAtPiBpZ25vcmUgQEAgSnYuY2FsbCBwIFwibWVhc3VyZVwiIEp2Llt8IG9mX2pzdHIgc3xdXG4gIHwgU29tZSBzLCBTb21lIGUgLT4gaWdub3JlIEBAIEp2LmNhbGwgcCBcIm1lYXN1cmVcIiBKdi5bfCBvZl9qc3RyIHM7IG9mX2pzdHIgZXxdXG4gIHwgTm9uZSwgU29tZSBlIC0+IGlnbm9yZSBAQCBKdi5jYWxsIHAgXCJtZWFzdXJlXCIgSnYuW3wgdW5kZWZpbmVkOyBvZl9qc3RyIGV8XVxuXG4gIGxldCBub3dfbXMgcCA9IEp2LnRvX2Zsb2F0IEBAIEp2LmNhbGwgcCBcIm5vd1wiIFt8fF1cbiAgbGV0IHRvX2pzb24gcCA9IEp2LmNhbGwgcCBcInRvSlNPTlwiIFt8fF1cbmVuZFxuXG5tb2R1bGUgRyA9IHN0cnVjdFxuXG4gICgqIEdsb2JhbCBvYmplY3RzICopXG5cbiAgbGV0IGNvbnNvbGUgPSBKdi5nZXQgSnYuZ2xvYmFsIFwiY29uc29sZVwiXG4gIGxldCBkb2N1bWVudCA9IEVsLmdsb2JhbF9kb2N1bWVudFxuICBsZXQgbmF2aWdhdG9yID0gSnYuZ2V0IEp2Lmdsb2JhbCBcIm5hdmlnYXRvclwiXG4gIGxldCBwZXJmb3JtYW5jZSA9IEp2LmdldCBKdi5nbG9iYWwgXCJwZXJmb3JtYW5jZVwiXG4gIGxldCB3aW5kb3cgPSBKdi5nZXQgSnYuZ2xvYmFsIFwid2luZG93XCJcblxuICAoKiBHbG9iYWwgcHJvcGVydGllcyAqKVxuXG4gIGxldCBpc19zZWN1cmVfY29udGV4dCA9IEp2LkJvb2wuZ2V0IEp2Lmdsb2JhbCBcImlzU2VjdXJlQ29udGV4dFwiXG5cbiAgKCogRXZlbnQgdGFyZ2V0ICopXG5cbiAgbGV0IHRhcmdldCA9IEp2Lmdsb2JhbFxuXG4gICgqIFRpbWVycyAqKVxuXG4gIHR5cGUgdGltZXJfaWQgPSBpbnRcblxuICBsZXQgc2V0X3RpbWVvdXQgfm1zIGYgPVxuICAgIEp2LnRvX2ludCBAQFxuICAgIEp2LmNhbGwgSnYuZ2xvYmFsIFwic2V0VGltZW91dFwiIFt8IEp2LmNhbGxiYWNrIH5hcml0eToxIGY7IEp2Lm9mX2ludCBtcyB8XVxuXG4gIGxldCBzZXRfaW50ZXJ2YWwgfm1zIGYgPVxuICAgIEp2LnRvX2ludCBAQFxuICAgIEp2LmNhbGwgSnYuZ2xvYmFsIFwic2V0SW50ZXJ2YWxcIiBbfCBKdi5jYWxsYmFjayB+YXJpdHk6MSBmOyBKdi5vZl9pbnQgbXMgfF1cblxuICBsZXQgc3RvcF90aW1lciB0aWQgPVxuICAgICgqIGFjY29yZGluZyB0byBzcGVjIGludGVydmFsIGFuZCB0aW1lb3V0IHNoYXJlIHRoZSBzYW1lIGludHMgKilcbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBKdi5nbG9iYWwgXCJjbGVhclRpbWVvdXRcIiBbfCBKdi5vZl9pbnQgdGlkIHxdXG5cbiAgKCogQW5pbWF0aW9uIHRpbWluZyAqKVxuXG4gIHR5cGUgYW5pbWF0aW9uX2ZyYW1lX2lkID0gaW50XG5cbiAgbGV0IHJlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lIGYgPVxuICAgIEp2LnRvX2ludCBAQCBKdi5jYWxsIEp2Lmdsb2JhbCBcInJlcXVlc3RBbmltYXRpb25GcmFtZVwiXG4gICAgICBbfEp2LmNhbGxiYWNrIH5hcml0eToxIGZ8XVxuXG4gIGxldCBjYW5jZWxfYW5pbWF0aW9uX2ZyYW1lIGZpZCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgSnYuZ2xvYmFsIFwiY2FuY2VsQW5pbWF0aW9uRnJhbWVcIiBbfCBKdi5vZl9pbnQgZmlkfF1cbmVuZFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2pzX2Zyb21fYm9vbCIsImNhbWxfanNfZ2V0IiwiY2FtbF9qc19tZXRoX2NhbGwiLCJjYW1sX2pzX3NldCIsImNhbWxfanNfdG9fYXJyYXkiLCJjYW1sX2pzX3RvX2ludDMyIiwiY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdCIsImNhbWxfbGlzdF9vZl9qc19hcnJheSIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiY2FtbF9jYWxsNCIsImEzIiwiY2FtbF9jYWxsNSIsImE0IiwiZ2xvYmFsX2RhdGEiLCJKdiIsIkpzdHIiLCJGdXQiLCJTdGRsaWJfTGlzdCIsIlN0ZGxpYl9PcHRpb24iLCJTdGRsaWJfQXJyYXkiLCJTdGRsaWJfQmlnYXJyYXkiLCJTdGRsaWJfU3lzIiwiY3N0X2J1YmJsZXMiLCJjc3RfY2FuY2VsYWJsZSIsImNzdF9jb21wb3NlZCIsImluaXQiLCJidWJibGVzIiwiY2FuY2VsYWJsZSIsImNvbXBvc2VkIiwicGFyYW0iLCJvIiwiZXZlbnQiLCJjcmVhdGUiLCJvcHQiLCJ0IiwiY3N0X3R5cGUiLCJ0eXBlIiwiZSIsInRhcmdldCIsImN1cnJlbnRfdGFyZ2V0IiwiY29tcG9zZWRfcGF0aCIsImV2ZW50X3BoYXNlIiwic3dpdGNoZXIiLCJzdG9wX3Byb3BhZ2F0aW9uIiwic3RvcF9pbW1lZGlhdGVfcHJvcGFnYXRpb24iLCJwcmV2ZW50X2RlZmF1bHQiLCJkZWZhdWx0X3ByZXZlbnRlZCIsImlzX3RydXN0ZWQiLCJjc3RfdGltZVN0YW1wIiwidGltZXN0YW1wX21zIiwiZGlzcGF0Y2giLCJsaXN0ZW5fb3B0cyIsImNhcHR1cmUiLCJvbmNlIiwicGFzc2l2ZSIsImxpc3RlbiIsIm9wdHMiLCJ1bmxpc3RlbiIsIm5leHQiLCJtYXRjaCIsInNldCIsImZ1dCIsImtpbmQiLCJpIiwiZ2V0X2ZpbGUiLCJnZXRfanN0ciIsInNldF9zdHIiLCJzdHIiLCJjc3RfbGVuZ3RoIiwibGVuZ3RoIiwibCIsImFkZF9qc3RyIiwiYWRkX2ZpbGUiLCJmaWxlIiwicmVtb3ZlIiwiY2xlYXIiLCJpdGVtcyIsImFjYyIsImNzdF9kcm9wRWZmZWN0IiwiZHJvcF9lZmZlY3QiLCJkIiwic2V0X2Ryb3BfZWZmZWN0IiwiY3N0X2VmZmVjdEFsbG93ZWQiLCJlZmZlY3RfYWxsb3dlZCIsInNldF9lZmZlY3RfYWxsb3dlZCIsImRhdGEiLCJjIiwiY3N0X2RhdGEiLCJtZXNzYWdlIiwiZmlsZW5hbWUiLCJsaW5lbm8iLCJjb2xubyIsImVycm9yIiwid2FpdF91bnRpbCIsImNzdF9yZWxhdGVkVGFyZ2V0IiwicmVsYXRlZF90YXJnZXQiLCJtIiwib2xkX3VybCIsIm5ld191cmwiLCJjc3RfZGF0YVRyYW5zZmVyIiwiZGF0YV90cmFuc2ZlciIsImlucHV0X3R5cGUiLCJjc3RfaXNDb21wb3NpbmciLCJpc19jb21wb3NpbmciLCJrZXkiLCJrIiwiY3N0X2NvZGUiLCJjb2RlIiwibG9jYXRpb24iLCJyZXBlYXQiLCJjc3RfYWx0S2V5IiwiYWx0X2tleSIsImNzdF9jdHJsS2V5IiwiY3RybF9rZXkiLCJjc3Rfc2hpZnRLZXkiLCJzaGlmdF9rZXkiLCJjc3RfbWV0YUtleSIsIm1ldGFfa2V5IiwiZ2V0X21vZGlmaWVyX3N0YXRlIiwib2Zmc2V0X3giLCJvZmZzZXRfeSIsImNsaWVudF94IiwiY2xpZW50X3kiLCJwYWdlX3giLCJwYWdlX3kiLCJzY3JlZW5feCIsInNjcmVlbl95IiwibW92ZW1lbnRfeCIsIm1vdmVtZW50X3kiLCJjc3RfYnV0dG9uIiwiYnV0dG9uIiwiYnV0dG9ucyIsImlkIiwicCIsImNzdF93aWR0aCIsIndpZHRoIiwiY3N0X2hlaWdodCIsImhlaWdodCIsInByZXNzdXJlIiwidGFuZ2VudGlhbF9wcmVzc3VyZSIsInRpbHRfeCIsInRpbHRfeSIsInR3aXN0IiwiYWx0aXR1ZGVfYW5nbGUiLCJhemltdXRoX2FuZ2xlIiwiaXNfcHJpbWFyeSIsImdldF9jb2FsZXNjZWRfZXZlbnRzIiwiZ2V0X3ByZWRpY3RlZF9ldmVudHMiLCJkZWx0YV94IiwidyIsImRlbHRhX3kiLCJkZWx0YV96IiwiZGVsdGFfbW9kZSIsImFycmF5X2J1ZmZlciIsIm4iLCJjc3RfYnl0ZUxlbmd0aCIsImJ5dGVfbGVuZ3RoIiwiYSIsInNsaWNlIiwic3RvcCIsInN0YXJ0IiwiYnVmZmVyIiwiYnl0ZV9vZmZzZXQiLCJkYXRhdmlldyIsIm9mX2J1ZmZlciIsImIiLCJnZXRfaW50OCIsImdldF9pbnQxNl9iZSIsImdldF9pbnQxNl9sZSIsImdldF9pbnQzMl9iZSIsImdldF9pbnQzMl9sZSIsImdldF91aW50OCIsImdldF91aW50MTZfYmUiLCJnZXRfdWludDE2X2xlIiwiZ2V0X3VpbnQzMl9iZSIsImdldF91aW50MzJfbGUiLCJnZXRfZmxvYXQzMl9iZSIsImdldF9mbG9hdDMyX2xlIiwiZ2V0X2Zsb2F0NjRfYmUiLCJnZXRfZmxvYXQ2NF9sZSIsInNldF9pbnQ4IiwidiIsInNldF9pbnQxNl9iZSIsInNldF9pbnQxNl9sZSIsInNldF9pbnQzMl9iZSIsInNldF9pbnQzMl9sZSIsInNldF91aW50OCIsInNldF91aW50MTZfYmUiLCJzZXRfdWludDE2X2xlIiwic2V0X3VpbnQzMl9iZSIsInNldF91aW50MzJfbGUiLCJzZXRfZmxvYXQzMl9iZSIsInNldF9mbG9hdDMyX2xlIiwic2V0X2Zsb2F0NjRfYmUiLCJzZXRfZmxvYXQ2NF9sZSIsInR5cGVfc2l6ZV9pbl9ieXRlcyIsImNvbnNfb2ZfdHlwZSIsImFyZ3MiLCJjc3RfbmFtZSIsInMiLCJlbHRfdG9fanYiLCJlbHRfb2ZfanYiLCJjc3RfYXV0byIsImNzdF9kaXIiLCJjc3RfZXJyb3IiLCJjc3RfaW5wdXQiLCJjc3Rfc291cmNlIiwiY3N0X3RhYmxlIiwiY3N0X3RpbWUiLCJjc3RfdGl0bGUiLCJjc3RfdGltZU9yaWdpbiIsImNzdF9yZWRpcmVjdENvdW50IiwiY3N0X2xvYWRFdmVudEVuZCIsImNzdF9sb2FkRXZlbnRTdGFydCIsImNzdF9kb21Db21wbGV0ZSIsImNzdF9kb21Db250ZW50TG9hZGVkRXZlbnRFbmQiLCJjc3RfZG9tQ29udGVudExvYWRlZEV2ZW50U3RhcnQiLCJjc3RfZG9tSW50ZXJhY3RpdmUiLCJjc3RfdW5sb2FkRXZlbnRFbmQiLCJjc3RfdW5sb2FkRXZlbnRTdGFydCIsImNzdF9kZWNvZGVkQm9keVNpemUiLCJjc3RfZW5jb2RlZEJvZHlTaXplIiwiY3N0X3RyYW5zZmVyU2l6ZSIsImNzdF9yZXNwb25zZUVuZCIsImNzdF9yZXNwb25zZVN0YXJ0IiwiY3N0X3JlcXVlc3RTdGFydCIsImNzdF9zZWN1cmVDb25uZWN0aW9uU3RhcnQiLCJjc3RfY29ubmVjdEVuZCIsImNzdF9jb25uZWN0U3RhcnQiLCJjc3RfZG9tYWluTG9va3VwRW5kIiwiY3N0X2RvbWFpbkxvb2t1cFN0YXJ0IiwiY3N0X2ZldGNoU3RhcnQiLCJjc3RfcmVkaXJlY3RFbmQiLCJjc3RfcmVkaXJlY3RTdGFydCIsImNzdF93b3JrZXJTdGFydCIsImNzdF9uZXh0SG9wUHJvdG9jb2wiLCJjc3RfaW5pdGlhdG9yVHlwZSIsImNzdF9kdXJhdGlvbiIsImNzdF9lbmRUaW1lIiwiY3N0X3N0YXJ0VGltZSIsImNzdF9lbnRyeVR5cGUiLCJjc3Rfb25MaW5lIiwiY3N0X2xhbmd1YWdlcyIsImNzdF9sYW5ndWFnZSIsImNzdF9zY3JvbGxSZXN0b3JhdGlvbiIsImNzdF9tYXRjaGVzIiwiY3N0X2RldmljZVBpeGVsUmF0aW8iLCJjc3RfaW5uZXJIZWlnaHQiLCJjc3RfaW5uZXJXaWR0aCIsImNzdF9zY3JvbGxZIiwiY3N0X3Njcm9sbFgiLCJjc3RfY2xvc2VkIiwiY3N0X3Byb2ZpbGVFbmQiLCJjc3RfcHJvZmlsZSIsImNzdF90aW1lRW5kIiwiY3N0X3RpbWVMb2ciLCJjc3RfY291bnRSZXNldCIsImNzdF9jb3VudCIsImNzdF9ncm91cENvbGxhcHNlZCIsImNzdF9ncm91cCIsImNzdF9ncm91cEVuZCIsImNzdF9hc3NlcnQiLCJjc3RfZGVidWciLCJjc3RfaW5mbyIsImNzdF93YXJuIiwiY3N0X3RyYWNlIiwiY3N0X2xvZyIsImNzdF9jbGVhciIsImNzdF9hYm9ydGVkIiwiY3N0X2Z1bGxzY3JlZW5FbmFibGVkIiwiY3N0X3Zpc2liaWxpdHlTdGF0ZSIsImNzdF9yZWZlcnJlciIsImNzdF9zYXJ0T2Zmc2V0IiwiY3N0X2VuZE9mZnNldCIsImNzdF9jb2xsYXBzZWQiLCJjc3RfZmlsZXMiLCJjc3RfbmF2aWdhdGlvblVJIiwiY3N0X3Ntb290aCIsImNzdF9pbnN0YW50IiwiY3N0X2NlbnRlciIsImNzdF9uZWFyZXN0IiwiY3N0X3N0YXJ0IiwiY3N0X2VuZCIsImNzdF9zY3JvbGxIZWlnaHQiLCJjc3Rfc2Nyb2xsV2lkdGgiLCJjc3Rfc2Nyb2xsVG9wIiwiY3N0X3Njcm9sbExlZnQiLCJjc3Rfb2Zmc2V0VG9wIiwiY3N0X29mZnNldExlZnQiLCJjc3Rfb2Zmc2V0SGVpZ2h0IiwiY3N0X29mZnNldFdpZHRoIiwiY3N0X3kiLCJjc3RfeCIsImNzdF9jbGllbnRIZWlnaHQiLCJjc3RfY2xpZW50V2lkdGgiLCJjc3RfY2xpZW50VG9wIiwiY3N0X2NsaWVudExlZnQiLCJjc3RfbmV4dEVsZW1lbnRTaWJsaW5nIiwiY3N0X3ByZXZpb3VzRWxlbWVudFNpYmxpbmciLCJjc3RfcGFyZW50Tm9kZSIsImNzdF90ZXh0Q29udGVudCIsImNzdF9ub2RlVmFsdWUiLCJjc3Rfbm9kZU5hbWUiLCJjc3Rfbm9kZVR5cGUiLCJjc3RfdW5pY29kZVNldHMiLCJjc3RfdW5pY29kZSIsImNzdF9zdGlja3kiLCJjc3RfbXVsdGlsaW5lIiwiY3N0X2lnbm9yZUNhc2UiLCJjc3RfaGFzSW5kaWNlcyIsImNzdF9nbG9iYWwiLCJjc3RfZmxhZ3MiLCJjc3RfZG90QWxsIiwiY3N0X2xhc3RJbmRleCIsImNzdF9pbmRpY2VzIiwiY3N0X2dyb3VwcyIsImNzdF9pbmRleCIsImNzdF9oYXNoIiwiY3N0X3NlYXJjaCIsImNzdF9wYXRobmFtZSIsImNzdF9wb3J0IiwiY3N0X2hvc3RuYW1lIiwiY3N0X3Byb3RvY29sIiwiY3N0X2xhc3RNb2RpZmllZCIsImNzdF93ZWJraXRSZWxhdGl2ZVBhdGgiLCJjc3RfbGVuZ3RoQ29tcHV0YWJsZSIsImNzdF9sb2FkZWQiLCJjc3RfdG90YWwiLCJjc3Rfc2l6ZSIsImNzdF9lbmRpbmdzIiwiY3N0X3V0Zl84IiwiY3N0X1JhbmdlX0VORF9UT19FTkQiLCJjc3RfUmFuZ2VfRU5EX1RPX1NUQVJUIiwiY3N0X1JhbmdlX1NUQVJUX1RPX0VORCIsImNzdF9SYW5nZV9TVEFSVF9UT19TVEFSVCIsImNzdF9pc1NlY3VyZUNvbnRleHQiLCJjb21waWxlZF90b193YXNtIiwiZ2V0Iiwic2V0X3RhcnJheSIsImRzdCIsImZpbGwiLCJjb3B5X3dpdGhpbiIsInN1YiIsImZpbmQiLCJzYXQiLCJvZl9qdiIsImZpbmRfaW5kZXgiLCJmb3JfYWxsIiwiZXhpc3RzIiwiZmlsdGVyIiwiaXRlciIsIm1hcCIsImZvbGRfbGVmdCIsImZvbGRfcmlnaHQiLCJyZXZlcnNlIiwib2ZfdGFycmF5Iiwib2ZfaW50X2FycmF5Iiwib2ZfZmxvYXRfYXJyYXkiLCJ0b19pbnRfanN0ciIsInNlcCIsInRvX2hleF9qc3RyIiwiaGV4IiwidWludDhfb2ZfYnVmZmVyIiwib2ZfanN0ciIsImVuYyIsInRvX2pzdHIiLCJkZWMiLCJleG4iLCJvZl9iaW5hcnlfanN0ciIsInRvX2JpbmFyeV9qc3RyIiwidHlwZV90b19iaWdhcnJheV9raW5kIiwidHlwZV9vZl9iaWdhcnJheV9raW5kIiwiZW5kaW5ncyIsImJsb2IiLCJvZl9hcnJheV9idWZmZXIiLCJzdHJlYW0iLCJjc3RfcHJvZ3Jlc3MiLCJsb2FkIiwicHJvZ3Jlc3MiLCJmaWxlX3JlYWRlciIsImNvbnYiLCJwcm9ncmVzc19kYXRhIiwibG9hZGVkIiwidG90YWwiLCJyZWFkZXIiLCJzZXRfZnV0Iiwib2siLCJ0ZXh0IiwiZGF0YV91cmkiLCJibG9iX2luaXQiLCJsYXN0X21vZGlmaWVkX21zIiwib2ZfYmxvYiIsIm5hbWUiLCJyZWxhdGl2ZV9wYXRoIiwiZGF0YV91dGZfOF9vZl9qc3RyIiwiZGF0YV91dGZfOF90b19qc3RyIiwiZGF0YV9vZl9iaW5hcnlfanN0ciIsImRhdGFfdG9fYmluYXJ5X2pzdHIiLCJlbmNvZGUiLCJicyIsImRlY29kZSIsImpzb24iLCJlbmNvZGVfY29tcG9uZW50IiwiZGVjb2RlX2NvbXBvbmVudCIsInVybCIsImJhc2UiLCJ3aXRoX3VyaSIsInNjaGVtZSIsImhvc3QiLCJwb3J0IiwicGF0aCIsInF1ZXJ5IiwiZnJhZ21lbnQiLCJ1IiwiYXJnIiwiZXRhIiwicSIsInByZWZpeCIsInBhdGhfc2VnbWVudHMiLCJkZWNvZGVfc2VnIiwid2l0aF9wYXRoX3NlZ21lbnRzIiwic2VncyIsImVuY29kZV9zZWciLCJ1c3AiLCJpc19lbXB0eSIsIm1lbSIsImZpbmRfYWxsIiwiZm9sZCIsInZhbHVlIiwib2ZfYXNzb2MiLCJ0b19hc3NvYyIsIm9mX29iaiIsInF1ZXJ5X3BhcmFtcyIsIndpdGhfcXVlcnlfcGFyYW1zIiwicHMiLCJmcmFnbWVudF9wYXJhbXMiLCJ3aXRoX2ZyYWdtZW50X3BhcmFtcyIsImlucHV0IiwiciIsInN0YXJ0X2luZGV4Iiwic3RvcF9pbmRleCIsImZvbGRfZ3JvdXBzIiwiZm9sZF9ncm91cF9pbmRpY2VzIiwicmFuZ2UiLCJvYmpfZW50cmllcyIsImp2IiwiZm9sZF9uYW1lZF9ncm91cHMiLCJncm91cHMiLCJlbnRyaWVzIiwiZW50cnkiLCJmb2xkX25hbWVkX2dyb3VwX2luZGljZXMiLCJyZWdleHAiLCJlc2NhcGUiLCJmbGFncyIsImV4ZWMiLCJmb2xkX21hdGNoZXMiLCJyZXBsYWNlIiwiYnkiLCJyZXBsYWNlX2FsbCIsInNlYXJjaCIsInNwbGl0IiwibGltaXQiLCJ0ZXN0IiwibGFzdF9pbmRleCIsInNldF9sYXN0X2luZGV4IiwiZG90X2FsbCIsImdsb2JhbCIsImhhc19pbmRpY2VzIiwiaWdub3JlX2Nhc2UiLCJtdWx0aWxpbmUiLCJzb3VyY2UiLCJzdGlja3kiLCJ1bmljb2RlIiwidW5pY29kZV9zZXRzIiwidm9pZCQiLCJpc192b2lkIiwiaWYkIiwiYXQiLCJpZl9zb21lIiwidHJ1ZSQiLCJpbnQiLCJmbG9hdCIsInRvX3BhaXIiLCJhZGRfaWYiLCJhZGRfaWZfc29tZSIsImFjY2Vzc2tleSIsImFjdGlvbiIsImF1dG9jb21wbGV0ZSIsImF1dG9mb2N1cyIsImNoYXJzZXQiLCJjc3RfY2hlY2tlZCIsImNoZWNrZWQiLCJjc3RfY2xhc3MiLCJjbGFzcyQiLCJjb2xzIiwiY29udGVudCIsImNvbnRlbnRlZGl0YWJsZSIsImRlZmVyIiwiZGlyIiwiZGlzYWJsZWQiLCJkb3dubG9hZCIsImRyYWdnYWJsZSIsImZvciQiLCJjc3RfaGlkZGVuIiwiaGlkZGVuIiwiaHJlZiIsImNzdF9pZCIsImxhbmciLCJsaXN0IiwibWVkaWEiLCJtZXRob2QiLCJwbGFjZWhvbGRlciIsInJlbCIsInJlcXVpcmVkIiwicm93cyIsInNlbGVjdGVkIiwic3BlbGxjaGVjayIsInNyYyIsImNzdF9zdHlsZSIsInN0eWxlIiwidGFiaW5kZXgiLCJ0aXRsZSIsImNzdF92YWx1ZSIsIndyYXAiLCJnbG9iYWxfZG9jdW1lbnQiLCJkb2N1bWVudCIsImdsb2JhbF9yb290IiwiZWxfbGlzdF9vZl9ub2RlX2xpc3QiLCJubCIsImxlbiIsImNzdCIsImNzIiwic3MiLCJjbHNzIiwidHh0Iiwic3AiLCJuYnNwIiwiaXNfdHh0IiwiaXNfZWwiLCJ0YWdfbmFtZSIsImhhc190YWdfbmFtZSIsInR4dF90ZXh0IiwidGV4dF9jb250ZW50IiwiZmluZF9ieV9jbGFzcyIsInJvb3QiLCJmaW5kX2J5X3RhZ19uYW1lIiwiZmluZF9maXJzdF9ieV9zZWxlY3RvciIsInNlbCIsImZvbGRfZmluZF9ieV9zZWxlY3RvciIsInBhcmVudCIsImNoaWxkcmVuIiwib25seV9lbHMiLCJzZXRfY2hpbGRyZW4iLCJwcmVwZW5kX2NoaWxkcmVuIiwiYXBwZW5kX2NoaWxkcmVuIiwicHJldmlvdXNfc2libGluZyIsIm5leHRfc2libGluZyIsImluc2VydF9zaWJsaW5ncyIsImxvYyIsInNldF9hdCIsImp2X3RvX2Jvb2wiLCJqdl90b19pbnQiLCJqdl90b19mbG9hdCIsImp2X3RvX2pzdHIiLCJib29sIiwianN0ciIsInByb3AiLCJzZXRfcHJvcCIsInNldF9jbGFzcyIsImNvbXB1dGVkX3N0eWxlIiwiaW5saW5lX3N0eWxlIiwic2V0X2lubGluZV9zdHlsZSIsImltcG9ydGFudCIsInByaW9yaXR5IiwicmVtb3ZlX2lubGluZV9zdHlsZSIsImlubmVyX3giLCJpbm5lcl95IiwiaW5uZXJfdyIsImlubmVyX2giLCJib3VuZF94IiwiYm91bmRfeSIsImJvdW5kX3ciLCJib3VuZF9oIiwib2Zmc2V0X3ciLCJvZmZzZXRfaCIsIm9mZnNldF9sZWZ0Iiwib2Zmc2V0X3RvcCIsIm9mZnNldF9wYXJlbnQiLCJzY3JvbGxfeCIsInNjcm9sbF95Iiwic2Nyb2xsX3ciLCJzY3JvbGxfaCIsInNjcm9sbF9pbnRvX3ZpZXciLCJiZWhhdmlvciIsImFsaWduX3YiLCJhbGlnbiIsIm9wdGlvbnMiLCJoYXNfZm9jdXMiLCJzZXRfaGFzX2ZvY3VzIiwiaXNfbG9ja2luZ19wb2ludGVyIiwicG9pbnRlcmxvY2tjaGFuZ2UiLCJwb2ludGVybG9ja2Vycm9yIiwicmVxdWVzdF9wb2ludGVyX2xvY2siLCJsb2NrZWQiLCJldiIsImVyciIsImNsaWNrIiwic2VsZWN0X3RleHQiLCJmdWxsc2NyZWVuX29wdHMiLCJuYXZpZ2F0aW9uX3VpIiwicmVxdWVzdF9mdWxsc2NyZWVuIiwiZmlsZXMiLCJ2b2lkX2NvbnMiLCJhYmJyIiwiYWRkcmVzcyIsImFyZWEiLCJhcnRpY2xlIiwiYXNpZGUiLCJhdWRpbyIsImJkaSIsImJkbyIsImJsb2NrcXVvdGUiLCJib2R5IiwiYnIiLCJjYW52YXMiLCJjYXB0aW9uIiwiY2l0ZSIsImNvbCIsImNvbGdyb3VwIiwiY29tbWFuZCIsImRhdGFsaXN0IiwiZGQiLCJkZWwiLCJkZXRhaWxzIiwiZGZuIiwiZGl2IiwiZGwiLCJkdCIsImVtIiwiZW1iZWQiLCJmaWVsZHNldCIsImZpZ2NhcHRpb24iLCJmaWd1cmUiLCJmb290ZXIiLCJmb3JtIiwiaDEiLCJoMiIsImgzIiwiaDQiLCJoNSIsImg2IiwiaGVhZCIsImhlYWRlciIsImhncm91cCIsImhyIiwiaHRtbCIsImlmcmFtZSIsImltZyIsImlucyIsImtiZCIsImtleWdlbiIsImxhYmVsIiwibGVnZW5kIiwibGkiLCJjc3RfbGluayIsImxpbmsiLCJjc3RfbWFyayIsIm1hcmsiLCJtZW51IiwibWV0YSIsIm1ldGVyIiwibmF2Iiwibm9zY3JpcHQiLCJvYmplY3QiLCJvbCIsIm9wdGdyb3VwIiwib3B0aW9uIiwib3V0cHV0IiwicHJlIiwicnAiLCJydCIsInJ1YnkiLCJzYW1wIiwic2NyaXB0Iiwic2VjdGlvbiIsImNzdF9zZWxlY3QiLCJzZWxlY3QiLCJzbWFsbCIsInNwYW4iLCJzdHJvbmciLCJzdW1tYXJ5Iiwic3VwIiwidGFibGUiLCJ0Ym9keSIsInRkIiwidGV4dGFyZWEiLCJ0Zm9vdCIsInRoIiwidGhlYWQiLCJ0aW1lIiwidHIiLCJ0cmFjayIsInVsIiwidmFyJCIsInZpZGVvIiwid2JyIiwiZW5kX3RvX2VuZCIsImVuZF90b19zdGFydCIsInN0YXJ0X3RvX2VuZCIsInN0YXJ0X3RvX3N0YXJ0IiwiY2xvbmVfcmFuZ2UiLCJjb2xsYXBzZSIsImNvbGxhcHNlX3RvX3N0YXJ0IiwiY29sbGFwc2VfdG9fZW5kIiwiY29tcGFyZV9ib3VuZGFyeV9wb2ludHMiLCJob3ciLCJjb21wYXJlX3BvaW50IiwiZWwiLCJvZmZzZXQiLCJkZWxldGVfY29udGVudHMiLCJpbnNlcnRfbm9kZSIsImludGVyc2VjdHNfbm9kZSIsImlzX3BvaW50X2luX3JhbmdlIiwic2VsZWN0X25vZGUiLCJzZWxlY3Rfbm9kZV9jb250ZW50cyIsInNldF9lbmQiLCJzZXRfZW5kX2FmdGVyIiwic2V0X2VuZF9iZWZvcmUiLCJzZXRfc3RhcnQiLCJzZXRfc3RhcnRfYWZ0ZXIiLCJzZXRfc3RhcnRfYmVmb3JlIiwic3Vycm91bmRfY29udGVudHMiLCJ0b19zdHJpbmciLCJjb2xsYXBzZWQiLCJjb21tb25fYW5jZXN0b3JfY29udGFpbmVyIiwiZW5kX2NvbnRhaW5lciIsImVuZF9vZmZzZXQiLCJzdGFydF9jb250YWluZXIiLCJzdGFydF9vZmZzZXQiLCJhc190YXJnZXQiLCJhY3RpdmVfZWwiLCJmaW5kX2VsX2J5X2lkIiwiZmluZF9lbHNfYnlfbmFtZSIsInJlZmVycmVyIiwic2V0X3RpdGxlIiwidmlzaWJpbGl0eV9zdGF0ZSIsInBvaW50ZXJfbG9ja19lbGVtZW50IiwiZXhpdF9wb2ludGVyX2xvY2siLCJmdWxsc2NyZWVuX2F2YWlsYWJsZSIsImZ1bGxzY3JlZW5fZWxlbWVudCIsImV4aXRfZnVsbHNjcmVlbiIsImFib3J0ZWQiLCJjb250cm9sbGVyIiwic2lnbmFsIiwiYWJvcnQiLCJjYWxsIiwibWV0aCIsIm1zZyIsIm1zZ190b19qdl9hcnJheSIsInZzIiwibG9nIiwidHJhY2UiLCJ3YXJuIiwiaW5mbyIsImRlYnVnIiwiYXNzZXJ0IiwiZ3JvdXBfZW5kIiwiZ3JvdXAiLCJjbG9zZWQiLCJjb3VudCIsImNvdW50X3Jlc2V0IiwidGltZV9sb2ciLCJ0aW1lX2VuZCIsInByb2ZpbGUiLCJwcm9maWxlX2VuZCIsInRpbWVfc3RhbXAiLCJsb2dfcmVzdWx0IiwibG9nX2lmX2Vycm9yIiwidXNlIiwiZXJyb3JfbXNnIiwiaW5uZXJfd2lkdGgiLCJpbm5lcl9oZWlnaHQiLCJkZXZpY2VfcGl4ZWxfcmF0aW8iLCJtYXRjaGVzX21lZGlhIiwicHJlZmVyc19kYXJrX2NvbG9yX3NjaGVtZSIsIm9wZW4iLCJmZWF0dXJlcyIsImNsb3NlIiwicHJpbnQiLCJyZWxvYWQiLCJzZXRfbG9jYXRpb24iLCJoIiwic2Nyb2xsX3Jlc3RvcmF0aW9uIiwic2V0X3Njcm9sbF9yZXN0b3JhdGlvbiIsImJhY2siLCJmb3J3YXJkIiwiZ28iLCJzdGF0ZSIsInB1c2hfc3RhdGUiLCJ1cmkiLCJyZXBsYWNlX3N0YXRlIiwiaGlzdG9yeSIsImxhbmd1YWdlcyIsIm1heF90b3VjaF9wb2ludHMiLCJvbmxpbmUiLCJzdGFydF90aW1lIiwiZW5kX3RpbWUiLCJkdXJhdGlvbiIsInRvX2pzb24iLCJhc19lbnRyeSIsImluaXRpYXRvcl90eXBlIiwibmV4dF9ob3BfcHJvdG9jb2wiLCJ3b3JrZXJfc3RhcnQiLCJyZWRpcmVjdF9zdGFydCIsInJlZGlyZWN0X2VuZCIsImZldGNoX3N0YXJ0IiwiZG9tYWluX2xvb2t1cF9zdGFydCIsImRvbWFpbl9sb29rdXBfZW5kIiwiY29ubmVjdF9zdGFydCIsImNvbm5lY3RfZW5kIiwic2VjdXJlX2Nvbm5lY3Rpb25fc3RhcnQiLCJyZXF1ZXN0X3N0YXJ0IiwicmVzcG9uc2Vfc3RhcnQiLCJyZXNwb25zZV9lbmQiLCJ0cmFuc2Zlcl9zaXplIiwiZW5jb2RlZF9ib2R5X3NpemUiLCJkZWNvZGVkX2JvZHlfc2l6ZSIsImFzX3Jlc291cmNlX3RpbWluZyIsInVubG9hZF9ldmVudF9zdGFydCIsInVubG9hZF9ldmVudF9lbmQiLCJkb21faW50ZXJhY3RpdmUiLCJkb21fY29udGVudF9sb2FkZWRfZXZlbnRfc3RhcnQiLCJkb21fY29udGVudF9sb2FkZWRfZXZlbnRfZW5kIiwiZG9tX2NvbXBsZXRlIiwibG9hZF9ldmVudF9zdGFydCIsImxvYWRfZXZlbnRfZW5kIiwicmVkaXJlY3RfY291bnQiLCJhc19uYXZpZ2F0aW9uX3RpbWluZyIsInRpbWVfb3JpZ2luX21zIiwiY2xlYXJfbWFya3MiLCJjbGVhcl9tZWFzdXJlcyIsImNsZWFyX3Jlc291cmNlX3RpbWluZ3MiLCJnZXRfZW50cmllcyIsIm1lYXN1cmUiLCJub3dfbXMiLCJjb25zb2xlIiwibmF2aWdhdG9yIiwicGVyZm9ybWFuY2UiLCJ3aW5kb3ciLCJpc19zZWN1cmVfY29udGV4dCIsInNldF90aW1lb3V0IiwibXMiLCJzZXRfaW50ZXJ2YWwiLCJzdG9wX3RpbWVyIiwidGlkIiwicmVxdWVzdF9hbmltYXRpb25fZnJhbWUiLCJjYW5jZWxfYW5pbWF0aW9uX2ZyYW1lIiwiZmlkIiwiY3N0X2Fib3J0IiwiY3N0X2NvcHkiLCJjc3RfZGJsY2xpY2siLCJCcnIiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLCtCQUFBO0FBQUEsSUFBQUMsd0JBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQU4sR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFSLEdBQUFDLElBQUFFLElBQUFFLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxLQUFBO0FBQUEsSUFBQUMsT0FBQTtBQUFBLElBQUFDLE1BQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLFlBQUFDLEtBQUFDLFNBQUFDLFlBQUFDLFVBQUFDO0FBQUFBLFFBQUFDLElDeUJZO0FBQUEsSUFDUjtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFBeUM7QUFBQSxHQUN4QztBQUFBLE9BQUFDLFFBVVM7QUFBQSxZQUFBQyxPQUFBQyxLQUFBQztBQUFBQSxRQUFBVCxPQUNEO0FBQUEsSUFBMEIseUJBQXFDO0FBQUE7QUFBQSxPQUFBVSxhRHhDNUU7QUFBQSxZQUFBQyxLQUFBQyxHQzBDZ0IsMkNBQW9CO0FBQUEsWUFBQUMsT0FBQUQsR0FDRjtBQUFBLFlBQUFFLGVBQUFGLEdBQ2U7QUFBQSxZQUFBRyxjQUFBSDtBQUFBQSxRQUFBLElBQ0Q7QUFBQSxJQUErQixxQ0Q3Qy9FLGNDNkMrRTtBQUFBO0FBQUEsWUFBQUksWUFBQUo7QUFBQUEsUUFBQUssV0FFckU7QUFBQSxJQUF5Qix1QkFDNkI7QUFBQSxJQUQ3QjtBQUFBO0FBQUEsT0FDeEI7QUFBQTtBQUFBLE9BQWtCO0FBQUEsZUFBa0I7QUFBQTtBQUFBLEdBQXNCO0FBQUEsWUFBQWhCLFFBQUFXLEdBRW5ELDJDQUF1QjtBQUFBLFlBQUFNLGlCQUFBTixHQUNKLHFCQUFnQztBQUFBLFlBQUFPLDJCQUFBUDtBQUFBQSxJQUV2RDtBQUFBLElBQXlDO0FBQUE7QUFBQSxZQUFBVixXQUFBVSxHQUVsQyw4Q0FBMEI7QUFBQSxZQUFBUSxnQkFBQVIsR0FDWCxvQkFBK0I7QUFBQSxZQUFBUyxrQkFBQVQ7QUFBQUEsSUFDdkMsa0RBQWdDO0FBQUE7QUFBQSxZQUFBVCxTQUFBUyxHQUN6Qyw0Q0FBd0I7QUFBQSxZQUFBVSxXQUFBVixHQUN0QiwyQ0FBeUI7QUFBQSxPQUFBVyxrQkQzRDlDO0FBQUEsWUFBQUMsYUFBQVosR0M0RHVCLCtDQUEwQjtBQUFBLFlBQUFhLFNBQUFiLEdBQUFILEdBQ2QsNkJBQWlDO0FBQUEsWUFBQWlCLFlBQUFDLFNBQUFDLE1BQUFDLFNBQUF6QjtBQUFBQSxRQUFBQyxJQU14RDtBQUFBLElBQ1I7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQXVDO0FBQUEsR0FDdEM7QUFBQSxZQUFBeUIsT0FBQXRCLEtBQUFHLE1BQUFqQyxHQUFBK0I7QUFBQUEsUUFBQXNCLE9BSVEsbUJBQUFyRCxNQUVEO0FBQUEsYUFBQXNELFNBQUE1QjtBQUFBQSxLQUVJO0FBQUEsS0FBbUQ7QUFBQTtBQUFBLElBRXJEO0FBQUEsSUFDVjtBQUFBLEdBQVE7QUFBQSxZQUFBNEIsU0FBQUEsVUFFYyw4QkFBVztBQUFBLFdBN0NDO0FBQUEsWUFBQUMsS0FBQU4sU0FBQWhCLE1BQUFGO0FBQUFBO0FBQUFBLEtBQUF5QixRQWdEbkI7QUFBQSxLQUFBQyxNQUFhO0FBQUEsS0FBQUMsTUFBQTtBQUFBLEtBQUFMLE9BQ2pCO0FBQUEsSUFDSDtBQUFBLElBQ1I7QUFBQSxHQUFHO0FBQUEsWUFBQU0sS0FBQUMsR0F5QlksdUNBQW9CO0FBQUEsWUFBQTNCLE9BQUEyQixHQUNuQiwyQ0FBb0I7QUFBQSxZQUFBQyxTQUFBRDtBQUFBQSxRQUFBLElBQ0c7QUFBQSxJQUE0QixxQ0RySHZFLGNDcUh1RTtBQUFBO0FBQUEsWUFBQUUsU0FBQUY7QUFBQUE7QUFBQUEsS0FBQUosUUFFNUM7QUFBQSxLQUFBTyxVQUFhO0FBQUEsS0FBQUMsTUFBQTtBQUFBLEtBQUFELFlBQ2xCO0FBQUEsSUFDUDtBQUFBLElBQ1A7QUFBQSxHQUFHO0FBQUEsT0FBQUUsZUQxSFg7QUFBQSxZQUFBQyxPQUFBQyxHQ2dJcUIsNENBQXFCO0FBQUEsWUFBQUMsU0FBQUQsR0FBQWxDLE1BQUErQjtBQUFBQSxRQUFBLElBSWxDO0FBQUEsSUFEQSxxQ0RuSVIsY0NvSTJEO0FBQUE7QUFBQSxZQUFBSyxTQUFBdEMsR0FBQXVDO0FBQUFBLFFBQUEsSUFJbkQ7QUFBQSxJQURBLHFDRHZJUixjQ3dJcUM7QUFBQTtBQUFBLFlBQUFDLE9BQUFKLEdBQUFQLEdBRVAsYUFBb0M7QUFBQSxZQUFBWSxNQUFBTCxHQUN2QyxXQUF3QjtBQUFBLFlBQUFNLE1BQUFOO0FBQUFBLFFBQUEsSUFLbkMsdUJBRFI7QUFBQSxJQUNnQjtBQUFBLFNBQUFPLFFBQUE7QUFBQTtBQUFBLFNBQUFBLE1BQUEsR0FBQWQsSUFBQTtBQUFBO0FBQUEsY0FBZ0M7QUFBQSxzQkFBQWMsUUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFDaEQ7QUFBQSxHQUFJO0FBQUEsT0FBQUMsaUJEakpaO0FBQUEsWUFBQUMsWUFBQUMsR0NzSndCLCtDQUEwQjtBQUFBLFlBQUFDLGdCQUFBRCxHQUFBM0M7QUFBQUEsSUFDcEIsa0RBQTRCO0FBQUE7QUFBQSxPQUFBNkMsb0JEdkoxRDtBQUFBLFlBQUFDLGVBQUFIO0FBQUFBLElDd0oyQixrREFBNkI7QUFBQTtBQUFBLFlBQUFJLG1CQUFBSixHQUFBM0M7QUFBQUEsSUFDdkIscURBQStCO0FBQUE7QUFBQSxZQUFBdUMsUUFBQUksR0FDWDtBQUFBLFlBQUFLLEtBQUFDO0FBQUFBLElBSXBDLHFDRDlKakIsK0JDOEprRTtBQUFBO0FBQUEsT0FBQUMsV0Q5SmxFO0FBQUEsWUFBQUYsT0FBQXRCLEdDa0tpQix5Q0FBb0I7QUFBQSxZQUFBeUIsUUFBQW5ELEdBSWpCLDBDQUF1QjtBQUFBLFlBQUFvRCxTQUFBcEQsR0FDdEIsMkNBQXdCO0FBQUEsWUFBQXFELE9BQUFyRCxHQUMxQix3Q0FBcUI7QUFBQSxZQUFBc0QsTUFBQXRELEdBQ3RCLHVDQUFvQjtBQUFBLFlBQUF1RCxNQUFBdkQsR0FDSjtBQUFBLFlBQUF3RCxXQUFBeEQsR0FBQXdCO0FBQUFBLElBS2xCLFlBQXlCLCtCRC9LekM7QUFBQSxJQytLMEU7QUFBQTtBQUFBLE9BQUFpQyxvQkQvSzFFO0FBQUEsWUFBQUMsZUFBQUM7QUFBQUEsSUNtTDJCLHFDRG5MM0IsaUNDbUxxRTtBQUFBO0FBQUEsWUFBQUMsUUFBQTVELEdBSWpELHlDQUFzQjtBQUFBLFlBQUE2RCxRQUFBN0QsR0FDdEIseUNBQXNCO0FBQUEsWUFBQWdELE9BQUF0QixHQUl6Qix5Q0FBb0I7QUFBQSxPQUFBb0MsbUJENUxyQztBQUFBLFlBQUFDLGNBQUFyQyxHQzZMMEIsNkNBQXdCO0FBQUEsWUFBQXNDLFdBQUF0QyxHQUMzQiw0Q0FBeUI7QUFBQSxPQUFBdUMsa0JEOUxoRDtBQUFBLFlBQUFDLGFBQUF4QyxHQytMeUIsK0NBQTJCO0FBQUEsWUFBQXlDLElBQUFDLEdBV3BDLHNDQUFtQjtBQUFBLE9BQUFDLFdEMU1uQztBQUFBLFlBQUFDLEtBQUFGLEdDMk1pQix5Q0FBb0I7QUFBQSxZQUFBRyxTQUFBSCxHQUNoQiwwQ0FBdUI7QUFBQSxZQUFBSSxPQUFBSixHQUN6Qix3Q0FBc0I7QUFBQSxZQUFBRixlQUFBRTtBQUFBQSxJQUNoQiwrQ0FBMkI7QUFBQTtBQUFBLE9BQUFLLGFEOU1wRDtBQUFBLFlBQUFDLFFBQUFOLEdDK01vQiwwQ0FBc0I7QUFBQSxPQUFBTyxjRC9NMUM7QUFBQSxZQUFBQyxTQUFBUixHQ2dOcUIsMkNBQXVCO0FBQUEsT0FBQVMsZURoTjVDO0FBQUEsWUFBQUMsVUFBQVYsR0NpTnNCLDRDQUF3QjtBQUFBLE9BQUFXLGNEak45QztBQUFBLFlBQUFDLFNBQUFaLEdDa05xQiwyQ0FBdUI7QUFBQSxZQUFBYSxtQkFBQWIsR0FBQUQsS0FFeEIsa0NBQWlEO0FBQUEsWUFBQVQsaUJBQUFDO0FBQUFBLElBSTFDLHFDRHhOM0IsaUNDd05xRTtBQUFBO0FBQUEsWUFBQXVCLFNBQUF2QixHQUNoRCx5Q0FBd0I7QUFBQSxZQUFBd0IsU0FBQXhCLEdBQ3hCLHlDQUF3QjtBQUFBLFlBQUF5QixTQUFBekIsR0FDeEIseUNBQXdCO0FBQUEsWUFBQTBCLFNBQUExQixHQUN4Qix5Q0FBd0I7QUFBQSxZQUFBMkIsT0FBQTNCLEdBQzFCLHVDQUFzQjtBQUFBLFlBQUE0QixPQUFBNUIsR0FDdEIsdUNBQXNCO0FBQUEsWUFBQTZCLFNBQUE3QixHQUNwQix5Q0FBd0I7QUFBQSxZQUFBOEIsU0FBQTlCLEdBQ3hCLHlDQUF3QjtBQUFBLFlBQUErQixXQUFBL0IsR0FDdEIsMkNBQTBCO0FBQUEsWUFBQWdDLFdBQUFoQyxHQUMxQiwyQ0FBMEI7QUFBQSxPQUFBaUMsYURsT2pEO0FBQUEsWUFBQUMsT0FBQWxDLEdDbU9tQiwwQ0FBcUI7QUFBQSxZQUFBbUMsUUFBQW5DLEdBQ3BCLHlDQUFzQjtBQUFBLFlBQUFlLFVBQUFmLEdBQ3RCLDBDQUFzQjtBQUFBLFlBQUFpQixXQUFBakIsR0FDckIsMkNBQXVCO0FBQUEsWUFBQW1CLFlBQUFuQixHQUN0Qiw0Q0FBd0I7QUFBQSxZQUFBcUIsV0FBQXJCLEdBQ3pCLDJDQUF1QjtBQUFBLFlBQUFzQixxQkFBQXRCLEdBQUFRLEtBRXhCLGtDQUFpRDtBQUFBLFlBQUFKLGdCQUFBcEI7QUFBQUEsSUFLM0MscUNEL08xQixnQ0MrTzZEO0FBQUE7QUFBQSxZQUFBb0QsR0FBQUMsR0FNOUMsMkNBQXdCO0FBQUEsT0FBQUMsY0RyUHZDO0FBQUEsWUFBQUMsTUFBQUYsR0NzUGtCLDJDQUFzQjtBQUFBLE9BQUFHLGVEdFB4QztBQUFBLFlBQUFDLE9BQUFKLEdDdVBtQiw0Q0FBdUI7QUFBQSxZQUFBSyxTQUFBTCxHQUNyQiwwQ0FBeUI7QUFBQSxZQUFBTSxvQkFBQU47QUFBQUEsSUFDZCxvREFBbUM7QUFBQTtBQUFBLFlBQUFPLE9BQUFQLEdBQ2hELHVDQUFvQjtBQUFBLFlBQUFRLE9BQUFSLEdBQ3BCLHVDQUFvQjtBQUFBLFlBQUFTLE1BQUFULEdBQ3JCLHVDQUFvQjtBQUFBLFlBQUFVLGVBQUFWO0FBQUFBLElBQ1gsK0NBQThCO0FBQUE7QUFBQSxZQUFBVyxjQUFBWCxHQUMvQiw4Q0FBNkI7QUFBQSxZQUFBakcsT0FBQWlHLEdBQ3JDLDhDQUEyQjtBQUFBLFlBQUFZLFdBQUFaLEdBQ3RCLDJDQUF5QjtBQUFBLFlBQUFhLHFCQUFBYjtBQUFBQSxRQUFBLElBRXhCO0FBQUEsSUFBcUMscUNEbFE3RCxjQ2tRNkQ7QUFBQTtBQUFBLFlBQUFjLHFCQUFBZDtBQUFBQSxRQUFBLElBR3JDO0FBQUEsSUFBcUMscUNEclE3RCxjQ3FRNkQ7QUFBQTtBQUFBLFlBQUFlLFFBQUFDLEdBV3pDLHdDQUF1QjtBQUFBLFlBQUFDLFFBQUFELEdBQ3ZCLHdDQUF1QjtBQUFBLFlBQUFFLFFBQUFGLEdBQ3ZCLHdDQUF1QjtBQUFBLFlBQUFHLFdBQUFILEdBQ3BCLDJDQUF3QjtBQUFBLE9BQUFJLGVBMkd4QjtBQUFBLFlBQUF6SCxTQUFBMEgsR0FDSiwwQkFBc0M7QUFBQSxPQUFBQyxpQkQvWHpEO0FBQUEsWUFBQUMsWUFBQUMsR0NnWXdCLDhDQUF5QjtBQUFBLFlBQUFDLE1BQUE3SCxLQUFBOEgsTUFBQUY7QUFBQUEsUUFBQUcsUUFDbkM7QUFBQSxJQUNSO0FBQUEsU0FBQUQsU0FBQSxTQUFBQSxTQUFnRTtBQUFBO0FBQUEsU0FBQUEsU0FBN0I7QUFBQSxJQUNuQyw2QkFBb0Q7QUFBQTtBQUFBLFlBQUFFLE9BQUFuSSxHQUtSO0FBQUEsWUFBQW9JLFlBQUFwSSxHQUM1Qiw0Q0FBeUI7QUFBQSxZQUFBOEgsY0FBQTlILEdBQ3pCLDhDQUF5QjtBQUFBLE9BQUFxSSxXQVE1QjtBQUFBLFlBQUFDLFVBQUFuSSxLQUFBMkgsZUFBQVM7QUFBQUEsUUFBQUgsY0FDRDtBQUFBLElBQ1o7QUFBQSxTQUFBNUYsSUFBQSxrQkFBQXNGLGdCQUVZO0FBQUE7QUFBQSxTQUFBQSxnQkFERjtBQUFBLElBR1Ysa0RBQytEO0FBQUE7QUFBQSxZQUFBVSxTQUFBRCxHQUFBdEcsR0FPbEQsbUJBQXFDO0FBQUEsWUFBQXdHLGFBQUFGLEdBQUF0RyxHQUdyQyxvQkFBc0M7QUFBQSxZQUFBeUcsYUFBQUgsR0FBQXRHLEdBR3RDLDRCQUFnRDtBQUFBLFlBQUEwRyxhQUFBSixHQUFBdEcsR0FHOUMsd0JBQXNDO0FBQUEsWUFBQTJHLGFBQUFMLEdBQUF0RyxHQUd0QyxnQ0FBZ0Q7QUFBQSxZQUFBNEcsVUFBQU4sR0FBQXRHLEdBR2xELG9CQUFzQztBQUFBLFlBQUE2RyxjQUFBUCxHQUFBdEcsR0FHdEMscUJBQXVDO0FBQUEsWUFBQThHLGNBQUFSLEdBQUF0RyxHQUd2Qyw2QkFBaUQ7QUFBQSxZQUFBK0csY0FBQVQsR0FBQXRHLEdBRy9DLHlCQUF1QztBQUFBLFlBQUFnSCxjQUFBVixHQUFBdEcsR0FHdkMsaUNBQWlEO0FBQUEsWUFBQWlILGVBQUFYLEdBQUF0RyxHQUdqRCxzQkFBd0M7QUFBQSxZQUFBa0gsZUFBQVosR0FBQXRHLEdBR3hDLDhCQUFrRDtBQUFBLFlBQUFtSCxlQUFBYixHQUFBdEcsR0FHbEQsc0JBQXdDO0FBQUEsWUFBQW9ILGVBQUFkLEdBQUF0RyxHQUd4Qyw4QkFBa0Q7QUFBQSxZQUFBcUgsU0FBQWYsR0FBQXRHLEdBQUFzSCxHQUd2RCxpQkFBK0M7QUFBQSxZQUFBQyxhQUFBakIsR0FBQXRHLEdBQUFzSCxHQUcvQyxrQkFBZ0Q7QUFBQSxZQUFBRSxhQUFBbEIsR0FBQXRHLEdBQUFzSCxHQUdoRCwwQkFBMEQ7QUFBQSxZQUFBRyxhQUFBbkIsR0FBQXRHLEdBQUFzSCxHQUcxRCxrQkFBa0Q7QUFBQSxZQUFBSSxhQUFBcEIsR0FBQXRHLEdBQUFzSCxHQUdsRCwwQkFBNEQ7QUFBQSxZQUFBSyxVQUFBckIsR0FBQXRHLEdBQUFzSCxHQUc1RCxrQkFBZ0Q7QUFBQSxZQUFBTSxjQUFBdEIsR0FBQXRHLEdBQUFzSCxHQUdoRCxtQkFBaUQ7QUFBQSxZQUFBTyxjQUFBdkIsR0FBQXRHLEdBQUFzSCxHQUdqRCwyQkFBMkQ7QUFBQSxZQUFBUSxjQUFBeEIsR0FBQXRHLEdBQUFzSCxHQUczRCxtQkFBbUQ7QUFBQSxZQUFBUyxjQUFBekIsR0FBQXRHLEdBQUFzSCxHQUduRCwyQkFBNkQ7QUFBQSxZQUFBVSxlQUFBMUIsR0FBQXRHLEdBQUFzSCxHQUc3RCxvQkFBb0Q7QUFBQSxZQUFBVyxlQUFBM0IsR0FBQXRHLEdBQUFzSCxHQUdwRCw0QkFBOEQ7QUFBQSxZQUFBWSxlQUFBNUIsR0FBQXRHLEdBQUFzSCxHQUc5RCxvQkFBb0Q7QUFBQSxZQUFBYSxlQUFBN0IsR0FBQXRHLEdBQUFzSCxHQUdwRCw0QkFBOEQ7QUFBQSxZQUFBYyxtQkFBQXRLO0FBQUFBLElBZ0J4RTtBQUFBO0FBQUEsT0FFMEM7QUFBQTtBQUFBO0FBQUEsT0FEVTtBQUFBO0FBQUE7QUFBQTtBQUFBLE9BQXRCO0FBQUEsZUFDSjtBQUFBO0FBQUEsR0FBaUI7QUFBQSxZQUFBdUssYUFBQXZLO0FBQUFBLElBUTNDO0FBQUE7QUFBQSxPQUNrQztBQUFBO0FBQUEsT0FDRTtBQUFBO0FBQUEsT0FDQTtBQUFBO0FBQUEsT0FDQTtBQUFBO0FBQUEsT0FDZTtBQUFBO0FBQUEsT0FDYjtBQUFBO0FBQUEsT0FDQTtBQUFBO0FBQUEsT0FDRTtBQUFBLGVBQ0E7QUFBQTtBQUFBO0FBQUEsWUFBQUcsU0FBQUUsR0FBQXdILEdBRW5CLE9BQVIsS0FBUSxtQkFBa0M7QUFBQSxZQUFBVSxZQUFBbEksR0FBQUQsS0FBQW9DLFFBQUFnRztBQUFBQSxRQUFBSCxjQUM3QztBQUFBLElBQ1o7QUFBQSxTQUFBNUYsSUFBQSxXQUFBK0gsT0FFWTtBQUFBO0FBQUEsU0FBQUEsT0FERjtBQUFBLElBR0YsT0FBUixvQkFBUSxzQkFBcUI7QUFBQTtBQUFBLFlBQUFoSSxTQUFBd0YsR0FFaEIsNENBQXFCO0FBQUEsT0FBQXlDLGFEOWhCdEM7QUFBQSxZQUFBbEssT0FBQXlIO0FBQUFBO0FBQUFBLEtBQUEwQztBQUFBQSxPQ2lpQlU7QUFBQSxTQUFlO0FBQUEsSUFBNkMseUJBUTlDO0FBQUEsSUFSOEMseUJBUzlDO0FBQUEsSUFUOEMsdUJBRWhEO0FBQUEsSUFGZ0QsdUJBR2hEO0FBQUEsSUFIZ0Qsc0JBQ2pEO0FBQUEsSUFEaUQsd0JBTS9DO0FBQUEsSUFOK0Msd0JBTy9DO0FBQUEsSUFQK0MsdUJBSWhEO0FBQUEsSUFKZ0QsOEJBS3pDO0FBQUE7QUFBQSxLQUFBckssSUFNYjtBQUFBLFNBQ0M7QUFBQSxJQUFnRDtBQUFBO0FBQUEsWUFBQXNLLFVBQUEzQztBQUFBQSxJQXdCL0I7QUFBQTtBQUFBLE9BckJ0QixtQkRoakJaLFVDZ2pCWTtBQUFBO0FBQUEsT0FDQyxtQkRqakJiLFVDaWpCYTtBQUFBO0FBQUEsT0FDQSxtQkRsakJiLFVDa2pCYTtBQUFBO0FBQUEsT0FDQSxtQkRuakJiLFVDbWpCYTtBQUFBO0FBQUEsT0FDUSxtQkRwakJyQixVQ29qQnFCO0FBQUE7QUFBQSxPQUNQLG1CRHJqQmQsVUNxakJjO0FBQUE7QUFBQSxPQUNBLG1CRHRqQmQsVUNzakJjO0FBQUE7QUFBQSxPQUNDLG1CRHZqQmYsVUN1akJlO0FBQUEsZUFDQSxtQkR4akJmLFVDd2pCZTtBQUFBO0FBQUEsR0FhNEI7QUFBQSxZQUFBNEMsVUFBQTVDO0FBQUFBLElBQ1Q7QUFBQTtBQUFBLE9BWHRCLG1CRDNqQlosVUMyakJZO0FBQUE7QUFBQSxPQUNDLG1CRDVqQmIsVUM0akJhO0FBQUE7QUFBQSxPQUNBO0FBQUE7QUFBQSxPQUNBLG1CRDlqQmIsVUM4akJhO0FBQUE7QUFBQSxPQUNRLG1CRC9qQnJCLFVDK2pCcUI7QUFBQTtBQUFBLE9BQ1AsbUJEaGtCZCxVQ2drQmM7QUFBQTtBQUFBLE9BQ0E7QUFBQTtBQUFBLE9BQ0MsbUJEbGtCZixVQ2trQmU7QUFBQSxlQUNBLG1CRG5rQmYsVUNta0JlO0FBQUE7QUFBQSxHQUc0QjtBQUFBO0FBQUEsSUFBQWxHLFFBcExHO0FBQUEsSUFBQStJLGFEbFo5QztBQUFBLElBQUFDLFlBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxLQUFBQyxpQkNrWjhDO0FBQUEsS0FBQUMsb0JBQUE7QUFBQSxLQUFBaEwsYUFBQTtBQUFBLEtBQUFpTCxtQkFBQTtBQUFBLEtBQUFDLHFCQUFBO0FBQUEsS0FBQUMsa0JBQUE7QUFBQSxLQUFBQywrQkFBQTtBQUFBLEtBQUFDLGlDQUFBO0FBQUEsS0FBQUMscUJBQUE7QUFBQSxLQUFBQyxxQkFBQTtBQUFBLEtBQUFDLHVCQUFBO0FBQUEsS0FBQUMsc0JBQUE7QUFBQSxLQUFBQyxzQkFBQTtBQUFBLEtBQUFDLG1CQUFBO0FBQUEsS0FBQUMsa0JBQUE7QUFBQSxLQUFBQyxvQkFBQTtBQUFBLEtBQUFDLG1CQUFBO0FBQUEsS0FBQUMsNEJBQUE7QUFBQSxLQUFBQyxpQkFBQTtBQUFBLEtBQUFDLG1CQUFBO0FBQUEsS0FBQUMsc0JBQUE7QUFBQSxLQUFBQyx3QkFBQTtBQUFBLEtBQUFDLGlCQUFBO0FBQUEsS0FBQUMsa0JBQUE7QUFBQSxLQUFBQyxvQkFBQTtBQUFBLEtBQUFDLGtCQUFBO0FBQUEsS0FBQUMsc0JBQUE7QUFBQSxLQUFBQyxvQkFBQTtBQUFBLEtBQUFDLGVBQUE7QUFBQSxLQUFBQyxjQUFBO0FBQUEsS0FBQUMsZ0JBQUE7QUFBQSxLQUFBQyxnQkFBQTtBQUFBLEtBQUExQyxhQUFBO0FBQUEsS0FBQTJDLGFBQUE7QUFBQSxLQUFBQyxnQkFBQTtBQUFBLEtBQUFDLGVBQUE7QUFBQSxLQUFBQywwQkRsWjlDO0FBQUEsS0FBQUEsMEJDa1o4QztBQUFBLEtBQUFBLHdCQUFBO0FBQUEsS0FBQWhMLGVBQUE7QUFBQSxLQUFBaUwsY0FBQTtBQUFBLEtBQUFDLHVCQUFBO0FBQUEsS0FBQUMsa0JBQUE7QUFBQSxLQUFBQyxpQkFBQTtBQUFBLEtBQUFDLGNBQUE7QUFBQSxLQUFBQyxjQUFBO0FBQUEsS0FBQUMsYUFBQTtBQUFBLEtBQUEzTSxnQkFBQTtBQUFBLEtBQUE0TSxpQkFBQTtBQUFBLEtBQUFDLGNBQUE7QUFBQSxLQUFBQyxjQUFBO0FBQUEsS0FBQUMsY0FBQTtBQUFBLEtBQUEvQyxXQUFBO0FBQUEsS0FBQWdELGlCQUFBO0FBQUEsS0FBQUMsWUFBQTtBQUFBLEtBQUFDLHFCQUFBO0FBQUEsS0FBQUMsWUFBQTtBQUFBLEtBQUFDLGVBQUE7QUFBQSxLQUFBckQsWUFBQTtBQUFBLEtBQUFKLFVBQUE7QUFBQSxLQUFBMEQsYUFBQTtBQUFBLEtBQUFDLFlBQUE7QUFBQSxLQUFBQyxXQUFBO0FBQUEsS0FBQUMsV0FBQTtBQUFBLEtBQUE1RCxZQUFBO0FBQUEsS0FBQTZELFlBQUE7QUFBQSxLQUFBQyxVQUFBO0FBQUEsS0FBQUMsWUFBQTtBQUFBLEtBQUFDLGNBQUE7QUFBQSxLQUFBQyx3QkFBQTtBQUFBLEtBQUFDLHNCQUFBO0FBQUEsS0FBQTdELGNBQUE7QUFBQSxLQUFBQSxZQUFBO0FBQUEsS0FBQThELGVBQUE7QUFBQSxLQUFBQyxpQkFBQTtBQUFBLEtBQUFDLGdCQUFBO0FBQUEsS0FBQUMsZ0JBQUE7QUFBQSxLQUFBQyxZQUFBO0FBQUEsS0FBQUMsbUJBQUE7QUFBQTtBQUFBO0FBQUEsS0FBQUMsYUFBQTtBQUFBLEtBQUFDLGNBQUE7QUFBQSxLQUFBNUUsV0FBQTtBQUFBLEtBQUE2RSxhQUFBO0FBQUEsS0FBQUMsY0FBQTtBQUFBLEtBQUFDLFlBQUE7QUFBQSxLQUFBQyxVQUFBO0FBQUEsS0FBQUMsbUJBQUE7QUFBQSxLQUFBQyxrQkFBQTtBQUFBLEtBQUFDLGdCQUFBO0FBQUEsS0FBQUMsaUJBQUE7QUFBQSxLQUFBQyxnQkFBQTtBQUFBLEtBQUFDLGlCQUFBO0FBQUEsS0FBQUMsbUJBQUE7QUFBQSxLQUFBQyxrQkFBQTtBQUFBLEtBQUExSixhQUFBO0FBQUEsS0FBQUYsWUFBQTtBQUFBLEtBQUE2SixRQUFBO0FBQUEsS0FBQUMsUUFBQTtBQUFBLEtBQUFDLG1CQUFBO0FBQUEsS0FBQUMsa0JBQUE7QUFBQSxLQUFBQyxnQkFBQTtBQUFBLEtBQUFDLGlCQUFBO0FBQUEsS0FBQUMseUJBQUE7QUFBQSxLQUFBQyw2QkFBQTtBQUFBLEtBQUFDLGlCQUFBO0FBQUEsS0FBQXZPLGVBQUE7QUFBQSxLQUFBd08sa0JBQUE7QUFBQSxLQUFBQyxnQkFBQTtBQUFBLEtBQUFDLGVBQUE7QUFBQSxLQUFBQyxpQkRsWjlDO0FBQUEsS0FBQUEsaUJDa1o4QztBQUFBLEtBQUFBLGVBQUE7QUFBQSxLQUFBM08sYUFBQTtBQUFBLEtBQUE0TyxrQkFBQTtBQUFBLEtBQUFDLGNBQUE7QUFBQSxLQUFBQyxhQUFBO0FBQUEsS0FBQXBHLGFBQUE7QUFBQSxLQUFBcUcsZ0JBQUE7QUFBQSxLQUFBQyxpQkFBQTtBQUFBLEtBQUFDLGlCQUFBO0FBQUEsS0FBQUMsYUFBQTtBQUFBLEtBQUFDLFlBQUE7QUFBQSxLQUFBQyxhQUFBO0FBQUEsS0FBQUMsa0JEbFo5QztBQUFBLEtBQUFBLGtCQ2taOEM7QUFBQSxLQUFBQSxnQkFBQTtBQUFBLEtBQUFDLGdCRGxaOUM7QUFBQSxLQUFBQSxnQkNrWjhDO0FBQUEsS0FBQUMsZURsWjlDO0FBQUEsS0FBQUEsZUNrWjhDO0FBQUEsS0FBQUEsYUFBQTtBQUFBLEtBQUFELGNBQUE7QUFBQSxLQUFBRSxZQUFBO0FBQUEsS0FBQS9HLFlBQUE7QUFBQSxLQUFBZ0gsYURsWjlDO0FBQUEsS0FBQUEsYUNrWjhDO0FBQUEsS0FBQUMsZURsWjlDO0FBQUEsS0FBQUEsZUNrWjhDO0FBQUE7QUFBQSxLQUFBRCxhQUFBO0FBQUE7QUFBQSxLQUFBQyxlQUFBO0FBQUE7QUFBQSxLQUFBQyxpQkRsWjlDO0FBQUEsS0FBQUEsaUJDa1o4QztBQUFBLEtBQUFDLGFEbFo5QztBQUFBLEtBQUFBLGFDa1o4QztBQUFBLEtBQUFDLGlCRGxaOUM7QUFBQSxLQUFBQSxpQkNrWjhDO0FBQUEsS0FBQUMsaUJEbFo5QztBQUFBLEtBQUFBLGlCQ2taOEM7QUFBQTtBQUFBLEtBQUFBLGVBQUE7QUFBQSxLQUFBRCxlQUFBO0FBQUEsS0FBQUQsV0FBQTtBQUFBLEtBQUFELGVBQUE7QUFBQSxLQUFBRCxhQUFBO0FBQUEsS0FBQUQsV0FBQTtBQUFBLEtBQUFNLHFCRGxaOUM7QUFBQSxLQUFBQSxxQkNrWjhDO0FBQUEsS0FBQUMseUJBQUE7QUFBQSxLQUFBOUgsV0FBQTtBQUFBLEtBQUE2SCxtQkFBQTtBQUFBLEtBQUFFLHVCQUFBO0FBQUEsS0FBQUMsYUFBQTtBQUFBLEtBQUFDLFlBQUE7QUFBQTtBQUFBLEtBQUFwUyxhQUFBO0FBQUEsS0FBQXFTLFdBQUE7QUFBQSxLQUFBclMsV0FBQTtBQUFBLEtBQUFzUyxjQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxLQUFBQyxZQUFBO0FBQUEsS0FBQUMsdUJBQUE7QUFBQSxLQUFBQyx5QkFBQTtBQUFBLEtBQUFDLHlCQUFBO0FBQUEsS0FBQUMsMkJBQUE7QUFBQSxLQUFBQyxzQkFBQTtBQUFBLHNFQUFBQyxtQkF5TGpCO0FBQUEsUUFBQUEsbUJBQ3BCO0FBQUE7QUFBQTtBQUFBLElBQUFDO0FBQUFBLE1BMUxxQztBQUFBLGtCQUFBcEwsR0FBQTlGLE9BQUEsSUFpTWU7QUFBQTtBQUFBLElBQUFIO0FBQUFBLE1Bak1mO0FBQUEsa0JBQUFpRyxHQUFBOUYsR0FBQXNILEdBc01JLDZCQUFlO0FBQUE7QUFBQSxZQUFBNkosV0FBQXJMLEdBQUFzTCxLQUFBOUssR0FHM0IsZUFBc0M7QUFBQSxZQUFBK0ssS0FBQW5ULEtBQUE4SCxNQUFBc0IsR0FBQXhCO0FBQUFBLFFBQUFHLFFBRWpFO0FBQUEsSUFDUDtBQUFBLFNBQUFELFNBQUEsU0FBQUEsU0FBMkQ7QUFBQTtBQUFBLFNBQUFBLFNBQXhCO0FBQUEsSUFDekIsT0FBdUI7QUFBQSxJQUEyQztBQUFBO0FBQUEsWUFBQXNMLFlBQUFwVCxLQUFBOEgsTUFBQW9MLEtBQUF0TDtBQUFBQSxRQUFBRyxRQUU5RDtBQUFBLElBQ2Q7QUFBQSxTQUFBRCxTQUFBLFNBQUFBLFNBQTJEO0FBQUE7QUFBQSxTQUFBQSxTQUF4QjtBQUFBLElBRW5DO0FBQUEsSUFBcUU7QUFBQTtBQUFBLFlBQUFELFFBQUE3SCxLQUFBOEgsTUFBQUY7QUFBQUEsUUFBQUcsUUFFN0Q7QUFBQSxJQUNSO0FBQUEsU0FBQUQsU0FBQSxTQUFBQSxTQUFnRTtBQUFBO0FBQUEsU0FBQUEsU0FBN0I7QUFBQSxJQUNuQyw2QkFBb0Q7QUFBQTtBQUFBLFlBQUF1TCxJQUFBclQsS0FBQThILE1BQUFGO0FBQUFBLFFBQUFHLFFBRTlDO0FBQUEsSUFDTjtBQUFBLFNBQUFELFNBQUEsU0FBQUEsU0FBZ0U7QUFBQTtBQUFBLFNBQUFBLFNBQTdCO0FBQUEsSUFDbkMsZ0NBQXVEO0FBQUE7QUFBQSxZQUFBd0wsS0FBQUMsS0FBQTNMO0FBQUFBLFFBQUE0TCxRQUszQztBQUFBLGFBQUFELE1BQUFuSyxHQUFBdEgsR0FDb0IsV0FBUCxtQkFBTyxxQkFBVTtBQUFBLFlBQ3ZCLE9BQXdCO0FBQUEsSUFBeUI7QUFBQTtBQUFBLFlBQUEyUixXQUFBRixLQUFBM0w7QUFBQUEsUUFBQTRMLFFBR3hEO0FBQUEsYUFBQUQsTUFBQW5LLEdBQUF0SCxHQUNvQixXQUFQLG1CQUFPLHFCQUFVO0FBQUEsUUFBQUEsSUFDeEIsWUFBNkI7QUFBQSxJQUMvQyw0QkFBK0I7QUFBQTtBQUFBLFlBQUE0UixRQUFBSCxLQUFBM0w7QUFBQUEsUUFBQTRMLFFBR25CO0FBQUEsYUFBQUQsTUFBQW5LLEdBQUF0SCxHQUNvQixXQUFQLG1CQUFPLHFCQUFVO0FBQUEsSUFDSixPQUF4QixRQUF3QiwyQ0FBd0I7QUFBQTtBQUFBLFlBQUE2UixPQUFBSixLQUFBM0w7QUFBQUEsUUFBQTRMLFFBR2xEO0FBQUEsYUFBQUQsTUFBQW5LLEdBQUF0SCxHQUNvQixXQUFQLG1CQUFPLHFCQUFVO0FBQUEsSUFDSixPQUF4QixRQUF3QiwyQ0FBd0I7QUFBQTtBQUFBLFlBQUE4UixPQUFBTCxLQUFBM0w7QUFBQUEsUUFBQTRMLFFBS2xEO0FBQUEsYUFBQUQsTUFBQW5LLEdBQUF0SCxHQUNvQixXQUFQLG1CQUFPLHFCQUFVO0FBQUEsSUFDakIsT0FBekIsU0FBeUIsdUNBQXdCO0FBQUE7QUFBQSxZQUFBK1IsS0FBQTNWLEdBQUEwSjtBQUFBQSxRQUFBNEwsUUFHckM7QUFBQSxhQUFBdFYsSUFBQWtMLEdBQUF0SCxHQUNJLE9BQVMsaUJBQVQscUJBQVM7QUFBQSxJQUNmLFVBQTBCO0FBQUEsSUFBc0I7QUFBQTtBQUFBLFlBQUFnUyxJQUFBNVYsR0FBQTBKO0FBQUFBLFFBQUE0TCxRQUc5QztBQUFBLGFBQUF0VixJQUFBa0wsR0FDQSxPQUFTLGNBQVQscUJBQVM7QUFBQSxJQUNDLE9BQXRCLE1BQXNCLHFDQUFzQjtBQUFBO0FBQUEsWUFBQTJLLFVBQUE3VixHQUFBMEUsS0FBQWdGO0FBQUFBLFFBQUE0TCxRQUdoQztBQUFBLGFBQUF0VixJQUFBMEUsS0FBQXdHLEdBQ1EsT0FBUyxtQkFBVCxxQkFBUztBQUFBLElBQ0ssT0FBckIsU0FBcUIsMENBQXFDO0FBQUE7QUFBQSxZQUFBNEssV0FBQTlWLEdBQUEwSixHQUFBaEY7QUFBQUEsUUFBQTRRLFFBRzNEO0FBQUEsYUFBQXRWLElBQUEwRSxLQUFBd0csR0FDSSxPQUFTLGNBQVQsMEJBQWE7QUFBQSxJQUNVLE9BQTFCLGNBQTBCLDBDQUFxQztBQUFBO0FBQUEsWUFBQTZLLFFBQUFyTSxHQUU5RCxrQkFBMkI7QUFBQSxZQUFBc00sVUFBQWpVLEdBQUEySCxHQWdCZixPQUFSLEtBQVEsbUJBQXdCO0FBQUEsWUFBQXVNLGFBQUFsVSxHQUFBMkg7QUFBQUEsUUFBQSxJQUNFLDhCRGpyQnhEO0FBQUEsSUNpckJpQyxPQUFSLEtBQVEsbUJBQThDO0FBQUE7QUFBQSxZQUFBd00sZUFBQW5VLEdBQUEySDtBQUFBQSxRQUFBLElBQ3JCLDhCRGxyQjFEO0FBQUEsSUNrckJtQyxPQUFSLEtBQVEsbUJBQTRDO0FBQUE7QUFBQSxZQUFBeU0sWUFBQXJVLEtBQUFvSTtBQUFBQSxRQUFBa00sTUFDN0Q7QUFBQSxJQUNBLGtCQUFxQztBQUFBO0FBQUEsWUFBQUMsWUFBQXZVLEtBQUE0SDtBQUFBQTtBQUFBQSxLQUFBME0sTUFFckM7QUFBQSxLQUFBdlIsSUFFTjtBQUFBLFNBQThCO0FBQUEsU0FFekI7QUFBQSxJQUF1QjtBQUFBLFNBQUF1SCxNQUFBO0FBQUE7QUFBQSxTQUFBQSxJQUFBLEdBQUF4SSxJQUFBO0FBQUE7QUFBQTtBQUFBLE9BQUFzRyxJQTNRckI7QUFBQSxPQUFBa00sUUE2UWI7QUFBQSxPQUFBRSxNQUxRO0FBQUEsV0FNdUM7QUFBQSxXQUF6QjtBQUFBLFdBQVg7QUFBQTtBQUFBO0FBQUEsV0FBNkQ7QUFBQSxzQkFBQWxLLE1BQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBRTFFO0FBQUEsR0FBRTtBQUFBLFlBQUFtSyxnQkFBQXJNLEdBRW9CLDhCQUFpQjtBQUFBLFlBQUFzTSxRQUFBcEs7QUFBQUEsUUFBQXFLLE1BSzdCO0FBQUEsSUFDVixvQkFBdUM7QUFBQTtBQUFBLFlBQUFDLFFBQUFoTjtBQUFBQTtBQUFBQSxLQUFBLElBR3pCO0FBQUE7QUFBQSxLQUFBaU4sTUFDSjtBQUFBLElBQ1YsUUFBQXZLLElBQU07QUFBQSxVQUFBd0s7QUFBQUEsU0FBQUEsTUQ1c0JWO0FBQUE7QUFBQSxTQUFBMVUsSUFBQTtBQUFBLEtDNnNCOEI7QUFBQTtBQUFBLElBQWU7QUFBQSxHQUFpQjtBQUFBLFlBQUEyVSxlQUFBeks7QUFBQUEsSUFRMUQ7QUFBQTtBQUFBLE1BQUE3QyxJQUN3QjtBQUFBLE1BQUFXLElBdlZUO0FBQUEsTUFBQXJGLElBd1ZMO0FBQUEsVUFDSztBQUFBLEtBQWE7QUFBQSxVQUFBakIsSUFBQTtBQUFBO0FBQUEsV0FBQXVCLElBUEw7QUFBQSxPQUNyQjtBQUFBO0FBQUEsYUFDNkM7QUFBQSxhQUE5QjtBQUFBO0FBQUE7QUFBQTtBQUFBLGFBQXdEO0FBQUE7QUFBQSxnQkFEdkU7QUFBQSxPQU1rQztBQUFBLGVBQWlDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxhQUNoRTtBQUFBO0FBQUE7QUFBQSxVQUFBeVI7QUFBQUEsU0FBQUEsTUR6dEJUO0FBQUE7QUFBQSxTQUFBMVUsSUFBQTtBQUFBLEtDMnRCb0I7QUFBQTtBQUFBLEdBQU87QUFBQSxZQUFBNFUsZUFBQXBOO0FBQUFBO0FBQUFBLEtBQUE3RSxJQU9mO0FBQUEsU0FBOEI7QUFBQSxTQUV6QjtBQUFBLElBQXVCO0FBQUEsU0FBQXVILE1BQUE7QUFBQTtBQUFBLFNBQUFBLElBQUEsR0FBQXhJLElBQUE7QUFBQTtBQUFBO0FBQUEsT0FBQXNHLElBclRyQjtBQUFBLFdBaVRiO0FBQUEsV0FNVztBQUFBLFdBQVU7QUFBQSxzQkFBQWtDLE1BQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBRXZCO0FBQUEsR0FBRTtBQUFBLFlBQUEySyxzQkFBQXJWO0FBQUFBLElBSUE7QUFBQTtBQUFBLE9BRVE7QUFBQTtBQUFBLE9BQ0M7QUFBQTtBQUFBLE9BSUM7QUFBQTtBQUFBLE9BRUM7QUFBQTtBQUFBLE9BQ0E7QUFBQTtBQUFBO0FBQUEsT0FWWDtBQUFBO0FBQUE7QUFBQSxHQVUyQjtBQUFBLFlBQUFzVixzQkFBQXRWO0FBQUFBLElBRTNCO0FBQUE7QUFBQSxPQVFvQjtBQUFBO0FBQUEsT0FDQTtBQUFBO0FBQUEsT0FOSTtBQUFBO0FBQUEsT0FHRTtBQUFBO0FBQUEsT0FGRDtBQUFBO0FBQUEsT0FHRTtBQUFBO0FBQUEsT0FGVDtBQUFBLGVBS2I7QUFBQTtBQUFBLEdBQUk7QUFBQSxZQUFBSixPQUFBVyxNQUFBZ1YsU0FBQXZWO0FBQUFBLFFBQUFDLElBZ0NIO0FBQUEsSUFDUjtBQUFBLElBQ0E7QUFBQSxJQUF1QztBQUFBLEdBQ3RDO0FBQUEsT0FBQXVWLE9BTVE7QUFBQSxZQUFBVixVQUFBMVUsS0FBQXNLO0FBQUFBLFFBQUE5SyxPQUNDLHNCQUFBb0ksSUFDRjtBQUFBLElBQ1I7QUFBQSxJQUNBLHdCQUEwQjtBQUFBO0FBQUEsWUFBQXlOLGdCQUFBclYsS0FBQW9JO0FBQUFBLFFBQUE1SSxPQUdSO0FBQUEsSUFDRixPQUFoQixTQUFnQix5Q0FBbUQ7QUFBQTtBQUFBLFlBQUFtSSxjQUFBUyxHQUVqRCx3Q0FBbUI7QUFBQSxZQUFBakksT0FBQWlJLEdBQ3pCLDJDQUFvQjtBQUFBLFlBQUFQLFFBQUEsR0FBQUMsTUFBQTlILEtBQUFvSTtBQUFBQSxRQUFBTCxRQUN4QixjQUFBNUgsT0FBQTtBQUFBLElBQ1I7QUFBQSxTQUFBMkgsU0FBQSxTQUFBQSxTQUFnRTtBQUFBO0FBQUEsU0FBQUEsU0FBN0I7QUFBQSxJQUNuQyxtQ0FBbUU7QUFBQTtBQUFBLFlBQUF3TixPQUFBbE4sR0FFckM7QUFBQTtBQUFBLElBQUFtTixlRDN6QmxDO0FBQUEsSUFBQTVSLFVDdVQwQjtBQUFBLElBQUE2UixPQWFIO0FBQUEsSUFBQUMsV0E0Qkk7QUFBQSxZQUFBQyxZQUFBRCxZQUFBRTtBQUFBQSxhQUFBQyxjQUFBeFY7QUFBQUEsS0FzZWQsb0RBQXdDO0FBQUE7QUFBQSxNQUFBeVYsU0FDbEM7QUFBQSxNQUFBQyxRQUNEO0FBQUEsS0FDWjtBQUFBLElBQW9CO0FBQUE7QUFBQSxLQUFBQyxTQUVUO0FBQUEsS0FBQXJVLFFBQ007QUFBQSxLQUFBc1UsVUFBYTtBQUFBLEtBQUFwVSxNQUFBO0FBQUEsYUFBQXFVLEdBQUE3VjtBQUFBQSxLQUU5QjtBQUFBLFVBQUFxVixXQUFBO0FBQUEsTUFFbUIscUJBQVM7QUFBQTtBQUFBLEtBRWhCLE9BQStCLHdCQUEvQixpQ0FBZ0M7QUFBQTtBQUFBLGFBQUE5UixNQUFBdkQsR0FFb0IsNkNBQUU7QUFBQSxRQUFBbUIsT0FFekQ7QUFBQSxJQUNIO0FBQUEsSUFDQTtBQUFBLElBQ1I7QUFBQTtBQUFBLE1BQUFrVSxhQUFBO0FBQUEsTUFBQUE7QUFBQUEsUUFHSSxTQUFBclYsR0FBMEIsT0FBaUIsdUJBQWpCLGlCQUFpQjtBQUFBLEtBQ25DO0FBQUE7QUFBQSxJQUVaO0FBQUEsR0FBVztBQUFBLFlBQUFvSCxlQUFBaU8sVUFBQXJOO0FBQUFBLElBRWtCO0FBQUE7QUFBQSxNQUFBMUcsUUFJVCxrQ0RyMkJ4QjtBQUFBLE1BQUFxVSxTQ3EyQmlFO0FBQUEsTUFBQW5VLE1BQUE7QUFBQSxLQUNwRDtBQUFBLEtBQ1A7QUFBQTtBQUFBLFlBSnVDO0FBQUEsSUFBOEIsc0NEbjJCM0UsY0N1MkJTO0FBQUE7QUFBQSxZQUFBc1UsS0FBQVQsVUFBQXJOO0FBQUFBLElBRWdCO0FBQUE7QUFBQSxNQUFBMUcsUUFHRCxrQ0Q1MkJ4QjtBQUFBLE1BQUFxVSxTQzQyQndEO0FBQUEsTUFBQW5VLE1BQUE7QUFBQSxLQUMzQztBQUFBLEtBQ1A7QUFBQTtBQUFBLFlBSm9DO0FBQUEsSUFBdUIsc0NEMTJCakUsY0M4MkJTO0FBQUE7QUFBQSxZQUFBdVUsU0FBQVYsVUFBQXJOO0FBQUFBO0FBQUFBLEtBQUExRyxRQUthLGtDRG4zQnRCO0FBQUEsS0FBQXFVLFNDbTNCc0Q7QUFBQSxLQUFBblUsTUFBQTtBQUFBLElBQzNDO0FBQUEsSUFDUDtBQUFBLEdBQUc7QUFBQSxZQUFBcEMsT0FBQTRXLFdBQUFDLGtCQUFBelc7QUFBQUEsSUFXSCxrQkFBQXdJLElBQUEsY0FBQXZJLElBQTZELFlBQUFBLElBQWI7QUFBQSxJQUNoRDtBQUFBLElBQW9EO0FBQUEsR0FDbkQ7QUFBQSxPQUFBMkMsT0FFUTtBQUFBLFlBQUE4VCxRQUFBdFcsS0FBQXVXLE1BQUFuTztBQUFBQSxRQUFBNUksT0FDQztBQUFBLElBQ1YsOEJBQW9EO0FBQUE7QUFBQSxZQUFBK1csS0FBQXJZLEdBRXpDLHlDQUFvQjtBQUFBLFlBQUFzWSxjQUFBdFk7QUFBQUE7QUFBQUEsS0FBQWtJLElBRXZCLDhCRDE0Qlo7QUFBQSxJQzI0QkksOENBQWtDO0FBQUE7QUFBQSxZQUFBaVEsaUJBQUFuWTtBQUFBQSxJQUVYLGtEQUEyQjtBQUFBO0FBQUEsWUFBQXVZLG1CQUFBbk0sR0FRSCxPQUFrQixlQUFsQixXQUFrQjtBQUFBLFlBQUFvTSxtQkFBQTNUO0FBQUFBLFFBQUEzQyxJQUNsQztBQUFBLElBQXVCLGVBQ3RDO0FBQUEsUUFBQUgsSUFEc0M7QUFBQSxJQUMxQixpQkFBZ0I7QUFBQTtBQUFBLFlBQUEwVyxvQkFBQSxHRHY1QmhEO0FBQUEsWUFBQUMsb0JBQUE7QUFBQSxZQUFBQyxPQUFBQztBQUFBQSxJQzY1QkksUUFBQTFOLElBQU07QUFBQSxVQUFBMEw7QUFBQUEsU0FBQUEsTUQ3NUJWO0FBQUE7QUFBQSxTQUFBMVUsSUFBQTtBQUFBLEtDODVCOEI7QUFBQTtBQUFBLElBQ25CO0FBQUEsR0FBaUI7QUFBQSxZQUFBMlcsT0FBQXpNO0FBQUFBLElBR3hCLFFBQUFsQixJQUFNO0FBQUEsVUFBQTBMO0FBQUFBLFNBQUFBLE1EbDZCVjtBQUFBO0FBQUEsU0FBQTFVLElBQUE7QUFBQSxLQ202QjhCO0FBQUE7QUFBQSxJQUNuQjtBQUFBLEdBQWlCO0FBQUEsT0FBQTRXLE9BS2Y7QUFBQSxZQUFBSCxTQUFBek4sR0FDZSx3QkFBa0M7QUFBQSxZQUFBMk4sU0FBQXpNO0FBQUFBLElBQzdDLFFBQUFsQixJQUFNO0FBQUEsVUFBQTBMO0FBQUFBLFNBQUFBLE1EMzZCdkI7QUFBQTtBQUFBLFNBQUExVSxJQUFBO0FBQUEsS0M0NkI0QjtBQUFBO0FBQUEsSUFBZTtBQUFBLEdBQUk7QUFBQTtBQUFBLElBQUF5VyxXQU9oQztBQUFBLElBQUFFLFdBQ0E7QUFBQSxJQUFBRSxtQkFDVTtBQUFBLElBQUFDLG1CQUNBO0FBQUEsSUFBQUMsTUFFYjtBQUFBLFlBQUEvTixFQUFBZ08sTUFBQTlNO0FBQUFBLElBRU0sV0FDTixpQkFBOEI7QUFBQSxRQUFBbEMsSUFEeEI7QUFBQSxJQUVKLG9CQUE0QztBQUFBO0FBQUEsWUFBQWlQLFNBQUFDLFFBQUFDLE1BQUFDLE1BQUFDLE1BQUFDLE9BQUFDLFVBQUFDO0FBQUFBLFFBQUFBLE1BRzlDO0FBQUEsSUFDUjtBQUFBLEtBQ0U7QUFBQSxLQUNBO0FBQUEsS0FBcUM7QUFBQTtBQUFBLE9BQUF4UixJQUFBO0FBQUEsT0FBQXlSLE1BR3pCO0FBQUEsV0FBNkIscUNBQUFDLEtEcjhCL0M7QUFBQSxNQ3E4QmtCO0FBQUE7QUFBQSxLQUVaO0FBQUEsS0FDQTtBQUFBLEtBQ0E7QUFBQTtBQUFBO0FBQUEsVUFBQWhEO0FBQUFBLFNBQUFBLE1EejhCTjtBQUFBO0FBQUEsU0FBQTFVLElBQUE7QUFBQSxLQzI4QnVCO0FBQUE7QUFBQSxHQUFPO0FBQUEsWUFBQWtYLE9BQUFNO0FBQUFBLFFBQUF4UixJQUdsQjtBQUFBLElBQ0wseUNBQXdCLDRCQUErQztBQUFBO0FBQUEsWUFBQW1SLEtBQUFLLEdBRS9ELCtDQUF3QjtBQUFBLFlBQUFKLEtBQUFJO0FBQUFBLFFBQUF4UixJQUUzQjtBQUFBLElBQ0wsb0NBQStCLHlCQUFhO0FBQUE7QUFBQSxZQUFBcVIsS0FBQUcsR0FJcEMsK0NBQXdCO0FBQUEsWUFBQUYsTUFBQUU7QUFBQUEsUUFBQUcsSUFHM0I7QUFBQSxJQUNMLG9DQUE0Qiw0QkFBcUI7QUFBQTtBQUFBLFlBQUFKLFNBQUFDO0FBQUFBLFFBQUExWixJQUc1QztBQUFBLElBQ0wsb0NBQTRCLDRCQUFxQjtBQUFBO0FBQUEsT0FBQThaLFNBVjFDO0FBQUEsWUFBQUMsY0FBQUw7QUFBQUEsYUFBQU0sV0FBQTVOLEdBaUJxQiwwQkFBeUM7QUFBQSxJQUN4RTtBQUFBO0FBQUEsTUFBQWxFLElBQ1U7QUFBQSxNQUFBQSxNQUNHLGlDQUFnQztBQUFBLFVBQ25CO0FBQUEsVUFBckI7QUFBQTtBQUFBO0FBQUEsVUFBQTBPO0FBQUFBLFNBQUFBLE1EMytCVDtBQUFBO0FBQUEsU0FBQTFVLElBQUE7QUFBQSxLQzQrQnVCO0FBQUE7QUFBQSxHQUFPO0FBQUEsWUFBQStYLG1CQUFBUCxHQUFBUTtBQUFBQSxhQUFBQyxXQUFBL047QUFBQUEsU0FBQSxJQUlNO0FBQUEsS0FBd0Msb0NBQUM7QUFBQTtBQUFBLElBRXpFO0FBQUE7QUFBQSxNQUFBc04sTUFDVTtBQUFBLFVBQ2U7QUFBQSxNQUFBSCxPQUFaO0FBQUEsS0FDWDtBQUFBO0FBQUE7QUFBQSxVQUFBM0M7QUFBQUEsU0FBQUEsTURyL0JOO0FBQUE7QUFBQSxTQUFBMVUsSUFBQTtBQUFBLEtDdS9CdUI7QUFBQTtBQUFBLEdBQU87QUFBQSxPQUFBa1ksTUFRaEI7QUFBQSxZQUFBQyxTQUFBblM7QUFBQUEsUUFBQSxJQUNxQyxpQkFBWjtBQUFBLElBQXVDO0FBQUE7QUFBQSxZQUFBb1MsSUFBQWhVLEdBQUE0QixHQUNqRCxtQkFBa0M7QUFBQSxZQUFBa04sT0FBQTlPLEdBQUE0QjtBQUFBQSxRQUFBLElBQ3BCO0FBQUEsSUFBa0MscUNEbGdDN0UsY0NrZ0M2RTtBQUFBO0FBQUEsWUFBQXFTLFNBQUFqVSxHQUFBNEIsR0FDdEMsT0FBaEIsc0JBQWdCLFlBQXFDO0FBQUEsWUFBQXNTLEtBQUF4YSxHQUFBa0ksR0FBQXhEO0FBQUFBLGFBQUEyQixJQUFBLEdEbmdDNUU7QUFBQSxhQUFBb1UsTUFBQTtBQUFBLFlDdWdDd0M7QUFBQSxJQUEwQixtREFBSTtBQUFBO0FBQUEsWUFBQWpFLFVBQUFwSyxHQUtoRSxpQkFBNkI7QUFBQSxZQUFBc0ssVUFBQXhPLEdBRUosbUJBQTJCO0FBQUEsWUFBQXdTLFNBQUF2VztBQUFBQSxRQUFBaUksSUFFcEQsU0FBQWxFLElBSkE7QUFBQSxJQVFBO0FBQUE7QUFBQSxlQUFBeEc7QUFBQUEsV0FBQXdKLElBSFEsVUFBQTVFLElBQUE7QUFBQSxPQUNDO0FBQUEsT0FBZ0Q7QUFBQTtBQUFBO0FBQUEsSUFFdEM7QUFBQSxHQUFHO0FBQUEsWUFBQXFVLFNBQUF6UztBQUFBQSxRQUFBLElBRUUsY0FBQTVCLEdBQUE0RSxHQUFBeEcsS0FBc0IsMkJBQWE7QUFBQSxJQUFPO0FBQUE7QUFBQSxZQUFBa1csT0FBQWpaLEdBQ3JELGlCQUFtQjtBQUFBLFlBQUFrWixhQUFBbkIsT0FBQXROLElBR0EsVUFkaEMsaUJBQTZCLENBY1k7QUFBQSxZQUFBME8sa0JBQUFwQixHQUFBcUI7QUFBQUEsUUFBQXJCLE1BRW5DLGdCQWRtQjtBQUFBLElBZTNCO0FBQUEsSUFBMEM7QUFBQSxHQUN6QztBQUFBLFlBQUFzQixnQkFBQXRCLE9BQUF0TixJQUVvQyxhQXBCbkMsaUJBQTZCLENBb0JrQjtBQUFBLFlBQUE2TyxxQkFBQXZCLEdBQUFxQjtBQUFBQSxRQUFBckIsTUFFekMsZ0JBcEJtQjtBQUFBLElBcUIzQjtBQUFBLElBQXdDO0FBQUEsR0FDdkM7QUFBQSxZQUFBaEQsVUFBQWdELEdBSXdCLG1CQUEyQjtBQUFBLFlBQUFsRCxVQUFBMEMsTUFBQTlNO0FBQUFBLElBQ2hDLFFBQUFsQixNQUFNO0FBQUEsVUFBQTBMO0FBQUFBLFNBQUFBLE1EemlDOUI7QUFBQTtBQUFBLFNBQUExVSxJQUFBO0FBQUEsS0MwaUM0QjtBQUFBO0FBQUEsSUFBZTtBQUFBLEdBQUk7QUFBQSxZQUFBc0UsT0FBQXhHLEdBQUFvTTtBQUFBQSxJQUk5QixRQUFBbEIsSUFBTTtBQUFBLFVBQUEwTDtBQUFBQSxTQUFBQSxNRDlpQ3ZCO0FBQUE7QUFBQSxTQUFBMVUsSUFBQTtBQUFBLEtDK2lDNEI7QUFBQTtBQUFBLElBQ25CO0FBQUEsR0FBaUI7QUFBQSxZQUFBeVcsU0FBQXZNLEdBRVQsMEJBQWE7QUFBQSxZQUFBeU0sU0FBQXpNLEdBQ2IsMEJBQWE7QUFBQSxZQUFBMk0sbUJBQUEzTSxHQUNILGtDQUF1QjtBQUFBLFlBQUE0TSxtQkFBQTVNLEdBQ3ZCLGtDQUF1QjtBQUFBLFlBQUE4TyxNQUFBQyxHQVFoQywwQ0FBcUI7QUFBQSxZQUFBM1gsUUFBQTJYLEdBQ1U7QUFBQSxZQUFBQyxZQUFBRCxHQUN6Qix5Q0FBb0I7QUFBQSxZQUFBRSxXQUFBRjtBQUFBQSxRQUFBLElBQ2lCLFVBQXRCO0FBQUEsSUFBaEIsNkJBQWE7QUFBQSxHQUF5QjtBQUFBLFlBQUFHLFlBQUF0YixHQUFBbWIsR0FBQXpXO0FBQUFBLFFBQUEsSUFHZjtBQUFBLElBQWtCO0FBQUEsU0FBQUEsUUFBQTtBQUFBO0FBQUEsU0FBQUEsUUFBQSxLQUFBZCxJQUFBO0FBQUE7QUFBQSxjQUNqRCxnQ0FBdUM7QUFBQSxzQkFBQWMsUUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFFaEQ7QUFBQSxHQUFJO0FBQUEsWUFBQTZXLG1CQUFBdmIsR0FBQW1iLEdBQUF6VztBQUFBQSxRQUFBbEIsUUFFaUM7QUFBQSxJQUFtQixZQUNoRDtBQUFBLFFBQUFrRyxJQURnRCxjQUlkO0FBQUEsSUFBa0I7QUFBQSxTQUFBaEYsUUFBQTtBQUFBO0FBQUEsU0FBQUEsUUFBQSxLQUFBZCxJQUFBO0FBQUE7QUFBQTtBQUFBLE9BQUE0WCxRQUM1QztBQUFBLE9BQUEzUixRQUNVO0FBQUEsT0FBQUQsT0FDRDtBQUFBLFdBQ2Q7QUFBQSxXQUFtQjtBQUFBLHNCQUFBbEYsUUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFFNUI7QUFBQSxHQUFJO0FBQUEsWUFBQStXLFlBQUFDLElBR2EsZ0NBQXNEO0FBQUEsWUFBQUMsa0JBQUEzYixHQUFBbWIsR0FBQXpXO0FBQUFBLFFBQUFsQixRQUlyQztBQUFBLElBQWtCLFlBQzlDO0FBQUE7QUFBQSxLQUFBb1ksU0FEOEM7QUFBQSxLQUFBQyxVQUd0QztBQUFBLFNBRUQ7QUFBQSxJQUF3QjtBQUFBLFNBQUFuWCxRQUFBO0FBQUE7QUFBQSxTQUFBQSxRQUFBLEtBQUFkLElBQUE7QUFBQTtBQUFBLFVBQUFrWSxRQUN2QixZQUFBdFksVUFSQTtBQUFBLE1BVVQ7QUFBQSxXQUFBa0IsUUFBc0I7QUFBQTtBQUFBLFdBQUEyVCxPQVhmLFVBQUEzVCxRQWFIO0FBQUEsY0FGa0I7QUFBQSxzQkFBQUEsUUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFJM0I7QUFBQSxHQUFJO0FBQUEsWUFBQXFYLHlCQUFBL2IsR0FBQW1iLEdBQUF6VztBQUFBQSxRQUFBbEIsUUFFcUM7QUFBQSxJQUFtQixZQUN0RDtBQUFBLFFBQUFrRyxJQURzRCxVQUFBbEcsVUFHdEQ7QUFBQSxJQUFrQixjQUNkO0FBQUE7QUFBQSxLQUFBb1ksU0FEYztBQUFBLEtBQUFDLFVBR047QUFBQSxTQUVEO0FBQUEsSUFBd0I7QUFBQSxTQUFBblgsUUFBQTtBQUFBO0FBQUEsU0FBQUEsUUFBQSxLQUFBZCxJQUFBO0FBQUE7QUFBQSxVQUFBa1ksUUFDdkIsWUFBQU4sUUF6Qko7QUFBQSxNQTJCTDtBQUFBLFdBQUE5VyxRQUFxQjtBQUFBO0FBQUE7QUFBQSxRQUFBMlQsT0E1QmxCO0FBQUEsUUFBQXhPLFFBOEJnQjtBQUFBLFFBQUFELE9BQ0Q7QUFBQSxRQUFBbEYsUUFDZDtBQUFBLGNBSmlCO0FBQUEsc0JBQUFBLFFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBTTFCO0FBQUEsR0FBSTtBQUFBLE9BQUFzWCxTQU1EO0FBQUEsWUFBQUMsT0FBQTdQLEdBQ2EsdUJBQTBDO0FBQUEsWUFBQXZLLFNBQUFxYSxPQUFBOVA7QUFBQUEsUUFBQThQLFVBRXRELHFDRGpvQ2hCO0FBQUEsSUNrb0NJLDZCQUFzQztBQUFBO0FBQUEsWUFBQUMsS0FBQWhCLEdBQUEvTztBQUFBQSxRQUFBLElBR1Q7QUFBQSxJQUE3QixxQ0Ryb0NKLGNDcW9Da0U7QUFBQTtBQUFBLFlBQUE1SSxRQUFBMlgsR0FBQS9PO0FBQUFBLFFBQUEsSUFHakM7QUFBQSxJQUE3QixxQ0R4b0NKLGNDd29Dd0U7QUFBQTtBQUFBLFlBQUFnUSxhQUFBakIsR0FBQW5iLEdBQUFvTSxHQUFBMUg7QUFBQUEsUUFBQWlSLE9BR3pEO0FBQUEsSUFDWCx5Q0Q1b0NKLHlCQzRvQ3NDO0FBQUE7QUFBQSxZQUFBMEcsUUFBQWxCLEdBQUFtQixJQUFBbFEsR0FHcEIsdUJBQXFEO0FBQUEsWUFBQW1RLFlBQUFwQixHQUFBbUIsSUFBQWxRLEdBR3JELDBCQUF3RDtBQUFBLFlBQUFvUSxPQUFBckIsR0FBQS9PLEdBR3pELGtCQUF3QztBQUFBLFlBQUFxUSxNQUFBQyxPQUFBdkIsR0FBQS9PO0FBQUFBLElBRWhDLFlBQ08sT0FBcEIsaUJBQW9CLFdBRStDO0FBQUEsUUFBQXNRLFVBSHREO0FBQUEsSUFHQyxPQUFwQixpQkFBb0Isb0JBQXFEO0FBQUE7QUFBQSxZQUFBQyxLQUFBeEIsR0FBQS9PLEdBRWhELG9CQUFpQztBQUFBLFlBQUF3USxXQUFBekIsR0FDM0MsNkNBQXdCO0FBQUEsWUFBQTBCLGVBQUExQixHQUFBdlg7QUFBQUEsSUFDbEIsa0RBQTBCO0FBQUE7QUFBQSxZQUFBa1osUUFBQTNCLEdBQ25DLDBDQUFzQjtBQUFBLFlBQUFlLE1BQUFmLEdBQ3hCLDBDQUFxQjtBQUFBLFlBQUE0QixPQUFBNUIsR0FDcEIsMENBQXNCO0FBQUEsWUFBQTZCLFlBQUE3QixHQUNqQiw4Q0FBMEI7QUFBQSxZQUFBOEIsWUFBQTlCLEdBQzFCLDhDQUEwQjtBQUFBLFlBQUErQixVQUFBL0IsR0FDNUIsNkNBQXlCO0FBQUEsWUFBQWdDLE9BQUFoQyxHQUM1QiwyQ0FBc0I7QUFBQSxZQUFBaUMsT0FBQWpDLEdBQ3RCLDBDQUFzQjtBQUFBLFlBQUFrQyxRQUFBbEMsR0FDckIsMkNBQXVCO0FBQUEsWUFBQW1DLGFBQUFuQyxHQUNsQiwrQ0FBMkI7QUFBQSxZQUFBalEsSUFBQTNCLEdBQUEyQixHQVMzQixpQkFBTTtBQUFBLE9BQUFxUyxRQW5EVztBQUFBLFlBQUFDLFFBQUE5YjtBQUFBQSxRQUFBd0osSUFxRDFCLFVBQUEzQixJQUFBLGNBQVM7QUFBQSxJQUFlLHFDQUFtQjtBQUFBO0FBQUEsWUFBQWtVLElBQUF2VCxHQUFBd1QsSUFDeEMscUJBQXNCO0FBQUEsWUFBQUMsUUFBQWpjO0FBQUFBLElBQ3ZCLFlBQWlCO0FBQUEsUUFBQWdjLEtBQWpCO0FBQUEsSUFBbUM7QUFBQSxHQUFFO0FBQUEsWUFBQUUsTUFBQXJVLEdBQ3JDLHVCQUFlO0FBQUEsWUFBQXNVLElBQUF0VSxHQUFBM0YsR0FDWCx3Q0FBYSxDQUFDO0FBQUEsWUFBQWthLE1BQUF2VSxHQUFBdkosR0FDWix3Q0FBZSxDQUFDO0FBQUEsWUFBQStkLFFBQUEsR0R4ckN0QztBQUFBLFlBQUFDLE9BQUE5VCxHQUFBd1QsSUFBQXZaLEdDMHJDc0IseUJBQXdCO0FBQUEsWUFBQThaLFlBQUE1RixNQUFBMVcsR0FBQXdDO0FBQUFBLElBQ2pCLFFBQXFCO0FBQUEsUUFBQXVGLElBQXJCO0FBQUEsSUFBbUM7QUFBQSxHQUFjO0FBQUEsT0FBQXdVLFlBRTFEO0FBQUEsWUFBQUEsWUFBQTlSLEdBWkcseUJBcURlO0FBQUEsT0FBQStSLFNBeENyQjtBQUFBLFlBQUFBLFNBQUEvUixHQWJNLHNCQXNEUztBQUFBLE9BQUFnUyxlQXhDVDtBQUFBLFlBQUFBLGVBQUFoUyxHQWRBLDRCQXVEcUI7QUFBQTtBQUFBLElBQUFpUyxZQXhDeEI7QUFBQSxJQUFBQSxjQXlDRjtBQUFBLElBQUFDLFVBeENBO0FBQUEsWUFBQUEsVUFBQXBULEdBaEJLO0FBQUE7QUFBQSxJQUFBcVQsY0RqckN2QjtBQUFBLElBQUFDLFVDa3NDa0I7QUFBQSxJQUFBQSxZQXlDRjtBQUFBLElBQUFDLFlEM3VDaEI7QUFBQSxJQUFBQyxTQ21zQ2lCO0FBQUEsWUFBQUEsUUFBQXRTLEdBbEJNLHNCQTJEUztBQUFBLE9BQUF1UyxPQXhDakI7QUFBQSxZQUFBQSxPQUFBL2EsR0F5Q0EsbUJBQWU7QUFBQSxPQUFBZ2IsVUF4Q1o7QUFBQSxZQUFBQSxVQUFBeFMsR0FwQkssdUJBNkRXO0FBQUEsT0FBQXlTLGtCQXhDUjtBQUFBLFlBQUFBLGtCQUFBelMsR0F5Q0EsNkJBQTBCO0FBQUEsT0FBQTBTLFFBeENwQyxTQUFBQSxVQXlDRixjQUFBQyxNQXhDQTtBQUFBLFlBQUFBLE1BQUEzUyxHQXZCUyxtQkFnRUc7QUFBQTtBQUFBLElBQUE0UyxXQXhDUDtBQUFBLElBQUFBLGFBeUNGO0FBQUEsSUFBQUMsV0F4Q0U7QUFBQSxZQUFBQSxXQUFBN1MsR0F6Qkksd0JBa0VhO0FBQUEsT0FBQThTLFlBeENoQjtBQUFBLFlBQUFBLFlBQUE5UyxHQTFCRyx5QkFtRWU7QUFBQSxPQUFBK1MsT0F4Q3ZCO0FBQUEsWUFBQUEsTUFBQS9TLEdBM0JRLG9CQW9FSztBQUFBLE9BQUE5RCxXQXhDWDtBQUFBLFlBQUFBLFNBQUExRSxHQXlDQSx1QkFBaUI7QUFBQTtBQUFBLElBQUF3YixhRHR2Q2xDO0FBQUEsSUFBQUMsU0M4c0NpQjtBQUFBLElBQUFBLFdBeUNGO0FBQUEsSUFBQUMsT0F4Q0E7QUFBQSxZQUFBQSxPQUFBbFQsR0E5QlEsb0JBdUVLO0FBQUEsT0FBQW1ULFNEeHZDNUIsTUFBQXRYLE9DZ3RDYTtBQUFBLFlBQUFBLEtBQUFtRSxHQS9CVSxvQkF3RUM7QUFBQSxPQUFBb1QsT0F4Q1Q7QUFBQSxZQUFBQSxPQUFBcFQsR0FoQ1Esb0JBeUVLO0FBQUEsT0FBQXFULE9BeENiO0FBQUEsWUFBQUEsT0FBQXJULEdBakNRLG9CQTBFSztBQUFBLE9BQUFzVCxRQXhDWjtBQUFBLFlBQUFBLFFBQUF0VCxHQWxDTyxxQkEyRU87QUFBQSxPQUFBdVQsU0F4Q1o7QUFBQSxZQUFBQSxTQUFBdlQsR0FuQ0ssc0JBNEVXO0FBQUEsT0FBQWlNLFNBeENuQjtBQUFBLFlBQUFBLE9BQUFqTSxHQXBDUSxzQkE2RUs7QUFBQSxPQUFBd1QsY0F4Q047QUFBQSxZQUFBQSxjQUFBeFQsR0FyQ0MsMkJBOEVtQjtBQUFBLE9BQUF5VCxNQXhDNUI7QUFBQSxZQUFBQSxNQUFBelQsR0F0Q1MsbUJBK0VHO0FBQUEsT0FBQTBULFdBeENQLFlBQUFBLGFBeUNGLGlCQUFBQyxPQXhDRjtBQUFBLFlBQUFBLE9BQUFuYyxHQXlDQSxtQkFBZTtBQUFBO0FBQUEsSUFBQW9jLFdBeENYO0FBQUEsSUFBQUEsYUF5Q0Y7QUFBQSxJQUFBQyxhQXhDSTtBQUFBLFlBQUFBLGFBQUEvVSxHQTFDRTtBQUFBLE9BQUFnVixNQTJDVDtBQUFBLFlBQUFBLE1BQUE5VCxHQTNDUyxtQkFvRkc7QUFBQSxPQUFBK1QsWURyd0MxQixTQUFBQyxRQzZ0Q2dCO0FBQUEsWUFBQUEsUUFBQWhVLEdBNUNPLHFCQXFGTztBQUFBLE9BQUFpVSxXQXhDWDtBQUFBLFlBQUFBLFdBQUF6YyxHQXlDQSx1QkFBbUI7QUFBQSxPQUFBMGMsUUF4Q3RCO0FBQUEsWUFBQUEsUUFBQWxVLEdBOUNPLHFCQXVGTztBQUFBLE9BQUFuSyxTQXhDZDtBQUFBLFlBQUFBLE9BQUFtSyxHQS9DTyxzQkF3Rk87QUFBQSxPQUFBbVUsWUR6d0M5QixTQUFBOUYsUUNpdUNnQjtBQUFBLFlBQUFBLFFBQUFyTyxHQWhETyxxQkF5Rk87QUFBQSxPQUFBaEUsVUF4Q2Q7QUFBQSxZQUFBQSxRQUFBeEUsR0F5Q0Esc0JBQWdCO0FBQUEsT0FBQTRjLE9BeENqQjtBQUFBLFlBQUFBLE9BQUFwVSxHQWxEUSxvQkEyRks7QUFBQSxPQUFBcVUsa0JBV0o7QUFBQSxZQUFBQyxTQUFBeGUsR0FDbUI7QUFBQTtBQUFBLElBQUF5ZTtBQUFBQSxNQUVwQztBQUFBO0FBQUE7QUFBQSxZQUFBQyxxQkFBQUM7QUFBQUEsUUFBQUMsTUFLTywwQ0FDVixpQkFGQTtBQUFBLElBRUE7QUFBQSxTQUFBcGMsUUFBQTtBQUFBO0FBQUEsU0FBQUEsTUFBQSxHQUFBZCxJQUFBO0FBQUE7QUFBQSxjQUFxRDtBQUFBLHNCQUFBYyxRQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUNyRDtBQUFBLEdBQUk7QUFBQSxjQUFBeEMsR0FBQXFILEdBRXdCLGtCQUFpQztBQUFBLE9BQUF3WCxNRG55Q2pFO0FBQUEsWUFBQTdWLElBQUEsR0FBQXBKLEtBQUF1VyxNQUFBMkk7QUFBQUE7QUFBQUEsS0FBQW5jLE1DMnpDUTtBQUFBLEtBQUE2WSxPQUFBO0FBQUEsS0FBQXhiLElBQ0k7QUFBQSxLQUFBK2UsS0FDUjtBQUFBLEtBQUFDLE9BQUE7QUFBQSxLQUFBeGYsUUFBQTtBQUFBO0FBQUEsS0F4QmU7QUFBQSxTQUFBZ2MsS0FBQSxVQUFBbGEsUUFBQSxVQUFBMEgsSUFBQSxVQUFBeEIsSUFBQTtBQUFBLEtBRVY7QUFBQSxNQUFlO0FBQUEsYUFDZjtBQUFBLFVBQUF1WCxPQUFnQztBQUFBO0FBQUE7QUFBQTtBQUFBLGFBQ2hDO0FBQUEsTUFDaUI7QUFBQSxPQUFlO0FBQUEsV0FBZ0I7QUFBQSxVQUUxQyxzQkFDUDtBQUFBO0FBQUEsSUFHRjtBQUFBO0FBQUEsVUFFd0M7QUFBQSxNQUFBL1YsTUFBOUI7QUFBQSxLQUNEO0FBQUE7QUFBQSxJQUVUO0FBQUE7QUFBQSxVQUV3QztBQUFBLE1BQUFBLE1BQTlCO0FBQUEsS0FDRDtBQUFBO0FBQUEsSUFNWCx1Q0FBVTtBQUFBLElBQW1CO0FBQUEsR0FDNUI7QUFBQSxZQUFBaVcsSUFBQXJmLEtBQUFzSztBQUFBQSxRQUFBdkgsSUFFSztBQUFBLElBQ04sMEJBQTJDO0FBQUE7QUFBQSxZQUFBc2MsTUFBQXJmLEtBQUFzSztBQUFBQSxRQUFBdkgsSUFFcEM7QUFBQSxJQUN1QixPQUE5QixpQkFBOEIscUJBQWlCO0FBQUE7QUFBQSxZQUFBdWMsR0FBQXRmLEtBQUFKLE9BRUU7QUFBQSxZQUFBMmYsS0FBQXZmLEtBQUFKLE9BQ1M7QUFBQSxZQUFBNGYsT0FBQXBmO0FBQUFBLElBRTdDLDBEQUF1QjtBQUFBLEdBQUk7QUFBQSxZQUFBcWYsTUFBQXJmO0FBQUFBLElBQzVCLDREQUF1QjtBQUFBLEdBQUk7QUFBQSxZQUFBc2YsU0FBQXRmO0FBQUFBLFFBQUEsSUFDTDtBQUFBLElBQXdCO0FBQUE7QUFBQSxZQUFBdWYsYUFBQWxZLEdBQUFySDtBQUFBQSxRQUFBLElBQ3hCO0FBQUEsSUFBWTtBQUFBO0FBQUEsWUFBQXdmLFNBQUFQO0FBQUFBLElBQ3ZCLHFCQUNmLG1EQUNXO0FBQUE7QUFBQSxZQUFBUSxhQUFBemYsR0FFQSxnREFBMkI7QUFBQSxZQUFBMGYsY0FBQTlmLEtBQUFxRDtBQUFBQSxRQUFBMGMsT0FNOUI7QUFBQSxJQUVoQixPQUF3RCxxQkFBeEQsK0JBQXdEO0FBQUE7QUFBQSxZQUFBQyxpQkFBQWhnQixLQUFBeUg7QUFBQUEsUUFBQXNZLE9BRXJDO0FBQUEsSUFFbkIsT0FBc0QscUJBQXRELDZCQUFzRDtBQUFBO0FBQUEsWUFBQUUsdUJBQUFqZ0IsS0FBQWtnQjtBQUFBQSxRQUFBSCxPQUU3QixnQ0FDSDtBQUFBLElBQXRCLHFDRGoyQ0osY0NpMkMyRTtBQUFBO0FBQUEsWUFBQUksc0JBQUFuZ0IsS0FBQTlCLEdBQUFnaUIsS0FBQXRkO0FBQUFBO0FBQUFBLEtBQUFtZCxPQUUvQztBQUFBLEtBQUFoQixLQUNmO0FBQUEsU0FFSTtBQUFBLElBQXdCO0FBQUEsU0FBQW5jLFFBQUE7QUFBQTtBQUFBLFNBQUFBLFFBQUEsS0FBQWQsSUFBQTtBQUFBO0FBQUEsY0FDNUIsaUNBQW1DO0FBQUEsc0JBQUFjLFFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBRTVDO0FBQUEsR0FBSTtBQUFBLFlBQUF3ZCxPQUFBaGdCO0FBQUFBLFFBQUFzQixRQUllO0FBQUEsSUFBc0IsY0FBQXRCLE1BQUEsVUFDN0IsZUFBVztBQUFBLElBQ2xCO0FBQUEsR0FBSTtBQUFBLFlBQUFpZ0IsU0FBQXJnQixLQUFBSTtBQUFBQSxRQUFBa2dCLFdBT0U7QUFBQSxJQUF3QjtBQUFBLGNBQ2U7QUFBQSxjQUNHO0FBQUE7QUFBQSxZQUFBQyxhQUFBbmdCLEdBQUFpQztBQUFBQSxJQU5yRDtBQUFBLEtBQVU7QUFBQSxLQUNFO0FBQUE7QUFBQSxJQU9zRCw4Q0FBaEIsb0JBQWtCO0FBQUE7QUFBQSxZQUFBbWUsaUJBQUFwZ0IsR0FBQWlDO0FBQUFBLElBR2pDLGdDQUFvQjtBQUFBLElBQWlCO0FBQUE7QUFBQSxZQUFBb2UsZ0JBQUFyZ0IsR0FBQWlDO0FBQUFBLElBQ3RDLCtCQUFtQjtBQUFBLElBQWlCO0FBQUE7QUFBQSxZQUFBcWUsaUJBQUF0Z0I7QUFBQUEsSUFDL0MsdURBQWtDO0FBQUE7QUFBQSxZQUFBdWdCLGFBQUF2Z0I7QUFBQUEsSUFDdEMsbURBQThCO0FBQUE7QUFBQSxZQUFBd2dCLGdCQUFBQyxLQUFBemdCLEdBQUFpQztBQUFBQSxJQUNyQjtBQUFBLEtBR2hCLG9DQUF3QjtBQUFBO0FBQUEsS0FEekIsOEJBQWtCO0FBQUE7QUFBQSxLQURsQiwrQkFBbUI7QUFBQSxJQURGO0FBQUEsR0FHeUI7QUFBQSxZQUFBSSxTQUFBckMsR0FFOUIsYUFBMEI7QUFBQSxZQUFBd2IsR0FBQWhVLEdBQUF4SDtBQUFBQSxRQUFBLElBS3pCO0FBQUEsSUFBMkMscUNEMzRDdkUsY0MyNEN1RTtBQUFBO0FBQUEsWUFBQTBnQixPQUFBbFosR0FBQXdCLEdBQUFoSjtBQUFBQSxJQUdoRSwyQkFBcUI7QUFBQSxJQUN4QixVQUFBZ0osTUFBQSxNQUVtQix3QkFBc0Q7QUFBQSxJQUR4RDtBQUFBLElBQThDO0FBQUEsR0FDVTtBQUFBLFlBQUEyWCxXQUFBM1ksR0FVbkQsc0NBQThDO0FBQUEsWUFBQTRZLFVBQUFsZixHQUMvQyxrQ0FBeUM7QUFBQSxZQUFBbWYsWUFBQS9pQixHQUN2QyxtQ0FBNEM7QUFBQSxZQUFBZ2pCLFdBQUE1VyxHQUM3Qyx3Q0FBbUQ7QUFBQSxZQUFBNlcsS0FBQTFaLEdBRTVELDZDQUE4QztBQUFBLFlBQUFzVSxNQUFBdFUsR0FDL0MscUNEajZDaEIsV0NpNkNnQixDQUE0QztBQUFBLFlBQUF1VSxRQUFBdlUsR0FDMUMsdUNEbDZDbEIsV0NrNkNrQixDQUFnRDtBQUFBLFlBQUEyWixLQUFBM1osR0FDakQsc0NEbjZDakIsV0NtNkNpQixDQUE4QztBQUFBO0FBQUEsSUFBQWlWLFlBRTdDO0FBQUEsSUFBQWxXLFdBQ0Q7QUFBQSxJQUFBK1csV0FDQTtBQUFBLElBQUFwWCxPQUNKO0FBQUEsSUFBQW9RLFNBQ0U7QUFBQSxJQUFBaUksVUFDQztBQUFBLElBQUE3RixVQUNBO0FBQUEsSUFBQXJTLFVBQ0E7QUFBQSxZQUFBK2EsS0FBQWpiLEdBQUFoRyxPQUFBLElBR21DO0FBQUEsWUFBQWtoQixTQUFBbGIsR0FBQWdELEdBQUFoSjtBQUFBQSxRQUFBLElBQ0M7QUFBQSxJQUFuQjtBQUFBLElBQW1DO0FBQUE7QUFBQSxZQUFBd2MsUUFBQXZaLEdBQUFqRCxHQUtyRCxrQ0FBNEQ7QUFBQSxZQUFBbWhCLFVBQUFsZSxHQUFBK0UsR0FBQWhJO0FBQUFBLElBRW5ELFlBQ0wsMEJBQ0MseUJBQTBEO0FBQUE7QUFBQSxZQUFBb2hCLGVBQUF4aEIsS0FBQW9HLEdBQUFoRztBQUFBQTtBQUFBQSxLQUFBZ0gsSUFzQnpEO0FBQUEsS0FBQWtYLFFBQ0w7QUFBQSxLQUFBbFYsSUFDSjtBQUFBLElBQ0wsd0NBQThDO0FBQUE7QUFBQSxZQUFBcVksYUFBQXJiLEdBQUFoRztBQUFBQSxRQUFBa2UsUUFHckM7QUFBQSxJQUNULDRCQUFzQjtBQUFBLFFBQUFsVixJQUNqQjtBQUFBLElBQ0wsd0NBQThDO0FBQUE7QUFBQSxZQUFBc1ksaUJBQUExaEIsS0FBQW9HLEdBQUFnRCxHQUFBaEo7QUFBQUE7QUFBQUEsS0FBQXVoQixZQUU5QjtBQUFBLEtBQUFDLFdBQ25CO0FBQUEsS0FBQXRELFFBQ1k7QUFBQSxJQUNUO0FBQUE7QUFBQSxlQUVGLHFDQUEwRTtBQUFBO0FBQUEsWUFBQXVELG9CQUFBemIsR0FBQWhHO0FBQUFBLFFBQUFrZSxRQUcvRDtBQUFBLElBQ1Qsc0NBQ1EsMkJBQWdEO0FBQUE7QUFBQSxZQUFBd0QsUUFBQTFoQixHQUk3Qyw4Q0FBMkI7QUFBQSxZQUFBMmhCLFFBQUEzaEIsR0FDM0IsNkNBQTBCO0FBQUEsWUFBQTRoQixRQUFBNWhCLEdBQzFCLCtDQUE0QjtBQUFBLFlBQUE2aEIsUUFBQTdoQixHQUM1QixnREFBNkI7QUFBQSxZQUFBOGhCLFFBQUE5aEI7QUFBQUEsUUFBQSxJQUNoQjtBQUFBLElBQXdDLHFDQUFJO0FBQUE7QUFBQSxZQUFBK2hCLFFBQUEvaEI7QUFBQUEsUUFBQSxJQUM1QztBQUFBLElBQXdDLHFDQUFJO0FBQUE7QUFBQSxZQUFBZ2lCLFFBQUFoaUI7QUFBQUEsUUFBQSxJQUM1QztBQUFBLElBQXdDLHlDQUFRO0FBQUE7QUFBQSxZQUFBaWlCLFFBQUFqaUI7QUFBQUEsUUFBQSxJQUNoRDtBQUFBLElBQXdDLDBDQUFTO0FBQUE7QUFBQSxZQUFBa2lCLFNBQUFsaUIsR0FJN0QsK0NBQTBCO0FBQUEsWUFBQW1pQixTQUFBbmlCLEdBQzFCLGdEQUEyQjtBQUFBLFlBQUFvaUIsWUFBQXBpQixHQUV4Qiw4Q0FBeUI7QUFBQSxZQUFBcWlCLFdBQUFyaUIsR0FDMUIsNkNBQXdCO0FBQUEsWUFBQXNpQixjQUFBdGlCO0FBQUFBLElBRU0scUNEei9DbkQsMkJDeS9DcUU7QUFBQTtBQUFBLFlBQUF1aUIsU0FBQXZpQixHQUlsRCw4Q0FBMkI7QUFBQSxZQUFBd2lCLFNBQUF4aUIsR0FDM0IsNkNBQTBCO0FBQUEsWUFBQXlpQixTQUFBemlCLEdBQzFCLCtDQUE0QjtBQUFBLFlBQUEwaUIsU0FBQTFpQixHQUM1QixnREFBNkI7QUFBQSxZQUFBMmlCLGlCQUFBL2lCLEtBQUFnakIsVUFBQTVpQjtBQUFBQTtBQUFBQSxLQUFBNmlCLFVBRXpCO0FBQUEsS0FBQUM7QUFBQUEsT0FDbkI7QUFBQTtBQUFBO0FBQUE7QUFBQSxPQVFJO0FBQUE7QUFBQSxrQkFBQXRqQjtBQUFBQSxVQUFXO0FBQUE7QUFBQSxrRUFHVztBQUFBO0FBQUE7QUFBQSxLQUFBb2pCLGFBSnhCO0FBQUEsS0FBQUcsVUFPOEI7QUFBQSxJQUN0QjtBQUFBLElBQXdDO0FBQUE7QUFBQSxZQUFBQyxVQUFBaGpCO0FBQUFBO0FBQUFBLEtBQUFzQjtBQUFBQSxPQUs1QztBQUFBLDJCRHZoRFY7QUFBQSxJQ3VoRG1FLFlBQ3JEO0FBQUEsUUFBQXRCLE1BRHFEO0FBQUEsSUFDbEM7QUFBQSxHQUFPO0FBQUEsWUFBQWlqQixjQUFBamIsR0FBQWhJLEdBR3BDLE1BQWtCLGdCQUE0QixVQUE5QyxTQUFvRTtBQUFBLFlBQUFrakIsbUJBQUFsakI7QUFBQUE7QUFBQUEsS0FBQXNCO0FBQUFBLE9BSzlEO0FBQUEsMkJEaGlEVjtBQUFBLElDZ2lEd0UsWUFDMUQ7QUFBQSxRQUFBdEIsTUFEMEQ7QUFBQSxJQUN2QztBQUFBLEdBQU87QUFBQTtBQUFBLElBQUFtakIsb0JBeHNDRjtBQUFBLElBQUFDLG1CQUNEO0FBQUEsWUFBQUMscUJBQUFyakI7QUFBQUE7QUFBQUEsS0FBQXNCLFFBMHNDbEI7QUFBQSxLQUFBQyxNQUFhO0FBQUEsS0FBQUMsTUFBQTtBQUFBLEtBQUFtQixJQTVRYjtBQUFBLEtBQUF4QixPQThRSjtBQUFBLEtBQUFDLGFBQ1gsYUFBQTVCLE9BQThCLFNBQUU7QUFBQSxhQUFBOGpCLE9BQUFDO0FBQUFBLEtBQ2Y7QUFBQSxLQUFXLG1DQUFjO0FBQUE7QUFBQSxhQUFBaGdCLE1BQUFnZ0I7QUFBQUEsU0FBQUMsTUFFOUI7QUFBQSxLQUNWO0FBQUEsS0FBZSxtQ0FBYztBQUFBO0FBQUE7QUFBQSxLQUFBcGYsSUFFdkI7QUFBQSxLQUFBQSxNQUNDO0FBQUEsSUFDVCx5QkFBQTVFLE9BQXVCLGFBQWEsb0JBQWdCO0FBQUEsSUFDMUM7QUFBQSxJQUNWO0FBQUEsR0FBRztBQUFBLFlBQUFpa0IsTUFBQXpqQixHQUlnQixXQUF3QjtBQUFBLFlBQUEwakIsWUFBQTFqQixHQUNsQixZQUF5QjtBQUFBLFlBQUEyakIsZ0JBQUFDLGVBQUFwa0I7QUFBQUEsUUFBQUMsSUFhMUM7QUFBQSxJQUNSO0FBQUEsSUFBa0Q7QUFBQSxHQUNqRDtBQUFBLFlBQUFva0IsbUJBQUFqa0IsS0FBQUk7QUFBQUEsUUFBQW1CLE9BRW9CLHVCQUNRO0FBQUEsSUFBN0Isc0NEeGtESixjQ3drRHlFO0FBQUE7QUFBQSxZQUFBMmlCLE1BQUE5akI7QUFBQUEsUUFBQXNCLFFBS2pEO0FBQUEsSUFBaUIsWUFDM0I7QUFBQSxRQUFBd2lCLFFBRDJCO0FBQUEsSUFDUixxQ0Q5a0RqQyxrQkM4a0Q0RDtBQUFBO0FBQUEsWUFBQUMsVUFBQTVOLE1BQUF4VCxHQUFBNlksSUFBQWhjLE9BdUgzQiwwQkFBZ0I7QUFBQSxPQUFBMlcsU0FqSHJDO0FBQUEsWUFBQTNPLEVBQUE3RSxHQUFBNlksSUFBQXNELElBZ0hnQjtBQUFBLE9BQUFrRixPQS9HYjtBQUFBLFlBQUFBLE9BQUFyaEIsR0FBQTZZLElBQUFzRCxJQStHYTtBQUFBLE9BQUFtRixVQTlHVjtBQUFBLFlBQUFBLFVBQUF0aEIsR0FBQTZZLElBQUFzRCxJQThHVTtBQUFBLE9BQUFvRixPQTdHYjtBQUFBLFlBQUFBLE9BQUEsU0FtSEY7QUFBQSxPQUFBQyxVQWxISztBQUFBLFlBQUFBLFVBQUF4aEIsR0FBQTZZLElBQUFzRCxJQTRHVTtBQUFBLE9BQUFzRixRQTNHWjtBQUFBLFlBQUFBLFFBQUF6aEIsR0FBQTZZLElBQUFzRCxJQTJHWTtBQUFBLE9BQUF1RixRQTFHWjtBQUFBLFlBQUFBLFFBQUExaEIsR0FBQTZZLElBQUFzRCxJQTBHWTtBQUFBLE9BQUEzSSxTQXpHaEI7QUFBQSxZQUFBbk8sRUFBQXJGLEdBQUE2WSxJQUFBc0QsSUF5R2dCO0FBQUEsT0FBQTlILE9BeEdiO0FBQUEsWUFBQUEsT0FBQSxTQW1IRjtBQUFBLE9BQUFiLFNBbEhDO0FBQUEsWUFBQW1PLElBQUEzaEIsR0FBQTZZLElBQUFzRCxJQXVHYztBQUFBLE9BQUEzSSxTQXRHZDtBQUFBLFlBQUFvTyxJQUFBNWhCLEdBQUE2WSxJQUFBc0QsSUFzR2M7QUFBQSxPQUFBMEYsYUFyR1A7QUFBQSxZQUFBQSxhQUFBN2hCLEdBQUE2WSxJQUFBc0QsSUFxR087QUFBQSxPQUFBMkYsT0FwR2I7QUFBQSxZQUFBQSxPQUFBOWhCLEdBQUE2WSxJQUFBc0QsSUFvR2E7QUFBQSxPQUFBNEYsS0FuR2Y7QUFBQSxZQUFBQSxLQUFBLFNBbUhGO0FBQUEsT0FBQTdlLFdBbEhNO0FBQUEsWUFBQUEsU0FBQWxELEdBQUE2WSxJQUFBc0QsSUFrR1c7QUFBQSxPQUFBNkYsU0FqR1g7QUFBQSxZQUFBQSxTQUFBaGlCLEdBQUE2WSxJQUFBc0QsSUFpR1c7QUFBQSxPQUFBOEYsVUFoR1Y7QUFBQSxZQUFBQSxVQUFBamlCLEdBQUE2WSxJQUFBc0QsSUFnR1U7QUFBQSxPQUFBK0YsT0EvRmI7QUFBQSxZQUFBQSxPQUFBbGlCLEdBQUE2WSxJQUFBc0QsSUErRmE7QUFBQSxPQUFBeGEsU0E5RmI7QUFBQSxZQUFBQSxPQUFBM0IsR0FBQTZZLElBQUFzRCxJQThGYTtBQUFBLE9BQUFnRyxNQTdGZDtBQUFBLFlBQUFBLE1BQUEsU0FtSEY7QUFBQSxPQUFBQyxXQWxITztBQUFBLFlBQUFBLFdBQUFwaUIsR0FBQTZZLElBQUFzRCxJQTRGUztBQUFBLE9BQUFrRyxVQTNGVjtBQUFBLFlBQUFBLFVBQUFyaUIsR0FBQTZZLElBQUFzRCxJQTJGVTtBQUFBLE9BQUFtRyxXQTFGVDtBQUFBLFlBQUFBLFdBQUF0aUIsR0FBQTZZLElBQUFzRCxJQTBGUztBQUFBLE9BQUEzSSxTQXpGZjtBQUFBLFlBQUErTyxHQUFBdmlCLEdBQUE2WSxJQUFBc0QsSUF5RmU7QUFBQSxPQUFBM0ksU0F4RmQ7QUFBQSxZQUFBZ1AsSUFBQXhpQixHQUFBNlksSUFBQXNELElBd0ZjO0FBQUEsT0FBQXNHLFVBdkZWO0FBQUEsWUFBQUEsVUFBQXppQixHQUFBNlksSUFBQXNELElBdUZVO0FBQUEsT0FBQTNJLFNBdEZkO0FBQUEsWUFBQWtQLElBQUExaUIsR0FBQTZZLElBQUFzRCxJQXNGYztBQUFBLE9BQUEzSSxVQXJGZDtBQUFBLFlBQUFtUCxJQUFBM2lCLEdBQUE2WSxJQUFBc0QsSUFxRmM7QUFBQSxPQUFBM0ksVUFwRmY7QUFBQSxZQUFBb1AsR0FBQTVpQixHQUFBNlksSUFBQXNELElBb0ZlO0FBQUEsT0FBQTNJLFVBbkZmO0FBQUEsWUFBQXFQLEdBQUE3aUIsR0FBQTZZLElBQUFzRCxJQW1GZTtBQUFBLE9BQUEzSSxVQWxGZjtBQUFBLFlBQUFzUCxHQUFBOWlCLEdBQUE2WSxJQUFBc0QsSUFrRmU7QUFBQSxPQUFBNEcsUUFqRlo7QUFBQSxZQUFBQSxRQUFBLFNBbUhGO0FBQUEsT0FBQUMsV0FsSEs7QUFBQSxZQUFBQSxXQUFBaGpCLEdBQUE2WSxJQUFBc0QsSUFnRlM7QUFBQSxPQUFBOEcsYUEvRVA7QUFBQSxZQUFBQSxhQUFBampCLEdBQUE2WSxJQUFBc0QsSUErRU87QUFBQSxPQUFBK0csU0E5RVg7QUFBQSxZQUFBQSxTQUFBbGpCLEdBQUE2WSxJQUFBc0QsSUE4RVc7QUFBQSxPQUFBZ0gsU0E3RVg7QUFBQSxZQUFBQSxTQUFBbmpCLEdBQUE2WSxJQUFBc0QsSUE2RVc7QUFBQSxPQUFBaUgsT0E1RWI7QUFBQSxZQUFBQSxPQUFBcGpCLEdBQUE2WSxJQUFBc0QsSUE0RWE7QUFBQSxPQUFBM0ksVUEzRWY7QUFBQSxZQUFBNlAsR0FBQXJqQixHQUFBNlksSUFBQXNELElBMkVlO0FBQUEsT0FBQTNJLFVBMUVmO0FBQUEsWUFBQThQLEdBQUF0akIsR0FBQTZZLElBQUFzRCxJQTBFZTtBQUFBLE9BQUEzSSxVQXpFZjtBQUFBLFlBQUErUCxHQUFBdmpCLEdBQUE2WSxJQUFBc0QsSUF5RWU7QUFBQSxPQUFBM0ksVUF4RWY7QUFBQSxZQUFBZ1EsR0FBQXhqQixHQUFBNlksSUFBQXNELElBd0VlO0FBQUEsT0FBQTNJLFVBdkVmO0FBQUEsWUFBQWlRLEdBQUF6akIsR0FBQTZZLElBQUFzRCxJQXVFZTtBQUFBLE9BQUEzSSxVQXRFZjtBQUFBLFlBQUFrUSxHQUFBMWpCLEdBQUE2WSxJQUFBc0QsSUFzRWU7QUFBQSxPQUFBd0gsT0FyRWI7QUFBQSxZQUFBQSxPQUFBM2pCLEdBQUE2WSxJQUFBc0QsSUFxRWE7QUFBQSxPQUFBeUgsU0FwRVg7QUFBQSxZQUFBQSxTQUFBNWpCLEdBQUE2WSxJQUFBc0QsSUFvRVc7QUFBQSxPQUFBMEgsU0FuRVg7QUFBQSxZQUFBQSxTQUFBN2pCLEdBQUE2WSxJQUFBc0QsSUFtRVc7QUFBQSxPQUFBMkgsS0FsRWY7QUFBQSxZQUFBQSxLQUFBLFNBbUhGO0FBQUEsT0FBQUMsT0FsSEk7QUFBQSxZQUFBQSxPQUFBL2pCLEdBQUE2WSxJQUFBc0QsSUFpRWE7QUFBQSxPQUFBM0ksVUFoRWhCO0FBQUEsWUFBQXpVLEVBQUFpQixHQUFBNlksSUFBQXNELElBZ0VnQjtBQUFBLE9BQUE2SCxTQS9EWDtBQUFBLFlBQUFBLFNBQUFoa0IsR0FBQTZZLElBQUFzRCxJQStEVztBQUFBLE9BQUE4SCxNQTlEZDtBQUFBLFlBQUFBLE1BQUEsU0FtSEY7QUFBQSxPQUFBNU4sVUFsSEk7QUFBQSxZQUFBQSxRQUFBLFNBbUhGO0FBQUEsT0FBQTdDLFVBbEhBO0FBQUEsWUFBQTBRLElBQUFsa0IsR0FBQTZZLElBQUFzRCxJQTREYztBQUFBLE9BQUEzSSxVQTNEZDtBQUFBLFlBQUEyUSxJQUFBbmtCLEdBQUE2WSxJQUFBc0QsSUEyRGM7QUFBQSxPQUFBaUksU0ExRFg7QUFBQSxZQUFBQSxTQUFBcGtCLEdBQUE2WSxJQUFBc0QsSUEwRFc7QUFBQSxPQUFBa0ksUUF6RFo7QUFBQSxZQUFBQSxRQUFBcmtCLEdBQUE2WSxJQUFBc0QsSUF5RFk7QUFBQSxPQUFBbUksU0F4RFg7QUFBQSxZQUFBQSxTQUFBdGtCLEdBQUE2WSxJQUFBc0QsSUF3RFc7QUFBQSxPQUFBM0ksVUF2RGY7QUFBQSxZQUFBK1EsR0FBQXZrQixHQUFBNlksSUFBQXNELElBdURlO0FBQUEsT0FBQXFJLFdEcHNENUIsUUFBQUMsT0M4b0RlO0FBQUEsWUFBQUEsT0FBQSxTQW1IRjtBQUFBLE9BQUFqUixVQWxIQztBQUFBLFlBQUF6QyxNQUFBL1EsR0FBQTZZLElBQUFzRCxJQXFEYztBQUFBLE9BQUF1SSxXRHBzRDVCLFFBQUFDLE9DZ3BEZTtBQUFBLFlBQUFBLE9BQUEza0IsR0FBQTZZLElBQUFzRCxJQW9EYTtBQUFBLE9BQUF5SSxPQW5EYjtBQUFBLFlBQUFBLE9BQUE1a0IsR0FBQTZZLElBQUFzRCxJQW1EYTtBQUFBLE9BQUEwSSxPQWxEYjtBQUFBLFlBQUFBLE9BQUEsU0FtSEY7QUFBQSxPQUFBQyxRQWxIRztBQUFBLFlBQUFBLFFBQUE5a0IsR0FBQTZZLElBQUFzRCxJQWlEWTtBQUFBLE9BQUEzSSxVQWhEZDtBQUFBLFlBQUF1UixJQUFBL2tCLEdBQUE2WSxJQUFBc0QsSUFnRGM7QUFBQSxPQUFBNkksV0EvQ1Q7QUFBQSxZQUFBQSxXQUFBaGxCLEdBQUE2WSxJQUFBc0QsSUErQ1M7QUFBQSxPQUFBOEksU0E5Q1Y7QUFBQSxZQUFBQSxTQUFBamxCLEdBQUE2WSxJQUFBc0QsSUE4Q1U7QUFBQSxPQUFBM0ksVUE3Q2Y7QUFBQSxZQUFBMFIsR0FBQWxsQixHQUFBNlksSUFBQXNELElBNkNlO0FBQUEsT0FBQWdKLFdBNUNUO0FBQUEsWUFBQUEsV0FBQW5sQixHQUFBNlksSUFBQXNELElBNENTO0FBQUEsT0FBQWlKLFNBM0NYO0FBQUEsWUFBQUEsU0FBQXBsQixHQUFBNlksSUFBQXNELElBMkNXO0FBQUEsT0FBQWtKLFNBMUNYO0FBQUEsWUFBQUEsU0FBQXJsQixHQUFBNlksSUFBQXNELElBMENXO0FBQUEsT0FBQTNJLFVBekNoQjtBQUFBLFlBQUFuUSxFQUFBckQsR0FBQTZZLElBQUFzRCxJQXlDZ0I7QUFBQSxPQUFBM0ksVUF2Q2Q7QUFBQSxZQUFBOFIsSUFBQXRsQixHQUFBNlksSUFBQXNELElBdUNjO0FBQUEsT0FBQXpKLGFBdENUO0FBQUEsWUFBQUEsV0FBQTFTLEdBQUE2WSxJQUFBc0QsSUFzQ1M7QUFBQSxPQUFBM0ksVUFyQ2hCO0FBQUEsWUFBQXdCLEVBQUFoVixHQUFBNlksSUFBQXNELElBcUNnQjtBQUFBLE9BQUEzSSxVQXBDZjtBQUFBLFlBQUErUixHQUFBdmxCLEdBQUE2WSxJQUFBc0QsSUFvQ2U7QUFBQSxPQUFBM0ksVUFuQ2Y7QUFBQSxZQUFBZ1MsR0FBQXhsQixHQUFBNlksSUFBQXNELElBbUNlO0FBQUEsT0FBQXNKLE9BbENiO0FBQUEsWUFBQUEsT0FBQXpsQixHQUFBNlksSUFBQXNELElBa0NhO0FBQUEsT0FBQTNJLFVBakNoQjtBQUFBLFlBQUFqTSxFQUFBdkgsR0FBQTZZLElBQUFzRCxJQWlDZ0I7QUFBQSxPQUFBdUosT0FoQ2I7QUFBQSxZQUFBQSxPQUFBMWxCLEdBQUE2WSxJQUFBc0QsSUFnQ2E7QUFBQSxPQUFBd0osU0EvQlg7QUFBQSxZQUFBQSxTQUFBM2xCLEdBQUE2WSxJQUFBc0QsSUErQlc7QUFBQSxPQUFBeUosVUE5QlY7QUFBQSxZQUFBQSxVQUFBNWxCLEdBQUE2WSxJQUFBc0QsSUE4QlU7QUFBQSxPQUFBMEosYURwc0Q1QixVQUFBQyxTQ3VxRGlCO0FBQUEsWUFBQUEsU0FBQTlsQixHQUFBNlksSUFBQXNELElBNkJXO0FBQUEsT0FBQTRKLFFBNUJaO0FBQUEsWUFBQUEsUUFBQS9sQixHQUFBNlksSUFBQXNELElBNEJZO0FBQUEsT0FBQTdELFdBM0JYO0FBQUEsWUFBQUEsU0FBQSxTQW1IRjtBQUFBLE9BQUEwTixPQWxIQTtBQUFBLFlBQUFBLE9BQUFobUIsR0FBQTZZLElBQUFzRCxJQTBCYTtBQUFBLE9BQUE4SixTQXpCWDtBQUFBLFlBQUFBLFNBQUFqbUIsR0FBQTZZLElBQUFzRCxJQXlCVztBQUFBLE9BQUFaLFVBeEJaO0FBQUEsWUFBQUEsUUFBQXZiLEdBQUE2WSxJQUFBc0QsSUF3Qlk7QUFBQSxPQUFBM0ksVUF2QmQ7QUFBQSxZQUFBbEQsTUFBQXRRLEdBQUE2WSxJQUFBc0QsSUF1QmM7QUFBQSxPQUFBK0osVUF0QlY7QUFBQSxZQUFBQSxVQUFBbG1CLEdBQUE2WSxJQUFBc0QsSUFzQlU7QUFBQSxPQUFBM0ksVUFyQmQ7QUFBQSxZQUFBMlMsSUFBQW5tQixHQUFBNlksSUFBQXNELElBcUJjO0FBQUEsT0FBQWlLLFFBcEJaO0FBQUEsWUFBQUEsUUFBQXBtQixHQUFBNlksSUFBQXNELElBb0JZO0FBQUEsT0FBQWtLLFFBbkJaO0FBQUEsWUFBQUEsUUFBQXJtQixHQUFBNlksSUFBQXNELElBbUJZO0FBQUEsT0FBQTNJLFVBbEJmO0FBQUEsWUFBQThTLEdBQUF0bUIsR0FBQTZZLElBQUFzRCxJQWtCZTtBQUFBLE9BQUFvSyxXQWpCVDtBQUFBLFlBQUFBLFdBQUF2bUIsR0FBQTZZLElBQUFzRCxJQWlCUztBQUFBLE9BQUFxSyxRQWhCWjtBQUFBLFlBQUFBLFFBQUF4bUIsR0FBQTZZLElBQUFzRCxJQWdCWTtBQUFBLE9BQUEzSSxVQWZmO0FBQUEsWUFBQWlULEdBQUF6bUIsR0FBQTZZLElBQUFzRCxJQWVlO0FBQUEsT0FBQXVLLFFBZFo7QUFBQSxZQUFBQSxRQUFBMW1CLEdBQUE2WSxJQUFBc0QsSUFjWTtBQUFBLE9BQUF3SyxPQWJiO0FBQUEsWUFBQUEsT0FBQTNtQixHQUFBNlksSUFBQXNELElBYWE7QUFBQSxPQUFBVixVQVpaO0FBQUEsWUFBQUEsUUFBQXpiLEdBQUE2WSxJQUFBc0QsSUFZWTtBQUFBLE9BQUEzSSxVQVhmO0FBQUEsWUFBQW9ULEdBQUE1bUIsR0FBQTZZLElBQUFzRCxJQVdlO0FBQUEsT0FBQTBLLFFBVlo7QUFBQSxZQUFBQSxRQUFBLFNBbUhGO0FBQUEsT0FBQXJULFVBbEhGO0FBQUEsWUFBQXFCLEVBQUE3VSxHQUFBNlksSUFBQXNELElBU2dCO0FBQUEsT0FBQTNJLFVBUmY7QUFBQSxZQUFBc1QsR0FBQTltQixHQUFBNlksSUFBQXNELElBUWU7QUFBQSxPQUFBNEssT0FQZDtBQUFBLFlBQUFBLE1BQUEvbUIsR0FBQTZZLElBQUFzRCxJQU9jO0FBQUEsT0FBQTZLLFFBTlo7QUFBQSxZQUFBQSxRQUFBaG5CLEdBQUE2WSxJQUFBc0QsSUFNWTtBQUFBLE9BQUE4SyxNQUxkO0FBQUEsWUFBQUEsTUFBQSxTQW1IRjtBQUFBO0FBQUEsSUFBQUMsYUFRTztBQUFBLElBQUFDLGVBQ0U7QUFBQSxJQUFBQyxlQUNBO0FBQUEsSUFBQUMsaUJBQ0U7QUFBQSxJQUFBMVEsUUFFVDtBQUFBLFlBQUEzWixTQUFBSCxPQUNJLGdCQUFrQjtBQUFBLFlBQUF5cUIsWUFBQWhSLEdBQ2QscUJBQTJCO0FBQUEsWUFBQWlSLFNBQUFqUixHQUFBalIsR0FDbEIsbUJBQXFDO0FBQUEsWUFBQW1pQixrQkFBQWxSLEdBQ3hDLHFCQUFlO0FBQUEsWUFBQW1SLGdCQUFBblIsR0FDakIscUJBQWdCO0FBQUEsWUFBQW9SLHdCQUFBcFIsS0FBQXFSLEtBQUFyUixHQUd6Qix3Q0FBdUQ7QUFBQTtBQUFBLFlBQUFzUixjQUFBdFIsR0FBQXVSLElBQUFDLFFBR3ZELGlDQUEwRDtBQUFBLFlBQUFDLGdCQUFBelIsR0FJdkMsb0JBQStCO0FBQUEsWUFBQTBSLFlBQUExUixHQUFBdVIsSUFNaEMsa0JBQXNDO0FBQUEsWUFBQUksZ0JBQUEzUixHQUFBdVIsSUFFdkQsK0JBQTBDO0FBQUEsWUFBQUssa0JBQUE1UixHQUFBdVIsSUFBQUMsUUFHMUMsdUNBQTREO0FBQUE7QUFBQSxZQUFBSyxZQUFBN1IsR0FBQXVSLElBRTNDLGtCQUFzQztBQUFBLFlBQUFPLHFCQUFBOVIsR0FBQXVSLElBRzNELDBCQUE4QztBQUFBLFlBQUFRLFFBQUEvUixHQUFBdVIsSUFBQUMsUUFHOUMsc0JBQW9EO0FBQUEsWUFBQVEsY0FBQWhTLEdBQUF1UixJQUdwRCxtQkFBdUM7QUFBQSxZQUFBVSxlQUFBalMsR0FBQXVSLElBR3ZDLG9CQUF3QztBQUFBLFlBQUFXLFVBQUFsUyxHQUFBdVIsSUFBQUMsUUFHeEMsd0JBQXNEO0FBQUEsWUFBQVcsZ0JBQUFuUyxHQUFBdVIsSUFHdEQscUJBQXlDO0FBQUEsWUFBQWEsaUJBQUFwUyxHQUFBdVIsSUFHekMsc0JBQTBDO0FBQUEsWUFBQWMsa0JBQUFyUyxHQUFBdVIsSUFHMUMsd0JBQTRDO0FBQUEsWUFBQWUsVUFBQXRTLEdBRXhCLG1CQUF5QjtBQUFBLFlBQUF1UyxVQUFBdlMsR0FJdkMsNkNBQXlCO0FBQUEsWUFBQXdTLDBCQUFBeFMsR0FFSTtBQUFBLFlBQUF5UyxjQUFBelMsR0FFUztBQUFBLFlBQUEwUyxXQUFBMVMsR0FDckMsNkNBQXdCO0FBQUEsWUFBQTJTLGdCQUFBM1MsR0FDaUI7QUFBQSxZQUFBNFMsYUFBQTVTLEdBQ3ZDLDhDQUF5QjtBQUFBLFlBQUE2UyxVQUFBbnBCLEdBUTVCLFNBQUM7QUFBQSxZQUFBZ2QsS0FBQWhkLEdBSStCO0FBQUEsWUFBQThoQixPQUFBOWhCO0FBQUFBLFFBQUFxRixJQUV4QztBQUFBLElBQ0w7QUFBQTtBQUFBLGNBRWtCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFzZSxPQUFBM2pCLEdBRWdCO0FBQUEsWUFBQW9wQixVQUFBcHBCO0FBQUFBLElBQzJCLHFDRHA1RHBFLDRCQ281RG9FO0FBQUE7QUFBQSxZQUFBcXBCLGNBQUFycEIsR0FBQW9EO0FBQUFBLFFBQUEsSUFHMUM7QUFBQSxJQUFnRCxxQ0R2NUQxRSxjQ3U1RDBFO0FBQUE7QUFBQSxZQUFBa21CLGlCQUFBdHBCLEdBQUEwRTtBQUFBQSxJQUc5QyxPQUFrRCxxQkFBbEQsdUJBQWtEO0FBQUE7QUFBQSxZQUFBNmtCLFNBQUF2cEIsR0FJM0QsNkNBQXdCO0FBQUEsWUFBQXliLFFBQUF6YixHQUMzQiwwQ0FBcUI7QUFBQSxZQUFBd3BCLFVBQUF4cEIsR0FBQTlDLEdBQ2YsK0NBQXVCO0FBQUEsWUFBQXVzQixpQkFBQXpwQjtBQUFBQSxJQVFsQixvREFBK0I7QUFBQTtBQUFBLFlBQUEwcEIscUJBQUExcEI7QUFBQUEsSUFLdEQscUNENzZESixpQ0M2NkQwRDtBQUFBO0FBQUEsWUFBQTJwQixrQkFBQTNwQjtBQUFBQSxRQUFBbkIsTUFHNUM7QUFBQSxJQUNBO0FBQUEsSUFDVjtBQUFBLEdBQUc7QUFBQSxZQUFBK3FCLHFCQUFBNXBCO0FBQUFBLElBSXdCLHFEQUFpQztBQUFBO0FBQUEsWUFBQTZwQixtQkFBQTdwQjtBQUFBQSxJQUU1RCxxQ0R4N0RKLGdDQ3c3RHlEO0FBQUE7QUFBQSxZQUFBOHBCLGdCQUFBOXBCO0FBQUFBLFFBQUEsSUFHeEI7QUFBQSxJQUE3QixzQ0QzN0RKLGNDMjdEZ0U7QUFBQTtBQUFBLFlBQUErcEIsUUFBQXhpQixHQVU1QywyQ0FBdUI7QUFBQSxZQUFBeWlCLFdBQUFudEIsT0FLckIsaUNBQWlEO0FBQUEsWUFBQW90QixPQUFBM3BCLEdBQ3RCO0FBQUEsWUFBQTRwQixNQUFBNXBCLEdBQ3ZCLFdBQXNCO0FBQUEsWUFBQTZwQixLQUFBN3BCLEdBQUE4cEIsTUFBQS9pQixNQU1oQixrQ0FBcUI7QUFBQSxPQUFBL0csSUFFWDtBQUFBLFlBQUEyUCxNQUFBcFQsT0FDM0IsWUFBRTtBQUFBLFlBQUErQixNQUFBOEYsR0FDSCxtQkFBTTtBQUFBLFlBQUEvRSxRQUFBOUMsT0FDSCxpQ0FBb0I7QUFBQSxZQUFBd3RCLElBQUFoa0IsR0FNdkIsaUJBQUc7QUFBQSxZQUFBbEgsSUFBQWtIO0FBQUFBLElBR1Y7QUFBQTtBQUFBLGNBQ0Esb0NBQ1csWUFBeUI7QUFBQTtBQUFBLFlBQUFpa0IsZ0JBQUFEO0FBQUFBLFFBQUF4bEIsSUFPaEIseUJBQUE5RixJQUFMLEdBQUFsQyxRQUFBO0FBQUE7QUFBQSxLQUpMLFlBSWIsMEJBQWlEO0FBQUEsU0FBQTB0QixLQUpwQyxVQUFBbGtCLElBQUE7QUFBQSxLQUVBO0FBQUEsU0FBQXRILE1BQTZCO0FBQUE7QUFBQTtBQUFBO0FBQUEsR0FFTztBQUFBLFlBQUF5ckIsSUFBQUg7QUFBQUEsUUFBQSxJQU12QjtBQUFBLElBQXFCO0FBQUE7QUFBQSxZQUFBSSxNQUFBSjtBQUFBQSxRQUFBLElBQ2pCO0FBQUEsSUFBcUI7QUFBQTtBQUFBLFlBQUF6cEIsUUFBQXlwQjtBQUFBQSxRQUFBLElBQ3JCO0FBQUEsSUFBcUI7QUFBQTtBQUFBLFlBQUFLLEtBQUFMO0FBQUFBLFFBQUEsSUFDdkI7QUFBQSxJQUFxQjtBQUFBO0FBQUEsWUFBQU0sS0FBQU47QUFBQUEsUUFBQSxJQUNyQjtBQUFBLElBQXFCO0FBQUE7QUFBQSxZQUFBTyxNQUFBUDtBQUFBQSxRQUFBLElBQ25CO0FBQUEsSUFBcUI7QUFBQTtBQUFBLFlBQUFRLE9BQUF4bEIsR0FBQWdsQjtBQUFBQSxRQUFBLElBSWhCO0FBQUEsSUFBdUM7QUFBQTtBQUFBLFlBQUFuUSxNQUFBcGQsR0FDaEUsa0NBQTJCO0FBQUEsWUFBQXNwQixRQUFBdE0sTUFBQXpUO0FBQUFBLElBRXJDO0FBQUEsU0FBQS9HLElBQUEsU0FBQStxQixNQUNrRSxPQUFqQjtBQUFBO0FBQUEsU0FBQUEsTUFBdkM7QUFBQSxJQUVWLGlDQUFtQjtBQUFBO0FBQUEsWUFBQVMsVUFBQWp1QixPQUlGLG9DQUF1QjtBQUFBLFlBQUFrdUIsTUFBQTl0QixLQUFBb3RCO0FBQUFBLFFBQUFXLFNBQ2hDO0FBQUEsSUFBd0I7QUFBQSxhQUVDO0FBQUEsS0FBcUI7QUFBQTtBQUFBLFlBRDdCO0FBQUEsSUFBcUIsK0JBQ1E7QUFBQTtBQUFBLFlBQUFDLE1BQUE1RyxPQUl0Qyx3Q0FBb0M7QUFBQSxZQUFBNkcsWUFBQTdHLE9BQzlCLDZDQUF5QztBQUFBLFlBQUFzQyxPQUFBdEMsT0FJaEQsdUNBQXFDO0FBQUEsWUFBQThHLFNBQUE5RyxPQUFBZ0c7QUFBQUEsUUFBQSxJQUNYO0FBQUEsSUFBZ0M7QUFBQTtBQUFBLFlBQUFlLFNBQUEvRyxPQUN0RCwwQ0FBd0M7QUFBQSxZQUFBZ0gsUUFBQWhILE9BSXpDLDBDQUFtQztBQUFBLFlBQUFpSCxZQUFBakgsT0FDL0IsNkNBQXNDO0FBQUEsWUFBQWtILFdBQUFsSCxPQUN2Qyw0Q0FBMEM7QUFBQSxZQUFBbUgsV0FBQSxHQUFBdnVCLEtBQUFxWjtBQUFBQTtBQUFBQSxLQUFBcEQsS0FJbEQsb0JBQUE3TSxHQUFnQixpQkFBRztBQUFBLEtBQUF3YSxNQUFuQix3QkFBQXhqQixHQUE2QyxxQkFBSyxDQUFDO0FBQUEsSUFDaEU7QUFBQSxTQUFBZ0osSUFBQTtBQUFBLEtBQXNCLElBQUk7QUFBQTtBQUFBLGFBQUFoSixJQUExQixNQUE4QyxRQUFNO0FBQUEsSUFDcEQ7QUFBQSxHQUFDO0FBQUEsWUFBQW91QixhQUFBLEdBQUF4dUIsS0FBQXl1QixLQUFBN3VCO0FBQUFBO0FBQUFBLEtBQUF5QyxJQUVjO0FBQUEsS0FBQXFzQixZQUFBLHdCQUFBdHVCLEdBQXFDLHFCQUFLLENBQUM7QUFBQSxJQUEzQyx1QkFBQWdKLElBQUEsVUFDUDtBQUFBLFFBQUFoSixJQURPO0FBQUEsSUFDUSxjQUFFO0FBQUEsSUFBYTtBQUFBLEdBQUs7QUFBQSxZQUFBb3VCLGVBQUFuc0IsR0FBQXFzQixXQUFBRCxLQUFBcFY7QUFBQUEsSUFHeEMsOENBQW1DO0FBQUE7QUFBQSxZQUFBNlMsWUFBQTlrQixHQU90QixTQUFpQjtBQUFBLFlBQUEybUIsT0FBQTNtQixHQUVwQiwwQ0FBc0I7QUFBQSxZQUFBdWIsV0FBQXZiLEdBQ3BCLDJDQUF3QjtBQUFBLFlBQUF3YixXQUFBeGIsR0FDeEIsMkNBQXdCO0FBQUEsWUFBQXVuQixZQUFBdm5CLEdBRXJCLDhDQUF5QjtBQUFBLFlBQUF3bkIsYUFBQXhuQixHQUN4QiwrQ0FBMEI7QUFBQSxZQUFBZ1osU0FBQWhaLE9BQUFoQixJQUdyQyxVQUNSLDJCQUErQjtBQUFBLFlBQUF5b0IsbUJBQUF6bkI7QUFBQUEsSUFJTixvREFBaUM7QUFBQTtBQUFBLFlBQUEwbkIsY0FBQTFuQixHQUFBa0Q7QUFBQUEsUUFBQXpLLElBRWxEO0FBQUEsSUFDUiwyQ0FBdUI7QUFBQTtBQUFBLFlBQUFrdkIsMEJBQUEzbkI7QUFBQUEsSUFHZ0M7QUFBQTtBQUFBLFlBQUE0bkIsS0FBQSxHQUFBaHZCLEtBQUFvSCxHQUFBd1E7QUFBQUE7QUFBQUEsS0FBQXFYLFdBSS9DO0FBQUEsS0FBQTFZLE9BQUE7QUFBQSxTQUVOO0FBQUEsSUFERixxQ0Rua0VKLGNDb2tFNkU7QUFBQTtBQUFBLFlBQUEyWSxNQUFBOW5CLEdBRXRELFdBQXdCO0FBQUEsWUFBQStuQixNQUFBL25CLEdBQ3hCLFdBQXdCO0FBQUEsWUFBQWdvQixPQUFBaG9CLEdBQ3ZCLHFCQUE2QztBQUFBLFlBQUF6QyxXQUFBeUMsR0FJbEQsMEJBQXlDO0FBQUEsWUFBQWlvQixhQUFBam9CLEdBQUF3USxHQUNGO0FBQUEsWUFBQXhWLFNBQUFrdEIsR0FVdkMsNENBQXFCO0FBQUEsWUFBQUMsbUJBQUFEO0FBQUFBLElBQ1Qsc0RBQWlDO0FBQUE7QUFBQSxZQUFBRSx1QkFBQUYsR0FBQWpXO0FBQUFBLElBQzNCLDJEQUFtQztBQUFBO0FBQUEsWUFBQW9XLEtBQUFILEdBSTdDLFVBQXFCO0FBQUEsWUFBQUksUUFBQUosR0FDbEIsYUFBd0I7QUFBQSxZQUFBSyxHQUFBTCxHQUFBdnNCLEdBQzNCLFNBQWdDO0FBQUEsWUFBQTZzQixNQUFBTixHQUt6QjtBQUFBLFlBQUFPLFdBQUEsTUFBQTd2QixLQUFBc3ZCO0FBQUFBO0FBQUFBLEtBQUFNLFFBQ2Y7QUFBQSxLQUFBcFIsUUFBQTtBQUFBLEtBQUFzUixNQUFBO0FBQUEsSUFDSDtBQUFBLElBQXNEO0FBQUE7QUFBQSxZQUFBQyxjQUFBLE1BQUEvdkIsS0FBQXN2QjtBQUFBQTtBQUFBQSxLQUFBTSxRQUc5RDtBQUFBLEtBQUFwUixRQUFBO0FBQUEsS0FBQXNSLE1BQUE7QUFBQSxJQUVRO0FBQUEsSUFBeUQ7QUFBQTtBQUFBLFlBQUFGLFFBQUF4dkIsR0FPbkM7QUFBQSxZQUFBNHZCLFFBQUE1b0IsR0FNZTtBQUFBLFlBQUE2b0IsVUFBQXhvQjtBQUFBQSxRQUFBL0YsUUFPM0I7QUFBQSxJQUFxQixjQUFBa0csSUFBQSxVQUNqQywrQkFHb0I7QUFBQSxRQUFBbEcsVUFEdEI7QUFBQSxJQUF5QixjQUNMO0FBQUEsUUFBQTBILElBREs7QUFBQSxJQUNuQjtBQUFBLEdBQWdCO0FBQUEsWUFBQThtQixpQkFBQXpvQjtBQUFBQSxRQUFBeEgsSUFHdEI7QUFBQSxJQUNMLGtDQUFvQztBQUFBO0FBQUEsWUFBQWt3QixPQUFBMW9CLEdBRTFCLDBDQUFzQjtBQUFBLFlBQUE4TyxRQUFBblcsR0FrQnRCLDJDQUFvQjtBQUFBLFlBQUFELE9BQUFDLEdBQ25CLDhDQUF5QjtBQUFBLFlBQUFnd0IsV0FBQWh3QixHQUNwQiw2Q0FBMEI7QUFBQSxZQUFBaXdCLFNBQUFqd0IsR0FDNUIsMkNBQXdCO0FBQUEsWUFBQWt3QixTQUFBbHdCLEdBQ3hCLDRDQUF5QjtBQUFBLFlBQUFtd0IsUUFBQW53QixHQUMxQixpQkFBdUI7QUFBQSxZQUFBb3dCLFNBQUEsR0RocUUzQztBQUFBLFlBQUFDLGVBQUFyd0I7QUFBQUEsSUNzcUU2QixrREFBNkI7QUFBQTtBQUFBLFlBQUFzd0Isa0JBQUF0d0I7QUFBQUEsSUFDMUIsb0RBQStCO0FBQUE7QUFBQSxZQUFBdXdCLGFBQUF2d0IsR0FDcEMsK0NBQTRCO0FBQUEsWUFBQXd3QixlQUFBeHdCO0FBQUFBLElBQzFCLGlEQUE4QjtBQUFBO0FBQUEsWUFBQXl3QixhQUFBendCLEdBQ2hDLCtDQUE0QjtBQUFBLFlBQUEwd0IsWUFBQTF3QixHQUM3Qiw4Q0FBMkI7QUFBQSxZQUFBMndCLG9CQUFBM3dCO0FBQUFBLElBQ25CLHFEQUFrQztBQUFBO0FBQUEsWUFBQTR3QixrQkFBQTV3QjtBQUFBQSxJQUNwQyxtREFBZ0M7QUFBQTtBQUFBLFlBQUE2d0IsY0FBQTd3QjtBQUFBQSxJQUNwQyxnREFBNkI7QUFBQTtBQUFBLFlBQUE4d0IsWUFBQTl3QixHQUMvQiw4Q0FBMkI7QUFBQSxZQUFBK3dCLHdCQUFBL3dCO0FBQUFBLElBQ2YseURBQXNDO0FBQUE7QUFBQSxZQUFBZ3hCLGNBQUFoeEI7QUFBQUEsSUFDaEQsZ0RBQTZCO0FBQUE7QUFBQSxZQUFBaXhCLGVBQUFqeEI7QUFBQUEsSUFDNUIsaURBQThCO0FBQUE7QUFBQSxZQUFBa3hCLGFBQUFseEIsR0FDaEMsK0NBQTRCO0FBQUEsWUFBQW14QixjQUFBbnhCO0FBQUFBLElBQzNCLGdEQUEyQjtBQUFBO0FBQUEsWUFBQW94QixrQkFBQXB4QjtBQUFBQSxJQUN2QixtREFBOEI7QUFBQTtBQUFBLFlBQUFxeEIsa0JBQUFyeEI7QUFBQUEsSUFDOUIsbURBQThCO0FBQUE7QUFBQSxZQUFBc3hCLG1CQUFBLEdEdHJFOUQ7QUFBQSxZQUFBbEIsV0FBQTtBQUFBLFlBQUFtQixtQkFBQXZ4QjtBQUFBQSxJQ3FzRWlDLG9EQUFpQztBQUFBO0FBQUEsWUFBQXd4QixpQkFBQXh4QjtBQUFBQSxJQUNuQyxrREFBK0I7QUFBQTtBQUFBLFlBQUF5eEIsZ0JBQUF6eEI7QUFBQUEsSUFDaEMsa0RBQStCO0FBQUE7QUFBQSxZQUFBMHhCLCtCQUFBMXhCO0FBQUFBLElBRXJELDhEQUEyQztBQUFBO0FBQUEsWUFBQTJ4Qiw2QkFBQTN4QjtBQUFBQSxJQUczQyw0REFBeUM7QUFBQTtBQUFBLFlBQUE0eEIsYUFBQTV4QixHQUV0QiwrQ0FBNEI7QUFBQSxZQUFBNnhCLGlCQUFBN3hCO0FBQUFBLElBQ3hCLGtEQUErQjtBQUFBO0FBQUEsWUFBQTh4QixlQUFBOXhCO0FBQUFBLElBQ2pDLGdEQUE2QjtBQUFBO0FBQUEsWUFBQUQsT0FBQUMsR0FDdEMsMkNBQXFCO0FBQUEsWUFBQSt4QixlQUFBL3hCO0FBQUFBLElBQ1osaURBQTRCO0FBQUE7QUFBQSxZQUFBc3hCLHFCQUFBLEdEbHRFekQ7QUFBQSxZQUFBVSxxQkFBQTtBQUFBLFlBQUFDLGVBQUFqc0IsR0MydEV5Qiw4Q0FBMkI7QUFBQSxZQUFBa3NCLFlBQUFsc0IsR0FBQXFCO0FBQUFBLElBRWhELFVBQUFBLE1BQUEsTUFBQTJDLE9BQWlELG1CQUFBQSxPQUFqQjtBQUFBLElBQ3RCO0FBQUEsSUFBMkI7QUFBQTtBQUFBLFlBQUFtb0IsZUFBQW5zQixHQUFBcUI7QUFBQUEsSUFHckMsVUFBQUEsTUFBQSxNQUFBMkMsT0FBaUQsbUJBQUFBLE9BQWpCO0FBQUEsSUFDdEI7QUFBQSxJQUE4QjtBQUFBO0FBQUEsWUFBQW9vQix1QkFBQXBzQixHQUVELDBCQUFxQztBQUFBLFlBQUFxc0IsWUFBQXR5QixNQUFBb1csTUFBQW5RO0FBQUFBLElBQzdDO0FBQUEsU0FBQXFCLElBQUE7QUFBQTtBQUFBLFVBQUF4SCxJQUFBLGFBUUg7QUFBQSxNQUExQixxQ0Q3dUVOLGNDOHVFcUM7QUFBQTtBQUFBLGFBSEw7QUFBQSxLQUExQixxQ0QzdUVOLGNDOHVFcUM7QUFBQTtBQUFBLElBVEY7QUFBQSxTQUFBQSxNQUFBLGFBSUg7QUFBQSxLQUExQixxQ0R6dUVOLGNDOHVFcUM7QUFBQTtBQUFBLFlBUEw7QUFBQSxJQUExQixxQ0R2dUVOLGNDOHVFcUM7QUFBQTtBQUFBLFlBQUF5bkIsT0FBQXRoQixHQUFBcUIsR0FFVixXQUFtQztBQUFBLFlBQUFpckIsUUFBQTNxQixPQUFBRCxNQUFBMUIsR0FBQXFCO0FBQUFBLElBQzdCO0FBQUEsU0FBQTZDLElBQUE7QUFBQSxrQkFBQWxLLElBQUEsU0FHRCxpQkFBZ0Q7QUFBQSxLQURsRDtBQUFBLEtBQXFDO0FBQUE7QUFBQSxJQUZsQyxhQUFBQSxNQUFBLFNBSUgsdUJBQWdEO0FBQUEsSUFIbEQ7QUFBQSxJQUF3QjtBQUFBLEdBRzBCO0FBQUEsWUFBQXV5QixPQUFBdnNCLEdBRTlDLGNBQW9CO0FBQUEsWUFBQW1xQixVQUFBbnFCLEdBQ2xDLGlCQUF1QjtBQUFBO0FBQUEsSUFBQXdzQixVQU96QjtBQUFBLElBQUFDLFlBRUU7QUFBQSxJQUFBQyxjQUNFO0FBQUEsSUFBQUMsU0FDTDtBQUFBLElBQUFDLG9CQUlXO0FBQUEsSUFBQTN5QixXQUF1QztBQUFBLFlBQUE0eUIsWUFBQUMsSUFBQWgxQjtBQUFBQSxJQVkzQixPQUFsQyxrQkFBa0MsdUNBQXVDO0FBQUE7QUFBQSxZQUFBaTFCLGFBQUFELElBQUFoMUI7QUFBQUEsSUFJdEMsT0FBbkMsbUJBQW1DLHVDQUF1QztBQUFBO0FBQUEsWUFBQWsxQixXQUFBQyxLQUloRSwwQkFBb0Q7QUFBQSxZQUFBQyx3QkFBQXAxQjtBQUFBQSxJQVExRCxPQURTLDZCQUNULG1DQUF3QjtBQUFBO0FBQUEsWUFBQXExQix1QkFBQUM7QUFBQUEsSUFHbEI7QUFBQSxJQUEyRDtBQUFBO0FBQUE7QUFBQSxJQUFBQyxZRHR5RXpFO0FBQUEsSUFBQUMsV0FBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBL3pCLFFDNHBEZ0I7QUFBQSxJQUFBZzBCO0FBQUFBLE1BMm1CaUQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMEJBeGZuRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsR0F3Zm1EO0FBQUE7QUFBQSxFRHZ3RWpFIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MzY4NTMsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJyLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9icnIvYnJyX2NhbnZhcy5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0nLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgQ29weXJpZ2h0IChjKSAyMDIwIFRoZSBicnIgcHJvZ3JhbW1lcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbm9wZW4gQnJyXG5cbm1vZHVsZSBNYXRyaXg0ID0gc3RydWN0XG4gIHR5cGUgdCA9IEp2LnRcbiAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgbGV0IGlzXzJkIG0gPSBKdi5Cb29sLmdldCBtIFwiaXMyRFwiXG4gIGxldCBpc19pZGVudGl0eSBtID0gSnYuQm9vbC5nZXQgbSBcImlzSWRlbnRpdHlcIlxuICBsZXQgaW52ZXJzZSBtID0gSnYuY2FsbCBtIFwiaW52ZXJzZVwiIFt8fF1cbiAgbGV0IG11bHRpcGx5IG0gbScgPSBKdi5jYWxsIG0gXCJtdWx0aXBseVwiIFt8bSd8XVxuXG4gIGxldCBtMTEgbSA9IEp2LkZsb2F0LmdldCBtIFwibTExXCJcbiAgbGV0IG0xMiBtID0gSnYuRmxvYXQuZ2V0IG0gXCJtMTJcIlxuICBsZXQgbTEzIG0gPSBKdi5GbG9hdC5nZXQgbSBcIm0xM1wiXG4gIGxldCBtMTQgbSA9IEp2LkZsb2F0LmdldCBtIFwibTE0XCJcbiAgbGV0IG0yMSBtID0gSnYuRmxvYXQuZ2V0IG0gXCJtMjFcIlxuICBsZXQgbTIyIG0gPSBKdi5GbG9hdC5nZXQgbSBcIm0yMlwiXG4gIGxldCBtMjMgbSA9IEp2LkZsb2F0LmdldCBtIFwibTIzXCJcbiAgbGV0IG0yNCBtID0gSnYuRmxvYXQuZ2V0IG0gXCJtMjRcIlxuICBsZXQgbTMxIG0gPSBKdi5GbG9hdC5nZXQgbSBcIm0zMVwiXG4gIGxldCBtMzIgbSA9IEp2LkZsb2F0LmdldCBtIFwibTMyXCJcbiAgbGV0IG0zMyBtID0gSnYuRmxvYXQuZ2V0IG0gXCJtMzNcIlxuICBsZXQgbTM0IG0gPSBKdi5GbG9hdC5nZXQgbSBcIm0zNFwiXG4gIGxldCBtNDEgbSA9IEp2LkZsb2F0LmdldCBtIFwibTQxXCJcbiAgbGV0IG00MiBtID0gSnYuRmxvYXQuZ2V0IG0gXCJtNDJcIlxuICBsZXQgbTQzIG0gPSBKdi5GbG9hdC5nZXQgbSBcIm00M1wiXG4gIGxldCBtNDQgbSA9IEp2LkZsb2F0LmdldCBtIFwibTQ0XCJcbiAgbGV0IGEgbSA9IEp2LkZsb2F0LmdldCBtIFwiYVwiXG4gIGxldCBiIG0gPSBKdi5GbG9hdC5nZXQgbSBcImJcIlxuICBsZXQgYyBtID0gSnYuRmxvYXQuZ2V0IG0gXCJjXCJcbiAgbGV0IGQgbSA9IEp2LkZsb2F0LmdldCBtIFwiZFwiXG4gIGxldCBlIG0gPSBKdi5GbG9hdC5nZXQgbSBcImVcIlxuICBsZXQgZiBtID0gSnYuRmxvYXQuZ2V0IG0gXCJmXCJcblxuICBsZXQgZG9tbWF0cml4cm8gPSBKdi5nZXQgSnYuZ2xvYmFsIFwiRE9NTWF0cml4UmVhZE9ubHlcIlxuXG4gIGxldCB0b19mbG9hdDMyX2FycmF5IG0gPSBUYXJyYXkub2ZfanYgQEAgSnYuY2FsbCBtIFwidG9GbG9hdDMyQXJyYXlcIiBbfHxdXG4gIGxldCBvZl9mbG9hdDMyX2FycmF5IGEgPVxuICAgIEp2LmNhbGwgZG9tbWF0cml4cm8gXCJmcm9tRmxvYXQzMkFycmF5XCIgW3wgVGFycmF5LnRvX2p2IGEgfF1cblxuICBsZXQgdG9fZmxvYXQ2NF9hcnJheSBtID0gVGFycmF5Lm9mX2p2IEBAIEp2LmNhbGwgbSBcInRvRmxvYXQ2NEFycmF5XCIgW3x8XVxuICBsZXQgb2ZfZmxvYXQ2NF9hcnJheSBhID1cbiAgICBKdi5jYWxsIGRvbW1hdHJpeHJvIFwiZnJvbUZsb2F0NjRBcnJheVwiIFt8IFRhcnJheS50b19qdiBhIHxdXG5lbmRcblxubW9kdWxlIFZlYzQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSnYudFxuICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcbiAgbGV0IHY0ID0gSnYuZ2V0IEp2Lmdsb2JhbCBcIkRPTVBvaW50UmVhZE9ubHlcIlxuICBsZXQgdiB+eCB+eSB+eiB+dyA9XG4gICAgSnYubmV3JyB2NCBKdi5bfG9mX2Zsb2F0IHg7IG9mX2Zsb2F0IHk7IG9mX2Zsb2F0IHo7IG9mX2Zsb2F0IHc7fF1cblxuICBsZXQgdHIgbSB2ID0gSnYuY2FsbCB2IFwibWF0cml4VHJhbnNmb3JtXCIgW3wgTWF0cml4NC50b19qdiBtIHxdXG4gIGxldCB0b19qc29uIHYgPSBKdi5jYWxsIHYgXCJ0b0pTT05cIiBbfHxdXG4gIGxldCB4IHYgPSBKdi5GbG9hdC5nZXQgdiBcInhcIlxuICBsZXQgeSB2ID0gSnYuRmxvYXQuZ2V0IHYgXCJ5XCJcbiAgbGV0IHogdiA9IEp2LkZsb2F0LmdldCB2IFwielwiXG4gIGxldCB3IHYgPSBKdi5GbG9hdC5nZXQgdiBcIndcIlxuZW5kXG5cbm1vZHVsZSBDYW52YXMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSnYudFxuICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcblxuICBsZXQgY3JlYXRlID9kID9hdCA/KHcgPSAwKSA/KGggPSAwKSBjcyA9XG4gICAgbGV0IGMgPSBFbC50b19qdiBAQCBFbC5jYW52YXMgP2QgP2F0IGNzIGluXG4gICAgSnYuSW50LnNldCBjIFwid2lkdGhcIiB3OyBKdi5JbnQuc2V0IGMgXCJoZWlnaHRcIiBoO1xuICAgIGNcblxuICBsZXQgb2ZfZWwgZSA9XG4gICAgaWYgRWwuaGFzX3RhZ19uYW1lIEVsLk5hbWUuY2FudmFzIGUgdGhlbiAoRWwudG9fanYgZSkgZWxzZVxuICAgIGxldCBleHAgPSBKc3RyLnYgXCJFeHBlY3RlZCBjYW52YXMgZWxlbWVudCBidXQgZm91bmQ6IFwiIGluXG4gICAgSnYudGhyb3cgKEpzdHIuYXBwZW5kIGV4cCAoRWwudGFnX25hbWUgZSkpXG5cbiAgbGV0IHRvX2VsID0gRWwub2ZfanZcblxuICAoKiBEaW1lbnNpb25zICopXG5cbiAgbGV0IHcgYyA9IEp2LkludC5nZXQgYyBcIndpZHRoXCJcbiAgbGV0IGggYyA9IEp2LkludC5nZXQgYyBcImhlaWdodFwiXG4gIGxldCBzZXRfdyBjIHcgPSBKdi5JbnQuc2V0IGMgXCJ3aWR0aFwiIHdcbiAgbGV0IHNldF9oIGMgaCA9IEp2LkludC5zZXQgYyBcImhlaWdodFwiIGhcbiAgbGV0IHNldF9zaXplX3RvX2xheW91dF9zaXplID8oaGlkcGkgPSB0cnVlKSBjID1cbiAgICBsZXQgZHByID0gaWYgaGlkcGkgdGhlbiBXaW5kb3cuZGV2aWNlX3BpeGVsX3JhdGlvIEcud2luZG93IGVsc2UgMS4wIGluXG4gICAgbGV0IGN3ID0gRmxvYXQudG9faW50IEBAIEZsb2F0LmNlaWwgKGRwciAqLiBFbC5pbm5lcl93IChFbC5vZl9qdiBjKSkgaW5cbiAgICBsZXQgY2ggPSBGbG9hdC50b19pbnQgQEAgRmxvYXQuY2VpbCAoZHByICouIEVsLmlubmVyX2ggKEVsLm9mX2p2IGMpKSBpblxuICAgIGlmIHcgYyA8PiBjdyB8fCBoIGMgPD4gY2hcbiAgICB0aGVuIChzZXRfdyBjIGN3OyBzZXRfaCBjIGNoKVxuXG4gICgqIENvbnZlcnRpbmcgKilcblxuICB0eXBlIGltYWdlX2VuY29kZSA9IEp2LnQgKCogSW1hZ2VFbmNvZGVPcHRpb25zIG9iamVjdC4gKilcbiAgbGV0IGltYWdlX2VuY29kZSA/KHR5cGUnID0gSnN0ci52IFwiaW1hZ2UvcG5nXCIpID9xdWFsaXR5ICgpID1cbiAgICBsZXQgbyA9IEp2Lm9iaiBbfHxdIGluXG4gICAgSnYuSnN0ci5zZXQgbyBcInR5cGVcIiB0eXBlJztcbiAgICBKdi5GbG9hdC5zZXRfaWZfc29tZSBvIFwicXVhbGl0eVwiIHF1YWxpdHk7XG4gICAgb1xuXG4gIGxldCBlbmMgP2VuY29kZSBjIG1ldGggYXJnID1cbiAgICBsZXQgZW5jb2RlID0gbWF0Y2ggZW5jb2RlIHdpdGggTm9uZSAtPiBpbWFnZV9lbmNvZGUgKCkgfCBTb21lIGUgLT4gZSBpblxuICAgIGxldCB0ID0gSnYuZ2V0IGVuY29kZSBcInR5cGVcIiBpblxuICAgIGxldCBxID0gSnYuZmluZCBlbmNvZGUgXCJxdWFsaXR5XCIgaW5cbiAgICBsZXQgYXJncyA9IG1hdGNoIGFyZyB3aXRoXG4gICAgfCBOb25lIC0+IChtYXRjaCBxIHdpdGggTm9uZSAtPiBbfHR8XSB8IFNvbWUgcSAtPiBbfHQ7IHF8XSlcbiAgICB8IFNvbWUgYSAtPiAobWF0Y2ggcSB3aXRoIE5vbmUgLT4gW3xhOyB0fF0gfCBTb21lIHEgLT4gW3wgYTsgdDsgcXxdKVxuICAgIGluXG4gICAgSnYuY2FsbCBjIG1ldGggYXJnc1xuXG4gIGxldCB0b19kYXRhX3VybCA/ZW5jb2RlIGMgPSBtYXRjaCBlbmMgYyBcInRvRGF0YVVSTFwiIE5vbmUgd2l0aFxuICB8IGV4Y2VwdGlvbiBKdi5FcnJvciBlIC0+IEVycm9yIGVcbiAgfCB2IC0+IE9rIChKdi50b19qc3RyIHYpXG5cbiAgbGV0IHRvX2Jsb2IgP2VuY29kZSBjID1cbiAgICBsZXQgZnV0LCBzZXQgPSBGdXQuY3JlYXRlICgpIGluXG4gICAgbGV0IGNiIGJsb2IgPSBzZXQgKE9rIChKdi50b19vcHRpb24gQmxvYi5vZl9qdiBibG9iKSkgaW5cbiAgICBtYXRjaCBlbmMgYyBcInRvQmxvYlwiIChTb21lIChKdi5jYWxsYmFjayB+YXJpdHk6MSBjYikpIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBKdi5FcnJvciBlIC0+IHNldCAoRXJyb3IgZSk7IGZ1dFxuICAgIHwgXyAtPiBmdXRcblxuICBsZXQgY2FwdHVyZV9zdHJlYW0gfmh6IGMgPVxuICAgIGxldCBhcmdzID0gbWF0Y2ggaHogd2l0aCBOb25lIC0+IFt8fF0gfCBTb21lIGh6IC0+IFt8SnYub2ZfaW50IGh6fF0gaW5cbiAgICBCcnJfaW8uTWVkaWEuU3RyZWFtLm9mX2p2IEBAIEp2LmNhbGwgYyBcImNhcHR1cmVTdHJzZWFtXCIgYXJnc1xuZW5kXG5cbm1vZHVsZSBDMmQgPSBzdHJ1Y3RcblxuICAoKiBFbnVtZXJhdGlvbnMgKilcblxuICBtb2R1bGUgRmlsbF9ydWxlID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSnN0ci50XG4gICAgbGV0IG5vbnplcm8gPSBKc3RyLnYgXCJub256ZXJvXCJcbiAgICBsZXQgZXZlbm9kZCA9IEpzdHIudiBcImV2ZW5vZGRcIlxuICBlbmRcblxuICBtb2R1bGUgSW1hZ2Vfc21vb3RoaW5nX3F1YWxpdHkgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKc3RyLnRcbiAgICBsZXQgbG93ID0gSnN0ci52IFwibG93XCJcbiAgICBsZXQgbWVkaXVtID0gSnN0ci52IFwibWVkaXVtXCJcbiAgICBsZXQgaGlnaCA9IEpzdHIudiBcImhpZ2hcIlxuICBlbmRcblxuICBtb2R1bGUgTGluZV9jYXAgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKc3RyLnRcbiAgICBsZXQgYnV0dCA9IEpzdHIudiBcImJ1dHRcIlxuICAgIGxldCByb3VuZCA9IEpzdHIudiBcInJvdW5kXCJcbiAgICBsZXQgc3F1YXJlID0gSnN0ci52IFwic3F1YXJlXCJcbiAgZW5kXG5cbiAgbW9kdWxlIExpbmVfam9pbiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEpzdHIudFxuICAgIGxldCByb3VuZCA9IEpzdHIudiBcInJvdW5kXCJcbiAgICBsZXQgYmV2ZWwgPSBKc3RyLnYgXCJiZXZlbFwiXG4gICAgbGV0IG1pdGVyID0gSnN0ci52IFwibWl0ZXJcIlxuICBlbmRcblxuICBtb2R1bGUgVGV4dF9hbGlnbiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEpzdHIudFxuICAgIGxldCBzdGFydCA9IEpzdHIudiBcInN0YXJ0XCJcbiAgICBsZXQgZW5kJyA9IEpzdHIudiBcImVuZFwiXG4gICAgbGV0IGxlZnQgPSBKc3RyLnYgXCJsZWZ0XCJcbiAgICBsZXQgcmlnaHQgPSBKc3RyLnYgXCJyaWdodFwiXG4gICAgbGV0IGNlbnRlciA9IEpzdHIudiBcImNlbnRlclwiXG4gIGVuZFxuXG4gIG1vZHVsZSBUZXh0X2Jhc2VsaW5lID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSnN0ci50XG4gICAgbGV0IHRvcCA9IEpzdHIudiBcInRvcFwiXG4gICAgbGV0IGhhbmdpbmcgPSBKc3RyLnYgXCJoYW5naW5nXCJcbiAgICBsZXQgbWlkZGxlID0gSnN0ci52IFwibWlkZGxlXCJcbiAgICBsZXQgYWxwaGFiZXRpYyA9IEpzdHIudiBcImFscGhhYmV0aWNcIlxuICAgIGxldCBpZGVvZ3JhcGhpYyA9IEpzdHIudiBcImlkZW9ncmFwaGljXCJcbiAgICBsZXQgYm90dG9tID0gSnN0ci52IFwiYm90dG9tXCJcbiAgZW5kXG5cbiAgbW9kdWxlIFRleHRfZGlyZWN0aW9uID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSnN0ci50XG4gICAgbGV0IGx0ciA9IEpzdHIudiBcImx0clwiXG4gICAgbGV0IHJ0bCA9IEpzdHIudiBcInJ0bFwiXG4gICAgbGV0IGluaGVyaXQnID0gSnN0ci52IFwiaW5oZXJpdFwiXG4gIGVuZFxuXG4gIG1vZHVsZSBDb21wb3NpdGVfb3AgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKc3RyLnRcblxuICAgIGxldCBub3JtYWwgPSBKc3RyLnYgXCJub3JtYWxcIlxuICAgIGxldCBtdWx0aXBseSA9IEpzdHIudiBcIm11bHRpcGx5XCJcbiAgICBsZXQgc2NyZWVuID0gSnN0ci52IFwic2NyZWVuXCJcbiAgICBsZXQgb3ZlcmxheSA9IEpzdHIudiBcIm92ZXJsYXlcIlxuICAgIGxldCBkYXJrZW4gPSBKc3RyLnYgXCJkYXJrZW5cIlxuICAgIGxldCBsaWdodGVuID0gSnN0ci52IFwibGlnaHRlblwiXG4gICAgbGV0IGNvbG9yX2RvZGdlID0gSnN0ci52IFwiY29sb3ItZG9kZ2VcIlxuICAgIGxldCBjb2xvcl9idXJuID0gSnN0ci52IFwiY29sb3ItYnVyblwiXG4gICAgbGV0IGhhcmRfbGlnaHQgPSBKc3RyLnYgXCJoYXJkLWxpZ2h0XCJcbiAgICBsZXQgc29mdF9saWdodCA9IEpzdHIudiBcInNvZnQtbGlnaHRcIlxuICAgIGxldCBkaWZmZXJlbmNlID0gSnN0ci52IFwiZGlmZmVyZW5jZVwiXG4gICAgbGV0IGV4Y2x1c2lvbiA9IEpzdHIudiBcImV4Y2x1c2lvblwiXG4gICAgbGV0IGh1ZSA9IEpzdHIudiBcImh1ZVwiXG4gICAgbGV0IHNhdHVyYXRpb24gPSBKc3RyLnYgXCJzYXR1cmF0aW9uXCJcbiAgICBsZXQgY29sb3IgPSBKc3RyLnYgXCJjb2xvclwiXG4gICAgbGV0IGx1bWlub3NpdHkgPSBKc3RyLnYgXCJsdW1pbm9zaXR5XCJcbiAgICBsZXQgY2xlYXIgPSBKc3RyLnYgXCJjbGVhclwiXG4gICAgbGV0IGNvcHkgPSBKc3RyLnYgXCJjb3B5XCJcbiAgICBsZXQgc291cmNlX292ZXIgPSBKc3RyLnYgXCJzb3VyY2Utb3ZlclwiXG4gICAgbGV0IGRlc3RpbmF0aW9uX292ZXIgPSBKc3RyLnYgXCJkZXN0aW5hdGlvbi1vdmVyXCJcbiAgICBsZXQgc291cmNlX2luID0gSnN0ci52IFwic291cmNlLWluXCJcbiAgICBsZXQgZGVzdGluYXRpb25faW4gPSBKc3RyLnYgXCJkZXN0aW5hdGlvbi1pblwiXG4gICAgbGV0IHNvdXJjZV9vdXQgPSBKc3RyLnYgXCJzb3VyY2Utb3V0XCJcbiAgICBsZXQgZGVzdGluYXRpb25fb3V0ID0gSnN0ci52IFwiZGVzdGluYXRpb24tb3V0XCJcbiAgICBsZXQgc291cmNlX2F0b3AgPSBKc3RyLnYgXCJzb3VyY2UtYXRvcFwiXG4gICAgbGV0IGRlc3RpbmF0aW9uX2F0b3AgPSBKc3RyLnYgXCJkZXN0aW5hdGlvbi1hdG9wXCJcbiAgICBsZXQgeG9yID0gSnN0ci52IFwieG9yXCJcbiAgICBsZXQgbGlnaHRlciA9IEpzdHIudiBcImxpZ2h0ZXJcIlxuICAgIGxldCBwbHVzX2RhcmtlciA9IEpzdHIudiBcInBsdXMtZGFya2VyXCJcbiAgICBsZXQgcGx1c19saWdodGVyID0gSnN0ci52IFwicGx1cy1saWdodGVyXCJcbiAgZW5kXG5cbiAgbW9kdWxlIFJlcGVhdCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEpzdHIudFxuICAgIGxldCB4eSA9IEpzdHIudiBcInJlcGVhdFwiXG4gICAgbGV0IHggPSBKc3RyLnYgXCJyZXBlYXQteFwiXG4gICAgbGV0IHkgPSBKc3RyLnYgXCJyZXBlYXQteVwiXG4gICAgbGV0IG5vID0gSnN0ci52IFwibm8tcmVwZWF0XCJcbiAgZW5kXG5cbiAgbW9kdWxlIFBhdGggPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKdi50XG4gICAgbGV0IHBhdGggPSBKdi5nZXQgSnYuZ2xvYmFsIFwiUGF0aDJEXCJcbiAgICBsZXQgY3JlYXRlICgpID0gSnYubmV3JyBwYXRoIFt8fF1cbiAgICBsZXQgb2Zfc3ZnIHN2ZyA9IEp2Lm5ldycgcGF0aCBbfCBKdi5vZl9qc3RyIHN2ZyB8XVxuICAgIGxldCBvZl9wYXRoIHAgPSBKdi5uZXcnIHBhdGggW3wgcCB8XVxuICAgIGxldCBhZGQgP3RyIHAgcCcgPVxuICAgICAgaWdub3JlIEBAIEp2LmNhbGwgcCBcImFkZFBhdGhcIlxuICAgICAgICAobWF0Y2ggdHIgd2l0aCBOb25lIC0+IFt8cCd8XSB8IFNvbWUgdCAtPiBbfHAnOyBNYXRyaXg0LnRvX2p2IHR8XSlcblxuICAgIGxldCBjbG9zZSBwID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIHAgXCJjbG9zZVBhdGhcIiBbfHxdXG5cbiAgICBsZXQgbW92ZV90byBwIH54IH55ID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIHAgXCJtb3ZlVG9cIiBKdi5bfCBvZl9mbG9hdCB4OyBvZl9mbG9hdCB5IHxdXG5cbiAgICBsZXQgbGluZV90byBwIH54IH55ID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIHAgXCJsaW5lVG9cIiBKdi5bfCBvZl9mbG9hdCB4OyBvZl9mbG9hdCB5IHxdXG5cbiAgICBsZXQgcWN1cnZlX3RvIHAgfmN4IH5jeSB+eCB+eSA9XG4gICAgICBpZ25vcmUgQEAgSnYuY2FsbCBwIFwicXVhZHJhdGljQ3VydmVUb1wiXG4gICAgICAgIEp2Llt8IG9mX2Zsb2F0IGN4OyBvZl9mbG9hdCBjeTsgb2ZfZmxvYXQgeDsgb2ZfZmxvYXQgeSB8XVxuXG4gICAgbGV0IGNjdXJ2ZV90byBwIH5jeCB+Y3kgfmN4JyB+Y3knIH54IH55ID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIHAgXCJiZXppZXJDdXJ2ZVRvXCJcbiAgICAgICAgSnYuW3wgb2ZfZmxvYXQgY3g7IG9mX2Zsb2F0IGN5OyBvZl9mbG9hdCBjeCc7IG9mX2Zsb2F0IGN5JztcbiAgICAgICAgICAgICAgb2ZfZmxvYXQgeDsgb2ZfZmxvYXQgeXxdXG5cbiAgICBsZXQgYXJjX3RvIHAgfmN4IH5jeSB+Y3gnIH5jeScgfnIgPVxuICAgICAgaWdub3JlIEBAIEp2LmNhbGwgcCBcImFyY1RvXCJcbiAgICAgICAgSnYuW3wgb2ZfZmxvYXQgY3g7IG9mX2Zsb2F0IGN5OyBvZl9mbG9hdCBjeCc7IG9mX2Zsb2F0IGN5Jzsgb2ZfZmxvYXQgcnxdXG5cbiAgICBsZXQgYXJjID8oYW50aWNsb2Nrd2lzZSA9IGZhbHNlKSBwIH5jeCB+Y3kgfnIgfnN0YXJ0IH5zdG9wID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIHAgXCJhcmNcIlxuICAgICAgICBKdi5bfCBvZl9mbG9hdCBjeDsgb2ZfZmxvYXQgY3k7IG9mX2Zsb2F0IHI7IG9mX2Zsb2F0IHN0YXJ0O1xuICAgICAgICAgICAgICBvZl9mbG9hdCBzdG9wOyBvZl9ib29sIGFudGljbG9ja3dpc2UgfF1cblxuICAgIGxldCByZWN0IHAgfnggfnkgfncgfmggPVxuICAgICAgaWdub3JlIEBAICBKdi5jYWxsIHAgXCJyZWN0XCJcbiAgICAgICAgSnYuW3wgb2ZfZmxvYXQgeDsgb2ZfZmxvYXQgeTsgb2ZfZmxvYXQgdzsgb2ZfZmxvYXQgaCB8XVxuXG4gICAgbGV0IGVsbGlwc2UgPyhhbnRpY2xvY2t3aXNlID0gZmFsc2UpIHAgfmN4IH5jeSB+cnggfnJ5IH5yb3QgfnN0YXJ0IH5zdG9wID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIHAgXCJlbGxpcHNlXCJcbiAgICAgICAgSnYuW3wgb2ZfZmxvYXQgY3g7IG9mX2Zsb2F0IGN5OyBvZl9mbG9hdCByeDsgb2ZfZmxvYXQgcnk7IG9mX2Zsb2F0IHJvdDtcbiAgICAgICAgICAgICAgb2ZfZmxvYXQgc3RhcnQ7IG9mX2Zsb2F0IHN0b3A7IG9mX2Jvb2wgYW50aWNsb2Nrd2lzZSB8XVxuXG4gICAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG4gIGVuZFxuXG4gICgqIEltYWdlIHNvdXJjZXMgKilcblxuICB0eXBlIGltYWdlX3NyYyA9IEp2LnRcbiAgbGV0IGltYWdlX3NyY19vZl9lbCA9IEVsLnRvX2p2XG4gIGxldCBpbWFnZV9zcmNfb2ZfanYgPSBGdW4uaWRcblxuICAoKiBBdHRyaWJ1dGVzICopXG5cbiAgdHlwZSBhdHRycyA9IEp2LnRcblxuICBsZXQgY3JlYXRlX2F0dHJzXG4gICAgICA/YWxwaGEgP2NvbG9yX3NwYWNlID9kZXN5bmNocm9uaXplZCA/d2lsbF9yZWFkX2ZyZXF1ZW50bHkgKClcbiAgICA9XG4gICAgbGV0IG8gPSBKdi5vYmogW3x8XSBpblxuICAgIEp2LkJvb2wuc2V0X2lmX3NvbWUgbyBcImFscGhhXCIgYWxwaGE7XG4gICAgSnYuSnN0ci5zZXRfaWZfc29tZSBvIFwiY29sb3JTcGFjZVwiIGNvbG9yX3NwYWNlO1xuICAgIEp2LkJvb2wuc2V0X2lmX3NvbWUgbyBcImRlc3luY2hyb25pemVkXCIgZGVzeW5jaHJvbml6ZWQ7XG4gICAgSnYuQm9vbC5zZXRfaWZfc29tZSBvIFwid2lsbFJlYWRGcmVxdWVudGx5XCIgd2lsbF9yZWFkX2ZyZXF1ZW50bHk7XG4gICAgb1xuXG4gIGxldCBhdHRyc19hbHBoYSBvID0gSnYuQm9vbC5nZXQgbyBcImFscGhhXCJcbiAgbGV0IGF0dHJzX2NvbG9yX3NwYWNlIG8gPVxuICAgICgqIFRoaXMgY2FuIGJlIGdldCBvbmNlIEZGIHN1cHBvcnRzIHRoZSBwcm9wZXJ0eS4gKilcbiAgICBPcHRpb24udmFsdWUgfmRlZmF1bHQ6SnN0ci5lbXB0eSAoSnYuSnN0ci5maW5kIG8gXCJjb2xvclNwYWNlXCIpXG5cbiAgbGV0IGF0dHJzX2Rlc3luY2hyb25pemVkIG8gPSBKdi5Cb29sLmdldCBvIFwiZGVzeW5jaHJvbml6ZWRcIlxuICBsZXQgYXR0cnNfd2lsbF9yZWFkX2ZyZXF1ZW50bHkgbyA9IEp2LkJvb2wuZ2V0IG8gXCJ3aWxsUmVhZEZyZXF1ZW50bHlcIlxuXG4gIHR5cGUgdCA9IEp2LnRcbiAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG4gIGxldCBnZXRfY29udGV4dCA/KGF0dHJzID0gSnYudW5kZWZpbmVkKSBjbnYgPVxuICAgIEp2LmNhbGwgY252IFwiZ2V0Q29udGV4dFwiIEp2Llt8IG9mX3N0cmluZyBcIjJkXCI7IGF0dHJzIHxdXG5cbiAgbGV0IGNyZWF0ZSA9IGdldF9jb250ZXh0XG5cbiAgbGV0IGNhbnZhcyBjID0gSnYuZmluZF9tYXAgQ2FudmFzLm9mX2p2IGMgXCJjYW52YXNcIlxuICBsZXQgYXR0cnMgYyA9IEp2LmNhbGwgYyBcImdldENvbnRleHRBdHRyaWJ1dGVzXCIgW3x8XVxuICBsZXQgc2F2ZSBjID0gaWdub3JlIEBAIEp2LmNhbGwgYyBcInNhdmVcIiBbfHxdXG4gIGxldCByZXN0b3JlIGMgPSBpZ25vcmUgQEAgSnYuY2FsbCBjIFwicmVzdG9yZVwiIFt8fF1cblxuICAoKiBBbnRpYWxpYXNpbmcgKilcblxuICBsZXQgaW1hZ2Vfc21vb3RoaW5nX2VuYWJsZWQgYyA9IEp2LkJvb2wuZ2V0IGMgXCJpbWFnZVNtb290aGluZ0VuYWJsZWRcIlxuICBsZXQgc2V0X2ltYWdlX3Ntb290aGluZ19lbmFibGVkIGMgYiA9IEp2LkJvb2wuc2V0IGMgXCJpbWFnZVNtb290aGluZ0VuYWJsZWRcIiBiXG4gIGxldCBpbWFnZV9zbW9vdGhpbmdfcXVhbGl0eSBjID0gSnYuSnN0ci5nZXQgYyBcImltYWdlU21vb3RoaW5nUXVhbGl0eVwiXG4gIGxldCBzZXRfaW1hZ2Vfc21vb3RoaW5nX3F1YWxpdHkgYyB2ID0gSnYuSnN0ci5zZXQgYyBcImltYWdlU21vb3RoaW5nUXVhbGl0eVwiIHZcblxuICAoKiBDb21wb3NpdGluZyAqKVxuXG4gIGxldCBnbG9iYWxfYWxwaGEgYyA9IEp2LkZsb2F0LmdldCBjIFwiZ2xvYmFsQWxwaGFcIlxuICBsZXQgc2V0X2dsb2JhbF9hbHBoYSBjIGEgPSBKdi5GbG9hdC5zZXQgYyBcImdsb2JhbEFscGhhXCIgYVxuICBsZXQgZ2xvYmFsX2NvbXBvc2l0ZV9vcCBjID0gSnYuSnN0ci5nZXQgYyBcImdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvblwiXG4gIGxldCBzZXRfZ2xvYmFsX2NvbXBvc2l0ZV9vcCBjIG8gPSBKdi5Kc3RyLnNldCBjIFwiZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uXCIgb1xuICBsZXQgZmlsdGVyIGMgPSBKdi5Kc3RyLmdldCBjIFwiZmlsdGVyXCJcbiAgbGV0IHNldF9maWx0ZXIgYyBmID0gSnYuSnN0ci5zZXQgYyBcImZpbHRlclwiIGZcblxuICAoKiBUcmFuc2Zvcm1zICopXG5cbiAgbGV0IGdldF90cmFuc2Zvcm0gYyA9IE1hdHJpeDQub2ZfanYgQEAgSnYuY2FsbCBjIFwiZ2V0VHJhbnNmb3JtXCIgW3x8XVxuICBsZXQgc2V0X3RyYW5zZm9ybSBjIG0gPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJzZXRUcmFuc2Zvcm1cIiBbfCBNYXRyaXg0LnRvX2p2IG0gfF1cblxuICBsZXQgc2V0X3RyYW5zZm9ybScgY3R4IH5hIH5iIH5jIH5kIH5lIH5mID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjdHggXCJzZXRUcmFuc2Zvcm1cIlxuICAgICAgSnYuW3wgb2ZfZmxvYXQgYTsgb2ZfZmxvYXQgYjsgb2ZfZmxvYXQgYzsgb2ZfZmxvYXQgZDtcbiAgICAgICAgICAgIG9mX2Zsb2F0IGU7IG9mX2Zsb2F0IGYgfF1cblxuICBsZXQgcmVzZXRfdHJhbnNmb3JtIGMgPSBpZ25vcmUgQEAgSnYuY2FsbCBjIFwicmVzZXRUcmFuc2Zvcm1cIiBbfHxdXG4gIGxldCB0cmFuc2Zvcm0gYyBtID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidHJhbnNmb3JtXCJcbiAgICAgIEp2Llt8IG9mX2Zsb2F0IChNYXRyaXg0LmEgbSk7IG9mX2Zsb2F0IChNYXRyaXg0LmIgbSk7XG4gICAgICAgICAgICBvZl9mbG9hdCAoTWF0cml4NC5jIG0pOyBvZl9mbG9hdCAoTWF0cml4NC5kIG0pO1xuICAgICAgICAgICAgb2ZfZmxvYXQgKE1hdHJpeDQuZSBtKTsgb2ZfZmxvYXQgKE1hdHJpeDQuZiBtKSB8XVxuXG4gIGxldCB0cmFuc2Zvcm0nIGN0eCB+YSB+YiB+YyB+ZCB+ZSB+ZiA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgY3R4IFwidHJhbnNmb3JtXCJcbiAgICAgIEp2Llt8IG9mX2Zsb2F0IGE7IG9mX2Zsb2F0IGI7IG9mX2Zsb2F0IGM7IG9mX2Zsb2F0IGQ7XG4gICAgICAgICAgICBvZl9mbG9hdCBlOyBvZl9mbG9hdCBmIHxdXG5cbiAgbGV0IHRyYW5zbGF0ZSBjIH54IH55ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidHJhbnNsYXRlXCIgSnYuW3wgb2ZfZmxvYXQgeDsgb2ZfZmxvYXQgeSB8XVxuXG4gIGxldCByb3RhdGUgYyByID0gaWdub3JlIEBAIEp2LmNhbGwgYyBcInJvdGF0ZVwiIEp2Llt8IG9mX2Zsb2F0IHIgfF1cbiAgbGV0IHNjYWxlIGMgfnN4IH5zeSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInNjYWxlXCIgSnYuW3wgb2ZfZmxvYXQgc3g7IG9mX2Zsb2F0IHN5IHxdXG5cbiAgKCogU3R5bGUgZmlsbHMgYW5kIHN0cm9rZXMgKilcblxuICB0eXBlIHN0eWxlID0gSnYudFxuICBsZXQgc2V0X3N0cm9rZV9zdHlsZSBjIHMgPSBKdi5zZXQgYyBcInN0cm9rZVN0eWxlXCIgc1xuICBsZXQgc2V0X2ZpbGxfc3R5bGUgYyBzID0gSnYuc2V0IGMgXCJmaWxsU3R5bGVcIiBzXG4gIGxldCBjb2xvciA9IEp2Lm9mX2pzdHJcblxuICB0eXBlIGdyYWRpZW50ID0gSnYudFxuICBsZXQgZ3JhZGllbnRfc3R5bGUgPSBGdW4uaWRcblxuICBsZXQgbWFrZV9zdG9wcyBnIHN0b3BzID1cbiAgICBsZXQgYWRkX3N0b3AgZyAob2ZmLCBjKSA9XG4gICAgICBpZ25vcmUgQEAgSnYuY2FsbCBnIFwiYWRkQ29sb3JTdG9wXCIgSnYuW3wgb2ZfZmxvYXQgb2ZmOyBvZl9qc3RyIGMgfF1cbiAgICBpblxuICAgIExpc3QuaXRlciAoYWRkX3N0b3AgZykgc3RvcHNcblxuICBsZXQgbGluZWFyX2dyYWRpZW50IGMgfngwIH55MCB+eDEgfnkxIH5zdG9wcyA9XG4gICAgbGV0IGcgPVxuICAgICAgSnYuY2FsbCBjIFwiY3JlYXRlTGluZWFyR3JhZGllbnRcIlxuICAgICAgICBKdi5bfCBvZl9mbG9hdCB4MDsgb2ZfZmxvYXQgeTA7IG9mX2Zsb2F0IHgxOyBvZl9mbG9hdCB5MSB8XVxuICAgIGluXG4gICAgbWFrZV9zdG9wcyBnIHN0b3BzOyBnXG5cbiAgbGV0IHJhZGlhbF9ncmFkaWVudCBjIH54MCB+eTAgfnIwIH54MSB+eTEgfnIxIH5zdG9wcyA9XG4gICAgbGV0IGcgPVxuICAgICAgSnYuY2FsbCBjIFwiY3JlYXRlUmFkaWFsR3JhZGllbnRcIlxuICAgICAgICBKdi5bfCBvZl9mbG9hdCB4MDsgb2ZfZmxvYXQgeTA7IG9mX2Zsb2F0IHIwO1xuICAgICAgICAgICAgICBvZl9mbG9hdCB4MTsgb2ZfZmxvYXQgeTE7IG9mX2Zsb2F0IHIxOyB8XVxuICAgIGluXG4gICAgbWFrZV9zdG9wcyBnIHN0b3BzOyBnXG5cbiAgdHlwZSBwYXR0ZXJuID0gSnYudFxuICBsZXQgcGF0dGVybiBjIGltZyByIH50ciA9XG4gICAgbGV0IHAgPSBKdi5jYWxsIGMgXCJjcmVhdGVQYXR0ZXJuXCIgW3xpbWc7IEp2Lm9mX2pzdHIgcnxdIGluXG4gICAgbWF0Y2ggdHIgd2l0aFxuICAgIHwgTm9uZSAtPiBwXG4gICAgfCBTb21lIHQgLT4gaWdub3JlIEBAIEp2LmNhbGwgcCBcInNldFRyYW5zZm9ybVwiIFt8IE1hdHJpeDQudG9fanYgdCB8XTsgcFxuXG4gIGxldCBwYXR0ZXJuX3N0eWxlID0gRnVuLmlkXG5cbiAgKCogU3R5bGUgbGluZXMgKilcblxuICBsZXQgbGluZV93aWR0aCBjID0gSnYuRmxvYXQuZ2V0IGMgXCJsaW5lV2lkdGhcIlxuICBsZXQgc2V0X2xpbmVfd2lkdGggYyB3ID0gSnYuRmxvYXQuc2V0IGMgXCJsaW5lV2lkdGhcIiB3XG4gIGxldCBsaW5lX2NhcCBjID0gSnYuSnN0ci5nZXQgYyBcImxpbmVDYXBcIlxuICBsZXQgc2V0X2xpbmVfY2FwIGMgY2FwID0gSnYuSnN0ci5zZXQgYyBcImxpbmVDYXBcIiBjYXBcbiAgbGV0IGxpbmVfam9pbiBjID0gSnYuSnN0ci5nZXQgYyBcImxpbmVKb2luXCJcbiAgbGV0IHNldF9saW5lX2pvaW4gYyBqb2luID0gSnYuSnN0ci5zZXQgYyBcImxpbmVKb2luXCIgam9pblxuICBsZXQgbWl0ZXJfbGltaXQgYyA9IEp2LkZsb2F0LmdldCBjIFwibWl0ZXJMaW1pdFwiXG4gIGxldCBzZXRfbWl0ZXJfbGltaXQgYyBsID0gSnYuRmxvYXQuc2V0IGMgXCJtaXRlckxpbWl0XCIgbFxuICBsZXQgbGluZV9kYXNoIGMgPSBKdi50b19saXN0IEp2LnRvX2Zsb2F0IEBAIEp2LmNhbGwgYyBcImdldExpbmVEYXNoXCIgW3x8XVxuICBsZXQgc2V0X2xpbmVfZGFzaCBjIGRzID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwic2V0TGluZURhc2hcIiBbfEp2Lm9mX2xpc3QgSnYub2ZfZmxvYXQgZHN8XVxuXG4gIGxldCBsaW5lX2Rhc2hfb2Zmc2V0IGMgPSBKdi5GbG9hdC5nZXQgYyBcImxpbmVEYXNoT2Zmc2V0XCJcbiAgbGV0IHNldF9saW5lX2Rhc2hfb2Zmc2V0IGMgbyA9IEp2LkZsb2F0LnNldCBjIFwibGluZURhc2hPZmZzZXRcIiBvXG5cbiAgKCogU3R5bGUgc2hhZG93cyAqKVxuXG4gIGxldCBzaGFkb3dfYmx1ciBjID0gSnYuRmxvYXQuZ2V0IGMgXCJzaGFkb3dCbHVyXCJcbiAgbGV0IHNldF9zaGFkb3dfYmx1ciBjIGIgPSBKdi5GbG9hdC5zZXQgYyBcInNoYWRvd0JsdXJcIiBiXG4gIGxldCBzaGFkb3dfb2Zmc2V0X3ggYyA9IEp2LkZsb2F0LmdldCBjIFwic2hhZG93T2Zmc2V0WFwiXG4gIGxldCBzZXRfc2hhZG93X29mZnNldF94IGMgbyA9IEp2LkZsb2F0LnNldCBjIFwic2hhZG93T2Zmc2V0WFwiIG9cbiAgbGV0IHNoYWRvd19vZmZzZXRfeSBjID0gSnYuRmxvYXQuZ2V0IGMgXCJzaGFkb3dPZmZzZXRZXCJcbiAgbGV0IHNldF9zaGFkb3dfb2Zmc2V0X3kgYyBvID0gSnYuRmxvYXQuc2V0IGMgXCJzaGFkb3dPZmZzZXRZXCIgb1xuICBsZXQgc2hhZG93X2NvbG9yIGMgPSBKdi5Kc3RyLmdldCBjIFwic2hhZG93Q29sb3JcIlxuICBsZXQgc2V0X3NoYWRvd19jb2xvciBjIGNvbCA9IEp2LkpzdHIuc2V0IGMgXCJzaGFkb3dDb2xvclwiIGNvbFxuXG4gICgqIFN0eWxlIHRleHQgKilcblxuICBsZXQgZm9udCBjID0gSnYuSnN0ci5nZXQgYyBcImZvbnRcIlxuICBsZXQgc2V0X2ZvbnQgYyBmID0gSnYuSnN0ci5zZXQgYyBcImZvbnRcIiBmXG4gIGxldCB0ZXh0X2FsaWduIGMgPSBKdi5Kc3RyLmdldCBjIFwidGV4dEFsaWduXCJcbiAgbGV0IHNldF90ZXh0X2FsaWduIGMgYSA9IEp2LkpzdHIuc2V0IGMgXCJ0ZXh0QWxpZ25cIiBhXG4gIGxldCB0ZXh0X2Jhc2VsaW5lIGMgPSBKdi5Kc3RyLmdldCBjIFwidGV4dEJhc2VsaW5lXCJcbiAgbGV0IHNldF90ZXh0X2Jhc2VsaW5lIGMgYiA9IEp2LkpzdHIuc2V0IGMgXCJ0ZXh0QmFzZWxpbmVcIiBiXG4gIGxldCB0ZXh0X2RpcmVjdGlvbiBjID0gSnYuSnN0ci5nZXQgYyBcImRpcmVjdGlvblwiXG4gIGxldCBzZXRfdGV4dF9kaXJlY3Rpb24gYyBkID0gSnYuSnN0ci5zZXQgYyBcImRpcmVjdGlvblwiIGRcblxuICAoKiBEcmF3IHJlY3RhbmdsZXMgKilcblxuICBsZXQgY2xlYXJfcmVjdCBjIH54IH55IH53IH5oID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiY2xlYXJSZWN0XCJcbiAgICAgIEp2Llt8IG9mX2Zsb2F0IHg7IG9mX2Zsb2F0IHk7IG9mX2Zsb2F0IHc7IG9mX2Zsb2F0IGggfF1cblxuICBsZXQgZmlsbF9yZWN0IGMgfnggfnkgfncgfmggPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJmaWxsUmVjdFwiXG4gICAgICBKdi5bfCBvZl9mbG9hdCB4OyBvZl9mbG9hdCB5OyBvZl9mbG9hdCB3OyBvZl9mbG9hdCBoIHxdXG5cbiAgbGV0IHN0cm9rZV9yZWN0IGMgfnggfnkgfncgfmggPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJzdHJva2VSZWN0XCJcbiAgICAgIEp2Llt8IG9mX2Zsb2F0IHg7IG9mX2Zsb2F0IHk7IG9mX2Zsb2F0IHc7IG9mX2Zsb2F0IGggfF1cblxuICAoKiBEcmF3IHBhdGhzICopXG5cbiAgbGV0IGZpbGwgPyhmaWxsX3J1bGUgPSBGaWxsX3J1bGUubm9uemVybykgYyBwID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZmlsbFwiIFt8IHA7IEp2Lm9mX2pzdHIgZmlsbF9ydWxlIHxdXG5cbiAgbGV0IHN0cm9rZSBjIHAgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJzdHJva2VcIiBbfCBwIHxdXG5cbiAgbGV0IGNsaXAgPyhmaWxsX3J1bGUgPSBGaWxsX3J1bGUubm9uemVybykgYyBwID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiY2xpcFwiIFt8IHA7IEp2Lm9mX2pzdHIgZmlsbF9ydWxlIHxdXG5cbiAgbGV0IGRyYXdfZm9jdXNfaWZfbmVlZGVkIGMgcCBlID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZHJhd0ZvY3VzSWZOZWVkZWRcIiBbfCBwOyBFbC50b19qdiBlIHxdXG5cbiAgbGV0IHNjcm9sbF9wYXRoX2ludG9fdmlldyBjIHAgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJzY3JvbGxQYXRoSW50b1ZpZXdcIiBbfCBwIHxdXG5cbiAgbGV0IGlzX3BvaW50X2luX2ZpbGwgPyhmaWxsX3J1bGUgPSBGaWxsX3J1bGUubm9uemVybykgYyBwIH54IH55ID1cbiAgICBKdi50b19ib29sIEBAIEp2LmNhbGwgYyBcImlzUG9pbnRJblBhdGhcIlxuICAgICAgSnYuW3wgcDsgb2ZfZmxvYXQgeDsgb2ZfZmxvYXQgeTsgb2ZfanN0ciBmaWxsX3J1bGUgfF1cblxuICBsZXQgaXNfcG9pbnRfaW5fc3Ryb2tlIGMgcCB+eCB+eSA9XG4gICAgSnYudG9fYm9vbCBAQCBKdi5jYWxsIGMgXCJpc1BvaW50SW5TdHJva2VcIlxuICAgICAgSnYuW3wgcDsgb2ZfZmxvYXQgeDsgb2ZfZmxvYXQgeTsgfF1cblxuICAoKiBEcmF3IHRleHQgKilcblxuICBsZXQgY2FsbF90ZXh0IGMgbWV0aCA/bWF4X3dpZHRoIHR4dCB+eCB+eSA9XG4gICAgbGV0IGFyZ3MgPSBtYXRjaCBtYXhfd2lkdGggd2l0aFxuICAgIHwgTm9uZSAtPiBKdi5bfG9mX2pzdHIgdHh0OyBvZl9mbG9hdCB4OyBvZl9mbG9hdCB5IHxdXG4gICAgfCBTb21lIG0gLT4gSnYuW3xvZl9qc3RyIHR4dDsgb2ZfZmxvYXQgeDsgb2ZfZmxvYXQgeTsgb2ZfZmxvYXQgbSB8XVxuICAgIGluXG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBtZXRoIGFyZ3NcblxuICBsZXQgZmlsbF90ZXh0ID9tYXhfd2lkdGggYyB0eHQgfnggfnkgPVxuICAgIGNhbGxfdGV4dCBjIFwiZmlsbFRleHRcIiA/bWF4X3dpZHRoIHR4dCB+eCB+eVxuXG4gIGxldCBzdHJva2VfdGV4dCA/bWF4X3dpZHRoIGMgdHh0IH54IH55ID1cbiAgICBjYWxsX3RleHQgYyBcInN0cm9rZVRleHRcIiA/bWF4X3dpZHRoIHR4dCB+eCB+eVxuXG4gIG1vZHVsZSBUZXh0X21ldHJpY3MgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKdi50XG4gICAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG4gICAgbGV0IHdpZHRoIG0gPSBKdi5GbG9hdC5nZXQgbSBcIndpZHRoXCJcbiAgICBsZXQgYWN0dWFsX2JvdW5kaW5nX2JveF9sZWZ0IG0gPSBKdi5GbG9hdC5nZXQgbSBcImFjdHVhbEJvdW5kaW5nQm94TGVmdFwiXG4gICAgbGV0IGFjdHVhbF9ib3VuZGluZ19ib3hfcmlnaHQgbSA9IEp2LkZsb2F0LmdldCBtIFwiYWN0dWFsQm91bmRpbmdCb3hSaWdodFwiXG4gICAgbGV0IGZvbnRfYm91bmRpbmdfYm94X2FzY2VudCBtID0gSnYuRmxvYXQuZ2V0IG0gXCJmb250Qm91bmRpbmdCb3hBc2NlbnRcIlxuICAgIGxldCBmb250X2JvdW5kaW5nX2JveF9kZXNjZW50IG0gPSBKdi5GbG9hdC5nZXQgbSBcImZvbnRCb3VuZGluZ0JveERlc2NlbnRcIlxuICAgIGxldCBhY3R1YWxfYm91bmRpbmdfYm94X2FzY2VudCBtID0gSnYuRmxvYXQuZ2V0IG0gXCJhY3R1YWxCb3VuZGluZ0JveEFzY2VudFwiXG4gICAgbGV0IGFjdHVhbF9ib3VuZGluZ19ib3hfZGVzY2VudCBtID1cbiAgICAgIEp2LkZsb2F0LmdldCBtIFwiYWN0dWFsQm91bmRpbmdCb3hEZXNjZW50XCJcbiAgICBsZXQgZW1faGVpZ2h0X2FzY2VudCBtID0gSnYuRmxvYXQuZ2V0IG0gXCJlbUhlaWdodEFzY2VudFwiXG4gICAgbGV0IGVtX2hlaWdodF9kZXNjZW50IG0gPSBKdi5GbG9hdC5nZXQgbSBcImVtSGVpZ2h0RGVzY2VudFwiXG4gICAgbGV0IGhhbmdpbmdfYmFzZWxpbmUgbSA9IEp2LkZsb2F0LmdldCBtIFwiaGFuZ2luZ0Jhc2VsaW5lXCJcbiAgICBsZXQgYWxwaGFiZXRpY19iYXNlbGluZSBtID0gSnYuRmxvYXQuZ2V0IG0gXCJhbHBoYWJldGljQmFzZWxpbmVcIlxuICAgIGxldCBpZGVvZ3JhcGhpY19iYXNlbGluZSBtID0gSnYuRmxvYXQuZ2V0IG0gXCJpZGVvZ3JhcGhpY0Jhc2VsaW5lXCJcbiAgZW5kXG5cbiAgbGV0IG1lYXN1cmVfdGV4dCBjIHR4dCA9XG4gICAgVGV4dF9tZXRyaWNzLm9mX2p2IEBAIEp2LmNhbGwgYyBcIm1lYXN1cmVUZXh0XCIgW3wgSnYub2ZfanN0ciB0eHQgfF1cblxuICAoKiBEcmF3IGltYWdlcyAqKVxuXG4gIGxldCBkcmF3X2ltYWdlIGMgaSB+eCB+eSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImRyYXdJbWFnZVwiIEp2Llt8IGk7IG9mX2Zsb2F0IHg7IG9mX2Zsb2F0IHkgfF1cblxuICBsZXQgZHJhd19pbWFnZV9pbl9yZWN0IGMgaSB+eCB+eSB+dyB+aCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImRyYXdJbWFnZVwiXG4gICAgICBKdi5bfCBpOyBvZl9mbG9hdCB4OyBvZl9mbG9hdCB5OyBvZl9mbG9hdCB3OyBvZl9mbG9hdCBoIHxdXG5cbiAgbGV0IGRyYXdfc3ViX2ltYWdlX2luX3JlY3QgYyBpIH5zeCB+c3kgfnN3IH5zaCB+eCB+eSB+dyB+aCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImRyYXdJbWFnZVwiXG4gICAgICBKdi5bfCBpO1xuICAgICAgICAgICAgb2ZfZmxvYXQgc3g7IG9mX2Zsb2F0IHN5OyBvZl9mbG9hdCBzdzsgb2ZfZmxvYXQgc2g7XG4gICAgICAgICAgICBvZl9mbG9hdCB4OyBvZl9mbG9hdCB5OyBvZl9mbG9hdCB3OyBvZl9mbG9hdCBoIHxdXG5cbiAgKCogUGl4ZWwgbWFuaXB1bGF0aW9ucyAqKVxuXG4gIG1vZHVsZSBJbWFnZV9kYXRhID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSnYudFxuICAgIGluY2x1ZGUgKEp2LklkIDogSnYuQ09OViB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gICAgbGV0IHNldHRpbmdzID9jb2xvcl9zcGFjZSAoKSA9IG1hdGNoIGNvbG9yX3NwYWNlIHdpdGhcbiAgICB8IE5vbmUgLT4gSnYudW5kZWZpbmVkXG4gICAgfCBTb21lIGNzIC0+XG4gICAgICAgIGxldCBvID0gSnYub2JqIFt8fF0gaW5cbiAgICAgICAgSnYuSnN0ci5zZXQgbyBcImNvbG9yU3BhY2VcIiBjczsgb1xuXG4gICAgbGV0IGltYWdlX2RhdGEgPSBKdi5nZXQgSnYuZ2xvYmFsIFwiSW1hZ2VEYXRhXCJcbiAgICBsZXQgY3JlYXRlID9jb2xvcl9zcGFjZSA/ZGF0YSB+dyB+aCAoKSA9XG4gICAgICBsZXQgc2V0dGluZ3MgPSBzZXR0aW5ncyA/Y29sb3Jfc3BhY2UgKCkgaW5cbiAgICAgIGxldCBhcmdzID0gbWF0Y2ggZGF0YSB3aXRoXG4gICAgICB8IE5vbmUgLT4gSnYuW3xvZl9pbnQgdzsgb2ZfaW50IGg7IHNldHRpbmdzfF1cbiAgICAgIHwgU29tZSBkYXRhIC0+IEp2Llt8VGFycmF5LnRvX2p2IGRhdGE7IG9mX2ludCB3OyBvZl9pbnQgaDsgc2V0dGluZ3N8XVxuICAgICAgaW5cbiAgICAgIEp2Lm5ldycgaW1hZ2VfZGF0YSBhcmdzXG5cbiAgICBsZXQgdyBkID0gSnYuSW50LmdldCBkIFwid2lkdGhcIlxuICAgIGxldCBoIGQgPSBKdi5JbnQuZ2V0IGQgXCJoZWlnaHRcIlxuICAgIGxldCBjb2xvcl9zcGFjZSBkID1cbiAgICAgICgqIENhbiBiZWNvbWUgSnYuSnN0ci5nZXQgb25jZSBmaXJlZm94IHN1cHBvcnRzIHRoZSBwcm9wZXJ0eS4gKilcbiAgICAgIE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpKc3RyLmVtcHR5IChKdi5Kc3RyLmZpbmQgZCBcImNvbG9yU3BhY2VcIilcblxuICAgIGxldCBkYXRhIGQgPSBUYXJyYXkub2ZfanYgQEAgSnYuZ2V0IGQgXCJkYXRhXCJcbiAgZW5kXG5cbiAgbGV0IGNyZWF0ZV9pbWFnZV9kYXRhID9jb2xvcl9zcGFjZSBjIH53IH5oID1cbiAgICBsZXQgc2V0dGluZ3MgPSBJbWFnZV9kYXRhLnNldHRpbmdzID9jb2xvcl9zcGFjZSAoKSBpblxuICAgIEltYWdlX2RhdGEub2ZfanYgQEAgSnYuY2FsbCBjIFwiY3JlYXRlSW1hZ2VEYXRhXCJcbiAgICAgIEp2Llt8IG9mX2ludCB3OyBvZl9pbnQgaDsgc2V0dGluZ3MgfF1cblxuICBsZXQgZ2V0X2ltYWdlX2RhdGEgP2NvbG9yX3NwYWNlIGMgfnggfnkgfncgfmggPVxuICAgIGxldCBzZXR0aW5ncyA9IEltYWdlX2RhdGEuc2V0dGluZ3MgP2NvbG9yX3NwYWNlICgpIGluXG4gICAgSW1hZ2VfZGF0YS5vZl9qdiBAQCBKdi5jYWxsIGMgXCJnZXRJbWFnZURhdGFcIlxuICAgICAgSnYuW3xvZl9pbnQgeDsgb2ZfaW50IHk7IG9mX2ludCB3OyBvZl9pbnQgaDsgc2V0dGluZ3N8XVxuXG4gIGxldCBwdXRfaW1hZ2VfZGF0YSBjIGQgfnggfnkgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJwdXRJbWFnZURhdGFcIlxuICAgICAgSnYuW3wgSW1hZ2VfZGF0YS50b19qdiBkOyBvZl9pbnQgeDsgb2ZfaW50IHkgfF1cblxuICBsZXQgcHV0X3N1Yl9pbWFnZV9kYXRhIGMgZCB+c3ggfnN5IH5zdyB+c2ggfnggfnkgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJwdXRJbWFnZURhdGFcIlxuICAgICAgSnYuW3wgSW1hZ2VfZGF0YS50b19qdiBkOyBvZl9pbnQgeDsgb2ZfaW50IHk7XG4gICAgICAgICAgICBvZl9pbnQgc3g7IG9mX2ludCBzeTsgb2ZfaW50IHN3OyBvZl9pbnQgc2ggfF1cbmVuZFxuXG5tb2R1bGUgR2wgPSBzdHJ1Y3RcblxuICAoKiBDb250ZXh0IGNyZWF0aW9uICopXG5cbiAgbW9kdWxlIEF0dHJzID0gc3RydWN0XG4gICAgbW9kdWxlIFBvd2VyX3ByZWZlcmVuY2UgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEpzdHIudFxuICAgICAgbGV0IGRlZmF1bHQgPSBKc3RyLnYgXCJkZWZhdWx0XCJcbiAgICAgIGxldCBoaWdoX3BlcmZvcm1hbmNlID0gSnN0ci52IFwiaGlnaC1wZXJmb3JtYW5jZVwiXG4gICAgICBsZXQgbG93X3Bvd2VyID0gSnN0ci52IFwibG93LXBvd2VyXCJcbiAgICBlbmRcbiAgICB0eXBlIHQgPSBKdi50XG4gICAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG4gICAgbGV0IHZcbiAgICAgICAgP2FscGhhID9kZXB0aCA/c3RlbmNpbCA/YW50aWFsaWFzID9wcmVtdWx0aXBsaWVkX2FscGhhXG4gICAgICAgID9wcmVzZXJ2ZV9kcmF3aW5nX2J1ZmZlciA/cG93ZXJfcHJlZmVyZW5jZVxuICAgICAgICA/ZmFpbF9pZl9tYWpvcl9wZXJmb3JtYW5jZV9jYXZlYXQgP2Rlc3luY2hyb25pemVkICgpID1cbiAgICAgIGxldCBvID0gSnYub2JqIFt8fF0gaW5cbiAgICAgIEp2LkJvb2wuc2V0X2lmX3NvbWUgbyBcImFscGhhXCIgYWxwaGE7XG4gICAgICBKdi5Cb29sLnNldF9pZl9zb21lIG8gXCJkZXB0aFwiIGRlcHRoO1xuICAgICAgSnYuQm9vbC5zZXRfaWZfc29tZSBvIFwic3RlbmNpbFwiIHN0ZW5jaWw7XG4gICAgICBKdi5Cb29sLnNldF9pZl9zb21lIG8gXCJhbnRpYWxpYXNcIiBhbnRpYWxpYXM7XG4gICAgICBKdi5Cb29sLnNldF9pZl9zb21lIG8gXCJwcmVtdWx0aXBsaWVkQXBoYVwiIHByZW11bHRpcGxpZWRfYWxwaGE7XG4gICAgICBKdi5Cb29sLnNldF9pZl9zb21lIG8gXCJwcmVzZXJ2ZURyYXdpbmdCdWZmZXJcIiBwcmVzZXJ2ZV9kcmF3aW5nX2J1ZmZlcjtcbiAgICAgIEp2LkpzdHIuc2V0X2lmX3NvbWUgbyBcInBvd2VyUHJlZmVyZW5jZVwiIHBvd2VyX3ByZWZlcmVuY2U7XG4gICAgICBKdi5Cb29sLnNldF9pZl9zb21lIG8gXCJmYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0XCJcbiAgICAgICAgZmFpbF9pZl9tYWpvcl9wZXJmb3JtYW5jZV9jYXZlYXQ7XG4gICAgICBKdi5Cb29sLnNldF9pZl9zb21lIG8gXCJkZXN5bmNocm9uaXplZFwiIGRlc3luY2hyb25pemVkO1xuICAgICAgb1xuXG4gICAgbGV0IGFscGhhIGEgPSBKdi5Cb29sLmdldCBhIFwiYWxwaGFcIlxuICAgIGxldCBkZXB0aCBhID0gSnYuQm9vbC5nZXQgYSBcImRlcHRoXCJcbiAgICBsZXQgc3RlbmNpbCBhID0gSnYuQm9vbC5nZXQgYSBcInN0ZW5jaWxcIlxuICAgIGxldCBhbnRpYWxpYXMgYSA9IEp2LkJvb2wuZ2V0IGEgXCJhbnRpYWxpYXNcIlxuICAgIGxldCBwcmVtdWx0aXBsaWVkX2FscGhhIGEgPSBKdi5Cb29sLmdldCBhIFwicHJlbXVsdGlwbGllZEFwaGFcIlxuICAgIGxldCBwcmVzZXJ2ZV9kcmF3aW5nX2J1ZmZlciBhID0gSnYuQm9vbC5nZXQgYSBcInByZXNlcnZlRHJhd2luZ0J1ZmZlclwiXG4gICAgbGV0IGZhaWxfaWZfbWFqb3JfcGVyZm9ybWFuY2VfY2F2ZWF0IGEgPVxuICAgICAgSnYuQm9vbC5nZXQgYSBcImZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXRcIlxuICAgIGxldCBwb3dlcl9wcmVmZXJlbmNlIGEgPSBKdi5Kc3RyLmdldCBhIFwicG93ZXJQcmVmZXJlbmNlXCJcbiAgICBsZXQgZGVzeW5jaHJvbml6ZWQgYSA9IEp2LkJvb2wuZ2V0IGEgXCJkZXN5bmNocm9uaXplZFwiXG4gIGVuZFxuXG4gIHR5cGUgdCA9IEp2LnRcbiAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgbGV0IGdldF9jb250ZXh0ID8oYXR0cnMgPSBKdi51bmRlZmluZWQpID8odjEgPSBmYWxzZSkgY252ID1cbiAgICBsZXQgd2ViZ2wgPSBKdi5vZl9zdHJpbmcgKGlmIHYxIHRoZW4gXCJ3ZWJnbFwiIGVsc2UgXCJ3ZWJnbDJcIikgaW5cbiAgICBKdi50b19vcHRpb24gRnVuLmlkIEBAXG4gICAgSnYuY2FsbCAoQ2FudmFzLnRvX2p2IGNudikgXCJnZXRDb250ZXh0XCIgSnYuW3wgd2ViZ2w7IGF0dHJzIHxdXG5cbiAgbGV0IGNyZWF0ZSA9IGdldF9jb250ZXh0XG5cbiAgbGV0IGNhbnZhcyBjID0gSnYuZmluZF9tYXAgQ2FudmFzLm9mX2p2IGMgXCJjYW52YXNcIlxuICBsZXQgYXR0cnMgYyA9IEp2LmNhbGwgYyBcImdldENvbnRleHRBdHRyaWJ1dGVzXCIgW3x8XVxuXG4gIGxldCBkcmF3aW5nX2J1ZmZlcl93aWR0aCBjID0gSnYuSW50LmdldCBjIFwiZHJhd2luZ0J1ZmZlcldpZHRoXCJcbiAgbGV0IGRyYXdpbmdfYnVmZmVyX2hlaWdodCBjID0gSnYuSW50LmdldCBjIFwiZHJhd2luZ0J1ZmZlckhlaWdodFwiXG4gIGxldCBpc19jb250ZXh0X2xvc3QgYyA9IEp2LkJvb2wuZ2V0IGMgXCJpc0NvbnRleHRMb3N0XCJcblxuICBsZXQgZ2V0X3N1cHBvcnRlZF9leHRlbnNpb25zIGMgPVxuICAgIEp2LnRvX2pzdHJfbGlzdCBAQCBKdi5jYWxsIGMgXCJnZXRTdXBwb3J0ZWRFeHRlbnNpb25zXCIgW3x8XVxuXG4gIGxldCBnZXRfZXh0ZW5zaW9uIGMgZXh0ID0gSnYuY2FsbCBjIFwiZ2V0RXh0ZW5zaW9uXCIgSnYuW3wgb2ZfanN0ciBleHQgfF1cblxuICAoKiBUeXBlcyAqKVxuXG4gIHR5cGUgZW51bSA9IGludFxuICB0eXBlIGJ1ZmZlciA9IEp2LnRcbiAgdHlwZSBmcmFtZWJ1ZmZlciA9IEp2LnRcbiAgdHlwZSBwcm9ncmFtID0gSnYudFxuICB0eXBlIHF1ZXJ5ID0gSnYudFxuICB0eXBlIHJlbmRlcmJ1ZmZlciA9IEp2LnRcbiAgdHlwZSBzYW1wbGVyID0gSnYudFxuICB0eXBlIHNoYWRlciA9IEp2LnRcbiAgdHlwZSBzeW5jID0gSnYudFxuICB0eXBlIHRleHR1cmUgPSBKdi50XG4gIHR5cGUgdHJhbnNmb3JtX2ZlZWRiYWNrID0gSnYudFxuICB0eXBlIHVuaWZvcm1fbG9jYXRpb24gPSBKdi50XG4gIHR5cGUgdmVydGV4X2FycmF5X29iamVjdCA9IEp2LnRcblxuICBtb2R1bGUgQWN0aXZlX2luZm8gPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKdi50XG4gICAgbGV0IHNpemUgaSA9IEp2LkludC5nZXQgaSBcInNpemVcIlxuICAgIGxldCB0eXBlJyBpID0gSnYuSW50LmdldCBpIFwidHlwZVwiXG4gICAgbGV0IG5hbWUgaSA9IEp2LkpzdHIuZ2V0IGkgXCJuYW1lXCJcbiAgZW5kXG5cbiAgbW9kdWxlIFNoYWRlcl9wcmVjaXNpb25fZm9ybWF0ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSnYudFxuICAgIGxldCByYW5nZV9taW4gZiA9IEp2LkludC5nZXQgZiBcInJhbmdlTWluXCJcbiAgICBsZXQgcmFuZ2VfbWF4IGYgPSBKdi5JbnQuZ2V0IGYgXCJyYW5nZU1heFwiXG4gICAgbGV0IHByZWNpc2lvbiBmID0gSnYuSW50LmdldCBmIFwicHJlY2lzaW9uXCJcbiAgZW5kXG5cbiAgbW9kdWxlIFRleF9pbWFnZV9zb3VyY2UgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKdi50XG4gICAgbGV0IG9mX2ltYWdlX2RhdGEgPSBDMmQuSW1hZ2VfZGF0YS50b19qdlxuICAgIGxldCBvZl9pbWdfZWwgPSBCcnIuRWwudG9fanZcbiAgICBsZXQgb2ZfY2FudmFzX2VsID0gQ2FudmFzLnRvX2p2XG4gICAgbGV0IG9mX3ZpZGVvX2VsID0gQnJyX2lvLk1lZGlhLkVsLnRvX2p2XG4gICAgbGV0IG9mX29mZnNjcmVlbl9jYW52YXMgPSBGdW4uaWRcbiAgZW5kXG5cbiAgKCogRnVuY3Rpb25zICopXG5cbiAgbGV0IGFjdGl2ZV90ZXh0dXJlIGMgdGV4dHVyZSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImFjdGl2ZVRleHR1cmVcIiBKdi5bfG9mX2ludCB0ZXh0dXJlfF1cblxuICBsZXQgYXR0YWNoX3NoYWRlciBjIHByb2dyYW0gc2hhZGVyID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiYXR0YWNoU2hhZGVyXCIgSnYuW3xwcm9ncmFtOyBzaGFkZXJ8XVxuXG4gIGxldCBiZWdpbl9xdWVyeSBjIHRhcmdldCBxdWVyeSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImJlZ2luUXVlcnlcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IHF1ZXJ5fF1cblxuICBsZXQgYmVnaW5fdHJhbnNmb3JtX2ZlZWRiYWNrIGMgcHJpbWl0aXZlTW9kZSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImJlZ2luVHJhbnNmb3JtRmVlZGJhY2tcIiBKdi5bfG9mX2ludCBwcmltaXRpdmVNb2RlfF1cblxuICBsZXQgYmluZF9hdHRyaWJfbG9jYXRpb24gYyBwcm9ncmFtIGluZGV4IG5hbWUgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJiaW5kQXR0cmliTG9jYXRpb25cIiBKdi5bfHByb2dyYW07IG9mX2ludCBpbmRleDsgb2ZfanN0ciBuYW1lfF1cblxuICBsZXQgYmluZF9idWZmZXIgYyB0YXJnZXQgYnVmZmVyID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiYmluZEJ1ZmZlclwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2Zfb3B0aW9uIH5ub25lOm51bGwgRnVuLmlkIGJ1ZmZlcnxdXG5cbiAgbGV0IGJpbmRfYnVmZmVyX2Jhc2UgYyB0YXJnZXQgaW5kZXggYnVmZmVyID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiYmluZEJ1ZmZlckJhc2VcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBpbmRleDsgYnVmZmVyfF1cblxuICBsZXQgYmluZF9idWZmZXJfcmFuZ2UgYyB0YXJnZXQgaW5kZXggYnVmZmVyIG9mZnNldCBzaXplID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiYmluZEJ1ZmZlclJhbmdlXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgaW5kZXg7IGJ1ZmZlcjsgb2ZfaW50IG9mZnNldDsgb2ZfaW50IHNpemV8XVxuXG4gIGxldCBiaW5kX2ZyYW1lYnVmZmVyIGMgdGFyZ2V0IGZyYW1lYnVmZmVyID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiYmluZEZyYW1lYnVmZmVyXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9vcHRpb24gfm5vbmU6bnVsbCBGdW4uaWQgZnJhbWVidWZmZXJ8XVxuXG4gIGxldCBiaW5kX3JlbmRlcmJ1ZmZlciBjIHRhcmdldCByZW5kZXJidWZmZXIgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJiaW5kUmVuZGVyYnVmZmVyXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9vcHRpb24gfm5vbmU6bnVsbCBGdW4uaWQgcmVuZGVyYnVmZmVyfF1cblxuICBsZXQgYmluZF9zYW1wbGVyIGMgdW5pdCBzYW1wbGVyID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiYmluZFNhbXBsZXJcIiBKdi5bfG9mX2ludCB1bml0OyBvZl9vcHRpb24gfm5vbmU6bnVsbCBGdW4uaWQgc2FtcGxlcnxdXG5cbiAgbGV0IGJpbmRfdGV4dHVyZSBjIHRhcmdldCB0ZXh0dXJlID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiYmluZFRleHR1cmVcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX29wdGlvbiB+bm9uZTpudWxsIEZ1bi5pZCB0ZXh0dXJlfF1cblxuICBsZXQgYmluZF90cmFuc2Zvcm1fZmVlZGJhY2sgYyB0YXJnZXQgdGYgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJiaW5kVHJhbnNmb3JtRmVlZGJhY2tcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX29wdGlvbiB+bm9uZTpudWxsIEZ1bi5pZCB0ZnxdXG5cbiAgbGV0IGJpbmRfdmVydGV4X2FycmF5IGMgYXJyYXkgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJiaW5kVmVydGV4QXJyYXlcIiBKdi5bfCBvZl9vcHRpb24gfm5vbmU6bnVsbCBGdW4uaWQgYXJyYXl8XVxuXG4gIGxldCBibGVuZF9jb2xvciBjIHJlZCBncmVlbiBibHVlIGFscGhhID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiYmxlbmRDb2xvclwiIEp2Llt8b2ZfZmxvYXQgcmVkOyBvZl9mbG9hdCBncmVlbjsgb2ZfZmxvYXQgYmx1ZTsgb2ZfZmxvYXQgYWxwaGF8XVxuXG4gIGxldCBibGVuZF9lcXVhdGlvbiBjIG1vZGUgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJibGVuZEVxdWF0aW9uXCIgSnYuW3xvZl9pbnQgbW9kZXxdXG5cbiAgbGV0IGJsZW5kX2VxdWF0aW9uX3NlcGFyYXRlIGMgbW9kZVJHQiBtb2RlQWxwaGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJibGVuZEVxdWF0aW9uU2VwYXJhdGVcIiBKdi5bfG9mX2ludCBtb2RlUkdCOyBvZl9pbnQgbW9kZUFscGhhfF1cblxuICBsZXQgYmxlbmRfZnVuYyBjIHNmYWN0b3IgZGZhY3RvciA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImJsZW5kRnVuY1wiIEp2Llt8b2ZfaW50IHNmYWN0b3I7IG9mX2ludCBkZmFjdG9yfF1cblxuICBsZXQgYmxlbmRfZnVuY19zZXBhcmF0ZSBjIHNyY1JHQiBkc3RSR0Igc3JjQWxwaGEgZHN0QWxwaGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJibGVuZEZ1bmNTZXBhcmF0ZVwiIEp2Llt8b2ZfaW50IHNyY1JHQjsgb2ZfaW50IGRzdFJHQjsgb2ZfaW50IHNyY0FscGhhOyBvZl9pbnQgZHN0QWxwaGF8XVxuXG4gIGxldCBibGl0X2ZyYW1lYnVmZmVyIGMgc3JjWDAgc3JjWTAgc3JjWDEgc3JjWTEgZHN0WDAgZHN0WTAgZHN0WDEgZHN0WTEgbWFzayBmaWx0ZXIgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJibGl0RnJhbWVidWZmZXJcIiBKdi5bfG9mX2ludCBzcmNYMDsgb2ZfaW50IHNyY1kwOyBvZl9pbnQgc3JjWDE7IG9mX2ludCBzcmNZMTsgb2ZfaW50IGRzdFgwOyBvZl9pbnQgZHN0WTA7IG9mX2ludCBkc3RYMTsgb2ZfaW50IGRzdFkxOyBvZl9pbnQgbWFzazsgb2ZfaW50IGZpbHRlcnxdXG5cbiAgbGV0IGJ1ZmZlcl9kYXRhIGMgdGFyZ2V0IHNyY0RhdGEgdXNhZ2UgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJidWZmZXJEYXRhXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBUYXJyYXkudG9fanYgc3JjRGF0YTsgb2ZfaW50IHVzYWdlfF1cblxuICBsZXQgYnVmZmVyX2RhdGFfc2l6ZSBjIHRhcmdldCBzaXplIHVzYWdlID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiYnVmZmVyRGF0YVwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IHNpemU7IG9mX2ludCB1c2FnZXxdXG5cbiAgbGV0IGJ1ZmZlcl9zdWJfZGF0YSBjIHRhcmdldCBkc3RCeXRlT2Zmc2V0IHNyY0RhdGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJidWZmZXJTdWJEYXRhXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgZHN0Qnl0ZU9mZnNldDsgVGFycmF5LnRvX2p2IHNyY0RhdGEgfF1cblxuICBsZXQgY2hlY2tfZnJhbWVidWZmZXJfc3RhdHVzIGMgdGFyZ2V0ID1cbiAgICBKdi50b19pbnQgQEAgSnYuY2FsbCBjIFwiY2hlY2tGcmFtZWJ1ZmZlclN0YXR1c1wiIEp2Llt8b2ZfaW50IHRhcmdldHxdXG5cbiAgbGV0IGNsZWFyIGMgbWFzayA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImNsZWFyXCIgSnYuW3xvZl9pbnQgbWFza3xdXG5cbiAgbGV0IGNsZWFyX2J1ZmZlcmZpIGMgYnVmZmVyIGRyYXdidWZmZXIgZGVwdGggc3RlbmNpbCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImNsZWFyQnVmZmVyZmlcIiBKdi5bfG9mX2ludCBidWZmZXI7IG9mX2ludCBkcmF3YnVmZmVyOyBvZl9mbG9hdCBkZXB0aDsgb2ZfaW50IHN0ZW5jaWx8XVxuXG4gIGxldCBjbGVhcl9idWZmZXJmdiBjIGJ1ZmZlciBkcmF3YnVmZmVyIHZhbHVlcyA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImNsZWFyQnVmZmVyZnZcIiBKdi5bfG9mX2ludCBidWZmZXI7IG9mX2ludCBkcmF3YnVmZmVyOyBUYXJyYXkudG9fanYgdmFsdWVzfF1cblxuICBsZXQgY2xlYXJfYnVmZmVyaXYgYyBidWZmZXIgZHJhd2J1ZmZlciB2YWx1ZXMgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJjbGVhckJ1ZmZlcml2XCIgSnYuW3xvZl9pbnQgYnVmZmVyOyBvZl9pbnQgZHJhd2J1ZmZlcjsgVGFycmF5LnRvX2p2IHZhbHVlc3xdXG5cbiAgbGV0IGNsZWFyX2J1ZmZlcnVpdiBjIGJ1ZmZlciBkcmF3YnVmZmVyIHZhbHVlcyA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImNsZWFyQnVmZmVydWl2XCIgSnYuW3xvZl9pbnQgYnVmZmVyOyBvZl9pbnQgZHJhd2J1ZmZlcjsgVGFycmF5LnRvX2p2IHZhbHVlc3xdXG5cbiAgbGV0IGNsZWFyX2NvbG9yIGMgcmVkIGdyZWVuIGJsdWUgYWxwaGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJjbGVhckNvbG9yXCIgSnYuW3xvZl9mbG9hdCByZWQ7IG9mX2Zsb2F0IGdyZWVuOyBvZl9mbG9hdCBibHVlOyBvZl9mbG9hdCBhbHBoYXxdXG5cbiAgbGV0IGNsZWFyX2RlcHRoIGMgZGVwdGggPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJjbGVhckRlcHRoXCIgSnYuW3xvZl9mbG9hdCBkZXB0aHxdXG5cbiAgbGV0IGNsZWFyX3N0ZW5jaWwgYyBzID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiY2xlYXJTdGVuY2lsXCIgSnYuW3xvZl9pbnQgc3xdXG5cbiAgbGV0IGNsaWVudF93YWl0X3N5bmMgYyBzeW5jIGZsYWdzIHRpbWVvdXQgPVxuICAgIEp2LnRvX2ludCBAQCBKdi5jYWxsIGMgXCJjbGllbnRXYWl0U3luY1wiIEp2Llt8c3luYzsgb2ZfaW50IGZsYWdzOyBvZl9pbnQgdGltZW91dHxdXG5cbiAgbGV0IGNvbG9yX21hc2sgYyByZWQgZ3JlZW4gYmx1ZSBhbHBoYSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImNvbG9yTWFza1wiIEp2Llt8SnYub2ZfYm9vbCByZWQ7IEp2Lm9mX2Jvb2wgZ3JlZW47IEp2Lm9mX2Jvb2wgYmx1ZTsgSnYub2ZfYm9vbCBhbHBoYXxdXG5cbiAgbGV0IGNvbXBpbGVfc2hhZGVyIGMgc2hhZGVyID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiY29tcGlsZVNoYWRlclwiIEp2Llt8c2hhZGVyfF1cblxuICBsZXQgY29tcHJlc3NlZF90ZXhfaW1hZ2UyZCBjIHRhcmdldCBsZXZlbCBpbnRlcm5hbGZvcm1hdCB3aWR0aCBoZWlnaHQgYm9yZGVyIHNyY0RhdGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJjb21wcmVzc2VkVGV4SW1hZ2UyRFwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGxldmVsOyBvZl9pbnQgaW50ZXJuYWxmb3JtYXQ7IG9mX2ludCB3aWR0aDsgb2ZfaW50IGhlaWdodDsgb2ZfaW50IGJvcmRlcjsgVGFycmF5LnRvX2p2IHNyY0RhdGF8XVxuXG4gIGxldCBjb21wcmVzc2VkX3RleF9pbWFnZTJkX3NpemUgYyB0YXJnZXQgbGV2ZWwgaW50ZXJuYWxmb3JtYXQgd2lkdGggaGVpZ2h0IGJvcmRlciBpbWFnZVNpemUgb2Zmc2V0ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiY29tcHJlc3NlZFRleEltYWdlMkRcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBsZXZlbDsgb2ZfaW50IGludGVybmFsZm9ybWF0OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHQ7IG9mX2ludCBib3JkZXI7IG9mX2ludCBpbWFnZVNpemU7IG9mX2ludCBvZmZzZXR8XVxuXG4gIGxldCBjb21wcmVzc2VkX3RleF9pbWFnZTNkIGMgdGFyZ2V0IGxldmVsIGludGVybmFsZm9ybWF0IHdpZHRoIGhlaWdodCBkZXB0aCBib3JkZXIgc3JjRGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImNvbXByZXNzZWRUZXhJbWFnZTNEXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgbGV2ZWw7IG9mX2ludCBpbnRlcm5hbGZvcm1hdDsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0OyBvZl9pbnQgZGVwdGg7IG9mX2ludCBib3JkZXI7IFRhcnJheS50b19qdiBzcmNEYXRhfF1cblxuICBsZXQgY29tcHJlc3NlZF90ZXhfaW1hZ2UzZF9zaXplIGMgdGFyZ2V0IGxldmVsIGludGVybmFsZm9ybWF0IHdpZHRoIGhlaWdodCBkZXB0aCBib3JkZXIgaW1hZ2VTaXplIG9mZnNldCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImNvbXByZXNzZWRUZXhJbWFnZTNEXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgbGV2ZWw7IG9mX2ludCBpbnRlcm5hbGZvcm1hdDsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0OyBvZl9pbnQgZGVwdGg7IG9mX2ludCBib3JkZXI7IG9mX2ludCBpbWFnZVNpemU7IG9mX2ludCBvZmZzZXR8XVxuXG4gIGxldCBjb21wcmVzc2VkX3RleF9zdWJfaW1hZ2UyZCBjIHRhcmdldCBsZXZlbCB4b2Zmc2V0IHlvZmZzZXQgd2lkdGggaGVpZ2h0IGZvcm1hdCBzcmNEYXRhID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiY29tcHJlc3NlZFRleFN1YkltYWdlMkRcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBsZXZlbDsgb2ZfaW50IHhvZmZzZXQ7IG9mX2ludCB5b2Zmc2V0OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHQ7IG9mX2ludCBmb3JtYXQ7IFRhcnJheS50b19qdiBzcmNEYXRhfF1cblxuICBsZXQgY29tcHJlc3NlZF90ZXhfc3ViX2ltYWdlMmRfc2l6ZSBjIHRhcmdldCBsZXZlbCB4b2Zmc2V0IHlvZmZzZXQgd2lkdGggaGVpZ2h0IGZvcm1hdCBpbWFnZVNpemUgb2Zmc2V0ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiY29tcHJlc3NlZFRleFN1YkltYWdlMkRcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBsZXZlbDsgb2ZfaW50IHhvZmZzZXQ7IG9mX2ludCB5b2Zmc2V0OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHQ7IG9mX2ludCBmb3JtYXQ7IG9mX2ludCBpbWFnZVNpemU7IG9mX2ludCBvZmZzZXR8XVxuXG4gIGxldCBjb21wcmVzc2VkX3RleF9zdWJfaW1hZ2UzZCBjIHRhcmdldCBsZXZlbCB4b2Zmc2V0IHlvZmZzZXQgem9mZnNldCB3aWR0aCBoZWlnaHQgZGVwdGggZm9ybWF0IHNyY0RhdGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGxldmVsOyBvZl9pbnQgeG9mZnNldDsgb2ZfaW50IHlvZmZzZXQ7IG9mX2ludCB6b2Zmc2V0OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHQ7IG9mX2ludCBkZXB0aDsgb2ZfaW50IGZvcm1hdDsgVGFycmF5LnRvX2p2IHNyY0RhdGF8XVxuXG4gIGxldCBjb21wcmVzc2VkX3RleF9zdWJfaW1hZ2UzZF9zaXplIGMgdGFyZ2V0IGxldmVsIHhvZmZzZXQgeW9mZnNldCB6b2Zmc2V0IHdpZHRoIGhlaWdodCBkZXB0aCBmb3JtYXQgaW1hZ2VTaXplIG9mZnNldCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImNvbXByZXNzZWRUZXhTdWJJbWFnZTNEXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgbGV2ZWw7IG9mX2ludCB4b2Zmc2V0OyBvZl9pbnQgeW9mZnNldDsgb2ZfaW50IHpvZmZzZXQ7IG9mX2ludCB3aWR0aDsgb2ZfaW50IGhlaWdodDsgb2ZfaW50IGRlcHRoOyBvZl9pbnQgZm9ybWF0OyBvZl9pbnQgaW1hZ2VTaXplOyBvZl9pbnQgb2Zmc2V0fF1cblxuICBsZXQgY29weV9idWZmZXJfc3ViX2RhdGEgYyByZWFkVGFyZ2V0IHdyaXRlVGFyZ2V0IHJlYWRPZmZzZXQgd3JpdGVPZmZzZXQgc2l6ZSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImNvcHlCdWZmZXJTdWJEYXRhXCIgSnYuW3xvZl9pbnQgcmVhZFRhcmdldDsgb2ZfaW50IHdyaXRlVGFyZ2V0OyBvZl9pbnQgcmVhZE9mZnNldDsgb2ZfaW50IHdyaXRlT2Zmc2V0OyBvZl9pbnQgc2l6ZXxdXG5cbiAgbGV0IGNvcHlfdGV4X2ltYWdlMmQgYyB0YXJnZXQgbGV2ZWwgaW50ZXJuYWxmb3JtYXQgeCB5IHdpZHRoIGhlaWdodCBib3JkZXIgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJjb3B5VGV4SW1hZ2UyRFwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGxldmVsOyBvZl9pbnQgaW50ZXJuYWxmb3JtYXQ7IG9mX2ludCB4OyBvZl9pbnQgeTsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0OyBvZl9pbnQgYm9yZGVyfF1cblxuICBsZXQgY29weV90ZXhfc3ViX2ltYWdlMmQgYyB0YXJnZXQgbGV2ZWwgeG9mZnNldCB5b2Zmc2V0IHggeSB3aWR0aCBoZWlnaHQgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJjb3B5VGV4U3ViSW1hZ2UyRFwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGxldmVsOyBvZl9pbnQgeG9mZnNldDsgb2ZfaW50IHlvZmZzZXQ7IG9mX2ludCB4OyBvZl9pbnQgeTsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0fF1cblxuICBsZXQgY29weV90ZXhfc3ViX2ltYWdlM2QgYyB0YXJnZXQgbGV2ZWwgeG9mZnNldCB5b2Zmc2V0IHpvZmZzZXQgeCB5IHdpZHRoIGhlaWdodCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImNvcHlUZXhTdWJJbWFnZTNEXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgbGV2ZWw7IG9mX2ludCB4b2Zmc2V0OyBvZl9pbnQgeW9mZnNldDsgb2ZfaW50IHpvZmZzZXQ7IG9mX2ludCB4OyBvZl9pbnQgeTsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0fF1cblxuICBsZXQgY3JlYXRlX2J1ZmZlciBjICA9XG4gICAgSnYuY2FsbCBjIFwiY3JlYXRlQnVmZmVyXCIgSnYuW3x8XVxuXG4gIGxldCBjcmVhdGVfZnJhbWVidWZmZXIgYyAgPVxuICAgIEp2LmNhbGwgYyBcImNyZWF0ZUZyYW1lYnVmZmVyXCIgSnYuW3x8XVxuXG4gIGxldCBjcmVhdGVfcHJvZ3JhbSBjICA9XG4gICAgSnYuY2FsbCBjIFwiY3JlYXRlUHJvZ3JhbVwiIEp2Llt8fF1cblxuICBsZXQgY3JlYXRlX3F1ZXJ5IGMgID1cbiAgICBKdi5jYWxsIGMgXCJjcmVhdGVRdWVyeVwiIEp2Llt8fF1cblxuICBsZXQgY3JlYXRlX3JlbmRlcmJ1ZmZlciBjICA9XG4gICAgSnYuY2FsbCBjIFwiY3JlYXRlUmVuZGVyYnVmZmVyXCIgSnYuW3x8XVxuXG4gIGxldCBjcmVhdGVfc2FtcGxlciBjICA9XG4gICAgSnYuY2FsbCBjIFwiY3JlYXRlU2FtcGxlclwiIEp2Llt8fF1cblxuICBsZXQgY3JlYXRlX3NoYWRlciBjIHR5cGUnID1cbiAgICBKdi5jYWxsIGMgXCJjcmVhdGVTaGFkZXJcIiBKdi5bfG9mX2ludCB0eXBlJ3xdXG5cbiAgbGV0IGNyZWF0ZV90ZXh0dXJlIGMgID1cbiAgICBKdi5jYWxsIGMgXCJjcmVhdGVUZXh0dXJlXCIgSnYuW3x8XVxuXG4gIGxldCBjcmVhdGVfdHJhbnNmb3JtX2ZlZWRiYWNrIGMgID1cbiAgICBKdi5jYWxsIGMgXCJjcmVhdGVUcmFuc2Zvcm1GZWVkYmFja1wiIEp2Llt8fF1cblxuICBsZXQgY3JlYXRlX3ZlcnRleF9hcnJheSBjICA9XG4gICAgSnYuY2FsbCBjIFwiY3JlYXRlVmVydGV4QXJyYXlcIiBKdi5bfHxdXG5cbiAgbGV0IGN1bGxfZmFjZSBjIG1vZGUgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJjdWxsRmFjZVwiIEp2Llt8b2ZfaW50IG1vZGV8XVxuXG4gIGxldCBkZWxldGVfYnVmZmVyIGMgYnVmZmVyID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZGVsZXRlQnVmZmVyXCIgSnYuW3xidWZmZXJ8XVxuXG4gIGxldCBkZWxldGVfZnJhbWVidWZmZXIgYyBmcmFtZWJ1ZmZlciA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImRlbGV0ZUZyYW1lYnVmZmVyXCIgSnYuW3xmcmFtZWJ1ZmZlcnxdXG5cbiAgbGV0IGRlbGV0ZV9wcm9ncmFtIGMgcHJvZ3JhbSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImRlbGV0ZVByb2dyYW1cIiBKdi5bfHByb2dyYW18XVxuXG4gIGxldCBkZWxldGVfcXVlcnkgYyBxdWVyeSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImRlbGV0ZVF1ZXJ5XCIgSnYuW3xxdWVyeXxdXG5cbiAgbGV0IGRlbGV0ZV9yZW5kZXJidWZmZXIgYyByZW5kZXJidWZmZXIgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJkZWxldGVSZW5kZXJidWZmZXJcIiBKdi5bfHJlbmRlcmJ1ZmZlcnxdXG5cbiAgbGV0IGRlbGV0ZV9zYW1wbGVyIGMgc2FtcGxlciA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImRlbGV0ZVNhbXBsZXJcIiBKdi5bfHNhbXBsZXJ8XVxuXG4gIGxldCBkZWxldGVfc2hhZGVyIGMgc2hhZGVyID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZGVsZXRlU2hhZGVyXCIgSnYuW3xzaGFkZXJ8XVxuXG4gIGxldCBkZWxldGVfc3luYyBjIHN5bmMgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJkZWxldGVTeW5jXCIgSnYuW3xzeW5jfF1cblxuICBsZXQgZGVsZXRlX3RleHR1cmUgYyB0ZXh0dXJlID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZGVsZXRlVGV4dHVyZVwiIEp2Llt8dGV4dHVyZXxdXG5cbiAgbGV0IGRlbGV0ZV90cmFuc2Zvcm1fZmVlZGJhY2sgYyB0ZiA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrXCIgSnYuW3x0ZnxdXG5cbiAgbGV0IGRlbGV0ZV92ZXJ0ZXhfYXJyYXkgYyB2ZXJ0ZXhBcnJheSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImRlbGV0ZVZlcnRleEFycmF5XCIgSnYuW3x2ZXJ0ZXhBcnJheXxdXG5cbiAgbGV0IGRlcHRoX2Z1bmMgYyBmdW5jID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZGVwdGhGdW5jXCIgSnYuW3xvZl9pbnQgZnVuY3xdXG5cbiAgbGV0IGRlcHRoX21hc2sgYyBmbGFnID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZGVwdGhNYXNrXCIgSnYuW3xKdi5vZl9ib29sIGZsYWd8XVxuXG4gIGxldCBkZXB0aF9yYW5nZSBjIHpOZWFyIHpGYXIgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJkZXB0aFJhbmdlXCIgSnYuW3xvZl9mbG9hdCB6TmVhcjsgb2ZfZmxvYXQgekZhcnxdXG5cbiAgbGV0IGRldGFjaF9zaGFkZXIgYyBwcm9ncmFtIHNoYWRlciA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImRldGFjaFNoYWRlclwiIEp2Llt8cHJvZ3JhbTsgc2hhZGVyfF1cblxuICBsZXQgZGlzYWJsZSBjIGNhcCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImRpc2FibGVcIiBKdi5bfG9mX2ludCBjYXB8XVxuXG4gIGxldCBkaXNhYmxlX3ZlcnRleF9hdHRyaWJfYXJyYXkgYyBpbmRleCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheVwiIEp2Llt8b2ZfaW50IGluZGV4fF1cblxuICBsZXQgZHJhd19hcnJheXMgYyBtb2RlIGZpcnN0IGNvdW50ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZHJhd0FycmF5c1wiIEp2Llt8b2ZfaW50IG1vZGU7IG9mX2ludCBmaXJzdDsgb2ZfaW50IGNvdW50fF1cblxuICBsZXQgZHJhd19hcnJheXNfaW5zdGFuY2VkIGMgbW9kZSBmaXJzdCBjb3VudCBpbnN0YW5jZUNvdW50ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZHJhd0FycmF5c0luc3RhbmNlZFwiIEp2Llt8b2ZfaW50IG1vZGU7IG9mX2ludCBmaXJzdDsgb2ZfaW50IGNvdW50OyBvZl9pbnQgaW5zdGFuY2VDb3VudHxdXG5cbiAgbGV0IGRyYXdfYnVmZmVycyBjIGJ1ZmZlcnMgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJkcmF3QnVmZmVyc1wiIEp2Llt8b2ZfbGlzdCBvZl9pbnQgYnVmZmVyc3xdXG5cbiAgbGV0IGRyYXdfZWxlbWVudHMgYyBtb2RlIGNvdW50IHR5cGUnIG9mZnNldCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImRyYXdFbGVtZW50c1wiIEp2Llt8b2ZfaW50IG1vZGU7IG9mX2ludCBjb3VudDsgb2ZfaW50IHR5cGUnOyBvZl9pbnQgb2Zmc2V0fF1cblxuICBsZXQgZHJhd19lbGVtZW50c19pbnN0YW5jZWQgYyBtb2RlIGNvdW50IHR5cGUnIG9mZnNldCBpbnN0YW5jZUNvdW50ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZHJhd0VsZW1lbnRzSW5zdGFuY2VkXCIgSnYuW3xvZl9pbnQgbW9kZTsgb2ZfaW50IGNvdW50OyBvZl9pbnQgdHlwZSc7IG9mX2ludCBvZmZzZXQ7IG9mX2ludCBpbnN0YW5jZUNvdW50fF1cblxuICBsZXQgZHJhd19yYW5nZV9lbGVtZW50cyBjIG1vZGUgc3RhcnQgZW5kJyBjb3VudCB0eXBlJyBvZmZzZXQgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJkcmF3UmFuZ2VFbGVtZW50c1wiIEp2Llt8b2ZfaW50IG1vZGU7IG9mX2ludCBzdGFydDsgb2ZfaW50IGVuZCc7IG9mX2ludCBjb3VudDsgb2ZfaW50IHR5cGUnOyBvZl9pbnQgb2Zmc2V0fF1cblxuICBsZXQgZW5hYmxlIGMgY2FwID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZW5hYmxlXCIgSnYuW3xvZl9pbnQgY2FwfF1cblxuICBsZXQgZW5hYmxlX3ZlcnRleF9hdHRyaWJfYXJyYXkgYyBpbmRleCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImVuYWJsZVZlcnRleEF0dHJpYkFycmF5XCIgSnYuW3xvZl9pbnQgaW5kZXh8XVxuXG4gIGxldCBlbmRfcXVlcnkgYyB0YXJnZXQgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJlbmRRdWVyeVwiIEp2Llt8b2ZfaW50IHRhcmdldHxdXG5cbiAgbGV0IGVuZF90cmFuc2Zvcm1fZmVlZGJhY2sgYyAgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJlbmRUcmFuc2Zvcm1GZWVkYmFja1wiIEp2Llt8fF1cblxuICBsZXQgZmVuY2Vfc3luYyBjIGNvbmRpdGlvbiBmbGFncyA9XG4gICAgSnYuY2FsbCBjIFwiZmVuY2VTeW5jXCIgSnYuW3xvZl9pbnQgY29uZGl0aW9uOyBvZl9pbnQgZmxhZ3N8XVxuXG4gIGxldCBmaW5pc2ggYyAgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJmaW5pc2hcIiBKdi5bfHxdXG5cbiAgbGV0IGZsdXNoIGMgID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZmx1c2hcIiBKdi5bfHxdXG5cbiAgbGV0IGZyYW1lYnVmZmVyX3JlbmRlcmJ1ZmZlciBjIHRhcmdldCBhdHRhY2htZW50IHJlbmRlcmJ1ZmZlcnRhcmdldCByZW5kZXJidWZmZXIgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlclwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGF0dGFjaG1lbnQ7IG9mX2ludCByZW5kZXJidWZmZXJ0YXJnZXQ7IHJlbmRlcmJ1ZmZlcnxdXG5cbiAgbGV0IGZyYW1lYnVmZmVyX3RleHR1cmUyZCBjIHRhcmdldCBhdHRhY2htZW50IHRleHRhcmdldCB0ZXh0dXJlIGxldmVsID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZnJhbWVidWZmZXJUZXh0dXJlMkRcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBhdHRhY2htZW50OyBvZl9pbnQgdGV4dGFyZ2V0OyB0ZXh0dXJlOyBvZl9pbnQgbGV2ZWx8XVxuXG4gIGxldCBmcmFtZWJ1ZmZlcl90ZXh0dXJlX2xheWVyIGMgdGFyZ2V0IGF0dGFjaG1lbnQgdGV4dHVyZSBsZXZlbCBsYXllciA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImZyYW1lYnVmZmVyVGV4dHVyZUxheWVyXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgYXR0YWNobWVudDsgdGV4dHVyZTsgb2ZfaW50IGxldmVsOyBvZl9pbnQgbGF5ZXJ8XVxuXG4gIGxldCBmcm9udF9mYWNlIGMgbW9kZSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImZyb250RmFjZVwiIEp2Llt8b2ZfaW50IG1vZGV8XVxuXG4gIGxldCBnZW5lcmF0ZV9taXBtYXAgYyB0YXJnZXQgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJnZW5lcmF0ZU1pcG1hcFwiIEp2Llt8b2ZfaW50IHRhcmdldHxdXG5cbiAgbGV0IGdldF9hY3RpdmVfYXR0cmliIGMgcHJvZ3JhbSBpbmRleCA9XG4gICAgSnYuY2FsbCBjIFwiZ2V0QWN0aXZlQXR0cmliXCIgSnYuW3xwcm9ncmFtOyBvZl9pbnQgaW5kZXh8XVxuXG4gIGxldCBnZXRfYWN0aXZlX3VuaWZvcm0gYyBwcm9ncmFtIGluZGV4ID1cbiAgICBKdi5jYWxsIGMgXCJnZXRBY3RpdmVVbmlmb3JtXCIgSnYuW3xwcm9ncmFtOyBvZl9pbnQgaW5kZXh8XVxuXG4gIGxldCBnZXRfYWN0aXZlX3VuaWZvcm1fYmxvY2tfbmFtZSBjIHByb2dyYW0gdW5pZm9ybUJsb2NrSW5kZXggPVxuICAgIEp2LnRvX2pzdHIgQEAgSnYuY2FsbCBjIFwiZ2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZVwiIEp2Llt8cHJvZ3JhbTsgb2ZfaW50IHVuaWZvcm1CbG9ja0luZGV4fF1cblxuICBsZXQgZ2V0X2FjdGl2ZV91bmlmb3JtX2Jsb2NrX3BhcmFtZXRlciBjIHByb2dyYW0gdW5pZm9ybUJsb2NrSW5kZXggcG5hbWUgPVxuICAgIEp2LmNhbGwgYyBcImdldEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRlclwiIEp2Llt8cHJvZ3JhbTsgb2ZfaW50IHVuaWZvcm1CbG9ja0luZGV4OyBvZl9pbnQgcG5hbWV8XVxuXG4gIGxldCBnZXRfYWN0aXZlX3VuaWZvcm1zIGMgcHJvZ3JhbSB1bmlmb3JtSW5kaWNlcyBwbmFtZSA9XG4gICAgSnYuY2FsbCBjIFwiZ2V0QWN0aXZlVW5pZm9ybXNcIiBKdi5bfHByb2dyYW07IG9mX2xpc3Qgb2ZfaW50IHVuaWZvcm1JbmRpY2VzOyBvZl9pbnQgcG5hbWV8XVxuXG4gIGxldCBnZXRfYXR0YWNoZWRfc2hhZGVycyBjIHByb2dyYW0gPVxuICAgIEp2LnRvX2p2X2xpc3QgQEAgSnYuY2FsbCBjIFwiZ2V0QXR0YWNoZWRTaGFkZXJzXCIgSnYuW3xwcm9ncmFtfF1cblxuICBsZXQgZ2V0X2F0dHJpYl9sb2NhdGlvbiBjIHByb2dyYW0gbmFtZSA9XG4gICAgSnYudG9faW50IEBAIEp2LmNhbGwgYyBcImdldEF0dHJpYkxvY2F0aW9uXCIgSnYuW3xwcm9ncmFtOyBvZl9qc3RyIG5hbWV8XVxuXG4gIGxldCBnZXRfYnVmZmVyX3BhcmFtZXRlciBjIHRhcmdldCBwbmFtZSA9XG4gICAgSnYuY2FsbCBjIFwiZ2V0QnVmZmVyUGFyYW1ldGVyXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgcG5hbWV8XVxuXG4gIGxldCBnZXRfYnVmZmVyX3N1Yl9kYXRhIGMgdGFyZ2V0IHNyY0J5dGVPZmZzZXQgZHN0QnVmZmVyID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZ2V0QnVmZmVyU3ViRGF0YVwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IHNyY0J5dGVPZmZzZXQ7IFRhcnJheS50b19qdiBkc3RCdWZmZXJ8XVxuXG4gIGxldCBnZXRfZXJyb3IgYyAgPVxuICAgIEp2LnRvX2ludCBAQCBKdi5jYWxsIGMgXCJnZXRFcnJvclwiIEp2Llt8fF1cblxuICBsZXQgZ2V0X2ZyYWdfZGF0YV9sb2NhdGlvbiBjIHByb2dyYW0gbmFtZSA9XG4gICAgSnYudG9faW50IEBAIEp2LmNhbGwgYyBcImdldEZyYWdEYXRhTG9jYXRpb25cIiBKdi5bfHByb2dyYW07IG9mX2pzdHIgbmFtZXxdXG5cbiAgbGV0IGdldF9mcmFtZWJ1ZmZlcl9hdHRhY2htZW50X3BhcmFtZXRlciBjIHRhcmdldCBhdHRhY2htZW50IHBuYW1lID1cbiAgICBKdi5jYWxsIGMgXCJnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBhdHRhY2htZW50OyBvZl9pbnQgcG5hbWV8XVxuXG4gIGxldCBnZXRfaW5kZXhlZF9wYXJhbWV0ZXIgYyB0YXJnZXQgaW5kZXggPVxuICAgIEp2LmNhbGwgYyBcImdldEluZGV4ZWRQYXJhbWV0ZXJcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBpbmRleHxdXG5cbiAgbGV0IGdldF9pbnRlcm5hbGZvcm1hdF9wYXJhbWV0ZXIgYyB0YXJnZXQgaW50ZXJuYWxmb3JtYXQgcG5hbWUgPVxuICAgIEp2LmNhbGwgYyBcImdldEludGVybmFsZm9ybWF0UGFyYW1ldGVyXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgaW50ZXJuYWxmb3JtYXQ7IG9mX2ludCBwbmFtZXxdXG5cbiAgbGV0IGdldF9wYXJhbWV0ZXIgYyBwbmFtZSA9XG4gICAgSnYuY2FsbCBjIFwiZ2V0UGFyYW1ldGVyXCIgSnYuW3xvZl9pbnQgcG5hbWV8XVxuXG4gIGxldCBnZXRfcHJvZ3JhbV9pbmZvX2xvZyBjIHByb2dyYW0gPVxuICAgIEp2LnRvX2pzdHIgQEAgSnYuY2FsbCBjIFwiZ2V0UHJvZ3JhbUluZm9Mb2dcIiBKdi5bfHByb2dyYW18XVxuXG4gIGxldCBnZXRfcHJvZ3JhbV9wYXJhbWV0ZXIgYyBwcm9ncmFtIHBuYW1lID1cbiAgICBKdi5jYWxsIGMgXCJnZXRQcm9ncmFtUGFyYW1ldGVyXCIgSnYuW3xwcm9ncmFtOyBvZl9pbnQgcG5hbWV8XVxuXG4gIGxldCBnZXRfcXVlcnkgYyB0YXJnZXQgcG5hbWUgPVxuICAgIEp2LmNhbGwgYyBcImdldFF1ZXJ5XCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgcG5hbWV8XVxuXG4gIGxldCBnZXRfcXVlcnlfcGFyYW1ldGVyIGMgcXVlcnkgcG5hbWUgPVxuICAgIEp2LmNhbGwgYyBcImdldFF1ZXJ5UGFyYW1ldGVyXCIgSnYuW3xxdWVyeTsgb2ZfaW50IHBuYW1lfF1cblxuICBsZXQgZ2V0X3JlbmRlcmJ1ZmZlcl9wYXJhbWV0ZXIgYyB0YXJnZXQgcG5hbWUgPVxuICAgIEp2LmNhbGwgYyBcImdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlclwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IHBuYW1lfF1cblxuICBsZXQgZ2V0X3NhbXBsZXJfcGFyYW1ldGVyIGMgc2FtcGxlciBwbmFtZSA9XG4gICAgSnYuY2FsbCBjIFwiZ2V0U2FtcGxlclBhcmFtZXRlclwiIEp2Llt8c2FtcGxlcjsgb2ZfaW50IHBuYW1lfF1cblxuICBsZXQgZ2V0X3NoYWRlcl9pbmZvX2xvZyBjIHNoYWRlciA9XG4gICAgSnYudG9fanN0ciBAQCBKdi5jYWxsIGMgXCJnZXRTaGFkZXJJbmZvTG9nXCIgSnYuW3xzaGFkZXJ8XVxuXG4gIGxldCBnZXRfc2hhZGVyX3BhcmFtZXRlciBjIHNoYWRlciBwbmFtZSA9XG4gICAgSnYuY2FsbCBjIFwiZ2V0U2hhZGVyUGFyYW1ldGVyXCIgSnYuW3xzaGFkZXI7IG9mX2ludCBwbmFtZXxdXG5cbiAgbGV0IGdldF9zaGFkZXJfcHJlY2lzaW9uX2Zvcm1hdCBjIHNoYWRlcnR5cGUgcHJlY2lzaW9udHlwZSA9XG4gICAgSnYuY2FsbCBjIFwiZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0XCIgSnYuW3xvZl9pbnQgc2hhZGVydHlwZTsgb2ZfaW50IHByZWNpc2lvbnR5cGV8XVxuXG4gIGxldCBnZXRfc2hhZGVyX3NvdXJjZSBjIHNoYWRlciA9XG4gICAgSnYudG9fanN0ciBAQCBKdi5jYWxsIGMgXCJnZXRTaGFkZXJTb3VyY2VcIiBKdi5bfHNoYWRlcnxdXG5cbiAgbGV0IGdldF9zeW5jX3BhcmFtZXRlciBjIHN5bmMgcG5hbWUgPVxuICAgIEp2LmNhbGwgYyBcImdldFN5bmNQYXJhbWV0ZXJcIiBKdi5bfHN5bmM7IG9mX2ludCBwbmFtZXxdXG5cbiAgbGV0IGdldF90ZXhfcGFyYW1ldGVyIGMgdGFyZ2V0IHBuYW1lID1cbiAgICBKdi5jYWxsIGMgXCJnZXRUZXhQYXJhbWV0ZXJcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBwbmFtZXxdXG5cbiAgbGV0IGdldF90cmFuc2Zvcm1fZmVlZGJhY2tfdmFyeWluZyBjIHByb2dyYW0gaW5kZXggPVxuICAgIEp2LmNhbGwgYyBcImdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ1wiIEp2Llt8cHJvZ3JhbTsgb2ZfaW50IGluZGV4fF1cblxuICBsZXQgZ2V0X3VuaWZvcm0gYyBwcm9ncmFtIGxvY2F0aW9uID1cbiAgICBKdi5jYWxsIGMgXCJnZXRVbmlmb3JtXCIgSnYuW3xwcm9ncmFtOyBsb2NhdGlvbnxdXG5cbiAgbGV0IGdldF91bmlmb3JtX2Jsb2NrX2luZGV4IGMgcHJvZ3JhbSB1bmlmb3JtQmxvY2tOYW1lID1cbiAgICBKdi50b19pbnQgQEAgSnYuY2FsbCBjIFwiZ2V0VW5pZm9ybUJsb2NrSW5kZXhcIiBKdi5bfHByb2dyYW07IG9mX2pzdHIgdW5pZm9ybUJsb2NrTmFtZXxdXG5cbiAgbGV0IGdldF91bmlmb3JtX2luZGljZXMgYyBwcm9ncmFtIHVuaWZvcm1OYW1lcyA9XG4gICAgSnYudG9fbGlzdCBKdi50b19pbnQgQEAgSnYuY2FsbCBjIFwiZ2V0VW5pZm9ybUluZGljZXNcIiBKdi5bfHByb2dyYW07IG9mX2pzdHJfbGlzdCB1bmlmb3JtTmFtZXN8XVxuXG4gIGxldCBnZXRfdW5pZm9ybV9sb2NhdGlvbiBjIHByb2dyYW0gbmFtZSA9XG4gICAgSnYuY2FsbCBjIFwiZ2V0VW5pZm9ybUxvY2F0aW9uXCIgSnYuW3xwcm9ncmFtOyBvZl9qc3RyIG5hbWV8XVxuXG4gIGxldCBnZXRfdmVydGV4X2F0dHJpYiBjIGluZGV4IHBuYW1lID1cbiAgICBKdi5jYWxsIGMgXCJnZXRWZXJ0ZXhBdHRyaWJcIiBKdi5bfG9mX2ludCBpbmRleDsgb2ZfaW50IHBuYW1lfF1cblxuICBsZXQgZ2V0X3ZlcnRleF9hdHRyaWJfb2Zmc2V0IGMgaW5kZXggcG5hbWUgPVxuICAgIEp2LnRvX2ludCBAQCBKdi5jYWxsIGMgXCJnZXRWZXJ0ZXhBdHRyaWJPZmZzZXRcIiBKdi5bfG9mX2ludCBpbmRleDsgb2ZfaW50IHBuYW1lfF1cblxuICBsZXQgaGludCBjIHRhcmdldCBtb2RlID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiaGludFwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IG1vZGV8XVxuXG4gIGxldCBpbnZhbGlkYXRlX2ZyYW1lYnVmZmVyIGMgdGFyZ2V0IGF0dGFjaG1lbnRzID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiaW52YWxpZGF0ZUZyYW1lYnVmZmVyXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9saXN0IG9mX2ludCBhdHRhY2htZW50c3xdXG5cbiAgbGV0IGludmFsaWRhdGVfc3ViX2ZyYW1lYnVmZmVyIGMgdGFyZ2V0IGF0dGFjaG1lbnRzIHggeSB3aWR0aCBoZWlnaHQgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJpbnZhbGlkYXRlU3ViRnJhbWVidWZmZXJcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2xpc3Qgb2ZfaW50IGF0dGFjaG1lbnRzOyBvZl9pbnQgeDsgb2ZfaW50IHk7IG9mX2ludCB3aWR0aDsgb2ZfaW50IGhlaWdodHxdXG5cbiAgbGV0IGlzX2J1ZmZlciBjIGJ1ZmZlciA9XG4gICAgSnYudG9fYm9vbCBAQCBKdi5jYWxsIGMgXCJpc0J1ZmZlclwiIEp2Llt8YnVmZmVyfF1cblxuICBsZXQgaXNfZW5hYmxlZCBjIGNhcCA9XG4gICAgSnYudG9fYm9vbCBAQCBKdi5jYWxsIGMgXCJpc0VuYWJsZWRcIiBKdi5bfG9mX2ludCBjYXB8XVxuXG4gIGxldCBpc19mcmFtZWJ1ZmZlciBjIGZyYW1lYnVmZmVyID1cbiAgICBKdi50b19ib29sIEBAIEp2LmNhbGwgYyBcImlzRnJhbWVidWZmZXJcIiBKdi5bfGZyYW1lYnVmZmVyfF1cblxuICBsZXQgaXNfcHJvZ3JhbSBjIHByb2dyYW0gPVxuICAgIEp2LnRvX2Jvb2wgQEAgSnYuY2FsbCBjIFwiaXNQcm9ncmFtXCIgSnYuW3xwcm9ncmFtfF1cblxuICBsZXQgaXNfcXVlcnkgYyBxdWVyeSA9XG4gICAgSnYudG9fYm9vbCBAQCBKdi5jYWxsIGMgXCJpc1F1ZXJ5XCIgSnYuW3xxdWVyeXxdXG5cbiAgbGV0IGlzX3JlbmRlcmJ1ZmZlciBjIHJlbmRlcmJ1ZmZlciA9XG4gICAgSnYudG9fYm9vbCBAQCBKdi5jYWxsIGMgXCJpc1JlbmRlcmJ1ZmZlclwiIEp2Llt8cmVuZGVyYnVmZmVyfF1cblxuICBsZXQgaXNfc2FtcGxlciBjIHNhbXBsZXIgPVxuICAgIEp2LnRvX2Jvb2wgQEAgSnYuY2FsbCBjIFwiaXNTYW1wbGVyXCIgSnYuW3xzYW1wbGVyfF1cblxuICBsZXQgaXNfc2hhZGVyIGMgc2hhZGVyID1cbiAgICBKdi50b19ib29sIEBAIEp2LmNhbGwgYyBcImlzU2hhZGVyXCIgSnYuW3xzaGFkZXJ8XVxuXG4gIGxldCBpc190ZXh0dXJlIGMgdGV4dHVyZSA9XG4gICAgSnYudG9fYm9vbCBAQCBKdi5jYWxsIGMgXCJpc1RleHR1cmVcIiBKdi5bfHRleHR1cmV8XVxuXG4gIGxldCBpc190cmFuc2Zvcm1fZmVlZGJhY2sgYyB0ZiA9XG4gICAgSnYudG9fYm9vbCBAQCBKdi5jYWxsIGMgXCJpc1RyYW5zZm9ybUZlZWRiYWNrXCIgSnYuW3x0ZnxdXG5cbiAgbGV0IGlzX3ZlcnRleF9hcnJheSBjIHZlcnRleEFycmF5ID1cbiAgICBKdi50b19ib29sIEBAIEp2LmNhbGwgYyBcImlzVmVydGV4QXJyYXlcIiBKdi5bfHZlcnRleEFycmF5fF1cblxuICBsZXQgbGluZV93aWR0aCBjIHdpZHRoID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwibGluZVdpZHRoXCIgSnYuW3xvZl9mbG9hdCB3aWR0aHxdXG5cbiAgbGV0IGxpbmtfcHJvZ3JhbSBjIHByb2dyYW0gPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJsaW5rUHJvZ3JhbVwiIEp2Llt8cHJvZ3JhbXxdXG5cbiAgbGV0IHBhdXNlX3RyYW5zZm9ybV9mZWVkYmFjayBjICA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInBhdXNlVHJhbnNmb3JtRmVlZGJhY2tcIiBKdi5bfHxdXG5cbiAgbGV0IHBpeGVsX3N0b3JlaSBjIHBuYW1lIHBhcmFtID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwicGl4ZWxTdG9yZWlcIiBKdi5bfG9mX2ludCBwbmFtZTsgb2ZfaW50IHBhcmFtfF1cblxuICBsZXQgcG9seWdvbl9vZmZzZXQgYyBmYWN0b3IgdW5pdHMgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJwb2x5Z29uT2Zmc2V0XCIgSnYuW3xvZl9mbG9hdCBmYWN0b3I7IG9mX2Zsb2F0IHVuaXRzfF1cblxuICBsZXQgcmVhZF9idWZmZXIgYyBzcmMgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJyZWFkQnVmZmVyXCIgSnYuW3xvZl9pbnQgc3JjfF1cblxuICBsZXQgcmVhZF9waXhlbHNfdG9fcGl4ZWxfcGFjayBjIHggeSB3aWR0aCBoZWlnaHQgZm9ybWF0IHR5cGUnIG9mZnNldCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInJlYWRQaXhlbHNcIiBKdi5bfG9mX2ludCB4OyBvZl9pbnQgeTsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0OyBvZl9pbnQgZm9ybWF0OyBvZl9pbnQgdHlwZSc7IG9mX2ludCBvZmZzZXR8XVxuXG4gIGxldCByZWFkX3BpeGVscyBjIHggeSB3aWR0aCBoZWlnaHQgZm9ybWF0IHR5cGUnIGRzdERhdGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJyZWFkUGl4ZWxzXCIgSnYuW3xvZl9pbnQgeDsgb2ZfaW50IHk7IG9mX2ludCB3aWR0aDsgb2ZfaW50IGhlaWdodDsgb2ZfaW50IGZvcm1hdDsgb2ZfaW50IHR5cGUnOyBUYXJyYXkudG9fanYgZHN0RGF0YXxdXG5cbiAgbGV0IHJlbmRlcmJ1ZmZlcl9zdG9yYWdlIGMgdGFyZ2V0IGludGVybmFsZm9ybWF0IHdpZHRoIGhlaWdodCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInJlbmRlcmJ1ZmZlclN0b3JhZ2VcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBpbnRlcm5hbGZvcm1hdDsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0fF1cblxuICBsZXQgcmVuZGVyYnVmZmVyX3N0b3JhZ2VfbXVsdGlzYW1wbGUgYyB0YXJnZXQgc2FtcGxlcyBpbnRlcm5hbGZvcm1hdCB3aWR0aCBoZWlnaHQgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBzYW1wbGVzOyBvZl9pbnQgaW50ZXJuYWxmb3JtYXQ7IG9mX2ludCB3aWR0aDsgb2ZfaW50IGhlaWdodHxdXG5cbiAgbGV0IHJlc3VtZV90cmFuc2Zvcm1fZmVlZGJhY2sgYyAgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJyZXN1bWVUcmFuc2Zvcm1GZWVkYmFja1wiIEp2Llt8fF1cblxuICBsZXQgc2FtcGxlX2NvdmVyYWdlIGMgdmFsdWUgaW52ZXJ0ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwic2FtcGxlQ292ZXJhZ2VcIiBKdi5bfG9mX2Zsb2F0IHZhbHVlOyBKdi5vZl9ib29sIGludmVydHxdXG5cbiAgbGV0IHNhbXBsZXJfcGFyYW1ldGVyZiBjIHNhbXBsZXIgcG5hbWUgcGFyYW0gPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJzYW1wbGVyUGFyYW1ldGVyZlwiIEp2Llt8c2FtcGxlcjsgb2ZfaW50IHBuYW1lOyBvZl9mbG9hdCBwYXJhbXxdXG5cbiAgbGV0IHNhbXBsZXJfcGFyYW1ldGVyaSBjIHNhbXBsZXIgcG5hbWUgcGFyYW0gPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJzYW1wbGVyUGFyYW1ldGVyaVwiIEp2Llt8c2FtcGxlcjsgb2ZfaW50IHBuYW1lOyBvZl9pbnQgcGFyYW18XVxuXG4gIGxldCBzY2lzc29yIGMgeCB5IHdpZHRoIGhlaWdodCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInNjaXNzb3JcIiBKdi5bfG9mX2ludCB4OyBvZl9pbnQgeTsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0fF1cblxuICBsZXQgc2hhZGVyX3NvdXJjZSBjIHNoYWRlciBzb3VyY2UgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJzaGFkZXJTb3VyY2VcIiBKdi5bfHNoYWRlcjsgb2ZfanN0ciBzb3VyY2V8XVxuXG4gIGxldCBzdGVuY2lsX2Z1bmMgYyBmdW5jIHJlZiBtYXNrID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwic3RlbmNpbEZ1bmNcIiBKdi5bfG9mX2ludCBmdW5jOyBvZl9pbnQgcmVmOyBvZl9pbnQgbWFza3xdXG5cbiAgbGV0IHN0ZW5jaWxfZnVuY19zZXBhcmF0ZSBjIGZhY2UgZnVuYyByZWYgbWFzayA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInN0ZW5jaWxGdW5jU2VwYXJhdGVcIiBKdi5bfG9mX2ludCBmYWNlOyBvZl9pbnQgZnVuYzsgb2ZfaW50IHJlZjsgb2ZfaW50IG1hc2t8XVxuXG4gIGxldCBzdGVuY2lsX21hc2sgYyBtYXNrID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwic3RlbmNpbE1hc2tcIiBKdi5bfG9mX2ludCBtYXNrfF1cblxuICBsZXQgc3RlbmNpbF9tYXNrX3NlcGFyYXRlIGMgZmFjZSBtYXNrID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwic3RlbmNpbE1hc2tTZXBhcmF0ZVwiIEp2Llt8b2ZfaW50IGZhY2U7IG9mX2ludCBtYXNrfF1cblxuICBsZXQgc3RlbmNpbF9vcCBjIGZhaWwgemZhaWwgenBhc3MgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJzdGVuY2lsT3BcIiBKdi5bfG9mX2ludCBmYWlsOyBvZl9pbnQgemZhaWw7IG9mX2ludCB6cGFzc3xdXG5cbiAgbGV0IHN0ZW5jaWxfb3Bfc2VwYXJhdGUgYyBmYWNlIGZhaWwgemZhaWwgenBhc3MgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJzdGVuY2lsT3BTZXBhcmF0ZVwiIEp2Llt8b2ZfaW50IGZhY2U7IG9mX2ludCBmYWlsOyBvZl9pbnQgemZhaWw7IG9mX2ludCB6cGFzc3xdXG5cbiAgbGV0IHRleF9pbWFnZTJkIGMgdGFyZ2V0IGxldmVsIGludGVybmFsZm9ybWF0IHdpZHRoIGhlaWdodCBib3JkZXIgZm9ybWF0IHR5cGUnIHNyY0RhdGEgc3JjT2Zmc2V0ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidGV4SW1hZ2UyRFwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGxldmVsOyBvZl9pbnQgaW50ZXJuYWxmb3JtYXQ7IG9mX2ludCB3aWR0aDsgb2ZfaW50IGhlaWdodDsgb2ZfaW50IGJvcmRlcjsgb2ZfaW50IGZvcm1hdDsgb2ZfaW50IHR5cGUnOyBUYXJyYXkudG9fanYgc3JjRGF0YTsgb2ZfaW50IHNyY09mZnNldHxdXG5cbiAgbGV0IHRleF9pbWFnZTJkX29mX3NvdXJjZSBjIHRhcmdldCBsZXZlbCBpbnRlcm5hbGZvcm1hdCB3aWR0aCBoZWlnaHQgYm9yZGVyIGZvcm1hdCB0eXBlJyBzb3VyY2UgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ0ZXhJbWFnZTJEXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgbGV2ZWw7IG9mX2ludCBpbnRlcm5hbGZvcm1hdDsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0OyBvZl9pbnQgYm9yZGVyOyBvZl9pbnQgZm9ybWF0OyBvZl9pbnQgdHlwZSc7IHNvdXJjZXxdXG5cbiAgbGV0IHRleF9pbWFnZTJkX29mX3BpeGVsX3VucGFjayBjIHRhcmdldCBsZXZlbCBpbnRlcm5hbGZvcm1hdCB3aWR0aCBoZWlnaHQgYm9yZGVyIGZvcm1hdCB0eXBlJyBwYm9PZmZzZXQgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ0ZXhJbWFnZTJEXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgbGV2ZWw7IG9mX2ludCBpbnRlcm5hbGZvcm1hdDsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0OyBvZl9pbnQgYm9yZGVyOyBvZl9pbnQgZm9ybWF0OyBvZl9pbnQgdHlwZSc7IG9mX2ludCBwYm9PZmZzZXR8XVxuXG4gIGxldCB0ZXhfaW1hZ2UzZCBjIHRhcmdldCBsZXZlbCBpbnRlcm5hbGZvcm1hdCB3aWR0aCBoZWlnaHQgZGVwdGggYm9yZGVyIGZvcm1hdCB0eXBlJyBzcmNEYXRhIHNyY09mZnNldCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInRleEltYWdlM0RcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBsZXZlbDsgb2ZfaW50IGludGVybmFsZm9ybWF0OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHQ7IG9mX2ludCBkZXB0aDsgb2ZfaW50IGJvcmRlcjsgb2ZfaW50IGZvcm1hdDsgb2ZfaW50IHR5cGUnOyBUYXJyYXkudG9fanYgc3JjRGF0YTsgb2ZfaW50IHNyY09mZnNldHxdXG5cbiAgbGV0IHRleF9pbWFnZTNkX29mX3NvdXJjZSBjIHRhcmdldCBsZXZlbCBpbnRlcm5hbGZvcm1hdCB3aWR0aCBoZWlnaHQgZGVwdGggYm9yZGVyIGZvcm1hdCB0eXBlJyBzb3VyY2UgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ0ZXhJbWFnZTNEXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgbGV2ZWw7IG9mX2ludCBpbnRlcm5hbGZvcm1hdDsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0OyBvZl9pbnQgZGVwdGg7IG9mX2ludCBib3JkZXI7IG9mX2ludCBmb3JtYXQ7IG9mX2ludCB0eXBlJzsgc291cmNlfF1cblxuICBsZXQgdGV4X2ltYWdlM2Rfb2ZfcGl4ZWxfdW5wYWNrIGMgdGFyZ2V0IGxldmVsIGludGVybmFsZm9ybWF0IHdpZHRoIGhlaWdodCBkZXB0aCBib3JkZXIgZm9ybWF0IHR5cGUnIHBib09mZnNldCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInRleEltYWdlM0RcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBsZXZlbDsgb2ZfaW50IGludGVybmFsZm9ybWF0OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHQ7IG9mX2ludCBkZXB0aDsgb2ZfaW50IGJvcmRlcjsgb2ZfaW50IGZvcm1hdDsgb2ZfaW50IHR5cGUnOyBvZl9pbnQgcGJvT2Zmc2V0fF1cblxuICBsZXQgdGV4X3BhcmFtZXRlcmYgYyB0YXJnZXQgcG5hbWUgcGFyYW0gPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ0ZXhQYXJhbWV0ZXJmXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgcG5hbWU7IG9mX2Zsb2F0IHBhcmFtfF1cblxuICBsZXQgdGV4X3BhcmFtZXRlcmkgYyB0YXJnZXQgcG5hbWUgcGFyYW0gPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ0ZXhQYXJhbWV0ZXJpXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgcG5hbWU7IG9mX2ludCBwYXJhbXxdXG5cbiAgbGV0IHRleF9zdG9yYWdlMmQgYyB0YXJnZXQgbGV2ZWxzIGludGVybmFsZm9ybWF0IHdpZHRoIGhlaWdodCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInRleFN0b3JhZ2UyRFwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGxldmVsczsgb2ZfaW50IGludGVybmFsZm9ybWF0OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHR8XVxuXG4gIGxldCB0ZXhfc3RvcmFnZTNkIGMgdGFyZ2V0IGxldmVscyBpbnRlcm5hbGZvcm1hdCB3aWR0aCBoZWlnaHQgZGVwdGggPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ0ZXhTdG9yYWdlM0RcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBsZXZlbHM7IG9mX2ludCBpbnRlcm5hbGZvcm1hdDsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0OyBvZl9pbnQgZGVwdGh8XVxuXG4gIGxldCB0ZXhfc3ViX2ltYWdlMmQgYyB0YXJnZXQgbGV2ZWwgeG9mZnNldCB5b2Zmc2V0IHdpZHRoIGhlaWdodCBmb3JtYXQgdHlwZScgc3JjRGF0YSBzcmNPZmZzZXQgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ0ZXhTdWJJbWFnZTJEXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgbGV2ZWw7IG9mX2ludCB4b2Zmc2V0OyBvZl9pbnQgeW9mZnNldDsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0OyBvZl9pbnQgZm9ybWF0OyBvZl9pbnQgdHlwZSc7IFRhcnJheS50b19qdiBzcmNEYXRhOyBvZl9pbnQgc3JjT2Zmc2V0fF1cblxuICBsZXQgdGV4X3N1Yl9pbWFnZTJkX29mX3NvdXJjZSBjIHRhcmdldCBsZXZlbCB4b2Zmc2V0IHlvZmZzZXQgd2lkdGggaGVpZ2h0IGZvcm1hdCB0eXBlJyBzb3VyY2UgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ0ZXhTdWJJbWFnZTJEXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgbGV2ZWw7IG9mX2ludCB4b2Zmc2V0OyBvZl9pbnQgeW9mZnNldDsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0OyBvZl9pbnQgZm9ybWF0OyBvZl9pbnQgdHlwZSc7IHNvdXJjZXxdXG5cbiAgbGV0IHRleF9zdWJfaW1hZ2UyZF9vZl9waXhlbF91bnBhY2sgYyB0YXJnZXQgbGV2ZWwgeG9mZnNldCB5b2Zmc2V0IHdpZHRoIGhlaWdodCBmb3JtYXQgdHlwZScgcGJvT2Zmc2V0ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidGV4U3ViSW1hZ2UyRFwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGxldmVsOyBvZl9pbnQgeG9mZnNldDsgb2ZfaW50IHlvZmZzZXQ7IG9mX2ludCB3aWR0aDsgb2ZfaW50IGhlaWdodDsgb2ZfaW50IGZvcm1hdDsgb2ZfaW50IHR5cGUnOyBvZl9pbnQgcGJvT2Zmc2V0fF1cblxuICBsZXQgdGV4X3N1Yl9pbWFnZTNkIGMgdGFyZ2V0IGxldmVsIHhvZmZzZXQgeW9mZnNldCB6b2Zmc2V0IHdpZHRoIGhlaWdodCBkZXB0aCBmb3JtYXQgdHlwZScgc3JjRGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInRleFN1YkltYWdlM0RcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBsZXZlbDsgb2ZfaW50IHhvZmZzZXQ7IG9mX2ludCB5b2Zmc2V0OyBvZl9pbnQgem9mZnNldDsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0OyBvZl9pbnQgZGVwdGg7IG9mX2ludCBmb3JtYXQ7IG9mX2ludCB0eXBlJzsgVGFycmF5LnRvX2p2IHNyY0RhdGF8XVxuXG4gIGxldCB0ZXhfc3ViX2ltYWdlM2Rfb2Zfc291cmNlIGMgdGFyZ2V0IGxldmVsIHhvZmZzZXQgeW9mZnNldCB6b2Zmc2V0IHdpZHRoIGhlaWdodCBkZXB0aCBmb3JtYXQgdHlwZScgc291cmNlID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidGV4U3ViSW1hZ2UzRFwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGxldmVsOyBvZl9pbnQgeG9mZnNldDsgb2ZfaW50IHlvZmZzZXQ7IG9mX2ludCB6b2Zmc2V0OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHQ7IG9mX2ludCBkZXB0aDsgb2ZfaW50IGZvcm1hdDsgb2ZfaW50IHR5cGUnOyBzb3VyY2V8XVxuXG4gIGxldCB0ZXhfc3ViX2ltYWdlM2Rfb2ZfcGl4ZWxfdW5wYWNrIGMgdGFyZ2V0IGxldmVsIHhvZmZzZXQgeW9mZnNldCB6b2Zmc2V0IHdpZHRoIGhlaWdodCBkZXB0aCBmb3JtYXQgdHlwZScgcGJvT2Zmc2V0ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidGV4U3ViSW1hZ2UzRFwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGxldmVsOyBvZl9pbnQgeG9mZnNldDsgb2ZfaW50IHlvZmZzZXQ7IG9mX2ludCB6b2Zmc2V0OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHQ7IG9mX2ludCBkZXB0aDsgb2ZfaW50IGZvcm1hdDsgb2ZfaW50IHR5cGUnOyBvZl9pbnQgcGJvT2Zmc2V0fF1cblxuICBsZXQgdHJhbnNmb3JtX2ZlZWRiYWNrX3ZhcnlpbmdzIGMgcHJvZ3JhbSB2YXJ5aW5ncyBidWZmZXJNb2RlID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nc1wiIEp2Llt8cHJvZ3JhbTsgb2ZfanN0cl9saXN0IHZhcnlpbmdzOyBvZl9pbnQgYnVmZmVyTW9kZXxdXG5cbiAgbGV0IHVuaWZvcm0xZiBjIGxvY2F0aW9uIHggPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtMWZcIiBKdi5bfGxvY2F0aW9uOyBvZl9mbG9hdCB4fF1cblxuICBsZXQgdW5pZm9ybTFmdiBjIGxvY2F0aW9uIGRhdGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtMWZ2XCIgSnYuW3xsb2NhdGlvbjsgVGFycmF5LnRvX2p2IGRhdGF8XVxuXG4gIGxldCB1bmlmb3JtMWkgYyBsb2NhdGlvbiB4ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidW5pZm9ybTFpXCIgSnYuW3xsb2NhdGlvbjsgb2ZfaW50IHh8XVxuXG4gIGxldCB1bmlmb3JtMWl2IGMgbG9jYXRpb24gZGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm0xaXZcIiBKdi5bfGxvY2F0aW9uOyBUYXJyYXkudG9fanYgZGF0YXxdXG5cbiAgbGV0IHVuaWZvcm0xdWkgYyBsb2NhdGlvbiB2MCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm0xdWlcIiBKdi5bfGxvY2F0aW9uOyBvZl9pbnQgdjB8XVxuXG4gIGxldCB1bmlmb3JtMXVpdiBjIGxvY2F0aW9uIGRhdGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtMXVpdlwiIEp2Llt8bG9jYXRpb247IFRhcnJheS50b19qdiBkYXRhfF1cblxuICBsZXQgdW5pZm9ybTJmIGMgbG9jYXRpb24geCB5ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidW5pZm9ybTJmXCIgSnYuW3xsb2NhdGlvbjsgb2ZfZmxvYXQgeDsgb2ZfZmxvYXQgeXxdXG5cbiAgbGV0IHVuaWZvcm0yZnYgYyBsb2NhdGlvbiBkYXRhID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidW5pZm9ybTJmdlwiIEp2Llt8bG9jYXRpb247IFRhcnJheS50b19qdiBkYXRhfF1cblxuICBsZXQgdW5pZm9ybTJpIGMgbG9jYXRpb24geCB5ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidW5pZm9ybTJpXCIgSnYuW3xsb2NhdGlvbjsgb2ZfaW50IHg7IG9mX2ludCB5fF1cblxuICBsZXQgdW5pZm9ybTJpdiBjIGxvY2F0aW9uIGRhdGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtMml2XCIgSnYuW3xsb2NhdGlvbjsgVGFycmF5LnRvX2p2IGRhdGF8XVxuXG4gIGxldCB1bmlmb3JtMnVpIGMgbG9jYXRpb24gdjAgdjEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtMnVpXCIgSnYuW3xsb2NhdGlvbjsgb2ZfaW50IHYwOyBvZl9pbnQgdjF8XVxuXG4gIGxldCB1bmlmb3JtMnVpdiBjIGxvY2F0aW9uIGRhdGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtMnVpdlwiIEp2Llt8bG9jYXRpb247IFRhcnJheS50b19qdiBkYXRhfF1cblxuICBsZXQgdW5pZm9ybTNmIGMgbG9jYXRpb24geCB5IHogPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtM2ZcIiBKdi5bfGxvY2F0aW9uOyBvZl9mbG9hdCB4OyBvZl9mbG9hdCB5OyBvZl9mbG9hdCB6fF1cblxuICBsZXQgdW5pZm9ybTNmdiBjIGxvY2F0aW9uIGRhdGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtM2Z2XCIgSnYuW3xsb2NhdGlvbjsgVGFycmF5LnRvX2p2IGRhdGF8XVxuXG4gIGxldCB1bmlmb3JtM2kgYyBsb2NhdGlvbiB4IHkgeiA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm0zaVwiIEp2Llt8bG9jYXRpb247IG9mX2ludCB4OyBvZl9pbnQgeTsgb2ZfaW50IHp8XVxuXG4gIGxldCB1bmlmb3JtM2l2IGMgbG9jYXRpb24gZGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm0zaXZcIiBKdi5bfGxvY2F0aW9uOyBUYXJyYXkudG9fanYgZGF0YXxdXG5cbiAgbGV0IHVuaWZvcm0zdWkgYyBsb2NhdGlvbiB2MCB2MSB2MiA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm0zdWlcIiBKdi5bfGxvY2F0aW9uOyBvZl9pbnQgdjA7IG9mX2ludCB2MTsgb2ZfaW50IHYyfF1cblxuICBsZXQgdW5pZm9ybTN1aXYgYyBsb2NhdGlvbiBkYXRhID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidW5pZm9ybTN1aXZcIiBKdi5bfGxvY2F0aW9uOyBUYXJyYXkudG9fanYgZGF0YXxdXG5cbiAgbGV0IHVuaWZvcm00ZiBjIGxvY2F0aW9uIHggeSB6IHcgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtNGZcIiBKdi5bfGxvY2F0aW9uOyBvZl9mbG9hdCB4OyBvZl9mbG9hdCB5OyBvZl9mbG9hdCB6OyBvZl9mbG9hdCB3fF1cblxuICBsZXQgdW5pZm9ybTRmdiBjIGxvY2F0aW9uIGRhdGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtNGZ2XCIgSnYuW3xsb2NhdGlvbjsgVGFycmF5LnRvX2p2IGRhdGF8XVxuXG4gIGxldCB1bmlmb3JtNGkgYyBsb2NhdGlvbiB4IHkgeiB3ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidW5pZm9ybTRpXCIgSnYuW3xsb2NhdGlvbjsgb2ZfaW50IHg7IG9mX2ludCB5OyBvZl9pbnQgejsgb2ZfaW50IHd8XVxuXG4gIGxldCB1bmlmb3JtNGl2IGMgbG9jYXRpb24gZGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm00aXZcIiBKdi5bfGxvY2F0aW9uOyBUYXJyYXkudG9fanYgZGF0YXxdXG5cbiAgbGV0IHVuaWZvcm00dWkgYyBsb2NhdGlvbiB2MCB2MSB2MiB2MyA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm00dWlcIiBKdi5bfGxvY2F0aW9uOyBvZl9pbnQgdjA7IG9mX2ludCB2MTsgb2ZfaW50IHYyOyBvZl9pbnQgdjN8XVxuXG4gIGxldCB1bmlmb3JtNHVpdiBjIGxvY2F0aW9uIGRhdGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtNHVpdlwiIEp2Llt8bG9jYXRpb247IFRhcnJheS50b19qdiBkYXRhfF1cblxuICBsZXQgdW5pZm9ybV9ibG9ja19iaW5kaW5nIGMgcHJvZ3JhbSB1bmlmb3JtQmxvY2tJbmRleCB1bmlmb3JtQmxvY2tCaW5kaW5nID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidW5pZm9ybUJsb2NrQmluZGluZ1wiIEp2Llt8cHJvZ3JhbTsgb2ZfaW50IHVuaWZvcm1CbG9ja0luZGV4OyBvZl9pbnQgdW5pZm9ybUJsb2NrQmluZGluZ3xdXG5cbiAgbGV0IHVuaWZvcm1fbWF0cml4MmZ2IGMgbG9jYXRpb24gdHJhbnNwb3NlIGRhdGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtTWF0cml4MmZ2XCIgSnYuW3xsb2NhdGlvbjsgSnYub2ZfYm9vbCB0cmFuc3Bvc2U7IFRhcnJheS50b19qdiBkYXRhfF1cblxuICBsZXQgdW5pZm9ybV9tYXRyaXgyeDNmdiBjIGxvY2F0aW9uIHRyYW5zcG9zZSBkYXRhID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidW5pZm9ybU1hdHJpeDJ4M2Z2XCIgSnYuW3xsb2NhdGlvbjsgSnYub2ZfYm9vbCB0cmFuc3Bvc2U7IFRhcnJheS50b19qdiBkYXRhfF1cblxuICBsZXQgdW5pZm9ybV9tYXRyaXgyeDRmdiBjIGxvY2F0aW9uIHRyYW5zcG9zZSBkYXRhID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidW5pZm9ybU1hdHJpeDJ4NGZ2XCIgSnYuW3xsb2NhdGlvbjsgSnYub2ZfYm9vbCB0cmFuc3Bvc2U7IFRhcnJheS50b19qdiBkYXRhfF1cblxuICBsZXQgdW5pZm9ybV9tYXRyaXgzZnYgYyBsb2NhdGlvbiB0cmFuc3Bvc2UgZGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm1NYXRyaXgzZnZcIiBKdi5bfGxvY2F0aW9uOyBKdi5vZl9ib29sIHRyYW5zcG9zZTsgVGFycmF5LnRvX2p2IGRhdGF8XVxuXG4gIGxldCB1bmlmb3JtX21hdHJpeDN4MmZ2IGMgbG9jYXRpb24gdHJhbnNwb3NlIGRhdGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtTWF0cml4M3gyZnZcIiBKdi5bfGxvY2F0aW9uOyBKdi5vZl9ib29sIHRyYW5zcG9zZTsgVGFycmF5LnRvX2p2IGRhdGF8XVxuXG4gIGxldCB1bmlmb3JtX21hdHJpeDN4NGZ2IGMgbG9jYXRpb24gdHJhbnNwb3NlIGRhdGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtTWF0cml4M3g0ZnZcIiBKdi5bfGxvY2F0aW9uOyBKdi5vZl9ib29sIHRyYW5zcG9zZTsgVGFycmF5LnRvX2p2IGRhdGF8XVxuXG4gIGxldCB1bmlmb3JtX21hdHJpeDRmdiBjIGxvY2F0aW9uIHRyYW5zcG9zZSBkYXRhID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidW5pZm9ybU1hdHJpeDRmdlwiIEp2Llt8bG9jYXRpb247IEp2Lm9mX2Jvb2wgdHJhbnNwb3NlOyBUYXJyYXkudG9fanYgZGF0YXxdXG5cbiAgbGV0IHVuaWZvcm1fbWF0cml4NHgyZnYgYyBsb2NhdGlvbiB0cmFuc3Bvc2UgZGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm1NYXRyaXg0eDJmdlwiIEp2Llt8bG9jYXRpb247IEp2Lm9mX2Jvb2wgdHJhbnNwb3NlOyBUYXJyYXkudG9fanYgZGF0YXxdXG5cbiAgbGV0IHVuaWZvcm1fbWF0cml4NHgzZnYgYyBsb2NhdGlvbiB0cmFuc3Bvc2UgZGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm1NYXRyaXg0eDNmdlwiIEp2Llt8bG9jYXRpb247IEp2Lm9mX2Jvb2wgdHJhbnNwb3NlOyBUYXJyYXkudG9fanYgZGF0YXxdXG5cbiAgbGV0IHVzZV9wcm9ncmFtIGMgcHJvZ3JhbSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVzZVByb2dyYW1cIiBKdi5bfHByb2dyYW18XVxuXG4gIGxldCB2YWxpZGF0ZV9wcm9ncmFtIGMgcHJvZ3JhbSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInZhbGlkYXRlUHJvZ3JhbVwiIEp2Llt8cHJvZ3JhbXxdXG5cbiAgbGV0IHZlcnRleF9hdHRyaWIxZiBjIGluZGV4IHggPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ2ZXJ0ZXhBdHRyaWIxZlwiIEp2Llt8b2ZfaW50IGluZGV4OyBvZl9mbG9hdCB4fF1cblxuICBsZXQgdmVydGV4X2F0dHJpYjFmdiBjIGluZGV4IHZhbHVlcyA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInZlcnRleEF0dHJpYjFmdlwiIEp2Llt8b2ZfaW50IGluZGV4OyBUYXJyYXkudG9fanYgdmFsdWVzfF1cblxuICBsZXQgdmVydGV4X2F0dHJpYjJmIGMgaW5kZXggeCB5ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidmVydGV4QXR0cmliMmZcIiBKdi5bfG9mX2ludCBpbmRleDsgb2ZfZmxvYXQgeDsgb2ZfZmxvYXQgeXxdXG5cbiAgbGV0IHZlcnRleF9hdHRyaWIyZnYgYyBpbmRleCB2YWx1ZXMgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ2ZXJ0ZXhBdHRyaWIyZnZcIiBKdi5bfG9mX2ludCBpbmRleDsgVGFycmF5LnRvX2p2IHZhbHVlc3xdXG5cbiAgbGV0IHZlcnRleF9hdHRyaWIzZiBjIGluZGV4IHggeSB6ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidmVydGV4QXR0cmliM2ZcIiBKdi5bfG9mX2ludCBpbmRleDsgb2ZfZmxvYXQgeDsgb2ZfZmxvYXQgeTsgb2ZfZmxvYXQgenxdXG5cbiAgbGV0IHZlcnRleF9hdHRyaWIzZnYgYyBpbmRleCB2YWx1ZXMgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ2ZXJ0ZXhBdHRyaWIzZnZcIiBKdi5bfG9mX2ludCBpbmRleDsgVGFycmF5LnRvX2p2IHZhbHVlc3xdXG5cbiAgbGV0IHZlcnRleF9hdHRyaWI0ZiBjIGluZGV4IHggeSB6IHcgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ2ZXJ0ZXhBdHRyaWI0ZlwiIEp2Llt8b2ZfaW50IGluZGV4OyBvZl9mbG9hdCB4OyBvZl9mbG9hdCB5OyBvZl9mbG9hdCB6OyBvZl9mbG9hdCB3fF1cblxuICBsZXQgdmVydGV4X2F0dHJpYjRmdiBjIGluZGV4IHZhbHVlcyA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInZlcnRleEF0dHJpYjRmdlwiIEp2Llt8b2ZfaW50IGluZGV4OyBUYXJyYXkudG9fanYgdmFsdWVzfF1cblxuICBsZXQgdmVydGV4X2F0dHJpYl9kaXZpc29yIGMgaW5kZXggZGl2aXNvciA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInZlcnRleEF0dHJpYkRpdmlzb3JcIiBKdi5bfG9mX2ludCBpbmRleDsgb2ZfaW50IGRpdmlzb3J8XVxuXG4gIGxldCB2ZXJ0ZXhfYXR0cmliX2k0aSBjIGluZGV4IHggeSB6IHcgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ2ZXJ0ZXhBdHRyaWJJNGlcIiBKdi5bfG9mX2ludCBpbmRleDsgb2ZfaW50IHg7IG9mX2ludCB5OyBvZl9pbnQgejsgb2ZfaW50IHd8XVxuXG4gIGxldCB2ZXJ0ZXhfYXR0cmliX2k0aXYgYyBpbmRleCB2YWx1ZXMgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ2ZXJ0ZXhBdHRyaWJJNGl2XCIgSnYuW3xvZl9pbnQgaW5kZXg7IFRhcnJheS50b19qdiB2YWx1ZXN8XVxuXG4gIGxldCB2ZXJ0ZXhfYXR0cmliX2k0dWkgYyBpbmRleCB4IHkgeiB3ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidmVydGV4QXR0cmliSTR1aVwiIEp2Llt8b2ZfaW50IGluZGV4OyBvZl9pbnQgeDsgb2ZfaW50IHk7IG9mX2ludCB6OyBvZl9pbnQgd3xdXG5cbiAgbGV0IHZlcnRleF9hdHRyaWJfaTR1aXYgYyBpbmRleCB2YWx1ZXMgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ2ZXJ0ZXhBdHRyaWJJNHVpdlwiIEp2Llt8b2ZfaW50IGluZGV4OyBUYXJyYXkudG9fanYgdmFsdWVzfF1cblxuICBsZXQgdmVydGV4X2F0dHJpYl9pcG9pbnRlciBjIGluZGV4IHNpemUgdHlwZScgc3RyaWRlIG9mZnNldCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInZlcnRleEF0dHJpYklQb2ludGVyXCIgSnYuW3xvZl9pbnQgaW5kZXg7IG9mX2ludCBzaXplOyBvZl9pbnQgdHlwZSc7IG9mX2ludCBzdHJpZGU7IG9mX2ludCBvZmZzZXR8XVxuXG4gIGxldCB2ZXJ0ZXhfYXR0cmliX3BvaW50ZXIgYyBpbmRleCBzaXplIHR5cGUnIG5vcm1hbGl6ZWQgc3RyaWRlIG9mZnNldCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInZlcnRleEF0dHJpYlBvaW50ZXJcIiBKdi5bfG9mX2ludCBpbmRleDsgb2ZfaW50IHNpemU7IG9mX2ludCB0eXBlJzsgSnYub2ZfYm9vbCBub3JtYWxpemVkOyBvZl9pbnQgc3RyaWRlOyBvZl9pbnQgb2Zmc2V0fF1cblxuICBsZXQgdmlld3BvcnQgYyB4IHkgd2lkdGggaGVpZ2h0ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidmlld3BvcnRcIiBKdi5bfG9mX2ludCB4OyBvZl9pbnQgeTsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0fF1cblxuICBsZXQgd2FpdF9zeW5jIGMgc3luYyBmbGFncyB0aW1lb3V0ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwid2FpdFN5bmNcIiBKdi5bfHN5bmM7IG9mX2ludCBmbGFnczsgb2ZfaW50IHRpbWVvdXR8XVxuXG4gICgqIEVudW1zICopXG5cbiAgbGV0IGdldF9pbnQgY3R4IGYgPSBpZiBKdi5pc19ub25lIGN0eCB0aGVuIDAgZWxzZSBKdi5JbnQuZ2V0IGN0eCBmXG5cbiAgbGV0IGdsMWN0eCA9IEp2LmdldCBKdi5nbG9iYWwgXCJXZWJHTFJlbmRlcmluZ0NvbnRleHRcIlxuICBsZXQgZGVwdGhfYnVmZmVyX2JpdCA9IGdldF9pbnQgZ2wxY3R4IFwiREVQVEhfQlVGRkVSX0JJVFwiXG4gIGxldCBzdGVuY2lsX2J1ZmZlcl9iaXQgPSBnZXRfaW50IGdsMWN0eCBcIlNURU5DSUxfQlVGRkVSX0JJVFwiXG4gIGxldCBjb2xvcl9idWZmZXJfYml0ID0gZ2V0X2ludCBnbDFjdHggXCJDT0xPUl9CVUZGRVJfQklUXCJcbiAgbGV0IHBvaW50cyA9IGdldF9pbnQgZ2wxY3R4IFwiUE9JTlRTXCJcbiAgbGV0IGxpbmVzID0gZ2V0X2ludCBnbDFjdHggXCJMSU5FU1wiXG4gIGxldCBsaW5lX2xvb3AgPSBnZXRfaW50IGdsMWN0eCBcIkxJTkVfTE9PUFwiXG4gIGxldCBsaW5lX3N0cmlwID0gZ2V0X2ludCBnbDFjdHggXCJMSU5FX1NUUklQXCJcbiAgbGV0IHRyaWFuZ2xlcyA9IGdldF9pbnQgZ2wxY3R4IFwiVFJJQU5HTEVTXCJcbiAgbGV0IHRyaWFuZ2xlX3N0cmlwID0gZ2V0X2ludCBnbDFjdHggXCJUUklBTkdMRV9TVFJJUFwiXG4gIGxldCB0cmlhbmdsZV9mYW4gPSBnZXRfaW50IGdsMWN0eCBcIlRSSUFOR0xFX0ZBTlwiXG4gIGxldCB6ZXJvID0gZ2V0X2ludCBnbDFjdHggXCJaRVJPXCJcbiAgbGV0IG9uZSA9IGdldF9pbnQgZ2wxY3R4IFwiT05FXCJcbiAgbGV0IHNyY19jb2xvciA9IGdldF9pbnQgZ2wxY3R4IFwiU1JDX0NPTE9SXCJcbiAgbGV0IG9uZV9taW51c19zcmNfY29sb3IgPSBnZXRfaW50IGdsMWN0eCBcIk9ORV9NSU5VU19TUkNfQ09MT1JcIlxuICBsZXQgc3JjX2FscGhhID0gZ2V0X2ludCBnbDFjdHggXCJTUkNfQUxQSEFcIlxuICBsZXQgb25lX21pbnVzX3NyY19hbHBoYSA9IGdldF9pbnQgZ2wxY3R4IFwiT05FX01JTlVTX1NSQ19BTFBIQVwiXG4gIGxldCBkc3RfYWxwaGEgPSBnZXRfaW50IGdsMWN0eCBcIkRTVF9BTFBIQVwiXG4gIGxldCBvbmVfbWludXNfZHN0X2FscGhhID0gZ2V0X2ludCBnbDFjdHggXCJPTkVfTUlOVVNfRFNUX0FMUEhBXCJcbiAgbGV0IGRzdF9jb2xvciA9IGdldF9pbnQgZ2wxY3R4IFwiRFNUX0NPTE9SXCJcbiAgbGV0IG9uZV9taW51c19kc3RfY29sb3IgPSBnZXRfaW50IGdsMWN0eCBcIk9ORV9NSU5VU19EU1RfQ09MT1JcIlxuICBsZXQgc3JjX2FscGhhX3NhdHVyYXRlID0gZ2V0X2ludCBnbDFjdHggXCJTUkNfQUxQSEFfU0FUVVJBVEVcIlxuICBsZXQgZnVuY19hZGQgPSBnZXRfaW50IGdsMWN0eCBcIkZVTkNfQUREXCJcbiAgbGV0IGJsZW5kX2VxdWF0aW9uJyA9IGdldF9pbnQgZ2wxY3R4IFwiQkxFTkRfRVFVQVRJT05cIlxuICBsZXQgYmxlbmRfZXF1YXRpb25fcmdiID0gZ2V0X2ludCBnbDFjdHggXCJCTEVORF9FUVVBVElPTl9SR0JcIlxuICBsZXQgYmxlbmRfZXF1YXRpb25fYWxwaGEgPSBnZXRfaW50IGdsMWN0eCBcIkJMRU5EX0VRVUFUSU9OX0FMUEhBXCJcbiAgbGV0IGZ1bmNfc3VidHJhY3QgPSBnZXRfaW50IGdsMWN0eCBcIkZVTkNfU1VCVFJBQ1RcIlxuICBsZXQgZnVuY19yZXZlcnNlX3N1YnRyYWN0ID0gZ2V0X2ludCBnbDFjdHggXCJGVU5DX1JFVkVSU0VfU1VCVFJBQ1RcIlxuICBsZXQgYmxlbmRfZHN0X3JnYiA9IGdldF9pbnQgZ2wxY3R4IFwiQkxFTkRfRFNUX1JHQlwiXG4gIGxldCBibGVuZF9zcmNfcmdiID0gZ2V0X2ludCBnbDFjdHggXCJCTEVORF9TUkNfUkdCXCJcbiAgbGV0IGJsZW5kX2RzdF9hbHBoYSA9IGdldF9pbnQgZ2wxY3R4IFwiQkxFTkRfRFNUX0FMUEhBXCJcbiAgbGV0IGJsZW5kX3NyY19hbHBoYSA9IGdldF9pbnQgZ2wxY3R4IFwiQkxFTkRfU1JDX0FMUEhBXCJcbiAgbGV0IGNvbnN0YW50X2NvbG9yID0gZ2V0X2ludCBnbDFjdHggXCJDT05TVEFOVF9DT0xPUlwiXG4gIGxldCBvbmVfbWludXNfY29uc3RhbnRfY29sb3IgPSBnZXRfaW50IGdsMWN0eCBcIk9ORV9NSU5VU19DT05TVEFOVF9DT0xPUlwiXG4gIGxldCBjb25zdGFudF9hbHBoYSA9IGdldF9pbnQgZ2wxY3R4IFwiQ09OU1RBTlRfQUxQSEFcIlxuICBsZXQgb25lX21pbnVzX2NvbnN0YW50X2FscGhhID0gZ2V0X2ludCBnbDFjdHggXCJPTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEFcIlxuICBsZXQgYmxlbmRfY29sb3InID0gZ2V0X2ludCBnbDFjdHggXCJCTEVORF9DT0xPUlwiXG4gIGxldCBhcnJheV9idWZmZXIgPSBnZXRfaW50IGdsMWN0eCBcIkFSUkFZX0JVRkZFUlwiXG4gIGxldCBlbGVtZW50X2FycmF5X2J1ZmZlciA9IGdldF9pbnQgZ2wxY3R4IFwiRUxFTUVOVF9BUlJBWV9CVUZGRVJcIlxuICBsZXQgYXJyYXlfYnVmZmVyX2JpbmRpbmcgPSBnZXRfaW50IGdsMWN0eCBcIkFSUkFZX0JVRkZFUl9CSU5ESU5HXCJcbiAgbGV0IGVsZW1lbnRfYXJyYXlfYnVmZmVyX2JpbmRpbmcgPSBnZXRfaW50IGdsMWN0eCBcIkVMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkdcIlxuICBsZXQgc3RyZWFtX2RyYXcgPSBnZXRfaW50IGdsMWN0eCBcIlNUUkVBTV9EUkFXXCJcbiAgbGV0IHN0YXRpY19kcmF3ID0gZ2V0X2ludCBnbDFjdHggXCJTVEFUSUNfRFJBV1wiXG4gIGxldCBkeW5hbWljX2RyYXcgPSBnZXRfaW50IGdsMWN0eCBcIkRZTkFNSUNfRFJBV1wiXG4gIGxldCBidWZmZXJfc2l6ZSA9IGdldF9pbnQgZ2wxY3R4IFwiQlVGRkVSX1NJWkVcIlxuICBsZXQgYnVmZmVyX3VzYWdlID0gZ2V0X2ludCBnbDFjdHggXCJCVUZGRVJfVVNBR0VcIlxuICBsZXQgY3VycmVudF92ZXJ0ZXhfYXR0cmliID0gZ2V0X2ludCBnbDFjdHggXCJDVVJSRU5UX1ZFUlRFWF9BVFRSSUJcIlxuICBsZXQgZnJvbnQgPSBnZXRfaW50IGdsMWN0eCBcIkZST05UXCJcbiAgbGV0IGJhY2sgPSBnZXRfaW50IGdsMWN0eCBcIkJBQ0tcIlxuICBsZXQgZnJvbnRfYW5kX2JhY2sgPSBnZXRfaW50IGdsMWN0eCBcIkZST05UX0FORF9CQUNLXCJcbiAgbGV0IGN1bGxfZmFjZScgPSBnZXRfaW50IGdsMWN0eCBcIkNVTExfRkFDRVwiXG4gIGxldCBibGVuZCA9IGdldF9pbnQgZ2wxY3R4IFwiQkxFTkRcIlxuICBsZXQgZGl0aGVyID0gZ2V0X2ludCBnbDFjdHggXCJESVRIRVJcIlxuICBsZXQgc3RlbmNpbF90ZXN0ID0gZ2V0X2ludCBnbDFjdHggXCJTVEVOQ0lMX1RFU1RcIlxuICBsZXQgZGVwdGhfdGVzdCA9IGdldF9pbnQgZ2wxY3R4IFwiREVQVEhfVEVTVFwiXG4gIGxldCBzY2lzc29yX3Rlc3QgPSBnZXRfaW50IGdsMWN0eCBcIlNDSVNTT1JfVEVTVFwiXG4gIGxldCBwb2x5Z29uX29mZnNldF9maWxsID0gZ2V0X2ludCBnbDFjdHggXCJQT0xZR09OX09GRlNFVF9GSUxMXCJcbiAgbGV0IHNhbXBsZV9hbHBoYV90b19jb3ZlcmFnZSA9IGdldF9pbnQgZ2wxY3R4IFwiU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFXCJcbiAgbGV0IHNhbXBsZV9jb3ZlcmFnZScgPSBnZXRfaW50IGdsMWN0eCBcIlNBTVBMRV9DT1ZFUkFHRVwiXG4gIGxldCBub19lcnJvciA9IGdldF9pbnQgZ2wxY3R4IFwiTk9fRVJST1JcIlxuICBsZXQgaW52YWxpZF9lbnVtID0gZ2V0X2ludCBnbDFjdHggXCJJTlZBTElEX0VOVU1cIlxuICBsZXQgaW52YWxpZF92YWx1ZSA9IGdldF9pbnQgZ2wxY3R4IFwiSU5WQUxJRF9WQUxVRVwiXG4gIGxldCBpbnZhbGlkX29wZXJhdGlvbiA9IGdldF9pbnQgZ2wxY3R4IFwiSU5WQUxJRF9PUEVSQVRJT05cIlxuICBsZXQgb3V0X29mX21lbW9yeSA9IGdldF9pbnQgZ2wxY3R4IFwiT1VUX09GX01FTU9SWVwiXG4gIGxldCBjdyA9IGdldF9pbnQgZ2wxY3R4IFwiQ1dcIlxuICBsZXQgY2N3ID0gZ2V0X2ludCBnbDFjdHggXCJDQ1dcIlxuICBsZXQgbGluZV93aWR0aCcgPSBnZXRfaW50IGdsMWN0eCBcIkxJTkVfV0lEVEhcIlxuICBsZXQgYWxpYXNlZF9wb2ludF9zaXplX3JhbmdlID0gZ2V0X2ludCBnbDFjdHggXCJBTElBU0VEX1BPSU5UX1NJWkVfUkFOR0VcIlxuICBsZXQgYWxpYXNlZF9saW5lX3dpZHRoX3JhbmdlID0gZ2V0X2ludCBnbDFjdHggXCJBTElBU0VEX0xJTkVfV0lEVEhfUkFOR0VcIlxuICBsZXQgY3VsbF9mYWNlX21vZGUgPSBnZXRfaW50IGdsMWN0eCBcIkNVTExfRkFDRV9NT0RFXCJcbiAgbGV0IGZyb250X2ZhY2UnID0gZ2V0X2ludCBnbDFjdHggXCJGUk9OVF9GQUNFXCJcbiAgbGV0IGRlcHRoX3JhbmdlID0gZ2V0X2ludCBnbDFjdHggXCJERVBUSF9SQU5HRVwiXG4gIGxldCBkZXB0aF93cml0ZW1hc2sgPSBnZXRfaW50IGdsMWN0eCBcIkRFUFRIX1dSSVRFTUFTS1wiXG4gIGxldCBkZXB0aF9jbGVhcl92YWx1ZSA9IGdldF9pbnQgZ2wxY3R4IFwiREVQVEhfQ0xFQVJfVkFMVUVcIlxuICBsZXQgZGVwdGhfZnVuYycgPSBnZXRfaW50IGdsMWN0eCBcIkRFUFRIX0ZVTkNcIlxuICBsZXQgc3RlbmNpbF9jbGVhcl92YWx1ZSA9IGdldF9pbnQgZ2wxY3R4IFwiU1RFTkNJTF9DTEVBUl9WQUxVRVwiXG4gIGxldCBzdGVuY2lsX2Z1bmMnID0gZ2V0X2ludCBnbDFjdHggXCJTVEVOQ0lMX0ZVTkNcIlxuICBsZXQgc3RlbmNpbF9mYWlsID0gZ2V0X2ludCBnbDFjdHggXCJTVEVOQ0lMX0ZBSUxcIlxuICBsZXQgc3RlbmNpbF9wYXNzX2RlcHRoX2ZhaWwgPSBnZXRfaW50IGdsMWN0eCBcIlNURU5DSUxfUEFTU19ERVBUSF9GQUlMXCJcbiAgbGV0IHN0ZW5jaWxfcGFzc19kZXB0aF9wYXNzID0gZ2V0X2ludCBnbDFjdHggXCJTVEVOQ0lMX1BBU1NfREVQVEhfUEFTU1wiXG4gIGxldCBzdGVuY2lsX3JlZiA9IGdldF9pbnQgZ2wxY3R4IFwiU1RFTkNJTF9SRUZcIlxuICBsZXQgc3RlbmNpbF92YWx1ZV9tYXNrID0gZ2V0X2ludCBnbDFjdHggXCJTVEVOQ0lMX1ZBTFVFX01BU0tcIlxuICBsZXQgc3RlbmNpbF93cml0ZW1hc2sgPSBnZXRfaW50IGdsMWN0eCBcIlNURU5DSUxfV1JJVEVNQVNLXCJcbiAgbGV0IHN0ZW5jaWxfYmFja19mdW5jID0gZ2V0X2ludCBnbDFjdHggXCJTVEVOQ0lMX0JBQ0tfRlVOQ1wiXG4gIGxldCBzdGVuY2lsX2JhY2tfZmFpbCA9IGdldF9pbnQgZ2wxY3R4IFwiU1RFTkNJTF9CQUNLX0ZBSUxcIlxuICBsZXQgc3RlbmNpbF9iYWNrX3Bhc3NfZGVwdGhfZmFpbCA9IGdldF9pbnQgZ2wxY3R4IFwiU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfRkFJTFwiXG4gIGxldCBzdGVuY2lsX2JhY2tfcGFzc19kZXB0aF9wYXNzID0gZ2V0X2ludCBnbDFjdHggXCJTVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9QQVNTXCJcbiAgbGV0IHN0ZW5jaWxfYmFja19yZWYgPSBnZXRfaW50IGdsMWN0eCBcIlNURU5DSUxfQkFDS19SRUZcIlxuICBsZXQgc3RlbmNpbF9iYWNrX3ZhbHVlX21hc2sgPSBnZXRfaW50IGdsMWN0eCBcIlNURU5DSUxfQkFDS19WQUxVRV9NQVNLXCJcbiAgbGV0IHN0ZW5jaWxfYmFja193cml0ZW1hc2sgPSBnZXRfaW50IGdsMWN0eCBcIlNURU5DSUxfQkFDS19XUklURU1BU0tcIlxuICBsZXQgdmlld3BvcnQnID0gZ2V0X2ludCBnbDFjdHggXCJWSUVXUE9SVFwiXG4gIGxldCBzY2lzc29yX2JveCA9IGdldF9pbnQgZ2wxY3R4IFwiU0NJU1NPUl9CT1hcIlxuICBsZXQgY29sb3JfY2xlYXJfdmFsdWUgPSBnZXRfaW50IGdsMWN0eCBcIkNPTE9SX0NMRUFSX1ZBTFVFXCJcbiAgbGV0IGNvbG9yX3dyaXRlbWFzayA9IGdldF9pbnQgZ2wxY3R4IFwiQ09MT1JfV1JJVEVNQVNLXCJcbiAgbGV0IHVucGFja19hbGlnbm1lbnQgPSBnZXRfaW50IGdsMWN0eCBcIlVOUEFDS19BTElHTk1FTlRcIlxuICBsZXQgcGFja19hbGlnbm1lbnQgPSBnZXRfaW50IGdsMWN0eCBcIlBBQ0tfQUxJR05NRU5UXCJcbiAgbGV0IG1heF90ZXh0dXJlX3NpemUgPSBnZXRfaW50IGdsMWN0eCBcIk1BWF9URVhUVVJFX1NJWkVcIlxuICBsZXQgbWF4X3ZpZXdwb3J0X2RpbXMgPSBnZXRfaW50IGdsMWN0eCBcIk1BWF9WSUVXUE9SVF9ESU1TXCJcbiAgbGV0IHN1YnBpeGVsX2JpdHMgPSBnZXRfaW50IGdsMWN0eCBcIlNVQlBJWEVMX0JJVFNcIlxuICBsZXQgcmVkX2JpdHMgPSBnZXRfaW50IGdsMWN0eCBcIlJFRF9CSVRTXCJcbiAgbGV0IGdyZWVuX2JpdHMgPSBnZXRfaW50IGdsMWN0eCBcIkdSRUVOX0JJVFNcIlxuICBsZXQgYmx1ZV9iaXRzID0gZ2V0X2ludCBnbDFjdHggXCJCTFVFX0JJVFNcIlxuICBsZXQgYWxwaGFfYml0cyA9IGdldF9pbnQgZ2wxY3R4IFwiQUxQSEFfQklUU1wiXG4gIGxldCBkZXB0aF9iaXRzID0gZ2V0X2ludCBnbDFjdHggXCJERVBUSF9CSVRTXCJcbiAgbGV0IHN0ZW5jaWxfYml0cyA9IGdldF9pbnQgZ2wxY3R4IFwiU1RFTkNJTF9CSVRTXCJcbiAgbGV0IHBvbHlnb25fb2Zmc2V0X3VuaXRzID0gZ2V0X2ludCBnbDFjdHggXCJQT0xZR09OX09GRlNFVF9VTklUU1wiXG4gIGxldCBwb2x5Z29uX29mZnNldF9mYWN0b3IgPSBnZXRfaW50IGdsMWN0eCBcIlBPTFlHT05fT0ZGU0VUX0ZBQ1RPUlwiXG4gIGxldCB0ZXh0dXJlX2JpbmRpbmdfMmQgPSBnZXRfaW50IGdsMWN0eCBcIlRFWFRVUkVfQklORElOR18yRFwiXG4gIGxldCBzYW1wbGVfYnVmZmVycyA9IGdldF9pbnQgZ2wxY3R4IFwiU0FNUExFX0JVRkZFUlNcIlxuICBsZXQgc2FtcGxlcyA9IGdldF9pbnQgZ2wxY3R4IFwiU0FNUExFU1wiXG4gIGxldCBzYW1wbGVfY292ZXJhZ2VfdmFsdWUgPSBnZXRfaW50IGdsMWN0eCBcIlNBTVBMRV9DT1ZFUkFHRV9WQUxVRVwiXG4gIGxldCBzYW1wbGVfY292ZXJhZ2VfaW52ZXJ0ID0gZ2V0X2ludCBnbDFjdHggXCJTQU1QTEVfQ09WRVJBR0VfSU5WRVJUXCJcbiAgbGV0IGNvbXByZXNzZWRfdGV4dHVyZV9mb3JtYXRzID0gZ2V0X2ludCBnbDFjdHggXCJDT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUU1wiXG4gIGxldCBkb250X2NhcmUgPSBnZXRfaW50IGdsMWN0eCBcIkRPTlRfQ0FSRVwiXG4gIGxldCBmYXN0ZXN0ID0gZ2V0X2ludCBnbDFjdHggXCJGQVNURVNUXCJcbiAgbGV0IG5pY2VzdCA9IGdldF9pbnQgZ2wxY3R4IFwiTklDRVNUXCJcbiAgbGV0IGdlbmVyYXRlX21pcG1hcF9oaW50ID0gZ2V0X2ludCBnbDFjdHggXCJHRU5FUkFURV9NSVBNQVBfSElOVFwiXG4gIGxldCBieXRlID0gZ2V0X2ludCBnbDFjdHggXCJCWVRFXCJcbiAgbGV0IHVuc2lnbmVkX2J5dGUgPSBnZXRfaW50IGdsMWN0eCBcIlVOU0lHTkVEX0JZVEVcIlxuICBsZXQgc2hvcnQgPSBnZXRfaW50IGdsMWN0eCBcIlNIT1JUXCJcbiAgbGV0IHVuc2lnbmVkX3Nob3J0ID0gZ2V0X2ludCBnbDFjdHggXCJVTlNJR05FRF9TSE9SVFwiXG4gIGxldCBpbnQgPSBnZXRfaW50IGdsMWN0eCBcIklOVFwiXG4gIGxldCB1bnNpZ25lZF9pbnQgPSBnZXRfaW50IGdsMWN0eCBcIlVOU0lHTkVEX0lOVFwiXG4gIGxldCBmbG9hdCA9IGdldF9pbnQgZ2wxY3R4IFwiRkxPQVRcIlxuICBsZXQgZGVwdGhfY29tcG9uZW50ID0gZ2V0X2ludCBnbDFjdHggXCJERVBUSF9DT01QT05FTlRcIlxuICBsZXQgYWxwaGEgPSBnZXRfaW50IGdsMWN0eCBcIkFMUEhBXCJcbiAgbGV0IHJnYiA9IGdldF9pbnQgZ2wxY3R4IFwiUkdCXCJcbiAgbGV0IHJnYmEgPSBnZXRfaW50IGdsMWN0eCBcIlJHQkFcIlxuICBsZXQgbHVtaW5hbmNlID0gZ2V0X2ludCBnbDFjdHggXCJMVU1JTkFOQ0VcIlxuICBsZXQgbHVtaW5hbmNlX2FscGhhID0gZ2V0X2ludCBnbDFjdHggXCJMVU1JTkFOQ0VfQUxQSEFcIlxuICBsZXQgdW5zaWduZWRfc2hvcnRfNF80XzRfNCA9IGdldF9pbnQgZ2wxY3R4IFwiVU5TSUdORURfU0hPUlRfNF80XzRfNFwiXG4gIGxldCB1bnNpZ25lZF9zaG9ydF81XzVfNV8xID0gZ2V0X2ludCBnbDFjdHggXCJVTlNJR05FRF9TSE9SVF81XzVfNV8xXCJcbiAgbGV0IHVuc2lnbmVkX3Nob3J0XzVfNl81ID0gZ2V0X2ludCBnbDFjdHggXCJVTlNJR05FRF9TSE9SVF81XzZfNVwiXG4gIGxldCBmcmFnbWVudF9zaGFkZXIgPSBnZXRfaW50IGdsMWN0eCBcIkZSQUdNRU5UX1NIQURFUlwiXG4gIGxldCB2ZXJ0ZXhfc2hhZGVyID0gZ2V0X2ludCBnbDFjdHggXCJWRVJURVhfU0hBREVSXCJcbiAgbGV0IG1heF92ZXJ0ZXhfYXR0cmlicyA9IGdldF9pbnQgZ2wxY3R4IFwiTUFYX1ZFUlRFWF9BVFRSSUJTXCJcbiAgbGV0IG1heF92ZXJ0ZXhfdW5pZm9ybV92ZWN0b3JzID0gZ2V0X2ludCBnbDFjdHggXCJNQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SU1wiXG4gIGxldCBtYXhfdmFyeWluZ192ZWN0b3JzID0gZ2V0X2ludCBnbDFjdHggXCJNQVhfVkFSWUlOR19WRUNUT1JTXCJcbiAgbGV0IG1heF9jb21iaW5lZF90ZXh0dXJlX2ltYWdlX3VuaXRzID0gZ2V0X2ludCBnbDFjdHggXCJNQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUU1wiXG4gIGxldCBtYXhfdmVydGV4X3RleHR1cmVfaW1hZ2VfdW5pdHMgPSBnZXRfaW50IGdsMWN0eCBcIk1BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUU1wiXG4gIGxldCBtYXhfdGV4dHVyZV9pbWFnZV91bml0cyA9IGdldF9pbnQgZ2wxY3R4IFwiTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFNcIlxuICBsZXQgbWF4X2ZyYWdtZW50X3VuaWZvcm1fdmVjdG9ycyA9IGdldF9pbnQgZ2wxY3R4IFwiTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SU1wiXG4gIGxldCBzaGFkZXJfdHlwZSA9IGdldF9pbnQgZ2wxY3R4IFwiU0hBREVSX1RZUEVcIlxuICBsZXQgZGVsZXRlX3N0YXR1cyA9IGdldF9pbnQgZ2wxY3R4IFwiREVMRVRFX1NUQVRVU1wiXG4gIGxldCBsaW5rX3N0YXR1cyA9IGdldF9pbnQgZ2wxY3R4IFwiTElOS19TVEFUVVNcIlxuICBsZXQgdmFsaWRhdGVfc3RhdHVzID0gZ2V0X2ludCBnbDFjdHggXCJWQUxJREFURV9TVEFUVVNcIlxuICBsZXQgYXR0YWNoZWRfc2hhZGVycyA9IGdldF9pbnQgZ2wxY3R4IFwiQVRUQUNIRURfU0hBREVSU1wiXG4gIGxldCBhY3RpdmVfdW5pZm9ybXMgPSBnZXRfaW50IGdsMWN0eCBcIkFDVElWRV9VTklGT1JNU1wiXG4gIGxldCBhY3RpdmVfYXR0cmlidXRlcyA9IGdldF9pbnQgZ2wxY3R4IFwiQUNUSVZFX0FUVFJJQlVURVNcIlxuICBsZXQgc2hhZGluZ19sYW5ndWFnZV92ZXJzaW9uID0gZ2V0X2ludCBnbDFjdHggXCJTSEFESU5HX0xBTkdVQUdFX1ZFUlNJT05cIlxuICBsZXQgY3VycmVudF9wcm9ncmFtID0gZ2V0X2ludCBnbDFjdHggXCJDVVJSRU5UX1BST0dSQU1cIlxuICBsZXQgbmV2ZXIgPSBnZXRfaW50IGdsMWN0eCBcIk5FVkVSXCJcbiAgbGV0IGxlc3MgPSBnZXRfaW50IGdsMWN0eCBcIkxFU1NcIlxuICBsZXQgZXF1YWwgPSBnZXRfaW50IGdsMWN0eCBcIkVRVUFMXCJcbiAgbGV0IGxlcXVhbCA9IGdldF9pbnQgZ2wxY3R4IFwiTEVRVUFMXCJcbiAgbGV0IGdyZWF0ZXIgPSBnZXRfaW50IGdsMWN0eCBcIkdSRUFURVJcIlxuICBsZXQgbm90ZXF1YWwgPSBnZXRfaW50IGdsMWN0eCBcIk5PVEVRVUFMXCJcbiAgbGV0IGdlcXVhbCA9IGdldF9pbnQgZ2wxY3R4IFwiR0VRVUFMXCJcbiAgbGV0IGFsd2F5cyA9IGdldF9pbnQgZ2wxY3R4IFwiQUxXQVlTXCJcbiAgbGV0IGtlZXAgPSBnZXRfaW50IGdsMWN0eCBcIktFRVBcIlxuICBsZXQgcmVwbGFjZSA9IGdldF9pbnQgZ2wxY3R4IFwiUkVQTEFDRVwiXG4gIGxldCBpbmNyID0gZ2V0X2ludCBnbDFjdHggXCJJTkNSXCJcbiAgbGV0IGRlY3IgPSBnZXRfaW50IGdsMWN0eCBcIkRFQ1JcIlxuICBsZXQgaW52ZXJ0ID0gZ2V0X2ludCBnbDFjdHggXCJJTlZFUlRcIlxuICBsZXQgaW5jcl93cmFwID0gZ2V0X2ludCBnbDFjdHggXCJJTkNSX1dSQVBcIlxuICBsZXQgZGVjcl93cmFwID0gZ2V0X2ludCBnbDFjdHggXCJERUNSX1dSQVBcIlxuICBsZXQgdmVuZG9yID0gZ2V0X2ludCBnbDFjdHggXCJWRU5ET1JcIlxuICBsZXQgcmVuZGVyZXIgPSBnZXRfaW50IGdsMWN0eCBcIlJFTkRFUkVSXCJcbiAgbGV0IHZlcnNpb24gPSBnZXRfaW50IGdsMWN0eCBcIlZFUlNJT05cIlxuICBsZXQgbmVhcmVzdCA9IGdldF9pbnQgZ2wxY3R4IFwiTkVBUkVTVFwiXG4gIGxldCBsaW5lYXIgPSBnZXRfaW50IGdsMWN0eCBcIkxJTkVBUlwiXG4gIGxldCBuZWFyZXN0X21pcG1hcF9uZWFyZXN0ID0gZ2V0X2ludCBnbDFjdHggXCJORUFSRVNUX01JUE1BUF9ORUFSRVNUXCJcbiAgbGV0IGxpbmVhcl9taXBtYXBfbmVhcmVzdCA9IGdldF9pbnQgZ2wxY3R4IFwiTElORUFSX01JUE1BUF9ORUFSRVNUXCJcbiAgbGV0IG5lYXJlc3RfbWlwbWFwX2xpbmVhciA9IGdldF9pbnQgZ2wxY3R4IFwiTkVBUkVTVF9NSVBNQVBfTElORUFSXCJcbiAgbGV0IGxpbmVhcl9taXBtYXBfbGluZWFyID0gZ2V0X2ludCBnbDFjdHggXCJMSU5FQVJfTUlQTUFQX0xJTkVBUlwiXG4gIGxldCB0ZXh0dXJlX21hZ19maWx0ZXIgPSBnZXRfaW50IGdsMWN0eCBcIlRFWFRVUkVfTUFHX0ZJTFRFUlwiXG4gIGxldCB0ZXh0dXJlX21pbl9maWx0ZXIgPSBnZXRfaW50IGdsMWN0eCBcIlRFWFRVUkVfTUlOX0ZJTFRFUlwiXG4gIGxldCB0ZXh0dXJlX3dyYXBfcyA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRV9XUkFQX1NcIlxuICBsZXQgdGV4dHVyZV93cmFwX3QgPSBnZXRfaW50IGdsMWN0eCBcIlRFWFRVUkVfV1JBUF9UXCJcbiAgbGV0IHRleHR1cmVfMmQgPSBnZXRfaW50IGdsMWN0eCBcIlRFWFRVUkVfMkRcIlxuICBsZXQgdGV4dHVyZSA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRVwiXG4gIGxldCB0ZXh0dXJlX2N1YmVfbWFwID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFX0NVQkVfTUFQXCJcbiAgbGV0IHRleHR1cmVfYmluZGluZ19jdWJlX21hcCA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQXCJcbiAgbGV0IHRleHR1cmVfY3ViZV9tYXBfcG9zaXRpdmVfeCA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YXCJcbiAgbGV0IHRleHR1cmVfY3ViZV9tYXBfbmVnYXRpdmVfeCA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YXCJcbiAgbGV0IHRleHR1cmVfY3ViZV9tYXBfcG9zaXRpdmVfeSA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZXCJcbiAgbGV0IHRleHR1cmVfY3ViZV9tYXBfbmVnYXRpdmVfeSA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZXCJcbiAgbGV0IHRleHR1cmVfY3ViZV9tYXBfcG9zaXRpdmVfeiA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aXCJcbiAgbGV0IHRleHR1cmVfY3ViZV9tYXBfbmVnYXRpdmVfeiA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aXCJcbiAgbGV0IG1heF9jdWJlX21hcF90ZXh0dXJlX3NpemUgPSBnZXRfaW50IGdsMWN0eCBcIk1BWF9DVUJFX01BUF9URVhUVVJFX1NJWkVcIlxuICBsZXQgdGV4dHVyZTAgPSBnZXRfaW50IGdsMWN0eCBcIlRFWFRVUkUwXCJcbiAgbGV0IHRleHR1cmUxID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMVwiXG4gIGxldCB0ZXh0dXJlMiA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTJcIlxuICBsZXQgdGV4dHVyZTMgPSBnZXRfaW50IGdsMWN0eCBcIlRFWFRVUkUzXCJcbiAgbGV0IHRleHR1cmU0ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFNFwiXG4gIGxldCB0ZXh0dXJlNSA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTVcIlxuICBsZXQgdGV4dHVyZTYgPSBnZXRfaW50IGdsMWN0eCBcIlRFWFRVUkU2XCJcbiAgbGV0IHRleHR1cmU3ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFN1wiXG4gIGxldCB0ZXh0dXJlOCA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRThcIlxuICBsZXQgdGV4dHVyZTkgPSBnZXRfaW50IGdsMWN0eCBcIlRFWFRVUkU5XCJcbiAgbGV0IHRleHR1cmUxMCA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTEwXCJcbiAgbGV0IHRleHR1cmUxMSA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTExXCJcbiAgbGV0IHRleHR1cmUxMiA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTEyXCJcbiAgbGV0IHRleHR1cmUxMyA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTEzXCJcbiAgbGV0IHRleHR1cmUxNCA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTE0XCJcbiAgbGV0IHRleHR1cmUxNSA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTE1XCJcbiAgbGV0IHRleHR1cmUxNiA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTE2XCJcbiAgbGV0IHRleHR1cmUxNyA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTE3XCJcbiAgbGV0IHRleHR1cmUxOCA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTE4XCJcbiAgbGV0IHRleHR1cmUxOSA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTE5XCJcbiAgbGV0IHRleHR1cmUyMCA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTIwXCJcbiAgbGV0IHRleHR1cmUyMSA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTIxXCJcbiAgbGV0IHRleHR1cmUyMiA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTIyXCJcbiAgbGV0IHRleHR1cmUyMyA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTIzXCJcbiAgbGV0IHRleHR1cmUyNCA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTI0XCJcbiAgbGV0IHRleHR1cmUyNSA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTI1XCJcbiAgbGV0IHRleHR1cmUyNiA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTI2XCJcbiAgbGV0IHRleHR1cmUyNyA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTI3XCJcbiAgbGV0IHRleHR1cmUyOCA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTI4XCJcbiAgbGV0IHRleHR1cmUyOSA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTI5XCJcbiAgbGV0IHRleHR1cmUzMCA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTMwXCJcbiAgbGV0IHRleHR1cmUzMSA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTMxXCJcbiAgbGV0IGFjdGl2ZV90ZXh0dXJlJyA9IGdldF9pbnQgZ2wxY3R4IFwiQUNUSVZFX1RFWFRVUkVcIlxuICBsZXQgcmVwZWF0ID0gZ2V0X2ludCBnbDFjdHggXCJSRVBFQVRcIlxuICBsZXQgY2xhbXBfdG9fZWRnZSA9IGdldF9pbnQgZ2wxY3R4IFwiQ0xBTVBfVE9fRURHRVwiXG4gIGxldCBtaXJyb3JlZF9yZXBlYXQgPSBnZXRfaW50IGdsMWN0eCBcIk1JUlJPUkVEX1JFUEVBVFwiXG4gIGxldCBmbG9hdF92ZWMyID0gZ2V0X2ludCBnbDFjdHggXCJGTE9BVF9WRUMyXCJcbiAgbGV0IGZsb2F0X3ZlYzMgPSBnZXRfaW50IGdsMWN0eCBcIkZMT0FUX1ZFQzNcIlxuICBsZXQgZmxvYXRfdmVjNCA9IGdldF9pbnQgZ2wxY3R4IFwiRkxPQVRfVkVDNFwiXG4gIGxldCBpbnRfdmVjMiA9IGdldF9pbnQgZ2wxY3R4IFwiSU5UX1ZFQzJcIlxuICBsZXQgaW50X3ZlYzMgPSBnZXRfaW50IGdsMWN0eCBcIklOVF9WRUMzXCJcbiAgbGV0IGludF92ZWM0ID0gZ2V0X2ludCBnbDFjdHggXCJJTlRfVkVDNFwiXG4gIGxldCBib29sID0gZ2V0X2ludCBnbDFjdHggXCJCT09MXCJcbiAgbGV0IGJvb2xfdmVjMiA9IGdldF9pbnQgZ2wxY3R4IFwiQk9PTF9WRUMyXCJcbiAgbGV0IGJvb2xfdmVjMyA9IGdldF9pbnQgZ2wxY3R4IFwiQk9PTF9WRUMzXCJcbiAgbGV0IGJvb2xfdmVjNCA9IGdldF9pbnQgZ2wxY3R4IFwiQk9PTF9WRUM0XCJcbiAgbGV0IGZsb2F0X21hdDIgPSBnZXRfaW50IGdsMWN0eCBcIkZMT0FUX01BVDJcIlxuICBsZXQgZmxvYXRfbWF0MyA9IGdldF9pbnQgZ2wxY3R4IFwiRkxPQVRfTUFUM1wiXG4gIGxldCBmbG9hdF9tYXQ0ID0gZ2V0X2ludCBnbDFjdHggXCJGTE9BVF9NQVQ0XCJcbiAgbGV0IHNhbXBsZXJfMmQgPSBnZXRfaW50IGdsMWN0eCBcIlNBTVBMRVJfMkRcIlxuICBsZXQgc2FtcGxlcl9jdWJlID0gZ2V0X2ludCBnbDFjdHggXCJTQU1QTEVSX0NVQkVcIlxuICBsZXQgdmVydGV4X2F0dHJpYl9hcnJheV9lbmFibGVkID0gZ2V0X2ludCBnbDFjdHggXCJWRVJURVhfQVRUUklCX0FSUkFZX0VOQUJMRURcIlxuICBsZXQgdmVydGV4X2F0dHJpYl9hcnJheV9zaXplID0gZ2V0X2ludCBnbDFjdHggXCJWRVJURVhfQVRUUklCX0FSUkFZX1NJWkVcIlxuICBsZXQgdmVydGV4X2F0dHJpYl9hcnJheV9zdHJpZGUgPSBnZXRfaW50IGdsMWN0eCBcIlZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFXCJcbiAgbGV0IHZlcnRleF9hdHRyaWJfYXJyYXlfdHlwZSA9IGdldF9pbnQgZ2wxY3R4IFwiVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFXCJcbiAgbGV0IHZlcnRleF9hdHRyaWJfYXJyYXlfbm9ybWFsaXplZCA9IGdldF9pbnQgZ2wxY3R4IFwiVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVEXCJcbiAgbGV0IHZlcnRleF9hdHRyaWJfYXJyYXlfcG9pbnRlciA9IGdldF9pbnQgZ2wxY3R4IFwiVkVSVEVYX0FUVFJJQl9BUlJBWV9QT0lOVEVSXCJcbiAgbGV0IHZlcnRleF9hdHRyaWJfYXJyYXlfYnVmZmVyX2JpbmRpbmcgPSBnZXRfaW50IGdsMWN0eCBcIlZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkdcIlxuICBsZXQgaW1wbGVtZW50YXRpb25fY29sb3JfcmVhZF90eXBlID0gZ2V0X2ludCBnbDFjdHggXCJJTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX1RZUEVcIlxuICBsZXQgaW1wbGVtZW50YXRpb25fY29sb3JfcmVhZF9mb3JtYXQgPSBnZXRfaW50IGdsMWN0eCBcIklNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfRk9STUFUXCJcbiAgbGV0IGNvbXBpbGVfc3RhdHVzID0gZ2V0X2ludCBnbDFjdHggXCJDT01QSUxFX1NUQVRVU1wiXG4gIGxldCBsb3dfZmxvYXQgPSBnZXRfaW50IGdsMWN0eCBcIkxPV19GTE9BVFwiXG4gIGxldCBtZWRpdW1fZmxvYXQgPSBnZXRfaW50IGdsMWN0eCBcIk1FRElVTV9GTE9BVFwiXG4gIGxldCBoaWdoX2Zsb2F0ID0gZ2V0X2ludCBnbDFjdHggXCJISUdIX0ZMT0FUXCJcbiAgbGV0IGxvd19pbnQgPSBnZXRfaW50IGdsMWN0eCBcIkxPV19JTlRcIlxuICBsZXQgbWVkaXVtX2ludCA9IGdldF9pbnQgZ2wxY3R4IFwiTUVESVVNX0lOVFwiXG4gIGxldCBoaWdoX2ludCA9IGdldF9pbnQgZ2wxY3R4IFwiSElHSF9JTlRcIlxuICBsZXQgZnJhbWVidWZmZXIgPSBnZXRfaW50IGdsMWN0eCBcIkZSQU1FQlVGRkVSXCJcbiAgbGV0IHJlbmRlcmJ1ZmZlciA9IGdldF9pbnQgZ2wxY3R4IFwiUkVOREVSQlVGRkVSXCJcbiAgbGV0IHJnYmE0ID0gZ2V0X2ludCBnbDFjdHggXCJSR0JBNFwiXG4gIGxldCByZ2I1X2ExID0gZ2V0X2ludCBnbDFjdHggXCJSR0I1X0ExXCJcbiAgbGV0IHJnYjU2NSA9IGdldF9pbnQgZ2wxY3R4IFwiUkdCNTY1XCJcbiAgbGV0IGRlcHRoX2NvbXBvbmVudDE2ID0gZ2V0X2ludCBnbDFjdHggXCJERVBUSF9DT01QT05FTlQxNlwiXG4gIGxldCBzdGVuY2lsX2luZGV4OCA9IGdldF9pbnQgZ2wxY3R4IFwiU1RFTkNJTF9JTkRFWDhcIlxuICBsZXQgZGVwdGhfc3RlbmNpbCA9IGdldF9pbnQgZ2wxY3R4IFwiREVQVEhfU1RFTkNJTFwiXG4gIGxldCByZW5kZXJidWZmZXJfd2lkdGggPSBnZXRfaW50IGdsMWN0eCBcIlJFTkRFUkJVRkZFUl9XSURUSFwiXG4gIGxldCByZW5kZXJidWZmZXJfaGVpZ2h0ID0gZ2V0X2ludCBnbDFjdHggXCJSRU5ERVJCVUZGRVJfSEVJR0hUXCJcbiAgbGV0IHJlbmRlcmJ1ZmZlcl9pbnRlcm5hbF9mb3JtYXQgPSBnZXRfaW50IGdsMWN0eCBcIlJFTkRFUkJVRkZFUl9JTlRFUk5BTF9GT1JNQVRcIlxuICBsZXQgcmVuZGVyYnVmZmVyX3JlZF9zaXplID0gZ2V0X2ludCBnbDFjdHggXCJSRU5ERVJCVUZGRVJfUkVEX1NJWkVcIlxuICBsZXQgcmVuZGVyYnVmZmVyX2dyZWVuX3NpemUgPSBnZXRfaW50IGdsMWN0eCBcIlJFTkRFUkJVRkZFUl9HUkVFTl9TSVpFXCJcbiAgbGV0IHJlbmRlcmJ1ZmZlcl9ibHVlX3NpemUgPSBnZXRfaW50IGdsMWN0eCBcIlJFTkRFUkJVRkZFUl9CTFVFX1NJWkVcIlxuICBsZXQgcmVuZGVyYnVmZmVyX2FscGhhX3NpemUgPSBnZXRfaW50IGdsMWN0eCBcIlJFTkRFUkJVRkZFUl9BTFBIQV9TSVpFXCJcbiAgbGV0IHJlbmRlcmJ1ZmZlcl9kZXB0aF9zaXplID0gZ2V0X2ludCBnbDFjdHggXCJSRU5ERVJCVUZGRVJfREVQVEhfU0laRVwiXG4gIGxldCByZW5kZXJidWZmZXJfc3RlbmNpbF9zaXplID0gZ2V0X2ludCBnbDFjdHggXCJSRU5ERVJCVUZGRVJfU1RFTkNJTF9TSVpFXCJcbiAgbGV0IGZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfb2JqZWN0X3R5cGUgPSBnZXRfaW50IGdsMWN0eCBcIkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEVcIlxuICBsZXQgZnJhbWVidWZmZXJfYXR0YWNobWVudF9vYmplY3RfbmFtZSA9IGdldF9pbnQgZ2wxY3R4IFwiRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRVwiXG4gIGxldCBmcmFtZWJ1ZmZlcl9hdHRhY2htZW50X3RleHR1cmVfbGV2ZWwgPSBnZXRfaW50IGdsMWN0eCBcIkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTFwiXG4gIGxldCBmcmFtZWJ1ZmZlcl9hdHRhY2htZW50X3RleHR1cmVfY3ViZV9tYXBfZmFjZSA9IGdldF9pbnQgZ2wxY3R4IFwiRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0VcIlxuICBsZXQgY29sb3JfYXR0YWNobWVudDAgPSBnZXRfaW50IGdsMWN0eCBcIkNPTE9SX0FUVEFDSE1FTlQwXCJcbiAgbGV0IGRlcHRoX2F0dGFjaG1lbnQgPSBnZXRfaW50IGdsMWN0eCBcIkRFUFRIX0FUVEFDSE1FTlRcIlxuICBsZXQgc3RlbmNpbF9hdHRhY2htZW50ID0gZ2V0X2ludCBnbDFjdHggXCJTVEVOQ0lMX0FUVEFDSE1FTlRcIlxuICBsZXQgZGVwdGhfc3RlbmNpbF9hdHRhY2htZW50ID0gZ2V0X2ludCBnbDFjdHggXCJERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlRcIlxuICBsZXQgbm9uZSA9IGdldF9pbnQgZ2wxY3R4IFwiTk9ORVwiXG4gIGxldCBmcmFtZWJ1ZmZlcl9jb21wbGV0ZSA9IGdldF9pbnQgZ2wxY3R4IFwiRlJBTUVCVUZGRVJfQ09NUExFVEVcIlxuICBsZXQgZnJhbWVidWZmZXJfaW5jb21wbGV0ZV9hdHRhY2htZW50ID0gZ2V0X2ludCBnbDFjdHggXCJGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlRcIlxuICBsZXQgZnJhbWVidWZmZXJfaW5jb21wbGV0ZV9taXNzaW5nX2F0dGFjaG1lbnQgPSBnZXRfaW50IGdsMWN0eCBcIkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTUlTU0lOR19BVFRBQ0hNRU5UXCJcbiAgbGV0IGZyYW1lYnVmZmVyX2luY29tcGxldGVfZGltZW5zaW9ucyA9IGdldF9pbnQgZ2wxY3R4IFwiRlJBTUVCVUZGRVJfSU5DT01QTEVURV9ESU1FTlNJT05TXCJcbiAgbGV0IGZyYW1lYnVmZmVyX3Vuc3VwcG9ydGVkID0gZ2V0X2ludCBnbDFjdHggXCJGUkFNRUJVRkZFUl9VTlNVUFBPUlRFRFwiXG4gIGxldCBmcmFtZWJ1ZmZlcl9iaW5kaW5nID0gZ2V0X2ludCBnbDFjdHggXCJGUkFNRUJVRkZFUl9CSU5ESU5HXCJcbiAgbGV0IHJlbmRlcmJ1ZmZlcl9iaW5kaW5nID0gZ2V0X2ludCBnbDFjdHggXCJSRU5ERVJCVUZGRVJfQklORElOR1wiXG4gIGxldCBtYXhfcmVuZGVyYnVmZmVyX3NpemUgPSBnZXRfaW50IGdsMWN0eCBcIk1BWF9SRU5ERVJCVUZGRVJfU0laRVwiXG4gIGxldCBpbnZhbGlkX2ZyYW1lYnVmZmVyX29wZXJhdGlvbiA9IGdldF9pbnQgZ2wxY3R4IFwiSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT05cIlxuICBsZXQgdW5wYWNrX2ZsaXBfeV93ZWJnbCA9IGdldF9pbnQgZ2wxY3R4IFwiVU5QQUNLX0ZMSVBfWV9XRUJHTFwiXG4gIGxldCB1bnBhY2tfcHJlbXVsdGlwbHlfYWxwaGFfd2ViZ2wgPSBnZXRfaW50IGdsMWN0eCBcIlVOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9XRUJHTFwiXG4gIGxldCBjb250ZXh0X2xvc3Rfd2ViZ2wgPSBnZXRfaW50IGdsMWN0eCBcIkNPTlRFWFRfTE9TVF9XRUJHTFwiXG4gIGxldCB1bnBhY2tfY29sb3JzcGFjZV9jb252ZXJzaW9uX3dlYmdsID0gZ2V0X2ludCBnbDFjdHggXCJVTlBBQ0tfQ09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdMXCJcbiAgbGV0IGJyb3dzZXJfZGVmYXVsdF93ZWJnbCA9IGdldF9pbnQgZ2wxY3R4IFwiQlJPV1NFUl9ERUZBVUxUX1dFQkdMXCJcblxuICBsZXQgZ2wyY3R4ID0gSnYuZ2V0IEp2Lmdsb2JhbCBcIldlYkdMMlJlbmRlcmluZ0NvbnRleHRcIlxuICBsZXQgcmVhZF9idWZmZXInID0gZ2V0X2ludCBnbDJjdHggXCJSRUFEX0JVRkZFUlwiXG4gIGxldCB1bnBhY2tfcm93X2xlbmd0aCA9IGdldF9pbnQgZ2wyY3R4IFwiVU5QQUNLX1JPV19MRU5HVEhcIlxuICBsZXQgdW5wYWNrX3NraXBfcm93cyA9IGdldF9pbnQgZ2wyY3R4IFwiVU5QQUNLX1NLSVBfUk9XU1wiXG4gIGxldCB1bnBhY2tfc2tpcF9waXhlbHMgPSBnZXRfaW50IGdsMmN0eCBcIlVOUEFDS19TS0lQX1BJWEVMU1wiXG4gIGxldCBwYWNrX3Jvd19sZW5ndGggPSBnZXRfaW50IGdsMmN0eCBcIlBBQ0tfUk9XX0xFTkdUSFwiXG4gIGxldCBwYWNrX3NraXBfcm93cyA9IGdldF9pbnQgZ2wyY3R4IFwiUEFDS19TS0lQX1JPV1NcIlxuICBsZXQgcGFja19za2lwX3BpeGVscyA9IGdldF9pbnQgZ2wyY3R4IFwiUEFDS19TS0lQX1BJWEVMU1wiXG4gIGxldCBjb2xvciA9IGdldF9pbnQgZ2wyY3R4IFwiQ09MT1JcIlxuICBsZXQgZGVwdGggPSBnZXRfaW50IGdsMmN0eCBcIkRFUFRIXCJcbiAgbGV0IHN0ZW5jaWwgPSBnZXRfaW50IGdsMmN0eCBcIlNURU5DSUxcIlxuICBsZXQgcmVkID0gZ2V0X2ludCBnbDJjdHggXCJSRURcIlxuICBsZXQgcmdiOCA9IGdldF9pbnQgZ2wyY3R4IFwiUkdCOFwiXG4gIGxldCByZ2JhOCA9IGdldF9pbnQgZ2wyY3R4IFwiUkdCQThcIlxuICBsZXQgcmdiMTBfYTIgPSBnZXRfaW50IGdsMmN0eCBcIlJHQjEwX0EyXCJcbiAgbGV0IHRleHR1cmVfYmluZGluZ18zZCA9IGdldF9pbnQgZ2wyY3R4IFwiVEVYVFVSRV9CSU5ESU5HXzNEXCJcbiAgbGV0IHVucGFja19za2lwX2ltYWdlcyA9IGdldF9pbnQgZ2wyY3R4IFwiVU5QQUNLX1NLSVBfSU1BR0VTXCJcbiAgbGV0IHVucGFja19pbWFnZV9oZWlnaHQgPSBnZXRfaW50IGdsMmN0eCBcIlVOUEFDS19JTUFHRV9IRUlHSFRcIlxuICBsZXQgdGV4dHVyZV8zZCA9IGdldF9pbnQgZ2wyY3R4IFwiVEVYVFVSRV8zRFwiXG4gIGxldCB0ZXh0dXJlX3dyYXBfciA9IGdldF9pbnQgZ2wyY3R4IFwiVEVYVFVSRV9XUkFQX1JcIlxuICBsZXQgbWF4XzNkX3RleHR1cmVfc2l6ZSA9IGdldF9pbnQgZ2wyY3R4IFwiTUFYXzNEX1RFWFRVUkVfU0laRVwiXG4gIGxldCB1bnNpZ25lZF9pbnRfMl8xMF8xMF8xMF9yZXYgPSBnZXRfaW50IGdsMmN0eCBcIlVOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVlwiXG4gIGxldCBtYXhfZWxlbWVudHNfdmVydGljZXMgPSBnZXRfaW50IGdsMmN0eCBcIk1BWF9FTEVNRU5UU19WRVJUSUNFU1wiXG4gIGxldCBtYXhfZWxlbWVudHNfaW5kaWNlcyA9IGdldF9pbnQgZ2wyY3R4IFwiTUFYX0VMRU1FTlRTX0lORElDRVNcIlxuICBsZXQgdGV4dHVyZV9taW5fbG9kID0gZ2V0X2ludCBnbDJjdHggXCJURVhUVVJFX01JTl9MT0RcIlxuICBsZXQgdGV4dHVyZV9tYXhfbG9kID0gZ2V0X2ludCBnbDJjdHggXCJURVhUVVJFX01BWF9MT0RcIlxuICBsZXQgdGV4dHVyZV9iYXNlX2xldmVsID0gZ2V0X2ludCBnbDJjdHggXCJURVhUVVJFX0JBU0VfTEVWRUxcIlxuICBsZXQgdGV4dHVyZV9tYXhfbGV2ZWwgPSBnZXRfaW50IGdsMmN0eCBcIlRFWFRVUkVfTUFYX0xFVkVMXCJcbiAgbGV0IG1pbiA9IGdldF9pbnQgZ2wyY3R4IFwiTUlOXCJcbiAgbGV0IG1heCA9IGdldF9pbnQgZ2wyY3R4IFwiTUFYXCJcbiAgbGV0IGRlcHRoX2NvbXBvbmVudDI0ID0gZ2V0X2ludCBnbDJjdHggXCJERVBUSF9DT01QT05FTlQyNFwiXG4gIGxldCBtYXhfdGV4dHVyZV9sb2RfYmlhcyA9IGdldF9pbnQgZ2wyY3R4IFwiTUFYX1RFWFRVUkVfTE9EX0JJQVNcIlxuICBsZXQgdGV4dHVyZV9jb21wYXJlX21vZGUgPSBnZXRfaW50IGdsMmN0eCBcIlRFWFRVUkVfQ09NUEFSRV9NT0RFXCJcbiAgbGV0IHRleHR1cmVfY29tcGFyZV9mdW5jID0gZ2V0X2ludCBnbDJjdHggXCJURVhUVVJFX0NPTVBBUkVfRlVOQ1wiXG4gIGxldCBjdXJyZW50X3F1ZXJ5ID0gZ2V0X2ludCBnbDJjdHggXCJDVVJSRU5UX1FVRVJZXCJcbiAgbGV0IHF1ZXJ5X3Jlc3VsdCA9IGdldF9pbnQgZ2wyY3R4IFwiUVVFUllfUkVTVUxUXCJcbiAgbGV0IHF1ZXJ5X3Jlc3VsdF9hdmFpbGFibGUgPSBnZXRfaW50IGdsMmN0eCBcIlFVRVJZX1JFU1VMVF9BVkFJTEFCTEVcIlxuICBsZXQgc3RyZWFtX3JlYWQgPSBnZXRfaW50IGdsMmN0eCBcIlNUUkVBTV9SRUFEXCJcbiAgbGV0IHN0cmVhbV9jb3B5ID0gZ2V0X2ludCBnbDJjdHggXCJTVFJFQU1fQ09QWVwiXG4gIGxldCBzdGF0aWNfcmVhZCA9IGdldF9pbnQgZ2wyY3R4IFwiU1RBVElDX1JFQURcIlxuICBsZXQgc3RhdGljX2NvcHkgPSBnZXRfaW50IGdsMmN0eCBcIlNUQVRJQ19DT1BZXCJcbiAgbGV0IGR5bmFtaWNfcmVhZCA9IGdldF9pbnQgZ2wyY3R4IFwiRFlOQU1JQ19SRUFEXCJcbiAgbGV0IGR5bmFtaWNfY29weSA9IGdldF9pbnQgZ2wyY3R4IFwiRFlOQU1JQ19DT1BZXCJcbiAgbGV0IG1heF9kcmF3X2J1ZmZlcnMgPSBnZXRfaW50IGdsMmN0eCBcIk1BWF9EUkFXX0JVRkZFUlNcIlxuICBsZXQgZHJhd19idWZmZXIwID0gZ2V0X2ludCBnbDJjdHggXCJEUkFXX0JVRkZFUjBcIlxuICBsZXQgZHJhd19idWZmZXIxID0gZ2V0X2ludCBnbDJjdHggXCJEUkFXX0JVRkZFUjFcIlxuICBsZXQgZHJhd19idWZmZXIyID0gZ2V0X2ludCBnbDJjdHggXCJEUkFXX0JVRkZFUjJcIlxuICBsZXQgZHJhd19idWZmZXIzID0gZ2V0X2ludCBnbDJjdHggXCJEUkFXX0JVRkZFUjNcIlxuICBsZXQgZHJhd19idWZmZXI0ID0gZ2V0X2ludCBnbDJjdHggXCJEUkFXX0JVRkZFUjRcIlxuICBsZXQgZHJhd19idWZmZXI1ID0gZ2V0X2ludCBnbDJjdHggXCJEUkFXX0JVRkZFUjVcIlxuICBsZXQgZHJhd19idWZmZXI2ID0gZ2V0X2ludCBnbDJjdHggXCJEUkFXX0JVRkZFUjZcIlxuICBsZXQgZHJhd19idWZmZXI3ID0gZ2V0X2ludCBnbDJjdHggXCJEUkFXX0JVRkZFUjdcIlxuICBsZXQgZHJhd19idWZmZXI4ID0gZ2V0X2ludCBnbDJjdHggXCJEUkFXX0JVRkZFUjhcIlxuICBsZXQgZHJhd19idWZmZXI5ID0gZ2V0X2ludCBnbDJjdHggXCJEUkFXX0JVRkZFUjlcIlxuICBsZXQgZHJhd19idWZmZXIxMCA9IGdldF9pbnQgZ2wyY3R4IFwiRFJBV19CVUZGRVIxMFwiXG4gIGxldCBkcmF3X2J1ZmZlcjExID0gZ2V0X2ludCBnbDJjdHggXCJEUkFXX0JVRkZFUjExXCJcbiAgbGV0IGRyYXdfYnVmZmVyMTIgPSBnZXRfaW50IGdsMmN0eCBcIkRSQVdfQlVGRkVSMTJcIlxuICBsZXQgZHJhd19idWZmZXIxMyA9IGdldF9pbnQgZ2wyY3R4IFwiRFJBV19CVUZGRVIxM1wiXG4gIGxldCBkcmF3X2J1ZmZlcjE0ID0gZ2V0X2ludCBnbDJjdHggXCJEUkFXX0JVRkZFUjE0XCJcbiAgbGV0IGRyYXdfYnVmZmVyMTUgPSBnZXRfaW50IGdsMmN0eCBcIkRSQVdfQlVGRkVSMTVcIlxuICBsZXQgbWF4X2ZyYWdtZW50X3VuaWZvcm1fY29tcG9uZW50cyA9IGdldF9pbnQgZ2wyY3R4IFwiTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UU1wiXG4gIGxldCBtYXhfdmVydGV4X3VuaWZvcm1fY29tcG9uZW50cyA9IGdldF9pbnQgZ2wyY3R4IFwiTUFYX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFNcIlxuICBsZXQgc2FtcGxlcl8zZCA9IGdldF9pbnQgZ2wyY3R4IFwiU0FNUExFUl8zRFwiXG4gIGxldCBzYW1wbGVyXzJkX3NoYWRvdyA9IGdldF9pbnQgZ2wyY3R4IFwiU0FNUExFUl8yRF9TSEFET1dcIlxuICBsZXQgZnJhZ21lbnRfc2hhZGVyX2Rlcml2YXRpdmVfaGludCA9IGdldF9pbnQgZ2wyY3R4IFwiRlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVFwiXG4gIGxldCBwaXhlbF9wYWNrX2J1ZmZlciA9IGdldF9pbnQgZ2wyY3R4IFwiUElYRUxfUEFDS19CVUZGRVJcIlxuICBsZXQgcGl4ZWxfdW5wYWNrX2J1ZmZlciA9IGdldF9pbnQgZ2wyY3R4IFwiUElYRUxfVU5QQUNLX0JVRkZFUlwiXG4gIGxldCBwaXhlbF9wYWNrX2J1ZmZlcl9iaW5kaW5nID0gZ2V0X2ludCBnbDJjdHggXCJQSVhFTF9QQUNLX0JVRkZFUl9CSU5ESU5HXCJcbiAgbGV0IHBpeGVsX3VucGFja19idWZmZXJfYmluZGluZyA9IGdldF9pbnQgZ2wyY3R4IFwiUElYRUxfVU5QQUNLX0JVRkZFUl9CSU5ESU5HXCJcbiAgbGV0IGZsb2F0X21hdDJ4MyA9IGdldF9pbnQgZ2wyY3R4IFwiRkxPQVRfTUFUMngzXCJcbiAgbGV0IGZsb2F0X21hdDJ4NCA9IGdldF9pbnQgZ2wyY3R4IFwiRkxPQVRfTUFUMng0XCJcbiAgbGV0IGZsb2F0X21hdDN4MiA9IGdldF9pbnQgZ2wyY3R4IFwiRkxPQVRfTUFUM3gyXCJcbiAgbGV0IGZsb2F0X21hdDN4NCA9IGdldF9pbnQgZ2wyY3R4IFwiRkxPQVRfTUFUM3g0XCJcbiAgbGV0IGZsb2F0X21hdDR4MiA9IGdldF9pbnQgZ2wyY3R4IFwiRkxPQVRfTUFUNHgyXCJcbiAgbGV0IGZsb2F0X21hdDR4MyA9IGdldF9pbnQgZ2wyY3R4IFwiRkxPQVRfTUFUNHgzXCJcbiAgbGV0IHNyZ2IgPSBnZXRfaW50IGdsMmN0eCBcIlNSR0JcIlxuICBsZXQgc3JnYjggPSBnZXRfaW50IGdsMmN0eCBcIlNSR0I4XCJcbiAgbGV0IHNyZ2I4X2FscGhhOCA9IGdldF9pbnQgZ2wyY3R4IFwiU1JHQjhfQUxQSEE4XCJcbiAgbGV0IGNvbXBhcmVfcmVmX3RvX3RleHR1cmUgPSBnZXRfaW50IGdsMmN0eCBcIkNPTVBBUkVfUkVGX1RPX1RFWFRVUkVcIlxuICBsZXQgcmdiYTMyZiA9IGdldF9pbnQgZ2wyY3R4IFwiUkdCQTMyRlwiXG4gIGxldCByZ2IzMmYgPSBnZXRfaW50IGdsMmN0eCBcIlJHQjMyRlwiXG4gIGxldCByZ2JhMTZmID0gZ2V0X2ludCBnbDJjdHggXCJSR0JBMTZGXCJcbiAgbGV0IHJnYjE2ZiA9IGdldF9pbnQgZ2wyY3R4IFwiUkdCMTZGXCJcbiAgbGV0IHZlcnRleF9hdHRyaWJfYXJyYXlfaW50ZWdlciA9IGdldF9pbnQgZ2wyY3R4IFwiVkVSVEVYX0FUVFJJQl9BUlJBWV9JTlRFR0VSXCJcbiAgbGV0IG1heF9hcnJheV90ZXh0dXJlX2xheWVycyA9IGdldF9pbnQgZ2wyY3R4IFwiTUFYX0FSUkFZX1RFWFRVUkVfTEFZRVJTXCJcbiAgbGV0IG1pbl9wcm9ncmFtX3RleGVsX29mZnNldCA9IGdldF9pbnQgZ2wyY3R4IFwiTUlOX1BST0dSQU1fVEVYRUxfT0ZGU0VUXCJcbiAgbGV0IG1heF9wcm9ncmFtX3RleGVsX29mZnNldCA9IGdldF9pbnQgZ2wyY3R4IFwiTUFYX1BST0dSQU1fVEVYRUxfT0ZGU0VUXCJcbiAgbGV0IG1heF92YXJ5aW5nX2NvbXBvbmVudHMgPSBnZXRfaW50IGdsMmN0eCBcIk1BWF9WQVJZSU5HX0NPTVBPTkVOVFNcIlxuICBsZXQgdGV4dHVyZV8yZF9hcnJheSA9IGdldF9pbnQgZ2wyY3R4IFwiVEVYVFVSRV8yRF9BUlJBWVwiXG4gIGxldCB0ZXh0dXJlX2JpbmRpbmdfMmRfYXJyYXkgPSBnZXRfaW50IGdsMmN0eCBcIlRFWFRVUkVfQklORElOR18yRF9BUlJBWVwiXG4gIGxldCByMTFmX2cxMWZfYjEwZiA9IGdldF9pbnQgZ2wyY3R4IFwiUjExRl9HMTFGX0IxMEZcIlxuICBsZXQgdW5zaWduZWRfaW50XzEwZl8xMWZfMTFmX3JldiA9IGdldF9pbnQgZ2wyY3R4IFwiVU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JFVlwiXG4gIGxldCByZ2I5X2U1ID0gZ2V0X2ludCBnbDJjdHggXCJSR0I5X0U1XCJcbiAgbGV0IHVuc2lnbmVkX2ludF81XzlfOV85X3JldiA9IGdldF9pbnQgZ2wyY3R4IFwiVU5TSUdORURfSU5UXzVfOV85XzlfUkVWXCJcbiAgbGV0IHRyYW5zZm9ybV9mZWVkYmFja19idWZmZXJfbW9kZSA9IGdldF9pbnQgZ2wyY3R4IFwiVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9NT0RFXCJcbiAgbGV0IG1heF90cmFuc2Zvcm1fZmVlZGJhY2tfc2VwYXJhdGVfY29tcG9uZW50cyA9IGdldF9pbnQgZ2wyY3R4IFwiTUFYX1RSQU5TRk9STV9GRUVEQkFDS19TRVBBUkFURV9DT01QT05FTlRTXCJcbiAgbGV0IHRyYW5zZm9ybV9mZWVkYmFja192YXJ5aW5ncycgPSBnZXRfaW50IGdsMmN0eCBcIlRSQU5TRk9STV9GRUVEQkFDS19WQVJZSU5HU1wiXG4gIGxldCB0cmFuc2Zvcm1fZmVlZGJhY2tfYnVmZmVyX3N0YXJ0ID0gZ2V0X2ludCBnbDJjdHggXCJUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NUQVJUXCJcbiAgbGV0IHRyYW5zZm9ybV9mZWVkYmFja19idWZmZXJfc2l6ZSA9IGdldF9pbnQgZ2wyY3R4IFwiVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TSVpFXCJcbiAgbGV0IHRyYW5zZm9ybV9mZWVkYmFja19wcmltaXRpdmVzX3dyaXR0ZW4gPSBnZXRfaW50IGdsMmN0eCBcIlRSQU5TRk9STV9GRUVEQkFDS19QUklNSVRJVkVTX1dSSVRURU5cIlxuICBsZXQgcmFzdGVyaXplcl9kaXNjYXJkID0gZ2V0X2ludCBnbDJjdHggXCJSQVNURVJJWkVSX0RJU0NBUkRcIlxuICBsZXQgbWF4X3RyYW5zZm9ybV9mZWVkYmFja19pbnRlcmxlYXZlZF9jb21wb25lbnRzID0gZ2V0X2ludCBnbDJjdHggXCJNQVhfVFJBTlNGT1JNX0ZFRURCQUNLX0lOVEVSTEVBVkVEX0NPTVBPTkVOVFNcIlxuICBsZXQgbWF4X3RyYW5zZm9ybV9mZWVkYmFja19zZXBhcmF0ZV9hdHRyaWJzID0gZ2V0X2ludCBnbDJjdHggXCJNQVhfVFJBTlNGT1JNX0ZFRURCQUNLX1NFUEFSQVRFX0FUVFJJQlNcIlxuICBsZXQgaW50ZXJsZWF2ZWRfYXR0cmlicyA9IGdldF9pbnQgZ2wyY3R4IFwiSU5URVJMRUFWRURfQVRUUklCU1wiXG4gIGxldCBzZXBhcmF0ZV9hdHRyaWJzID0gZ2V0X2ludCBnbDJjdHggXCJTRVBBUkFURV9BVFRSSUJTXCJcbiAgbGV0IHRyYW5zZm9ybV9mZWVkYmFja19idWZmZXIgPSBnZXRfaW50IGdsMmN0eCBcIlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJcIlxuICBsZXQgdHJhbnNmb3JtX2ZlZWRiYWNrX2J1ZmZlcl9iaW5kaW5nID0gZ2V0X2ludCBnbDJjdHggXCJUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX0JJTkRJTkdcIlxuICBsZXQgcmdiYTMydWkgPSBnZXRfaW50IGdsMmN0eCBcIlJHQkEzMlVJXCJcbiAgbGV0IHJnYjMydWkgPSBnZXRfaW50IGdsMmN0eCBcIlJHQjMyVUlcIlxuICBsZXQgcmdiYTE2dWkgPSBnZXRfaW50IGdsMmN0eCBcIlJHQkExNlVJXCJcbiAgbGV0IHJnYjE2dWkgPSBnZXRfaW50IGdsMmN0eCBcIlJHQjE2VUlcIlxuICBsZXQgcmdiYTh1aSA9IGdldF9pbnQgZ2wyY3R4IFwiUkdCQThVSVwiXG4gIGxldCByZ2I4dWkgPSBnZXRfaW50IGdsMmN0eCBcIlJHQjhVSVwiXG4gIGxldCByZ2JhMzJpID0gZ2V0X2ludCBnbDJjdHggXCJSR0JBMzJJXCJcbiAgbGV0IHJnYjMyaSA9IGdldF9pbnQgZ2wyY3R4IFwiUkdCMzJJXCJcbiAgbGV0IHJnYmExNmkgPSBnZXRfaW50IGdsMmN0eCBcIlJHQkExNklcIlxuICBsZXQgcmdiMTZpID0gZ2V0X2ludCBnbDJjdHggXCJSR0IxNklcIlxuICBsZXQgcmdiYThpID0gZ2V0X2ludCBnbDJjdHggXCJSR0JBOElcIlxuICBsZXQgcmdiOGkgPSBnZXRfaW50IGdsMmN0eCBcIlJHQjhJXCJcbiAgbGV0IHJlZF9pbnRlZ2VyID0gZ2V0X2ludCBnbDJjdHggXCJSRURfSU5URUdFUlwiXG4gIGxldCByZ2JfaW50ZWdlciA9IGdldF9pbnQgZ2wyY3R4IFwiUkdCX0lOVEVHRVJcIlxuICBsZXQgcmdiYV9pbnRlZ2VyID0gZ2V0X2ludCBnbDJjdHggXCJSR0JBX0lOVEVHRVJcIlxuICBsZXQgc2FtcGxlcl8yZF9hcnJheSA9IGdldF9pbnQgZ2wyY3R4IFwiU0FNUExFUl8yRF9BUlJBWVwiXG4gIGxldCBzYW1wbGVyXzJkX2FycmF5X3NoYWRvdyA9IGdldF9pbnQgZ2wyY3R4IFwiU0FNUExFUl8yRF9BUlJBWV9TSEFET1dcIlxuICBsZXQgc2FtcGxlcl9jdWJlX3NoYWRvdyA9IGdldF9pbnQgZ2wyY3R4IFwiU0FNUExFUl9DVUJFX1NIQURPV1wiXG4gIGxldCB1bnNpZ25lZF9pbnRfdmVjMiA9IGdldF9pbnQgZ2wyY3R4IFwiVU5TSUdORURfSU5UX1ZFQzJcIlxuICBsZXQgdW5zaWduZWRfaW50X3ZlYzMgPSBnZXRfaW50IGdsMmN0eCBcIlVOU0lHTkVEX0lOVF9WRUMzXCJcbiAgbGV0IHVuc2lnbmVkX2ludF92ZWM0ID0gZ2V0X2ludCBnbDJjdHggXCJVTlNJR05FRF9JTlRfVkVDNFwiXG4gIGxldCBpbnRfc2FtcGxlcl8yZCA9IGdldF9pbnQgZ2wyY3R4IFwiSU5UX1NBTVBMRVJfMkRcIlxuICBsZXQgaW50X3NhbXBsZXJfM2QgPSBnZXRfaW50IGdsMmN0eCBcIklOVF9TQU1QTEVSXzNEXCJcbiAgbGV0IGludF9zYW1wbGVyX2N1YmUgPSBnZXRfaW50IGdsMmN0eCBcIklOVF9TQU1QTEVSX0NVQkVcIlxuICBsZXQgaW50X3NhbXBsZXJfMmRfYXJyYXkgPSBnZXRfaW50IGdsMmN0eCBcIklOVF9TQU1QTEVSXzJEX0FSUkFZXCJcbiAgbGV0IHVuc2lnbmVkX2ludF9zYW1wbGVyXzJkID0gZ2V0X2ludCBnbDJjdHggXCJVTlNJR05FRF9JTlRfU0FNUExFUl8yRFwiXG4gIGxldCB1bnNpZ25lZF9pbnRfc2FtcGxlcl8zZCA9IGdldF9pbnQgZ2wyY3R4IFwiVU5TSUdORURfSU5UX1NBTVBMRVJfM0RcIlxuICBsZXQgdW5zaWduZWRfaW50X3NhbXBsZXJfY3ViZSA9IGdldF9pbnQgZ2wyY3R4IFwiVU5TSUdORURfSU5UX1NBTVBMRVJfQ1VCRVwiXG4gIGxldCB1bnNpZ25lZF9pbnRfc2FtcGxlcl8yZF9hcnJheSA9IGdldF9pbnQgZ2wyY3R4IFwiVU5TSUdORURfSU5UX1NBTVBMRVJfMkRfQVJSQVlcIlxuICBsZXQgZGVwdGhfY29tcG9uZW50MzJmID0gZ2V0X2ludCBnbDJjdHggXCJERVBUSF9DT01QT05FTlQzMkZcIlxuICBsZXQgZGVwdGgzMmZfc3RlbmNpbDggPSBnZXRfaW50IGdsMmN0eCBcIkRFUFRIMzJGX1NURU5DSUw4XCJcbiAgbGV0IGZsb2F0XzMyX3Vuc2lnbmVkX2ludF8yNF84X3JldiA9IGdldF9pbnQgZ2wyY3R4IFwiRkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWXCJcbiAgbGV0IGZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfY29sb3JfZW5jb2RpbmcgPSBnZXRfaW50IGdsMmN0eCBcIkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkdcIlxuICBsZXQgZnJhbWVidWZmZXJfYXR0YWNobWVudF9jb21wb25lbnRfdHlwZSA9IGdldF9pbnQgZ2wyY3R4IFwiRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT01QT05FTlRfVFlQRVwiXG4gIGxldCBmcmFtZWJ1ZmZlcl9hdHRhY2htZW50X3JlZF9zaXplID0gZ2V0X2ludCBnbDJjdHggXCJGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1JFRF9TSVpFXCJcbiAgbGV0IGZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfZ3JlZW5fc2l6ZSA9IGdldF9pbnQgZ2wyY3R4IFwiRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9HUkVFTl9TSVpFXCJcbiAgbGV0IGZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfYmx1ZV9zaXplID0gZ2V0X2ludCBnbDJjdHggXCJGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0JMVUVfU0laRVwiXG4gIGxldCBmcmFtZWJ1ZmZlcl9hdHRhY2htZW50X2FscGhhX3NpemUgPSBnZXRfaW50IGdsMmN0eCBcIkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQUxQSEFfU0laRVwiXG4gIGxldCBmcmFtZWJ1ZmZlcl9hdHRhY2htZW50X2RlcHRoX3NpemUgPSBnZXRfaW50IGdsMmN0eCBcIkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfREVQVEhfU0laRVwiXG4gIGxldCBmcmFtZWJ1ZmZlcl9hdHRhY2htZW50X3N0ZW5jaWxfc2l6ZSA9IGdldF9pbnQgZ2wyY3R4IFwiRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9TVEVOQ0lMX1NJWkVcIlxuICBsZXQgZnJhbWVidWZmZXJfZGVmYXVsdCA9IGdldF9pbnQgZ2wyY3R4IFwiRlJBTUVCVUZGRVJfREVGQVVMVFwiXG4gIGxldCB1bnNpZ25lZF9pbnRfMjRfOCA9IGdldF9pbnQgZ2wyY3R4IFwiVU5TSUdORURfSU5UXzI0XzhcIlxuICBsZXQgZGVwdGgyNF9zdGVuY2lsOCA9IGdldF9pbnQgZ2wyY3R4IFwiREVQVEgyNF9TVEVOQ0lMOFwiXG4gIGxldCB1bnNpZ25lZF9ub3JtYWxpemVkID0gZ2V0X2ludCBnbDJjdHggXCJVTlNJR05FRF9OT1JNQUxJWkVEXCJcbiAgbGV0IGRyYXdfZnJhbWVidWZmZXJfYmluZGluZyA9IGdldF9pbnQgZ2wyY3R4IFwiRFJBV19GUkFNRUJVRkZFUl9CSU5ESU5HXCJcbiAgbGV0IHJlYWRfZnJhbWVidWZmZXIgPSBnZXRfaW50IGdsMmN0eCBcIlJFQURfRlJBTUVCVUZGRVJcIlxuICBsZXQgZHJhd19mcmFtZWJ1ZmZlciA9IGdldF9pbnQgZ2wyY3R4IFwiRFJBV19GUkFNRUJVRkZFUlwiXG4gIGxldCByZWFkX2ZyYW1lYnVmZmVyX2JpbmRpbmcgPSBnZXRfaW50IGdsMmN0eCBcIlJFQURfRlJBTUVCVUZGRVJfQklORElOR1wiXG4gIGxldCByZW5kZXJidWZmZXJfc2FtcGxlcyA9IGdldF9pbnQgZ2wyY3R4IFwiUkVOREVSQlVGRkVSX1NBTVBMRVNcIlxuICBsZXQgZnJhbWVidWZmZXJfYXR0YWNobWVudF90ZXh0dXJlX2xheWVyID0gZ2V0X2ludCBnbDJjdHggXCJGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEFZRVJcIlxuICBsZXQgbWF4X2NvbG9yX2F0dGFjaG1lbnRzID0gZ2V0X2ludCBnbDJjdHggXCJNQVhfQ09MT1JfQVRUQUNITUVOVFNcIlxuICBsZXQgY29sb3JfYXR0YWNobWVudDEgPSBnZXRfaW50IGdsMmN0eCBcIkNPTE9SX0FUVEFDSE1FTlQxXCJcbiAgbGV0IGNvbG9yX2F0dGFjaG1lbnQyID0gZ2V0X2ludCBnbDJjdHggXCJDT0xPUl9BVFRBQ0hNRU5UMlwiXG4gIGxldCBjb2xvcl9hdHRhY2htZW50MyA9IGdldF9pbnQgZ2wyY3R4IFwiQ09MT1JfQVRUQUNITUVOVDNcIlxuICBsZXQgY29sb3JfYXR0YWNobWVudDQgPSBnZXRfaW50IGdsMmN0eCBcIkNPTE9SX0FUVEFDSE1FTlQ0XCJcbiAgbGV0IGNvbG9yX2F0dGFjaG1lbnQ1ID0gZ2V0X2ludCBnbDJjdHggXCJDT0xPUl9BVFRBQ0hNRU5UNVwiXG4gIGxldCBjb2xvcl9hdHRhY2htZW50NiA9IGdldF9pbnQgZ2wyY3R4IFwiQ09MT1JfQVRUQUNITUVOVDZcIlxuICBsZXQgY29sb3JfYXR0YWNobWVudDcgPSBnZXRfaW50IGdsMmN0eCBcIkNPTE9SX0FUVEFDSE1FTlQ3XCJcbiAgbGV0IGNvbG9yX2F0dGFjaG1lbnQ4ID0gZ2V0X2ludCBnbDJjdHggXCJDT0xPUl9BVFRBQ0hNRU5UOFwiXG4gIGxldCBjb2xvcl9hdHRhY2htZW50OSA9IGdldF9pbnQgZ2wyY3R4IFwiQ09MT1JfQVRUQUNITUVOVDlcIlxuICBsZXQgY29sb3JfYXR0YWNobWVudDEwID0gZ2V0X2ludCBnbDJjdHggXCJDT0xPUl9BVFRBQ0hNRU5UMTBcIlxuICBsZXQgY29sb3JfYXR0YWNobWVudDExID0gZ2V0X2ludCBnbDJjdHggXCJDT0xPUl9BVFRBQ0hNRU5UMTFcIlxuICBsZXQgY29sb3JfYXR0YWNobWVudDEyID0gZ2V0X2ludCBnbDJjdHggXCJDT0xPUl9BVFRBQ0hNRU5UMTJcIlxuICBsZXQgY29sb3JfYXR0YWNobWVudDEzID0gZ2V0X2ludCBnbDJjdHggXCJDT0xPUl9BVFRBQ0hNRU5UMTNcIlxuICBsZXQgY29sb3JfYXR0YWNobWVudDE0ID0gZ2V0X2ludCBnbDJjdHggXCJDT0xPUl9BVFRBQ0hNRU5UMTRcIlxuICBsZXQgY29sb3JfYXR0YWNobWVudDE1ID0gZ2V0X2ludCBnbDJjdHggXCJDT0xPUl9BVFRBQ0hNRU5UMTVcIlxuICBsZXQgZnJhbWVidWZmZXJfaW5jb21wbGV0ZV9tdWx0aXNhbXBsZSA9IGdldF9pbnQgZ2wyY3R4IFwiRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NVUxUSVNBTVBMRVwiXG4gIGxldCBtYXhfc2FtcGxlcyA9IGdldF9pbnQgZ2wyY3R4IFwiTUFYX1NBTVBMRVNcIlxuICBsZXQgaGFsZl9mbG9hdCA9IGdldF9pbnQgZ2wyY3R4IFwiSEFMRl9GTE9BVFwiXG4gIGxldCByZyA9IGdldF9pbnQgZ2wyY3R4IFwiUkdcIlxuICBsZXQgcmdfaW50ZWdlciA9IGdldF9pbnQgZ2wyY3R4IFwiUkdfSU5URUdFUlwiXG4gIGxldCByOCA9IGdldF9pbnQgZ2wyY3R4IFwiUjhcIlxuICBsZXQgcmc4ID0gZ2V0X2ludCBnbDJjdHggXCJSRzhcIlxuICBsZXQgcjE2ZiA9IGdldF9pbnQgZ2wyY3R4IFwiUjE2RlwiXG4gIGxldCByMzJmID0gZ2V0X2ludCBnbDJjdHggXCJSMzJGXCJcbiAgbGV0IHJnMTZmID0gZ2V0X2ludCBnbDJjdHggXCJSRzE2RlwiXG4gIGxldCByZzMyZiA9IGdldF9pbnQgZ2wyY3R4IFwiUkczMkZcIlxuICBsZXQgcjhpID0gZ2V0X2ludCBnbDJjdHggXCJSOElcIlxuICBsZXQgcjh1aSA9IGdldF9pbnQgZ2wyY3R4IFwiUjhVSVwiXG4gIGxldCByMTZpID0gZ2V0X2ludCBnbDJjdHggXCJSMTZJXCJcbiAgbGV0IHIxNnVpID0gZ2V0X2ludCBnbDJjdHggXCJSMTZVSVwiXG4gIGxldCByMzJpID0gZ2V0X2ludCBnbDJjdHggXCJSMzJJXCJcbiAgbGV0IHIzMnVpID0gZ2V0X2ludCBnbDJjdHggXCJSMzJVSVwiXG4gIGxldCByZzhpID0gZ2V0X2ludCBnbDJjdHggXCJSRzhJXCJcbiAgbGV0IHJnOHVpID0gZ2V0X2ludCBnbDJjdHggXCJSRzhVSVwiXG4gIGxldCByZzE2aSA9IGdldF9pbnQgZ2wyY3R4IFwiUkcxNklcIlxuICBsZXQgcmcxNnVpID0gZ2V0X2ludCBnbDJjdHggXCJSRzE2VUlcIlxuICBsZXQgcmczMmkgPSBnZXRfaW50IGdsMmN0eCBcIlJHMzJJXCJcbiAgbGV0IHJnMzJ1aSA9IGdldF9pbnQgZ2wyY3R4IFwiUkczMlVJXCJcbiAgbGV0IHZlcnRleF9hcnJheV9iaW5kaW5nID0gZ2V0X2ludCBnbDJjdHggXCJWRVJURVhfQVJSQVlfQklORElOR1wiXG4gIGxldCByOF9zbm9ybSA9IGdldF9pbnQgZ2wyY3R4IFwiUjhfU05PUk1cIlxuICBsZXQgcmc4X3Nub3JtID0gZ2V0X2ludCBnbDJjdHggXCJSRzhfU05PUk1cIlxuICBsZXQgcmdiOF9zbm9ybSA9IGdldF9pbnQgZ2wyY3R4IFwiUkdCOF9TTk9STVwiXG4gIGxldCByZ2JhOF9zbm9ybSA9IGdldF9pbnQgZ2wyY3R4IFwiUkdCQThfU05PUk1cIlxuICBsZXQgc2lnbmVkX25vcm1hbGl6ZWQgPSBnZXRfaW50IGdsMmN0eCBcIlNJR05FRF9OT1JNQUxJWkVEXCJcbiAgbGV0IGNvcHlfcmVhZF9idWZmZXIgPSBnZXRfaW50IGdsMmN0eCBcIkNPUFlfUkVBRF9CVUZGRVJcIlxuICBsZXQgY29weV93cml0ZV9idWZmZXIgPSBnZXRfaW50IGdsMmN0eCBcIkNPUFlfV1JJVEVfQlVGRkVSXCJcbiAgbGV0IGNvcHlfcmVhZF9idWZmZXJfYmluZGluZyA9IGdldF9pbnQgZ2wyY3R4IFwiQ09QWV9SRUFEX0JVRkZFUl9CSU5ESU5HXCJcbiAgbGV0IGNvcHlfd3JpdGVfYnVmZmVyX2JpbmRpbmcgPSBnZXRfaW50IGdsMmN0eCBcIkNPUFlfV1JJVEVfQlVGRkVSX0JJTkRJTkdcIlxuICBsZXQgdW5pZm9ybV9idWZmZXIgPSBnZXRfaW50IGdsMmN0eCBcIlVOSUZPUk1fQlVGRkVSXCJcbiAgbGV0IHVuaWZvcm1fYnVmZmVyX2JpbmRpbmcgPSBnZXRfaW50IGdsMmN0eCBcIlVOSUZPUk1fQlVGRkVSX0JJTkRJTkdcIlxuICBsZXQgdW5pZm9ybV9idWZmZXJfc3RhcnQgPSBnZXRfaW50IGdsMmN0eCBcIlVOSUZPUk1fQlVGRkVSX1NUQVJUXCJcbiAgbGV0IHVuaWZvcm1fYnVmZmVyX3NpemUgPSBnZXRfaW50IGdsMmN0eCBcIlVOSUZPUk1fQlVGRkVSX1NJWkVcIlxuICBsZXQgbWF4X3ZlcnRleF91bmlmb3JtX2Jsb2NrcyA9IGdldF9pbnQgZ2wyY3R4IFwiTUFYX1ZFUlRFWF9VTklGT1JNX0JMT0NLU1wiXG4gIGxldCBtYXhfZnJhZ21lbnRfdW5pZm9ybV9ibG9ja3MgPSBnZXRfaW50IGdsMmN0eCBcIk1BWF9GUkFHTUVOVF9VTklGT1JNX0JMT0NLU1wiXG4gIGxldCBtYXhfY29tYmluZWRfdW5pZm9ybV9ibG9ja3MgPSBnZXRfaW50IGdsMmN0eCBcIk1BWF9DT01CSU5FRF9VTklGT1JNX0JMT0NLU1wiXG4gIGxldCBtYXhfdW5pZm9ybV9idWZmZXJfYmluZGluZ3MgPSBnZXRfaW50IGdsMmN0eCBcIk1BWF9VTklGT1JNX0JVRkZFUl9CSU5ESU5HU1wiXG4gIGxldCBtYXhfdW5pZm9ybV9ibG9ja19zaXplID0gZ2V0X2ludCBnbDJjdHggXCJNQVhfVU5JRk9STV9CTE9DS19TSVpFXCJcbiAgbGV0IG1heF9jb21iaW5lZF92ZXJ0ZXhfdW5pZm9ybV9jb21wb25lbnRzID0gZ2V0X2ludCBnbDJjdHggXCJNQVhfQ09NQklORURfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UU1wiXG4gIGxldCBtYXhfY29tYmluZWRfZnJhZ21lbnRfdW5pZm9ybV9jb21wb25lbnRzID0gZ2V0X2ludCBnbDJjdHggXCJNQVhfQ09NQklORURfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTXCJcbiAgbGV0IHVuaWZvcm1fYnVmZmVyX29mZnNldF9hbGlnbm1lbnQgPSBnZXRfaW50IGdsMmN0eCBcIlVOSUZPUk1fQlVGRkVSX09GRlNFVF9BTElHTk1FTlRcIlxuICBsZXQgYWN0aXZlX3VuaWZvcm1fYmxvY2tzID0gZ2V0X2ludCBnbDJjdHggXCJBQ1RJVkVfVU5JRk9STV9CTE9DS1NcIlxuICBsZXQgdW5pZm9ybV90eXBlID0gZ2V0X2ludCBnbDJjdHggXCJVTklGT1JNX1RZUEVcIlxuICBsZXQgdW5pZm9ybV9zaXplID0gZ2V0X2ludCBnbDJjdHggXCJVTklGT1JNX1NJWkVcIlxuICBsZXQgdW5pZm9ybV9ibG9ja19pbmRleCA9IGdldF9pbnQgZ2wyY3R4IFwiVU5JRk9STV9CTE9DS19JTkRFWFwiXG4gIGxldCB1bmlmb3JtX29mZnNldCA9IGdldF9pbnQgZ2wyY3R4IFwiVU5JRk9STV9PRkZTRVRcIlxuICBsZXQgdW5pZm9ybV9hcnJheV9zdHJpZGUgPSBnZXRfaW50IGdsMmN0eCBcIlVOSUZPUk1fQVJSQVlfU1RSSURFXCJcbiAgbGV0IHVuaWZvcm1fbWF0cml4X3N0cmlkZSA9IGdldF9pbnQgZ2wyY3R4IFwiVU5JRk9STV9NQVRSSVhfU1RSSURFXCJcbiAgbGV0IHVuaWZvcm1faXNfcm93X21ham9yID0gZ2V0X2ludCBnbDJjdHggXCJVTklGT1JNX0lTX1JPV19NQUpPUlwiXG4gIGxldCB1bmlmb3JtX2Jsb2NrX2JpbmRpbmcnID0gZ2V0X2ludCBnbDJjdHggXCJVTklGT1JNX0JMT0NLX0JJTkRJTkdcIlxuICBsZXQgdW5pZm9ybV9ibG9ja19kYXRhX3NpemUgPSBnZXRfaW50IGdsMmN0eCBcIlVOSUZPUk1fQkxPQ0tfREFUQV9TSVpFXCJcbiAgbGV0IHVuaWZvcm1fYmxvY2tfYWN0aXZlX3VuaWZvcm1zID0gZ2V0X2ludCBnbDJjdHggXCJVTklGT1JNX0JMT0NLX0FDVElWRV9VTklGT1JNU1wiXG4gIGxldCB1bmlmb3JtX2Jsb2NrX2FjdGl2ZV91bmlmb3JtX2luZGljZXMgPSBnZXRfaW50IGdsMmN0eCBcIlVOSUZPUk1fQkxPQ0tfQUNUSVZFX1VOSUZPUk1fSU5ESUNFU1wiXG4gIGxldCB1bmlmb3JtX2Jsb2NrX3JlZmVyZW5jZWRfYnlfdmVydGV4X3NoYWRlciA9IGdldF9pbnQgZ2wyY3R4IFwiVU5JRk9STV9CTE9DS19SRUZFUkVOQ0VEX0JZX1ZFUlRFWF9TSEFERVJcIlxuICBsZXQgdW5pZm9ybV9ibG9ja19yZWZlcmVuY2VkX2J5X2ZyYWdtZW50X3NoYWRlciA9IGdldF9pbnQgZ2wyY3R4IFwiVU5JRk9STV9CTE9DS19SRUZFUkVOQ0VEX0JZX0ZSQUdNRU5UX1NIQURFUlwiXG4gIGxldCBpbnZhbGlkX2luZGV4ID0gZ2V0X2ludCBnbDJjdHggXCJJTlZBTElEX0lOREVYXCJcbiAgbGV0IG1heF92ZXJ0ZXhfb3V0cHV0X2NvbXBvbmVudHMgPSBnZXRfaW50IGdsMmN0eCBcIk1BWF9WRVJURVhfT1VUUFVUX0NPTVBPTkVOVFNcIlxuICBsZXQgbWF4X2ZyYWdtZW50X2lucHV0X2NvbXBvbmVudHMgPSBnZXRfaW50IGdsMmN0eCBcIk1BWF9GUkFHTUVOVF9JTlBVVF9DT01QT05FTlRTXCJcbiAgbGV0IG1heF9zZXJ2ZXJfd2FpdF90aW1lb3V0ID0gZ2V0X2ludCBnbDJjdHggXCJNQVhfU0VSVkVSX1dBSVRfVElNRU9VVFwiXG4gIGxldCBvYmplY3RfdHlwZSA9IGdldF9pbnQgZ2wyY3R4IFwiT0JKRUNUX1RZUEVcIlxuICBsZXQgc3luY19jb25kaXRpb24gPSBnZXRfaW50IGdsMmN0eCBcIlNZTkNfQ09ORElUSU9OXCJcbiAgbGV0IHN5bmNfc3RhdHVzID0gZ2V0X2ludCBnbDJjdHggXCJTWU5DX1NUQVRVU1wiXG4gIGxldCBzeW5jX2ZsYWdzID0gZ2V0X2ludCBnbDJjdHggXCJTWU5DX0ZMQUdTXCJcbiAgbGV0IHN5bmNfZmVuY2UgPSBnZXRfaW50IGdsMmN0eCBcIlNZTkNfRkVOQ0VcIlxuICBsZXQgc3luY19ncHVfY29tbWFuZHNfY29tcGxldGUgPSBnZXRfaW50IGdsMmN0eCBcIlNZTkNfR1BVX0NPTU1BTkRTX0NPTVBMRVRFXCJcbiAgbGV0IHVuc2lnbmFsZWQgPSBnZXRfaW50IGdsMmN0eCBcIlVOU0lHTkFMRURcIlxuICBsZXQgc2lnbmFsZWQgPSBnZXRfaW50IGdsMmN0eCBcIlNJR05BTEVEXCJcbiAgbGV0IGFscmVhZHlfc2lnbmFsZWQgPSBnZXRfaW50IGdsMmN0eCBcIkFMUkVBRFlfU0lHTkFMRURcIlxuICBsZXQgdGltZW91dF9leHBpcmVkID0gZ2V0X2ludCBnbDJjdHggXCJUSU1FT1VUX0VYUElSRURcIlxuICBsZXQgY29uZGl0aW9uX3NhdGlzZmllZCA9IGdldF9pbnQgZ2wyY3R4IFwiQ09ORElUSU9OX1NBVElTRklFRFwiXG4gIGxldCB3YWl0X2ZhaWxlZCA9IGdldF9pbnQgZ2wyY3R4IFwiV0FJVF9GQUlMRURcIlxuICBsZXQgc3luY19mbHVzaF9jb21tYW5kc19iaXQgPSBnZXRfaW50IGdsMmN0eCBcIlNZTkNfRkxVU0hfQ09NTUFORFNfQklUXCJcbiAgbGV0IHZlcnRleF9hdHRyaWJfYXJyYXlfZGl2aXNvciA9IGdldF9pbnQgZ2wyY3R4IFwiVkVSVEVYX0FUVFJJQl9BUlJBWV9ESVZJU09SXCJcbiAgbGV0IGFueV9zYW1wbGVzX3Bhc3NlZCA9IGdldF9pbnQgZ2wyY3R4IFwiQU5ZX1NBTVBMRVNfUEFTU0VEXCJcbiAgbGV0IGFueV9zYW1wbGVzX3Bhc3NlZF9jb25zZXJ2YXRpdmUgPSBnZXRfaW50IGdsMmN0eCBcIkFOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkVcIlxuICBsZXQgc2FtcGxlcl9iaW5kaW5nID0gZ2V0X2ludCBnbDJjdHggXCJTQU1QTEVSX0JJTkRJTkdcIlxuICBsZXQgcmdiMTBfYTJ1aSA9IGdldF9pbnQgZ2wyY3R4IFwiUkdCMTBfQTJVSVwiXG4gIGxldCBpbnRfMl8xMF8xMF8xMF9yZXYgPSBnZXRfaW50IGdsMmN0eCBcIklOVF8yXzEwXzEwXzEwX1JFVlwiXG4gIGxldCB0cmFuc2Zvcm1fZmVlZGJhY2sgPSBnZXRfaW50IGdsMmN0eCBcIlRSQU5TRk9STV9GRUVEQkFDS1wiXG4gIGxldCB0cmFuc2Zvcm1fZmVlZGJhY2tfcGF1c2VkID0gZ2V0X2ludCBnbDJjdHggXCJUUkFOU0ZPUk1fRkVFREJBQ0tfUEFVU0VEXCJcbiAgbGV0IHRyYW5zZm9ybV9mZWVkYmFja19hY3RpdmUgPSBnZXRfaW50IGdsMmN0eCBcIlRSQU5TRk9STV9GRUVEQkFDS19BQ1RJVkVcIlxuICBsZXQgdHJhbnNmb3JtX2ZlZWRiYWNrX2JpbmRpbmcgPSBnZXRfaW50IGdsMmN0eCBcIlRSQU5TRk9STV9GRUVEQkFDS19CSU5ESU5HXCJcbiAgbGV0IHRleHR1cmVfaW1tdXRhYmxlX2Zvcm1hdCA9IGdldF9pbnQgZ2wyY3R4IFwiVEVYVFVSRV9JTU1VVEFCTEVfRk9STUFUXCJcbiAgbGV0IG1heF9lbGVtZW50X2luZGV4ID0gZ2V0X2ludCBnbDJjdHggXCJNQVhfRUxFTUVOVF9JTkRFWFwiXG4gIGxldCB0ZXh0dXJlX2ltbXV0YWJsZV9sZXZlbHMgPSBnZXRfaW50IGdsMmN0eCBcIlRFWFRVUkVfSU1NVVRBQkxFX0xFVkVMU1wiXG4gIGxldCB0aW1lb3V0X2lnbm9yZWQgPSBnZXRfaW50IGdsMmN0eCBcIlRJTUVPVVRfSUdOT1JFRFwiXG4gIGxldCBtYXhfY2xpZW50X3dhaXRfdGltZW91dF93ZWJnbCA9IGdldF9pbnQgZ2wyY3R4IFwiTUFYX0NMSUVOVF9XQUlUX1RJTUVPVVRfV0VCR0xcIlxuZW5kXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfanNfbWV0aF9jYWxsIiwiY2FtbF9saXN0X29mX2pzX2FycmF5IiwiY2FtbF9saXN0X3RvX2pzX2FycmF5IiwiY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlIiwiY2FtbF93cmFwX2V4Y2VwdGlvbiIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJjYW1sX2NhbGwzIiwiYTIiLCJnbG9iYWxfZGF0YSIsIkp2IiwiSnN0ciIsIlN0ZGxpYl9PcHRpb24iLCJTdGRsaWJfTGlzdCIsIkZ1dCIsIkJyciIsImlzXzJkIiwibSIsImlzX2lkZW50aXR5IiwiaW52ZXJzZSIsIm11bHRpcGx5IiwibTExIiwibTEyIiwibTEzIiwibTE0IiwibTIxIiwibTIyIiwibTIzIiwibTI0IiwibTMxIiwibTMyIiwibTMzIiwibTM0IiwibTQxIiwibTQyIiwibTQzIiwibTQ0IiwiYSIsImIiLCJjIiwiZCIsImUiLCJkb21tYXRyaXhybyIsInRvX2Zsb2F0MzJfYXJyYXkiLCJvZl9mbG9hdDMyX2FycmF5IiwidG9fZmxvYXQ2NF9hcnJheSIsIm9mX2Zsb2F0NjRfYXJyYXkiLCJ2NCIsInYiLCJ4IiwieSIsInoiLCJ3IiwidHIiLCJ0b19qc29uIiwiY3N0X2hlaWdodCIsImNzdF93aWR0aCIsImNyZWF0ZSIsImF0Iiwib3B0IiwiY3MiLCJoIiwib2ZfZWwiLCJ0b19lbCIsInNldF93Iiwic2V0X2giLCJzZXRfc2l6ZV90b19sYXlvdXRfc2l6ZSIsImhpZHBpIiwiZHByIiwiY3ciLCJjaCIsImNzdF9xdWFsaXR5IiwiY3N0X3R5cGUiLCJpbWFnZV9lbmNvZGUiLCJxdWFsaXR5IiwicGFyYW0iLCJ0eXBlIiwibyIsImVuYyIsImVuY29kZSIsIm1ldGgiLCJhcmciLCJ0IiwicSIsImFyZ3MiLCJ0b19kYXRhX3VybCIsImV4biIsInRvX2Jsb2IiLCJtYXRjaCIsInNldCIsImZ1dCIsImNiIiwiYmxvYiIsImNhcHR1cmVfc3RyZWFtIiwiaHoiLCJwYXRoIiwib2Zfc3ZnIiwic3ZnIiwib2ZfcGF0aCIsInAiLCJhZGQiLCJjbG9zZSIsIm1vdmVfdG8iLCJsaW5lX3RvIiwicWN1cnZlX3RvIiwiY3giLCJjeSIsImNjdXJ2ZV90byIsImFyY190byIsInIiLCJhcmMiLCJzdGFydCIsInN0b3AiLCJhbnRpY2xvY2t3aXNlIiwicmVjdCIsImVsbGlwc2UiLCJyeCIsInJ5Iiwicm90IiwiaW1hZ2Vfc3JjX29mX2VsIiwiaW1hZ2Vfc3JjX29mX2p2IiwiY3N0X2FscGhhIiwiY3N0X2NvbG9yU3BhY2UiLCJjc3RfZGVzeW5jaHJvbml6ZWQiLCJjc3Rfd2lsbFJlYWRGcmVxdWVudGx5IiwiY3JlYXRlX2F0dHJzIiwiYWxwaGEiLCJjb2xvcl9zcGFjZSIsImRlc3luY2hyb25pemVkIiwid2lsbF9yZWFkX2ZyZXF1ZW50bHkiLCJhdHRyc19hbHBoYSIsImF0dHJzX2NvbG9yX3NwYWNlIiwiYXR0cnNfZGVzeW5jaHJvbml6ZWQiLCJhdHRyc193aWxsX3JlYWRfZnJlcXVlbnRseSIsImdldF9jb250ZXh0IiwiY252IiwiYXR0cnMiLCJjc3RfY2FudmFzIiwiY2FudmFzIiwic2F2ZSIsInJlc3RvcmUiLCJjc3RfaW1hZ2VTbW9vdGhpbmdFbmFibGVkIiwiaW1hZ2Vfc21vb3RoaW5nX2VuYWJsZWQiLCJzZXRfaW1hZ2Vfc21vb3RoaW5nX2VuYWJsZWQiLCJjc3RfaW1hZ2VTbW9vdGhpbmdRdWFsaXR5IiwiaW1hZ2Vfc21vb3RoaW5nX3F1YWxpdHkiLCJzZXRfaW1hZ2Vfc21vb3RoaW5nX3F1YWxpdHkiLCJjc3RfZ2xvYmFsQWxwaGEiLCJnbG9iYWxfYWxwaGEiLCJzZXRfZ2xvYmFsX2FscGhhIiwiY3N0X2dsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiIsImdsb2JhbF9jb21wb3NpdGVfb3AiLCJzZXRfZ2xvYmFsX2NvbXBvc2l0ZV9vcCIsImNzdF9maWx0ZXIiLCJmaWx0ZXIiLCJzZXRfZmlsdGVyIiwiZ2V0X3RyYW5zZm9ybSIsInNldF90cmFuc2Zvcm0iLCJjdHgiLCJyZXNldF90cmFuc2Zvcm0iLCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUiLCJyb3RhdGUiLCJzY2FsZSIsInN4Iiwic3kiLCJzZXRfc3Ryb2tlX3N0eWxlIiwicyIsInNldF9maWxsX3N0eWxlIiwiY29sb3IiLCJncmFkaWVudF9zdHlsZSIsIm1ha2Vfc3RvcHMiLCJnIiwic3RvcHMiLCJvZmYiLCJsaW5lYXJfZ3JhZGllbnQiLCJ4MCIsInkwIiwieDEiLCJ5MSIsInJhZGlhbF9ncmFkaWVudCIsInIwIiwicjEiLCJwYXR0ZXJuIiwiaW1nIiwicGF0dGVybl9zdHlsZSIsImNzdF9saW5lV2lkdGgiLCJsaW5lX3dpZHRoIiwic2V0X2xpbmVfd2lkdGgiLCJjc3RfbGluZUNhcCIsImxpbmVfY2FwIiwic2V0X2xpbmVfY2FwIiwiY2FwIiwiY3N0X2xpbmVKb2luIiwibGluZV9qb2luIiwic2V0X2xpbmVfam9pbiIsImpvaW4iLCJjc3RfbWl0ZXJMaW1pdCIsIm1pdGVyX2xpbWl0Iiwic2V0X21pdGVyX2xpbWl0IiwibCIsImxpbmVfZGFzaCIsInNldF9saW5lX2Rhc2giLCJkcyIsImNzdF9saW5lRGFzaE9mZnNldCIsImxpbmVfZGFzaF9vZmZzZXQiLCJzZXRfbGluZV9kYXNoX29mZnNldCIsImNzdF9zaGFkb3dCbHVyIiwic2hhZG93X2JsdXIiLCJzZXRfc2hhZG93X2JsdXIiLCJjc3Rfc2hhZG93T2Zmc2V0WCIsInNoYWRvd19vZmZzZXRfeCIsInNldF9zaGFkb3dfb2Zmc2V0X3giLCJjc3Rfc2hhZG93T2Zmc2V0WSIsInNoYWRvd19vZmZzZXRfeSIsInNldF9zaGFkb3dfb2Zmc2V0X3kiLCJjc3Rfc2hhZG93Q29sb3IiLCJzaGFkb3dfY29sb3IiLCJzZXRfc2hhZG93X2NvbG9yIiwiY29sIiwiY3N0X2ZvbnQiLCJmb250Iiwic2V0X2ZvbnQiLCJjc3RfdGV4dEFsaWduIiwidGV4dF9hbGlnbiIsInNldF90ZXh0X2FsaWduIiwiY3N0X3RleHRCYXNlbGluZSIsInRleHRfYmFzZWxpbmUiLCJzZXRfdGV4dF9iYXNlbGluZSIsImNzdF9kaXJlY3Rpb24iLCJ0ZXh0X2RpcmVjdGlvbiIsInNldF90ZXh0X2RpcmVjdGlvbiIsImNsZWFyX3JlY3QiLCJmaWxsX3JlY3QiLCJzdHJva2VfcmVjdCIsIm5vbnplcm8iLCJmaWxsIiwiZmlsbF9ydWxlIiwic3Ryb2tlIiwiY2xpcCIsImRyYXdfZm9jdXNfaWZfbmVlZGVkIiwic2Nyb2xsX3BhdGhfaW50b192aWV3IiwiaXNfcG9pbnRfaW5fZmlsbCIsImlzX3BvaW50X2luX3N0cm9rZSIsImNhbGxfdGV4dCIsIm1heF93aWR0aCIsInR4dCIsImZpbGxfdGV4dCIsInN0cm9rZV90ZXh0Iiwid2lkdGgiLCJhY3R1YWxfYm91bmRpbmdfYm94X2xlZnQiLCJhY3R1YWxfYm91bmRpbmdfYm94X3JpZ2h0IiwiZm9udF9ib3VuZGluZ19ib3hfYXNjZW50IiwiZm9udF9ib3VuZGluZ19ib3hfZGVzY2VudCIsImFjdHVhbF9ib3VuZGluZ19ib3hfYXNjZW50IiwiYWN0dWFsX2JvdW5kaW5nX2JveF9kZXNjZW50IiwiZW1faGVpZ2h0X2FzY2VudCIsImVtX2hlaWdodF9kZXNjZW50IiwiaGFuZ2luZ19iYXNlbGluZSIsImFscGhhYmV0aWNfYmFzZWxpbmUiLCJpZGVvZ3JhcGhpY19iYXNlbGluZSIsIm1lYXN1cmVfdGV4dCIsImRyYXdfaW1hZ2UiLCJpIiwiZHJhd19pbWFnZV9pbl9yZWN0IiwiZHJhd19zdWJfaW1hZ2VfaW5fcmVjdCIsInN3Iiwic2giLCJzZXR0aW5ncyIsImltYWdlX2RhdGEiLCJkYXRhIiwiY3JlYXRlX2ltYWdlX2RhdGEiLCJnZXRfaW1hZ2VfZGF0YSIsInB1dF9pbWFnZV9kYXRhIiwicHV0X3N1Yl9pbWFnZV9kYXRhIiwiY3N0X2FudGlhbGlhcyIsImNzdF9kZXB0aCIsImNzdF9wb3dlclByZWZlcmVuY2UiLCJjc3RfcHJlbXVsdGlwbGllZEFwaGEiLCJjc3RfcHJlc2VydmVEcmF3aW5nQnVmZmVyIiwiY3N0X3N0ZW5jaWwiLCJkZXB0aCIsInN0ZW5jaWwiLCJhbnRpYWxpYXMiLCJwcmVtdWx0aXBsaWVkX2FscGhhIiwicHJlc2VydmVfZHJhd2luZ19idWZmZXIiLCJwb3dlcl9wcmVmZXJlbmNlIiwiZmFpbF9pZl9tYWpvcl9wZXJmb3JtYW5jZV9jYXZlIiwidjEiLCJ3ZWJnbCIsImRyYXdpbmdfYnVmZmVyX3dpZHRoIiwiZHJhd2luZ19idWZmZXJfaGVpZ2h0IiwiaXNfY29udGV4dF9sb3N0IiwiZ2V0X3N1cHBvcnRlZF9leHRlbnNpb25zIiwiZ2V0X2V4dGVuc2lvbiIsImV4dCIsInNpemUiLCJuYW1lIiwicmFuZ2VfbWluIiwicmFuZ2VfbWF4IiwicHJlY2lzaW9uIiwib2ZfaW1hZ2VfZGF0YSIsIm9mX2ltZ19lbCIsIm9mX2NhbnZhc19lbCIsIm9mX3ZpZGVvX2VsIiwib2Zfb2Zmc2NyZWVuX2NhbnZhcyIsImFjdGl2ZV90ZXh0dXJlIiwidGV4dHVyZSIsImF0dGFjaF9zaGFkZXIiLCJwcm9ncmFtIiwic2hhZGVyIiwiYmVnaW5fcXVlcnkiLCJ0YXJnZXQiLCJxdWVyeSIsImJlZ2luX3RyYW5zZm9ybV9mZWVkYmFjayIsInByaW1pdGl2ZU1vZGUiLCJiaW5kX2F0dHJpYl9sb2NhdGlvbiIsImluZGV4IiwiYmluZF9idWZmZXIiLCJidWZmZXIiLCJiaW5kX2J1ZmZlcl9iYXNlIiwiYmluZF9idWZmZXJfcmFuZ2UiLCJvZmZzZXQiLCJiaW5kX2ZyYW1lYnVmZmVyIiwiZnJhbWVidWZmZXIiLCJiaW5kX3JlbmRlcmJ1ZmZlciIsInJlbmRlcmJ1ZmZlciIsImJpbmRfc2FtcGxlciIsInVuaXQiLCJzYW1wbGVyIiwiYmluZF90ZXh0dXJlIiwiYmluZF90cmFuc2Zvcm1fZmVlZGJhY2siLCJ0ZiIsImJpbmRfdmVydGV4X2FycmF5IiwiYXJyYXkiLCJibGVuZF9jb2xvciIsInJlZCIsImdyZWVuIiwiYmx1ZSIsImJsZW5kX2VxdWF0aW9uIiwibW9kZSIsImJsZW5kX2VxdWF0aW9uX3NlcGFyYXRlIiwibW9kZVJHQiIsIm1vZGVBbHBoYSIsImJsZW5kX2Z1bmMiLCJzZmFjdG9yIiwiZGZhY3RvciIsImJsZW5kX2Z1bmNfc2VwYXJhdGUiLCJzcmNSR0IiLCJkc3RSR0IiLCJzcmNBbHBoYSIsImRzdEFscGhhIiwiYmxpdF9mcmFtZWJ1ZmZlciIsInNyY1gwIiwic3JjWTAiLCJzcmNYMSIsInNyY1kxIiwiZHN0WDAiLCJkc3RZMCIsImRzdFgxIiwiZHN0WTEiLCJtYXNrIiwiYnVmZmVyX2RhdGEiLCJzcmNEYXRhIiwidXNhZ2UiLCJidWZmZXJfZGF0YV9zaXplIiwiYnVmZmVyX3N1Yl9kYXRhIiwiZHN0Qnl0ZU9mZnNldCIsImNoZWNrX2ZyYW1lYnVmZmVyX3N0YXR1cyIsImNsZWFyIiwiY2xlYXJfYnVmZmVyZmkiLCJkcmF3YnVmZmVyIiwiY2xlYXJfYnVmZmVyZnYiLCJ2YWx1ZXMiLCJjbGVhcl9idWZmZXJpdiIsImNsZWFyX2J1ZmZlcnVpdiIsImNsZWFyX2NvbG9yIiwiY2xlYXJfZGVwdGgiLCJjbGVhcl9zdGVuY2lsIiwiY2xpZW50X3dhaXRfc3luYyIsInN5bmMiLCJmbGFncyIsInRpbWVvdXQiLCJjb2xvcl9tYXNrIiwiY29tcGlsZV9zaGFkZXIiLCJjb21wcmVzc2VkX3RleF9pbWFnZTJkIiwibGV2ZWwiLCJpbnRlcm5hbGZvcm1hdCIsImhlaWdodCIsImJvcmRlciIsImNvbXByZXNzZWRfdGV4X2ltYWdlMmRfc2l6ZSIsImltYWdlU2l6ZSIsImNvbXByZXNzZWRfdGV4X2ltYWdlM2QiLCJjb21wcmVzc2VkX3RleF9pbWFnZTNkX3NpemUiLCJjb21wcmVzc2VkX3RleF9zdWJfaW1hZ2UyZCIsInhvZmZzZXQiLCJ5b2Zmc2V0IiwiZm9ybWF0IiwiY29tcHJlc3NlZF90ZXhfc3ViX2ltYWdlMmRfc2l6IiwiY29tcHJlc3NlZF90ZXhfc3ViX2ltYWdlM2QiLCJ6b2Zmc2V0IiwiY29tcHJlc3NlZF90ZXhfc3ViX2ltYWdlM2Rfc2l6IiwiY29weV9idWZmZXJfc3ViX2RhdGEiLCJyZWFkVGFyZ2V0Iiwid3JpdGVUYXJnZXQiLCJyZWFkT2Zmc2V0Iiwid3JpdGVPZmZzZXQiLCJjb3B5X3RleF9pbWFnZTJkIiwiY29weV90ZXhfc3ViX2ltYWdlMmQiLCJjb3B5X3RleF9zdWJfaW1hZ2UzZCIsImNyZWF0ZV9idWZmZXIiLCJjcmVhdGVfZnJhbWVidWZmZXIiLCJjcmVhdGVfcHJvZ3JhbSIsImNyZWF0ZV9xdWVyeSIsImNyZWF0ZV9yZW5kZXJidWZmZXIiLCJjcmVhdGVfc2FtcGxlciIsImNyZWF0ZV9zaGFkZXIiLCJjcmVhdGVfdGV4dHVyZSIsImNyZWF0ZV90cmFuc2Zvcm1fZmVlZGJhY2siLCJjcmVhdGVfdmVydGV4X2FycmF5IiwiY3VsbF9mYWNlIiwiZGVsZXRlX2J1ZmZlciIsImRlbGV0ZV9mcmFtZWJ1ZmZlciIsImRlbGV0ZV9wcm9ncmFtIiwiZGVsZXRlX3F1ZXJ5IiwiZGVsZXRlX3JlbmRlcmJ1ZmZlciIsImRlbGV0ZV9zYW1wbGVyIiwiZGVsZXRlX3NoYWRlciIsImRlbGV0ZV9zeW5jIiwiZGVsZXRlX3RleHR1cmUiLCJkZWxldGVfdHJhbnNmb3JtX2ZlZWRiYWNrIiwiZGVsZXRlX3ZlcnRleF9hcnJheSIsInZlcnRleEFycmF5IiwiZGVwdGhfZnVuYyIsImZ1bmMiLCJkZXB0aF9tYXNrIiwiZmxhZyIsImRldGFjaF9zaGFkZXIiLCJkaXNhYmxlIiwiZGlzYWJsZV92ZXJ0ZXhfYXR0cmliX2FycmF5IiwiZHJhd19hcnJheXMiLCJmaXJzdCIsImNvdW50IiwiZHJhd19hcnJheXNfaW5zdGFuY2VkIiwiaW5zdGFuY2VDb3VudCIsImRyYXdfYnVmZmVycyIsImJ1ZmZlcnMiLCJkcmF3X2VsZW1lbnRzIiwiZHJhd19lbGVtZW50c19pbnN0YW5jZWQiLCJkcmF3X3JhbmdlX2VsZW1lbnRzIiwiZW5kIiwiZW5hYmxlIiwiZW5hYmxlX3ZlcnRleF9hdHRyaWJfYXJyYXkiLCJlbmRfcXVlcnkiLCJlbmRfdHJhbnNmb3JtX2ZlZWRiYWNrIiwiZmVuY2Vfc3luYyIsImNvbmRpdGlvbiIsImZpbmlzaCIsImZsdXNoIiwiZnJhbWVidWZmZXJfcmVuZGVyYnVmZmVyIiwiYXR0YWNobWVudCIsInJlbmRlcmJ1ZmZlcnRhcmdldCIsImZyYW1lYnVmZmVyX3RleHR1cmUyZCIsInRleHRhcmdldCIsImZyYW1lYnVmZmVyX3RleHR1cmVfbGF5ZXIiLCJsYXllciIsImZyb250X2ZhY2UiLCJnZW5lcmF0ZV9taXBtYXAiLCJnZXRfYWN0aXZlX2F0dHJpYiIsImdldF9hY3RpdmVfdW5pZm9ybSIsImdldF9hY3RpdmVfdW5pZm9ybV9ibG9ja19uYW1lIiwidW5pZm9ybUJsb2NrSW5kZXgiLCJnZXRfYWN0aXZlX3VuaWZvcm1fYmxvY2tfcGFyYW0iLCJwbmFtZSIsImdldF9hY3RpdmVfdW5pZm9ybXMiLCJ1bmlmb3JtSW5kaWNlcyIsImdldF9hdHRhY2hlZF9zaGFkZXJzIiwiZ2V0X2F0dHJpYl9sb2NhdGlvbiIsImdldF9idWZmZXJfcGFyYW1ldGVyIiwiZ2V0X2J1ZmZlcl9zdWJfZGF0YSIsInNyY0J5dGVPZmZzZXQiLCJkc3RCdWZmZXIiLCJnZXRfZXJyb3IiLCJnZXRfZnJhZ19kYXRhX2xvY2F0aW9uIiwiZ2V0X2ZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfcGFyIiwiZ2V0X2luZGV4ZWRfcGFyYW1ldGVyIiwiZ2V0X2ludGVybmFsZm9ybWF0X3BhcmFtZXRlciIsImdldF9wYXJhbWV0ZXIiLCJnZXRfcHJvZ3JhbV9pbmZvX2xvZyIsImdldF9wcm9ncmFtX3BhcmFtZXRlciIsImdldF9xdWVyeSIsImdldF9xdWVyeV9wYXJhbWV0ZXIiLCJnZXRfcmVuZGVyYnVmZmVyX3BhcmFtZXRlciIsImdldF9zYW1wbGVyX3BhcmFtZXRlciIsImdldF9zaGFkZXJfaW5mb19sb2ciLCJnZXRfc2hhZGVyX3BhcmFtZXRlciIsImdldF9zaGFkZXJfcHJlY2lzaW9uX2Zvcm1hdCIsInNoYWRlcnR5cGUiLCJwcmVjaXNpb250eXBlIiwiZ2V0X3NoYWRlcl9zb3VyY2UiLCJnZXRfc3luY19wYXJhbWV0ZXIiLCJnZXRfdGV4X3BhcmFtZXRlciIsImdldF90cmFuc2Zvcm1fZmVlZGJhY2tfdmFyeWluZyIsImdldF91bmlmb3JtIiwibG9jYXRpb24iLCJnZXRfdW5pZm9ybV9ibG9ja19pbmRleCIsInVuaWZvcm1CbG9ja05hbWUiLCJnZXRfdW5pZm9ybV9pbmRpY2VzIiwidW5pZm9ybU5hbWVzIiwiZ2V0X3VuaWZvcm1fbG9jYXRpb24iLCJnZXRfdmVydGV4X2F0dHJpYiIsImdldF92ZXJ0ZXhfYXR0cmliX29mZnNldCIsImhpbnQiLCJpbnZhbGlkYXRlX2ZyYW1lYnVmZmVyIiwiYXR0YWNobWVudHMiLCJpbnZhbGlkYXRlX3N1Yl9mcmFtZWJ1ZmZlciIsImlzX2J1ZmZlciIsImlzX2VuYWJsZWQiLCJpc19mcmFtZWJ1ZmZlciIsImlzX3Byb2dyYW0iLCJpc19xdWVyeSIsImlzX3JlbmRlcmJ1ZmZlciIsImlzX3NhbXBsZXIiLCJpc19zaGFkZXIiLCJpc190ZXh0dXJlIiwiaXNfdHJhbnNmb3JtX2ZlZWRiYWNrIiwiaXNfdmVydGV4X2FycmF5IiwibGlua19wcm9ncmFtIiwicGF1c2VfdHJhbnNmb3JtX2ZlZWRiYWNrIiwicGl4ZWxfc3RvcmVpIiwicG9seWdvbl9vZmZzZXQiLCJmYWN0b3IiLCJ1bml0cyIsInJlYWRfYnVmZmVyIiwic3JjIiwicmVhZF9waXhlbHNfdG9fcGl4ZWxfcGFjayIsInJlYWRfcGl4ZWxzIiwiZHN0RGF0YSIsInJlbmRlcmJ1ZmZlcl9zdG9yYWdlIiwicmVuZGVyYnVmZmVyX3N0b3JhZ2VfbXVsdGlzYW1wIiwic2FtcGxlcyIsInJlc3VtZV90cmFuc2Zvcm1fZmVlZGJhY2siLCJzYW1wbGVfY292ZXJhZ2UiLCJ2YWx1ZSIsImludmVydCIsInNhbXBsZXJfcGFyYW1ldGVyZiIsInNhbXBsZXJfcGFyYW1ldGVyaSIsInNjaXNzb3IiLCJzaGFkZXJfc291cmNlIiwic291cmNlIiwic3RlbmNpbF9mdW5jIiwicmVmIiwic3RlbmNpbF9mdW5jX3NlcGFyYXRlIiwiZmFjZSIsInN0ZW5jaWxfbWFzayIsInN0ZW5jaWxfbWFza19zZXBhcmF0ZSIsInN0ZW5jaWxfb3AiLCJmYWlsIiwiemZhaWwiLCJ6cGFzcyIsInN0ZW5jaWxfb3Bfc2VwYXJhdGUiLCJ0ZXhfaW1hZ2UyZCIsInNyY09mZnNldCIsInRleF9pbWFnZTJkX29mX3NvdXJjZSIsInRleF9pbWFnZTJkX29mX3BpeGVsX3VucGFjayIsInBib09mZnNldCIsInRleF9pbWFnZTNkIiwidGV4X2ltYWdlM2Rfb2Zfc291cmNlIiwidGV4X2ltYWdlM2Rfb2ZfcGl4ZWxfdW5wYWNrIiwidGV4X3BhcmFtZXRlcmYiLCJ0ZXhfcGFyYW1ldGVyaSIsInRleF9zdG9yYWdlMmQiLCJsZXZlbHMiLCJ0ZXhfc3RvcmFnZTNkIiwidGV4X3N1Yl9pbWFnZTJkIiwidGV4X3N1Yl9pbWFnZTJkX29mX3NvdXJjZSIsInRleF9zdWJfaW1hZ2UyZF9vZl9waXhlbF91bnBhYyIsInRleF9zdWJfaW1hZ2UzZCIsInRleF9zdWJfaW1hZ2UzZF9vZl9zb3VyY2UiLCJ0ZXhfc3ViX2ltYWdlM2Rfb2ZfcGl4ZWxfdW5wYWMiLCJ0cmFuc2Zvcm1fZmVlZGJhY2tfdmFyeWluZ3MiLCJ2YXJ5aW5ncyIsImJ1ZmZlck1vZGUiLCJ1bmlmb3JtMWYiLCJ1bmlmb3JtMWZ2IiwidW5pZm9ybTFpIiwidW5pZm9ybTFpdiIsInVuaWZvcm0xdWkiLCJ2MCIsInVuaWZvcm0xdWl2IiwidW5pZm9ybTJmIiwidW5pZm9ybTJmdiIsInVuaWZvcm0yaSIsInVuaWZvcm0yaXYiLCJ1bmlmb3JtMnVpIiwidW5pZm9ybTJ1aXYiLCJ1bmlmb3JtM2YiLCJ1bmlmb3JtM2Z2IiwidW5pZm9ybTNpIiwidW5pZm9ybTNpdiIsInVuaWZvcm0zdWkiLCJ2MiIsInVuaWZvcm0zdWl2IiwidW5pZm9ybTRmIiwidW5pZm9ybTRmdiIsInVuaWZvcm00aSIsInVuaWZvcm00aXYiLCJ1bmlmb3JtNHVpIiwidjMiLCJ1bmlmb3JtNHVpdiIsInVuaWZvcm1fYmxvY2tfYmluZGluZyIsInVuaWZvcm1CbG9ja0JpbmRpbmciLCJ1bmlmb3JtX21hdHJpeDJmdiIsInRyYW5zcG9zZSIsInVuaWZvcm1fbWF0cml4MngzZnYiLCJ1bmlmb3JtX21hdHJpeDJ4NGZ2IiwidW5pZm9ybV9tYXRyaXgzZnYiLCJ1bmlmb3JtX21hdHJpeDN4MmZ2IiwidW5pZm9ybV9tYXRyaXgzeDRmdiIsInVuaWZvcm1fbWF0cml4NGZ2IiwidW5pZm9ybV9tYXRyaXg0eDJmdiIsInVuaWZvcm1fbWF0cml4NHgzZnYiLCJ1c2VfcHJvZ3JhbSIsInZhbGlkYXRlX3Byb2dyYW0iLCJ2ZXJ0ZXhfYXR0cmliMWYiLCJ2ZXJ0ZXhfYXR0cmliMWZ2IiwidmVydGV4X2F0dHJpYjJmIiwidmVydGV4X2F0dHJpYjJmdiIsInZlcnRleF9hdHRyaWIzZiIsInZlcnRleF9hdHRyaWIzZnYiLCJ2ZXJ0ZXhfYXR0cmliNGYiLCJ2ZXJ0ZXhfYXR0cmliNGZ2IiwidmVydGV4X2F0dHJpYl9kaXZpc29yIiwiZGl2aXNvciIsInZlcnRleF9hdHRyaWJfaTRpIiwidmVydGV4X2F0dHJpYl9pNGl2IiwidmVydGV4X2F0dHJpYl9pNHVpIiwidmVydGV4X2F0dHJpYl9pNHVpdiIsInZlcnRleF9hdHRyaWJfaXBvaW50ZXIiLCJzdHJpZGUiLCJ2ZXJ0ZXhfYXR0cmliX3BvaW50ZXIiLCJub3JtYWxpemVkIiwidmlld3BvcnQiLCJ3YWl0X3N5bmMiLCJnZXRfaW50IiwiZ2wxY3R4IiwiZGVwdGhfYnVmZmVyX2JpdCIsInN0ZW5jaWxfYnVmZmVyX2JpdCIsImNvbG9yX2J1ZmZlcl9iaXQiLCJwb2ludHMiLCJsaW5lcyIsImxpbmVfbG9vcCIsImxpbmVfc3RyaXAiLCJ0cmlhbmdsZXMiLCJ0cmlhbmdsZV9zdHJpcCIsInRyaWFuZ2xlX2ZhbiIsInplcm8iLCJvbmUiLCJzcmNfY29sb3IiLCJvbmVfbWludXNfc3JjX2NvbG9yIiwic3JjX2FscGhhIiwib25lX21pbnVzX3NyY19hbHBoYSIsImRzdF9hbHBoYSIsIm9uZV9taW51c19kc3RfYWxwaGEiLCJkc3RfY29sb3IiLCJvbmVfbWludXNfZHN0X2NvbG9yIiwic3JjX2FscGhhX3NhdHVyYXRlIiwiZnVuY19hZGQiLCJibGVuZF9lcXVhdGlvbl9yZ2IiLCJibGVuZF9lcXVhdGlvbl9hbHBoYSIsImZ1bmNfc3VidHJhY3QiLCJmdW5jX3JldmVyc2Vfc3VidHJhY3QiLCJibGVuZF9kc3RfcmdiIiwiYmxlbmRfc3JjX3JnYiIsImJsZW5kX2RzdF9hbHBoYSIsImJsZW5kX3NyY19hbHBoYSIsImNvbnN0YW50X2NvbG9yIiwib25lX21pbnVzX2NvbnN0YW50X2NvbG9yIiwiY29uc3RhbnRfYWxwaGEiLCJvbmVfbWludXNfY29uc3RhbnRfYWxwaGEiLCJhcnJheV9idWZmZXIiLCJlbGVtZW50X2FycmF5X2J1ZmZlciIsImFycmF5X2J1ZmZlcl9iaW5kaW5nIiwiZWxlbWVudF9hcnJheV9idWZmZXJfYmluZGluZyIsInN0cmVhbV9kcmF3Iiwic3RhdGljX2RyYXciLCJkeW5hbWljX2RyYXciLCJidWZmZXJfc2l6ZSIsImJ1ZmZlcl91c2FnZSIsImN1cnJlbnRfdmVydGV4X2F0dHJpYiIsImZyb250IiwiYmFjayIsImZyb250X2FuZF9iYWNrIiwiYmxlbmQiLCJkaXRoZXIiLCJzdGVuY2lsX3Rlc3QiLCJkZXB0aF90ZXN0Iiwic2Npc3Nvcl90ZXN0IiwicG9seWdvbl9vZmZzZXRfZmlsbCIsInNhbXBsZV9hbHBoYV90b19jb3ZlcmFnZSIsIm5vX2Vycm9yIiwiaW52YWxpZF9lbnVtIiwiaW52YWxpZF92YWx1ZSIsImludmFsaWRfb3BlcmF0aW9uIiwib3V0X29mX21lbW9yeSIsImNjdyIsImFsaWFzZWRfcG9pbnRfc2l6ZV9yYW5nZSIsImFsaWFzZWRfbGluZV93aWR0aF9yYW5nZSIsImN1bGxfZmFjZV9tb2RlIiwiZGVwdGhfcmFuZ2UiLCJkZXB0aF93cml0ZW1hc2siLCJkZXB0aF9jbGVhcl92YWx1ZSIsInN0ZW5jaWxfY2xlYXJfdmFsdWUiLCJzdGVuY2lsX2ZhaWwiLCJzdGVuY2lsX3Bhc3NfZGVwdGhfZmFpbCIsInN0ZW5jaWxfcGFzc19kZXB0aF9wYXNzIiwic3RlbmNpbF9yZWYiLCJzdGVuY2lsX3ZhbHVlX21hc2siLCJzdGVuY2lsX3dyaXRlbWFzayIsInN0ZW5jaWxfYmFja19mdW5jIiwic3RlbmNpbF9iYWNrX2ZhaWwiLCJzdGVuY2lsX2JhY2tfcGFzc19kZXB0aF9mYWlsIiwic3RlbmNpbF9iYWNrX3Bhc3NfZGVwdGhfcGFzcyIsInN0ZW5jaWxfYmFja19yZWYiLCJzdGVuY2lsX2JhY2tfdmFsdWVfbWFzayIsInN0ZW5jaWxfYmFja193cml0ZW1hc2siLCJzY2lzc29yX2JveCIsImNvbG9yX2NsZWFyX3ZhbHVlIiwiY29sb3Jfd3JpdGVtYXNrIiwidW5wYWNrX2FsaWdubWVudCIsInBhY2tfYWxpZ25tZW50IiwibWF4X3RleHR1cmVfc2l6ZSIsIm1heF92aWV3cG9ydF9kaW1zIiwic3VicGl4ZWxfYml0cyIsInJlZF9iaXRzIiwiZ3JlZW5fYml0cyIsImJsdWVfYml0cyIsImFscGhhX2JpdHMiLCJkZXB0aF9iaXRzIiwic3RlbmNpbF9iaXRzIiwicG9seWdvbl9vZmZzZXRfdW5pdHMiLCJwb2x5Z29uX29mZnNldF9mYWN0b3IiLCJ0ZXh0dXJlX2JpbmRpbmdfMmQiLCJzYW1wbGVfYnVmZmVycyIsInNhbXBsZV9jb3ZlcmFnZV92YWx1ZSIsInNhbXBsZV9jb3ZlcmFnZV9pbnZlcnQiLCJjb21wcmVzc2VkX3RleHR1cmVfZm9ybWF0cyIsImRvbnRfY2FyZSIsImZhc3Rlc3QiLCJuaWNlc3QiLCJnZW5lcmF0ZV9taXBtYXBfaGludCIsImJ5dGUiLCJ1bnNpZ25lZF9ieXRlIiwic2hvcnQiLCJ1bnNpZ25lZF9zaG9ydCIsImludCIsInVuc2lnbmVkX2ludCIsImZsb2F0IiwiZGVwdGhfY29tcG9uZW50IiwicmdiIiwicmdiYSIsImx1bWluYW5jZSIsImx1bWluYW5jZV9hbHBoYSIsInVuc2lnbmVkX3Nob3J0XzRfNF80XzQiLCJ1bnNpZ25lZF9zaG9ydF81XzVfNV8xIiwidW5zaWduZWRfc2hvcnRfNV82XzUiLCJmcmFnbWVudF9zaGFkZXIiLCJ2ZXJ0ZXhfc2hhZGVyIiwibWF4X3ZlcnRleF9hdHRyaWJzIiwibWF4X3ZlcnRleF91bmlmb3JtX3ZlY3RvcnMiLCJtYXhfdmFyeWluZ192ZWN0b3JzIiwibWF4X2NvbWJpbmVkX3RleHR1cmVfaW1hZ2VfdW5pIiwibWF4X3ZlcnRleF90ZXh0dXJlX2ltYWdlX3VuaXRzIiwibWF4X3RleHR1cmVfaW1hZ2VfdW5pdHMiLCJtYXhfZnJhZ21lbnRfdW5pZm9ybV92ZWN0b3JzIiwic2hhZGVyX3R5cGUiLCJkZWxldGVfc3RhdHVzIiwibGlua19zdGF0dXMiLCJ2YWxpZGF0ZV9zdGF0dXMiLCJhdHRhY2hlZF9zaGFkZXJzIiwiYWN0aXZlX3VuaWZvcm1zIiwiYWN0aXZlX2F0dHJpYnV0ZXMiLCJzaGFkaW5nX2xhbmd1YWdlX3ZlcnNpb24iLCJjdXJyZW50X3Byb2dyYW0iLCJuZXZlciIsImxlc3MiLCJlcXVhbCIsImxlcXVhbCIsImdyZWF0ZXIiLCJub3RlcXVhbCIsImdlcXVhbCIsImFsd2F5cyIsImtlZXAiLCJyZXBsYWNlIiwiaW5jciIsImRlY3IiLCJpbmNyX3dyYXAiLCJkZWNyX3dyYXAiLCJ2ZW5kb3IiLCJyZW5kZXJlciIsInZlcnNpb24iLCJuZWFyZXN0IiwibGluZWFyIiwibmVhcmVzdF9taXBtYXBfbmVhcmVzdCIsImxpbmVhcl9taXBtYXBfbmVhcmVzdCIsIm5lYXJlc3RfbWlwbWFwX2xpbmVhciIsImxpbmVhcl9taXBtYXBfbGluZWFyIiwidGV4dHVyZV9tYWdfZmlsdGVyIiwidGV4dHVyZV9taW5fZmlsdGVyIiwidGV4dHVyZV93cmFwX3MiLCJ0ZXh0dXJlX3dyYXBfdCIsInRleHR1cmVfMmQiLCJ0ZXh0dXJlX2N1YmVfbWFwIiwidGV4dHVyZV9iaW5kaW5nX2N1YmVfbWFwIiwidGV4dHVyZV9jdWJlX21hcF9wb3NpdGl2ZV94IiwidGV4dHVyZV9jdWJlX21hcF9uZWdhdGl2ZV94IiwidGV4dHVyZV9jdWJlX21hcF9wb3NpdGl2ZV95IiwidGV4dHVyZV9jdWJlX21hcF9uZWdhdGl2ZV95IiwidGV4dHVyZV9jdWJlX21hcF9wb3NpdGl2ZV96IiwidGV4dHVyZV9jdWJlX21hcF9uZWdhdGl2ZV96IiwibWF4X2N1YmVfbWFwX3RleHR1cmVfc2l6ZSIsInRleHR1cmUwIiwidGV4dHVyZTEiLCJ0ZXh0dXJlMiIsInRleHR1cmUzIiwidGV4dHVyZTQiLCJ0ZXh0dXJlNSIsInRleHR1cmU2IiwidGV4dHVyZTciLCJ0ZXh0dXJlOCIsInRleHR1cmU5IiwidGV4dHVyZTEwIiwidGV4dHVyZTExIiwidGV4dHVyZTEyIiwidGV4dHVyZTEzIiwidGV4dHVyZTE0IiwidGV4dHVyZTE1IiwidGV4dHVyZTE2IiwidGV4dHVyZTE3IiwidGV4dHVyZTE4IiwidGV4dHVyZTE5IiwidGV4dHVyZTIwIiwidGV4dHVyZTIxIiwidGV4dHVyZTIyIiwidGV4dHVyZTIzIiwidGV4dHVyZTI0IiwidGV4dHVyZTI1IiwidGV4dHVyZTI2IiwidGV4dHVyZTI3IiwidGV4dHVyZTI4IiwidGV4dHVyZTI5IiwidGV4dHVyZTMwIiwidGV4dHVyZTMxIiwicmVwZWF0IiwiY2xhbXBfdG9fZWRnZSIsIm1pcnJvcmVkX3JlcGVhdCIsImZsb2F0X3ZlYzIiLCJmbG9hdF92ZWMzIiwiZmxvYXRfdmVjNCIsImludF92ZWMyIiwiaW50X3ZlYzMiLCJpbnRfdmVjNCIsImJvb2wiLCJib29sX3ZlYzIiLCJib29sX3ZlYzMiLCJib29sX3ZlYzQiLCJmbG9hdF9tYXQyIiwiZmxvYXRfbWF0MyIsImZsb2F0X21hdDQiLCJzYW1wbGVyXzJkIiwic2FtcGxlcl9jdWJlIiwidmVydGV4X2F0dHJpYl9hcnJheV9lbmFibGVkIiwidmVydGV4X2F0dHJpYl9hcnJheV9zaXplIiwidmVydGV4X2F0dHJpYl9hcnJheV9zdHJpZGUiLCJ2ZXJ0ZXhfYXR0cmliX2FycmF5X3R5cGUiLCJ2ZXJ0ZXhfYXR0cmliX2FycmF5X25vcm1hbGl6ZWQiLCJ2ZXJ0ZXhfYXR0cmliX2FycmF5X3BvaW50ZXIiLCJ2ZXJ0ZXhfYXR0cmliX2FycmF5X2J1ZmZlcl9iaW4iLCJpbXBsZW1lbnRhdGlvbl9jb2xvcl9yZWFkX3R5cGUiLCJpbXBsZW1lbnRhdGlvbl9jb2xvcl9yZWFkX2Zvcm0iLCJjb21waWxlX3N0YXR1cyIsImxvd19mbG9hdCIsIm1lZGl1bV9mbG9hdCIsImhpZ2hfZmxvYXQiLCJsb3dfaW50IiwibWVkaXVtX2ludCIsImhpZ2hfaW50IiwicmdiYTQiLCJyZ2I1X2ExIiwicmdiNTY1IiwiZGVwdGhfY29tcG9uZW50MTYiLCJzdGVuY2lsX2luZGV4OCIsImRlcHRoX3N0ZW5jaWwiLCJyZW5kZXJidWZmZXJfd2lkdGgiLCJyZW5kZXJidWZmZXJfaGVpZ2h0IiwicmVuZGVyYnVmZmVyX2ludGVybmFsX2Zvcm1hdCIsInJlbmRlcmJ1ZmZlcl9yZWRfc2l6ZSIsInJlbmRlcmJ1ZmZlcl9ncmVlbl9zaXplIiwicmVuZGVyYnVmZmVyX2JsdWVfc2l6ZSIsInJlbmRlcmJ1ZmZlcl9hbHBoYV9zaXplIiwicmVuZGVyYnVmZmVyX2RlcHRoX3NpemUiLCJyZW5kZXJidWZmZXJfc3RlbmNpbF9zaXplIiwiZnJhbWVidWZmZXJfYXR0YWNobWVudF9vYmplY3RfIiwiZnJhbWVidWZmZXJfYXR0YWNobWVudF90ZXh0dXJlIiwiY29sb3JfYXR0YWNobWVudDAiLCJkZXB0aF9hdHRhY2htZW50Iiwic3RlbmNpbF9hdHRhY2htZW50IiwiZGVwdGhfc3RlbmNpbF9hdHRhY2htZW50Iiwibm9uZSIsImZyYW1lYnVmZmVyX2NvbXBsZXRlIiwiZnJhbWVidWZmZXJfaW5jb21wbGV0ZV9hdHRhY2htIiwiZnJhbWVidWZmZXJfaW5jb21wbGV0ZV9taXNzaW5nIiwiZnJhbWVidWZmZXJfaW5jb21wbGV0ZV9kaW1lbnNpIiwiZnJhbWVidWZmZXJfdW5zdXBwb3J0ZWQiLCJmcmFtZWJ1ZmZlcl9iaW5kaW5nIiwicmVuZGVyYnVmZmVyX2JpbmRpbmciLCJtYXhfcmVuZGVyYnVmZmVyX3NpemUiLCJpbnZhbGlkX2ZyYW1lYnVmZmVyX29wZXJhdGlvbiIsInVucGFja19mbGlwX3lfd2ViZ2wiLCJ1bnBhY2tfcHJlbXVsdGlwbHlfYWxwaGFfd2ViZ2wiLCJjb250ZXh0X2xvc3Rfd2ViZ2wiLCJ1bnBhY2tfY29sb3JzcGFjZV9jb252ZXJzaW9uX3ciLCJicm93c2VyX2RlZmF1bHRfd2ViZ2wiLCJnbDJjdHgiLCJ1bnBhY2tfcm93X2xlbmd0aCIsInVucGFja19za2lwX3Jvd3MiLCJ1bnBhY2tfc2tpcF9waXhlbHMiLCJwYWNrX3Jvd19sZW5ndGgiLCJwYWNrX3NraXBfcm93cyIsInBhY2tfc2tpcF9waXhlbHMiLCJyZ2I4IiwicmdiYTgiLCJyZ2IxMF9hMiIsInRleHR1cmVfYmluZGluZ18zZCIsInVucGFja19za2lwX2ltYWdlcyIsInVucGFja19pbWFnZV9oZWlnaHQiLCJ0ZXh0dXJlXzNkIiwidGV4dHVyZV93cmFwX3IiLCJtYXhfM2RfdGV4dHVyZV9zaXplIiwidW5zaWduZWRfaW50XzJfMTBfMTBfMTBfcmV2IiwibWF4X2VsZW1lbnRzX3ZlcnRpY2VzIiwibWF4X2VsZW1lbnRzX2luZGljZXMiLCJ0ZXh0dXJlX21pbl9sb2QiLCJ0ZXh0dXJlX21heF9sb2QiLCJ0ZXh0dXJlX2Jhc2VfbGV2ZWwiLCJ0ZXh0dXJlX21heF9sZXZlbCIsIm1pbiIsIm1heCIsImRlcHRoX2NvbXBvbmVudDI0IiwibWF4X3RleHR1cmVfbG9kX2JpYXMiLCJ0ZXh0dXJlX2NvbXBhcmVfbW9kZSIsInRleHR1cmVfY29tcGFyZV9mdW5jIiwiY3VycmVudF9xdWVyeSIsInF1ZXJ5X3Jlc3VsdCIsInF1ZXJ5X3Jlc3VsdF9hdmFpbGFibGUiLCJzdHJlYW1fcmVhZCIsInN0cmVhbV9jb3B5Iiwic3RhdGljX3JlYWQiLCJzdGF0aWNfY29weSIsImR5bmFtaWNfcmVhZCIsImR5bmFtaWNfY29weSIsIm1heF9kcmF3X2J1ZmZlcnMiLCJkcmF3X2J1ZmZlcjAiLCJkcmF3X2J1ZmZlcjEiLCJkcmF3X2J1ZmZlcjIiLCJkcmF3X2J1ZmZlcjMiLCJkcmF3X2J1ZmZlcjQiLCJkcmF3X2J1ZmZlcjUiLCJkcmF3X2J1ZmZlcjYiLCJkcmF3X2J1ZmZlcjciLCJkcmF3X2J1ZmZlcjgiLCJkcmF3X2J1ZmZlcjkiLCJkcmF3X2J1ZmZlcjEwIiwiZHJhd19idWZmZXIxMSIsImRyYXdfYnVmZmVyMTIiLCJkcmF3X2J1ZmZlcjEzIiwiZHJhd19idWZmZXIxNCIsImRyYXdfYnVmZmVyMTUiLCJtYXhfZnJhZ21lbnRfdW5pZm9ybV9jb21wb25lbnQiLCJtYXhfdmVydGV4X3VuaWZvcm1fY29tcG9uZW50cyIsInNhbXBsZXJfM2QiLCJzYW1wbGVyXzJkX3NoYWRvdyIsImZyYWdtZW50X3NoYWRlcl9kZXJpdmF0aXZlX2hpbiIsInBpeGVsX3BhY2tfYnVmZmVyIiwicGl4ZWxfdW5wYWNrX2J1ZmZlciIsInBpeGVsX3BhY2tfYnVmZmVyX2JpbmRpbmciLCJwaXhlbF91bnBhY2tfYnVmZmVyX2JpbmRpbmciLCJmbG9hdF9tYXQyeDMiLCJmbG9hdF9tYXQyeDQiLCJmbG9hdF9tYXQzeDIiLCJmbG9hdF9tYXQzeDQiLCJmbG9hdF9tYXQ0eDIiLCJmbG9hdF9tYXQ0eDMiLCJzcmdiIiwic3JnYjgiLCJzcmdiOF9hbHBoYTgiLCJjb21wYXJlX3JlZl90b190ZXh0dXJlIiwicmdiYTMyZiIsInJnYjMyZiIsInJnYmExNmYiLCJyZ2IxNmYiLCJ2ZXJ0ZXhfYXR0cmliX2FycmF5X2ludGVnZXIiLCJtYXhfYXJyYXlfdGV4dHVyZV9sYXllcnMiLCJtaW5fcHJvZ3JhbV90ZXhlbF9vZmZzZXQiLCJtYXhfcHJvZ3JhbV90ZXhlbF9vZmZzZXQiLCJtYXhfdmFyeWluZ19jb21wb25lbnRzIiwidGV4dHVyZV8yZF9hcnJheSIsInRleHR1cmVfYmluZGluZ18yZF9hcnJheSIsInIxMWZfZzExZl9iMTBmIiwidW5zaWduZWRfaW50XzEwZl8xMWZfMTFmX3JldiIsInJnYjlfZTUiLCJ1bnNpZ25lZF9pbnRfNV85XzlfOV9yZXYiLCJ0cmFuc2Zvcm1fZmVlZGJhY2tfYnVmZmVyX21vZGUiLCJtYXhfdHJhbnNmb3JtX2ZlZWRiYWNrX3NlcGFyYXQiLCJ0cmFuc2Zvcm1fZmVlZGJhY2tfYnVmZmVyX3N0YXIiLCJ0cmFuc2Zvcm1fZmVlZGJhY2tfYnVmZmVyX3NpemUiLCJ0cmFuc2Zvcm1fZmVlZGJhY2tfcHJpbWl0aXZlc18iLCJyYXN0ZXJpemVyX2Rpc2NhcmQiLCJtYXhfdHJhbnNmb3JtX2ZlZWRiYWNrX2ludGVybGUiLCJpbnRlcmxlYXZlZF9hdHRyaWJzIiwic2VwYXJhdGVfYXR0cmlicyIsInRyYW5zZm9ybV9mZWVkYmFja19idWZmZXIiLCJ0cmFuc2Zvcm1fZmVlZGJhY2tfYnVmZmVyX2JpbmQiLCJyZ2JhMzJ1aSIsInJnYjMydWkiLCJyZ2JhMTZ1aSIsInJnYjE2dWkiLCJyZ2JhOHVpIiwicmdiOHVpIiwicmdiYTMyaSIsInJnYjMyaSIsInJnYmExNmkiLCJyZ2IxNmkiLCJyZ2JhOGkiLCJyZ2I4aSIsInJlZF9pbnRlZ2VyIiwicmdiX2ludGVnZXIiLCJyZ2JhX2ludGVnZXIiLCJzYW1wbGVyXzJkX2FycmF5Iiwic2FtcGxlcl8yZF9hcnJheV9zaGFkb3ciLCJzYW1wbGVyX2N1YmVfc2hhZG93IiwidW5zaWduZWRfaW50X3ZlYzIiLCJ1bnNpZ25lZF9pbnRfdmVjMyIsInVuc2lnbmVkX2ludF92ZWM0IiwiaW50X3NhbXBsZXJfMmQiLCJpbnRfc2FtcGxlcl8zZCIsImludF9zYW1wbGVyX2N1YmUiLCJpbnRfc2FtcGxlcl8yZF9hcnJheSIsInVuc2lnbmVkX2ludF9zYW1wbGVyXzJkIiwidW5zaWduZWRfaW50X3NhbXBsZXJfM2QiLCJ1bnNpZ25lZF9pbnRfc2FtcGxlcl9jdWJlIiwidW5zaWduZWRfaW50X3NhbXBsZXJfMmRfYXJyYXkiLCJkZXB0aF9jb21wb25lbnQzMmYiLCJkZXB0aDMyZl9zdGVuY2lsOCIsImZsb2F0XzMyX3Vuc2lnbmVkX2ludF8yNF84X3JldiIsImZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfY29sb3JfZSIsImZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfY29tcG9uZSIsImZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfcmVkX3NpeiIsImZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfZ3JlZW5fcyIsImZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfYmx1ZV9zaSIsImZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfYWxwaGFfcyIsImZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfZGVwdGhfcyIsImZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfc3RlbmNpbCIsImZyYW1lYnVmZmVyX2RlZmF1bHQiLCJ1bnNpZ25lZF9pbnRfMjRfOCIsImRlcHRoMjRfc3RlbmNpbDgiLCJ1bnNpZ25lZF9ub3JtYWxpemVkIiwiZHJhd19mcmFtZWJ1ZmZlcl9iaW5kaW5nIiwicmVhZF9mcmFtZWJ1ZmZlciIsImRyYXdfZnJhbWVidWZmZXIiLCJyZWFkX2ZyYW1lYnVmZmVyX2JpbmRpbmciLCJyZW5kZXJidWZmZXJfc2FtcGxlcyIsIm1heF9jb2xvcl9hdHRhY2htZW50cyIsImNvbG9yX2F0dGFjaG1lbnQxIiwiY29sb3JfYXR0YWNobWVudDIiLCJjb2xvcl9hdHRhY2htZW50MyIsImNvbG9yX2F0dGFjaG1lbnQ0IiwiY29sb3JfYXR0YWNobWVudDUiLCJjb2xvcl9hdHRhY2htZW50NiIsImNvbG9yX2F0dGFjaG1lbnQ3IiwiY29sb3JfYXR0YWNobWVudDgiLCJjb2xvcl9hdHRhY2htZW50OSIsImNvbG9yX2F0dGFjaG1lbnQxMCIsImNvbG9yX2F0dGFjaG1lbnQxMSIsImNvbG9yX2F0dGFjaG1lbnQxMiIsImNvbG9yX2F0dGFjaG1lbnQxMyIsImNvbG9yX2F0dGFjaG1lbnQxNCIsImNvbG9yX2F0dGFjaG1lbnQxNSIsImZyYW1lYnVmZmVyX2luY29tcGxldGVfbXVsdGlzYSIsIm1heF9zYW1wbGVzIiwiaGFsZl9mbG9hdCIsInJnIiwicmdfaW50ZWdlciIsInI4Iiwicmc4IiwicjE2ZiIsInIzMmYiLCJyZzE2ZiIsInJnMzJmIiwicjhpIiwicjh1aSIsInIxNmkiLCJyMTZ1aSIsInIzMmkiLCJyMzJ1aSIsInJnOGkiLCJyZzh1aSIsInJnMTZpIiwicmcxNnVpIiwicmczMmkiLCJyZzMydWkiLCJ2ZXJ0ZXhfYXJyYXlfYmluZGluZyIsInI4X3Nub3JtIiwicmc4X3Nub3JtIiwicmdiOF9zbm9ybSIsInJnYmE4X3Nub3JtIiwic2lnbmVkX25vcm1hbGl6ZWQiLCJjb3B5X3JlYWRfYnVmZmVyIiwiY29weV93cml0ZV9idWZmZXIiLCJjb3B5X3JlYWRfYnVmZmVyX2JpbmRpbmciLCJjb3B5X3dyaXRlX2J1ZmZlcl9iaW5kaW5nIiwidW5pZm9ybV9idWZmZXIiLCJ1bmlmb3JtX2J1ZmZlcl9iaW5kaW5nIiwidW5pZm9ybV9idWZmZXJfc3RhcnQiLCJ1bmlmb3JtX2J1ZmZlcl9zaXplIiwibWF4X3ZlcnRleF91bmlmb3JtX2Jsb2NrcyIsIm1heF9mcmFnbWVudF91bmlmb3JtX2Jsb2NrcyIsIm1heF9jb21iaW5lZF91bmlmb3JtX2Jsb2NrcyIsIm1heF91bmlmb3JtX2J1ZmZlcl9iaW5kaW5ncyIsIm1heF91bmlmb3JtX2Jsb2NrX3NpemUiLCJtYXhfY29tYmluZWRfdmVydGV4X3VuaWZvcm1fY28iLCJtYXhfY29tYmluZWRfZnJhZ21lbnRfdW5pZm9ybV8iLCJ1bmlmb3JtX2J1ZmZlcl9vZmZzZXRfYWxpZ25tZW4iLCJhY3RpdmVfdW5pZm9ybV9ibG9ja3MiLCJ1bmlmb3JtX3R5cGUiLCJ1bmlmb3JtX3NpemUiLCJ1bmlmb3JtX2Jsb2NrX2luZGV4IiwidW5pZm9ybV9vZmZzZXQiLCJ1bmlmb3JtX2FycmF5X3N0cmlkZSIsInVuaWZvcm1fbWF0cml4X3N0cmlkZSIsInVuaWZvcm1faXNfcm93X21ham9yIiwidW5pZm9ybV9ibG9ja19kYXRhX3NpemUiLCJ1bmlmb3JtX2Jsb2NrX2FjdGl2ZV91bmlmb3JtcyIsInVuaWZvcm1fYmxvY2tfYWN0aXZlX3VuaWZvcm1faSIsInVuaWZvcm1fYmxvY2tfcmVmZXJlbmNlZF9ieV92ZSIsInVuaWZvcm1fYmxvY2tfcmVmZXJlbmNlZF9ieV9mciIsImludmFsaWRfaW5kZXgiLCJtYXhfdmVydGV4X291dHB1dF9jb21wb25lbnRzIiwibWF4X2ZyYWdtZW50X2lucHV0X2NvbXBvbmVudHMiLCJtYXhfc2VydmVyX3dhaXRfdGltZW91dCIsIm9iamVjdF90eXBlIiwic3luY19jb25kaXRpb24iLCJzeW5jX3N0YXR1cyIsInN5bmNfZmxhZ3MiLCJzeW5jX2ZlbmNlIiwic3luY19ncHVfY29tbWFuZHNfY29tcGxldGUiLCJ1bnNpZ25hbGVkIiwic2lnbmFsZWQiLCJhbHJlYWR5X3NpZ25hbGVkIiwidGltZW91dF9leHBpcmVkIiwiY29uZGl0aW9uX3NhdGlzZmllZCIsIndhaXRfZmFpbGVkIiwic3luY19mbHVzaF9jb21tYW5kc19iaXQiLCJ2ZXJ0ZXhfYXR0cmliX2FycmF5X2Rpdmlzb3IiLCJhbnlfc2FtcGxlc19wYXNzZWQiLCJhbnlfc2FtcGxlc19wYXNzZWRfY29uc2VydmF0aXYiLCJzYW1wbGVyX2JpbmRpbmciLCJyZ2IxMF9hMnVpIiwiaW50XzJfMTBfMTBfMTBfcmV2IiwidHJhbnNmb3JtX2ZlZWRiYWNrIiwidHJhbnNmb3JtX2ZlZWRiYWNrX3BhdXNlZCIsInRyYW5zZm9ybV9mZWVkYmFja19hY3RpdmUiLCJ0cmFuc2Zvcm1fZmVlZGJhY2tfYmluZGluZyIsInRleHR1cmVfaW1tdXRhYmxlX2Zvcm1hdCIsIm1heF9lbGVtZW50X2luZGV4IiwidGV4dHVyZV9pbW11dGFibGVfbGV2ZWxzIiwidGltZW91dF9pZ25vcmVkIiwibWF4X2NsaWVudF93YWl0X3RpbWVvdXRfd2ViZ2wiLCJjc3Rfcm91bmQiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxJQUFBQyx3QkFBQTtBQUFBLElBQUFDLHdCQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxJQUFBQyxzQkFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUosR0FBQUMsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLEtBQUE7QUFBQSxJQUFBQyxPQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsTUFBQTtBQUFBLElBQUFDLE1BQUE7QUFBQSxZQUFBQyxNQUFBQyxHQ1dnQixzQ0FBb0I7QUFBQSxZQUFBQyxZQUFBRCxHQUNkLDRDQUEwQjtBQUFBLFlBQUFFLFFBQUFGLEdBQzlCLGtCQUF3QjtBQUFBLFlBQUFHLFNBQUFILEtBQUFBLEdBQ3BCLHNCQUEyQjtBQUFBLFlBQUFJLElBQUFKLEdBRW5DLHFDQUFvQjtBQUFBLFlBQUFLLElBQUFMLEdBQ3BCLHFDQUFvQjtBQUFB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QUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFRGg2RHBGIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDAxMTcsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLmdsb2JlX3dlYmdsLm9ianMvanNvby9kZWZhdWx0L2dsb2JlX3dlYmdsLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvd29ya3NwYWNlX3Jvb3Qvb2NhbWwtZ2xvYmUvd2ViZ2wvc2hhZGVyLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIENvcHlyaWdodCAoYykgMjAyNSBUaG9tYXMgR2F6YWduYWlyZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuKCoqIEdMU0wgc2hhZGVyIGNvbXBpbGF0aW9uIHV0aWxpdGllcyBhbmQgZ2xvYmUgc2hhZGVyIHNvdXJjZXMuICopXG5cbm9wZW4gQnJyX2NhbnZhc1xuXG5sZXQgY29tcGlsZSBnbCB0eXAgc3JjID1cbiAgbGV0IHNoYWRlciA9IEdsLmNyZWF0ZV9zaGFkZXIgZ2wgdHlwIGluXG4gIEdsLnNoYWRlcl9zb3VyY2UgZ2wgc2hhZGVyIChKc3RyLm9mX3N0cmluZyBzcmMpO1xuICBHbC5jb21waWxlX3NoYWRlciBnbCBzaGFkZXI7XG4gIHNoYWRlclxuXG5sZXQgcHJvZ3JhbSBnbCB+dmVydCB+ZnJhZyA9XG4gIGxldCB2cyA9IGNvbXBpbGUgZ2wgR2wudmVydGV4X3NoYWRlciB2ZXJ0IGluXG4gIGxldCBmcyA9IGNvbXBpbGUgZ2wgR2wuZnJhZ21lbnRfc2hhZGVyIGZyYWcgaW5cbiAgbGV0IHByb2cgPSBHbC5jcmVhdGVfcHJvZ3JhbSBnbCBpblxuICBHbC5hdHRhY2hfc2hhZGVyIGdsIHByb2cgdnM7XG4gIEdsLmF0dGFjaF9zaGFkZXIgZ2wgcHJvZyBmcztcbiAgR2wubGlua19wcm9ncmFtIGdsIHByb2c7XG4gIEdsLmRlbGV0ZV9zaGFkZXIgZ2wgdnM7XG4gIEdsLmRlbGV0ZV9zaGFkZXIgZ2wgZnM7XG4gIHByb2dcblxuKCogLS0tIEdsb2JlIGRvdCBjbG91ZCBzaGFkZXJzIC0tLSAqKVxuXG5sZXQgZWFydGhfdmVydGV4ID1cbiAge3wjdmVyc2lvbiAzMDAgZXNcbnByZWNpc2lvbiBoaWdocCBmbG9hdDtcblxubGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gdmVjMyBhX3Bvc2l0aW9uO1xubGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQgYV9icmlnaHRuZXNzO1xuXG51bmlmb3JtIG1hdDQgdV9wcm9qZWN0aW9uO1xudW5pZm9ybSBtYXQ0IHVfdmlldztcbnVuaWZvcm0gZmxvYXQgdV9wb2ludF9zaXplO1xuXG5vdXQgZmxvYXQgdl9icmlnaHRuZXNzO1xuXG52b2lkIG1haW4oKSB7XG4gIGdsX1Bvc2l0aW9uID0gdV9wcm9qZWN0aW9uICogdV92aWV3ICogdmVjNChhX3Bvc2l0aW9uLCAxLjApO1xuICBnbF9Qb2ludFNpemUgPSB1X3BvaW50X3NpemUgKiAoMC4zICsgYV9icmlnaHRuZXNzICogMC43KTtcbiAgdl9icmlnaHRuZXNzID0gYV9icmlnaHRuZXNzO1xufVxufH1cblxubGV0IGVhcnRoX2ZyYWdtZW50ID1cbiAge3wjdmVyc2lvbiAzMDAgZXNcbnByZWNpc2lvbiBoaWdocCBmbG9hdDtcblxuaW4gZmxvYXQgdl9icmlnaHRuZXNzO1xudW5pZm9ybSBmbG9hdCB1X2RpbTtcbm91dCB2ZWM0IGZyYWdDb2xvcjtcblxudm9pZCBtYWluKCkge1xuICBmbG9hdCBkID0gZGlzdGFuY2UoZ2xfUG9pbnRDb29yZCwgdmVjMigwLjUpKTtcbiAgaWYgKGQgPiAwLjUpIGRpc2NhcmQ7XG4gIGZsb2F0IGFscGhhID0gc21vb3Roc3RlcCgwLjUsIDAuMSwgZCk7XG4gIHZlYzMgY29sb3IgPSBtaXgodmVjMygwLjAzLCAwLjEwLCAwLjI1KSwgdmVjMygwLjM1LCAwLjkwLCAxLjApLCB2X2JyaWdodG5lc3MpO1xuICAvLyB1X2RpbTogMS4wID0gZnVsbCBicmlnaHRuZXNzLCAwLjAgPSBjb21wbGV0ZWx5IGRhcmtcbiAgZnJhZ0NvbG9yID0gdmVjNChjb2xvciAqIHVfZGltLCBhbHBoYSAqICgwLjMgKyB2X2JyaWdodG5lc3MgKiAwLjcpICogdV9kaW0pO1xufVxufH1cblxuKCogLS0tIFN0YXIgZmllbGQgc2hhZGVycyAtLS0gKilcblxubGV0IHN0YXJfdmVydGV4ID1cbiAge3wjdmVyc2lvbiAzMDAgZXNcbnByZWNpc2lvbiBoaWdocCBmbG9hdDtcblxubGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gdmVjMyBhX3Bvc2l0aW9uO1xubGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQgYV9icmlnaHRuZXNzO1xuXG51bmlmb3JtIG1hdDQgdV9wcm9qZWN0aW9uO1xudW5pZm9ybSBtYXQ0IHVfdmlldztcblxub3V0IGZsb2F0IHZfYnJpZ2h0bmVzcztcblxudm9pZCBtYWluKCkge1xuICBnbF9Qb3NpdGlvbiA9IHVfcHJvamVjdGlvbiAqIHVfdmlldyAqIHZlYzQoYV9wb3NpdGlvbiwgMS4wKTtcbiAgZ2xfUG9pbnRTaXplID0gMS4wICsgYV9icmlnaHRuZXNzO1xuICB2X2JyaWdodG5lc3MgPSBhX2JyaWdodG5lc3M7XG59XG58fVxuXG5sZXQgc3Rhcl9mcmFnbWVudCA9XG4gIHt8I3ZlcnNpb24gMzAwIGVzXG5wcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG5cbmluIGZsb2F0IHZfYnJpZ2h0bmVzcztcbm91dCB2ZWM0IGZyYWdDb2xvcjtcblxudm9pZCBtYWluKCkge1xuICBmbG9hdCBkID0gZGlzdGFuY2UoZ2xfUG9pbnRDb29yZCwgdmVjMigwLjUpKTtcbiAgaWYgKGQgPiAwLjUpIGRpc2NhcmQ7XG4gIGZyYWdDb2xvciA9IHZlYzQodmVjMygxLjApLCB2X2JyaWdodG5lc3MgKiBzbW9vdGhzdGVwKDAuNSwgMC4wLCBkKSk7XG59XG58fVxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiQnJyX2NhbnZhcyIsImNvbXBpbGUiLCJnbCIsInR5cCIsInNyYyIsInNoYWRlciIsInByb2dyYW0iLCJ2ZXJ0IiwiZnJhZyIsInZzIiwiZnMiLCJwcm9nIl0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUosR0FBQUMsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE9BQUFDLGFBQUE7QUFBQSxZQUFBQyxRQUFBQyxJQUFBQyxLQUFBQztBQUFBQSxRQUFBQyxTQ1VlO0FBQUEsSUFDYjtBQUFBLHNDQUEyQjtBQUFBLElBQzNCO0FBQUEsSUFBMkI7QUFBQSxHQUNyQjtBQUFBLFlBQUFDLFFBQUFKLElBQUFLLE1BQUFDO0FBQUFBO0FBQUFBLEtBQUFDLEtBR0c7QUFBQSxLQUFBQyxLQUNBO0FBQUEsS0FBQUMsT0FDRTtBQUFBLElBQ1g7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFBc0I7QUFBQSxHQUNsQjtBQUFBLEdEeEJOIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDAxNzMsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLmdsb2JlX3dlYmdsLm9ianMvanNvby9kZWZhdWx0L2dsb2JlX3dlYmdsLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvd29ya3NwYWNlX3Jvb3Qvb2NhbWwtZ2xvYmUvd2ViZ2wvc3RhcnMubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgQ29weXJpZ2h0IChjKSAyMDI1IFRob21hcyBHYXphZ25haXJlLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG4oKiogU3RhciBmaWVsZCBiYWNrZ3JvdW5kOiByYW5kb20gc21hbGwgd2hpdGUgcG9pbnRzIG9uIGEgZmFyIHNwaGVyZS4gKilcblxub3BlbiBCcnJcbm9wZW4gQnJyX2NhbnZhc1xuXG50eXBlIHQgPSB7XG4gIHByb2cgOiBHbC5wcm9ncmFtO1xuICB2YW8gOiBHbC52ZXJ0ZXhfYXJyYXlfb2JqZWN0O1xuICBjb3VudCA6IGludDtcbiAgdV9wcm9qZWN0aW9uIDogR2wudW5pZm9ybV9sb2NhdGlvbjtcbiAgdV92aWV3IDogR2wudW5pZm9ybV9sb2NhdGlvbjtcbn1cblxubGV0IHYgPyhjb3VudCA9IDIwMDApID8oZGlzdGFuY2UgPSA1MC4wKSBnbCA9XG4gIGxldCBkYXRhID0gQXJyYXkubWFrZSAoY291bnQgKiA0KSAwLiBpblxuICBsZXQgc2VlZCA9IHJlZiAxMjM0NSBpblxuICBsZXQgcmFuZCAoKSA9XG4gICAgc2VlZCA6PSAoIXNlZWQgKiAxMTAzNTE1MjQ1KSArIDEyMzQ1O1xuICAgIEZsb2F0Lm9mX2ludCAoYWJzICghc2VlZCAvIDY1NTM2IG1vZCAzMjc2OCkpIC8uIDMyNzY4LlxuICBpblxuICBmb3IgaSA9IDAgdG8gY291bnQgLSAxIGRvXG4gICAgbGV0IHRoZXRhID0gYWNvcyAoMS4gLS4gKDIuICouIHJhbmQgKCkpKSBpblxuICAgIGxldCBwaGkgPSAyLiAqLiBGbG9hdC5waSAqLiByYW5kICgpIGluXG4gICAgbGV0IG9mZiA9IGkgKiA0IGluXG4gICAgZGF0YS4ob2ZmKSA8LSBkaXN0YW5jZSAqLiBzaW4gdGhldGEgKi4gY29zIHBoaTtcbiAgICBkYXRhLihvZmYgKyAxKSA8LSBkaXN0YW5jZSAqLiBjb3MgdGhldGE7XG4gICAgZGF0YS4ob2ZmICsgMikgPC0gZGlzdGFuY2UgKi4gc2luIHRoZXRhICouIHNpbiBwaGk7XG4gICAgZGF0YS4ob2ZmICsgMykgPC0gMC4zICsuICgwLjcgKi4gcmFuZCAoKSlcbiAgZG9uZTtcbiAgbGV0IGJ1Zl9kYXRhID0gVGFycmF5Lm9mX2Zsb2F0X2FycmF5IFRhcnJheS5GbG9hdDMyIGRhdGEgaW5cbiAgbGV0IHByb2cgPVxuICAgIFNoYWRlci5wcm9ncmFtIGdsIH52ZXJ0OlNoYWRlci5zdGFyX3ZlcnRleCB+ZnJhZzpTaGFkZXIuc3Rhcl9mcmFnbWVudFxuICBpblxuICBsZXQgdmFvID0gR2wuY3JlYXRlX3ZlcnRleF9hcnJheSBnbCBpblxuICBHbC5iaW5kX3ZlcnRleF9hcnJheSBnbCAoU29tZSB2YW8pO1xuICBsZXQgdmJvID0gR2wuY3JlYXRlX2J1ZmZlciBnbCBpblxuICBHbC5iaW5kX2J1ZmZlciBnbCBHbC5hcnJheV9idWZmZXIgKFNvbWUgdmJvKTtcbiAgR2wuYnVmZmVyX2RhdGEgZ2wgR2wuYXJyYXlfYnVmZmVyIGJ1Zl9kYXRhIEdsLnN0YXRpY19kcmF3O1xuICBHbC5lbmFibGVfdmVydGV4X2F0dHJpYl9hcnJheSBnbCAwO1xuICBHbC52ZXJ0ZXhfYXR0cmliX3BvaW50ZXIgZ2wgMCAzIEdsLmZsb2F0IGZhbHNlIDE2IDA7XG4gIEdsLmVuYWJsZV92ZXJ0ZXhfYXR0cmliX2FycmF5IGdsIDE7XG4gIEdsLnZlcnRleF9hdHRyaWJfcG9pbnRlciBnbCAxIDEgR2wuZmxvYXQgZmFsc2UgMTYgMTI7XG4gIEdsLmJpbmRfdmVydGV4X2FycmF5IGdsIE5vbmU7XG4gIHtcbiAgICBwcm9nO1xuICAgIHZhbztcbiAgICBjb3VudDtcbiAgICB1X3Byb2plY3Rpb24gPVxuICAgICAgR2wuZ2V0X3VuaWZvcm1fbG9jYXRpb24gZ2wgcHJvZyAoSnN0ci5vZl9zdHJpbmcgXCJ1X3Byb2plY3Rpb25cIik7XG4gICAgdV92aWV3ID0gR2wuZ2V0X3VuaWZvcm1fbG9jYXRpb24gZ2wgcHJvZyAoSnN0ci5vZl9zdHJpbmcgXCJ1X3ZpZXdcIik7XG4gIH1cblxubGV0IGRyYXcgZ2wgdCB+cHJvamVjdGlvbiB+dmlldyA9XG4gIEdsLnVzZV9wcm9ncmFtIGdsIHQucHJvZztcbiAgbGV0IHByb2pfYXJyID0gVGFycmF5Lm9mX2Zsb2F0X2FycmF5IFRhcnJheS5GbG9hdDMyIHByb2plY3Rpb24gaW5cbiAgbGV0IHZpZXdfYXJyID0gVGFycmF5Lm9mX2Zsb2F0X2FycmF5IFRhcnJheS5GbG9hdDMyIHZpZXcgaW5cbiAgR2wudW5pZm9ybV9tYXRyaXg0ZnYgZ2wgdC51X3Byb2plY3Rpb24gZmFsc2UgcHJval9hcnI7XG4gIEdsLnVuaWZvcm1fbWF0cml4NGZ2IGdsIHQudV92aWV3IGZhbHNlIHZpZXdfYXJyO1xuICBHbC5iaW5kX3ZlcnRleF9hcnJheSBnbCAoU29tZSB0LnZhbyk7XG4gIEdsLmRyYXdfYXJyYXlzIGdsIEdsLnBvaW50cyAwIHQuY291bnQ7XG4gIEdsLmJpbmRfdmVydGV4X2FycmF5IGdsIE5vbmVcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jaGVja19ib3VuZCIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJjYW1sX2NhbGwzIiwiYTIiLCJjYW1sX2NhbGw0IiwiYTMiLCJjYW1sX2NhbGw3IiwiYTQiLCJhNSIsImE2IiwiZ2xvYmFsX2RhdGEiLCJCcnJfY2FudmFzIiwiQnJyIiwiU3RkbGliIiwiU3RkbGliX0Zsb2F0IiwiR2xvYmVfd2ViZ2xfU2hhZGVyIiwidiIsIm9wdCIsImdsIiwiY291bnQiLCJkaXN0YW5jZSIsImRhdGEiLCJzZWVkIiwicmFuZCIsInBhcmFtIiwiaSIsInRoZXRhIiwicGhpIiwib2ZmIiwiYnVmX2RhdGEiLCJwcm9nIiwidmFvIiwidmJvIiwiZHJhdyIsInQiLCJwcm9qZWN0aW9uIiwidmlldyIsInByb2pfYXJyIiwidmlld19hcnIiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFKLEdBQUFDLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBTixHQUFBQyxJQUFBRSxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQVIsR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUMsSUFBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGFBQUE7QUFBQSxJQUFBQyxNQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxxQkFBQTtBQUFBLFlBQUFDLEVBQUEsR0FBQUMsS0FBQUM7QUFBQUE7QUFBQUEsS0FBQUMsUUNrQk07QUFBQSxLQUFBQyxXQUFBO0FBQUEsS0FBQUMsT0FDTztBQUFBLEtBQUFDLE9BQ1g7QUFBQSxhQUFBQyxLQUFBQztBQUFBQSxLQUVFO0FBQUEsS0FDYSx3RUFBeUM7QUFBQTtBQUFBLFlBRXhEO0FBQUE7QUFBQSxTQUFBQyxJQUFBO0FBQUE7QUFBQTtBQUFBLE9BQUFDLFFBQ2Msb0JBQW1CO0FBQUEsV0FDSDtBQUFBLE9BQUFDLE1BQWxCO0FBQUEsT0FBQUMsTUFDVjtBQUFBLE1BQ0E7QUFBQSxrQkFBMEIsa0JBQWE7QUFBQSxjQUNBO0FBQUEsTUFBdkMsOENBQThCO0FBQUEsY0FDb0I7QUFBQSxNQUFsRDtBQUFBLGtCQUE4QixrQkFBYTtBQUFBLGNBQ0YsaUJBQVI7QUFBQSxNQUFqQztBQUFBLGNBQXlDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEtBQUFDLFdBRTVCO0FBQUEsS0FBQUM7QUFBQUEsT0FFYjtBQUFBO0FBQUEsS0FBQUMsTUFFUTtBQUFBLElBQ1Y7QUFBQSxRQUFBQyxNQUNVO0FBQUEsSUFDVjtBQUFBLElBQ0E7QUFBQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsWUFPVztBQUFBLElBRFA7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGNBQStEO0FBQUEsR0FFbEU7QUFBQSxZQUFBQyxLQUFBZixJQUFBZ0IsR0FBQUMsWUFBQUM7QUFBQUEsSUFHRDtBQUFBO0FBQUEsS0FBQUMsV0FDZTtBQUFBLEtBQUFDLFdBQ0E7QUFBQSxJQUNmO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFBcUMsMkNBQ1Q7QUFBQTtBQUFBLEdEakU5QiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQwMjg1LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6Ii5nbG9iZV93ZWJnbC5vYmpzL2pzb28vZGVmYXVsdC9nbG9iZV93ZWJnbC5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL3dvcmtzcGFjZV9yb290L29jYW1sLWdsb2JlL3dlYmdsL2NhbWVyYS5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBDb3B5cmlnaHQgKGMpIDIwMjUgVGhvbWFzIEdhemFnbmFpcmUuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbigqKiBPcmJpdCBjYW1lcmEgd2l0aCBkcmFnIHJvdGF0aW9uIGFuZCBzY3JvbGwgem9vbS4gKilcblxub3BlbiBCcnJcblxudHlwZSB0ID0ge1xuICBtdXRhYmxlIHRoZXRhIDogZmxvYXQ7XG4gIG11dGFibGUgcGhpIDogZmxvYXQ7XG4gIG11dGFibGUgZGlzdGFuY2UgOiBmbG9hdDtcbiAgbXV0YWJsZSBkcmFnZ2luZyA6IGJvb2w7XG4gIG11dGFibGUgbGFzdF94IDogZmxvYXQ7XG4gIG11dGFibGUgbGFzdF95IDogZmxvYXQ7XG4gIG11dGFibGUgYXV0b19yb3RhdGUgOiBib29sO1xufVxuXG5sZXQgdiAoKSA9XG4gIHtcbiAgICB0aGV0YSA9IDAuO1xuICAgIHBoaSA9IDAuMztcbiAgICBkaXN0YW5jZSA9IDMuNTtcbiAgICBkcmFnZ2luZyA9IGZhbHNlO1xuICAgIGxhc3RfeCA9IDAuO1xuICAgIGxhc3RfeSA9IDAuO1xuICAgIGF1dG9fcm90YXRlID0gdHJ1ZTtcbiAgfVxuXG5sZXQgdmlld19tYXRyaXggY2FtID1cbiAgbGV0IG9wZW4gR2xvYmUuTWF0aCBpblxuICBsZXQgeCA9IGNhbS5kaXN0YW5jZSAqLiBjb3MgY2FtLnBoaSAqLiBzaW4gY2FtLnRoZXRhIGluXG4gIGxldCB5ID0gY2FtLmRpc3RhbmNlICouIHNpbiBjYW0ucGhpIGluXG4gIGxldCB6ID0gY2FtLmRpc3RhbmNlICouIGNvcyBjYW0ucGhpICouIGNvcyBjYW0udGhldGEgaW5cbiAgbGV0IGV5ZSA9IFZlYzMuY3JlYXRlIHggeSB6IGluXG4gIGxldCBjZW50ZXIgPSBWZWMzLnplcm8gaW5cbiAgbGV0IHVwID0gVmVjMy5jcmVhdGUgMC4gMS4gMC4gaW5cbiAgTWF0NC5sb29rX2F0IH5leWUgfmNlbnRlciB+dXBcblxubGV0IGxvb2tfYXRfcG9zaXRpb24gY2FtIChwb3MgOiBHbG9iZS5NYXRoLlZlYzMudCkgPVxuICBsZXQgciA9IEdsb2JlLk1hdGguVmVjMy5sZW5ndGggcG9zIGluXG4gIGlmIHIgPiAxZS02IHRoZW4gYmVnaW5cbiAgICBjYW0ucGhpIDwtIGFzaW4gKHBvcy55IC8uIHIpO1xuICAgIGNhbS50aGV0YSA8LSBhdGFuMiBwb3MueCBwb3MuejtcbiAgICBjYW0uYXV0b19yb3RhdGUgPC0gZmFsc2VcbiAgZW5kXG5cbmxldCB1cGRhdGUgY2FtIF9kdCA9XG4gIGlmIGNhbS5hdXRvX3JvdGF0ZSAmJiBub3QgY2FtLmRyYWdnaW5nIHRoZW4gY2FtLnRoZXRhIDwtIGNhbS50aGV0YSArLiAwLjAwMlxuXG5sZXQgYXR0YWNoX2V2ZW50cyBjYW0gZWwgPVxuICBsZXQgX2wxID1cbiAgICBFdi5saXN0ZW4gRXYucG9pbnRlcmRvd25cbiAgICAgIChmdW4gZXYgLT5cbiAgICAgICAgbGV0IHBldiA9IEV2LmFzX3R5cGUgZXYgaW5cbiAgICAgICAgbGV0IG1ldiA9IEV2LlBvaW50ZXIuYXNfbW91c2UgcGV2IGluXG4gICAgICAgIGNhbS5kcmFnZ2luZyA8LSB0cnVlO1xuICAgICAgICBjYW0uYXV0b19yb3RhdGUgPC0gZmFsc2U7XG4gICAgICAgIGNhbS5sYXN0X3ggPC0gRXYuTW91c2UuY2xpZW50X3ggbWV2O1xuICAgICAgICBjYW0ubGFzdF95IDwtIEV2Lk1vdXNlLmNsaWVudF95IG1ldilcbiAgICAgIChFbC5hc190YXJnZXQgZWwpXG4gIGluXG4gIGxldCBfbDIgPVxuICAgIEV2Lmxpc3RlbiBFdi5wb2ludGVybW92ZVxuICAgICAgKGZ1biBldiAtPlxuICAgICAgICBpZiBjYW0uZHJhZ2dpbmcgdGhlbiBiZWdpblxuICAgICAgICAgIGxldCBwZXYgPSBFdi5hc190eXBlIGV2IGluXG4gICAgICAgICAgbGV0IG1ldiA9IEV2LlBvaW50ZXIuYXNfbW91c2UgcGV2IGluXG4gICAgICAgICAgbGV0IHggPSBFdi5Nb3VzZS5jbGllbnRfeCBtZXYgaW5cbiAgICAgICAgICBsZXQgeSA9IEV2Lk1vdXNlLmNsaWVudF95IG1ldiBpblxuICAgICAgICAgIGxldCBkeCA9IHggLS4gY2FtLmxhc3RfeCBpblxuICAgICAgICAgIGxldCBkeSA9IHkgLS4gY2FtLmxhc3RfeSBpblxuICAgICAgICAgIGNhbS50aGV0YSA8LSBjYW0udGhldGEgLS4gKGR4ICouIDAuMDA1KTtcbiAgICAgICAgICBjYW0ucGhpIDwtIGNhbS5waGkgKy4gKGR5ICouIDAuMDA1KTtcbiAgICAgICAgICBsZXQgbWF4X3BoaSA9IChGbG9hdC5waSAvLiAyLikgLS4gMC4wMSBpblxuICAgICAgICAgIGNhbS5waGkgPC0gRmxvYXQubWF4ICgtLm1heF9waGkpIChGbG9hdC5taW4gbWF4X3BoaSBjYW0ucGhpKTtcbiAgICAgICAgICBjYW0ubGFzdF94IDwtIHg7XG4gICAgICAgICAgY2FtLmxhc3RfeSA8LSB5XG4gICAgICAgIGVuZClcbiAgICAgIChFbC5hc190YXJnZXQgZWwpXG4gIGluXG4gIGxldCBfbDMgPVxuICAgIEV2Lmxpc3RlbiBFdi5wb2ludGVydXAgKGZ1biBfZXYgLT4gY2FtLmRyYWdnaW5nIDwtIGZhbHNlKSAoRWwuYXNfdGFyZ2V0IGVsKVxuICBpblxuICBsZXQgX2w0ID1cbiAgICBFdi5saXN0ZW4gRXYud2hlZWxcbiAgICAgIChmdW4gZXYgLT5cbiAgICAgICAgbGV0IHdldiA6IEV2LldoZWVsLnQgPSBFdi5hc190eXBlIGV2IGluXG4gICAgICAgIEV2LnByZXZlbnRfZGVmYXVsdCBldjtcbiAgICAgICAgbGV0IGR5ID0gRXYuV2hlZWwuZGVsdGFfeSB3ZXYgaW5cbiAgICAgICAgY2FtLmRpc3RhbmNlIDwtIGNhbS5kaXN0YW5jZSArLiAoZHkgKi4gMC4wMDIpO1xuICAgICAgICBjYW0uZGlzdGFuY2UgPC0gRmxvYXQubWF4IDEuNSAoRmxvYXQubWluIDEwLiBjYW0uZGlzdGFuY2UpKVxuICAgICAgKEVsLmFzX3RhcmdldCBlbClcbiAgaW5cbiAgKClcblxubGV0IHBwIHBwZiBjYW0gPVxuICBGbXQucGYgcHBmIFwidGhldGE9JS4zZiBwaGk9JS4zZiBkaXN0PSUuMmZcIiBjYW0udGhldGEgY2FtLnBoaSBjYW0uZGlzdGFuY2VcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDMiLCJhMSIsImEyIiwiY2FtbF9jYWxsNCIsImEzIiwiZ2xvYmFsX2RhdGEiLCJGbXQiLCJCcnIiLCJTdGRsaWJfRmxvYXQiLCJHbG9iZV9NYXRoIiwidiIsInBhcmFtIiwidmlld19tYXRyaXgiLCJjYW0iLCJ4IiwieSIsInoiLCJleWUiLCJjZW50ZXIiLCJ1cCIsImxvb2tfYXRfcG9zaXRpb24iLCJwb3MiLCJyIiwidXBkYXRlIiwiZHQiLCJhdHRhY2hfZXZlbnRzIiwiZWwiLCJldiIsImR4IiwiZHkiLCJtYXhfcGhpIiwicHAiLCJwcGYiXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBTCxHQUFBQyxJQUFBRSxJQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsTUFBQTtBQUFBLElBQUFDLE1BQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLFlBQUFDLEVBQUFDLE9Db0JFLHVDQVFDO0FBQUEsWUFBQUMsWUFBQUM7QUFBQUE7QUFBQUEsS0FBQUMsSUFJTyxTQUFnQixtQkFBZTtBQUFBLEtBQUFDLElBQy9CLFNBQWdCO0FBQUEsS0FBQUMsSUFDaEIsU0FBZ0IsbUJBQWU7QUFBQSxLQUFBQyxNQUM3QjtBQUFBLEtBQUFDLFNBQ1Y7QUFBQSxLQUFBQyxLQUNTO0FBQUEsSUFDVCxtREFBNkI7QUFBQTtBQUFBLFlBQUFDLGlCQUFBUCxLQUFBUTtBQUFBQTtBQUFBQSxLQUFBQyxJQUdyQjtBQUFBLFNBQ1I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQ2E7QUFBQSxtQkFDRTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBRmY7QUFBQSxHQUlHO0FBQUEsWUFBQUMsT0FBQVYsS0FBQVc7QUFBQUE7QUFBQUEsS0FBQSxJQUdIO0FBQUE7QUFBQTtBQUFBO0FBQUEsR0FBMkU7QUFBQSxZQUFBQyxjQUFBWixLQUFBYTtBQUFBQSxJQUl6RTtBQUFBO0FBQUE7QUFBQTtBQUFBLGVBQUFDO0FBQUFBLE9BSUk7QUFBQSxPQUNBO0FBQUEsT0FDYztBQUFBLE9BQ0E7QUFBQSxPQUFxQjtBQUFBO0FBQUE7QUFBQSxJQUl2QztBQUFBO0FBQUE7QUFBQTtBQUFBLGVBQUFBO0FBQUFBLFdBQUEsSUFFSTtBQUFBO0FBQUE7QUFBQSxTQUFBYixJQUdVO0FBQUEsU0FBQUMsSUFDQTtBQUFBLFNBQUFhLEtBQ0M7QUFBQSxTQUFBQyxLQUNBO0FBQUEsUUFDOEI7QUFBQSxRQUNKO0FBQUE7QUFBQSxTQUFBQyxVQUNyQjtBQUFBLGFBQ21CO0FBQUEsUUFBdEI7QUFBQSxRQUNYO0FBQUEsUUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGdCQVpGO0FBQUE7QUFBQSxNQWFHO0FBQUE7QUFBQSxJQUlQO0FBQUEsMkNBQUFILElBQW1DLHFCQUFxQjtBQUFBLElBR3hEO0FBQUE7QUFBQTtBQUFBO0FBQUEsZUFBQUE7QUFBQUEsT0FHSTtBQUFBLFdBQUFFLEtBQ1M7QUFBQSxPQUNvQztBQUFBLGVBQ2Y7QUFBQSxPQUFkO0FBQUEsT0FBMEM7QUFBQTtBQUFBO0FBQUEsSUFHaEU7QUFBQSxHQUFFO0FBQUE7QUFBQTtBQUFBLE1EL0ZKO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFFLEdBQUFDLEtBQUFuQjtBQUFBQSxRQUFBLElDa0dFO0FBQUEseURBQXlFO0FBQUE7QUFBQSxHRGxHM0UiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0MDQzMiwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiIuZ2xvYmVfd2ViZ2wub2Jqcy9qc29vL2RlZmF1bHQvZ2xvYmVfd2ViZ2wuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9vY2FtbC1nbG9iZS93ZWJnbC9jb3ZlcmFnZS5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBDb3B5cmlnaHQgKGMpIDIwMjUgVGhvbWFzIEdhemFnbmFpcmUuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbigqKiBTYXRlbGxpdGUgZ3JvdW5kIGNvdmVyYWdlIHJlbmRlcmluZy5cblxuICAgIERyYXdzIGZpbGxlZCBjaXJjbGVzIG9uIHRoZSBnbG9iZSB3aXRoIGFkZGl0aXZlIGJsZW5kaW5nIHNvIHRoZXkgYnJpZ2h0ZW5cbiAgICB3aGF0ZXZlciBpcyB1bmRlcm5lYXRoIChkb3RzLCBncmlkLCBldGMuKSDigJQgbGlrZSBhIHNwb3RsaWdodCBlZmZlY3QuIFVzZXNcbiAgICBwZXItdmVydGV4IHJhZGlhbCBmYWxsb2ZmOiBicmlnaHQgYXQgdGhlIHN1Yi1zYXRlbGxpdGUgcG9pbnQsIGZhZGluZyB0byB6ZXJvXG4gICAgYXQgdGhlIGZvb3RwcmludCBlZGdlLiAqKVxuXG5vcGVuIEJyclxub3BlbiBCcnJfY2FudmFzXG5cbmxldCB2ZXJ0ID1cbiAge3wjdmVyc2lvbiAzMDAgZXNcbnByZWNpc2lvbiBoaWdocCBmbG9hdDtcbmxheW91dChsb2NhdGlvbiA9IDApIGluIHZlYzMgYV9wb3NpdGlvbjtcbmxheW91dChsb2NhdGlvbiA9IDEpIGluIHZlYzMgYV9jb2xvcjtcbmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0IGFfZmFkZTtcbnVuaWZvcm0gbWF0NCB1X3Byb2plY3Rpb247XG51bmlmb3JtIG1hdDQgdV92aWV3O1xub3V0IHZlYzMgdl9jb2xvcjtcbm91dCBmbG9hdCB2X2ZhZGU7XG52b2lkIG1haW4oKSB7XG4gIGdsX1Bvc2l0aW9uID0gdV9wcm9qZWN0aW9uICogdV92aWV3ICogdmVjNChhX3Bvc2l0aW9uLCAxLjApO1xuICB2X2NvbG9yID0gYV9jb2xvcjtcbiAgdl9mYWRlID0gYV9mYWRlO1xufVxufH1cblxubGV0IGZyYWcgPVxuICB7fCN2ZXJzaW9uIDMwMCBlc1xucHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuaW4gdmVjMyB2X2NvbG9yO1xuaW4gZmxvYXQgdl9mYWRlO1xudW5pZm9ybSBmbG9hdCB1X2ludGVuc2l0eTtcbm91dCB2ZWM0IGZyYWdDb2xvcjtcbnZvaWQgbWFpbigpIHtcbiAgLy8gU21vb3RoIHJhZGlhbCBmYWxsb2ZmOiBicmlnaHQgY2VudGVyLCB6ZXJvIGF0IGVkZ2VcbiAgZmxvYXQgZ2xvdyA9IHZfZmFkZSAqIHZfZmFkZSAqIHVfaW50ZW5zaXR5O1xuICBmcmFnQ29sb3IgPSB2ZWM0KHZfY29sb3IgKiBnbG93LCBnbG93KTtcbn1cbnx9XG5cbnR5cGUgZm9vdHByaW50ID0ge1xuICBwb3MgOiBHbG9iZS5NYXRoLlZlYzMudDtcbiAgY29sb3IgOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQ7XG4gIGhhbGZfYW5nbGUgOiBmbG9hdDtcbn1cblxudHlwZSB0ID0ge1xuICBwcm9nIDogR2wucHJvZ3JhbTtcbiAgdmFvIDogR2wudmVydGV4X2FycmF5X29iamVjdDtcbiAgdmJvIDogR2wuYnVmZmVyO1xuICBtdXRhYmxlIG51bV92ZXJ0aWNlcyA6IGludDtcbiAgdV9wcm9qIDogR2wudW5pZm9ybV9sb2NhdGlvbjtcbiAgdV92aWV3IDogR2wudW5pZm9ybV9sb2NhdGlvbjtcbiAgdV9pbnRlbnNpdHkgOiBHbC51bmlmb3JtX2xvY2F0aW9uO1xufVxuXG5sZXQgdiBnbCA9XG4gIGxldCBwcm9nID0gU2hhZGVyLnByb2dyYW0gZ2wgfnZlcnQgfmZyYWcgaW5cbiAgbGV0IHZhbyA9IEdsLmNyZWF0ZV92ZXJ0ZXhfYXJyYXkgZ2wgaW5cbiAgbGV0IHZibyA9IEdsLmNyZWF0ZV9idWZmZXIgZ2wgaW5cbiAgR2wuYmluZF92ZXJ0ZXhfYXJyYXkgZ2wgKFNvbWUgdmFvKTtcbiAgR2wuYmluZF9idWZmZXIgZ2wgR2wuYXJyYXlfYnVmZmVyIChTb21lIHZibyk7XG4gICgqIHBvc2l0aW9uICgzKSArIGNvbG9yICgzKSArIGZhZGUgKDEpID0gNyBmbG9hdHMsIHN0cmlkZSAyOCAqKVxuICBHbC5lbmFibGVfdmVydGV4X2F0dHJpYl9hcnJheSBnbCAwO1xuICBHbC52ZXJ0ZXhfYXR0cmliX3BvaW50ZXIgZ2wgMCAzIEdsLmZsb2F0IGZhbHNlIDI4IDA7XG4gIEdsLmVuYWJsZV92ZXJ0ZXhfYXR0cmliX2FycmF5IGdsIDE7XG4gIEdsLnZlcnRleF9hdHRyaWJfcG9pbnRlciBnbCAxIDMgR2wuZmxvYXQgZmFsc2UgMjggMTI7XG4gIEdsLmVuYWJsZV92ZXJ0ZXhfYXR0cmliX2FycmF5IGdsIDI7XG4gIEdsLnZlcnRleF9hdHRyaWJfcG9pbnRlciBnbCAyIDEgR2wuZmxvYXQgZmFsc2UgMjggMjQ7XG4gIEdsLmJpbmRfdmVydGV4X2FycmF5IGdsIE5vbmU7XG4gIGxldCB1IG5hbWUgPSBHbC5nZXRfdW5pZm9ybV9sb2NhdGlvbiBnbCBwcm9nIChKc3RyLm9mX3N0cmluZyBuYW1lKSBpblxuICB7XG4gICAgcHJvZztcbiAgICB2YW87XG4gICAgdmJvO1xuICAgIG51bV92ZXJ0aWNlcyA9IDA7XG4gICAgdV9wcm9qID0gdSBcInVfcHJvamVjdGlvblwiO1xuICAgIHVfdmlldyA9IHUgXCJ1X3ZpZXdcIjtcbiAgICB1X2ludGVuc2l0eSA9IHUgXCJ1X2ludGVuc2l0eVwiO1xuICB9XG5cbmxldCBsb2FkIGdsIHQgKGZvb3RwcmludHMgOiBmb290cHJpbnQgbGlzdCkgPVxuICBpZiBmb290cHJpbnRzID0gW10gdGhlbiB0Lm51bV92ZXJ0aWNlcyA8LSAwXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgYWxsX3ZlcnRzID1cbiAgICAgIExpc3QuY29uY2F0X21hcFxuICAgICAgICAoZnVuIChmcCA6IGZvb3RwcmludCkgLT5cbiAgICAgICAgICBsZXQgY2VudGVyID0gR2xvYmUuTWF0aC5WZWMzLm5vcm1hbGl6ZSBmcC5wb3MgaW5cbiAgICAgICAgICBsZXQgciwgZywgYiA9IGZwLmNvbG9yIGluXG4gICAgICAgICAgbGV0IHRyaXMgPVxuICAgICAgICAgICAgR2xvYmUuR2VvbWV0cnkuZmlsbGVkX2NpcmNsZV9vbl9zcGhlcmUgY2VudGVyXG4gICAgICAgICAgICAgIH5oYWxmX2FuZ2xlOmZwLmhhbGZfYW5nbGUgfnNlZ21lbnRzOjQ4XG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiBFYWNoIHRyaWFuZ2xlOiAoY2VudGVyLCBlZGdlMCwgZWRnZTEpLlxuICAgICAgICAgICAgIGNlbnRlciBnZXRzIGZhZGU9MS4wLCBlZGdlcyBnZXQgZmFkZT0wLjAgKilcbiAgICAgICAgICBsZXQgcmVjIHRhZyA9IGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGMgOjogcDAgOjogcDEgOjogcmVzdCAtPlxuICAgICAgICAgICAgICAgIChjLCByLCBnLCBiLCAxLjApIDo6IChwMCwgciwgZywgYiwgMC4wKSA6OiAocDEsIHIsIGcsIGIsIDAuMClcbiAgICAgICAgICAgICAgICA6OiB0YWcgcmVzdFxuICAgICAgICAgICAgfCBfIC0+IFtdXG4gICAgICAgICAgaW5cbiAgICAgICAgICB0YWcgdHJpcylcbiAgICAgICAgZm9vdHByaW50c1xuICAgIGluXG4gICAgbGV0IG4gPSBMaXN0Lmxlbmd0aCBhbGxfdmVydHMgaW5cbiAgICBsZXQgZGF0YSA9IEFycmF5Lm1ha2UgKG4gKiA3KSAwLiBpblxuICAgIExpc3QuaXRlcmlcbiAgICAgIChmdW4gaSAoKHYgOiBHbG9iZS5NYXRoLlZlYzMudCksIHIsIGcsIGIsIGZhZGUpIC0+XG4gICAgICAgIGxldCBvZmYgPSBpICogNyBpblxuICAgICAgICBkYXRhLihvZmYpIDwtIHYueDtcbiAgICAgICAgZGF0YS4ob2ZmICsgMSkgPC0gdi55O1xuICAgICAgICBkYXRhLihvZmYgKyAyKSA8LSB2Lno7XG4gICAgICAgIGRhdGEuKG9mZiArIDMpIDwtIHI7XG4gICAgICAgIGRhdGEuKG9mZiArIDQpIDwtIGc7XG4gICAgICAgIGRhdGEuKG9mZiArIDUpIDwtIGI7XG4gICAgICAgIGRhdGEuKG9mZiArIDYpIDwtIGZhZGUpXG4gICAgICBhbGxfdmVydHM7XG4gICAgbGV0IGJ1ZiA9IFRhcnJheS5vZl9mbG9hdF9hcnJheSBUYXJyYXkuRmxvYXQzMiBkYXRhIGluXG4gICAgR2wuYmluZF9idWZmZXIgZ2wgR2wuYXJyYXlfYnVmZmVyIChTb21lIHQudmJvKTtcbiAgICBHbC5idWZmZXJfZGF0YSBnbCBHbC5hcnJheV9idWZmZXIgYnVmIEdsLmR5bmFtaWNfZHJhdztcbiAgICB0Lm51bV92ZXJ0aWNlcyA8LSBuXG4gIGVuZFxuXG5sZXQgZHJhdyBnbCB0IH5wcm9qZWN0aW9uIH52aWV3ID8oaW50ZW5zaXR5ID0gMC40KSAoKSA9XG4gIGlmIHQubnVtX3ZlcnRpY2VzID4gMCB0aGVuIGJlZ2luXG4gICAgKCogQWRkaXRpdmUgYmxlbmRpbmc6IGJyaWdodGVucyB1bmRlcmx5aW5nIGNvbnRlbnQgKilcbiAgICBHbC5ibGVuZF9mdW5jIGdsIEdsLnNyY19hbHBoYSBHbC5vbmU7XG4gICAgR2wuZGlzYWJsZSBnbCBHbC5kZXB0aF90ZXN0O1xuICAgIEdsLnVzZV9wcm9ncmFtIGdsIHQucHJvZztcbiAgICBHbC51bmlmb3JtX21hdHJpeDRmdiBnbCB0LnVfcHJvaiBmYWxzZVxuICAgICAgKFRhcnJheS5vZl9mbG9hdF9hcnJheSBUYXJyYXkuRmxvYXQzMiBwcm9qZWN0aW9uKTtcbiAgICBHbC51bmlmb3JtX21hdHJpeDRmdiBnbCB0LnVfdmlldyBmYWxzZVxuICAgICAgKFRhcnJheS5vZl9mbG9hdF9hcnJheSBUYXJyYXkuRmxvYXQzMiB2aWV3KTtcbiAgICBHbC51bmlmb3JtMWYgZ2wgdC51X2ludGVuc2l0eSBpbnRlbnNpdHk7XG4gICAgR2wuYmluZF92ZXJ0ZXhfYXJyYXkgZ2wgKFNvbWUgdC52YW8pO1xuICAgIEdsLmRyYXdfYXJyYXlzIGdsIEdsLnRyaWFuZ2xlcyAwIHQubnVtX3ZlcnRpY2VzO1xuICAgIEdsLmJpbmRfdmVydGV4X2FycmF5IGdsIE5vbmU7XG4gICAgKCogUmVzdG9yZSBub3JtYWwgYmxlbmRpbmcgKilcbiAgICBHbC5lbmFibGUgZ2wgR2wuZGVwdGhfdGVzdDtcbiAgICBHbC5ibGVuZF9mdW5jIGdsIEdsLnNyY19hbHBoYSBHbC5vbmVfbWludXNfc3JjX2FscGhhXG4gIGVuZFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NoZWNrX2JvdW5kIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImNhbWxfY2FsbDMiLCJhMiIsImNhbWxfY2FsbDQiLCJhMyIsImNhbWxfY2FsbDciLCJhNCIsImE1IiwiYTYiLCJnbG9iYWxfZGF0YSIsIkJycl9jYW52YXMiLCJCcnIiLCJHbG9iZV9NYXRoIiwiR2xvYmVfR2VvbWV0cnkiLCJTdGRsaWJfTGlzdCIsIkdsb2JlX3dlYmdsX1NoYWRlciIsInYiLCJnbCIsInByb2ciLCJ2YW8iLCJ2Ym8iLCJ1IiwibmFtZSIsImxvYWQiLCJ0IiwiZm9vdHByaW50cyIsImFsbF92ZXJ0cyIsImZwIiwiY2VudGVyIiwibWF0Y2giLCJiIiwiZyIsInIiLCJ0cmlzIiwidGFnIiwicGFyYW0iLCJyZXN0IiwicDEiLCJwMCIsImMiLCJuIiwiZGF0YSIsImkiLCJmYWRlIiwib2ZmIiwiYnVmIiwiZHJhdyIsInByb2plY3Rpb24iLCJ2aWV3Iiwib3B0IiwiaW50ZW5zaXR5Il0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQU4sR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFSLEdBQUFDLElBQUFFLElBQUFFLElBQUFFLElBQUFFLElBQUFDLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsTUFBQTtBQUFBLElBQUFDLGFBQUE7QUFBQSxJQUFBQyxpQkFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxxQkFBQTtBQUFBLFlBQUFDLEVBQUFDO0FBQUFBO0FBQUFBLEtBQUFDO0FBQUFBLE9DK0RhO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxLQUFBQyxNQUNEO0FBQUEsS0FBQUMsTUFDQTtBQUFBLElBQ1Y7QUFBQSxJQUNBO0FBQUEsSUFFQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLGFBQUFDLEVBQUFDO0FBQUFBLEtBQzZDLE9BQXFCO0FBQUE7QUFBQTtBQUFBO0FBQUEsY0FBckIsc0NBQXFCO0FBQUE7QUFBQSxZQVFsRCxzQkFETDtBQUFBLElBREEsc0RBQWdCO0FBQUEsR0FHMUI7QUFBQSxZQUFBQyxLQUFBTixJQUFBTyxHQUFBQztBQUFBQSxJQUdELHFCQUF3QjtBQUFBO0FBQUEsS0FBQUM7QUFBQUEsT0FHcEI7QUFBQTtBQUFBLGtCQUFBQztBQUFBQTtBQUFBQSxXQUFBQyxTQUVpQjtBQUFBLFdBQUFDLFFBQ2I7QUFBQSxXQUFBQyxJQUFBO0FBQUEsV0FBQUMsSUFBQTtBQUFBLFdBQUFDLElBQUE7QUFBQSxXQUFBQyxPQUVFO0FBQUEsbUJBQUFDLElBQUFDO0FBQUFBLFdBS1k7QUFBQTtBQUFBO0FBQUEsaUJBQUFOLFFBQUE7QUFBQTtBQUFBLGtCQUFBTyxPQUFBLFVBQUFDLEtBQUEsVUFBQUMsS0FBQSxNQUFBQyxJQUFBO0FBQUEsY0FHTDtBQUFBO0FBQUE7QUFBQTtBQUFBLDZEQUFRO0FBQUE7QUFBQTtBQUFBO0FBQUEsV0FDUjtBQUFBLFVBQUU7QUFBQSxVQUVYLGdCQUFRO0FBQUE7QUFBQTtBQUFBLEtBQUFDLElBR047QUFBQSxLQUFBQyxPQUNHO0FBQUEsSUFDWDtBQUFBO0FBQUEsZUFBQUMsR0FBQVA7QUFBQUE7QUFBQUEsUUFBQVEsT0FDRTtBQUFBLFFBQUFiLElBQUE7QUFBQSxRQUFBQyxJQUFBO0FBQUEsUUFBQUMsSUFBQTtBQUFBLFFBQUFoQixJQUFBO0FBQUEsUUFBQTRCLE1BQ0U7QUFBQSxZQUNBO0FBQUE7QUFBQSxlQUFpQixpQkFDakI7QUFBQTtBQUFBLGVBQXFCLGlCQUNyQjtBQUFBO0FBQUEsZUFBcUI7QUFBQSxPQUNyQjtBQUFBLGVBQW1CO0FBQUEsT0FDbkI7QUFBQSxlQUFtQjtBQUFBLE9BQ25CO0FBQUEsZUFBbUI7QUFBQSxPQUNuQjtBQUFBLE9BQXNCO0FBQUEsTUFBQztBQUFBO0FBQUEsUUFBQUMsTUFFakI7QUFBQSxJQUNWO0FBQUEsSUFDQTtBQUFBO0FBQUEsSUFBcUQ7QUFBQTtBQUFBLEdBRXBEO0FBQUEsWUFBQUMsS0FBQTdCLElBQUFPLEdBQUF1QixZQUFBQyxNQUFBQyxLQUFBZDtBQUFBQSxRQUFBZSxZQUVJLHdCQUNQO0FBQUE7QUFBQSxJQUVFO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxZQUVFO0FBQUEsSUFERjtBQUFBLFlBR0U7QUFBQSxJQURGO0FBQUEsSUFFQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBRUE7QUFBQSxJQUEwQjtBQUFBLDJFQUV6QjtBQUFBO0FBQUEsR0RsSkwiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0MDU5NiwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiIuZ2xvYmVfd2ViZ2wub2Jqcy9qc29vL2RlZmF1bHQvZ2xvYmVfd2ViZ2wuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9vY2FtbC1nbG9iZS93ZWJnbC9lYXJ0aC5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBDb3B5cmlnaHQgKGMpIDIwMjUgVGhvbWFzIEdhemFnbmFpcmUuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbigqKiBEb3QgY2xvdWQgRWFydGggcmVuZGVyaW5nIHVzaW5nIEdMX1BPSU5UUy4gKilcblxub3BlbiBCcnJcbm9wZW4gQnJyX2NhbnZhc1xuXG50eXBlIHQgPSB7XG4gIHByb2cgOiBHbC5wcm9ncmFtO1xuICB2YW8gOiBHbC52ZXJ0ZXhfYXJyYXlfb2JqZWN0O1xuICBudW1fcG9pbnRzIDogaW50O1xuICB1X3Byb2plY3Rpb24gOiBHbC51bmlmb3JtX2xvY2F0aW9uO1xuICB1X3ZpZXcgOiBHbC51bmlmb3JtX2xvY2F0aW9uO1xuICB1X3BvaW50X3NpemUgOiBHbC51bmlmb3JtX2xvY2F0aW9uO1xuICB1X2RpbSA6IEdsLnVuaWZvcm1fbG9jYXRpb247XG59XG5cbmxldCB2ID8obnVtX3BvaW50cyA9IDMwMDAwKSBnbCA9XG4gIGxldCBwb2ludHMgPSBHbG9iZS5TcGhlcmUuZ2VuZXJhdGVfY2xvdWQgfm51bV9wb2ludHMgaW5cbiAgbGV0IG4gPSBBcnJheS5sZW5ndGggcG9pbnRzIGluXG4gIGxldCBkYXRhID0gQXJyYXkubWFrZSAobiAqIDQpIDAuIGluXG4gIEFycmF5Lml0ZXJpXG4gICAgKGZ1biBpIChwIDogR2xvYmUuU3BoZXJlLnBvaW50KSAtPlxuICAgICAgbGV0IG9mZiA9IGkgKiA0IGluXG4gICAgICBkYXRhLihvZmYpIDwtIHAucG9zLng7XG4gICAgICBkYXRhLihvZmYgKyAxKSA8LSBwLnBvcy55O1xuICAgICAgZGF0YS4ob2ZmICsgMikgPC0gcC5wb3MuejtcbiAgICAgIGRhdGEuKG9mZiArIDMpIDwtIHAuYnJpZ2h0bmVzcylcbiAgICBwb2ludHM7XG4gIGxldCBidWZfZGF0YSA9IFRhcnJheS5vZl9mbG9hdF9hcnJheSBUYXJyYXkuRmxvYXQzMiBkYXRhIGluXG4gIGxldCBwcm9nID1cbiAgICBTaGFkZXIucHJvZ3JhbSBnbCB+dmVydDpTaGFkZXIuZWFydGhfdmVydGV4IH5mcmFnOlNoYWRlci5lYXJ0aF9mcmFnbWVudFxuICBpblxuICBsZXQgdmFvID0gR2wuY3JlYXRlX3ZlcnRleF9hcnJheSBnbCBpblxuICBHbC5iaW5kX3ZlcnRleF9hcnJheSBnbCAoU29tZSB2YW8pO1xuICBsZXQgdmJvID0gR2wuY3JlYXRlX2J1ZmZlciBnbCBpblxuICBHbC5iaW5kX2J1ZmZlciBnbCBHbC5hcnJheV9idWZmZXIgKFNvbWUgdmJvKTtcbiAgR2wuYnVmZmVyX2RhdGEgZ2wgR2wuYXJyYXlfYnVmZmVyIGJ1Zl9kYXRhIEdsLnN0YXRpY19kcmF3O1xuICBHbC5lbmFibGVfdmVydGV4X2F0dHJpYl9hcnJheSBnbCAwO1xuICBHbC52ZXJ0ZXhfYXR0cmliX3BvaW50ZXIgZ2wgMCAzIEdsLmZsb2F0IGZhbHNlIDE2IDA7XG4gIEdsLmVuYWJsZV92ZXJ0ZXhfYXR0cmliX2FycmF5IGdsIDE7XG4gIEdsLnZlcnRleF9hdHRyaWJfcG9pbnRlciBnbCAxIDEgR2wuZmxvYXQgZmFsc2UgMTYgMTI7XG4gIEdsLmJpbmRfdmVydGV4X2FycmF5IGdsIE5vbmU7XG4gIGxldCB1IG5hbWUgPSBHbC5nZXRfdW5pZm9ybV9sb2NhdGlvbiBnbCBwcm9nIChKc3RyLm9mX3N0cmluZyBuYW1lKSBpblxuICB7XG4gICAgcHJvZztcbiAgICB2YW87XG4gICAgbnVtX3BvaW50cyA9IG47XG4gICAgdV9wcm9qZWN0aW9uID0gdSBcInVfcHJvamVjdGlvblwiO1xuICAgIHVfdmlldyA9IHUgXCJ1X3ZpZXdcIjtcbiAgICB1X3BvaW50X3NpemUgPSB1IFwidV9wb2ludF9zaXplXCI7XG4gICAgdV9kaW0gPSB1IFwidV9kaW1cIjtcbiAgfVxuXG5sZXQgZHJhdyBnbCB0IH5wcm9qZWN0aW9uIH52aWV3ID8oZGltID0gMS4wKSAoKSA9XG4gIEdsLnVzZV9wcm9ncmFtIGdsIHQucHJvZztcbiAgR2wudW5pZm9ybV9tYXRyaXg0ZnYgZ2wgdC51X3Byb2plY3Rpb24gZmFsc2VcbiAgICAoVGFycmF5Lm9mX2Zsb2F0X2FycmF5IFRhcnJheS5GbG9hdDMyIHByb2plY3Rpb24pO1xuICBHbC51bmlmb3JtX21hdHJpeDRmdiBnbCB0LnVfdmlldyBmYWxzZVxuICAgIChUYXJyYXkub2ZfZmxvYXRfYXJyYXkgVGFycmF5LkZsb2F0MzIgdmlldyk7XG4gIEdsLnVuaWZvcm0xZiBnbCB0LnVfcG9pbnRfc2l6ZSAzLjU7XG4gIEdsLnVuaWZvcm0xZiBnbCB0LnVfZGltIGRpbTtcbiAgR2wuYmluZF92ZXJ0ZXhfYXJyYXkgZ2wgKFNvbWUgdC52YW8pO1xuICBHbC5kcmF3X2FycmF5cyBnbCBHbC5wb2ludHMgMCB0Lm51bV9wb2ludHM7XG4gIEdsLmJpbmRfdmVydGV4X2FycmF5IGdsIE5vbmVcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jaGVja19ib3VuZCIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJjYW1sX2NhbGwzIiwiYTIiLCJjYW1sX2NhbGw0IiwiYTMiLCJjYW1sX2NhbGw3IiwiYTQiLCJhNSIsImE2IiwiZ2xvYmFsX2RhdGEiLCJCcnJfY2FudmFzIiwiQnJyIiwiR2xvYmVfU3BoZXJlIiwiU3RkbGliX0FycmF5IiwiR2xvYmVfd2ViZ2xfU2hhZGVyIiwidiIsIm9wdCIsImdsIiwibnVtX3BvaW50cyIsInBvaW50cyIsIm4iLCJkYXRhIiwiaSIsInAiLCJvZmYiLCJidWZfZGF0YSIsInByb2ciLCJ2YW8iLCJ2Ym8iLCJ1IiwibmFtZSIsImRyYXciLCJ0IiwicHJvamVjdGlvbiIsInZpZXciLCJwYXJhbSIsImRpbSJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUosR0FBQUMsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFOLEdBQUFDLElBQUFFLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBUixHQUFBQyxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBQyxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLE1BQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLElBQUFDLHFCQUFBO0FBQUEsWUFBQUMsRUFBQUMsS0FBQUM7QUFBQUE7QUFBQUEsS0FBQUMsYUNvQk07QUFBQSxLQUFBQyxTQUNTO0FBQUEsS0FBQUMsSUFDYjtBQUFBLEtBQUFDLE9BQ1c7QUFBQSxJQUNYO0FBQUE7QUFBQSxlQUFBQyxHQUFBQztBQUFBQSxXQUFBQyxNQUVJLGVBQ0E7QUFBQTtBQUFBLGVBQXFCLGlCQUNyQjtBQUFBO0FBQUEsZUFBeUIsaUJBQ3pCO0FBQUE7QUFBQSxlQUF5QixpQkFDekI7QUFBQTtBQUFBLE9BQThCO0FBQUE7QUFBQTtBQUFBO0FBQUEsS0FBQUMsV0FFbkI7QUFBQSxLQUFBQztBQUFBQSxPQUViO0FBQUE7QUFBQSxLQUFBQyxNQUVRO0FBQUEsSUFDVjtBQUFBLFFBQUFDLE1BQ1U7QUFBQSxJQUNWO0FBQUEsSUFDQTtBQUFBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxhQUFBQyxFQUFBQztBQUFBQSxLQUM2QyxPQUFxQjtBQUFBO0FBQUE7QUFBQTtBQUFBLGNBQXJCLHNDQUFxQjtBQUFBO0FBQUEsWUFReEQsZ0JBRE8sdUJBRE47QUFBQSxJQURNLG9EQUFnQjtBQUFBLEdBSWhDO0FBQUEsWUFBQUMsS0FBQWQsSUFBQWUsR0FBQUMsWUFBQUMsTUFBQWxCLEtBQUFtQjtBQUFBQSxRQUFBQyxNQUVNO0FBQUEsSUFDUDtBQUFBLFlBRUU7QUFBQSxJQURGO0FBQUEsWUFHRTtBQUFBLElBREY7QUFBQSxJQUVBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFBMEMsMkNBQ2Q7QUFBQTtBQUFBLEdEbkU5QiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQwNzAwLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6Ii5nbG9iZV93ZWJnbC5vYmpzL2pzb28vZGVmYXVsdC9nbG9iZV93ZWJnbC5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL3dvcmtzcGFjZV9yb290L29jYW1sLWdsb2JlL3dlYmdsL2dyaWQubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgQ29weXJpZ2h0IChjKSAyMDI1IFRob21hcyBHYXphZ25haXJlLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG4oKiogTGF0aXR1ZGUvbG9uZ2l0dWRlIGdyaWQgb3ZlcmxheSBvbiB0aGUgZ2xvYmUuXG5cbiAgICBVc2VzIHshR2xvYmUuR2VvbWV0cnkuZ3JpZF9saW5lc30gZm9yIHZlcnRleCBnZW5lcmF0aW9uLiAqKVxuXG5vcGVuIEJyclxub3BlbiBCcnJfY2FudmFzXG5cbmxldCB2ZXJ0ID1cbiAge3wjdmVyc2lvbiAzMDAgZXNcbnByZWNpc2lvbiBoaWdocCBmbG9hdDtcbmxheW91dChsb2NhdGlvbiA9IDApIGluIHZlYzMgYV9wb3NpdGlvbjtcbnVuaWZvcm0gbWF0NCB1X3Byb2plY3Rpb247XG51bmlmb3JtIG1hdDQgdV92aWV3O1xudm9pZCBtYWluKCkgeyBnbF9Qb3NpdGlvbiA9IHVfcHJvamVjdGlvbiAqIHVfdmlldyAqIHZlYzQoYV9wb3NpdGlvbiwgMS4wKTsgfVxufH1cblxubGV0IGZyYWcgPVxuICB7fCN2ZXJzaW9uIDMwMCBlc1xucHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xudW5pZm9ybSB2ZWMzIHVfY29sb3I7XG51bmlmb3JtIGZsb2F0IHVfYWxwaGE7XG5vdXQgdmVjNCBmcmFnQ29sb3I7XG52b2lkIG1haW4oKSB7IGZyYWdDb2xvciA9IHZlYzQodV9jb2xvciwgdV9hbHBoYSk7IH1cbnx9XG5cbnR5cGUgdCA9IHtcbiAgcHJvZyA6IEdsLnByb2dyYW07XG4gIHZhbyA6IEdsLnZlcnRleF9hcnJheV9vYmplY3Q7XG4gIG51bV92ZXJ0aWNlcyA6IGludDtcbiAgdV9wcm9qIDogR2wudW5pZm9ybV9sb2NhdGlvbjtcbiAgdV92aWV3IDogR2wudW5pZm9ybV9sb2NhdGlvbjtcbiAgdV9jb2xvciA6IEdsLnVuaWZvcm1fbG9jYXRpb247XG4gIHVfYWxwaGEgOiBHbC51bmlmb3JtX2xvY2F0aW9uO1xufVxuXG5sZXQgdiA/KHNwYWNpbmcgPSAzMC4pIGdsID1cbiAgbGV0IHZlcnRzID0gR2xvYmUuR2VvbWV0cnkuZ3JpZF9saW5lcyB+c3BhY2luZyAoKSBpblxuICBsZXQgbiA9IExpc3QubGVuZ3RoIHZlcnRzIGluXG4gIGxldCBkYXRhID0gQXJyYXkubWFrZSAobiAqIDMpIDAuIGluXG4gIExpc3QuaXRlcmlcbiAgICAoZnVuIGkgKHYgOiBHbG9iZS5NYXRoLlZlYzMudCkgLT5cbiAgICAgIGRhdGEuKGkgKiAzKSA8LSB2Lng7XG4gICAgICBkYXRhLigoaSAqIDMpICsgMSkgPC0gdi55O1xuICAgICAgZGF0YS4oKGkgKiAzKSArIDIpIDwtIHYueilcbiAgICB2ZXJ0cztcbiAgbGV0IGJ1ZiA9IFRhcnJheS5vZl9mbG9hdF9hcnJheSBUYXJyYXkuRmxvYXQzMiBkYXRhIGluXG4gIGxldCBwcm9nID0gU2hhZGVyLnByb2dyYW0gZ2wgfnZlcnQgfmZyYWcgaW5cbiAgbGV0IHZhbyA9IEdsLmNyZWF0ZV92ZXJ0ZXhfYXJyYXkgZ2wgaW5cbiAgR2wuYmluZF92ZXJ0ZXhfYXJyYXkgZ2wgKFNvbWUgdmFvKTtcbiAgbGV0IHZibyA9IEdsLmNyZWF0ZV9idWZmZXIgZ2wgaW5cbiAgR2wuYmluZF9idWZmZXIgZ2wgR2wuYXJyYXlfYnVmZmVyIChTb21lIHZibyk7XG4gIEdsLmJ1ZmZlcl9kYXRhIGdsIEdsLmFycmF5X2J1ZmZlciBidWYgR2wuc3RhdGljX2RyYXc7XG4gIEdsLmVuYWJsZV92ZXJ0ZXhfYXR0cmliX2FycmF5IGdsIDA7XG4gIEdsLnZlcnRleF9hdHRyaWJfcG9pbnRlciBnbCAwIDMgR2wuZmxvYXQgZmFsc2UgMCAwO1xuICBHbC5iaW5kX3ZlcnRleF9hcnJheSBnbCBOb25lO1xuICBsZXQgdSBuYW1lID0gR2wuZ2V0X3VuaWZvcm1fbG9jYXRpb24gZ2wgcHJvZyAoSnN0ci5vZl9zdHJpbmcgbmFtZSkgaW5cbiAge1xuICAgIHByb2c7XG4gICAgdmFvO1xuICAgIG51bV92ZXJ0aWNlcyA9IG47XG4gICAgdV9wcm9qID0gdSBcInVfcHJvamVjdGlvblwiO1xuICAgIHVfdmlldyA9IHUgXCJ1X3ZpZXdcIjtcbiAgICB1X2NvbG9yID0gdSBcInVfY29sb3JcIjtcbiAgICB1X2FscGhhID0gdSBcInVfYWxwaGFcIjtcbiAgfVxuXG5sZXQgZHJhdyBnbCB0IH5wcm9qZWN0aW9uIH52aWV3ID8oY29sb3IgPSAoMC4xNSwgMC4zNSwgMC41KSkgPyhhbHBoYSA9IDAuMykgKCkgPVxuICBHbC51c2VfcHJvZ3JhbSBnbCB0LnByb2c7XG4gIEdsLnVuaWZvcm1fbWF0cml4NGZ2IGdsIHQudV9wcm9qIGZhbHNlXG4gICAgKFRhcnJheS5vZl9mbG9hdF9hcnJheSBUYXJyYXkuRmxvYXQzMiBwcm9qZWN0aW9uKTtcbiAgR2wudW5pZm9ybV9tYXRyaXg0ZnYgZ2wgdC51X3ZpZXcgZmFsc2VcbiAgICAoVGFycmF5Lm9mX2Zsb2F0X2FycmF5IFRhcnJheS5GbG9hdDMyIHZpZXcpO1xuICBsZXQgciwgZywgYiA9IGNvbG9yIGluXG4gIEdsLnVuaWZvcm0zZiBnbCB0LnVfY29sb3IgciBnIGI7XG4gIEdsLnVuaWZvcm0xZiBnbCB0LnVfYWxwaGEgYWxwaGE7XG4gIEdsLmJpbmRfdmVydGV4X2FycmF5IGdsIChTb21lIHQudmFvKTtcbiAgR2wuZHJhd19hcnJheXMgZ2wgR2wubGluZXMgMCB0Lm51bV92ZXJ0aWNlcztcbiAgR2wuYmluZF92ZXJ0ZXhfYXJyYXkgZ2wgTm9uZVxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NoZWNrX2JvdW5kIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImNhbWxfY2FsbDMiLCJhMiIsImNhbWxfY2FsbDQiLCJhMyIsImNhbWxfY2FsbDUiLCJhNCIsImNhbWxfY2FsbDciLCJhNSIsImE2IiwiZ2xvYmFsX2RhdGEiLCJCcnJfY2FudmFzIiwiQnJyIiwiR2xvYmVfR2VvbWV0cnkiLCJTdGRsaWJfTGlzdCIsIkdsb2JlX3dlYmdsX1NoYWRlciIsInYiLCJvcHQiLCJnbCIsInNwYWNpbmciLCJ2ZXJ0cyIsIm4iLCJkYXRhIiwiaSIsImJ1ZiIsInByb2ciLCJ2YW8iLCJ2Ym8iLCJ1IiwibmFtZSIsImRyYXciLCJ0IiwicHJvamVjdGlvbiIsInZpZXciLCJwYXJhbSIsImNvbG9yIiwiYWxwaGEiLCJiIiwiZyIsInIiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFKLEdBQUFDLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBTixHQUFBQyxJQUFBRSxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQVIsR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFWLEdBQUFDLElBQUFFLElBQUFFLElBQUFFLElBQUFFLElBQUFFLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsTUFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLHFCQUFBO0FBQUEsWUFBQUMsRUFBQUMsS0FBQUM7QUFBQUE7QUFBQUEsS0FBQUMsVUN3Q007QUFBQSxLQUFBQyxRQUNRO0FBQUEsS0FBQUMsSUFDSjtBQUFBLEtBQUFDLE9BQ0c7QUFBQSxJQUNYO0FBQUE7QUFBQSxlQUFBQyxHQUFBUDtBQUFBQSxXQUFBLElBRUk7QUFBQTtBQUFBLGVBQW1CLHlCQUNuQjtBQUFBO0FBQUEsZUFBeUIseUJBQ3pCO0FBQUE7QUFBQSxPQUF5QjtBQUFBO0FBQUE7QUFBQTtBQUFBLEtBQUFRLE1BRW5CO0FBQUEsS0FBQUM7QUFBQUEsT0FDQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsS0FBQUMsTUFDRDtBQUFBLElBQ1Y7QUFBQSxRQUFBQyxNQUNVO0FBQUEsSUFDVjtBQUFBLElBQ0E7QUFBQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLGFBQUFDLEVBQUFDO0FBQUFBLEtBQzZDLE9BQXFCO0FBQUE7QUFBQTtBQUFBO0FBQUEsY0FBckIsc0NBQXFCO0FBQUE7QUFBQSxZQVF0RCxrQkFEQSxrQkFERDtBQUFBLElBREEsb0RBQWdCO0FBQUEsR0FJMUI7QUFBQSxXRHJFSDtBQUFBLFlBQUFDLEtBQUFaLElBQUFhLEdBQUFDLFlBQUFDLE1BQUEsR0FBQWhCLEtBQUFpQjtBQUFBQSxRQUFBQyxRQ3VFUyxjQUFBQyxRQUFBO0FBQUEsSUFDUDtBQUFBLFlBRUU7QUFBQSxJQURGO0FBQUEsWUFHRTtBQUFBLElBREY7QUFBQSxRQUFBQyxJQUM2QyxVQUFBQyxJQUFBLFVBQUFDLElBQUE7QUFBQSxJQUU3QztBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQTJDLDJDQUNmO0FBQUE7QUFBQSxHRGxGOUIiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0MDgxMCwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiIuZ2xvYmVfd2ViZ2wub2Jqcy9qc29vL2RlZmF1bHQvZ2xvYmVfd2ViZ2wuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9vY2FtbC1nbG9iZS93ZWJnbC9vcmJpdC5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBDb3B5cmlnaHQgKGMpIDIwMjUgVGhvbWFzIEdhemFnbmFpcmUuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbigqKiBPcmJpdCB0cmFpbCBhbmQgc2F0ZWxsaXRlIGRvdCByZW5kZXJpbmcuXG5cbiAgICBPcmJpdCBwYXRocyBhcmUgcmVuZGVyZWQgYXMgR0xfTElORV9TVFJJUCB3aXRoIHBlci12ZXJ0ZXggYWxwaGE6IGJyaWdodCBhdFxuICAgIHRoZSBzYXRlbGxpdGUncyBjdXJyZW50IHBvc2l0aW9uLCBmYWRpbmcgdG8gdHJhbnNwYXJlbnQgaW4gdGhlIHBhc3QuIEEgc21hbGxcbiAgICBwcmVkaWN0aW9uIGRvdCBzaG93cyB3aGVyZSB0aGUgc2F0ZWxsaXRlIGlzIGhlYWRpbmcuICopXG5cbm9wZW4gQnJyXG5vcGVuIEJycl9jYW52YXNcblxuKCogLS0tIFNoYWRlcnMgLS0tICopXG5cbigqKiBUcmFpbCBsaW5lOiBwZXItdmVydGV4IHByb2dyZXNzIFswPXRhaWwsIDE9aGVhZF0gY29udHJvbHMgYWxwaGEuICopXG5sZXQgdHJhaWxfdmVydGV4ID1cbiAge3wjdmVyc2lvbiAzMDAgZXNcbnByZWNpc2lvbiBoaWdocCBmbG9hdDtcbmxheW91dChsb2NhdGlvbiA9IDApIGluIHZlYzMgYV9wb3NpdGlvbjtcbmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0IGFfcHJvZ3Jlc3M7XG51bmlmb3JtIG1hdDQgdV9wcm9qZWN0aW9uO1xudW5pZm9ybSBtYXQ0IHVfdmlldztcbm91dCBmbG9hdCB2X3Byb2dyZXNzO1xudm9pZCBtYWluKCkge1xuICBnbF9Qb3NpdGlvbiA9IHVfcHJvamVjdGlvbiAqIHVfdmlldyAqIHZlYzQoYV9wb3NpdGlvbiwgMS4wKTtcbiAgdl9wcm9ncmVzcyA9IGFfcHJvZ3Jlc3M7XG59XG58fVxuXG5sZXQgdHJhaWxfZnJhZ21lbnQgPVxuICB7fCN2ZXJzaW9uIDMwMCBlc1xucHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xudW5pZm9ybSB2ZWMzIHVfY29sb3I7XG5pbiBmbG9hdCB2X3Byb2dyZXNzO1xub3V0IHZlYzQgZnJhZ0NvbG9yO1xudm9pZCBtYWluKCkge1xuICAvLyBGYWRlOiBicmlnaHQgYXQgaGVhZCAocHJvZ3Jlc3M9MSksIHRyYW5zcGFyZW50IGF0IHRhaWwgKHByb2dyZXNzPTApXG4gIGZsb2F0IGFscGhhID0gdl9wcm9ncmVzcyAqIHZfcHJvZ3Jlc3MgKiAwLjk7XG4gIGZyYWdDb2xvciA9IHZlYzQodV9jb2xvciwgYWxwaGEpO1xufVxufH1cblxuKCoqIFNhdGVsbGl0ZS9wcmVkaWN0aW9uIGRvdCB3aXRoIHJhZGlhbCBnbG93LiAqKVxubGV0IGRvdF92ZXJ0ZXggPVxuICB7fCN2ZXJzaW9uIDMwMCBlc1xucHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xubGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gdmVjMyBhX3Bvc2l0aW9uO1xudW5pZm9ybSBtYXQ0IHVfcHJvamVjdGlvbjtcbnVuaWZvcm0gbWF0NCB1X3ZpZXc7XG51bmlmb3JtIGZsb2F0IHVfcG9pbnRfc2l6ZTtcbnZvaWQgbWFpbigpIHtcbiAgZ2xfUG9zaXRpb24gPSB1X3Byb2plY3Rpb24gKiB1X3ZpZXcgKiB2ZWM0KGFfcG9zaXRpb24sIDEuMCk7XG4gIGdsX1BvaW50U2l6ZSA9IHVfcG9pbnRfc2l6ZTtcbn1cbnx9XG5cbmxldCBkb3RfZnJhZ21lbnQgPVxuICB7fCN2ZXJzaW9uIDMwMCBlc1xucHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xudW5pZm9ybSB2ZWMzIHVfY29sb3I7XG51bmlmb3JtIGZsb2F0IHVfYWxwaGE7XG5vdXQgdmVjNCBmcmFnQ29sb3I7XG52b2lkIG1haW4oKSB7XG4gIGZsb2F0IGQgPSBkaXN0YW5jZShnbF9Qb2ludENvb3JkLCB2ZWMyKDAuNSkpO1xuICBpZiAoZCA+IDAuNSkgZGlzY2FyZDtcbiAgZmxvYXQgZ2xvdyA9IHNtb290aHN0ZXAoMC41LCAwLjAsIGQpO1xuICBmcmFnQ29sb3IgPSB2ZWM0KHVfY29sb3IgKiBnbG93LCBnbG93ICogdV9hbHBoYSk7XG59XG58fVxuXG4oKiAtLS0gVHlwZXMgLS0tICopXG5cbnR5cGUgY29sb3IgPSBmbG9hdCAqIGZsb2F0ICogZmxvYXRcblxudHlwZSB0cmFpbCA9IHtcbiAgdmFvIDogR2wudmVydGV4X2FycmF5X29iamVjdDtcbiAgbnVtX3BvaW50cyA6IGludDtcbiAgaGVhZF9pZHggOiBpbnQ7XG4gIGNvbG9yIDogY29sb3I7XG59XG4oKiogQSB0cmFpbDogYXJyYXkgb2YgcG9zaXRpb25zIG9yZGVyZWQgcGFzdOKGkmZ1dHVyZS4gW2hlYWRfaWR4XSBtYXJrcyB3aGVyZSB0aGVcbiAgICBzYXRlbGxpdGUgY3VycmVudGx5IGlzICgwLWJhc2VkKS4gUG9pbnRzIGJlZm9yZSBoZWFkX2lkeCBhcmUgdGhlIHBhc3QgdHJhaWw7XG4gICAgYWZ0ZXIgYXJlIHRoZSBwcmVkaWN0aW9uLiAqKVxuXG50eXBlIGRvdCA9IHsgcG9zIDogR2xvYmUuTWF0aC5WZWMzLnQ7IGNvbG9yIDogY29sb3IgfVxuXG50eXBlIHQgPSB7XG4gIHRyYWlsX3Byb2cgOiBHbC5wcm9ncmFtO1xuICB0cmFpbF91X3Byb2ogOiBHbC51bmlmb3JtX2xvY2F0aW9uO1xuICB0cmFpbF91X3ZpZXcgOiBHbC51bmlmb3JtX2xvY2F0aW9uO1xuICB0cmFpbF91X2NvbG9yIDogR2wudW5pZm9ybV9sb2NhdGlvbjtcbiAgZG90X3Byb2cgOiBHbC5wcm9ncmFtO1xuICBkb3RfdV9wcm9qIDogR2wudW5pZm9ybV9sb2NhdGlvbjtcbiAgZG90X3VfdmlldyA6IEdsLnVuaWZvcm1fbG9jYXRpb247XG4gIGRvdF91X2NvbG9yIDogR2wudW5pZm9ybV9sb2NhdGlvbjtcbiAgZG90X3Vfc2l6ZSA6IEdsLnVuaWZvcm1fbG9jYXRpb247XG4gIGRvdF91X2FscGhhIDogR2wudW5pZm9ybV9sb2NhdGlvbjtcbiAgbXV0YWJsZSBnaG9zdHMgOiB0cmFpbCBsaXN0O1xuICBtdXRhYmxlIHRyYWlscyA6IHRyYWlsIGxpc3Q7XG4gIGRvdF92YW8gOiBHbC52ZXJ0ZXhfYXJyYXlfb2JqZWN0O1xuICBkb3RfdmJvIDogR2wuYnVmZmVyO1xufVxuXG4oKiAtLS0gQVBJIC0tLSAqKVxuXG5sZXQgdiBnbCA9XG4gIGxldCB0cmFpbF9wcm9nID0gU2hhZGVyLnByb2dyYW0gZ2wgfnZlcnQ6dHJhaWxfdmVydGV4IH5mcmFnOnRyYWlsX2ZyYWdtZW50IGluXG4gIGxldCBkb3RfcHJvZyA9IFNoYWRlci5wcm9ncmFtIGdsIH52ZXJ0OmRvdF92ZXJ0ZXggfmZyYWc6ZG90X2ZyYWdtZW50IGluXG4gIGxldCBkb3RfdmFvID0gR2wuY3JlYXRlX3ZlcnRleF9hcnJheSBnbCBpblxuICBsZXQgZG90X3ZibyA9IEdsLmNyZWF0ZV9idWZmZXIgZ2wgaW5cbiAgR2wuYmluZF92ZXJ0ZXhfYXJyYXkgZ2wgKFNvbWUgZG90X3Zhbyk7XG4gIEdsLmJpbmRfYnVmZmVyIGdsIEdsLmFycmF5X2J1ZmZlciAoU29tZSBkb3RfdmJvKTtcbiAgR2wuYnVmZmVyX2RhdGFfc2l6ZSBnbCBHbC5hcnJheV9idWZmZXIgMTIgR2wuZHluYW1pY19kcmF3O1xuICBHbC5lbmFibGVfdmVydGV4X2F0dHJpYl9hcnJheSBnbCAwO1xuICBHbC52ZXJ0ZXhfYXR0cmliX3BvaW50ZXIgZ2wgMCAzIEdsLmZsb2F0IGZhbHNlIDAgMDtcbiAgR2wuYmluZF92ZXJ0ZXhfYXJyYXkgZ2wgTm9uZTtcbiAgbGV0IHUgbmFtZSBwcm9nID0gR2wuZ2V0X3VuaWZvcm1fbG9jYXRpb24gZ2wgcHJvZyAoSnN0ci5vZl9zdHJpbmcgbmFtZSkgaW5cbiAge1xuICAgIHRyYWlsX3Byb2c7XG4gICAgdHJhaWxfdV9wcm9qID0gdSBcInVfcHJvamVjdGlvblwiIHRyYWlsX3Byb2c7XG4gICAgdHJhaWxfdV92aWV3ID0gdSBcInVfdmlld1wiIHRyYWlsX3Byb2c7XG4gICAgdHJhaWxfdV9jb2xvciA9IHUgXCJ1X2NvbG9yXCIgdHJhaWxfcHJvZztcbiAgICBkb3RfcHJvZztcbiAgICBkb3RfdV9wcm9qID0gdSBcInVfcHJvamVjdGlvblwiIGRvdF9wcm9nO1xuICAgIGRvdF91X3ZpZXcgPSB1IFwidV92aWV3XCIgZG90X3Byb2c7XG4gICAgZG90X3VfY29sb3IgPSB1IFwidV9jb2xvclwiIGRvdF9wcm9nO1xuICAgIGRvdF91X3NpemUgPSB1IFwidV9wb2ludF9zaXplXCIgZG90X3Byb2c7XG4gICAgZ2hvc3RzID0gW107XG4gICAgZG90X3VfYWxwaGEgPSB1IFwidV9hbHBoYVwiIGRvdF9wcm9nO1xuICAgIHRyYWlscyA9IFtdO1xuICAgIGRvdF92YW87XG4gICAgZG90X3ZibztcbiAgfVxuXG5sZXQgYWRkX3RyYWlsIGdsIHQgcG9zaXRpb25zIH5oZWFkX2lkeCB+Y29sb3IgPVxuICBsZXQgdmFsaWQgPVxuICAgIEFycmF5LnRvX2xpc3QgcG9zaXRpb25zIHw+IExpc3QuZmlsdGVyX21hcCBGdW4uaWQgfD4gQXJyYXkub2ZfbGlzdFxuICBpblxuICBsZXQgdG90YWwgPSBBcnJheS5sZW5ndGggdmFsaWQgaW5cbiAgaWYgdG90YWwgPiAwIHRoZW4gYmVnaW5cbiAgICAoKiBPbmx5IGtlZXAgcG9pbnRzIHVwIHRvIGFuZCBpbmNsdWRpbmcgaGVhZCDigJQgbm8gcHJlZGljdGlvbiAqKVxuICAgIGxldCBuID0gbWluIChoZWFkX2lkeCArIDEpIHRvdGFsIHw+IG1heCAxIGluXG4gICAgbGV0IGRhdGEgPSBBcnJheS5tYWtlIChuICogNCkgMC4gaW5cbiAgICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICAgIGxldCAodiA6IEdsb2JlLk1hdGguVmVjMy50KSA9IHZhbGlkLihpKSBpblxuICAgICAgbGV0IG9mZiA9IGkgKiA0IGluXG4gICAgICBkYXRhLihvZmYpIDwtIHYueDtcbiAgICAgIGRhdGEuKG9mZiArIDEpIDwtIHYueTtcbiAgICAgIGRhdGEuKG9mZiArIDIpIDwtIHYuejtcbiAgICAgICgqIHByb2dyZXNzOiAwLjAgYXQgdGFpbCDihpIgMS4wIGF0IGhlYWQgKilcbiAgICAgIGRhdGEuKG9mZiArIDMpIDwtIEZsb2F0Lm9mX2ludCBpIC8uIEZsb2F0Lm9mX2ludCAobWF4IDEgKG4gLSAxKSlcbiAgICBkb25lO1xuICAgIGxldCBidWYgPSBUYXJyYXkub2ZfZmxvYXRfYXJyYXkgVGFycmF5LkZsb2F0MzIgZGF0YSBpblxuICAgIGxldCB2YW8gPSBHbC5jcmVhdGVfdmVydGV4X2FycmF5IGdsIGluXG4gICAgR2wuYmluZF92ZXJ0ZXhfYXJyYXkgZ2wgKFNvbWUgdmFvKTtcbiAgICBsZXQgdmJvID0gR2wuY3JlYXRlX2J1ZmZlciBnbCBpblxuICAgIEdsLmJpbmRfYnVmZmVyIGdsIEdsLmFycmF5X2J1ZmZlciAoU29tZSB2Ym8pO1xuICAgIEdsLmJ1ZmZlcl9kYXRhIGdsIEdsLmFycmF5X2J1ZmZlciBidWYgR2wuc3RhdGljX2RyYXc7XG4gICAgKCogcG9zaXRpb246IGxvYyAwLCBzdHJpZGUgMTYsIG9mZnNldCAwICopXG4gICAgR2wuZW5hYmxlX3ZlcnRleF9hdHRyaWJfYXJyYXkgZ2wgMDtcbiAgICBHbC52ZXJ0ZXhfYXR0cmliX3BvaW50ZXIgZ2wgMCAzIEdsLmZsb2F0IGZhbHNlIDE2IDA7XG4gICAgKCogcHJvZ3Jlc3M6IGxvYyAxLCBzdHJpZGUgMTYsIG9mZnNldCAxMiAqKVxuICAgIEdsLmVuYWJsZV92ZXJ0ZXhfYXR0cmliX2FycmF5IGdsIDE7XG4gICAgR2wudmVydGV4X2F0dHJpYl9wb2ludGVyIGdsIDEgMSBHbC5mbG9hdCBmYWxzZSAxNiAxMjtcbiAgICBHbC5iaW5kX3ZlcnRleF9hcnJheSBnbCBOb25lO1xuICAgIHQudHJhaWxzIDwtIHsgdmFvOyBudW1fcG9pbnRzID0gbjsgaGVhZF9pZHggPSBuIC0gMTsgY29sb3IgfSA6OiB0LnRyYWlsc1xuICBlbmRcblxubGV0IGFkZF9saW5lIGdsIHQgcG9zaXRpb25zIH5jb2xvciA9XG4gIGxldCBuID1cbiAgICBBcnJheS5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIHAgLT4gaWYgT3B0aW9uLmlzX3NvbWUgcCB0aGVuIGFjYyArIDEgZWxzZSBhY2MpXG4gICAgICAwIHBvc2l0aW9uc1xuICBpblxuICBhZGRfdHJhaWwgZ2wgdCBwb3NpdGlvbnMgfmhlYWRfaWR4OihuIC0gMSkgfmNvbG9yXG5cbmxldCBhZGRfZ2hvc3QgZ2wgdCBwb3NpdGlvbnMgfmNvbG9yID1cbiAgYWRkX3RyYWlsIGdsIHQgcG9zaXRpb25zIH5oZWFkX2lkeDowIH5jb2xvcjtcbiAgKCogTW92ZSB0aGUgbGFzdCBhZGRlZCB0cmFpbCBmcm9tIHRyYWlscyB0byBnaG9zdHMgKilcbiAgbWF0Y2ggdC50cmFpbHMgd2l0aFxuICB8IG5ld2VzdCA6OiByZXN0IC0+XG4gICAgICB0Lmdob3N0cyA8LSBuZXdlc3QgOjogdC5naG9zdHM7XG4gICAgICB0LnRyYWlscyA8LSByZXN0XG4gIHwgW10gLT4gKClcblxubGV0IGNsZWFyX3RyYWlscyB0ID0gdC50cmFpbHMgPC0gW11cbmxldCBjbGVhcl9naG9zdHMgdCA9IHQuZ2hvc3RzIDwtIFtdXG5sZXQgY2xlYXJfbGluZXMgdCA9IHQuZ2hvc3RzIDwtIFtdOyB0LnRyYWlscyA8LSBbXVxuXG5sZXQgZHJhd19kb3QgZ2wgdCB+cHJvaiB+dncgcG9zIH5jb2xvciB+c2l6ZSB+YWxwaGEgPVxuICBsZXQgYnVmID1cbiAgICBUYXJyYXkub2ZfZmxvYXRfYXJyYXkgVGFycmF5LkZsb2F0MzJcbiAgICAgIFt8IHBvcy5HbG9iZS5NYXRoLlZlYzMueDsgcG9zLnk7IHBvcy56IHxdXG4gIGluXG4gIEdsLmJpbmRfYnVmZmVyIGdsIEdsLmFycmF5X2J1ZmZlciAoU29tZSB0LmRvdF92Ym8pO1xuICBHbC5idWZmZXJfZGF0YSBnbCBHbC5hcnJheV9idWZmZXIgYnVmIEdsLmR5bmFtaWNfZHJhdztcbiAgR2wudXNlX3Byb2dyYW0gZ2wgdC5kb3RfcHJvZztcbiAgR2wudW5pZm9ybV9tYXRyaXg0ZnYgZ2wgdC5kb3RfdV9wcm9qIGZhbHNlIHByb2o7XG4gIEdsLnVuaWZvcm1fbWF0cml4NGZ2IGdsIHQuZG90X3VfdmlldyBmYWxzZSB2dztcbiAgbGV0IHIsIGcsIGIgPSBjb2xvciBpblxuICBHbC51bmlmb3JtM2YgZ2wgdC5kb3RfdV9jb2xvciByIGcgYjtcbiAgR2wudW5pZm9ybTFmIGdsIHQuZG90X3Vfc2l6ZSBzaXplO1xuICBHbC51bmlmb3JtMWYgZ2wgdC5kb3RfdV9hbHBoYSBhbHBoYTtcbiAgR2wuYmluZF92ZXJ0ZXhfYXJyYXkgZ2wgKFNvbWUgdC5kb3RfdmFvKTtcbiAgR2wuZHJhd19hcnJheXMgZ2wgR2wucG9pbnRzIDAgMTtcbiAgR2wuYmluZF92ZXJ0ZXhfYXJyYXkgZ2wgTm9uZVxuXG5sZXQgZHJhd190cmFpbHMgZ2wgdCB+cHJvaiB+dncgdHJhaWxzID1cbiAgTGlzdC5pdGVyXG4gICAgKGZ1biAodHIgOiB0cmFpbCkgLT5cbiAgICAgIGxldCByLCBnLCBiID0gdHIuY29sb3IgaW5cbiAgICAgIEdsLnVuaWZvcm0zZiBnbCB0LnRyYWlsX3VfY29sb3IgciBnIGI7XG4gICAgICBHbC5iaW5kX3ZlcnRleF9hcnJheSBnbCAoU29tZSB0ci52YW8pO1xuICAgICAgR2wuZHJhd19hcnJheXMgZ2wgR2wubGluZV9zdHJpcCAwIHRyLm51bV9wb2ludHM7XG4gICAgICBHbC5iaW5kX3ZlcnRleF9hcnJheSBnbCBOb25lKVxuICAgIHRyYWlsc1xuXG5sZXQgZHJhdyBnbCB0IH5wcm9qZWN0aW9uIH52aWV3IH5kb3RzID1cbiAgbGV0IHByb2ogPSBUYXJyYXkub2ZfZmxvYXRfYXJyYXkgVGFycmF5LkZsb2F0MzIgcHJvamVjdGlvbiBpblxuICBsZXQgdncgPSBUYXJyYXkub2ZfZmxvYXRfYXJyYXkgVGFycmF5LkZsb2F0MzIgdmlldyBpblxuICBHbC51c2VfcHJvZ3JhbSBnbCB0LnRyYWlsX3Byb2c7XG4gIEdsLnVuaWZvcm1fbWF0cml4NGZ2IGdsIHQudHJhaWxfdV9wcm9qIGZhbHNlIHByb2o7XG4gIEdsLnVuaWZvcm1fbWF0cml4NGZ2IGdsIHQudHJhaWxfdV92aWV3IGZhbHNlIHZ3O1xuICAoKiBHaG9zdCBvcmJpdHMgZmlyc3QgKGJlaGluZCB0cmFpbHMpICopXG4gIGRyYXdfdHJhaWxzIGdsIHQgfnByb2ogfnZ3IHQuZ2hvc3RzO1xuICAoKiBBY3RpdmUgdHJhaWxzICopXG4gIGRyYXdfdHJhaWxzIGdsIHQgfnByb2ogfnZ3IHQudHJhaWxzO1xuICAoKiBTYXRlbGxpdGUgZG90cyAqKVxuICBMaXN0Lml0ZXJcbiAgICAoZnVuIChkIDogZG90KSAtPlxuICAgICAgZHJhd19kb3QgZ2wgdCB+cHJvaiB+dncgZC5wb3MgfmNvbG9yOmQuY29sb3IgfnNpemU6OC4wIH5hbHBoYToxLjApXG4gICAgZG90c1xuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NoZWNrX2JvdW5kIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImNhbWxfY2FsbDMiLCJhMiIsImNhbWxfY2FsbDQiLCJhMyIsImNhbWxfY2FsbDUiLCJhNCIsImNhbWxfY2FsbDciLCJhNSIsImE2IiwiZ2xvYmFsX2RhdGEiLCJCcnIiLCJCcnJfY2FudmFzIiwiU3RkbGliX0xpc3QiLCJTdGRsaWJfT3B0aW9uIiwiU3RkbGliX0FycmF5IiwiU3RkbGliIiwiR2xvYmVfd2ViZ2xfU2hhZGVyIiwidiIsImdsIiwidHJhaWxfcHJvZyIsImRvdF9wcm9nIiwiZG90X3ZhbyIsImRvdF92Ym8iLCJ1IiwibmFtZSIsInByb2ciLCJjc3RfdV9jb2xvciIsImNzdF91X3ZpZXciLCJjc3RfdV9wcm9qZWN0aW9uIiwiYWRkX3RyYWlsIiwidCIsInBvc2l0aW9ucyIsImhlYWRfaWR4IiwiY29sb3IiLCJ2YWxpZCIsInRvdGFsIiwibiIsImRhdGEiLCJpIiwib2ZmIiwiYnVmIiwidmFvIiwidmJvIiwiYWRkX2xpbmUiLCJhY2MiLCJwIiwiYWRkX2dob3N0IiwibWF0Y2giLCJyZXN0IiwibmV3ZXN0IiwiY2xlYXJfdHJhaWxzIiwiY2xlYXJfZ2hvc3RzIiwiY2xlYXJfbGluZXMiLCJkcmF3X3RyYWlscyIsInByb2oiLCJ2dyIsInRyYWlscyIsInRyIiwiYiIsImciLCJyIiwiZHJhdyIsInByb2plY3Rpb24iLCJ2aWV3IiwiZG90cyIsImQiLCJwb3MiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFKLEdBQUFDLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBTixHQUFBQyxJQUFBRSxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQVIsR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFWLEdBQUFDLElBQUFFLElBQUFFLElBQUFFLElBQUFFLElBQUFFLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxNQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxnQkFB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SUFDQTtBQUFBLElBQ0E7QUFBQSxJQUVBO0FBQUEsSUFFQTtBQUFBLElBQW1DO0FBQUE7QUFBQSxzQkFBQVU7QUFBQUE7QUFBQUEsZUFBQWhDLFFBSS9CO0FBQUEsZUFBQWlDLE1BQUE7QUFBQSxlQUFBMUIsTUF2Q0Y7QUFBQSxjQUdGO0FBQUE7QUFBQSxjQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGNBQ0E7QUFBQSxjQUNBO0FBQUEsY0FDQTtBQUFBLGtCQUFBa0IsSUFBNkMsVUFBQUMsSUFBQSxVQUFBQyxJQUFBO0FBQUEsY0FFN0M7QUFBQSxjQUNBO0FBQUEsY0FDQTtBQUFBLGNBQ0E7QUFBQSxjQUNBO0FBQUEsY0FBK0IsMkNBMEJzQztBQUFBO0FBQUEsa0JBQy9EO0FBQUE7QUFBQSxHRHpPUiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQxMDUxLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6Ii5nbG9iZV93ZWJnbC5vYmpzL2pzb28vZGVmYXVsdC9nbG9iZV93ZWJnbC5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL3dvcmtzcGFjZV9yb290L29jYW1sLWdsb2JlL3dlYmdsL3NjZW5lLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIENvcHlyaWdodCAoYykgMjAyNSBUaG9tYXMgR2F6YWduYWlyZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuKCoqIEdsb2JlIHNjZW5lOiBjYW52YXMgc2V0dXAsIHJlbmRlciBsb29wLCBhbmQgbGF5ZXIgY29tcG9zaXRpbmcuXG5cbiAgICBCdW5kbGVzIHRoZSBXZWJHTCBib2lsZXJwbGF0ZSB0aGF0IGV2ZXJ5IGdsb2JlIGFwcCBuZWVkczogY2FudmFzL0dMIGluaXQsXG4gICAgcmVzaXplIGhhbmRsaW5nLCBjYW1lcmEsIGFuZCB0aGUgY29ycmVjdCBkcmF3IG9yZGVyIGZvciBhbGwgbGF5ZXJzIChzdGFycyDihpJcbiAgICBlYXJ0aCDihpIgZ3JpZCDihpIgb3JiaXRzIOKGkiBjb3ZlcmFnZSkuICopXG5cbm9wZW4gQnJyXG5vcGVuIEJycl9jYW52YXNcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG4oKiAgQ2FudmFzICsgR0wgc2V0dXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxudHlwZSB0ID0ge1xuICBnbCA6IEdsLnQ7XG4gIGNhbnZhc19lbCA6IEVsLnQ7XG4gIGNhbWVyYSA6IENhbWVyYS50O1xuICBlYXJ0aCA6IEVhcnRoLnQ7XG4gIHN0YXJzIDogU3RhcnMudDtcbiAgbXV0YWJsZSBncmlkIDogR3JpZC50IG9wdGlvbjtcbiAgb3JiaXQgOiBPcmJpdC50O1xuICBjb3ZlcmFnZSA6IENvdmVyYWdlLnQ7XG59XG5cbmxldCB2ID8obnVtX3BvaW50cyA9IDMwMDAwKSA/KGdyaWRfc3BhY2luZyA9IDMwLikgY2FudmFzX2VsID1cbiAgbGV0IGNhbnZhcyA9IENhbnZhcy5vZl9lbCBjYW52YXNfZWwgaW5cbiAgbGV0IGdsID1cbiAgICBtYXRjaCBHbC5nZXRfY29udGV4dCBjYW52YXMgd2l0aFxuICAgIHwgU29tZSBnbCAtPiBnbFxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIldlYkdMMiBub3Qgc3VwcG9ydGVkXCJcbiAgaW5cbiAgbGV0IHJlc2l6ZSAoKSA9XG4gICAgbGV0IHcgPSBKdi5nZXQgSnYuZ2xvYmFsIFwiaW5uZXJXaWR0aFwiIHw+IEp2LnRvX2ludCBpblxuICAgIGxldCBoID0gSnYuZ2V0IEp2Lmdsb2JhbCBcImlubmVySGVpZ2h0XCIgfD4gSnYudG9faW50IGluXG4gICAgRWwuc2V0X2F0IChKc3RyLm9mX3N0cmluZyBcIndpZHRoXCIpIChTb21lIChKc3RyLm9mX2ludCB3KSkgY2FudmFzX2VsO1xuICAgIEVsLnNldF9hdCAoSnN0ci5vZl9zdHJpbmcgXCJoZWlnaHRcIikgKFNvbWUgKEpzdHIub2ZfaW50IGgpKSBjYW52YXNfZWw7XG4gICAgR2wudmlld3BvcnQgZ2wgMCAwIHcgaFxuICBpblxuICByZXNpemUgKCk7XG4gIGlnbm9yZSAoRXYubGlzdGVuIEV2LnJlc2l6ZSAoZnVuIF9ldiAtPiByZXNpemUgKCkpIEcudGFyZ2V0KTtcbiAgbGV0IGNhbWVyYSA9IENhbWVyYS52ICgpIGluXG4gIENhbWVyYS5hdHRhY2hfZXZlbnRzIGNhbWVyYSBjYW52YXNfZWw7XG4gIEdsLmVuYWJsZSBnbCBHbC5ibGVuZDtcbiAgR2wuYmxlbmRfZnVuYyBnbCBHbC5zcmNfYWxwaGEgR2wub25lX21pbnVzX3NyY19hbHBoYTtcbiAgR2wuZW5hYmxlIGdsIEdsLmRlcHRoX3Rlc3Q7XG4gIEdsLmNsZWFyX2NvbG9yIGdsIDAuMCAwLjAgMC4wMiAxLjA7XG4gIHtcbiAgICBnbDtcbiAgICBjYW52YXNfZWw7XG4gICAgY2FtZXJhO1xuICAgIGVhcnRoID0gRWFydGgudiB+bnVtX3BvaW50cyBnbDtcbiAgICBzdGFycyA9IFN0YXJzLnYgZ2w7XG4gICAgZ3JpZCA9IFNvbWUgKEdyaWQudiB+c3BhY2luZzpncmlkX3NwYWNpbmcgZ2wpO1xuICAgIG9yYml0ID0gT3JiaXQudiBnbDtcbiAgICBjb3ZlcmFnZSA9IENvdmVyYWdlLnYgZ2w7XG4gIH1cblxubGV0IGdsIHQgPSB0LmdsXG5sZXQgY2FtZXJhIHQgPSB0LmNhbWVyYVxubGV0IG9yYml0IHQgPSB0Lm9yYml0XG5sZXQgY292ZXJhZ2UgdCA9IHQuY292ZXJhZ2VcbmxldCBzZXRfZ3JpZF9zcGFjaW5nIHQgc3BhY2luZyA9IHQuZ3JpZCA8LSBTb21lIChHcmlkLnYgfnNwYWNpbmcgdC5nbClcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG4oKiAgUGVyLWZyYW1lIG1hdHJpY2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxudHlwZSBmcmFtZSA9IHtcbiAgcHJvamVjdGlvbiA6IGZsb2F0IGFycmF5O1xuICB2aWV3IDogZmxvYXQgYXJyYXk7XG4gIHdpZHRoIDogaW50O1xuICBoZWlnaHQgOiBpbnQ7XG59XG5cbmxldCBiZWdpbl9mcmFtZSB0ID8ocHJvamVjdGlvbl9vZmZzZXQgPSAwLikgZHQgPVxuICBDYW1lcmEudXBkYXRlIHQuY2FtZXJhIGR0O1xuICBsZXQgdyA9IEdsLmRyYXdpbmdfYnVmZmVyX3dpZHRoIHQuZ2wgaW5cbiAgbGV0IGggPSBHbC5kcmF3aW5nX2J1ZmZlcl9oZWlnaHQgdC5nbCBpblxuICBsZXQgYXNwZWN0ID0gRmxvYXQub2ZfaW50IHcgLy4gRmxvYXQubWF4IDEuIChGbG9hdC5vZl9pbnQgaCkgaW5cbiAgbGV0IHByb2ogPVxuICAgIEdsb2JlLk1hdGguTWF0NC5wZXJzcGVjdGl2ZSB+Zm92eTooRmxvYXQucGkgLy4gNC4pIH5hc3BlY3Qgfm5lYXI6MC4xXG4gICAgICB+ZmFyOjEwMC5cbiAgaW5cbiAgaWYgcHJvamVjdGlvbl9vZmZzZXQgPD4gMC4gdGhlbiBwcm9qLigxMikgPC0gcHJvamVjdGlvbl9vZmZzZXQ7XG4gIGxldCBwcm9qZWN0aW9uID0gR2xvYmUuTWF0aC5NYXQ0LnRvX2Zsb2F0X2FycmF5IHByb2ogaW5cbiAgbGV0IHZpZXcgPSBHbG9iZS5NYXRoLk1hdDQudG9fZmxvYXRfYXJyYXkgKENhbWVyYS52aWV3X21hdHJpeCB0LmNhbWVyYSkgaW5cbiAgR2wuY2xlYXIgdC5nbCAoR2wuY29sb3JfYnVmZmVyX2JpdCBsb3IgR2wuZGVwdGhfYnVmZmVyX2JpdCk7XG4gIHsgcHJvamVjdGlvbjsgdmlldzsgd2lkdGggPSB3OyBoZWlnaHQgPSBoIH1cblxubGV0IHByb2plY3Rpb24gZiA9IGYucHJvamVjdGlvblxubGV0IHZpZXcgZiA9IGYudmlld1xuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcbigqICBMYXllciBkcmF3aW5nIHdpdGggY29ycmVjdCBjb21wb3NpdGluZyBvcmRlciAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG50eXBlIGxheWVycyA9IHtcbiAgc2hvd19zdGFycyA6IGJvb2w7XG4gIHNob3dfZWFydGggOiBib29sO1xuICBzaG93X2dyaWQgOiBib29sO1xuICBzaG93X29yYml0cyA6IGJvb2w7XG4gIHNob3dfY292ZXJhZ2UgOiBib29sO1xuICBlYXJ0aF9kaW0gOiBmbG9hdDtcbiAgZ3JpZF9jb2xvciA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdDtcbiAgZ3JpZF9hbHBoYSA6IGZsb2F0O1xuICBjb3ZlcmFnZV9pbnRlbnNpdHkgOiBmbG9hdDtcbiAgb3JiaXRfZG90cyA6IE9yYml0LmRvdCBsaXN0O1xuICBjdXN0b20gOiAocHJvamVjdGlvbjpmbG9hdCBhcnJheSAtPiB2aWV3OmZsb2F0IGFycmF5IC0+IHVuaXQpIGxpc3Q7XG59XG5cbmxldCBkZWZhdWx0X2xheWVycyA9XG4gIHtcbiAgICBzaG93X3N0YXJzID0gdHJ1ZTtcbiAgICBzaG93X2VhcnRoID0gdHJ1ZTtcbiAgICBzaG93X2dyaWQgPSBmYWxzZTtcbiAgICBzaG93X29yYml0cyA9IGZhbHNlO1xuICAgIHNob3dfY292ZXJhZ2UgPSBmYWxzZTtcbiAgICBlYXJ0aF9kaW0gPSAxLjA7XG4gICAgZ3JpZF9jb2xvciA9ICgwLjE1LCAwLjM1LCAwLjUpO1xuICAgIGdyaWRfYWxwaGEgPSAwLjM7XG4gICAgY292ZXJhZ2VfaW50ZW5zaXR5ID0gMC40O1xuICAgIG9yYml0X2RvdHMgPSBbXTtcbiAgICBjdXN0b20gPSBbXTtcbiAgfVxuXG5sZXQgZHJhdyB0IGZyYW1lIGxheWVycyA9XG4gIGxldCBnbCA9IHQuZ2wgaW5cbiAgbGV0IHAgPSBmcmFtZS5wcm9qZWN0aW9uIGFuZCB2ID0gZnJhbWUudmlldyBpblxuICAoKiAxLiBTdGFycyDigJQgYmVoaW5kIGV2ZXJ5dGhpbmcsIG5vIGRlcHRoICopXG4gIGlmIGxheWVycy5zaG93X3N0YXJzIHRoZW4gYmVnaW5cbiAgICBHbC5kaXNhYmxlIGdsIEdsLmRlcHRoX3Rlc3Q7XG4gICAgU3RhcnMuZHJhdyBnbCB0LnN0YXJzIH5wcm9qZWN0aW9uOnAgfnZpZXc6djtcbiAgICBHbC5lbmFibGUgZ2wgR2wuZGVwdGhfdGVzdFxuICBlbmQ7XG4gICgqIDIuIEVhcnRoIGRvdHMgKilcbiAgaWYgbGF5ZXJzLnNob3dfZWFydGggdGhlblxuICAgIEVhcnRoLmRyYXcgZ2wgdC5lYXJ0aCB+cHJvamVjdGlvbjpwIH52aWV3OnYgfmRpbTpsYXllcnMuZWFydGhfZGltICgpO1xuICAoKiAzLiBHcmlkIG92ZXJsYXkgKilcbiAgKGlmIGxheWVycy5zaG93X2dyaWQgdGhlblxuICAgICBtYXRjaCB0LmdyaWQgd2l0aFxuICAgICB8IFNvbWUgZ3JpZCAtPlxuICAgICAgICAgR3JpZC5kcmF3IGdsIGdyaWQgfnByb2plY3Rpb246cCB+dmlldzp2IH5jb2xvcjpsYXllcnMuZ3JpZF9jb2xvclxuICAgICAgICAgICB+YWxwaGE6bGF5ZXJzLmdyaWRfYWxwaGEgKClcbiAgICAgfCBOb25lIC0+ICgpKTtcbiAgKCogNC4gT3JiaXQgdHJhaWxzICsgc2F0ZWxsaXRlIGRvdHMgKilcbiAgaWYgbGF5ZXJzLnNob3dfb3JiaXRzIHRoZW5cbiAgICBPcmJpdC5kcmF3IGdsIHQub3JiaXQgfnByb2plY3Rpb246cCB+dmlldzp2IH5kb3RzOmxheWVycy5vcmJpdF9kb3RzO1xuICAoKiA1LiBDdXN0b20gbGF5ZXJzICopXG4gIExpc3QuaXRlciAoZnVuIGYgLT4gZiB+cHJvamVjdGlvbjpwIH52aWV3OnYpIGxheWVycy5jdXN0b207XG4gICgqIDYuIENvdmVyYWdlIOKAlCBhZGRpdGl2ZSBibGVuZCBvbiB0b3AgKilcbiAgaWYgbGF5ZXJzLnNob3dfY292ZXJhZ2UgdGhlblxuICAgIENvdmVyYWdlLmRyYXcgZ2wgdC5jb3ZlcmFnZSB+cHJvamVjdGlvbjpwIH52aWV3OnZcbiAgICAgIH5pbnRlbnNpdHk6bGF5ZXJzLmNvdmVyYWdlX2ludGVuc2l0eSAoKVxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiY2FtbF9jYWxsNCIsImEzIiwiY2FtbF9jYWxsNSIsImE0IiwiZ2xvYmFsX2RhdGEiLCJCcnJfY2FudmFzIiwiR2xvYmVfd2ViZ2xfU3RhcnMiLCJHbG9iZV93ZWJnbF9FYXJ0aCIsIkdsb2JlX3dlYmdsX0dyaWQiLCJHbG9iZV93ZWJnbF9PcmJpdCIsIlN0ZGxpYl9MaXN0IiwiR2xvYmVfd2ViZ2xfQ292ZXJhZ2UiLCJHbG9iZV93ZWJnbF9DYW1lcmEiLCJTdGRsaWJfRmxvYXQiLCJHbG9iZV9NYXRoIiwiSnYiLCJKc3RyIiwiQnJyIiwiU3RkbGliIiwidiIsIm9wdCIsImNhbnZhc19lbCIsIm51bV9wb2ludHMiLCJncmlkX3NwYWNpbmciLCJjYW52YXMiLCJtYXRjaCIsImdsIiwicmVzaXplIiwicGFyYW0iLCJ3IiwiaCIsImV2IiwiY2FtZXJhIiwidCIsIm9yYml0IiwiY292ZXJhZ2UiLCJzZXRfZ3JpZF9zcGFjaW5nIiwic3BhY2luZyIsImJlZ2luX2ZyYW1lIiwiZHQiLCJwcm9qZWN0aW9uX29mZnNldCIsImFzcGVjdCIsInByb2oiLCJwcm9qZWN0aW9uIiwidmlldyIsImRyYXciLCJmcmFtZSIsImxheWVycyIsInAiLCJncmlkIl0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUosR0FBQUMsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFOLEdBQUFDLElBQUFFLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBUixHQUFBQyxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLG9CQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLG9CQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLHVCQUFBO0FBQUEsSUFBQUMscUJBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLEtBQUE7QUFBQSxJQUFBQyxPQUFBO0FBQUEsSUFBQUMsTUFBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxZQUFBQyxFQUFBLEdBQUFDLEtBQUFDO0FBQUFBO0FBQUFBLEtBQUFDLGFDNkJNO0FBQUEsS0FBQUMsZUFBQTtBQUFBLEtBQUFDLFNBQ1M7QUFBQSxLQUFBQyxRQUVMO0FBQUEsSUFBcUI7QUFBQSxTQUFBQyxLQUFBLFVBQUFBLE9BQ2Q7QUFBQTtBQUFBLFNBQUFBLE9BQ0g7QUFBQSxhQUFBQyxPQUFBQztBQUFBQTtBQUFBQSxNQUFBQyxJQUdGO0FBQUEsTUFBQUMsSUFDQTtBQUFBLFVBQ2lDO0FBQUEsS0FBekM7QUFBQSxhQUMwQztBQUFBLEtBQTFDO0FBQUEsS0FBb0UsdURBQzlDO0FBQUE7QUFBQSxJQUV4QjtBQUFBLElBQ087QUFBQSwyQ0FBQUMsSUFBaUMsZ0JBQVM7QUFBQSxRQUFBQyxTQUNwQztBQUFBLElBQ2I7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQTtBQUFBLFNBU2E7QUFBQSxTQURIO0FBQUEsU0FESTtBQUFBLFNBREo7QUFBQSxJQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxjQUFzQjtBQUFBLEdBSy9CO0FBQUEsWUFBQU4sR0FBQU8sR0FFUSxZQUFJO0FBQUEsWUFBQUQsT0FBQUMsR0FDQSxZQUFRO0FBQUEsWUFBQUMsTUFBQUQsR0FDVCxZQUFPO0FBQUEsWUFBQUUsU0FBQUYsR0FDSixZQUFVO0FBQUEsWUFBQUcsaUJBQUFILEdBQUFJO0FBQUFBLElBQ3FCO0FBQUEsSUFBc0I7QUFBQTtBQUFBLFlBQUFDLFlBQUFMLEdBQUFiLEtBQUFtQjtBQUFBQSxRQUFBQyxvQkFhdEQ7QUFBQSxJQUNkO0FBQUE7QUFBQSxLQUFBWCxJQUNRO0FBQUEsS0FBQUMsSUFDQTtBQUFBLEtBQUFXLFNBQ3VCO0FBQUEsS0FBQUM7QUFBQUEsT0FFN0I7QUFBQSxJQUdGO0FBQUEsS0FBZ0M7QUFBQTtBQUFBLEtBQUFDLGFBQ2Y7QUFBQSxTQUN5QjtBQUFBLEtBQUFDLE9BQS9CO0FBQUEsSUFDWDtBQUFBO0FBQUEsSUFBMkQ7QUFBQSxHQUNoQjtBQUFBLFlBQUFELFdBQUFqRCxHQUUxQixZQUFZO0FBQUEsWUFBQWtELEtBQUFsRCxHQUNsQixZQUFNO0FBQUEsWUFBQW1ELEtBQUFaLEdBQUFhLE9BQUFDO0FBQUFBLFFBQUFyQixLQW9DakIsTUFBQXNCLElBQ0EsVUFBQTdCLElBQUE7QUFBQSxJQUVBO0FBQUEsS0FDRTtBQUFBLEtBQ0E7QUFBQSxLQUNBO0FBQUE7QUFBQSxJQUdGO0FBQUEsS0FDRTtBQUFBLElBRUY7QUFBQSxTQUFBTSxRQUNHO0FBQUE7QUFBQSxVQUFBd0IsT0FBQTtBQUFBLE1BRUk7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUlQLGNBQ0U7QUFBQSxJQUVGO0FBQUEscUJBQUF2RCxHQUFvQiwwQkFBdUI7QUFBQSxZQUFlO0FBQUE7QUFBQSxjQUd4RDtBQUFBO0FBQUE7QUFBQSxlQUN5QztBQUFBO0FBQUEsR0Q3SjdDIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDEyMTksImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9zaWduYWwvU2lnbmFsLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwibW9kdWxlIExpc3RfZXh0ID0gc3RydWN0XG4gIGxldCBtZW0gPyhlcSA9IFN0ZGxpYi4oID0gKSkgeCBsID1cbiAgICBsZXQgcmVjIHNlYXJjaCBlcSB4IGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoIFtdIC0+IGZhbHNlIHwgeSA6OiBsJyAtPiBlcSB4IHkgfHwgc2VhcmNoIGVxIHggbCdcbiAgICBpblxuICAgIHNlYXJjaCBlcSB4IGxcblxuICBsZXQgcmVtb3ZlX29uZSB+ZXEgeCBsID1cbiAgICBsZXQgcmVjIHJlbW92ZV9vbmUgfmVxIHggYWNjIGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCB5IDo6IHRsIHdoZW4gZXEgeCB5IC0+ICh5LCBMaXN0LnJldl9hcHBlbmQgYWNjIHRsKVxuICAgICAgfCB5IDo6IHRsIC0+IHJlbW92ZV9vbmUgfmVxIHggKHkgOjogYWNjKSB0bFxuICAgIGluXG4gICAgaWYgbWVtIH5lcSB4IGwgdGhlbiByZW1vdmVfb25lIH5lcSB4IFtdIGxcbiAgICBlbHNlIGludmFsaWRfYXJnIFwiY291bGQgbm90IHJlbW92ZSwgZWxlbWVudCBpcyBub3QgYSBtZW1iZXJcIlxuZW5kXG5cbigqIHBoeXNpY2FsIGVxdWFsaXR5ICopXG5sZXQgZGVmYXVsdF9lcXVhbCA9IFN0ZGxpYi4oID09IClcblxuKCogU3Vic2NyaXB0aW9uIHJlZ2lzdHJ5IGZvciBzaWduYWxzLiAqKVxubW9kdWxlIFN1YnMgOiBzaWdcbiAgdHlwZSAnYSBzdWIgPSAnYSAtPiB1bml0XG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBlbXB0eSA6IHVuaXQgLT4gJ2EgdFxuXG4gICgqIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludCAqKVxuICB2YWwgYWRkIDogP2xhYmVsOnN0cmluZyAtPiAnYSBzdWIgLT4gJ2EgdCAtPiB1bml0XG4gIHZhbCBkaXNwYXRjaCA6ICdhIC0+ICdhIHQgLT4gdW5pdFxuICB2YWwgcmVtb3ZlIDogJ2Egc3ViIC0+ICdhIHQgLT4gdW5pdFxuICAoKiB2YWwgbmFtZXMgOiAnYSB0IC0+IHN0cmluZyBsaXN0ICopXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBzdWIgPSAnYSAtPiB1bml0XG4gIHR5cGUgJ2EgdCA9IChzdHJpbmcgKiAnYSBzdWIgcmVmKSBsaXN0IHJlZlxuXG4gIGxldCBlbXB0eSAoKSA9IHJlZiBbXVxuXG4gICgqIGxldCBsZW5ndGggc3VicyA9IExpc3QubGVuZ3RoICFzdWJzICopXG4gIGxldCBhZGQgPyhsYWJlbCA9IFwiXCIpIChrIDogJ2Egc3ViKSBzdWJzID1cbiAgICBzdWJzIDo9IExpc3QuYXBwZW5kICFzdWJzIFsgKGxhYmVsLCByZWYgaykgXVxuXG4gIGxldCBkaXNwYXRjaCB4IHN1YnMgPSBMaXN0Lml0ZXIgKGZ1biAoXywgaykgLT4gIWsgeCkgIXN1YnNcblxuICBsZXQgcmVtb3ZlIGsgc3VicyA9XG4gICAgbGV0IChfLCBrJyksIHN1YnMnID1cbiAgICAgIExpc3RfZXh0LnJlbW92ZV9vbmVcbiAgICAgICAgfmVxOihmdW4gKF8sIHMxKSAoXywgczIpIC0+ICFzMSA9PSAhczIpXG4gICAgICAgIChcIlwiLCByZWYgaylcbiAgICAgICAgIXN1YnNcbiAgICBpblxuICAgICgqIElmIHJlbW92ZSBpcyBjYWxsZWQgZHVyaW5nIGRpc3BhdGNoLCBkaXNwYXRjaCB3aWxsIGhhdmUgcmVmZXJyZWQgdG8gdGhlIG9yaWdpbmFsIGxpc3QuIFdlIHNldCB0aGVcbiAgICAgICByZW1vdmVkIGsgdG8gaWdub3JlIHRvIGF2b2lkIGNhbGxpbmcgaXQuICopXG4gICAgaycgOj0gaWdub3JlO1xuICAgIHN1YnMgOj0gc3VicydcblxuICAoKiBsZXQgbmFtZXMgc3VicyA9IExpc3QubWFwIGZzdCAhc3VicyAqKVxuZW5kXG5cbigqIE5vdGlmaWNhdGlvbiAqKVxuXG50eXBlIG5vdGlmaWNhdGlvbiA9IHsgYWRkIDogKHVuaXQgLT4gdW5pdCkgLT4gdW5pdDsgcnVuIDogdW5pdCAtPiB1bml0IH1cblxubW9kdWxlIE5vdGlmaWNhdGlvbiA9IHN0cnVjdFxuICBsZXQgbWFrZSAoKSA6IG5vdGlmaWNhdGlvbiA9XG4gICAgbGV0IGZzID0gcmVmIFtdIGluXG4gICAgbGV0IGFkZCBmID0gZnMgOj0gZiA6OiAhZnMgaW5cbiAgICBsZXQgcnVuICgpID0gTGlzdC5pdGVyIChmdW4gZiAtPiBmICgpKSAoTGlzdC5yZXYgIWZzKSBpblxuICAgIHsgYWRkOyBydW4gfVxuXG4gIGxldCBub3cgPVxuICAgIGxldCBhZGQgZiA9IGYgKCkgaW5cbiAgICB7IGFkZDsgcnVuID0gaWdub3JlIH1cblxuICBsZXQgbmV2ZXIgPSB7IGFkZCA9IGlnbm9yZTsgcnVuID0gaWdub3JlIH1cbmVuZFxuXG5sZXQgbmV2ZXIgPSBOb3RpZmljYXRpb24ubmV2ZXJcbmxldCBub3cgPSBOb3RpZmljYXRpb24ubm93XG5cbmxldCBzY29wZSBmID1cbiAgbGV0IG5vdGlmaWNhdGlvbiA9IE5vdGlmaWNhdGlvbi5tYWtlICgpIGluXG4gIGYgbm90aWZpY2F0aW9uO1xuICBub3RpZmljYXRpb24ucnVuICgpXG5cbigqIFNpZ25hbCAqKVxuXG50eXBlIHN1YiA9IHVuaXQgLT4gdW5pdFxuXG50eXBlICdhIHQgPSB7XG4gIG5hbWUgOiBzdHJpbmc7XG4gIG11dGFibGUgdmFsdWUgOiAnYTtcbiAgZW1pdCA6ID9ub3RpZnk6bm90aWZpY2F0aW9uIC0+ICdhIC0+IHVuaXQ7XG4gIHN1YiA6ID9sYWJlbDpzdHJpbmcgLT4gKCdhIC0+IHVuaXQpIC0+IHN1Yjtcbn1cblxubGV0IGdlbl9pZCA9XG4gIGxldCBpID0gcmVmICgtMSkgaW5cbiAgZnVuICgpIC0+XG4gICAgaW5jciBpO1xuICAgIHN0cmluZ19vZl9pbnQgIWlcblxubGV0IGJhc2UgPyhlcXVhbCA9IGRlZmF1bHRfZXF1YWwpIH5uYW1lIHZhbHVlID1cbiAgbGV0IG5hbWUgPSBuYW1lIF4gXCIjXCIgXiBnZW5faWQgKCkgaW5cbiAgbGV0IHN1YnMgPSBTdWJzLmVtcHR5ICgpIGluXG4gIGxldCBzdWIgP2xhYmVsIGsgPVxuICAgIFN1YnMuYWRkID9sYWJlbCBrIHN1YnM7XG4gICAgZnVuICgpIC0+IFN1YnMucmVtb3ZlIGsgc3Vic1xuICBpblxuICBsZXQgcmVjIHMgPSB7IG5hbWU7IHZhbHVlOyBlbWl0OyBzdWIgfVxuICBhbmQgZW1pdCA/KG5vdGlmeSA9IG5vdykgeCA9XG4gICAgaWYgbm90IChlcXVhbCBzLnZhbHVlIHgpIHRoZW4gKFxuICAgICAgcy52YWx1ZSA8LSB4O1xuICAgICAgbm90aWZ5LmFkZCAoZnVuICgpIC0+IFN1YnMuZGlzcGF0Y2ggeCBzdWJzKSlcbiAgaW5cbiAgc1xuXG5sZXQgbWFrZSA/ZXF1YWwgPyhsYWJlbCA9IFwibWFrZVwiKSB2YWx1ZSA9IGJhc2UgP2VxdWFsIH5uYW1lOmxhYmVsIHZhbHVlXG5sZXQgbGFiZWwgcyA9IHMubmFtZVxuXG5sZXQgbnVsbCA9XG4gIGxldCBzdWIgP2xhYmVsOl8gXyAoKSA9ICgpIGluXG4gIGxldCByZWMgcyA9IHsgbmFtZSA9IFwibnVsbFwiOyB2YWx1ZSA9ICgpOyBlbWl0OyBzdWIgfVxuICBhbmQgZW1pdCA/bm90aWZ5Ol8gX3ggPSAoKSBpblxuICBzXG5cbmxldCBnZXQgcyA9IHMudmFsdWVcbmxldCBlbWl0ID9ub3RpZnkgeCBzID0gcy5lbWl0ID9ub3RpZnkgeFxubGV0IHNldCB4IHMgPSBlbWl0IH5ub3RpZnk6bmV2ZXIgeCBzXG5sZXQgdXBkYXRlID9ub3RpZnkgZiBzID0gcy5lbWl0ID9ub3RpZnkgKGYgcy52YWx1ZSlcbmxldCB0cmlnZ2VyIHMgPSBzLmVtaXQgcy52YWx1ZVxuXG5sZXQgc3ViIGsgcyA9XG4gIGxldCBfIDogc3ViID0gcy5zdWIgayBpblxuICAoKVxuXG5sZXQgc3ViJyBrIHMgPSBzLnN1YiBrXG5cbmxldCBzdWIyIGsgczEgczIgPVxuICBsZXQgXyA6IHN1YiA9IHMxLnN1YiAoZnVuIHgxIC0+IGsgeDEgczIudmFsdWUpIGluXG4gIGxldCBfIDogc3ViID0gczIuc3ViIChmdW4geDIgLT4gayBzMS52YWx1ZSB4MikgaW5cbiAgKClcblxubGV0IHVzZSBrIHMgPVxuICBsZXQgXyA6IHN1YiA9IHMuc3ViIGsgaW5cbiAgayBzLnZhbHVlXG5cbmxldCB1c2UnID9sYWJlbCBrIHMgPVxuICBsZXQgdW5zdWIgOiBzdWIgPSBzLnN1YiA/bGFiZWwgayBpblxuICBrIHMudmFsdWU7XG4gIHVuc3ViXG5cbmxldCB1c2UyIGsgczEgczIgPVxuICBsZXQgXyA6IHN1YiA9IHMxLnN1YiAoZnVuIHgxIC0+IGsgeDEgczIudmFsdWUpIGluXG4gIGxldCBfIDogc3ViID0gczIuc3ViIChmdW4geDIgLT4gayBzMS52YWx1ZSB4MikgaW5cbiAgayBzMS52YWx1ZSBzMi52YWx1ZVxuXG5sZXQgdW5zdWIgc3ViID0gc3ViICgpXG5cbmxldCBtYXAgZiBzID1cbiAgbGV0IHMnID0gYmFzZSB+bmFtZTpcIm1hcFwiIChmIHMudmFsdWUpIGluXG4gIGxldCBfIDogc3ViID0gcy5zdWIgKGZ1biB4IC0+IHMnLmVtaXQgKGYgeCkpIGluXG4gIHMnXG5cbmxldCBjb25zdCB4IHMgPVxuICBsZXQgcycgPSBiYXNlIH5uYW1lOlwiY29uc3RcIiB4IGluXG4gIGxldCBfIDogc3ViID0gcy5zdWIgKGZ1biBfIC0+IHMnLmVtaXQgeCkgaW5cbiAgcydcblxubGV0IHRhcCBmIHMgPVxuICBsZXQgcycgPSBiYXNlIH5uYW1lOlwidGFwXCIgcy52YWx1ZSBpblxuICBsZXQgXyA6IHN1YiA9XG4gICAgcy5zdWIgKGZ1biB4IC0+XG4gICAgICAgIGYgeDtcbiAgICAgICAgcycuZW1pdCB4KVxuICBpblxuICBzJ1xuXG5sZXQgcGFpciBzMSBzMiA9XG4gIGxldCBzdWJzID0gU3Vicy5lbXB0eSAoKSBpblxuICBsZXQgcmVjIHMnID0geyBuYW1lID0gXCJwYWlyXCI7IHZhbHVlID0gKHMxLnZhbHVlLCBzMi52YWx1ZSk7IGVtaXQ7IHN1YiB9XG4gIGFuZCBlbWl0ID8obm90aWZ5ID0gTm90aWZpY2F0aW9uLm5vdykgeCA9XG4gICAgcycudmFsdWUgPC0geDtcbiAgICBub3RpZnkuYWRkIChmdW4gKCkgLT4gU3Vicy5kaXNwYXRjaCB4IHN1YnMpXG4gIGFuZCBzdWIgP2xhYmVsIGsgPVxuICAgIFN1YnMuYWRkID9sYWJlbCBrIHN1YnM7XG4gICAgZnVuICgpIC0+IFN1YnMucmVtb3ZlIGsgc3Vic1xuICBpblxuICBsZXQgXyA6IHN1YiA9IHMxLnN1YiAoZnVuIHgxIC0+IGVtaXQgKHgxLCBzMi52YWx1ZSkpIGluXG4gIGxldCBfIDogc3ViID0gczIuc3ViIChmdW4geDIgLT4gZW1pdCAoczEudmFsdWUsIHgyKSkgaW5cbiAgcydcblxubGV0IHRyaXBsZSBzMSBzMiBzMyA9XG4gIGxldCBzdWJzID0gU3Vicy5lbXB0eSAoKSBpblxuICBsZXQgcmVjIHMnID1cbiAgICB7IG5hbWUgPSBcInRyaXBsZVwiOyB2YWx1ZSA9IChzMS52YWx1ZSwgczIudmFsdWUsIHMzLnZhbHVlKTsgZW1pdDsgc3ViIH1cbiAgYW5kIGVtaXQgPyhub3RpZnkgPSBOb3RpZmljYXRpb24ubm93KSB4ID1cbiAgICBzJy52YWx1ZSA8LSB4O1xuICAgIG5vdGlmeS5hZGQgKGZ1biAoKSAtPiBTdWJzLmRpc3BhdGNoIHggc3VicylcbiAgYW5kIHN1YiA/bGFiZWwgayA9XG4gICAgU3Vicy5hZGQgP2xhYmVsIGsgc3VicztcbiAgICBmdW4gKCkgLT4gU3Vicy5yZW1vdmUgayBzdWJzXG4gIGluXG4gIGxldCBfIDogc3ViID0gczEuc3ViIChmdW4geDEgLT4gZW1pdCAoeDEsIHMyLnZhbHVlLCBzMy52YWx1ZSkpIGluXG4gIGxldCBfIDogc3ViID0gczIuc3ViIChmdW4geDIgLT4gZW1pdCAoczEudmFsdWUsIHgyLCBzMy52YWx1ZSkpIGluXG4gIGxldCBfIDogc3ViID0gczMuc3ViIChmdW4geDMgLT4gZW1pdCAoczEudmFsdWUsIHMyLnZhbHVlLCB4MykpIGluXG4gIHMnXG5cbmxldCB0NSBzMSBzMiBzMyBzNCBzNSA9XG4gIGxldCBzdWJzID0gU3Vicy5lbXB0eSAoKSBpblxuICBsZXQgcmVjIHMnID1cbiAgICB7XG4gICAgICBuYW1lID0gXCJ0NVwiO1xuICAgICAgdmFsdWUgPSAoczEudmFsdWUsIHMyLnZhbHVlLCBzMy52YWx1ZSwgczQudmFsdWUsIHM1LnZhbHVlKTtcbiAgICAgIGVtaXQ7XG4gICAgICBzdWI7XG4gICAgfVxuICBhbmQgZW1pdCA/KG5vdGlmeSA9IE5vdGlmaWNhdGlvbi5ub3cpIHggPVxuICAgIHMnLnZhbHVlIDwtIHg7XG4gICAgbm90aWZ5LmFkZCAoZnVuICgpIC0+IFN1YnMuZGlzcGF0Y2ggeCBzdWJzKVxuICBhbmQgc3ViID9sYWJlbCBrID1cbiAgICBTdWJzLmFkZCA/bGFiZWwgayBzdWJzO1xuICAgIGZ1biAoKSAtPiBTdWJzLnJlbW92ZSBrIHN1YnNcbiAgaW5cbiAgbGV0IF8gOiBzdWIgPVxuICAgIHMxLnN1YiAoZnVuIHgxIC0+IGVtaXQgKHgxLCBzMi52YWx1ZSwgczMudmFsdWUsIHM0LnZhbHVlLCBzNS52YWx1ZSkpXG4gIGluXG4gIGxldCBfIDogc3ViID1cbiAgICBzMi5zdWIgKGZ1biB4MiAtPiBlbWl0IChzMS52YWx1ZSwgeDIsIHMzLnZhbHVlLCBzNC52YWx1ZSwgczUudmFsdWUpKVxuICBpblxuICBsZXQgXyA6IHN1YiA9XG4gICAgczMuc3ViIChmdW4geDMgLT4gZW1pdCAoczEudmFsdWUsIHMyLnZhbHVlLCB4MywgczQudmFsdWUsIHM1LnZhbHVlKSlcbiAgaW5cbiAgbGV0IF8gOiBzdWIgPVxuICAgIHM0LnN1YiAoZnVuIHg0IC0+IGVtaXQgKHMxLnZhbHVlLCBzMi52YWx1ZSwgczMudmFsdWUsIHg0LCBzNS52YWx1ZSkpXG4gIGluXG4gIGxldCBfIDogc3ViID1cbiAgICBzNS5zdWIgKGZ1biB4NSAtPiBlbWl0IChzMS52YWx1ZSwgczIudmFsdWUsIHMzLnZhbHVlLCBzNC52YWx1ZSwgeDUpKVxuICBpblxuICBzJ1xuXG5sZXQgdDYgczEgczIgczMgczQgczUgczYgPVxuICBsZXQgc3VicyA9IFN1YnMuZW1wdHkgKCkgaW5cbiAgbGV0IHJlYyBzJyA9XG4gICAge1xuICAgICAgbmFtZSA9IFwidDZcIjtcbiAgICAgIHZhbHVlID0gKHMxLnZhbHVlLCBzMi52YWx1ZSwgczMudmFsdWUsIHM0LnZhbHVlLCBzNS52YWx1ZSwgczYudmFsdWUpO1xuICAgICAgZW1pdDtcbiAgICAgIHN1YjtcbiAgICB9XG4gIGFuZCBlbWl0ID8obm90aWZ5ID0gTm90aWZpY2F0aW9uLm5vdykgeCA9XG4gICAgcycudmFsdWUgPC0geDtcbiAgICBub3RpZnkuYWRkIChmdW4gKCkgLT4gU3Vicy5kaXNwYXRjaCB4IHN1YnMpXG4gIGFuZCBzdWIgP2xhYmVsIGsgPVxuICAgIFN1YnMuYWRkID9sYWJlbCBrIHN1YnM7XG4gICAgZnVuICgpIC0+IFN1YnMucmVtb3ZlIGsgc3Vic1xuICBpblxuICBsZXQgXyA6IHN1YiA9XG4gICAgczEuc3ViIChmdW4geDEgLT5cbiAgICAgICAgZW1pdCAoeDEsIHMyLnZhbHVlLCBzMy52YWx1ZSwgczQudmFsdWUsIHM1LnZhbHVlLCBzNi52YWx1ZSkpXG4gIGluXG4gIGxldCBfIDogc3ViID1cbiAgICBzMi5zdWIgKGZ1biB4MiAtPlxuICAgICAgICBlbWl0IChzMS52YWx1ZSwgeDIsIHMzLnZhbHVlLCBzNC52YWx1ZSwgczUudmFsdWUsIHM2LnZhbHVlKSlcbiAgaW5cbiAgbGV0IF8gOiBzdWIgPVxuICAgIHMzLnN1YiAoZnVuIHgzIC0+XG4gICAgICAgIGVtaXQgKHMxLnZhbHVlLCBzMi52YWx1ZSwgeDMsIHM0LnZhbHVlLCBzNS52YWx1ZSwgczYudmFsdWUpKVxuICBpblxuICBsZXQgXyA6IHN1YiA9XG4gICAgczQuc3ViIChmdW4geDQgLT5cbiAgICAgICAgZW1pdCAoczEudmFsdWUsIHMyLnZhbHVlLCBzMy52YWx1ZSwgeDQsIHM1LnZhbHVlLCBzNi52YWx1ZSkpXG4gIGluXG4gIGxldCBfIDogc3ViID1cbiAgICBzNS5zdWIgKGZ1biB4NSAtPlxuICAgICAgICBlbWl0IChzMS52YWx1ZSwgczIudmFsdWUsIHMzLnZhbHVlLCBzNC52YWx1ZSwgeDUsIHM2LnZhbHVlKSlcbiAgaW5cbiAgbGV0IF8gOiBzdWIgPVxuICAgIHM2LnN1YiAoZnVuIHg2IC0+XG4gICAgICAgIGVtaXQgKHMxLnZhbHVlLCBzMi52YWx1ZSwgczMudmFsdWUsIHM0LnZhbHVlLCBzNS52YWx1ZSwgeDYpKVxuICBpblxuICBzJ1xuXG5sZXQgZmlsdGVyIHByZWQgfnNlZWQgcyA9XG4gIGxldCBzdWJzID0gU3Vicy5lbXB0eSAoKSBpblxuICBsZXQgc3ViID9sYWJlbCBrID1cbiAgICBTdWJzLmFkZCA/bGFiZWwgayBzdWJzO1xuICAgIGZ1biAoKSAtPiBTdWJzLnJlbW92ZSBrIHN1YnNcbiAgaW5cbiAgbGV0IHJlYyBzJyA9XG4gICAge1xuICAgICAgbmFtZSA9IFwiZmlsdGVyXCI7XG4gICAgICB2YWx1ZSA9IChpZiBwcmVkIHMudmFsdWUgdGhlbiBzLnZhbHVlIGVsc2Ugc2VlZCk7XG4gICAgICBlbWl0O1xuICAgICAgc3ViO1xuICAgIH1cbiAgYW5kIGVtaXQgPyhub3RpZnkgPSBOb3RpZmljYXRpb24ubm93KSB4ID1cbiAgICBpZiBwcmVkIHggdGhlbiAoXG4gICAgICBzJy52YWx1ZSA8LSB4O1xuICAgICAgbm90aWZ5LmFkZCAoZnVuICgpIC0+IFN1YnMuZGlzcGF0Y2ggeCBzdWJzKSlcbiAgaW5cbiAgbGV0IF8gOiBzdWIgPSBzLnN1YiBlbWl0IGluXG4gIHMnXG5cbmxldCBmaWx0ZXJfbWFwIGYgfnNlZWQgcyA9XG4gIGxldCBzdWJzID0gU3Vicy5lbXB0eSAoKSBpblxuICBsZXQgc3ViID9sYWJlbCBrID1cbiAgICBTdWJzLmFkZCA/bGFiZWwgayBzdWJzO1xuICAgIGZ1biAoKSAtPiBTdWJzLnJlbW92ZSBrIHN1YnNcbiAgaW5cbiAgbGV0IHJlYyBzJyA9XG4gICAge1xuICAgICAgbmFtZSA9IFwiZmlsdGVyX21hcFwiO1xuICAgICAgdmFsdWUgPSAobWF0Y2ggZiBzLnZhbHVlIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IHNlZWQpO1xuICAgICAgZW1pdDtcbiAgICAgIHN1YjtcbiAgICB9XG4gIGFuZCBlbWl0ID8obm90aWZ5ID0gTm90aWZpY2F0aW9uLm5vdykgeCA9XG4gICAgcycudmFsdWUgPC0geDtcbiAgICBub3RpZnkuYWRkIChmdW4gKCkgLT4gU3Vicy5kaXNwYXRjaCB4IHN1YnMpXG4gIGluXG4gIGxldCBfIDogc3ViID1cbiAgICBzLnN1YiAoZnVuIHggLT4gbWF0Y2ggZiB4IHdpdGggU29tZSB4JyAtPiBlbWl0IHgnIHwgTm9uZSAtPiAoKSlcbiAgaW5cbiAgcydcblxubGV0IHJlZHVjZSBmIGluaXQgcyA9XG4gIGxldCBzdWJzID0gU3Vicy5lbXB0eSAoKSBpblxuICBsZXQgc3ViID9sYWJlbCBrID1cbiAgICBTdWJzLmFkZCA/bGFiZWwgayBzdWJzO1xuICAgIGZ1biAoKSAtPiBTdWJzLnJlbW92ZSBrIHN1YnNcbiAgaW5cbiAgbGV0IHJlYyBzJyA9IHsgbmFtZSA9IFwicmVkdWNlXCI7IHZhbHVlID0gZiBpbml0IHMudmFsdWU7IGVtaXQ7IHN1YiB9XG4gIGFuZCBlbWl0ID8obm90aWZ5ID0gTm90aWZpY2F0aW9uLm5vdykgeCA9XG4gICAgcycudmFsdWUgPC0geDtcbiAgICBub3RpZnkuYWRkIChmdW4gKCkgLT4gU3Vicy5kaXNwYXRjaCB4IHN1YnMpXG4gIGluXG4gIGxldCBfIDogc3ViID0gcy5zdWIgKGZ1biB2YWx1ZSAtPiBzJy5lbWl0IChmIHMnLnZhbHVlIHZhbHVlKSkgaW5cbiAgcydcblxubGV0IHJlZHVjZXIgZiBpbml0ID1cbiAgbGV0IGV2ZW50cyA9IGJhc2Ugfm5hbWU6XCJyZWR1Y2VyXCIgTm9uZSBpblxuICBsZXQgc3RhdGVfc2lnbmFsID1cbiAgICByZWR1Y2VcbiAgICAgIChmdW4gc3RhdGUgZXZlbnRfb3B0IC0+XG4gICAgICAgIG1hdGNoIGV2ZW50X29wdCB3aXRoIFNvbWUgZXZlbnQgLT4gZiBzdGF0ZSBldmVudCB8IE5vbmUgLT4gc3RhdGUpXG4gICAgICBpbml0IGV2ZW50c1xuICBpblxuICBsZXQgZGlzcGF0Y2ggZXZlbnQgPSBlbWl0IChTb21lIGV2ZW50KSBldmVudHMgaW5cbiAgKHN0YXRlX3NpZ25hbCwgZGlzcGF0Y2gpXG5cbmxldCBzZWxlY3QgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGludmFsaWRfYXJnIFwiU2lnbmFsLnNlbGVjdDogZW1wdHkgc2lnbmFsIGxpc3RcIlxuICB8IHMxIDo6IF8gLT5cbiAgICBsZXQgc3VicyA9IFN1YnMuZW1wdHkgKCkgaW5cbiAgICBsZXQgc3ViID9sYWJlbCBrID1cbiAgICAgIFN1YnMuYWRkID9sYWJlbCBrIHN1YnM7XG4gICAgICBmdW4gKCkgLT4gU3Vicy5yZW1vdmUgayBzdWJzXG4gICAgaW5cbiAgICBsZXQgcmVjIHMnID0geyBuYW1lID0gXCJzZWxlY3RcIjsgdmFsdWUgPSBzMS52YWx1ZTsgZW1pdDsgc3ViIH1cbiAgICBhbmQgZW1pdCA/KG5vdGlmeSA9IE5vdGlmaWNhdGlvbi5ub3cpIHggPVxuICAgICAgcycudmFsdWUgPC0geDtcbiAgICAgIG5vdGlmeS5hZGQgKGZ1biAoKSAtPiBTdWJzLmRpc3BhdGNoIHggc3VicylcbiAgICBpblxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biBzIC0+XG4gICAgICAgIGxldCBfIDogc3ViID0gcy5zdWIgZW1pdCBpblxuICAgICAgICAoKSlcbiAgICAgIGw7XG4gICAgcydcblxubGV0IHVuaXEgPyhlcXVhbCA9ICggPT0gKSkgcyA9XG4gIGxldCBzdWJzID0gU3Vicy5lbXB0eSAoKSBpblxuICBsZXQgcmVjIHMnID0geyBuYW1lID0gXCJ1bmlxXCI7IHZhbHVlID0gcy52YWx1ZTsgZW1pdDsgc3ViIH1cbiAgYW5kIGVtaXQgPyhub3RpZnkgPSBOb3RpZmljYXRpb24ubm93KSB4ID1cbiAgICBpZiBub3QgKGVxdWFsIHggcycudmFsdWUpIHRoZW4gKFxuICAgICAgcycudmFsdWUgPC0geDtcbiAgICAgIG5vdGlmeS5hZGQgKGZ1biAoKSAtPiBTdWJzLmRpc3BhdGNoIHggc3VicykpXG4gIGFuZCBzdWIgP2xhYmVsIGsgPVxuICAgIFN1YnMuYWRkID9sYWJlbCBrIHN1YnM7XG4gICAgZnVuICgpIC0+IFN1YnMucmVtb3ZlIGsgc3Vic1xuICBpblxuICBsZXQgXyA6IHN1YiA9IHMuc3ViIGVtaXQgaW5cbiAgcydcblxubGV0IG1hcDIgZiBzMSBzMiA9XG4gIGxldCBzdWJzID0gU3Vicy5lbXB0eSAoKSBpblxuICBsZXQgcmVjIHMnID0geyBuYW1lID0gXCJtYXAyXCI7IHZhbHVlID0gZiBzMS52YWx1ZSBzMi52YWx1ZTsgZW1pdDsgc3ViIH1cbiAgYW5kIGVtaXQgPyhub3RpZnkgPSBOb3RpZmljYXRpb24ubm93KSB4ID1cbiAgICBzJy52YWx1ZSA8LSB4O1xuICAgIG5vdGlmeS5hZGQgKGZ1biAoKSAtPiBTdWJzLmRpc3BhdGNoIHggc3VicylcbiAgYW5kIHN1YiA/bGFiZWwgayA9XG4gICAgU3Vicy5hZGQgP2xhYmVsIGsgc3VicztcbiAgICBmdW4gKCkgLT4gU3Vicy5yZW1vdmUgayBzdWJzXG4gIGluXG4gIGxldCBfIDogc3ViID0gczEuc3ViIChmdW4geDEgLT4gZW1pdCAoZiB4MSBzMi52YWx1ZSkpIGluXG4gIGxldCBfIDogc3ViID0gczIuc3ViIChmdW4geDIgLT4gZW1pdCAoZiBzMS52YWx1ZSB4MikpIGluXG4gIHMnXG5cbmxldCBtYXAzIGYgczEgczIgczMgPVxuICBsZXQgc3VicyA9IFN1YnMuZW1wdHkgKCkgaW5cbiAgbGV0IHJlYyBzJyA9XG4gICAgeyBuYW1lID0gXCJtYXAzXCI7IHZhbHVlID0gZiBzMS52YWx1ZSBzMi52YWx1ZSBzMy52YWx1ZTsgZW1pdDsgc3ViIH1cbiAgYW5kIGVtaXQgPyhub3RpZnkgPSBOb3RpZmljYXRpb24ubm93KSB4ID1cbiAgICBzJy52YWx1ZSA8LSB4O1xuICAgIG5vdGlmeS5hZGQgKGZ1biAoKSAtPiBTdWJzLmRpc3BhdGNoIHggc3VicylcbiAgYW5kIHN1YiA/bGFiZWwgayA9XG4gICAgU3Vicy5hZGQgP2xhYmVsIGsgc3VicztcbiAgICBmdW4gKCkgLT4gU3Vicy5yZW1vdmUgayBzdWJzXG4gIGluXG4gIGxldCBfIDogc3ViID0gczEuc3ViIChmdW4geDEgLT4gZW1pdCAoZiB4MSBzMi52YWx1ZSBzMy52YWx1ZSkpIGluXG4gIGxldCBfIDogc3ViID0gczIuc3ViIChmdW4geDIgLT4gZW1pdCAoZiBzMS52YWx1ZSB4MiBzMy52YWx1ZSkpIGluXG4gIGxldCBfIDogc3ViID0gczMuc3ViIChmdW4geDMgLT4gZW1pdCAoZiBzMS52YWx1ZSBzMi52YWx1ZSB4MykpIGluXG4gIHMnXG5cbmxldCBzYW1wbGUgP2VxdWFsIH5vbjpzMSBzMiA9XG4gIGxldCBzJyA9IGJhc2UgP2VxdWFsIH5uYW1lOlwic2FtcGxlXCIgczIudmFsdWUgaW5cbiAgbGV0IF8gOiBzdWIgPSBzMS5zdWIgKGZ1biBfIC0+IHMnLmVtaXQgczIudmFsdWUpIGluXG4gIHMnXG5cbmxldCBhcHBseSBmX3MgeF9zID1cbiAgbGV0IHN1YnMgPSBTdWJzLmVtcHR5ICgpIGluXG4gIGxldCByZWMgcycgPSB7IG5hbWUgPSBcImFwcGx5XCI7IHZhbHVlID0gZl9zLnZhbHVlIHhfcy52YWx1ZTsgZW1pdDsgc3ViIH1cbiAgYW5kIGVtaXQgPyhub3RpZnkgPSBOb3RpZmljYXRpb24ubm93KSB4ID1cbiAgICBzJy52YWx1ZSA8LSB4O1xuICAgIG5vdGlmeS5hZGQgKGZ1biAoKSAtPiBTdWJzLmRpc3BhdGNoIHggc3VicylcbiAgYW5kIHN1YiA/bGFiZWwgayA9XG4gICAgU3Vicy5hZGQgP2xhYmVsIGsgc3VicztcbiAgICBmdW4gKCkgLT4gU3Vicy5yZW1vdmUgayBzdWJzXG4gIGluXG4gIGxldCBfIDogc3ViID0gZl9zLnN1YiAoZnVuIGYgLT4gZW1pdCAoZiB4X3MudmFsdWUpKSBpblxuICBsZXQgXyA6IHN1YiA9IHhfcy5zdWIgKGZ1biB4IC0+IGVtaXQgKGZfcy52YWx1ZSB4KSkgaW5cbiAgcydcblxuKCogbGV0IGZvcndhcmQgczEgczIgPVxuICAgc3ViIChmdW4geCAtPiBlbWl0IHggczIpICopXG5cbm1vZHVsZSBTeW50YXggPSBzdHJ1Y3RcbiAgbGV0ICggbGV0KyApIHMgZiA9IG1hcCBmIHNcbiAgbGV0ICggYW5kKyApID0gcGFpclxuICBsZXQgKCA8fiApID0gbWFwXG4gIGxldCAoIH5+ICkgPSBhcHBseVxuZW5kXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfdXBkYXRlX2R1bW15IiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImNhbWxfY2FsbDMiLCJhMiIsImdsb2JhbF9kYXRhIiwiU3RkbGliX0xpc3QiLCJTdGRsaWIiLCJBc3NlcnRfZmFpbHVyZSIsImR1bW15IiwiZGVmYXVsdF9lcXVhbCIsImVtcHR5IiwicGFyYW0iLCJjc3QiLCJhZGQiLCJvcHQiLCJrIiwic3VicyIsImxhYmVsIiwiZGlzcGF0Y2giLCJ4IiwicmVtb3ZlIiwibCIsImVxIiwiczIiLCJzMSIsInkiLCJhY2MiLCJ0bCIsIm5vdyIsIm5ldmVyIiwic2NvcGUiLCJmcyIsInJ1biIsIm5vdGlmaWNhdGlvbiIsImkiLCJiYXNlIiwibmFtZSIsInZhbHVlIiwiZXF1YWwiLCJzdWIiLCJzIiwiZW1pdCIsIm5vdGlmeSIsIm1ha2UiLCJudWxsJCIsImdldCIsInNldCIsInVwZGF0ZSIsInRyaWdnZXIiLCJzdWIyIiwieDEiLCJ4MiIsInVzZSIsInVuc3ViIiwidXNlMiIsIm1hcCIsImNvbnN0JCIsInRhcCIsInBhaXIiLCJ0cmlwbGUiLCJzMyIsIngzIiwidDUiLCJzNCIsInM1IiwieDQiLCJ4NSIsInQ2IiwiczYiLCJ4NiIsImZpbHRlciIsInByZWQiLCJzZWVkIiwiZXRhIiwiZmlsdGVyX21hcCIsIm1hdGNoIiwicmVkdWNlIiwiaW5pdCIsInJlZHVjZXIiLCJldmVudHMiLCJzdGF0ZV9zaWduYWwiLCJzdGF0ZSIsImV2ZW50X29wdCIsImV2ZW50Iiwic2VsZWN0IiwidW5pcSIsIm1hcDIiLCJtYXAzIiwic2FtcGxlIiwiYXBwbHkiLCJmX3MiLCJ4X3MiLCJsZXQkIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFKLEdBQUFDLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsUUN5RUk7QUFBQSxZQUFBQyxjQUFBLE1EekVKO0FBQUEsWUFBQUMsTUFBQUMsT0NxQ2lCLGNBQU07QUFBQSxPQUFBQyxN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QXdCO0FBQUEsSUFBQztBQUFBLEdBQzVEO0FBQUEsWUFBQTJCLE9BQUFsRCxPQUFBZCxJQUFBRDtBQUFBQSxRQUFBaUIsSUFHTztBQUFBLElBQ0ssOEJBQUE3QixPQUFpQixpQ0FBZ0I7QUFBQSxJQUFDO0FBQUEsR0FDOUM7QUFBQSxZQUFBOEUsTUFBQUMsS0FBQUM7QUFBQUEsUUFBQTNFLE9BR1MsVUFBQXdCLElBQ1g7QUFBQSxhQUFBQyxLQUFBM0IsS0FBQUs7QUFBQUEsU0FBQXVCLFNBQ1M7QUFBQSxLQUNQO0FBQUEsS0FDQSxzQ0FBQS9CLE9BQXNCLHdCQUFvQixHQUFDO0FBQUE7QUFBQSxhQUFBNEIsSUFBQXRCLE9BQUFGO0FBQUFBLEtBRTNDO0FBQUEsS0FBc0IsZ0JBQUFKLE9BQ1osc0JBQWtCLEVBRE47QUFBQSxJQUNNO0FBQUEsSUFONEIsa0NBQW5CO0FBQUEsSUFRekIsK0JBQUFiLEdBQXVCLE9BQWEsUUFBYixzQkFBYTtBQUFBLElBQ3BDLCtCQUFBcUIsR0FBdUIsT0FBYSxRQUFiLHNCQUFhO0FBQUEsSUFBQztBQUFBLEdBQ2pEO0FBQUEsWUFBQXlFLEtBQUFwRCxHQUFBMUMsR0FNaUIsZ0JBQU87QUFBQSxHQTNUMUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVEN0hGIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDE3NjQsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoianhfanNvby5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvaGVsaXgvangvanNvby9KeF9mZmkubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCJ0eXBlIHRcblxuZXh0ZXJuYWwgcmF3IDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX3B1cmVfanNfZXhwclwiXG5cbmxldCBnbG9iYWxfdGhpcyA9IHJhdyBcImdsb2JhbFRoaXNcIlxubGV0IG51bGwgPSByYXcgXCJudWxsXCJcbmxldCB1bmRlZmluZWQgPSByYXcgXCJ1bmRlZmluZWRcIlxuXG5leHRlcm5hbCBkZWJ1Z2dlciA6IHVuaXQgLT4gdW5pdCA9IFwiZGVidWdnZXJcIlxuZXh0ZXJuYWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuZXh0ZXJuYWwgc3RyaWN0X2VxdWFsIDogdCAtPiB0IC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG5cbigqIFByaW1pdGl2ZXMgKilcbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgdG9faW50IDogdCAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gdCA9IFwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcIlxuZXh0ZXJuYWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXCJcbmV4dGVybmFsIG9mX2Jvb2wgOiBib29sIC0+IHQgPSBcImNhbWxfanNfZnJvbV9ib29sXCJcbmV4dGVybmFsIHRvX2Jvb2wgOiB0IC0+IGJvb2wgPSBcImNhbWxfanNfdG9fYm9vbFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IHQgPSBcImNhbWxfanNfZnJvbV9mbG9hdFwiXG5leHRlcm5hbCB0b19mbG9hdCA6IHQgLT4gZmxvYXQgPSBcImNhbWxfanNfdG9fZmxvYXRcIlxuXG4oKiBBcnJheSAqKVxuZXh0ZXJuYWwgb2ZfYXJyYXkgOiAnYSBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fYXJyYXlcIlxuZXh0ZXJuYWwgdG9fYXJyYXkgOiB0IC0+ICdhIGFycmF5ID0gXCJjYW1sX2pzX3RvX2FycmF5XCJcblxuKCogTGlzdCAqKVxuZXh0ZXJuYWwgb2ZfbGlzdCA6IHQgbGlzdCAtPiB0ID0gXCJjYW1sX2xpc3RfdG9fanNfYXJyYXlcIlxuZXh0ZXJuYWwgdG9fbGlzdCA6IHQgLT4gdCBsaXN0ID0gXCJjYW1sX2xpc3Rfb2ZfanNfYXJyYXlcIlxuXG4oKiBPYmogKilcbmV4dGVybmFsIGdldCA6IHQgLT4gdCAtPiB0ID0gXCJjYW1sX2pzX2dldFwiXG5leHRlcm5hbCBzZXQgOiB0IC0+IHQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2pzX3NldFwiXG5leHRlcm5hbCBkZWwgOiB0IC0+IHQgLT4gdW5pdCA9IFwiY2FtbF9qc19kZWxldGVcIlxuZXh0ZXJuYWwgb2JqIDogKHN0cmluZyAqIHQpIGFycmF5IC0+IHQgPSBcImNhbWxfanNfb2JqZWN0XCJcbmV4dGVybmFsIG9ial9uZXcgOiB0IC0+IHQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19uZXdcIlxuZXh0ZXJuYWwgb2JqX2NhbGwgOiB0IC0+IHN0cmluZyAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfbWV0aF9jYWxsXCJcblxuKCogRnVuICopXG5leHRlcm5hbCBjYWxsIDogdCAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfZnVuX2NhbGxcIlxuZXh0ZXJuYWwgb2ZfZnVuIDogaW50IC0+IChfIC0+IF8pIC0+IHQgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3RcIlxuXG4oKiB0eXBlX29mICopXG5cbmV4dGVybmFsIHR5cGVfb2YgOiB0IC0+IHN0cmluZyA9IFwiY2FtbF9qc190eXBlb2ZcIlxuXG4oKiBpbnN0YW5jZV9vZiAqKVxuXG5leHRlcm5hbCBpbnN0YW5jZV9vZiA6IHQgLT4gY29uc3RyOnQgLT4gYm9vbCA9IFwiY2FtbF9qc19pbnN0YW5jZW9mXCJcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiZ2xvYmFsX3RoaXMiLCJudWxsJCIsInVuZGVmaW5lZCQiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsY0NJa0I7QUFBQSxJQUFBQyxRQUNQO0FBQUEsSUFBQUMsYUFDSztBQUFBLEdBQWU7QUFBQTtBQUFBO0FBQUEsRUROL0IiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0MTc4MCwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJqeF9qc29vLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2hlY2tfYm91bmQiLCJjYW1sX2pzX2RlbGV0ZSIsImNhbWxfanNfZnJvbV9hcnJheSIsImNhbWxfanNfZnVuX2NhbGwiLCJjYW1sX2pzX2dldCIsImNhbWxfanNfaW5zdGFuY2VvZiIsImNhbWxfanNfbWV0aF9jYWxsIiwiY2FtbF9qc19zZXQiLCJjYW1sX2pzX3RvX2FycmF5IiwiY2FtbF9qc190eXBlb2YiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0IiwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmciLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX3N0cmluZ19vZl9qc3N0cmluZyIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYiIsIlN0ZGxpYl9BcnJheSIsIlN0ZGxpYl9MaXN0IiwiSnhfSnhfZmZpIiwiU3RkbGliX0Zsb2F0IiwiU3RkbGliX1N0cmluZyIsIm51bGwkIiwidW5kZWZpbmVkJCIsImVxdWFsIiwic3RyaWN0X2VxdWFsIiwiZGVidWdnZXIkIiwiaXNfbnVsbCIsInYiLCJpc191bmRlZmluZWQiLCJpc19kZWZpbmVkIiwiaXNfbnVtYmVyIiwianMiLCJpc19ib29sZWFuIiwiaXNfc3RyaW5nIiwiaXNfb2JqZWN0IiwicmF3IiwiaXNfaW50IiwiVW5kZWZpbmVkX3Byb3BlcnR5IiwiZ2xvYmFsIiwiayIsIngiLCJvZl9qcyIsInRvX2pzIiwib2JqIiwidCIsImVtcHR5IiwicGFyYW0iLCJvZl9saXN0IiwiZW50cmllcyIsIm5hbWUiLCJ0b19saXN0IiwiZW50cnlfYXJyIiwib2ZfYXJyYXkiLCJjcmVhdGUiLCJnZXRfcHJvdG90eXBlIiwic2V0X3Byb3RvdHlwZSIsInByb3RvIiwiZ2V0IiwiZGVjb2RlIiwiZ2V0X29wdCIsImdldF9wYXRoIiwicGF0aCIsImdldF9wYXRoX29wdCIsInNldCIsImVuY29kZSIsInhfanMiLCJzZXRfcGF0aCIsImRlbCIsImhhcyIsImhhc19qcyIsImtfanMiLCJjYWxsX2pzX3VuaXQiLCJ0aGlzJCIsImFyZ3MiLCJjYWxsMCIsImZfayIsInJldHVybiQiLCJjYWxsMSIsImEiLCJjYWxsMiIsImVuY29kZV9hIiwiZW5jb2RlX2IiLCJiIiwiY2FsbDMiLCJlbmNvZGVfYyIsImMiLCJjYWxsNCIsImVuY29kZV9kIiwiZCIsImNhbGw1IiwiZW5jb2RlX2UiLCJlIiwiY2FsbDYiLCJlbmNvZGVfZiIsImNhbGw3IiwiZW5jb2RlX2ciLCJnIiwiY2FsbDgiLCJlbmNvZGVfaCIsImgiLCJjYWxsOSIsImVuY29kZV9pIiwiaSIsImNhbGwwX3VuaXQiLCJjYWxsMV91bml0IiwiY2FsbDJfdW5pdCIsImNhbGwzX3VuaXQiLCJjYWxsNF91bml0IiwiY2FsbDVfdW5pdCIsImNhbGw2X3VuaXQiLCJjYWxsN191bml0IiwiY2FsbDhfdW5pdCIsImNhbGw5X3VuaXQiLCJuZXcwIiwibmV3MSIsIm5ldzIiLCJuZXczIiwibmV3NCIsIm5ldzUiLCJuZXc2IiwibmV3NyIsIm5ldzgiLCJuZXc5IiwibmV3X2pzIiwiaXNfYXJyYXkiLCJhcnIiLCJ1bml0IiwiaW50IiwiZmxvYXQiLCJib29sIiwiYXJyYXkiLCJwYWlyIiwidG9fanNfeCIsInRvX2pzX3kiLCJ5IiwidHJpcGxlIiwidG9fanNfeiIsInoiLCJudWxsYWJsZSIsIm9wdGlvbmFsIiwiZnVuMCIsImZ1bjEiLCJmdW4yIiwiZnVuMyIsImZ1bjQiLCJmdW41IiwiZnVuNiIsImZ1bjciLCJmdW44IiwiZnVuOSIsImFueSIsImFycmF5X2pzIiwib2ZfanNfeCIsIm9mX2pzX3kiLCJsZW4iLCJ5X2pzIiwib2ZfanNfeiIsInpfanMiLCJmaWVsZCIsImRlY29kZXIiLCJvciIsImRlY29kZXIxIiwiZGVjb2RlcjIiLCJleG4iLCJmX2pzIiwiY29uc29sZSIsImxvZyIsInN0cmluZyIsImRlYnVnIiwibHN0IiwiZ2xvYmFsX3RoaXMiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyxpQkFBQTtBQUFBLElBQUFDLHFCQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMscUJBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsK0JBQUE7QUFBQSxJQUFBQywwQkFBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsSUFBQUMsMEJBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsWUFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLFFBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsUUFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxZQUFBQyxVQUFBO0FBQUEsWUFBQUMsUUFBQUMsR0FBQSwyQkFBQTtBQUFBLFlBQUFDLGFBQUFELEdBQUEsZ0NBQUE7QUFBQSxZQUFBRSxXQUFBRixHQUFBLGdDQUFBO0FBQUEsWUFBQUcsVUFBQUM7QUFB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QUE7QUFBQTtBQUFBLFlBQUFrQjtBQUFBQSxJQUFBdUQ7QUFBQUEsSUFBQXBGO0FBQUFBLElBQUFDO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFmO0FBQUFBLElBQUFJO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUEvRTtBQUFBQTtBQUFBQSxLQUFBLElBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsSUFBQSxLQUFBO0FBQUEsSUFBQTtBQUFBO0FBQUEsWUFBQWtHO0FBQUFBLElBQUFzRDtBQUFBQSxJQUFBcEY7QUFBQUEsSUFBQUM7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUU7QUFBQUEsSUFBQWpCO0FBQUFBLElBQUFJO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUEvRTtBQUFBQSxJQUFBb0Y7QUFBQUE7QUFBQUEsS0FBQSxJQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxJQUFBLEtBQUE7QUFBQSxJQUFBO0FBQUE7QUFBQSxZQUFBZTtBQUFBQSxJQUFBcUQ7QUFBQUEsSUFBQXBGO0FBQUFBLElBQUFDO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFFO0FBQUFBLElBQUFHO0FBQUFBLElBQUFwQjtBQUFBQSxJQUFBSTtBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBL0U7QUFBQUEsSUFBQW9GO0FBQUFBLElBQUFHO0FBQUFBO0FBQUFBLEtBQUEsSUFBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLElBQUEsS0FBQTtBQUFBLElBQUE7QUFBQTtBQUFBLFlBQUFhO0FBQUFBLElBQUFvRDtBQUFBQSxJQUFBcEY7QUFBQUEsSUFBQUM7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUU7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQXZCO0FBQUFBLElBQUFJO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUEvRTtBQUFBQSxJQUFBb0Y7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUE7QUFBQUEsS0FBQSxJQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLElBQUEsS0FBQTtBQUFBLElBQUE7QUFBQTtBQUFBLFlBQUEvQixlQUFBM0QsR0FBQTZELE1BQUEsMkJBQUEsU0FBQTtBQUFBLE9BQUE0RixVQUFBO0FBQUEsWUFBQUMsSUFBQTlILEdBQUEsMkNBQUE7QUFBQSxPQUFBK0gsU0FBQTtBQUFBLFlBQUFDLE1BQUFDO0FBQUFBLElBQUEsT0FBQSxJQUFBLGNBQUEsa0NBQUE7QUFBQTtBQUFBLE9BQUFDLGNBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFBQSIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQyOTY5LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZHdlYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvaGVsaXgvc3Rkd2ViL1N0ZHdlYl9nbG9iYWwubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCJsZXQgd2luZG93ID0gSnguZ2xvYmFsIFwid2luZG93XCJcbmxldCBkb2N1bWVudCA9IEp4Lmdsb2JhbCBcImRvY3VtZW50XCJcbmxldCBjb25zb2xlID0gSnguZ2xvYmFsIFwiY29uc29sZVwiXG5sZXQgbmF2aWdhdG9yID0gSnguZ2xvYmFsIFwibmF2aWdhdG9yXCJcblxubGV0IGVuY29kZV91cmlfY29tcG9uZW50ID1cbiAgbGV0IGYgPSBKeC5nbG9iYWwgXCJlbmNvZGVVUklDb21wb25lbnRcIiBpblxuICBKeC5GdW4uY2FsbDEgZiB+cmV0dXJuOkp4LkRlY29kZXIuc3RyaW5nIEp4LkVuY29kZXIuc3RyaW5nXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwzIiwiYTEiLCJhMiIsIkp4Iiwid2luZG93IiwiZG9jdW1lbnQiLCJjb25zb2xlIiwibmF2aWdhdG9yIiwiZW5jb2RlX3VyaV9jb21wb25lbnQiXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLEtBQUE7QUFBQSxJQUFBQyxTQ0FhO0FBQUEsSUFBQUMsV0FDRTtBQUFBLElBQUFDLFVBQ0Q7QUFBQSxJQUFBQyxZQUNFO0FBQUEsSUFBQVQsSUFHTjtBQUFBLElBQUFVLHVCQUNSO0FBQUEsR0FBMEQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVEUDVEIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDMwMDEsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rkd2ViLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9oZWxpeC9zdGR3ZWIvU3Rkd2ViX3Byb21pc2UubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCJ0eXBlICdhIHQgPSBKeC50XG50eXBlICgnYSwgJ2VycikgZXhlY3V0b3IgPSAoJ2EgLT4gdW5pdCkgLT4gKCdlcnIgLT4gdW5pdCkgLT4gdW5pdFxuXG5sZXQgdG9fanMgcCA9IHBcbmxldCBvZl9qcyBqcyA9IGpzXG5sZXQgdCA9IEp4Lmdsb2JhbCBcIlByb21pc2VcIlxubGV0IG1ha2UgZXhlY3V0b3IgPSBKeC5PYmoubmV3MSB0IEp4LkVuY29kZXIuZnVuMSBleGVjdXRvclxubGV0IHJlc29sdmUgdiA9IEp4Lk9iai5jYWxsMSB0IFwicmVzb2x2ZVwiIH5yZXR1cm46b2ZfanMgSnguRW5jb2Rlci5hbnkgdlxubGV0IHJlamVjdCBlcnIgPSBKeC5PYmouY2FsbDEgdCBcInJlamVjdFwiIH5yZXR1cm46b2ZfanMgSnguRW5jb2Rlci5hbnkgZXJyXG5sZXQgYW5kX3RoZW4gZiBwID0gSnguT2JqLmNhbGwxIHAgXCJ0aGVuXCIgfnJldHVybjpvZl9qcyBKeC5FbmNvZGVyLmZ1bjEgZlxubGV0IG1hcCBmIHAgPSBhbmRfdGhlbiAoZnVuIHggLT4gcmVzb2x2ZSAoZiB4KSkgcFxubGV0IHVzZSBmIHAgPSBKeC5PYmouY2FsbDFfdW5pdCBwIFwidGhlblwiIEp4LkVuY29kZXIuZnVuMSBmXG5sZXQgY2F0Y2ggZiBwID0gSnguT2JqLmNhbGwxX3VuaXQgcCBcImNhdGNoXCIgSnguRW5jb2Rlci5mdW4xIGZcbmxldCBpZ25vcmUgcCA9IHVzZSBpZ25vcmUgcFxuXG5tb2R1bGUgU3ludGF4ID0gc3RydWN0XG4gIGxldCAoIGxldCogKSBwIGYgPSBhbmRfdGhlbiBmIHBcbmVuZFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMyIsImExIiwiYTIiLCJjYW1sX2NhbGw0IiwiYTMiLCJjYW1sX2NhbGw1IiwiYTQiLCJKeCIsInRvX2pzIiwicCIsIm9mX2pzIiwianMiLCJ0IiwibWFrZSIsImV4ZWN1dG9yIiwicmVzb2x2ZSIsInYiLCJyZWplY3QiLCJlcnIiLCJjc3RfdGhlbiIsImFuZF90aGVuIiwibWFwIiwieCIsInVzZSIsImNhdGNoJCIsImlnbm9yZSIsImxldCQiXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBTCxHQUFBQyxJQUFBRSxJQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQVAsR0FBQUMsSUFBQUUsSUFBQUMsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE9BQUFDLEtBQUE7QUFBQSxZQUFBQyxNQUFBQyxHQ0djLFNBQUM7QUFBQSxZQUFBQyxNQUFBQyxJQUNBLFVBQUU7QUFBQSxPQUFBQyxJQUNUO0FBQUEsWUFBQUMsS0FBQUM7QUFBQUEsSUFDWSxzREFBc0M7QUFBQTtBQUFBLFlBQUFDLFFBQUFDO0FBQUFBLElBQzFDLGlFQUF1RDtBQUFBO0FBQUEsWUFBQUMsT0FBQUM7QUFBQUEsSUFDdEQsa0VBQXdEO0FBQUE7QUFBQSxPQUFBQyxXRFJ6RTtBQUFBLFlBQUFDLFNBQUF0QixHQUFBVztBQUFBQSxJQ1NtQixnRUFBcUQ7QUFBQTtBQUFBLFlBQUFZLElBQUF2QixHQUFBVztBQUFBQSxJQUMxRCx5QkFBQWEsR0FBMkIsT0FBSyxRQUFMLGlCQUFLLE1BQUc7QUFBQTtBQUFBLFlBQUFDLElBQUF6QixHQUFBVztBQUFBQSxJQUNuQyx5REFBNEM7QUFBQTtBQUFBLFlBQUFlLE9BQUExQixHQUFBVztBQUFBQSxJQUMxQyx3REFBNkM7QUFBQTtBQUFBLFlBQUFnQixPQUFBaEIsR0FDOUMsdUJEYmYsY0NhMkI7QUFBQSxZQUFBaUIsS0FBQWpCLEdBQUFYLEdBR04scUJBQVk7QUFBQSxHQVhOO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFREwzQiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQzMDc1LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZHdlYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvaGVsaXgvc3Rkd2ViL1N0ZHdlYl9kb20ubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCJtb2R1bGUgR2xvYmFsID0gU3Rkd2ViX2dsb2JhbFxubW9kdWxlIFByb21pc2UgPSBTdGR3ZWJfcHJvbWlzZVxuXG50eXBlIG5vZGUgPSBKeC50XG50eXBlIGV2ZW50ID0gSngudFxuXG4oKiBTdHlsZSAqKVxuXG50eXBlIHN0eWxlID0gSngudFxuXG5tb2R1bGUgU3R5bGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gc3R5bGVcblxuICBsZXQgdGV4dCB0aGlzID0gSnguT2JqLmdldCB0aGlzIFwiY3NzVGV4dFwiIEp4LkRlY29kZXIuc3RyaW5nXG4gIGxldCBsZW5ndGggdGhpcyA9IEp4Lk9iai5nZXQgdGhpcyBcImxlbmd0aFwiIEp4LkRlY29kZXIuaW50XG5cbiAgbGV0IHNldCB0aGlzIG5hbWUgdmFsdWUgPVxuICAgIEp4Lk9iai5jYWxsX2pzX3VuaXQgdGhpcyBcInNldFByb3BlcnR5XCJcbiAgICAgIFt8IEp4LkVuY29kZXIuc3RyaW5nIG5hbWU7IEp4LkVuY29kZXIuc3RyaW5nIHZhbHVlIHxdXG5cbiAgbGV0IHVuc2V0IHRhcmdldCBuYW1lID1cbiAgICBKeC5PYmouY2FsbF9qc191bml0IHRhcmdldCBcInJlbW92ZVByb3BlcnR5XCIgW3wgSnguRW5jb2Rlci5zdHJpbmcgbmFtZSB8XVxuXG4gIGxldCBnZXQgdGhpcyBuYW1lID1cbiAgICBKeC5EZWNvZGVyLnN0cmluZ1xuICAgICAgKEp4Lk9iai5jYWxsX2pzIHRoaXMgXCJzZXRQcm9wZXJ0eVwiIFt8IEp4LkVuY29kZXIuc3RyaW5nIG5hbWUgfF0pXG5lbmRcblxuKCogRE9NIGV2ZW50cyAqKVxuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgdHlwZSBuYW1lID0gSngudFxuXG4gIG1vZHVsZSBOYW1lID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSngudFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IEp4LkRlY29kZXIuc3RyaW5nXG4gICAgbGV0IG1ha2UgPSBKeC5FbmNvZGVyLnN0cmluZ1xuICBlbmRcblxuICB0eXBlIHQgPSBldmVudFxuXG4gIGxldCB0YXJnZXQgdCA9IEp4Lk9iai5nZXQgdCBcInRhcmdldFwiIEp4LkRlY29kZXIuYW55XG4gIGxldCBwcmV2ZW50X2RlZmF1bHQgdCA9IEp4Lk9iai5jYWxsMF91bml0IHQgXCJwcmV2ZW50RGVmYXVsdFwiICgpXG5cbiAgKCogR2VuZXJpYyBldmVudHMgKilcblxuICBsZXQgY2hhbmdlID0gTmFtZS5tYWtlIFwiY2hhbmdlXCJcblxuICAoKiBVSSBldmVudHMgKilcblxuICBsZXQgcmVzaXplID0gTmFtZS5tYWtlIFwicmVzaXplXCJcblxuICAoKiBNb3VzZSAqKVxuXG4gIGxldCBjbGljayA9IEp4LkVuY29kZXIuc3RyaW5nIFwiY2xpY2tcIlxuICBsZXQgZGJsY2xpY2sgPSBKeC5FbmNvZGVyLnN0cmluZyBcImRibGNsaWNrXCJcbiAgbGV0IG1vdXNlbW92ZSA9IEp4LkVuY29kZXIuc3RyaW5nIFwibW91c2Vtb3ZlXCJcbiAgbGV0IHBhZ2VfeCB0aGlzID0gSnguT2JqLmdldCB0aGlzIFwicGFnZVhcIiBKeC5EZWNvZGVyLmZsb2F0XG4gIGxldCBwYWdlX3kgdGhpcyA9IEp4Lk9iai5nZXQgdGhpcyBcInBhZ2VZXCIgSnguRGVjb2Rlci5mbG9hdFxuXG4gICgqIEtleWJvYXJkIGV2ZW50cyAqKVxuXG4gIGxldCBrZXlkb3duID0gTmFtZS5tYWtlIFwia2V5ZG93blwiXG4gIGxldCBrZXkgdGhpcyA9IEp4Lk9iai5nZXQgdGhpcyBcImtleVwiIEp4LkRlY29kZXIuc3RyaW5nXG4gIGxldCBjb2RlIHRoaXMgPSBKeC5PYmouZ2V0IHRoaXMgXCJrZXlDb2RlXCIgSnguRGVjb2Rlci5zdHJpbmdcblxuICAoKiBJbnB1dCAqKVxuXG4gIGxldCBiZWZvcmVfaW5wdXQgPSBOYW1lLm1ha2UgXCJiZWZvcmVpbnB1dFwiXG4gIGxldCBpbnB1dCA9IE5hbWUubWFrZSBcImlucHV0XCJcbiAgbGV0IGNhbmNlbCA9IE5hbWUubWFrZSBcImNhbmNlbFwiXG4gIGxldCBkYXRhIHRoaXMgPSBKeC5PYmouZ2V0IHRoaXMgXCJkYXRhXCIgSnguRGVjb2Rlci5zdHJpbmdcblxuICAoKiBGdWxsc2NyZWVuIGV2ZW50cyAqKVxuICBsZXQgZnVsbHNjcmVlbl9jaGFuZ2UgPSBOYW1lLm1ha2UgXCJmdWxsc2NyZWVuY2hhbmdlXCJcbiAgbGV0IGZ1bGxzY3JlZW5fZXJyb3IgPSBOYW1lLm1ha2UgXCJmdWxsc2NyZWVuZXJyb3JcIlxuXG4gICgqIFBvcCBzdGF0ZSBldmVudHMgKilcbiAgbGV0IHBvcHN0YXRlID0gTmFtZS5tYWtlIFwicG9wc3RhdGVcIlxuXG4gICgqIEhhc2ggY2hhbmdlIGV2ZW50cyAqKVxuICBsZXQgaGFzaGNoYW5nZSA9IE5hbWUubWFrZSBcImhhc2hjaGFuZ2VcIlxuXG4gICgqIEZvY3VzIGV2ZW50cyAqKVxuICBsZXQgYmx1ciA9IE5hbWUubWFrZSBcImJsdXJcIlxuICBsZXQgZm9jdXNpbiA9IE5hbWUubWFrZSBcImZvY3VzaW5cIlxuICBsZXQgZm9jdXNvdXQgPSBOYW1lLm1ha2UgXCJmb2N1c291dFwiXG5cbiAgKCogU3VibWl0IGV2ZW50cyAqKVxuICBsZXQgc3VibWl0ID0gTmFtZS5tYWtlIFwic3VibWl0XCJcbmVuZFxuXG5tb2R1bGUgVG9rZW5fbGlzdCA9IHN0cnVjdFxuICB0eXBlIHQgPSBKeC50XG5cbiAgbGV0IHRvZ2dsZSB0aGlzIG5hbWUgPSBKeC5PYmouY2FsbDFfdW5pdCB0aGlzIFwidG9nZ2xlXCIgSnguRW5jb2Rlci5zdHJpbmcgbmFtZVxuICBsZXQgYWRkIHRoaXMgbmFtZSA9IEp4Lk9iai5jYWxsMV91bml0IHRoaXMgXCJhZGRcIiBKeC5FbmNvZGVyLnN0cmluZyBuYW1lXG4gIGxldCByZW1vdmUgdGhpcyBuYW1lID0gSnguT2JqLmNhbGwxX3VuaXQgdGhpcyBcInJlbW92ZVwiIEp4LkVuY29kZXIuc3RyaW5nIG5hbWVcbmVuZFxuXG5tb2R1bGUgQmxvYiA9IHN0cnVjdFxuICB0eXBlIHQgPSBKeC50XG5cbiAgbGV0IHNpemUgdCA9IEp4Lk9iai5nZXQgdCBcInNpemVcIiBKeC5EZWNvZGVyLmludFxuICBsZXQgdHlwZScgdCA9IEp4Lk9iai5nZXQgdCBcInR5cGVcIiBKeC5EZWNvZGVyLnN0cmluZ1xuXG4gIGxldCB0ZXh0IHQgPVxuICAgIEp4Lk9iai5jYWxsMCB0IFwidGV4dFwiIH5yZXR1cm46UHJvbWlzZS5vZl9qcyAoKVxuICAgIHw+IFByb21pc2UubWFwIEp4LkRlY29kZXIuc3RyaW5nXG5lbmRcblxubW9kdWxlIEZpbGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSngudFxuXG4gIGxldCBsYXN0X21vZGlmaWVkIHQgPSBKeC5PYmouZ2V0IHQgXCJsYXN0X21vZGlmaWVkXCIgSnguRGVjb2Rlci5mbG9hdFxuICBsZXQgbmFtZSB0ID0gSnguT2JqLmdldCB0IFwibmFtZVwiIEp4LkRlY29kZXIuc3RyaW5nXG4gIGxldCB0b19ibG9iIHQgPSB0XG5lbmRcblxubW9kdWxlIE5vZGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gbm9kZVxuXG4gICgqIENvbnZlcnNpb25zICopXG5cbiAgbGV0IHRvX2pzIHQgPSB0XG5cbiAgKCogVHJhdmVyc2FsICopXG5cbiAgbGV0IHBhcmVudCB0aGlzID0gSnguT2JqLmdldCB0aGlzIFwicGFyZW50Tm9kZVwiIEp4LkRlY29kZXIuKG51bGxhYmxlIGpzKVxuICBsZXQgZmlyc3RfY2hpbGQgdGhpcyA9IEp4Lk9iai5nZXQgdGhpcyBcImZpcnN0Q2hpbGRcIiBKeC5EZWNvZGVyLihudWxsYWJsZSBqcylcbiAgbGV0IGxhc3RfY2hpbGQgdGhpcyA9IEp4Lk9iai5nZXQgdGhpcyBcImxhc3RDaGlsZFwiIEp4LkRlY29kZXIuKG51bGxhYmxlIGpzKVxuICBsZXQgbmV4dF9zaWJsaW5nIHRoaXMgPSBKeC5PYmouZ2V0IHRoaXMgXCJuZXh0U2libGluZ1wiIEp4LkRlY29kZXIuKG51bGxhYmxlIGpzKVxuICBsZXQgX25leHRfc2libGluZ19qcyB0aGlzID0gSnguT2JqLmdldCB0aGlzIFwibmV4dFNpYmxpbmdcIiBKeC5EZWNvZGVyLmpzXG5cbiAgbGV0IGl0ZXJfY2hpbGRyZW4gdGhpcyBmID1cbiAgICBsZXQgbm9kZV9saXN0ID0gSnguT2JqLmdldCB0aGlzIFwiY2hpbGROb2Rlc1wiIEp4LkRlY29kZXIuanMgaW5cbiAgICBKeC5PYmouY2FsbF9qc191bml0IG5vZGVfbGlzdCBcImZvckVhY2hcIiBbfCBKeC5FbmNvZGVyLmZ1bjEgZiB8XVxuXG4gIGxldCBjaGlsZHJlbiB0aGlzID1cbiAgICBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgaXRlcl9jaGlsZHJlbiB0aGlzIChmdW4gYyAtPiBhY2MgOj0gYyA6OiAhYWNjKTtcbiAgICBMaXN0LnJldiAhYWNjXG5cbiAgKCogTm9kZSBvcGVyYXRpb25zICopXG5cbiAgbGV0IGNsb25lX25vZGUgdGhpcyB+ZGVlcCA9XG4gICAgSnguT2JqLmNhbGwxIHRoaXMgXCJjbG9uZU5vZGVcIiBKeC5FbmNvZGVyLmJvb2wgZGVlcCB+cmV0dXJuOkp4LkRlY29kZXIuanNcblxuICBsZXQgaXNfc2FtZV9ub2RlIHRoaXMgb3RoZXIgPVxuICAgIEp4LkRlY29kZXIuYm9vbCAoSnguT2JqLmNhbGxfanMgdGhpcyBcImlzU2FtZU5vZGVcIiBbfCBvdGhlciB8XSlcblxuICBsZXQgcmVtb3ZlIHRoaXMgPSBKeC5PYmouY2FsbDBfdW5pdCB0aGlzIFwicmVtb3ZlXCIgKClcblxuICBsZXQgcmVwbGFjZV93aXRoIHRoaXMgb3RoZXIgPVxuICAgIEp4Lk9iai5jYWxsX2pzX3VuaXQgdGhpcyBcInJlcGxhY2VXaXRoXCIgW3wgb3RoZXIgfF1cblxuICAoKiBDaGlsZHJlbiBtYW5pcHVsYXRpb24gKilcblxuICBsZXQgYXBwZW5kX3RleHQgfnBhcmVudCB0ZXh0ID1cbiAgICBKeC5PYmouY2FsbDFfdW5pdCBwYXJlbnQgXCJhcHBlbmRcIiBKeC5FbmNvZGVyLnN0cmluZyB0ZXh0XG5cbiAgbGV0IGFwcGVuZF9jaGlsZCB+cGFyZW50IG90aGVyID1cbiAgICBKeC5PYmouY2FsbF9qc191bml0IHBhcmVudCBcImFwcGVuZENoaWxkXCIgW3wgb3RoZXIgfF1cblxuICBsZXQgcmVtb3ZlX2NoaWxkIH5wYXJlbnQgb3RoZXIgPVxuICAgIEp4Lk9iai5jYWxsX2pzX3VuaXQgcGFyZW50IFwicmVtb3ZlQ2hpbGRcIiBbfCBvdGhlciB8XVxuXG4gIGxldCBpbnNlcnRfYmVmb3JlIH5wYXJlbnQgfnJlZmVyZW5jZSBuZXdfbm9kZSA9XG4gICAgSnguT2JqLmNhbGxfanNfdW5pdCBwYXJlbnQgXCJpbnNlcnRCZWZvcmVcIiBbfCBuZXdfbm9kZTsgcmVmZXJlbmNlIHxdXG5cbiAgbGV0IGluc2VydF9hZnRlciB+cGFyZW50IH5yZWZlcmVuY2UgbmV3X25vZGUgPVxuICAgIGluc2VydF9iZWZvcmUgfnBhcmVudCB+cmVmZXJlbmNlOihfbmV4dF9zaWJsaW5nX2pzIHJlZmVyZW5jZSkgbmV3X25vZGVcblxuICBsZXQgcmVwbGFjZV9jaGlsZCB+cGFyZW50IH5yZWZlcmVuY2UgbmV3X25vZGUgPVxuICAgIEp4Lk9iai5jYWxsX2pzX3VuaXQgcGFyZW50IFwicmVwbGFjZUNoaWxkXCIgW3wgbmV3X25vZGU7IHJlZmVyZW5jZSB8XVxuXG4gIGxldCByZXBsYWNlX2NoaWxkcmVuIHRoaXMgY2hpbGRyZW4gPVxuICAgIEp4Lk9iai5jYWxsX2pzX3VuaXQgdGhpcyBcInJlcGxhY2VDaGlsZHJlblwiIGNoaWxkcmVuXG5cbiAgbGV0IGluc2VydF9hZGphY2VudF9lbGVtZW50IHRoaXMgcG9zaXRpb24gbm9kZSA9XG4gICAgSnguT2JqLmNhbGwyX3VuaXQgdGhpcyBcImluc2VydEFkamFjZW50RWxlbWVudFwiIEp4LkVuY29kZXIuc3RyaW5nXG4gICAgICBKeC5FbmNvZGVyLmpzIHBvc2l0aW9uIG5vZGVcblxuICBsZXQgaW5zZXJ0X2JlZm9yZV9iZWdpbiB+cmVmZXJlbmNlIG5vZGUgPVxuICAgIGluc2VydF9hZGphY2VudF9lbGVtZW50IHJlZmVyZW5jZSBcImJlZm9yZWJlZ2luXCIgbm9kZVxuXG4gIGxldCBpbnNlcnRfYWZ0ZXJfYmVnaW4gfnJlZmVyZW5jZSBub2RlID1cbiAgICBpbnNlcnRfYWRqYWNlbnRfZWxlbWVudCByZWZlcmVuY2UgXCJhZnRlcmJlZ2luXCIgbm9kZVxuXG4gIGxldCBpbnNlcnRfYmVmb3JlX2VuZCB+cmVmZXJlbmNlIG5vZGUgPVxuICAgIGluc2VydF9hZGphY2VudF9lbGVtZW50IHJlZmVyZW5jZSBcImJlZm9yZWVuZFwiIG5vZGVcblxuICBsZXQgaW5zZXJ0X2FmdGVyX2VuZCB+cmVmZXJlbmNlIG5vZGUgPVxuICAgIGluc2VydF9hZGphY2VudF9lbGVtZW50IHJlZmVyZW5jZSBcImFmdGVyZW5kXCIgbm9kZVxuXG4gICgqIFRleHQgY29udGVudCAqKVxuXG4gIGxldCBzZXRfdGV4dF9jb250ZW50IHRoaXMgdGV4dCA9XG4gICAgSnguT2JqLnNldCB0aGlzIFwidGV4dENvbnRlbnRcIiBKeC5FbmNvZGVyLnN0cmluZyB0ZXh0XG5cbiAgbGV0IGdldF90ZXh0X2NvbnRlbnQgdGhpcyA9IEp4Lk9iai5nZXQgdGhpcyBcInRleHRDb250ZW50XCIgSnguRGVjb2Rlci5zdHJpbmdcblxuICAoKiBIVE1MIGNvbnRlbnQgKilcblxuICBsZXQgc2V0X2lubmVyX2h0bWwgdGhpcyB0ZXh0ID1cbiAgICBKeC5PYmouc2V0IHRoaXMgXCJpbm5lckhUTUxcIiBKeC5FbmNvZGVyLnN0cmluZyB0ZXh0XG5cbiAgKCogRXZlbnQgaGFuZGxpbmcgKilcblxuICBsZXQgYmluZCB0aGlzIGV2ZW50X3R5cGUgZiA9XG4gICAgSnguT2JqLmNhbGwyX3VuaXQgdGhpcyBcImFkZEV2ZW50TGlzdGVuZXJcIiBKeC5FbmNvZGVyLmpzIEp4LkVuY29kZXIuZnVuMVxuICAgICAgZXZlbnRfdHlwZSBmXG5cbiAgbGV0IHVuYmluZCB0aGlzIGV2ZW50X3R5cGUgZiA9XG4gICAgSnguT2JqLmNhbGwyX3VuaXQgdGhpcyBcInJlbW92ZUV2ZW50TGlzdGVuZXJcIiBKeC5FbmNvZGVyLmpzIEp4LkVuY29kZXIuZnVuMVxuICAgICAgZXZlbnRfdHlwZSBmXG5cbiAgKCogU3RhdGUgY2hhbmdlcyAqKVxuXG4gIGxldCBibHVyIHRoaXMgPSBKeC5PYmouY2FsbDBfdW5pdCB0aGlzIFwiYmx1clwiICgpXG4gIGxldCBjbGljayB0aGlzID0gSnguT2JqLmNhbGwwX3VuaXQgdGhpcyBcImNsaWNrXCIgKClcbiAgbGV0IGZvY3VzIHRoaXMgPSBKeC5PYmouY2FsbDBfdW5pdCB0aGlzIFwiZm9jdXNcIiAoKVxuXG4gICgqIFBvcG92ZXIgb3BlcmF0aW9ucyAqKVxuXG4gIGxldCBoaWRlX3BvcG92ZXIgdGhpcyA9IEp4Lk9iai5jYWxsMF91bml0IHRoaXMgXCJoaWRlUG9wb3ZlclwiICgpXG4gIGxldCBzaG93X3BvcG92ZXIgdGhpcyA9IEp4Lk9iai5jYWxsMF91bml0IHRoaXMgXCJzaG93UG9wb3ZlclwiICgpXG4gIGxldCB0b2dnbGVfcG9wb3ZlciB0aGlzID0gSnguT2JqLmNhbGwwX3VuaXQgdGhpcyBcInRvZ2dsZVBvcG92ZXJcIiAoKVxuXG4gICgqIFNlbGVjdG9ycyAqKVxuXG4gIGxldCBtYXRjaGVzIHRoaXMgc2VsZWN0b3JzID1cbiAgICBKeC5EZWNvZGVyLmJvb2xcbiAgICAgIChKeC5PYmouY2FsbF9qcyB0aGlzIFwibWF0Y2hlc1wiIFt8IEp4LkVuY29kZXIuc3RyaW5nIHNlbGVjdG9ycyB8XSlcblxuICBsZXQgY2xvc2VzdCB0aGlzIHNlbGVjdG9ycyA9XG4gICAgSnguRGVjb2Rlci5udWxsYWJsZSBKeC5EZWNvZGVyLmFueVxuICAgICAgKEp4Lk9iai5jYWxsX2pzIHRoaXMgXCJjbG9zZXN0XCIgW3wgSnguRW5jb2Rlci5zdHJpbmcgc2VsZWN0b3JzIHxdKVxuXG4gICgqIGlucHV0ICopXG5cbiAgbGV0IHNlbGVjdCB0aGlzID0gSnguT2JqLmNhbGwwX3VuaXQgdGhpcyBcInNlbGVjdFwiICgpXG5cbiAgKCogYSAqKVxuXG4gIGxldCB0b19zdHJpbmcgdGhpcyA9IEp4Lk9iai5jYWxsMCB+cmV0dXJuOkp4LkRlY29kZXIuc3RyaW5nIHRoaXMgXCJ0b1N0cmluZ1wiICgpXG5cbiAgKCogQXR0cmlidXRlcyAqKVxuXG4gIGxldCBzZXRfYXR0ciB0aGlzIG5hbWUgdmFsdWUgPVxuICAgIEp4Lk9iai5jYWxsX2pzX3VuaXQgdGhpcyBcInNldEF0dHJpYnV0ZVwiXG4gICAgICBbfCBKeC5FbmNvZGVyLnN0cmluZyBuYW1lOyBKeC5FbmNvZGVyLnN0cmluZyB2YWx1ZSB8XVxuXG4gIGxldCBnZXRfYXR0ciB0aGlzIG5hbWUgPVxuICAgIEp4Lk9iai5jYWxsMSB0aGlzIFwiZ2V0QXR0cmlidXRlXCIgfnJldHVybjpKeC5EZWNvZGVyLnN0cmluZyBKeC5FbmNvZGVyLnN0cmluZ1xuICAgICAgbmFtZVxuXG4gIGxldCB1bnNldF9hdHRyIHRoaXMgbmFtZSA9XG4gICAgSnguT2JqLmNhbGxfanNfdW5pdCB0aGlzIFwicmVtb3ZlQXR0cmlidXRlXCIgW3wgSnguRW5jb2Rlci5zdHJpbmcgbmFtZSB8XVxuXG4gIGxldCBnZXRfY2xhc3NfbGlzdCB0aGlzID0gSnguT2JqLmdldCB0aGlzIFwiY2xhc3NMaXN0XCIgSnguRGVjb2Rlci5qc1xuICBsZXQgc2V0X3N0eWxlIHRoaXMgeCA9IEp4Lk9iai5zZXQgdGhpcyBcInN0eWxlXCIgSnguRW5jb2Rlci5zdHJpbmcgeFxuICBsZXQgZ2V0X3N0eWxlIHRoaXMgPSBKeC5PYmouZ2V0IHRoaXMgXCJzdHlsZVwiIEp4LkRlY29kZXIuanNcbiAgbGV0IHJlc2V0X3N0eWxlIHRoaXMgPSBKeC5PYmouc2V0IHRoaXMgXCJzdHlsZVwiIEp4LkVuY29kZXIuc3RyaW5nIFwiXCJcbiAgbGV0IGdldF9ocmVmIHRoaXMgPSBKeC5PYmouZ2V0IHRoaXMgXCJocmVmXCIgSnguRGVjb2Rlci5zdHJpbmdcbiAgbGV0IHNldF9ocmVmIHRoaXMgeCA9IEp4Lk9iai5zZXQgdGhpcyBcImhyZWZcIiBKeC5FbmNvZGVyLnN0cmluZyB4XG4gIGxldCBnZXRfdmFsdWUgdGhpcyA9IEp4Lk9iai5nZXQgdGhpcyBcInZhbHVlXCIgSnguRGVjb2Rlci5zdHJpbmdcbiAgbGV0IHNldF92YWx1ZSB0aGlzIHggPSBKeC5PYmouc2V0IHRoaXMgXCJ2YWx1ZVwiIEp4LkVuY29kZXIuc3RyaW5nIHhcbiAgbGV0IHJlc2V0X3ZhbHVlIHRoaXMgPSBKeC5PYmouc2V0IHRoaXMgXCJ2YWx1ZVwiIEp4LkVuY29kZXIuc3RyaW5nIFwiXCJcbiAgbGV0IHNldF9kaXNhYmxlZCB0aGlzIHggPSBKeC5PYmouc2V0IHRoaXMgXCJkaXNhYmxlZFwiIEp4LkVuY29kZXIuYm9vbCB4XG4gIGxldCBzZXRfYXV0b2ZvY3VzIHRoaXMgeCA9IEp4Lk9iai5zZXQgdGhpcyBcImF1dG9mb2N1c1wiIEp4LkVuY29kZXIuYm9vbCB4XG4gIGxldCBnZXRfb2Zmc2V0X3dpZHRoIHRoaXMgPSBKeC5PYmouZ2V0IHRoaXMgXCJvZmZzZXRXaWR0aFwiIEp4LkRlY29kZXIuaW50XG4gIGxldCBnZXRfY2xpZW50X3dpZHRoIHRoaXMgPSBKeC5PYmouZ2V0IHRoaXMgXCJjbGllbnRXaWR0aFwiIEp4LkRlY29kZXIuaW50XG4gIGxldCBnZXRfc2Nyb2xsX3dpZHRoIHRoaXMgPSBKeC5PYmouZ2V0IHRoaXMgXCJzY3JvbGxXaWR0aFwiIEp4LkRlY29kZXIuaW50XG4gIGxldCBnZXRfY2hlY2tlZCB0aGlzID0gSnguT2JqLmdldCB0aGlzIFwiY2hlY2tlZFwiIEp4LkRlY29kZXIuYm9vbFxuICBsZXQgc2V0X2NoZWNrZWQgdGhpcyB4ID0gSnguT2JqLnNldCB0aGlzIFwiY2hlY2tlZFwiIEp4LkVuY29kZXIuYm9vbCB4XG4gIGxldCBnZXRfZmlsZXMgdGhpcyA9IEp4Lk9iai5nZXQgdGhpcyBcImZpbGVzXCIgSnguRGVjb2Rlci5hcnJheV9qc1xuZW5kXG5cbm1vZHVsZSBUZXh0ID0gc3RydWN0XG4gIHR5cGUgdCA9IEp4LnRcblxuICBsZXQgdCA9IEp4Lmdsb2JhbCBcIlRleHRcIlxuICBsZXQgdG9fY2hhcmFjdGVyX2RhdGEgdCA9IHRcbmVuZFxuXG5tb2R1bGUgQ29tbWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPSBKeC50XG5cbiAgbGV0IHQgPSBKeC5nbG9iYWwgXCJDb21tZW50XCJcbiAgbGV0IHRvX2NoYXJhY3Rlcl9kYXRhIHQgPSB0XG4gIGxldCBtYWtlIGRhdGEgPSBKeC5PYmoubmV3MSB0IEp4LkVuY29kZXIuc3RyaW5nIGRhdGFcbmVuZFxuXG5tb2R1bGUgRnJhZ21lbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSngudFxuXG4gIGxldCB0ID0gSnguZ2xvYmFsIFwiRG9jdW1lbnRGcmFnbWVudFwiXG4gIGxldCB0b19ub2RlIHQgPSB0XG4gIGxldCBtYWtlICgpID0gSnguT2JqLm5ldzAgdFxuXG4gIGxldCByZXBsYWNlX2NoaWxkcmVuIHRoaXMgY2hpbGRyZW4gPVxuICAgIEp4Lk9iai5jYWxsX2pzX3VuaXQgdGhpcyBcInJlcGxhY2VDaGlsZHJlblwiIGNoaWxkcmVuXG5lbmRcblxubW9kdWxlIERvY3VtZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IEp4LnRcblxuICBsZXQgdGhpcyA9IEdsb2JhbC5kb2N1bWVudFxuICBsZXQgdG9fbm9kZSB0aGlzID0gdGhpc1xuICBsZXQgZ2V0X2Nvb2tpZXMgKCkgPSBKeC5PYmouZ2V0IEdsb2JhbC5kb2N1bWVudCBcImNvb2tpZVwiIEp4LkRlY29kZXIuc3RyaW5nXG4gIGxldCBzZXRfY29va2llcyBjb29raWVzID0gSnguT2JqLnNldCB0aGlzIFwiY29va2llXCIgSnguRW5jb2Rlci5zdHJpbmcgY29va2llc1xuXG4gIGxldCBnZXRfZWxlbWVudF9ieV9pZCBpZCA9XG4gICAgSnguRGVjb2Rlci5udWxsYWJsZVxuICAgICAgKGZ1biB4IC0+IHgpXG4gICAgICAoSnguT2JqLmNhbGxfanMgR2xvYmFsLmRvY3VtZW50IFwiZ2V0RWxlbWVudEJ5SWRcIlxuICAgICAgICAgW3wgSnguRW5jb2Rlci5zdHJpbmcgaWQgfF1cbiAgICAgIClcblxuICBsZXQgcXVlcnlfc2VsZWN0b3Igc2VsZWN0b3IgPVxuICAgIEp4Lk9iai5jYWxsMSBHbG9iYWwuZG9jdW1lbnQgXCJxdWVyeVNlbGVjdG9yXCJcbiAgICAgIH5yZXR1cm46SnguRGVjb2Rlci4obnVsbGFibGUganMpXG4gICAgICBKeC5FbmNvZGVyLnN0cmluZyBzZWxlY3RvclxuXG4gIGxldCBxdWVyeSBzZWxlY3RvciA9XG4gICAgSnguT2JqLmNhbGwxIEdsb2JhbC5kb2N1bWVudCBcInF1ZXJ5U2VsZWN0b3JcIlxuICAgICAgfnJldHVybjpKeC5EZWNvZGVyLihudWxsYWJsZSBqcylcbiAgICAgIEp4LkVuY29kZXIuc3RyaW5nIHNlbGVjdG9yXG5cbiAgbGV0IHF1ZXJ5X3NlbGVjdG9yX2FsbCBfc2VsZWN0b3IgPSBmYWlsd2l0aCBcInRvZG9cIlxuXG4gIGxldCBjcmVhdGVfdGV4dF9ub2RlIHRleHQgPVxuICAgIEp4Lk9iai5jYWxsX2pzIEdsb2JhbC5kb2N1bWVudCBcImNyZWF0ZVRleHROb2RlXCIgW3wgSnguRW5jb2Rlci5zdHJpbmcgdGV4dCB8XVxuXG4gIGxldCBjcmVhdGVfZWxlbWVudCBuYW1lID1cbiAgICBKeC5PYmouY2FsbF9qcyBHbG9iYWwuZG9jdW1lbnQgXCJjcmVhdGVFbGVtZW50XCIgW3wgSnguRW5jb2Rlci5zdHJpbmcgbmFtZSB8XVxuXG4gIGxldCBhY3RpdmVfZWxlbWVudCB0aGlzID0gSnguT2JqLmdldCB0aGlzIFwiYWN0aXZlRWxlbWVudFwiIEp4LkRlY29kZXIuanNcbmVuZFxuXG5tb2R1bGUgTG9jYXRpb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSngudFxuXG4gIGxldCBoYXNoIHQgPSBKeC5PYmouZ2V0IHQgXCJoYXNoXCIgSnguRGVjb2Rlci5zdHJpbmdcbiAgbGV0IHNldF9oYXNoIHQgdiA9IEp4Lk9iai5zZXQgdCBcImhhc2hcIiBKeC5FbmNvZGVyLnN0cmluZyB2XG4gIGxldCBocmVmIHQgPSBKeC5PYmouZ2V0IHQgXCJocmVmXCIgSnguRGVjb2Rlci5zdHJpbmdcbiAgbGV0IHNldF9ocmVmIHQgdiA9IEp4Lk9iai5zZXQgdCBcImhyZWZcIiBKeC5FbmNvZGVyLnN0cmluZyB2XG4gIGxldCByZXBsYWNlIHQgdXJsID0gSnguT2JqLmNhbGwxX3VuaXQgdCBcInJlcGxhY2VcIiBKeC5FbmNvZGVyLnN0cmluZyB1cmxcbiAgbGV0IGFzc2lnbiB0IHVybCA9IEp4Lk9iai5jYWxsMV91bml0IHQgXCJhc3NpZ25cIiBKeC5FbmNvZGVyLnN0cmluZyB1cmxcbiAgbGV0IHJlbG9hZCB0ID0gSnguT2JqLmNhbGwwIHQgXCJyZWxvYWRcIiB+cmV0dXJuOkp4LkRlY29kZXIuYW55ICgpXG4gIGxldCBob3N0bmFtZSB0ID0gSnguT2JqLmdldCB0IFwiaG9zdG5hbWVcIiBKeC5EZWNvZGVyLnN0cmluZ1xuICBsZXQgc2VhcmNoIHQgPSBKeC5PYmouZ2V0IHQgXCJzZWFyY2hcIiBKeC5EZWNvZGVyLnN0cmluZ1xuZW5kXG5cbm1vZHVsZSBXaW5kb3cgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSngudFxuXG4gIGxldCB0aGlzID0gR2xvYmFsLndpbmRvd1xuICBsZXQgdG9fZXZlbnRfdGFyZ2V0IHQgPSB0XG4gIGxldCBsb2NhdGlvbiA9IEp4Lk9iai5nZXQgdGhpcyBcImxvY2F0aW9uXCIgSnguRGVjb2Rlci5qc1xuXG4gIGxldCBzZXRfaW50ZXJ2YWwgZiBtcyA9XG4gICAgSnguT2JqLmNhbGwyIEdsb2JhbC53aW5kb3cgXCJzZXRJbnRlcnZhbFwiIH5yZXR1cm46SnguRGVjb2Rlci5pbnRcbiAgICAgIEp4LkVuY29kZXIuZnVuMSBKeC5FbmNvZGVyLmludCBmIG1zXG5cbiAgbGV0IHNldF90aW1lb3V0IGYgbXMgPVxuICAgIEp4Lk9iai5jYWxsMiBHbG9iYWwud2luZG93IFwic2V0VGltZW91dFwiIH5yZXR1cm46SnguRGVjb2Rlci5pbnRcbiAgICAgIEp4LkVuY29kZXIuZnVuMSBKeC5FbmNvZGVyLmludCBmIG1zXG5cbiAgbGV0IGNsZWFyX3RpbWVvdXQgaWQgPVxuICAgIEp4Lk9iai5jYWxsMV91bml0IEdsb2JhbC53aW5kb3cgXCJjbGVhclRpbWVvdXRcIiBKeC5FbmNvZGVyLmludCBpZFxuXG4gIGxldCBhbGVydCB0ZXh0ID0gSnguT2JqLmNhbGwxX3VuaXQgdGhpcyBcImFsZXJ0XCIgSnguRW5jb2Rlci5zdHJpbmcgdGV4dFxuXG4gIGxldCBjb25maXJtIHRleHQgPVxuICAgIEp4Lk9iai5jYWxsMSB0aGlzIFwiY29uZmlybVwiIH5yZXR1cm46SnguRGVjb2Rlci5ib29sIEp4LkVuY29kZXIuc3RyaW5nIHRleHRcblxuICBsZXQgcHJvbXB0IHRleHQgPVxuICAgIEp4Lk9iai5jYWxsMSB0aGlzIFwicHJvbXB0XCJcbiAgICAgIH5yZXR1cm46SnguRGVjb2Rlci4obnVsbGFibGUgc3RyaW5nKVxuICAgICAgSnguRW5jb2Rlci5zdHJpbmcgdGV4dFxuXG4gICgqIEV2ZW50IGhhbmRsaW5nICopXG5cbiAgbGV0IGJpbmQgZXZlbnRfdHlwZSBmID1cbiAgICBKeC5PYmouY2FsbDJfdW5pdCB0aGlzIFwiYWRkRXZlbnRMaXN0ZW5lclwiIEp4LkVuY29kZXIuanMgSnguRW5jb2Rlci5mdW4xXG4gICAgICBldmVudF90eXBlIGZcblxuICBsZXQgdW5iaW5kIGV2ZW50X3R5cGUgPVxuICAgIEp4Lk9iai5jYWxsX2pzX3VuaXQgdGhpcyBcInJlbW92ZUV2ZW50TGlzdGVyXCIgW3wgSnguRW5jb2Rlci5qcyBldmVudF90eXBlIHxdXG5lbmRcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImNhbWxfY2FsbDMiLCJhMiIsImNhbWxfY2FsbDQiLCJhMyIsImNhbWxfY2FsbDUiLCJhNCIsImNhbWxfY2FsbDYiLCJhNSIsImNhbWxfY2FsbDciLCJhNiIsImdsb2JhbF9kYXRhIiwiSngiLCJTdGR3ZWJfU3Rkd2ViX2dsb2JhbCIsIlN0ZGxpYiIsIlN0ZGxpYl9MaXN0IiwiU3Rkd2ViX1N0ZHdlYl9wcm9taXNlIiwidGV4dCIsInRoaXMkIiwibGVuZ3RoIiwiY3N0X3NldFByb3BlcnR5Iiwic2V0IiwibmFtZSIsInZhbHVlIiwidW5zZXQiLCJ0YXJnZXQiLCJnZXQiLCJ0b19zdHJpbmciLCJtYWtlIiwidCIsInByZXZlbnRfZGVmYXVsdCIsImNoYW5nZSIsInJlc2l6ZSIsImNzdF9jbGljayIsImNsaWNrIiwiZGJsY2xpY2siLCJtb3VzZW1vdmUiLCJwYWdlX3giLCJwYWdlX3kiLCJrZXlkb3duIiwia2V5IiwiY29kZSIsImJlZm9yZV9pbnB1dCIsImlucHV0IiwiY2FuY2VsIiwiZGF0YSIsImZ1bGxzY3JlZW5fY2hhbmdlIiwiZnVsbHNjcmVlbl9lcnJvciIsInBvcHN0YXRlIiwiaGFzaGNoYW5nZSIsImNzdF9ibHVyIiwiYmx1ciIsImZvY3VzaW4iLCJmb2N1c291dCIsInN1Ym1pdCIsInRvZ2dsZSIsImFkZCIsImNzdF9yZW1vdmUiLCJyZW1vdmUiLCJzaXplIiwidHlwZSIsImxhc3RfbW9kaWZpZWQiLCJ0b19ibG9iIiwidG9fanMiLCJwYXJlbnQiLCJmaXJzdF9jaGlsZCIsImxhc3RfY2hpbGQiLCJjc3RfbmV4dFNpYmxpbmciLCJuZXh0X3NpYmxpbmciLCJuZXh0X3NpYmxpbmdfanMiLCJpdGVyX2NoaWxkcmVuIiwibm9kZV9saXN0IiwiY2hpbGRyZW4iLCJhY2MiLCJjIiwiY2xvbmVfbm9kZSIsImRlZXAiLCJpc19zYW1lX25vZGUiLCJvdGhlciIsInJlcGxhY2Vfd2l0aCIsImFwcGVuZF90ZXh0IiwiYXBwZW5kX2NoaWxkIiwicmVtb3ZlX2NoaWxkIiwiaW5zZXJ0X2JlZm9yZSIsInJlZmVyZW5jZSIsIm5ld19ub2RlIiwiaW5zZXJ0X2FmdGVyIiwicmVwbGFjZV9jaGlsZCIsImNzdF9yZXBsYWNlQ2hpbGRyZW4iLCJyZXBsYWNlX2NoaWxkcmVuIiwiaW5zZXJ0X2FkamFjZW50X2VsZW1lbnQiLCJwb3NpdGlvbiIsIm5vZGUiLCJpbnNlcnRfYmVmb3JlX2JlZ2luIiwiaW5zZXJ0X2FmdGVyX2JlZ2luIiwiaW5zZXJ0X2JlZm9yZV9lbmQiLCJpbnNlcnRfYWZ0ZXJfZW5kIiwiY3N0X3RleHRDb250ZW50Iiwic2V0X3RleHRfY29udGVudCIsImdldF90ZXh0X2NvbnRlbnQiLCJzZXRfaW5uZXJfaHRtbCIsImNzdF9hZGRFdmVudExpc3RlbmVyIiwiYmluZCIsImV2ZW50X3R5cGUiLCJ1bmJpbmQiLCJmb2N1cyIsImhpZGVfcG9wb3ZlciIsInNob3dfcG9wb3ZlciIsInRvZ2dsZV9wb3BvdmVyIiwibWF0Y2hlcyIsInNlbGVjdG9ycyIsImNsb3Nlc3QiLCJzZWxlY3QiLCJzZXRfYXR0ciIsImdldF9hdHRyIiwidW5zZXRfYXR0ciIsImdldF9jbGFzc19saXN0IiwiY3N0X3N0eWxlIiwic2V0X3N0eWxlIiwieCIsImdldF9zdHlsZSIsImNzdCIsInJlc2V0X3N0eWxlIiwiY3N0X2hyZWYiLCJnZXRfaHJlZiIsInNldF9ocmVmIiwiY3N0X3ZhbHVlIiwiZ2V0X3ZhbHVlIiwic2V0X3ZhbHVlIiwicmVzZXRfdmFsdWUiLCJzZXRfZGlzYWJsZWQiLCJzZXRfYXV0b2ZvY3VzIiwiZ2V0X29mZnNldF93aWR0aCIsImdldF9jbGllbnRfd2lkdGgiLCJnZXRfc2Nyb2xsX3dpZHRoIiwiY3N0X2NoZWNrZWQiLCJnZXRfY2hlY2tlZCIsInNldF9jaGVja2VkIiwiZ2V0X2ZpbGVzIiwidG9fY2hhcmFjdGVyX2RhdGEiLCJ0b19ub2RlIiwicGFyYW0iLCJjc3RfY29va2llIiwiZ2V0X2Nvb2tpZXMiLCJzZXRfY29va2llcyIsImNvb2tpZXMiLCJnZXRfZWxlbWVudF9ieV9pZCIsImlkIiwiY3N0X3F1ZXJ5U2VsZWN0b3IiLCJxdWVyeV9zZWxlY3RvciIsInNlbGVjdG9yIiwicXVlcnkiLCJxdWVyeV9zZWxlY3Rvcl9hbGwiLCJjcmVhdGVfdGV4dF9ub2RlIiwiY3JlYXRlX2VsZW1lbnQiLCJhY3RpdmVfZWxlbWVudCIsImNzdF9oYXNoIiwiaGFzaCIsInNldF9oYXNoIiwidiIsImhyZWYiLCJyZXBsYWNlIiwidXJsIiwiYXNzaWduIiwicmVsb2FkIiwiaG9zdG5hbWUiLCJzZWFyY2giLCJ0b19ldmVudF90YXJnZXQiLCJsb2NhdGlvbiIsInNldF9pbnRlcnZhbCIsIm1zIiwic2V0X3RpbWVvdXQiLCJjbGVhcl90aW1lb3V0IiwiYWxlcnQiLCJjb25maXJtIiwicHJvbXB0Il0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUosR0FBQUMsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFOLEdBQUFDLElBQUFFLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBUixHQUFBQyxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQVYsR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFaLEdBQUFDLElBQUFFLElBQUFFLElBQUFFLElBQUFFLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxLQUFBO0FBQUEsSUFBQUMsdUJBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLHdCQUFBO0FBQUEsWUFBQUMsS0FBQUM7QUFBQUEsSUNha0IsMERBQTJDO0FBQUE7QUFBQSxZQUFBQyxPQUFBRDtBQUFBQSxJQUN6Qyx5REFBdUM7QUFBQTtBQUFBLE9BQUFFLGtCRGQzRDtBQUFBLFlBQUFDLElB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QUE7QUFBQTtBQUFBLGVBQ2M7QUFBQTtBQUFBLFlBQUEyRyxTQUFBRDtBQUFBQSxRQUFBLElBR2tDO0FBQUEsSUFBd0IsNkRBQUc7QUFBQTtBQUFBLEdBOUJ0QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFRHpXekQiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0MzcwOCwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGR3ZWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL2hlbGl4L3N0ZHdlYi9TdGR3ZWJfd2Vic29ja2V0Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwib3BlbiBzdHJ1Y3RcbiAgbW9kdWxlIEdsb2JhbCA9IFN0ZHdlYl9nbG9iYWxcbiAgbW9kdWxlIEV2ZW50ID0gU3Rkd2ViX2RvbS5FdmVudFxuZW5kXG5cbnR5cGUgdCA9IEp4LnRcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIGxldCBkYXRhIHQgPSBKeC5PYmouZ2V0IHQgXCJkYXRhXCIgSnguRGVjb2Rlci5zdHJpbmdcblxuICAoKiBHZW5lcmljIGV2ZW50cyAqKVxuXG4gIGxldCBvcGVuJyA9IEV2ZW50Lk5hbWUubWFrZSBcIm9wZW5cIlxuICBsZXQgbWVzc2FnZSA9IEV2ZW50Lk5hbWUubWFrZSBcIm1lc3NhZ2VcIlxuICBsZXQgY2xvc2UgPSBFdmVudC5OYW1lLm1ha2UgXCJjbG9zZVwiXG4gIGxldCBlcnJvciA9IEV2ZW50Lk5hbWUubWFrZSBcImVycm9yXCJcbmVuZFxuXG5sZXQgdCA9IEp4Lmdsb2JhbCBcIldlYlNvY2tldFwiXG5sZXQgbWFrZSB1cmwgPSBKeC5PYmoubmV3MSB0IEp4LkVuY29kZXIuc3RyaW5nIHVybFxuXG5sZXQgYmluZCB0aGlzIGV2ZW50X3R5cGUgZiA9XG4gIEp4Lk9iai5jYWxsMl91bml0IHRoaXMgXCJhZGRFdmVudExpc3RlbmVyXCIgSnguRW5jb2Rlci5qcyBKeC5FbmNvZGVyLmZ1bjFcbiAgICBldmVudF90eXBlIGZcblxubGV0IHVuYmluZCB0aGlzIGV2ZW50X3R5cGUgPVxuICBKeC5PYmouY2FsbF9qc191bml0IHRoaXMgXCJyZW1vdmVFdmVudExpc3RlclwiIFt8IEp4LkVuY29kZXIuanMgZXZlbnRfdHlwZSB8XVxuXG4oKiBUT0RPOiBwYXJhbWV0ZXJzIGBjb2RlYCBhbmQgYHJlYXNvbmAgbm90IGltcGxlbWVudGVkIHlldCAqKVxubGV0IGNsb3NlID9jb2RlID9yZWFzb24gdCA9XG4gIEp4Lk9iai5jYWxsMl91bml0IHQgXCJjbG9zZVwiXG4gICAgKEp4LkVuY29kZXIub3B0aW9uYWwgSnguRW5jb2Rlci5pbnQpXG4gICAgKEp4LkVuY29kZXIub3B0aW9uYWwgSnguRW5jb2Rlci5zdHJpbmcpXG4gICAgY29kZSByZWFzb25cblxubGV0IHNlbmQgdCBkYXRhID0gSnguT2JqLmNhbGwxX3VuaXQgdCBcInNlbmRcIiBKeC5FbmNvZGVyLnN0cmluZyBkYXRhXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwzIiwiYTEiLCJhMiIsImNhbWxfY2FsbDQiLCJhMyIsImNhbWxfY2FsbDYiLCJhNCIsImE1IiwiZ2xvYmFsX2RhdGEiLCJKeCIsIlN0ZHdlYl9TdGR3ZWJfZG9tIiwiZGF0YSIsInQiLCJvcGVuIiwibWVzc2FnZSIsImNzdF9jbG9zZSIsImNsb3NlIiwiZXJyb3IiLCJtYWtlIiwidXJsIiwiYmluZCIsInRoaXMkIiwiZXZlbnRfdHlwZSIsInVuYmluZCIsImNvZGUiLCJyZWFzb24iLCJzZW5kIl0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRSxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUwsR0FBQUMsSUFBQUUsSUFBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFQLEdBQUFDLElBQUFFLElBQUFDLElBQUFFLElBQUFFLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxLQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxZQUFBQyxLQUFBQyxHQ1FlLG1EQUFxQztBQUFBO0FBQUEsSUFBQUMsT0FJdEM7QUFBQSxJQUFBQyxVQUNFO0FBQUEsSUFBQUMsWURiaEI7QUFBQSxJQUFBQyxRQ2NjO0FBQUEsSUFBQUMsUUFDQTtBQUFBLElBQUFMLElBR047QUFBQSxZQUFBTSxLQUFBQyxLQUNPLGdEQUFtQztBQUFBLFlBQUFDLEtBQUFDLE9BQUFDLFlBQUF4QjtBQUFBQSxJQUdoRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGVBQ2M7QUFBQTtBQUFBLFlBQUF5QixPQUFBRixPQUFBQztBQUFBQSxRQUFBLElBR2tDO0FBQUEsSUFBd0IsNERBQUc7QUFBQTtBQUFBLFlBQUFOLFFBQUFRLE1BQUFDLFFBQUFiO0FBQUFBO0FBQUFBLEtBQUEsSUFNekU7QUFBQSxTQURBO0FBQUEsSUFBb0MsK0RBRXpCO0FBQUE7QUFBQSxZQUFBYyxLQUFBZCxHQUFBRDtBQUFBQSxJQUVHLHlEQUFpRDtBQUFBO0FBQUEsR0FqQnRDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVEbEI3QiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQzNzg1LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZHdlYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvaGVsaXgvc3Rkd2ViL1N0ZHdlYl91cmxfc2VhcmNoX3BhcmFtcy5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIm9wZW4gc3RydWN0XG4gIG1vZHVsZSBHbG9iYWwgPSBTdGR3ZWJfZ2xvYmFsXG5lbmRcblxudHlwZSB0ID0gSngudFxuXG5sZXQgdCA9IEp4Lmdsb2JhbCBcIlVSTFNlYXJjaFBhcmFtc1wiXG5sZXQgb2Zfc3RyaW5nIHMgPSBKeC5PYmoubmV3MSB0IEp4LkVuY29kZXIuc3RyaW5nIHNcbmxldCBlbXB0eSAoKSA9IEp4Lk9iai5uZXcwIHRcblxubGV0IG1ha2UgaXRlbXMgPVxuICBKeC5PYmoubmV3MSB0IEp4LkVuY29kZXIub2JqXG4gICAgKExpc3QubWFwIChmdW4gKGssIHYpIC0+IChrLCBKeC5FbmNvZGVyLnN0cmluZyB2KSkgaXRlbXMpXG5cbmxldCBnZXQgdCBwYXJhbSA9XG4gIEp4Lk9iai5jYWxsMSB0IFwiZ2V0XCJcbiAgICB+cmV0dXJuOkp4LkRlY29kZXIuKG51bGxhYmxlIHN0cmluZylcbiAgICBKeC5FbmNvZGVyLnN0cmluZyBwYXJhbVxuXG5sZXQgZGVsZXRlIHQgP3ZhbHVlIHBhcmFtID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCB2YWx1ZSB3aXRoXG4gICAgfCBOb25lIC0+IEp4LnVuZGVmaW5lZFxuICAgIHwgU29tZSB2YWx1ZSAtPiBKeC5lbmNvZGUgSnguRW5jb2Rlci5zdHJpbmcgdmFsdWVcbiAgaW5cbiAgSnguT2JqLmNhbGwyX3VuaXQgdCBcImRlbGV0ZVwiIEp4LkVuY29kZXIuc3RyaW5nIEp4LkVuY29kZXIuYW55IHBhcmFtIHZhbHVlXG5cbmxldCBoYXMgdCA/dmFsdWUgdGV4dCA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdmFsdWUgd2l0aFxuICAgIHwgTm9uZSAtPiBKeC51bmRlZmluZWRcbiAgICB8IFNvbWUgdmFsdWUgLT4gSnguZW5jb2RlIEp4LkVuY29kZXIuc3RyaW5nIHZhbHVlXG4gIGluXG4gIEp4Lk9iai5jYWxsMiB0IFwiaGFzXCIgfnJldHVybjpKeC5EZWNvZGVyLmJvb2wgSnguRW5jb2Rlci5zdHJpbmcgSnguRW5jb2Rlci5hbnlcbiAgICB0ZXh0IHZhbHVlXG5cbmxldCB0b19zdHJpbmcgdCA9IEp4Lk9iai5jYWxsMCB0IFwidG9TdHJpbmdcIiB+cmV0dXJuOkp4LkRlY29kZXIuc3RyaW5nICgpXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJjYW1sX2NhbGwzIiwiYTIiLCJjYW1sX2NhbGw0IiwiYTMiLCJjYW1sX2NhbGw1IiwiYTQiLCJjYW1sX2NhbGw2IiwiYTUiLCJjYW1sX2NhbGw3IiwiYTYiLCJnbG9iYWxfZGF0YSIsIkp4IiwiU3RkbGliX0xpc3QiLCJ0Iiwib2Zfc3RyaW5nIiwicyIsImVtcHR5IiwicGFyYW0iLCJtYWtlIiwiaXRlbXMiLCJ2IiwiayIsImdldCIsImRlbGV0ZSQiLCJ2YWx1ZSIsImhhcyIsInRleHQiLCJ0b19zdHJpbmciXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQU4sR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFSLEdBQUFDLElBQUFFLElBQUFFLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBVixHQUFBQyxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQVosR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLEtBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsSUNNUTtBQUFBLFlBQUFDLFVBQUFDLEdBQ1UsOENBQWlDO0FBQUEsWUFBQUMsTUFBQUMsT0FDcEMsZ0NBQWE7QUFBQSxZQUFBQyxLQUFBQztBQUFBQTtBQUFBQSxLQUFBO0FBQUEsT0FJeEI7QUFBQTtBQUFBLGtCQUFBRjtBQUFBQSxjQUFBRyxJQUFVLFVBQUFDLElBQUE7QUFBQSxVQUFtQix1Q0FBbUI7QUFBQSxTQUFFO0FBQUE7QUFBQSxJQUFPO0FBQUE7QUFBQSxZQUFBQyxJQUFBVCxHQUFBSTtBQUFBQSxRQUFBLElBSXJDO0FBQUEsSUFBZSxvREFDWjtBQUFBO0FBQUEsWUFBQU0sUUFBQVYsR0FBQVcsT0FBQVA7QUFBQUEsSUFHekI7QUFBQSxTQUFBTyxVQUFBLFVBQUFBLFVBR2tCO0FBQUE7QUFBQSxTQUFBQSxVQUROO0FBQUEsSUFHWjtBQUFBLDRFQUF5RTtBQUFBO0FBQUEsWUFBQUMsSUFBQVosR0FBQVcsT0FBQUU7QUFBQUEsSUFHekU7QUFBQSxTQUFBRixVQUFBLFVBQUFBLFVBR2tCO0FBQUE7QUFBQSxTQUFBQSxVQUROO0FBQUEsSUFHWjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEscUJBQ1k7QUFBQTtBQUFBLFlBQUFHLFVBQUFkO0FBQUFBLElBRUksMERBQXNEO0FBQUE7QUFBQSxHQTlCckM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVETm5DIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDM4ODMsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rkd2ViLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9oZWxpeC9zdGR3ZWIvU3Rkd2ViX3N0b3JhZ2UubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCJ0eXBlIHQgPSBKeC50XG5cbmxldCBsb2NhbCA9IEp4Lmdsb2JhbCBcImxvY2FsU3RvcmFnZVwiXG5cbmxldCBnZXQgdCBuYW1lID1cbiAgSnguT2JqLmNhbGwxIHQgXCJnZXRJdGVtXCJcbiAgICB+cmV0dXJuOkp4LkRlY29kZXIuKG51bGxhYmxlIHN0cmluZylcbiAgICBKeC5FbmNvZGVyLnN0cmluZyBuYW1lXG5cbmxldCBzZXQgdCBuYW1lIHZhbHVlID1cbiAgSnguT2JqLmNhbGwyX3VuaXQgdCBcInNldEl0ZW1cIiBKeC5FbmNvZGVyLnN0cmluZyBKeC5FbmNvZGVyLnN0cmluZyBuYW1lIHZhbHVlXG5cbmxldCBkZWwgdCBuYW1lID0gSnguT2JqLmNhbGwxX3VuaXQgdCBcInJlbW92ZUl0ZW1cIiBKeC5FbmNvZGVyLnN0cmluZyBuYW1lXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGw0IiwiYTEiLCJhMiIsImEzIiwiY2FtbF9jYWxsNSIsImE0IiwiY2FtbF9jYWxsNiIsImE1IiwiSngiLCJsb2NhbCIsImdldCIsInQiLCJuYW1lIiwic2V0IiwidmFsdWUiLCJkZWwiXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFLElBQUFDLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBTixHQUFBQyxJQUFBRSxJQUFBQyxJQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQVIsR0FBQUMsSUFBQUUsSUFBQUMsSUFBQUMsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsS0FBQTtBQUFBLElBQUFDLFFDRVk7QUFBQSxZQUFBQyxJQUFBQyxHQUFBQztBQUFBQSxRQUFBLElBSVk7QUFBQSxJQUFlLHVEQUNiO0FBQUE7QUFBQSxZQUFBQyxJQUFBRixHQUFBQyxNQUFBRTtBQUFBQSxJQUd4QjtBQUFBLHlFQUE0RTtBQUFBO0FBQUEsWUFBQUMsSUFBQUosR0FBQUM7QUFBQUEsSUFFN0QsK0RBQXVEO0FBQUE7QUFBQSxHQVZwQztBQUFBO0FBQUE7QUFBQSxFREZwQyIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQzOTI5LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZHdlYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvaGVsaXgvc3Rkd2ViL1N0ZHdlYl9vYmplY3QubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCJ0eXBlIHQgPSBKeC50XG5cbmxldCB0ID0gSnguZ2xvYmFsIFwiT2JqZWN0XCJcblxubGV0IGZyb21fZW50cmllcyA9XG4gIEp4Lk9iai5jYWxsMSB0IFwiZnJvbUVudHJpZXNcIiB+cmV0dXJuOkp4LkRlY29kZXIuanMgSnguRW5jb2Rlci5qc1xuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsNCIsImExIiwiYTIiLCJhMyIsIkp4IiwidCIsImZyb21fZW50cmllcyJdLCJtYXBwaW5ncyI6Ik9BQUFBLFVBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUUsSUFBQUMsSUFBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsS0FBQTtBQUFBLElBQUFDLElDRVE7QUFBQSxJQUFBQztBQUFBQSxNQUdOO0FBQUEsR0FBZ0U7QUFBQTtBQUFBO0FBQUEsRURMbEUiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0Mzk1NiwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGR3ZWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL2hlbGl4L3N0ZHdlYi9TdGR3ZWJfaXRlcmF0b3IubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCJ0eXBlICdhIHQgPSBKeC50XG50eXBlICdhIG5leHQgPSBKeC50XG5cbmxldCBuZXh0IHQgPSBKeC5PYmouY2FsbF9qcyB0IFwibmV4dFwiIFt8fF1cbmxldCBuZXh0X2lzX2RvbmUgbmV4dCA9IEp4Lk9iai5nZXQgbmV4dCBcImRvbmVcIiBKeC5EZWNvZGVyLmJvb2xcbmxldCBuZXh0X3ZhbHVlIG5leHQgPSBKeC5PYmouZ2V0IG5leHQgXCJ2YWx1ZVwiIEp4LkRlY29kZXIuYW55XG5cbmxldCBpdGVyIGYgdCA9XG4gIGxldCBpc19kb25lID0gcmVmIGZhbHNlIGluXG4gIHdoaWxlIG5vdCAhaXNfZG9uZSBkb1xuICAgIGxldCBuID0gbmV4dCB0IGluXG4gICAgaWYgbmV4dF9pc19kb25lIG4gdGhlbiBpc19kb25lIDo9IHRydWVcbiAgICBlbHNlXG4gICAgICBsZXQgdiA9IG5leHRfdmFsdWUgbiBpblxuICAgICAgZiB2XG4gIGRvbmVcblxubGV0IHVuc2FmZV9vZl9qcyBqcyA9IGpzXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwzIiwiYTEiLCJhMiIsIkp4IiwibmV4dCIsInQiLCJuZXh0X2lzX2RvbmUiLCJuZXh0X3ZhbHVlIiwiaXRlciIsImlzX2RvbmUiLCJuIiwidiIsInVuc2FmZV9vZl9qcyIsImpzIl0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRSxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsT0FBQUMsS0FBQTtBQUFBLFlBQUFDLEtBQUFDLEdDR2EsNkNBQTRCO0FBQUEsWUFBQUMsYUFBQUY7QUFBQUEsSUFDakIsc0RBQXNDO0FBQUE7QUFBQSxZQUFBRyxXQUFBSDtBQUFBQSxJQUN4Qyx3REFBc0M7QUFBQTtBQUFBLFlBQUFJLEtBQUFWLEdBQUFPO0FBQUFBLFFBQUFJLFVBSTFEO0FBQUE7QUFBQTtBQUFBLFNBQUFDLElBQ1U7QUFBQSxLQUNMO0FBQUEsTUFBb0I7QUFBQSxjQUFBQyxJQUViLGVBQ1I7QUFBQTtBQUFBLEdBQ0E7QUFBQSxZQUFBQyxhQUFBQyxJQUVnQixVQUFFO0FBQUEsR0RqQnhCIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDM5OTksImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rkd2ViLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9oZWxpeC9zdGR3ZWIvU3Rkd2ViX21hcC5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIm1vZHVsZSBJdGVyYXRvciA9IFN0ZHdlYl9pdGVyYXRvclxuXG50eXBlICdhIHQgPSBKeC50XG5cbmxldCB0ID0gSnguZ2xvYmFsIFwiTWFwXCJcbmxldCB0b19qcyB0ID0gdFxubGV0IG9mX2pzIHQgPSB0XG5sZXQgbWFrZSAoKSA9IEp4Lk9iai5uZXcwIHRcbmxldCBjbGVhciB0ID0gSnguT2JqLmNhbGxfanNfdW5pdCB0IFwiY2xlYXJcIiBbfHxdXG5sZXQgc2V0IHQgayB2ID0gSnguT2JqLmNhbGxfanNfdW5pdCB0IFwic2V0XCIgW3wgazsgSnguRW5jb2Rlci5hbnkgdiB8XVxubGV0IGdldCB0IGsgPSBKeC5EZWNvZGVyLm9wdGlvbmFsIEp4LkRlY29kZXIuYW55IChKeC5PYmouY2FsbF9qcyB0IFwiZ2V0XCIgW3wgayB8XSlcbmxldCBkZWxldGUgdCBrID0gSnguT2JqLmNhbGxfanNfdW5pdCB0IFwiZGVsZXRlXCIgW3wgayB8XVxubGV0IGtleXMgdCA9IEp4Lk9iai5jYWxsX2pzIHQgXCJrZXlzXCIgW3x8XVxubGV0IHNpemUgdCA9IEp4Lk9iai5nZXQgdCBcInNpemVcIiBKeC5EZWNvZGVyLmludFxubGV0IHZhbHVlcyB0ID0gSnguT2JqLmNhbGxfanMgdCBcInZhbHVlc1wiIFt8fF1cblxubGV0IGZpcnN0X2tleSB0ID1cbiAgbGV0IGl0ZXIgPSBrZXlzIHQgaW5cbiAgbGV0IG5leHQgPSBJdGVyYXRvci5uZXh0IGl0ZXIgaW5cbiAgaWYgSXRlcmF0b3IubmV4dF9pc19kb25lIG5leHQgdGhlbiBOb25lIGVsc2UgU29tZSAoSXRlcmF0b3IubmV4dF92YWx1ZSBuZXh0KVxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiZ2xvYmFsX2RhdGEiLCJTdGR3ZWJfU3Rkd2ViX2l0ZXJhdG9yIiwiSngiLCJ0IiwidG9fanMiLCJvZl9qcyIsIm1ha2UiLCJwYXJhbSIsImNsZWFyIiwic2V0IiwiayIsInYiLCJnZXQiLCJkZWxldGUkIiwia2V5cyIsInNpemUiLCJ2YWx1ZXMiLCJmaXJzdF9rZXkiLCJpdGVyIiwibmV4dCJdLCJtYXBwaW5ncyI6Ik9BQUFBLFVBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFKLEdBQUFDLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyx5QkFBQTtBQUFBLElBQUFDLEtBQUE7QUFBQSxJQUFBQyxJQ0lRO0FBQUEsWUFBQUMsTUFBQUQsR0FDTSxTQUFDO0FBQUEsWUFBQUUsTUFBQUYsR0FDRCxTQUFDO0FBQUEsWUFBQUcsS0FBQUMsT0FDRCxnQ0FBYTtBQUFBLFlBQUFDLE1BQUFMLEdBQ2IsOENBQWtDO0FBQUEsWUFBQU0sSUFBQU4sR0FBQU8sR0FBQUM7QUFBQUEsUUFBQSxJQUNFO0FBQUEsSUFBZ0IsMENBQUc7QUFBQTtBQUFBLFlBQUFDLElBQUFULEdBQUFPO0FBQUFBLFFBQUEsSUFDcEI7QUFBQSxJQUFnQztBQUFBO0FBQUEsWUFBQUcsUUFBQVYsR0FBQU8sR0FDaEUsa0RBQXNDO0FBQUEsWUFBQUksS0FBQVgsR0FDMUMsNkNBQTRCO0FBQUEsWUFBQVksS0FBQVosR0FDNUIsbURBQWtDO0FBQUEsWUFBQWEsT0FBQWIsR0FDaEMsK0NBQThCO0FBQUEsWUFBQWMsVUFBQWQ7QUFBQUEsUUFBQWUsT0FHaEMsU0FBQUMsT0FDQTtBQUFBLElBQ1I7QUFBQTtBQUFBLGtCQUErQywyQ0FBMEI7QUFBQTtBQUFBLEdBZnZEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFREp2QiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQ0MDY3LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZHdlYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvaGVsaXgvc3Rkd2ViL1N0ZHdlYl9qc29uLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwidHlwZSB0ID0gSngudFxuXG5sZXQgdCA9IEp4Lmdsb2JhbCBcIkpTT05cIlxuXG5sZXQgc3RyaW5naWZ5ID8ocmVwbGFjZXIgPSBKeC51bmRlZmluZWQpID8oc3BhY2UgPSBKeC51bmRlZmluZWQpIHZhbHVlID1cbiAgSnguT2JqLmNhbGwzIHQgXCJzdHJpbmdpZnlcIiB+cmV0dXJuOkp4LkRlY29kZXIuc3RyaW5nIEp4LkVuY29kZXIuYW55XG4gICAgSnguRW5jb2Rlci5hbnkgSnguRW5jb2Rlci5hbnkgdmFsdWUgcmVwbGFjZXIgc3BhY2VcblxubGV0IHBhcnNlID9yZXZpdmVyIHRleHQgPVxuICBsZXQgcmV2aXZlciA9XG4gICAgbWF0Y2ggcmV2aXZlciB3aXRoXG4gICAgfCBOb25lIC0+IEp4LnVuZGVmaW5lZFxuICAgIHwgU29tZSByZXZpdmVyIC0+IHJldml2ZXJcbiAgaW5cbiAgSnguT2JqLmNhbGwyIHQgXCJwYXJzZVwiIH5yZXR1cm46SnguRGVjb2Rlci5qcyBKeC5FbmNvZGVyLnN0cmluZyBKeC5FbmNvZGVyLmFueVxuICAgIHRleHQgcmV2aXZlclxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsNyIsImExIiwiYTIiLCJhMyIsImE0IiwiYTUiLCJhNiIsImNhbWxfY2FsbDkiLCJhNyIsImE4IiwiSngiLCJ0Iiwic3RyaW5naWZ5Iiwib3B0IiwidmFsdWUiLCJyZXBsYWNlciIsInNwYWNlIiwicGFyc2UiLCJyZXZpdmVyIiwidGV4dCJdLCJtYXBwaW5ncyI6Ik9BQUFBLFVBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUUsSUFBQUMsSUFBQUMsSUFBQUMsSUFBQUMsSUFBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFULEdBQUFDLElBQUFFLElBQUFDLElBQUFDLElBQUFDLElBQUFDLElBQUFDLElBQUFFLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxPQUFBQyxLQUFBLG1DQUFBQyxJQ0VRO0FBQUEsWUFBQUMsVUFBQSxHQUFBQyxLQUFBQztBQUFBQSxRQUFBQyxXQUVNLGtCQUFBQyxRQUFBO0FBQUEsSUFDWjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLG1CQUNvRDtBQUFBO0FBQUEsWUFBQUMsTUFBQUMsU0FBQUM7QUFBQUEsSUFHcEQ7QUFBQSxTQUFBRCxZQUFBLFlBQUFBLFlBR29CO0FBQUE7QUFBQSxTQUFBQSxZQURSO0FBQUEsSUFHWjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsdUJBQ2M7QUFBQTtBQUFBLEdBYlE7QUFBQTtBQUFBO0FBQUEsRURGeEIiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0NDEyNSwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGR3ZWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL2hlbGl4L3N0ZHdlYi9TdGR3ZWJfZm9ybV9kYXRhLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwib3BlbiBzdHJ1Y3RcbiAgbW9kdWxlIERvbSA9IFN0ZHdlYl9kb21cbiAgbW9kdWxlIE9iamVjdCA9IFN0ZHdlYl9vYmplY3RcbmVuZFxuXG50eXBlIHQgPSBKeC50XG5cbmxldCBjb25zdHIgPSBKeC5nbG9iYWwgXCJGb3JtRGF0YVwiXG5cbmxldCBtYWtlID9zdWJtaXR0ZXIgZm9ybSA9XG4gIG1hdGNoIHN1Ym1pdHRlciB3aXRoXG4gIHwgTm9uZSAtPiBKeC5PYmoubmV3MSBjb25zdHIgRG9tLk5vZGUudG9fanMgZm9ybVxuICB8IFNvbWUgc3VibWl0dGVyIC0+XG4gICAgSnguT2JqLm5ldzIgY29uc3RyIERvbS5Ob2RlLnRvX2pzIERvbS5Ob2RlLnRvX2pzIGZvcm0gc3VibWl0dGVyXG5cbmxldCBlbnRyaWVzIHQgPVxuICBsZXQgaXRlcl9qcyA9IEp4Lk9iai5jYWxsX2pzIHQgXCJlbnRyaWVzXCIgW3x8XSBpblxuICBTdGR3ZWJfaXRlcmF0b3IudW5zYWZlX29mX2pzIGl0ZXJfanNcblxubGV0IHRvX2pzb24gPSBPYmplY3QuZnJvbV9lbnRyaWVzXG5sZXQgdG9fanMgdCA9IHRcblxubGV0IHRvX2Fzc29jIHQgPVxuICBsZXQgaXQgPSBlbnRyaWVzIHQgaW5cbiAgbGV0IG91dCA9IHJlZiBbXSBpblxuICBTdGR3ZWJfaXRlcmF0b3IuaXRlclxuICAgIChmdW4geCAtPlxuICAgICAgbGV0IGFyciA9IEp4LkRlY29kZXIuYXJyYXkgSnguRGVjb2Rlci5zdHJpbmcgeCBpblxuICAgICAgbGV0IGl0ZW0gPSAoQXJyYXkuZ2V0IGFyciAwLCBBcnJheS5nZXQgYXJyIDEpIGluXG4gICAgICBvdXQgOj0gaXRlbSA6OiAhb3V0XG4gICAgKVxuICAgIGl0O1xuICBMaXN0LnJldiAhb3V0XG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2hlY2tfYm91bmQiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiY2FtbF9jYWxsNSIsImEzIiwiYTQiLCJnbG9iYWxfZGF0YSIsIkp4IiwiU3Rkd2ViX1N0ZHdlYl9pdGVyYXRvciIsIlN0ZGxpYl9MaXN0IiwiU3Rkd2ViX1N0ZHdlYl9kb20iLCJTdGR3ZWJfU3Rkd2ViX29iamVjdCIsImNvbnN0ciIsIm1ha2UiLCJzdWJtaXR0ZXIiLCJmb3JtIiwiZW50cmllcyIsInQiLCJpdGVyX2pzIiwidG9fanNvbiIsInRvX2pzIiwidG9fYXNzb2MiLCJpdCIsIm91dCIsIngiLCJhcnIiLCJpdGVtIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQU4sR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLEtBQUE7QUFBQSxJQUFBQyx5QkFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLHVCQUFBO0FBQUEsSUFBQUMsU0NPYTtBQUFBLFlBQUFDLEtBQUFDLFdBQUFDO0FBQUFBLElBR1g7QUFBQSxLQUNVLG9FQUV1RDtBQUFBLFFBQUFELGNBSGpFO0FBQUEsSUFHRTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSx5QkFBK0Q7QUFBQTtBQUFBLFlBQUFFLFFBQUFDO0FBQUFBLFFBQUFDLFVBR25EO0FBQUEsSUFDZCxvREFBb0M7QUFBQTtBQUFBLE9BQUFDLFVBVkw7QUFBQSxZQUFBQyxNQUFBSCxHQWFuQixTQUFDO0FBQUEsWUFBQUksU0FBQUo7QUFBQUEsUUFBQUssS0FHSixZQUFBQyxNQUNUO0FBQUEsSUFDQTtBQUFBO0FBQUEsZUFBQUM7QUFBQUE7QUFBQUEsUUFBQUMsTUFFYztBQUFBLFlBQ21CO0FBQUEsUUFBQUMsT0FBakI7QUFBQSxPQUNaO0FBQUE7QUFBQSxNQUFtQjtBQUFBO0FBQUEsSUFFbkIseUNBQ1M7QUFBQTtBQUFBLEdBekJrQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRURQakMiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0NDIwMSwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGR3ZWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL2hlbGl4L3N0ZHdlYi9TdGR3ZWJfZmV0Y2gubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCJvcGVuIHN0cnVjdFxuICBtb2R1bGUgUHJvbWlzZSA9IFN0ZHdlYl9wcm9taXNlXG4gIG1vZHVsZSBGb3JtX2RhdGEgPSBTdGR3ZWJfZm9ybV9kYXRhXG5lbmRcblxuKCogUmVxdWVzdCAqKVxuXG50eXBlIHJlcXVlc3QgPSBKeC50XG5cbm1vZHVsZSBSZXF1ZXN0ID0gc3RydWN0XG4gIHR5cGUgdCA9IHJlcXVlc3RcblxuICBsZXQgdCA9IEp4Lmdsb2JhbCBcIlJlcXVlc3RcIlxuXG4gIGxldCBtYWtlID9vcHRpb25zIHVybCA9XG4gICAgbWF0Y2ggb3B0aW9ucyB3aXRoXG4gICAgfCBTb21lIG9wdGlvbnMgLT4gSnguT2JqLm5ldzIgdCBKeC5FbmNvZGVyLnN0cmluZyBKeC5FbmNvZGVyLmpzIHVybCBvcHRpb25zXG4gICAgfCBOb25lIC0+IEp4Lk9iai5uZXcxIHQgSnguRW5jb2Rlci5zdHJpbmcgdXJsXG5cbiAgbGV0IG9mX2pzID0gSnguRGVjb2Rlci5qc1xuICBsZXQgdG9fanMgPSBKeC5FbmNvZGVyLmpzXG5lbmRcblxubW9kdWxlIEJvZHkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSngudFxuXG4gIGxldCBvZl9zdHJpbmcgPSBKeC5FbmNvZGVyLnN0cmluZ1xuICBsZXQgb2ZfZm9ybV9kYXRhID0gRm9ybV9kYXRhLnRvX2pzXG4gIGxldCB0b19qcyB0ID0gdFxuICBsZXQgdW5zYWZlX29mX2pzIHQgPSB0XG5lbmRcblxuKCogT3B0aW9ucyAqKVxuXG50eXBlIG1ldGggPVxuICBbIGBHZXQgfCBgUHV0IHwgYFBvc3QgfCBgRGVsZXRlIHwgYEhlYWQgfCBgQ29ubmVjdCB8IGBUcmFjZSB8IGBPcHRpb25zIF1cblxudHlwZSBtb2RlID0gWyBgQ29ycyB8IGBOb19jb3JzIF1cbnR5cGUgY3JlZGVudGlhbHMgPSBbIGBPbWl0IHwgYFNhbWVfb3JpZ2luIHwgYEluY2x1ZGUgXVxudHlwZSBvcHRpb25zID0gSngudFxudHlwZSBoZWFkZXJzID0gSngudFxuXG5tb2R1bGUgSGVhZGVycyA9IHN0cnVjdFxuICB0eXBlIHQgPSBoZWFkZXJzXG5cbiAgbGV0IHQgPSBKeC5nbG9iYWwgXCJIZWFkZXJzXCJcbiAgbGV0IG1ha2UgKCkgPSBKeC5PYmoubmV3MCB0XG5cbiAgbGV0IGFwcGVuZCB0IG5hbWUgdmFsdWUgPVxuICAgIEp4Lk9iai5jYWxsMl91bml0IHQgXCJhcHBlbmRcIiBKeC5FbmNvZGVyLnN0cmluZyBKeC5FbmNvZGVyLnN0cmluZyBuYW1lIHZhbHVlXG5cbiAgbGV0IGVudHJpZXMgdCA9IEp4Lk9iai5jYWxsMCB0IFwiZW50cmllc1wiIH5yZXR1cm46SnguRGVjb2Rlci5qcyAoKVxuZW5kXG5cbm1vZHVsZSBPcHRpb25zID0gc3RydWN0XG4gIHR5cGUgdCA9IG9wdGlvbnNcblxuICBsZXQgbWFrZSA/Ym9keSA/bWV0aCA/KGhlYWRlcnMgPSBbXSkgP21vZGUgP2NyZWRlbnRpYWxzICgpID1cbiAgICBsZXQgb3BlbiBKeC5FbmNvZGVyIGluXG4gICAgbGV0IGZpZWxkcyA9IFtdIGluXG4gICAgbGV0IGZpZWxkcyA9XG4gICAgICBtYXRjaCBoZWFkZXJzIHdpdGhcbiAgICAgIHwgW10gLT4gZmllbGRzXG4gICAgICB8IF8gLT5cbiAgICAgICAgbGV0IGhzID0gSGVhZGVycy5tYWtlICgpIGluXG4gICAgICAgIExpc3QuaXRlciAoZnVuIChuYW1lLCB2YWx1ZSkgLT4gSGVhZGVycy5hcHBlbmQgaHMgbmFtZSB2YWx1ZSkgaGVhZGVycztcbiAgICAgICAgKFwiaGVhZGVyc1wiLCBocykgOjogZmllbGRzXG4gICAgaW5cbiAgICBsZXQgZmllbGRzID1cbiAgICAgIG1hdGNoIG1vZGUgd2l0aFxuICAgICAgfCBTb21lIGBDb3JzIC0+IChcIm1vZGVcIiwgc3RyaW5nIFwiY29yc1wiKSA6OiBmaWVsZHNcbiAgICAgIHwgU29tZSBgTm9fY29ycyAtPiAoXCJtb2RlXCIsIHN0cmluZyBcIm5vLWNvcnNcIikgOjogZmllbGRzXG4gICAgICB8IE5vbmUgLT4gZmllbGRzXG4gICAgaW5cbiAgICBsZXQgZmllbGRzID1cbiAgICAgIG1hdGNoIGNyZWRlbnRpYWxzIHdpdGhcbiAgICAgIHwgU29tZSBgT21pdCAtPiAoXCJjcmVkZW50aWFsc1wiLCBzdHJpbmcgXCJvbWl0XCIpIDo6IGZpZWxkc1xuICAgICAgfCBTb21lIGBTYW1lX29yaWdpbiAtPiAoXCJjcmVkZW50aWFsc1wiLCBzdHJpbmcgXCJzYW1lLW9yaWdpblwiKSA6OiBmaWVsZHNcbiAgICAgIHwgU29tZSBgSW5jbHVkZSAtPiAoXCJjcmVkZW50aWFsc1wiLCBzdHJpbmcgXCJpbmNsdWRlXCIpIDo6IGZpZWxkc1xuICAgICAgfCBOb25lIC0+IGZpZWxkc1xuICAgIGluXG4gICAgbGV0IGZpZWxkcyA9XG4gICAgICBtYXRjaCBib2R5IHdpdGhcbiAgICAgIHwgU29tZSBib2R5IC0+IChcImJvZHlcIiwgQm9keS50b19qcyBib2R5KSA6OiBmaWVsZHNcbiAgICAgIHwgTm9uZSAtPiBmaWVsZHNcbiAgICBpblxuICAgIGxldCBmaWVsZHMgPVxuICAgICAgbWF0Y2ggbWV0aCB3aXRoXG4gICAgICB8IFNvbWUgYEdldCAtPiAoXCJtZXRob2RcIiwgc3RyaW5nIFwiR0VUXCIpIDo6IGZpZWxkc1xuICAgICAgfCBTb21lIGBQdXQgLT4gKFwibWV0aG9kXCIsIHN0cmluZyBcIlBVVFwiKSA6OiBmaWVsZHNcbiAgICAgIHwgU29tZSBgUG9zdCAtPiAoXCJtZXRob2RcIiwgc3RyaW5nIFwiUE9TVFwiKSA6OiBmaWVsZHNcbiAgICAgIHwgU29tZSBgRGVsZXRlIC0+IChcIm1ldGhvZFwiLCBzdHJpbmcgXCJERUxFVEVcIikgOjogZmllbGRzXG4gICAgICB8IFNvbWUgYEhlYWQgLT4gKFwibWV0aG9kXCIsIHN0cmluZyBcIkhFQURcIikgOjogZmllbGRzXG4gICAgICB8IFNvbWUgYENvbm5lY3QgLT4gKFwibWV0aG9kXCIsIHN0cmluZyBcIkNPTk5FQ1RcIikgOjogZmllbGRzXG4gICAgICB8IFNvbWUgYE9wdGlvbnMgLT4gKFwibWV0aG9kXCIsIHN0cmluZyBcIk9QVElPTlNcIikgOjogZmllbGRzXG4gICAgICB8IFNvbWUgYFRyYWNlIC0+IChcIm1ldGhvZFwiLCBzdHJpbmcgXCJUUkFDRVwiKSA6OiBmaWVsZHNcbiAgICAgIHwgTm9uZSAtPiBmaWVsZHNcbiAgICBpblxuICAgIEp4Lk9iai5vZl9saXN0IGZpZWxkc1xuXG4gIGxldCBvZl9qcyA9IEp4LkRlY29kZXIuanNcbiAgbGV0IHRvX2pzID0gSnguRW5jb2Rlci5qc1xuZW5kXG5cbigqIFJlc3BvbnNlICopXG5cbnR5cGUgcmVzcG9uc2UgPSBKeC5qc1xuXG5tb2R1bGUgUmVzcG9uc2UgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gcmVzcG9uc2VcblxuICBsZXQgb2sgdCA9IEp4Lk9iai5nZXQgdCBcIm9rXCIgSnguRGVjb2Rlci5ib29sXG4gIGxldCBzdGF0dXMgdCA9IEp4Lk9iai5nZXQgdCBcInN0YXR1c1wiIEp4LkRlY29kZXIuaW50XG5cbiAgbGV0IHRleHQgdCA9XG4gICAgSnguT2JqLmNhbGwwIHQgXCJ0ZXh0XCIgfnJldHVybjpQcm9taXNlLm9mX2pzICgpXG4gICAgfD4gUHJvbWlzZS5tYXAgSnguRGVjb2Rlci5zdHJpbmdcblxuICBsZXQganNvbiB0ID1cbiAgICBKeC5PYmouY2FsbDAgdCBcImpzb25cIiB+cmV0dXJuOlByb21pc2Uub2ZfanMgKCkgfD4gUHJvbWlzZS5tYXAgSnguRGVjb2Rlci5qc1xuXG4gIGxldCBoZWFkZXJzIHQgPSBKeC5PYmouZ2V0IHQgXCJoZWFkZXJzXCIgSnguRGVjb2Rlci5qc1xuICBsZXQgb2ZfanMgPSBKeC5EZWNvZGVyLmpzXG4gIGxldCB0b19qcyA9IEp4LkVuY29kZXIuanNcbmVuZFxuXG5sZXQgZmV0Y2ggP2JvZHkgPyhtZXRoID0gYEdldCkgP2hlYWRlcnMgP21vZGUgP2NyZWRlbnRpYWxzIHVybCA9XG4gIGxldCBvcHRzID0gT3B0aW9ucy5tYWtlIH5tZXRoID9oZWFkZXJzID9tb2RlID9jcmVkZW50aWFscyA/Ym9keSAoKSBpblxuICBKeC5PYmouY2FsbDIgU3Rkd2ViX2dsb2JhbC53aW5kb3cgXCJmZXRjaFwiIH5yZXR1cm46UmVzcG9uc2Uub2ZfanNcbiAgICBKeC5FbmNvZGVyLnN0cmluZyBPcHRpb25zLnRvX2pzIHVybCBvcHRzXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwzIiwiYTEiLCJhMiIsImNhbWxfY2FsbDQiLCJhMyIsImNhbWxfY2FsbDUiLCJhNCIsImNhbWxfY2FsbDYiLCJhNSIsImNhbWxfY2FsbDciLCJhNiIsImdsb2JhbF9kYXRhIiwiSngiLCJTdGR3ZWJfU3Rkd2ViX2dsb2JhbCIsIlN0ZHdlYl9TdGR3ZWJfcHJvbWlzZSIsIlN0ZGxpYl9MaXN0IiwiU3Rkd2ViX1N0ZHdlYl9mb3JtX2RhdGEiLCJ0IiwibWFrZSIsIm9wdGlvbnMiLCJ1cmwiLCJvZl9qcyIsInRvX2pzIiwib2Zfc3RyaW5nIiwib2ZfZm9ybV9kYXRhIiwidW5zYWZlX29mX2pzIiwicGFyYW0iLCJhcHBlbmQiLCJuYW1lIiwidmFsdWUiLCJlbnRyaWVzIiwiY3N0X2hlYWRlcnMiLCJib2R5IiwibWV0aCIsIm9wdCIsIm1vZGUiLCJjcmVkZW50aWFscyIsImhlYWRlcnMiLCJmaWVsZHMiLCJocyIsImNzdF9tb2RlIiwibWF0Y2giLCJjc3RfY3JlZGVudGlhbHMiLCJjc3RfbWV0aG9kIiwib2siLCJzdGF0dXMiLCJ0ZXh0IiwianNvbiIsImZldGNoIiwib3B0cyJdLCJtYXBwaW5ncyI6Ik9BQUFBLFVBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUUsSUFBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFMLEdBQUFDLElBQUFFLElBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBUCxHQUFBQyxJQUFBRSxJQUFBQyxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQVQsR0FBQUMsSUFBQUUsSUFBQUMsSUFBQUUsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFYLEdBQUFDLElBQUFFLElBQUFDLElBQUFFLElBQUFFLElBQUFFLElBQUFF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QUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFRDdDN0IiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0NDM4OSwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGR3ZWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL2hlbGl4L3N0ZHdlYi9TdGR3ZWJfZGljdC5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIm1vZHVsZSBTdGRsaWJfb2JqID0gT2JqXG5tb2R1bGUgU3RkbGliX2FycmF5ID0gQXJyYXlcblxudHlwZSAnYSB0ID0gSnguT2JqLnRcblxubGV0IHRvX2pzIHAgPSBwXG5sZXQgb2ZfanMganMgPSBqc1xubGV0IHRvX29iaiBwID0gcFxubGV0IG9mX29iaiBvYmogPSBvYmpcbmxldCBlbXB0eSA9IEp4Lk9iai5lbXB0eVxuXG5sZXQgb2ZfYXJyYXkgYXJyID1cbiAgbGV0IGFyciA9XG4gICAgKFN0ZGxpYl9vYmoubWFnaWMgOiAoc3RyaW5nICogJ2EpIGFycmF5IC0+IChzdHJpbmcgKiBKeC50KSBhcnJheSkgYXJyXG4gIGluXG4gIEp4Lk9iai5vZl9hcnJheSBhcnJcblxubGV0IG9mX2xpc3QgbCA9IG9mX2FycmF5IChTdGRsaWJfYXJyYXkub2ZfbGlzdCBsKVxubGV0IGdldCBkaWN0IGtleSA9IEp4Lk9iai5nZXQgZGljdCBrZXkgSnguRGVjb2Rlci5hbnlcbmxldCBnZXRfb3B0IGRpY3Qga2V5ID0gSnguT2JqLmdldF9vcHQgZGljdCBrZXkgSnguRGVjb2Rlci5hbnlcbmxldCBzZXQgZGljdCBrZXkgeCA9IEp4Lk9iai5zZXQgZGljdCBrZXkgSnguRW5jb2Rlci5hbnkgeFxubGV0IGRlbCA9IEp4Lk9iai5kZWxcblxubGV0IGVudHJ5X29mX2pzIGVudHJ5X2pzID1cbiAgbWF0Y2ggSnguRGVjb2Rlci5hcnJheV9qcyBlbnRyeV9qcyB3aXRoXG4gIHwgW3wga2V5OyB2IHxdIC0+IChKeC5EZWNvZGVyLnN0cmluZyBrZXksIEp4LkRlY29kZXIuYW55IHYpXG4gIHwgXyAtPiBpbnZhbGlkX2FyZyBcIk9iamVjdCBlbnRyaWVzIGlzIG5vdCBhIHBhaXJcIlxuXG5sZXQgZW50cmllcyBkaWN0ID1cbiAgSnguT2JqLmNhbGwxIEp4Lk9iai50IFwiZW50cmllc1wiXG4gICAgfnJldHVybjooSnguRGVjb2Rlci5hcnJheSBlbnRyeV9vZl9qcylcbiAgICBKeC5FbmNvZGVyLmpzIGRpY3RcblxubGV0IGtleXMgZGljdCA9XG4gIEp4Lk9iai5jYWxsMSBKeC5PYmoudCBcImtleXNcIlxuICAgIH5yZXR1cm46SnguRGVjb2Rlci4oYXJyYXkgc3RyaW5nKVxuICAgIEp4LkVuY29kZXIuanMgZGljdFxuXG5sZXQgdmFsdWVzIGRpY3QgPVxuICBKeC5PYmouY2FsbDEgSnguT2JqLnQgXCJ2YWx1ZXNcIlxuICAgIH5yZXR1cm46SnguRGVjb2Rlci4oYXJyYXkgYW55KVxuICAgIEp4LkVuY29kZXIuanMgZGljdFxuXG5sZXQgbWFwIGRpY3QgZiA9XG4gIGxldCBvdXQgPSBlbXB0eSAoKSBpblxuICBsZXQga2V5cyA9IGtleXMgZGljdCBpblxuICBmb3IgaSA9IDAgdG8gU3RkbGliX2FycmF5Lmxlbmd0aCBrZXlzIC0gMSBkb1xuICAgIGxldCBrZXkgPSBTdGRsaWJfYXJyYXkudW5zYWZlX2dldCBrZXlzIGkgaW5cbiAgICBsZXQgeCA9IGdldCBkaWN0IGtleSBpblxuICAgIGxldCB4JyA9IGYgeCBpblxuICAgIHNldCBvdXQga2V5IHgnXG4gIGRvbmU7XG4gIG91dFxuXG5sZXQgdXBkYXRlIGRpY3QgZiA9XG4gIGxldCBrZXlzID0ga2V5cyBkaWN0IGluXG4gIGZvciBpID0gMCB0byBTdGRsaWJfYXJyYXkubGVuZ3RoIGtleXMgLSAxIGRvXG4gICAgbGV0IGtleSA9IFN0ZGxpYl9hcnJheS51bnNhZmVfZ2V0IGtleXMgaSBpblxuICAgIGxldCB4ID0gZ2V0IGRpY3Qga2V5IGluXG4gICAgbGV0IHgnID0gZiB4IGluXG4gICAgc2V0IGRpY3Qga2V5IHgnXG4gIGRvbmVcblxubGV0IGZvbGRfbGVmdCBkaWN0IGYgaW5pdCA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBsZXQgdmFsdWVzID0gdmFsdWVzIGRpY3QgaW5cbiAgZm9yIGkgPSAwIHRvIFN0ZGxpYl9hcnJheS5sZW5ndGggdmFsdWVzIC0gMSBkb1xuICAgIGxldCB4ID0gU3RkbGliX2FycmF5LnVuc2FmZV9nZXQgdmFsdWVzIGkgaW5cbiAgICBhY2MgOj0gZiAhYWNjIHhcbiAgZG9uZTtcbiAgIWFjY1xuXG5sZXQgaXRlciBkaWN0IGYgPVxuICBsZXQgdmFsdWVzID0gdmFsdWVzIGRpY3QgaW5cbiAgZm9yIGkgPSAwIHRvIFN0ZGxpYl9hcnJheS5sZW5ndGggdmFsdWVzIC0gMSBkb1xuICAgIGxldCB4ID0gU3RkbGliX2FycmF5LnVuc2FmZV9nZXQgdmFsdWVzIGkgaW5cbiAgICBmIHhcbiAgZG9uZVxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiY2FtbF9jYWxsNCIsImEzIiwiY2FtbF9jYWxsNSIsImE0IiwiZ2xvYmFsX2RhdGEiLCJKeCIsIlN0ZGxpYiIsIlN0ZGxpYl9BcnJheSIsInRvX2pzIiwicCIsIm9mX2pzIiwianMiLCJ0b19vYmoiLCJvZl9vYmoiLCJvYmoiLCJlbXB0eSIsIm9mX2FycmF5IiwiYXJyIiwib2ZfbGlzdCIsImwiLCJnZXQiLCJkaWN0Iiwia2V5IiwiZ2V0X29wdCIsInNldCIsIngiLCJkZWwiLCJlbnRyeV9vZl9qcyIsImVudHJ5X2pzIiwibWF0Y2giLCJsZW4iLCJ2IiwiZW50cmllcyIsImtleXMiLCJ2YWx1ZXMiLCJtYXAiLCJvdXQiLCJpIiwidXBkYXRlIiwiZm9sZF9sZWZ0IiwiaW5pdCIsImFjYyIsIml0ZXIiXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQU4sR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFSLEdBQUFDLElBQUFFLElBQUFFLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxLQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxZQUFBQyxNQUFBQyxHQ0tjLFNBQUM7QUFBQSxZQUFBQyxNQUFBQyxJQUNBLFVBQUU7QUFBQSxZQUFBQyxPQUFBSCxHQUNGLFNBQUM7QUFBQSxZQUFBSSxPQUFBQyxLQUNDLFdBQUc7QUFBQSxPQUFBQyxRRFJwQjtBQUFBLFlBQUFDLFNBQUFDLEtDZUUsaUNBQW1CO0FBQUEsWUFBQUMsUUFBQUMsR0FFSSxPQUF3QixTQUF4QiwrQkFBd0I7QUFBQSxZQUFBQyxJQUFBQyxNQUFBQztBQUFBQSxJQUM5QixvREFBa0M7QUFBQTtBQUFBLFlBQUFDLFFBQUFGLE1BQUFDO0FBQUFBLElBQzlCLG9EQUFzQztBQUFBO0FBQUEsWUFBQUUsSUFBQUgsTUFBQUMsS0FBQUc7QUFBQUEsSUFDeEMsdURBQW9DO0FBQUE7QUFBQSxPQUFBQyxNRHBCekQ7QUFBQSxZQUFBQyxZQUFBQztBQUFBQSxRQUFBQyxRQ3dCUSxpQ0FBQUMsTUFBNEI7QUFBQSxrQkFFM0IsMkRBQTBDO0FBQUEsUUFBQVIsTUFGZixVQUFBUyxJQUFBLGNBQ1E7QUFBQSxJQUF2Qix5Q0FBcUI7QUFBQSxHQUNTO0FBQUEsWUFBQUMsUUFBQVg7QUFBQUEsUUFBQSxJQUl2QztBQUFBLElBQThCLCtEQUNwQjtBQUFBO0FBQUEsWUFBQVksS0FBQVo7QUFBQUEsUUFBQSxJQUlFO0FBQUEsSUFBWSw0REFDZDtBQUFBO0FBQUEsWUFBQWEsT0FBQWI7QUFBQUEsUUFBQSxJQUlFO0FBQUEsSUFBUyw4REFDWDtBQUFBO0FBQUEsWUFBQWMsSUFBQWQsTUFBQTNCO0FBQUFBO0FBQUFBLEtBQUEwQyxNQUdWO0FBQUEsS0FBQUgsU0FDQztBQUFBLFNBQ1g7QUFBQTtBQUFBLFNBQUFJLElBQUE7QUFBQTtBQUFBLFVBQUFmLE1BQ0UsZUFBQUcsSUFDUSxnQkFBQUEsTUFDQztBQUFBLE1BQ1Q7QUFBQSxjQUFjO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUVoQjtBQUFBLEdBQUc7QUFBQSxZQUFBYSxPQUFBakIsTUFBQTNCO0FBQUFBLFFBQUF1QyxTQUdRLGdCQUNYO0FBQUE7QUFBQSxTQUFBSSxJQUFBO0FBQUE7QUFBQSxVQUFBZixNQUNFLGVBQUFHLElBQ1EsZ0JBQUFBLE1BQ0M7QUFBQSxNQUNUO0FBQUEsY0FBZTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFKakI7QUFBQSxHQUtJO0FBQUEsWUFBQWMsVUFBQWxCLE1BQUEzQixHQUFBOEM7QUFBQUEsUUFBQU4sV0FJUyxrQkFDYjtBQUFBO0FBQUEsU0FBQU8sUUFBQTtBQUFBO0FBQUEsU0FBQUEsTUFBQSxNQUFBSixJQUFBO0FBQUE7QUFBQSxVQUFBWixJQUNVLHFCQUNELDJCQUFRO0FBQUEsc0JBQUFnQixRQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUVqQjtBQUFBLEdBQUk7QUFBQSxZQUFBQyxLQUFBckIsTUFBQTNCO0FBQUFBLFFBQUF3QyxXQUdTLGtCQUNiO0FBQUE7QUFBQSxTQUFBRyxJQUFBO0FBQUE7QUFBQSxVQUFBWixJQUNVO0FBQUEsTUFDUjtBQUFBLGNBQUc7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBRkw7QUFBQSxHQUdJO0FBQUEsR0Q3RU4iLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0NDU0NywiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGR3ZWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL2hlbGl4L3N0ZHdlYi9TdGR3ZWJfY29uc29sZS5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIm1vZHVsZSBHbG9iYWwgPSBTdGR3ZWJfZ2xvYmFsXG5cbnR5cGUgdCA9IEp4LnRcblxubGV0IHQgPSBHbG9iYWwuY29uc29sZVxubGV0IGxvZyB4ID0gSnguT2JqLmNhbGwxX3VuaXQgdCBcImxvZ1wiIEp4LkVuY29kZXIuYW55IHhcbmxldCBlcnJvciB4ID0gSnguT2JqLmNhbGwxX3VuaXQgdCBcImVycm9yXCIgSnguRW5jb2Rlci5hbnkgeFxubGV0IGluZm8geCA9IEp4Lk9iai5jYWxsMV91bml0IHQgXCJpbmZvXCIgSnguRW5jb2Rlci5hbnkgeFxubGV0IHdhcm4geCA9IEp4Lk9iai5jYWxsMV91bml0IHQgXCJ3YXJuXCIgSnguRW5jb2Rlci5hbnkgeFxubGV0IGVuc3VyZSBiIHggPSBKeC5PYmouY2FsbDJfdW5pdCB0IFwiYXNzZXJ0XCIgSnguRW5jb2Rlci5ib29sIEp4LkVuY29kZXIuYW55IGIgeFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGw0IiwiZiIsImEwIiwiYTEiLCJhMiIsImEzIiwiY2FtbF9jYWxsNiIsImE0IiwiYTUiLCJnbG9iYWxfZGF0YSIsIkp4IiwiU3Rkd2ViX1N0ZHdlYl9nbG9iYWwiLCJ0IiwibG9nIiwieCIsImVycm9yIiwiaW5mbyIsIndhcm4iLCJlbnN1cmUiLCJiIl0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDLElBQUFDLElBQUFDLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBTCxHQUFBQyxJQUFBQyxJQUFBQyxJQUFBQyxJQUFBRSxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsS0FBQTtBQUFBLElBQUFDLHVCQUFBO0FBQUEsSUFBQUMsSUFBQTtBQUFBLFlBQUFDLElBQUFDLEdDS1ksc0RBQTBDO0FBQUEsWUFBQUMsTUFBQUQ7QUFBQUEsSUFDeEMsd0RBQTRDO0FBQUE7QUFBQSxZQUFBRSxLQUFBRixHQUM3Qyx1REFBMkM7QUFBQSxZQUFBRyxLQUFBSCxHQUMzQyx1REFBMkM7QUFBQSxZQUFBSSxPQUFBQyxHQUFBTDtBQUFBQSxJQUN2Qyx1RUFBK0Q7QUFBQTtBQUFBLEdEVGhGIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDQ1ODMsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rkd2ViLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9oZWxpeC9zdGR3ZWIvU3Rkd2ViX2NsaXBib2FyZC5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIm1vZHVsZSBQcm9taXNlID0gU3Rkd2ViX3Byb21pc2VcblxudHlwZSB0ID0gSngudFxuXG5sZXQgd3JpdGVfdGV4dCB0IHRleHQgPVxuICBKeC5PYmouY2FsbDEgdCBcIndyaXRlVGV4dFwiIH5yZXR1cm46UHJvbWlzZS5vZl9qcyBKeC5FbmNvZGVyLnN0cmluZyB0ZXh0XG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2FsbDUiLCJmIiwiYTAiLCJhMSIsImEyIiwiYTMiLCJhNCIsImdsb2JhbF9kYXRhIiwiSngiLCJTdGR3ZWJfU3Rkd2ViX3Byb21pc2UiLCJ3cml0ZV90ZXh0IiwidCIsInRleHQiXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUMsSUFBQUMsSUFBQUMsSUFBQUMsSUFBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLEtBQUE7QUFBQSxJQUFBQyx3QkFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElDS0U7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsa0JBQXVFO0FBQUE7QUFBQSxHREx6RSIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQ0NjE0LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZHdlYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvaGVsaXgvc3Rkd2ViL1N0ZHdlYl9hcnJheS5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsInR5cGUgJ2EgdCA9IEp4LnRcblxubGV0IHQgPSBKeC5nbG9iYWwgXCJBcnJheVwiXG5sZXQgdG9fanMgcCA9IHBcbmxldCBvZl9qcyBqcyA9IGpzXG5sZXQgbWFrZSBuID0gSnguT2JqLm5ldzEgdCBKeC5FbmNvZGVyLmludCBuXG5sZXQgZW1wdHkgKCkgPSBtYWtlIDBcbmxldCBzZXQgYXJyIChpIDogaW50KSB4ID0gSnguT2JqLnNldF9qcyBhcnIgKEp4LkVuY29kZXIuaW50IGkpIChKeC5FbmNvZGVyLmFueSB4KVxuXG5sZXQgaW5pdCBuIGYgPVxuICBsZXQgb3V0ID0gbWFrZSBuIGluXG4gIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgIHNldCBvdXQgaSAoZiBpKVxuICBkb25lO1xuICBvdXRcblxubGV0IGdldCBhcnIgaSA9IEp4LkRlY29kZXIuYW55IChKeC5PYmouZ2V0X2pzIGFyciAoSnguRW5jb2Rlci5pbnQgaSkpXG5cbmxldCBnZXRfb3B0IGFyciBpID1cbiAgbGV0IHggPSBnZXQgYXJyIGkgaW5cbiAgbGV0IHhfanMgPSBKeC5FbmNvZGVyLmFueSB4IGluXG4gIGlmIEp4LmlzX3VuZGVmaW5lZCB4X2pzIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2UgeFxuXG5sZXQgcHVzaCBhcnIgeCA9IEp4Lk9iai5jYWxsMV91bml0IGFyciBcInB1c2hcIiBKeC5FbmNvZGVyLmFueSB4XG5sZXQgcG9wIGFyciA9IEp4Lk9iai5jYWxsMCBhcnIgXCJwb3BcIiB+cmV0dXJuOkp4LkRlY29kZXIuYW55ICgpXG5sZXQgcG9wX29wdCBhcnIgPSBKeC5PYmouY2FsbDAgYXJyIFwicG9wXCIgfnJldHVybjpKeC5EZWNvZGVyLihvcHRpb25hbCBhbnkpICgpXG5sZXQgbGVuZ3RoIGFyciA9IEp4Lk9iai5nZXQgYXJyIFwibGVuZ3RoXCIgSnguRGVjb2Rlci5pbnRcblxubGV0IGNvbmNhdCBhcnIxIGFycjIgPVxuICBKeC5PYmouY2FsbDEgfnJldHVybjpKeC5EZWNvZGVyLmpzIGFycjEgXCJjb25jYXRcIiBKeC5FbmNvZGVyLmpzIGFycjJcblxubGV0IHNsaWNlIGFyciBpIGogPVxuICBKeC5PYmouY2FsbDIgfnJldHVybjpKeC5EZWNvZGVyLmpzIGFyciBcInNsaWNlXCIgSnguRW5jb2Rlci5pbnQgSnguRW5jb2Rlci5pbnQgaVxuICAgIGpcblxubGV0IGl0ZXIgYXJyIGYgPSBKeC5PYmouY2FsbDFfdW5pdCBhcnIgXCJmb3JFYWNoXCIgSnguRW5jb2Rlci5mdW4xIGZcblxubGV0IG9mX2xpc3QgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGVtcHR5ICgpXG4gIHwgaGQgOjogdGwgLT5cbiAgICBsZXQgb3V0ID0gbWFrZSAxIGluXG4gICAgc2V0IG91dCAwIGhkO1xuICAgIExpc3QuaXRlcmkgKGZ1biBpIHggLT4gc2V0IG91dCAoaSArIDEpIHgpIHRsO1xuICAgIG91dFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiY2FtbF9jYWxsNCIsImEzIiwiY2FtbF9jYWxsNSIsImE0IiwiY2FtbF9jYWxsNyIsImE1IiwiYTYiLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYl9MaXN0IiwiSngiLCJTdGRsaWIiLCJ0IiwidG9fanMiLCJwIiwib2ZfanMiLCJqcyIsIm1ha2UiLCJuIiwiZW1wdHkiLCJwYXJhbSIsInNldCIsImFyciIsImkiLCJ4IiwiaW5pdCIsIm91dCIsImdldCIsImdldF9vcHQiLCJ4X2pzIiwicHVzaCIsImNzdF9wb3AiLCJwb3AiLCJwb3Bfb3B0IiwibGVuZ3RoIiwiY29uY2F0IiwiYXJyMSIsImFycjIiLCJzbGljZSIsImoiLCJpdGVyIiwib2ZfbGlzdCIsImwiLCJ0bCIsImhkIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQU4sR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFSLEdBQUFDLElBQUFFLElBQUFFLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBVixHQUFBQyxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLEtBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsSUNFUTtBQUFBLFlBQUFDLE1BQUFDLEdBQ00sU0FBQztBQUFBLFlBQUFDLE1BQUFDLElBQ0EsVUFBRTtBQUFBLFlBQUFDLEtBQUFDLEdBQ0osOENBQThCO0FBQUEsWUFBQUMsTUFBQUMsT0FDNUIsY0FBTTtBQUFBLFlBQUFDLElBQUFDLEtBQUFDLEdBQUFDO0FBQUFBLFFBQUEsSUFDMEMsK0JBQW5CO0FBQUEsSUFBa0Isd0NBQW1CO0FBQUE7QUFBQSxZQUFBQyxLQUFBUCxHQUFBdkI7QUFBQUEsUUFBQStCLE1BR3JFLGFBQ1Y7QUFBQTtBQUFBLFNBQUFILElBQUE7QUFBQTtBQUFBLE1BQ0UsWUFBVTtBQUFBLGNBQUs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBRWpCO0FBQUEsR0FBRztBQUFBLFlBQUFJLElBQUFMLEtBQUFDO0FBQUFBLFFBQUEsSUFFNkMsOEJBQW5CO0FBQUEsSUFBc0M7QUFBQTtBQUFBLFlBQUFLLFFBQUFOLEtBQUFDO0FBQUFBLFFBQUFDLElBRzNELGFBQUFLLE9BQ0c7QUFBQSxJQUNSO0FBQUEsS0FBMEI7QUFBQSxJQUFxQjtBQUFBLEdBQUM7QUFBQSxZQUFBQyxLQUFBUixLQUFBRTtBQUFBQSxJQUVwQyx5REFBNkM7QUFBQTtBQUFBLE9BQUFPLFVEdkI5RDtBQUFBLFlBQUFDLElBQUFWO0FBQUFBLElDd0JjLDBEQUFnRDtBQUFBO0FBQUEsWUFBQVcsUUFBQVg7QUFBQUEsUUFBQSxJQUNEO0FBQUEsSUFBWSxpREFBSTtBQUFBO0FBQUEsWUFBQVksT0FBQVo7QUFBQUEsSUFDNUQsdURBQXNDO0FBQUE7QUFBQSxZQUFBYSxPQUFBQyxNQUFBQztBQUFBQSxJQUdyRCx5RUFBbUU7QUFBQTtBQUFBLFlBQUFDLE1BQUFoQixLQUFBQyxHQUFBZ0I7QUFBQUEsSUFHbkU7QUFBQSw2RUFDRztBQUFBO0FBQUEsWUFBQUMsS0FBQWxCLEtBQUEzQjtBQUFBQSxJQUVZLDREQUFpRDtBQUFBO0FBQUEsWUFBQThDLFFBQUFDO0FBQUFBLElBR2hFLFFBQ1EsZUFLSDtBQUFBLFFBQUFDLEtBTkwsTUFBQUMsS0FBQSxNQUFBbEIsTUFHWTtBQUFBLElBQ1Y7QUFBQSxJQUNBO0FBQUEscUJBQUFILEdBQUFDLEdBQXVCLDZCQUFpQjtBQUFBLElBQUk7QUFBQSxHQUN6QztBQUFBLEdBMUNrQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVERnpCIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDQ3NDUsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rkd2ViLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9oZWxpeC9zdGR3ZWIvU3Rkd2ViLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwibW9kdWxlIEFycmF5ID0gU3Rkd2ViX2FycmF5XG5tb2R1bGUgQ29uc29sZSA9IFN0ZHdlYl9jb25zb2xlXG5tb2R1bGUgRGljdCA9IFN0ZHdlYl9kaWN0XG5tb2R1bGUgRG9tID0gU3Rkd2ViX2RvbVxubW9kdWxlIEl0ZXJhdG9yID0gU3Rkd2ViX2l0ZXJhdG9yXG5tb2R1bGUgT2JqZWN0ID0gU3Rkd2ViX29iamVjdFxubW9kdWxlIEZvcm1fZGF0YSA9IFN0ZHdlYl9mb3JtX2RhdGFcbm1vZHVsZSBNYXAgPSBTdGR3ZWJfbWFwXG5tb2R1bGUgUHJvbWlzZSA9IFN0ZHdlYl9wcm9taXNlXG5tb2R1bGUgRmV0Y2ggPSBTdGR3ZWJfZmV0Y2hcbm1vZHVsZSBTdG9yYWdlID0gU3Rkd2ViX3N0b3JhZ2Vcbm1vZHVsZSBDbGlwYm9hcmQgPSBTdGR3ZWJfY2xpcGJvYXJkXG5tb2R1bGUgSnNvbiA9IFN0ZHdlYl9qc29uXG5tb2R1bGUgV2Vic29ja2V0ID0gU3Rkd2ViX3dlYnNvY2tldFxubW9kdWxlIFVybF9zZWFyY2hfcGFyYW1zID0gU3Rkd2ViX3VybF9zZWFyY2hfcGFyYW1zXG5cbm1vZHVsZSBOYXZpZ2F0b3IgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSngudFxuXG4gIGxldCBjbGlwYm9hcmQgdCA9IEp4Lk9iai5nZXQgdCBcImNsaXBib2FyZFwiIEp4LkRlY29kZXIuanNcbmVuZFxuXG5tb2R1bGUgTnVtYmVyID0gc3RydWN0XG4gIHR5cGUgdCA9IGZsb2F0XG5cbiAgbGV0IHRvX3ByZWNpc2lvbiB0IG4gPVxuICAgIGxldCB0X2pzID0gSnguRW5jb2Rlci5mbG9hdCB0IGluXG4gICAgSnguT2JqLmNhbGwxIHRfanMgXCJ0b1ByZWNpc2lvblwiIH5yZXR1cm46SnguRGVjb2Rlci5zdHJpbmcgSnguRW5jb2Rlci5pbnQgblxuZW5kXG5cbmluY2x1ZGUgU3Rkd2ViX2dsb2JhbFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMyIsImExIiwiYTIiLCJjYW1sX2NhbGw1IiwiYTMiLCJhNCIsImdsb2JhbF9kYXRhIiwiSngiLCJTdGR3ZWJfU3Rkd2ViX2dsb2JhbCIsIlN0ZHdlYl9TdGR3ZWJfdXJsX3NlYXJjaF9wYXJhbSIsIlN0ZHdlYl9TdGR3ZWJfd2Vic29ja2V0IiwiU3Rkd2ViX1N0ZHdlYl9jbGlwYm9hcmQiLCJTdGR3ZWJfU3Rkd2ViX3N0b3JhZ2UiLCJTdGR3ZWJfU3Rkd2ViX2ZldGNoIiwiU3Rkd2ViX1N0ZHdlYl9mb3JtX2RhdGEiLCJTdGR3ZWJfU3Rkd2ViX2pzb24iLCJTdGR3ZWJfU3Rkd2ViX2RvbSIsIlN0ZHdlYl9TdGR3ZWJfb2JqZWN0IiwiU3Rkd2ViX1N0ZHdlYl9tYXAiLCJTdGR3ZWJfU3Rkd2ViX2l0ZXJhdG9yIiwiU3Rkd2ViX1N0ZHdlYl9wcm9taXNlIiwiU3Rkd2ViX1N0ZHdlYl9kaWN0IiwiU3Rkd2ViX1N0ZHdlYl9hcnJheSIsIlN0ZHdlYl9TdGR3ZWJfY29uc29sZSIsImNsaXBib2FyZCIsInQiLCJ0b19wcmVjaXNpb24iLCJuIiwidF9qcyIsIndpbmRvdyIsImRvY3VtZW50IiwiY29uc29sZSIsIm5hdmlnYXRvciIsImVuY29kZV91cmlfY29tcG9uZW50IiwiU3Rkd2ViIl0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRSxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUwsR0FBQUMsSUFBQUUsSUFBQUMsSUFBQUUsSUFBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLEtBQUE7QUFBQSxJQUFBQyx1QkFBQTtBQUFBLElBQUFDO0FBQUFBLE1BQUE7QUFBQSxJQUFBQywwQkFBQTtBQUFBLElBQUFDLDBCQUFBO0FBQUEsSUFBQUMsd0JBQUE7QUFBQSxJQUFBQyxzQkFBQTtBQUFBLElBQUFDLDBCQUFBO0FBQUEsSUFBQUMscUJBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLHVCQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxJQUFBQyx5QkFBQTtBQUFBLElBQUFDLHdCQUFBO0FBQUEsSUFBQUMscUJBQUE7QUFBQSxJQUFBQyxzQkFBQTtBQUFBLElBQUFDLHdCQUFBO0FBQUEsWUFBQUMsVUFBQUM7QUFBQUEsSUNtQm9CLHdEQUFzQztBQUFBO0FBQUEsWUFBQUMsYUFBQUQsR0FBQUU7QUFBQUEsUUFBQUMsT0FPM0M7QUFBQSxJQUNYO0FBQUEsc0VBQTBFO0FBQUE7QUFBQTtBQUFBLElBQUFDLFNEM0I5RTtBQUFBLElBQUFDLFdBQUE7QUFBQSxJQUFBQyxVQUFBO0FBQUEsSUFBQUMsWUFBQTtBQUFBLElBQUFDLHVCQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQztBQUFBQSxNQUFBIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDUwMTAsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvaGVsaXgvaHRtbC9IdG1sLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwib3BlbiBTdGR3ZWJcblxubW9kdWxlIEN0eCA9IHN0cnVjdFxuICBsZXQgZ2VuX2lkID1cbiAgICBsZXQgaSA9IHJlZiAoLTEpIGluXG4gICAgZnVuICgpIC0+XG4gICAgICBpbmNyIGk7XG4gICAgICAoT2JqLm1hZ2ljICFpIDogc3RyaW5nKVxuXG4gIHR5cGUgdCA9IHsgaWQgOiBzdHJpbmc7IG11dGFibGUgY2xlYW51cCA6ICh1bml0IC0+IHVuaXQpIGxpc3Q7IHRyZWUgOiB0IFN0ZHdlYi5EaWN0LnQgfVxuXG4gIGxldCBtYWtlICgpID0geyBpZCA9IGdlbl9pZCAoKTsgY2xlYW51cCA9IFtdOyB0cmVlID0gU3Rkd2ViLkRpY3QuZW1wdHkgKCkgfVxuICBsZXQgb25fY2xlYW51cCB0IGYgPSB0LmNsZWFudXAgPC0gZiA6OiB0LmNsZWFudXBcbiAgbGV0IGNsZWFudXAgdCA9IExpc3QuaXRlciAoZnVuIGMgLT4gYyAoKSkgdC5jbGVhbnVwXG4gIGxldCBsaW5rIHQgdDIgPSBTdGR3ZWIuRGljdC5zZXQgdC50cmVlIHQyLmlkIHQyXG4gIGxldCB1bmxpbmsgdCBzdWJjdHggPSBTdGR3ZWIuRGljdC5kZWwgdC50cmVlIHN1YmN0eC5pZFxuZW5kXG5cbigqIEF0dHJpYnV0ZXMgYXJlIGZ1bmN0aW9ucyB0aGF0IHNldCBcImF0dHJpYnV0ZXNcIiBvbiBlbGVtZW50cy5cbiAgIEh0bWwgdmFsdWVzIGFyZSBmdW5jdGlvbnMgdGhhdCBtb3VudCBhbmQgdW5tb3VudCBjaGlsZHJlbi5cblxuICAgQ2xlYW51cDpcbiAgIC0gZnJlZSBtdXN0IGJlIGFsd2F5cyBjYWxsZWQsIGlmIGRlZmluZWQ7XG4gICAtIHJlbW92ZSBtdXN0IGJlIGNhbGxlZCB0byBkZWFjdGl2YXRlIHRoZSBhdHRyIGFuZCBkb2VzIG5vdCBuZWVkIHRvIGJlIGNhbGxlZFxuICAgICB3aGVuIHRoZSBub2RlIGlzIHJlbW92ZWQuXG4qKVxuXG5tb2R1bGUgQXR0ciA9IHN0cnVjdFxuICB0eXBlIHN0YXRlID0geyBzZXQgOiB1bml0IC0+IHVuaXQ7IHVuc2V0IDogdW5pdCAtPiB1bml0IH1cbiAgdHlwZSB0ID0gQ3R4LnQgLT4gRG9tLk5vZGUudCAtPiBzdGF0ZVxuXG4gIGxldCBub3AgX2N0eCBfbm9kZSA9IHsgc2V0ID0gaWdub3JlOyB1bnNldCA9IGlnbm9yZSB9XG4gIGxldCBvbiBib29sIGF0dHIgPSBpZiBib29sIHRoZW4gYXR0ciBlbHNlIG5vcFxuXG4gIGxldCBvbl9zb21lID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gbm9wXG4gICAgfCBTb21lIGF0IC0+IGF0XG5cbiAgbGV0IG9uX29rID0gZnVuY3Rpb25cbiAgICB8IEVycm9yIF8gLT4gbm9wXG4gICAgfCBPayBhdHRyIC0+IGF0dHJcblxuICBsZXQgc3RyaW5nIG5hbWUgdmFsdWUgX2N0eCBub2RlID1cbiAgICBsZXQgc2V0ICgpID0gRG9tLk5vZGUuc2V0X2F0dHIgbm9kZSBuYW1lIHZhbHVlIGluXG4gICAgbGV0IHVuc2V0ICgpID0gRG9tLk5vZGUudW5zZXRfYXR0ciBub2RlIG5hbWUgaW5cbiAgICB7IHNldDsgdW5zZXQgfVxuXG4gIGxldCBib29sIG5hbWUgYm9vbCA9IGlmIGJvb2wgdGhlbiBzdHJpbmcgbmFtZSBcIlwiIGVsc2Ugbm9wXG4gIGxldCBpbnQgbmFtZSBpID0gc3RyaW5nIG5hbWUgKHN0cmluZ19vZl9pbnQgaSlcblxuICBsZXQgb25fbW91bnQgZiBfY3R4IG5vZGUgPVxuICAgIGxldCBzZXQgKCkgPSBmIG5vZGUgaW5cbiAgICB7IHNldDsgdW5zZXQgPSBpZ25vcmUgfVxuXG4gIGxldCBzZXQgYXR0ciBub2RlID0gYXR0ciBub2RlXG4gIGxldCB1bnNldCBzdGF0ZSA9IHN0YXRlLnVuc2V0ICgpXG5cbiAgbGV0IGNvbWJpbmUgYTEgYTIgY3R4IG5vZGUgPVxuICAgIGxldCBhMV9zdGF0ZSA9IGExIGN0eCBub2RlIGluXG4gICAgbGV0IGEyX3N0YXRlID0gYTIgY3R4IG5vZGUgaW5cbiAgICBsZXQgc2V0ICgpID1cbiAgICAgIGExX3N0YXRlLnNldCAoKTtcbiAgICAgIGEyX3N0YXRlLnNldCAoKVxuICAgIGluXG4gICAgbGV0IHVuc2V0ICgpID1cbiAgICAgIGExX3N0YXRlLnVuc2V0ICgpO1xuICAgICAgYTJfc3RhdGUudW5zZXQgKClcbiAgICBpblxuICAgIHsgc2V0OyB1bnNldCB9XG5cbiAgbGV0IGxpc3QgYXR0cnMgPSBMaXN0LmZvbGRfbGVmdCBjb21iaW5lIG5vcCBhdHRyc1xuICBsZXQgbGFiZWwgPSBzdHJpbmcgXCJsYWJlbFwiXG5lbmRcblxudHlwZSBhdHRyID0gQXR0ci50XG5cbmxldCBhdHRyID0gQXR0ci5zdHJpbmdcblxuKCogU3RhbmRhcmQgY29uc3RydWN0b3JzLiAqKVxubGV0IGFjY2VwdCB2YWx1ZSA9IEF0dHIuc3RyaW5nIFwiYWNjZXB0XCIgdmFsdWVcbmxldCBhY2Nlc3NrZXkgdmFsdWUgPSBBdHRyLnN0cmluZyBcImFjY2Vzc2tleVwiIHZhbHVlXG5sZXQgYWN0aW9uIHZhbHVlID0gQXR0ci5zdHJpbmcgXCJhY3Rpb25cIiB2YWx1ZVxubGV0IGF1dG9jb21wbGV0ZSB2YWx1ZSA9IEF0dHIuc3RyaW5nIFwiYXV0b2NvbXBsZXRlXCIgdmFsdWVcbmxldCBhdXRvZm9jdXMgdmFsdWUgPSBBdHRyLmJvb2wgXCJhdXRvZm9jdXNcIiB2YWx1ZVxubGV0IGNoYXJzZXQgdmFsdWUgPSBBdHRyLnN0cmluZyBcImNoYXJzZXRcIiB2YWx1ZVxubGV0IGNoZWNrZWQgdmFsdWUgPSBBdHRyLmJvb2wgXCJjaGVja2VkXCIgdmFsdWVcbmxldCBjbGFzc19uYW1lIHZhbHVlID0gQXR0ci5zdHJpbmcgXCJjbGFzc1wiIHZhbHVlXG5sZXQgY29scyB2YWx1ZSA9IEF0dHIuaW50IFwiY29sc1wiIHZhbHVlXG5sZXQgY29udGVudCB2YWx1ZSA9IEF0dHIuc3RyaW5nIFwiY29udGVudFwiIHZhbHVlXG5sZXQgY29udGVudGVkaXRhYmxlIHZhbHVlID0gQXR0ci5ib29sIFwiY29udGVudGVkaXRhYmxlXCIgdmFsdWVcbmxldCBkZWZlciB2YWx1ZSA9IEF0dHIuYm9vbCBcImRlZmVyXCIgdmFsdWVcbmxldCBkaXIgdmFsdWUgPSBBdHRyLnN0cmluZyBcImRpclwiIHZhbHVlXG5sZXQgZGlzYWJsZWQgdmFsdWUgPSBBdHRyLmJvb2wgXCJkaXNhYmxlZFwiIHZhbHVlXG5sZXQgZHJhZ2dhYmxlIHZhbHVlID0gQXR0ci5ib29sIFwiZHJhZ2dhYmxlXCIgdmFsdWVcbmxldCBmb3InIHZhbHVlID0gQXR0ci5zdHJpbmcgXCJmb3JcIiB2YWx1ZVxubGV0IGZvcm1hY3Rpb24gdmFsdWUgPSBBdHRyLnN0cmluZyBcImZvcm1hY3Rpb25cIiB2YWx1ZVxubGV0IGhlaWdodCB2YWx1ZSA9IEF0dHIuaW50IFwiaGVpZ2h0XCIgdmFsdWVcbmxldCBoaWRkZW4gdmFsdWUgPSBBdHRyLmJvb2wgXCJoaWRkZW5cIiB2YWx1ZVxubGV0IGhyZWYgdmFsdWUgPSBBdHRyLnN0cmluZyBcImhyZWZcIiB2YWx1ZVxubGV0IGlkIHZhbHVlID0gQXR0ci5zdHJpbmcgXCJpZFwiIHZhbHVlXG5sZXQgbGFuZyB2YWx1ZSA9IEF0dHIuc3RyaW5nIFwibGFuZ1wiIHZhbHVlXG5sZXQgbGlzdCB2YWx1ZSA9IEF0dHIuc3RyaW5nIFwibGlzdFwiIHZhbHVlXG5sZXQgbWVkaWEgdmFsdWUgPSBBdHRyLnN0cmluZyBcIm1lZGlhXCIgdmFsdWVcbmxldCBtZXRob2QnIHZhbHVlID0gQXR0ci5zdHJpbmcgXCJtZXRob2RcIiB2YWx1ZVxubGV0IG5hbWUgdmFsdWUgPSBBdHRyLnN0cmluZyBcIm5hbWVcIiB2YWx1ZVxubGV0IG9wZW4nIHZhbHVlID0gQXR0ci5ib29sIFwib3BlblwiIHZhbHVlXG5sZXQgcGxhY2Vob2xkZXIgdmFsdWUgPSBBdHRyLnN0cmluZyBcInBsYWNlaG9sZGVyXCIgdmFsdWVcbmxldCByZWwgdmFsdWUgPSBBdHRyLnN0cmluZyBcInJlbFwiIHZhbHVlXG5sZXQgcmVxdWlyZWQgdmFsdWUgPSBBdHRyLmJvb2wgXCJyZXF1aXJlZFwiIHZhbHVlXG5sZXQgcm93cyB2YWx1ZSA9IEF0dHIuaW50IFwicm93c1wiIHZhbHVlXG5sZXQgc2VsZWN0ZWQgdmFsdWUgPSBBdHRyLmJvb2wgXCJzZWxlY3RlZFwiIHZhbHVlXG5sZXQgc3BlbGxjaGVjayB2YWx1ZSA9IEF0dHIuc3RyaW5nIFwic3BlbGxjaGVja1wiIHZhbHVlXG5sZXQgc3JjIHZhbHVlID0gQXR0ci5zdHJpbmcgXCJzcmNcIiB2YWx1ZVxubGV0IHRhYmluZGV4IHZhbHVlID0gQXR0ci5pbnQgXCJ0YWJpbmRleFwiIHZhbHVlXG5sZXQgdGl0bGUgdmFsdWUgPSBBdHRyLnN0cmluZyBcInRpdGxlXCIgdmFsdWVcbmxldCB0eXBlJyB2YWx1ZSA9IEF0dHIuc3RyaW5nIFwidHlwZVwiIHZhbHVlXG5cbmxldCB2YWx1ZSB4IF9jdHggbm9kZSA9XG4gIGxldCBzZXQgKCkgPSBEb20uTm9kZS5zZXRfdmFsdWUgbm9kZSB4IGluXG4gIGxldCB1bnNldCAoKSA9IERvbS5Ob2RlLnJlc2V0X3ZhbHVlIG5vZGUgaW5cbiAgeyBBdHRyLnNldDsgdW5zZXQgfVxuXG5sZXQgdmFsdWVfb3IgZGVmYXVsdCBvcHQgPVxuICBtYXRjaCBvcHQgd2l0aFxuICB8IFNvbWUgeCAtPiB2YWx1ZSB4XG4gIHwgTm9uZSAtPiB2YWx1ZSBkZWZhdWx0XG5cbmxldCB3cmFwIHZhbHVlID0gQXR0ci5zdHJpbmcgXCJ3cmFwXCIgdmFsdWVcbmxldCB3aWR0aCB2YWx1ZSA9IEF0dHIuaW50IFwid2lkdGhcIiB2YWx1ZVxubGV0IHN0eWxlIHggPSBBdHRyLnN0cmluZyBcInN0eWxlXCIgeFxubGV0IHJvbGUgeCA9IEF0dHIuc3RyaW5nIFwicm9sZVwiIHhcblxubGV0IHN0eWxlX2xpc3QgaXRlbXMgX2N0eCBub2RlID1cbiAgbGV0IHN0eWxlID0gRG9tLk5vZGUuZ2V0X3N0eWxlIG5vZGUgaW5cbiAgbGV0IHNldCAoKSA9IExpc3QuaXRlciAoZnVuIChuYW1lLCB2YWx1ZSkgLT4gRG9tLlN0eWxlLnNldCBzdHlsZSBuYW1lIHZhbHVlKSBpdGVtcyBpblxuICBsZXQgdW5zZXQgKCkgPSBMaXN0Lml0ZXIgKGZ1biAobmFtZSwgX3ZhbHVlKSAtPiBEb20uU3R5bGUudW5zZXQgc3R5bGUgbmFtZSkgaXRlbXMgaW5cbiAgeyBBdHRyLnNldDsgdW5zZXQgfVxuXG5sZXQgY2xhc3NfbGlzdCBpdGVtcyBfY3R4IG5vZGUgPVxuICBsZXQgY2wgPSBEb20uTm9kZS5nZXRfY2xhc3NfbGlzdCBub2RlIGluXG4gIGxldCBzZXQgKCkgPSBMaXN0Lml0ZXIgKGZ1biBuYW1lIC0+IERvbS5Ub2tlbl9saXN0LmFkZCBjbCBuYW1lKSBpdGVtcyBpblxuICBsZXQgdW5zZXQgKCkgPSBMaXN0Lml0ZXIgKGZ1biBuYW1lIC0+IERvbS5Ub2tlbl9saXN0LnJlbW92ZSBjbCBuYW1lKSBpdGVtcyBpblxuICB7IEF0dHIuc2V0OyB1bnNldCB9XG5cbmxldCBjbGFzc19mbGFncyBvcHRpb25zID1cbiAgbGV0IGxpc3QgPSBMaXN0LmZvbGRfbGVmdCAoZnVuIGFjYyAoYywgYikgLT4gaWYgYiB0aGVuIGMgOjogYWNjIGVsc2UgYWNjKSBbXSBvcHRpb25zIGluXG4gIGNsYXNzX2xpc3QgbGlzdFxuXG4oKiBEbyB3ZSBuZWVkIHRvIHVuYmluZCB0aGUgZXZlbnQgZXhwbGljaXRseT8gSW4gdGhlb3J5LCB0aGUgYnJvd3NlciBzaG91bGRcbiAgIHJlbW92ZSB0aGUgbGlzdGVuZXJzIHdoZW4gdGhlIG5vZGUgaXMgZ2MnZWQuICopXG5sZXQgb24gPyhkZWZhdWx0ID0gdHJ1ZSkgP2NvbmZpcm0gKG5hbWUgOiBEb20uRXZlbnQubmFtZSkgZiBfY3R4IG5vZGUgPVxuICBsZXQgZicgPVxuICAgIG1hdGNoIGNvbmZpcm0gd2l0aFxuICAgIHwgTm9uZSB3aGVuIG5vdCBkZWZhdWx0IC0+XG4gICAgICBmdW4gZXYgLT5cbiAgICAgICAgRG9tLkV2ZW50LnByZXZlbnRfZGVmYXVsdCBldjtcbiAgICAgICAgZiBldlxuICAgIHwgTm9uZSAtPiBmXG4gICAgfCBTb21lIG1zZyAtPlxuICAgICAgZnVuIGV2IC0+XG4gICAgICAgIGlmIERvbS5XaW5kb3cuY29uZmlybSBtc2cgdGhlblxuICAgICAgICAgIGxldCAoKSA9IGlmIG5vdCBkZWZhdWx0IHRoZW4gRG9tLkV2ZW50LnByZXZlbnRfZGVmYXVsdCBldiBpblxuICAgICAgICAgIGYgZXZcbiAgICAgICAgZWxzZSBEb20uRXZlbnQucHJldmVudF9kZWZhdWx0IGV2XG4gIGluXG4gIGxldCBzZXQgKCkgPSBEb20uTm9kZS5iaW5kIG5vZGUgbmFtZSBmJyBpblxuICBsZXQgdW5zZXQgKCkgPSBEb20uTm9kZS51bmJpbmQgbm9kZSBuYW1lIGYnIGluXG4gIHsgQXR0ci5zZXQ7IHVuc2V0IH1cblxubGV0IG9uX2NoYW5nZSA/Y29uZmlybSBoYW5kbGVyID1cbiAgb24gfmRlZmF1bHQ6ZmFsc2UgP2NvbmZpcm0gRG9tLkV2ZW50LmNoYW5nZSAoZnVuIGV2IC0+XG4gICAgICBoYW5kbGVyIChEb20uTm9kZS5nZXRfdmFsdWUgKERvbS5FdmVudC50YXJnZXQgZXYpKSlcblxubGV0IG9uX2NoZWNrZWQgP2NvbmZpcm0gaGFuZGxlciA9XG4gIG9uIH5kZWZhdWx0OmZhbHNlID9jb25maXJtIERvbS5FdmVudC5jaGFuZ2UgKGZ1biBldiAtPlxuICAgICAgaGFuZGxlciAoRG9tLk5vZGUuZ2V0X2NoZWNrZWQgKERvbS5FdmVudC50YXJnZXQgZXYpKSlcblxubGV0IG9uX2lucHV0ID9jb25maXJtIGhhbmRsZXIgPVxuICBvbiB+ZGVmYXVsdDpmYWxzZSA/Y29uZmlybSBEb20uRXZlbnQuaW5wdXQgKGZ1biBldiAtPlxuICAgICAgaGFuZGxlciAoRG9tLk5vZGUuZ2V0X3ZhbHVlIChEb20uRXZlbnQudGFyZ2V0IGV2KSkpXG5cbmxldCBvbl9jbGljayA/Y29uZmlybSBoYW5kbGVyID0gb24gfmRlZmF1bHQ6ZmFsc2UgP2NvbmZpcm0gRG9tLkV2ZW50LmNsaWNrIChmdW4gXyAtPiBoYW5kbGVyICgpKVxuXG5sZXQgb25fZG91YmxlX2NsaWNrID9jb25maXJtIGhhbmRsZXIgPVxuICBvbiB+ZGVmYXVsdDpmYWxzZSA/Y29uZmlybSBEb20uRXZlbnQuZGJsY2xpY2sgKGZ1biBfIC0+IGhhbmRsZXIgKCkpXG5cbigqIEVsZW1cblxuICAgIGh0bWwgc3RhdGUgaXMgY29tcG9zZWQgb2YgdHdvIGNsZWFudXAgZnVuY3Rpb25zOlxuICAgIC0gZnJlZTogY2xlYW5zIHVwIGFueSBub24tZG9tIHJlc291cmNlcyAobGlrZSBzaWduYWwgc3Vic2NyaXB0aW9ucyk7XG4gICAgLSByZW1vdmU6IGNhbGxzIGZyZWUgYW5kIGFsc28gcmVtb3ZlcyB0aGUgdG9wLWxldmVsIGRvbSByZXNvdXJjZXMuXG5cbiAgIFRoZXNlIHR3byBmdW5jdGlvbnMgYXJlIG5lZWRlZCBzaW5jZSBkZWxldGluZyBhIHRvcC1sZXZlbCBkb20gbm9kZSxcbiAgIGF1dG9tYXRpY2FsbHkgZGVsZXRlcyB0aGUgY2hpbGRyZW4gbm9kZXMsIGJ1dCB3aWxsIG5vdCBmcmVlIGFueSBtYW51YWxseVxuICAgYWNxdWlyZWQgcmVzb3VyY2VzLlxuKilcblxuKCogRXh0cmEgY29uc3RydWN0b3JzLiAqKVxubW9kdWxlIEVsZW0gPSBzdHJ1Y3RcbiAgdHlwZSBzdGF0ZSA9IHsgdW5tb3VudCA6IHVuaXQgLT4gdW5pdDsgbW91bnQgOiAoRG9tLm5vZGUgLT4gdW5pdCkgLT4gdW5pdCB9XG4gIHR5cGUgdCA9IEN0eC50IC0+IERvbS5ub2RlIC0+IHN0YXRlXG5cbiAgbGV0IG51bGxfc3RhdGUgPSB7IHVubW91bnQgPSBpZ25vcmU7IG1vdW50ID0gKGZ1biBfaW5zZXJ0IC0+ICgpKSB9XG4gIGxldCBudWxsIF9jdHggX3BhcmVudCA9IG51bGxfc3RhdGVcblxuICAoKlxuICAgIFtOT1RFXSBJbnZhcmlhbnRcbiAgICBUaGUgcGFyZW50IE1VU1QgTk9UIGNoYW5nZS5cblxuICAgIFtOT1RFXSBPcmVkclxuICAgIFRoZSBpbml0aWFsaXphdGlvbiBvcmRlciBNVVNUIGJlOlxuICAgIDEuIGNyZWF0ZSBlbGVtXG4gICAgMi4gaW5zZXJ0IGVsZW1cbiAgICAzLiBzZXQgYXR0cnNcbiAgICAyLiBhZGQgY2hpbGRyZW5cblxuICAgIElmIHRoaXMgb3JkZXIgaXNuJ3QgZm9sbG93ZWQsIGFsbCBraW5kcyBvZiB0aGluZ3Mgd2lsbCBicmVhay4gRm9yIGV4YW1wbGUsXG4gICAgYHNlbGVjdGAgcmVxdWlyZXMgdGhhdCBjaGlsZHJlbiBhcmUgcHJlc2VudCBmb3IgdGhlIGB2YWx1ZWAgYXR0ciB0byB3b3JrLlxuXG4gICAgVGhlIGBjb25kaXRpb25hbGAgYXR0cmlidXRlIHJlcXVpcmVzIHRoYXQgdGhlIG5vZGUgaXMgbW91bnRlZCBvbiBhIHBhcmVudC5cbiAgKilcblxuICBsZXQgbWFrZSBuYW1lIGF0dHJzIGNoaWxkcmVuIGN0eCBwYXJlbnQgPVxuICAgIGxldCBtb3VudGVkID0gcmVmIGZhbHNlIGluXG4gICAgKCogQ3JlYXRlIG5vZGUgKilcbiAgICBsZXQgbm9kZSA9IERvbS5Eb2N1bWVudC5jcmVhdGVfZWxlbWVudCBuYW1lIGluXG4gICAgbGV0IG1vdW50IGluc2VydCA9XG4gICAgICBpbnNlcnQgbm9kZTtcbiAgICAgIGlmIG5vdCAhbW91bnRlZCB0aGVuIChcbiAgICAgICAgKCogU2V0IG5vZGUncyBhdHRyaWJ1dGVzICopXG4gICAgICAgIExpc3QuaXRlclxuICAgICAgICAgIChmdW4gKGF0dHIgOiBBdHRyLnQpIC0+XG4gICAgICAgICAgICBsZXQgc3RhdGUgPSBhdHRyIGN0eCBub2RlIGluXG4gICAgICAgICAgICBzdGF0ZS5zZXQgKCkpXG4gICAgICAgICAgYXR0cnM7XG4gICAgICAgICgqIENyZWF0ZSBhbmQgbW91bnQgY2hpbGRyZW4gKilcbiAgICAgICAgbGV0IG5vZGVfaW5zZXJ0ID0gRG9tLk5vZGUuYXBwZW5kX2NoaWxkIH5wYXJlbnQ6bm9kZSBpblxuICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAoZnVuIChjaGlsZCA6IHQpIC0+XG4gICAgICAgICAgICBsZXQgY2hpbGRfc3RhdGUgPSBjaGlsZCBjdHggbm9kZSBpblxuICAgICAgICAgICAgY2hpbGRfc3RhdGUubW91bnQgbm9kZV9pbnNlcnQpXG4gICAgICAgICAgY2hpbGRyZW47XG4gICAgICAgIG1vdW50ZWQgOj0gdHJ1ZSlcbiAgICBpblxuICAgIHtcbiAgICAgIHVubW91bnQgPSAoZnVuICgpIC0+IERvbS5Ob2RlLnJlbW92ZV9jaGlsZCB+cGFyZW50IG5vZGUpO1xuICAgICAgKCogQWxsb3cgbW91bnRpbmcgbm9kZSBvbiBwYXJlbnQgKilcbiAgICAgIG1vdW50O1xuICAgIH1cblxuICBsZXQgdGV4dCBkYXRhIF9jdHggcGFyZW50ID1cbiAgICBsZXQgbm9kZSA9IERvbS5Eb2N1bWVudC5jcmVhdGVfdGV4dF9ub2RlIGRhdGEgaW5cbiAgICB7XG4gICAgICB1bm1vdW50ID0gKGZ1biAoKSAtPiBEb20uTm9kZS5yZW1vdmVfY2hpbGQgfnBhcmVudCBub2RlKTtcbiAgICAgIG1vdW50ID0gKGZ1biBpbnNlcnQgLT4gaW5zZXJ0IG5vZGUpO1xuICAgIH1cblxuICBsZXQgb2Zfc29tZSB0b19odG1sIG9wdGlvbiA9XG4gICAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgICB8IFNvbWUgeCAtPiB0b19odG1sIHhcbiAgICB8IE5vbmUgLT4gbnVsbFxuXG4gIGxldCBvZl9vayB0b19odG1sIHJlc3VsdCA9XG4gICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICB8IE9rIHggLT4gdG9faHRtbCB4XG4gICAgfCBFcnJvciBfIC0+IG51bGxcblxuICBsZXQgb25fdW5tb3VudCBmIGVsZW0gY3R4ID1cbiAgICBDdHgub25fY2xlYW51cCBjdHggZjtcbiAgICBlbGVtIGN0eFxuXG4gIGxldCB1bnNhZmUgbmFtZSBhdHRycyBjb250ZW50IGN0eCBwYXJlbnQgPVxuICAgIGxldCBub2RlID0gRG9tLkRvY3VtZW50LmNyZWF0ZV9lbGVtZW50IG5hbWUgaW5cbiAgICBEb20uTm9kZS5zZXRfaW5uZXJfaHRtbCBub2RlIGNvbnRlbnQ7XG4gICAgTGlzdC5pdGVyXG4gICAgICAoZnVuIChhdHRyIDogQXR0ci50KSAtPlxuICAgICAgICBsZXQgc3RhdGUgPSBhdHRyIGN0eCBub2RlIGluXG4gICAgICAgIHN0YXRlLnNldCAoKSlcbiAgICAgIGF0dHJzO1xuICAgIHtcbiAgICAgIHVubW91bnQgPSAoZnVuICgpIC0+IERvbS5Ob2RlLnJlbW92ZV9jaGlsZCB+cGFyZW50IG5vZGUpO1xuICAgICAgbW91bnQgPSAoZnVuIGluc2VydCAtPiBpbnNlcnQgbm9kZSk7XG4gICAgfVxuXG4gIGxldCBmcmFnbWVudCBjaGlsZHJlbiBjdHggcGFyZW50ID1cbiAgICBsZXQgZnJhZyA9IERvbS5GcmFnbWVudC5tYWtlICgpIGluXG4gICAgbGV0IGZyYWdfaW5zZXJ0ID0gRG9tLk5vZGUuYXBwZW5kX2NoaWxkIH5wYXJlbnQ6ZnJhZyBpblxuICAgIGxldCBzdGF0ZXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biAoY2hpbGQgOiB0KSAtPlxuICAgICAgICAgIGxldCBzID0gY2hpbGQgY3R4IHBhcmVudCBpblxuICAgICAgICAgIHMubW91bnQgZnJhZ19pbnNlcnQ7XG4gICAgICAgICAgcylcbiAgICAgICAgY2hpbGRyZW5cbiAgICBpblxuICAgIHtcbiAgICAgIHVubW91bnQgPSAoZnVuICgpIC0+IExpc3QuaXRlciAoZnVuIChzIDogc3RhdGUpIC0+IHMudW5tb3VudCAoKSkgc3RhdGVzKTtcbiAgICAgIG1vdW50ID0gKGZ1biBpbnNlcnQgLT4gaW5zZXJ0IGZyYWcpO1xuICAgIH1cbmVuZFxuXG50eXBlIGh0bWwgPSBFbGVtLnRcblxubGV0IGVsZW0gPSBFbGVtLm1ha2VcbmxldCB0ZXh0ID0gRWxlbS50ZXh0XG5sZXQgbnVsbCA9IEVsZW0ubnVsbFxubGV0IGZyYWdtZW50ID0gRWxlbS5mcmFnbWVudFxubGV0IGludCBuID0gdGV4dCAoc3RyaW5nX29mX2ludCBuKVxubGV0IG5ic3AgPSB0ZXh0IFwiXFx1ezAwQTB9XCJcbmxldCBhIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImFcIiBhdHRycyBjaGlsZHJlblxubGV0IGFiYnIgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiYWJiclwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgYWRkcmVzcyBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJhZGRyZXNzXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBhcmVhIGF0dHJzID0gZWxlbSBcImFyZWFcIiBhdHRycyBbXVxubGV0IGFydGljbGUgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiYXJ0aWNsZVwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgYXNpZGUgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiYXNpZGVcIiBhdHRycyBjaGlsZHJlblxubGV0IGF1ZGlvIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImF1ZGlvXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBiIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImJcIiBhdHRycyBjaGlsZHJlblxubGV0IGJhc2UgYXR0cnMgPSBlbGVtIFwiYmFzZVwiIGF0dHJzIFtdXG5sZXQgYmRpIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImJkaVwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgYmRvIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImJkb1wiIGF0dHJzIGNoaWxkcmVuXG5sZXQgYmxvY2txdW90ZSBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJibG9ja3F1b3RlXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBiciBhdHRycyA9IGVsZW0gXCJiclwiIGF0dHJzIFtdXG5sZXQgYnV0dG9uIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImJ1dHRvblwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgY2FudmFzIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImNhbnZhc1wiIGF0dHJzIGNoaWxkcmVuXG5sZXQgY2FwdGlvbiBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJjYXB0aW9uXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBjaXRlIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImNpdGVcIiBhdHRycyBjaGlsZHJlblxubGV0IGNvZGUgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiY29kZVwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgY29sIGF0dHJzID0gZWxlbSBcImNvbFwiIGF0dHJzIFtdXG5sZXQgY29sZ3JvdXAgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiY29sZ3JvdXBcIiBhdHRycyBjaGlsZHJlblxubGV0IGNvbW1hbmQgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiY29tbWFuZFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgZGF0YWxpc3QgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiZGF0YWxpc3RcIiBhdHRycyBjaGlsZHJlblxubGV0IGRkIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImRkXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBkZWwgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiZGVsXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBkZXRhaWxzIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImRldGFpbHNcIiBhdHRycyBjaGlsZHJlblxubGV0IGRmbiBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJkZm5cIiBhdHRycyBjaGlsZHJlblxubGV0IGRpdiBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJkaXZcIiBhdHRycyBjaGlsZHJlblxubGV0IGRsIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImRsXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBkdCBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJkdFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgZW0gYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiZW1cIiBhdHRycyBjaGlsZHJlblxubGV0IGVtYmVkIGF0dHJzID0gZWxlbSBcImVtYmVkXCIgYXR0cnMgW11cbmxldCBmaWVsZHNldCBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJmaWVsZHNldFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgZmlnY2FwdGlvbiBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJmaWdjYXB0aW9uXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBmaWd1cmUgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiZmlndXJlXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBmb290ZXIgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiZm9vdGVyXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBmb3JtIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImZvcm1cIiBhdHRycyBjaGlsZHJlblxubGV0IGgxIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImgxXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBoMiBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJoMlwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgaDMgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiaDNcIiBhdHRycyBjaGlsZHJlblxubGV0IGg0IGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImg0XCIgYXR0cnMgY2hpbGRyZW5cbmxldCBoNSBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJoNVwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgaDYgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiaDZcIiBhdHRycyBjaGlsZHJlblxubGV0IGhlYWQgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiaGVhZFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgaGVhZGVyIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImhlYWRlclwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgaGdyb3VwIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImhncm91cFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgaHIgYXR0cnMgPSBlbGVtIFwiaHJcIiBhdHRycyBbXVxuXG4oKiBsZXQgaHRtbCBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJodG1sXCIgYXR0cnMgY2hpbGRyZW4gKilcbmxldCBpIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImlcIiBhdHRycyBjaGlsZHJlblxubGV0IGlmcmFtZSBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJpZnJhbWVcIiBhdHRycyBjaGlsZHJlblxubGV0IGltZyBhdHRycyA9IGVsZW0gXCJpbWdcIiBhdHRycyBbXVxubGV0IGlucHV0IGF0dHJzID0gZWxlbSBcImlucHV0XCIgYXR0cnMgW11cbmxldCBpbnMgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiaW5zXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBrYmQgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwia2JkXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBrZXlnZW4gYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwia2V5Z2VuXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBsYWJlbCBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJsYWJlbFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgbGVnZW5kIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImxlZ2VuZFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgbGkgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwibGlcIiBhdHRycyBjaGlsZHJlblxubGV0IG1haW4gYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwibWFpblwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgbWFwIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcIm1hcFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgbWFyayBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJtYXJrXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBtZW51IGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcIm1lbnVcIiBhdHRycyBjaGlsZHJlblxubGV0IG1ldGEgYXR0cnMgPSBlbGVtIFwibWV0YVwiIGF0dHJzIFtdXG5sZXQgbWV0ZXIgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwibWV0ZXJcIiBhdHRycyBjaGlsZHJlblxubGV0IG5hdiBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJuYXZcIiBhdHRycyBjaGlsZHJlblxubGV0IG9iamVjdCcgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwib2JqZWN0XCIgYXR0cnMgY2hpbGRyZW5cbmxldCBvbCBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJvbFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgb3B0Z3JvdXAgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwib3B0Z3JvdXBcIiBhdHRycyBjaGlsZHJlblxubGV0IG9wdGlvbiBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJvcHRpb25cIiBhdHRycyBjaGlsZHJlblxubGV0IG91dHB1dCBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJvdXRwdXRcIiBhdHRycyBjaGlsZHJlblxubGV0IHAgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwicFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgcGFyYW0gYXR0cnMgPSBlbGVtIFwicGFyYW1cIiBhdHRycyBbXVxubGV0IHByZSBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJwcmVcIiBhdHRycyBjaGlsZHJlblxubGV0IHByb2dyZXNzIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcInByb2dyZXNzXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBxIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcInFcIiBhdHRycyBjaGlsZHJlblxubGV0IHJwIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcInJwXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBydCBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJydFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgcnVieSBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJydWJ5XCIgYXR0cnMgY2hpbGRyZW5cbmxldCBzIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcInNcIiBhdHRycyBjaGlsZHJlblxubGV0IHNhbXAgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwic2FtcFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgc2VjdGlvbiBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJzZWN0aW9uXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBzZWxlY3QgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwic2VsZWN0XCIgYXR0cnMgY2hpbGRyZW5cbmxldCBzbWFsbCBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJzbWFsbFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgc291cmNlIGF0dHJzID0gZWxlbSBcInNvdXJjZVwiIGF0dHJzIFtdXG5sZXQgc3BhbiBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJzcGFuXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBzdHJvbmcgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwic3Ryb25nXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBzdWIgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwic3ViXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBzdW1tYXJ5IGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcInN1bW1hcnlcIiBhdHRycyBjaGlsZHJlblxubGV0IHN1cCBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJzdXBcIiBhdHRycyBjaGlsZHJlblxubGV0IHRhYmxlIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcInRhYmxlXCIgYXR0cnMgY2hpbGRyZW5cbmxldCB0Ym9keSBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJ0Ym9keVwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgdGQgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwidGRcIiBhdHRycyBjaGlsZHJlblxubGV0IHRleHRhcmVhIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcInRleHRhcmVhXCIgYXR0cnMgY2hpbGRyZW5cbmxldCB0Zm9vdCBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJ0Zm9vdFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgdGggYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwidGhcIiBhdHRycyBjaGlsZHJlblxubGV0IHRoZWFkIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcInRoZWFkXCIgYXR0cnMgY2hpbGRyZW5cbmxldCB0aW1lIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcInRpbWVcIiBhdHRycyBjaGlsZHJlblxubGV0IHRyIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcInRyXCIgYXR0cnMgY2hpbGRyZW5cbmxldCB0cmFjayBhdHRycyA9IGVsZW0gXCJ0cmFja1wiIGF0dHJzIFtdXG5sZXQgdSBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJ1XCIgYXR0cnMgY2hpbGRyZW5cbmxldCB1bCBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJ1bFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgdmFyIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcInZhclwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgdmlkZW8gYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwidmlkZW9cIiBhdHRycyBjaGlsZHJlblxubGV0IHdiciBhdHRycyA9IGVsZW0gXCJ3YnJcIiBhdHRycyBbXVxuXG5sZXQgb25fbW91bnQgZiBodG1sIGN0eCBwYXJlbnQgPVxuICBsZXQgc3RhdGUgOiBFbGVtLnN0YXRlID0gaHRtbCBjdHggcGFyZW50IGluXG4gIHtcbiAgICBzdGF0ZSB3aXRoXG4gICAgbW91bnQgPVxuICAgICAgKGZ1biBpbnNlcnQgLT5cbiAgICAgICAgc3RhdGUubW91bnQgaW5zZXJ0O1xuICAgICAgICBmICgpKTtcbiAgfVxuXG5sZXQgcmVzb3VyY2UgfmluaXQgfmZyZWUgKHVzZSA6ICdhIC0+IEVsZW0udCkgY3R4IHBhcmVudCA9XG4gIGxldCByID0gaW5pdCAoKSBpblxuICBsZXQgaHRtbCA9IHVzZSByIGluXG4gIGxldCBzdGF0ZSA9IGh0bWwgY3R4IHBhcmVudCBpblxuICBDdHgub25fY2xlYW51cCBjdHggKGZ1biAoKSAtPiBmcmVlIHIpO1xuICBzdGF0ZVxuXG4oKiBET00gaGVscGVycyAqKVxuXG5sZXQgbW91bnQgcGFyZW50IGh0bWwgPVxuICBsZXQgY3R4ID0gQ3R4Lm1ha2UgKCkgaW5cbiAgbGV0IHN0YXRlIDogRWxlbS5zdGF0ZSA9IGh0bWwgY3R4IHBhcmVudCBpblxuICBsZXQgaW5zZXJ0ID0gRG9tLk5vZGUuYXBwZW5kX2NoaWxkIH5wYXJlbnQgaW5cbiAgc3RhdGUubW91bnQgaW5zZXJ0XG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJjYW1sX2NhbGwzIiwiYTIiLCJnbG9iYWxfZGF0YSIsIlN0ZHdlYiIsIlN0ZGxpYiIsIlN0ZGxpYl9MaXN0IiwiaSIsIm1ha2UiLCJwYXJhbSIsIm9uX2NsZWFudXAiLCJ0IiwiY2xlYW51cCIsImMiLCJsaW5rIiwidDIiLCJ1bmxpbmsiLCJzdWJjdHgiLCJub3AiLCJjdHgiLCJub2RlIiwib24iLCJib29sIiwiYXR0ciIsIm9uX3NvbWUiLCJhdCIsIm9uX29rIiwic3RyaW5nIiwibmFtZSIsInZhbHVlIiwic2V0IiwidW5zZXQiLCJpbnQiLCJvbl9tb3VudCIsImNvbWJpbmUiLCJhMV9zdGF0ZSIsImEyX3N0YXRlIiwibGlzdCIsImF0dHJzIiwiY3N0X2xhYmVsIiwibGFiZWwiLCJhY2NlcHQiLCJhY2Nlc3NrZXkiLCJhY3Rpb24iLCJhdXRvY29tcGxldGUiLCJhdXRvZm9jdXMiLCJjaGFyc2V0IiwiY2hlY2tlZCIsImNsYXNzX25hbWUiLCJjb2xzIiwiY29udGVudCIsImNvbnRlbnRlZGl0YWJsZSIsImRlZmVyIiwiZGlyIiwiZGlzYWJsZWQiLCJkcmFnZ2FibGUiLCJmb3IkIiwiZm9ybWFjdGlvbiIsImhlaWdodCIsImhpZGRlbiIsImhyZWYiLCJpZCIsImxhbmciLCJtZWRpYSIsIm1ldGhvZCIsIm9wZW4iLCJwbGFjZWhvbGRlciIsInJlbCIsInJlcXVpcmVkIiwicm93cyIsInNlbGVjdGVkIiwic3BlbGxjaGVjayIsInNyYyIsInRhYmluZGV4IiwidGl0bGUiLCJ0eXBlIiwieCIsInZhbHVlX29yIiwiZGVmYXVsdCQiLCJvcHQiLCJ3cmFwIiwid2lkdGgiLCJzdHlsZSIsInJvbGUiLCJzdHlsZV9saXN0IiwiaXRlbXMiLCJjbGFzc19saXN0IiwiY2wiLCJjbGFzc19mbGFncyIsIm9wdGlvbnMiLCJhY2MiLCJiIiwiY29uZmlybSIsIm1zZyIsImV2Iiwib25fY2hhbmdlIiwiaGFuZGxlciIsIm9uX2NoZWNrZWQiLCJvbl9pbnB1dCIsIm9uX2NsaWNrIiwib25fZG91YmxlX2NsaWNrIiwibnVsbF9zdGF0ZSIsImluc2VydCIsIm51bGwkIiwicGFyZW50IiwiY2hpbGRyZW4iLCJtb3VudGVkIiwibW91bnQiLCJzdGF0ZSIsIm5vZGVfaW5zZXJ0IiwiY2hpbGQiLCJjaGlsZF9zdGF0ZSIsInRleHQiLCJkYXRhIiwib2Zfc29tZSIsInRvX2h0bWwiLCJvcHRpb24iLCJvZl9vayIsInJlc3VsdCIsIm9uX3VubW91bnQiLCJlbGVtIiwidW5zYWZlIiwiZnJhZ21lbnQiLCJmcmFnIiwiZnJhZ19pbnNlcnQiLCJzdGF0ZXMiLCJzIiwibiIsIm5ic3AiLCJhIiwiYWJiciIsImFkZHJlc3MiLCJhcmVhIiwiYXJ0aWNsZSIsImFzaWRlIiwiYXVkaW8iLCJiYXNlIiwiYmRpIiwiYmRvIiwiYmxvY2txdW90ZSIsImJyIiwiYnV0dG9uIiwiY2FudmFzIiwiY2FwdGlvbiIsImNpdGUiLCJjb2RlIiwiY29sIiwiY29sZ3JvdXAiLCJjb21tYW5kIiwiZGF0YWxpc3QiLCJkZCIsImRlbCIsImRldGFpbHMiLCJkZm4iLCJkaXYiLCJkbCIsImR0IiwiZW0iLCJlbWJlZCIsImZpZWxkc2V0IiwiZmlnY2FwdGlvbiIsImZpZ3VyZSIsImZvb3RlciIsImZvcm0iLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJoZWFkIiwiaGVhZGVyIiwiaGdyb3VwIiwiaHIiLCJpZnJhbWUiLCJpbWciLCJpbnB1dCIsImlucyIsImtiZCIsImtleWdlbiIsImxlZ2VuZCIsImxpIiwibWFpbiIsIm1hcCIsIm1hcmsiLCJtZW51IiwibWV0YSIsIm1ldGVyIiwibmF2Iiwib2JqZWN0Iiwib2wiLCJvcHRncm91cCIsIm91dHB1dCIsInAiLCJwcmUiLCJwcm9ncmVzcyIsInEiLCJycCIsInJ0IiwicnVieSIsInNhbXAiLCJzZWN0aW9uIiwic2VsZWN0Iiwic21hbGwiLCJzb3VyY2UiLCJzcGFuIiwic3Ryb25nIiwic3ViIiwic3VtbWFyeSIsInN1cCIsInRhYmxlIiwidGJvZHkiLCJ0ZCIsInRleHRhcmVhIiwidGZvb3QiLCJ0aCIsInRoZWFkIiwidGltZSIsInRyIiwidHJhY2siLCJ1IiwidWwiLCJ2YXIkIiwidmlkZW8iLCJ3YnIiLCJodG1sIiwicmVzb3VyY2UiLCJpbml0IiwiZnJlZSIsInVzZSIsInIiLCJIdG1sIl0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUosR0FBQUMsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLElBQUE7QUFBQSxZQUFBQyxLQUFBQztBQUFBQSxRQUFBLElDV3VEO0FBQUEsSUFMakQ7QUFBQSxJQUswQjtBQUFBLEdBQTZDO0FBQUEsWUFBQUMsV0FBQUMsR0FBQWQsR0FDdEQsOEJBQTJCO0FBQUEsWUFBQWUsUUFBQUQ7QUFBQUEsSUFDaEM7QUFBQSw0QkFBQUUsR0FBb0IsdUJBQUksU0FBVztBQUFBO0FBQUEsWUFBQUMsS0FBQUgsR0FBQUksSUFDbkMsaURBQStCO0FBQUEsWUFBQUMsT0FBQUwsR0FBQU07QUFBQUEsSUFDekIsaURBQWdDO0FBQUE7QUFBQSxZQUFBQyxJQUFBQyxLQUFBQztBQUFBQSxJQWdCakMsdUJEL0J2QixtQ0MrQnVCO0FBQUEsR0FBZ0M7QUFBQSxZQUFBQyxHQUFBQyxNQUFBQyxNQUNsQyx3QkFBMEI7QUFBQSxZQUFBQyxRQUFBZjtBQUFBQSxJQUUvQixZQUNGO0FBQUEsUUFBQWdCLEtB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QUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGdCQUFBak07QUFBQUEsUUF3RVIsc0JENVhsQix3Q0M0WGtCO0FBQUEsT0FBcUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsR0F4RWI7QUFBQTtBQUFBLEVEcFQxQiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQ1OTM1LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6ImhlbGl4LmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9oZWxpeC9WaWV3Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwibW9kdWxlIENvbW1lbnQgPSBTdGR3ZWIuRG9tLkNvbW1lbnRcbm1vZHVsZSBGcmFnbWVudCA9IFN0ZHdlYi5Eb20uRnJhZ21lbnRcbm1vZHVsZSBEb2N1bWVudCA9IFN0ZHdlYi5Eb20uRG9jdW1lbnRcbm1vZHVsZSBOb2RlID0gU3Rkd2ViLkRvbS5Ob2RlXG5tb2R1bGUgRXZlbnQgPSBTdGR3ZWIuRG9tLkV2ZW50XG5cbm1vZHVsZSBMaXN0X2V4dCA9IHN0cnVjdFxuICBsZXQgcmV2X21hcGkgZiBsMCA9XG4gICAgbGV0IHJlYyBsb29wIGkgYWNjIGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IGFjY1xuICAgICAgfCB4IDo6IGwnIC0+IGxvb3AgKGkgKyAxKSAoZiBpIHggOjogYWNjKSBsJ1xuICAgIGluXG4gICAgbG9vcCAwIFtdIGwwXG5lbmRcblxubGV0IG9wdGlvbl9nZXQgb3B0aW9uID1cbiAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgfCBTb21lIHggLT4geFxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJvcHRpb24gaXMgTm9uZVwiXG5cbmxldCBvcl9mYWlsIG1zZyBvcHRpb24gPVxuICBtYXRjaCBvcHRpb24gd2l0aFxuICB8IFNvbWUgeCAtPiB4XG4gIHwgTm9uZSAtPiBmYWlsd2l0aCBtc2dcblxubGV0IGluc2VydF9hZnRlcl9hbmNob3IgfnBhcmVudCB+YW5jaG9yIG5vZGUgPVxuICBtYXRjaCBOb2RlLm5leHRfc2libGluZyBhbmNob3Igd2l0aFxuICB8IFNvbWUgYW5jaG9yX3NpYmxpbmcgLT4gTm9kZS5pbnNlcnRfYmVmb3JlIH5wYXJlbnQgfnJlZmVyZW5jZTphbmNob3Jfc2libGluZyBub2RlXG4gIHwgTm9uZSAtPiBOb2RlLmFwcGVuZF9jaGlsZCB+cGFyZW50IG5vZGVcblxuKCogU2hvdyAqKVxuXG5sZXQgZmFrZV9kZWJ1Z19odG1sIF9yZW5kZXJfY291bnQgX2NvbW1lbnRfZGF0YSBodG1sID0gaHRtbFxuXG5sZXQgcmVhbF9kZWJ1Z19odG1sID1cbiAgbGV0IGNvbG9ycyA9IFt8IFwibWFnZW50YVwiOyBcImN5YW5cIjsgXCJzYWxtb25cIjsgXCJhcXVhbWFyaW5lXCI7IFwibGltZVwiOyBcInllbGxvd1wiOyBcInBhbGVncmVlblwiIHxdIGluXG4gIGxldCBpID0gcmVmICgtMSkgaW5cbiAgbGV0IGdldF9jb2xvciAoKSA9XG4gICAgaWYgIWkgKyAxID49IEFycmF5Lmxlbmd0aCBjb2xvcnMgdGhlbiBpIDo9IDAgZWxzZSBpbmNyIGk7XG4gICAgQXJyYXkuZ2V0IGNvbG9ycyAhaVxuICBpblxuICBmdW4gcmVuZGVyX2NvdW50IGNvbW1lbnRfZGF0YSBodG1sIC0+XG4gICAgbGV0IGMgPSBnZXRfY29sb3IgKCkgaW5cbiAgICBIdG1sLmRpdlxuICAgICAgW1xuICAgICAgICBIdG1sLnN0eWxlX2xpc3RcbiAgICAgICAgICBbIChcImRpc3BsYXlcIiwgXCJmbGV4XCIpOyAoXCJmbGV4LWRpcmVjdGlvblwiLCBcImNvbHVtblwiKTsgKFwiYm9yZGVyXCIsIFwiMnB4IHNvbGlkIFwiIF4gYykgXTtcbiAgICAgIF1cbiAgICAgIFtcbiAgICAgICAgSHRtbC5zcGFuXG4gICAgICAgICAgW1xuICAgICAgICAgICAgSHRtbC5zdHlsZV9saXN0XG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAoXCJiYWNrZ3JvdW5kLWNvbG9yXCIsIGMpO1xuICAgICAgICAgICAgICAgIChcImZvbnQtc2l6ZVwiLCBcInNtYWxsXCIpO1xuICAgICAgICAgICAgICAgIChcImZvbnQtd2VpZ2h0XCIsIFwiYm9sZFwiKTtcbiAgICAgICAgICAgICAgICAoXCJmb250LWZhbWlseVwiLCBcImNvdXJpZXJcIik7XG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgXVxuICAgICAgICAgIFsgSHRtbC50ZXh0IGNvbW1lbnRfZGF0YTsgSHRtbC50ZXh0IFwiI1wiOyBIdG1sLmludCByZW5kZXJfY291bnQgXTtcbiAgICAgICAgaHRtbDtcbiAgICAgIF1cblxubGV0IGRlYnVnX2h0bWwgOiAoaW50IC0+IHN0cmluZyAtPiBIdG1sLmh0bWwgLT4gSHRtbC5odG1sKSByZWYgPSByZWYgZmFrZV9kZWJ1Z19odG1sXG5sZXQgZW5hYmxlX2RlYnVnIGZsYWcgPSBkZWJ1Z19odG1sIDo9IGlmIGZsYWcgdGhlbiByZWFsX2RlYnVnX2h0bWwgZWxzZSBmYWtlX2RlYnVnX2h0bWxcblxubGV0IGdlbl9zaG93X2lkID1cbiAgbGV0IGkgPSByZWYgKC0xKSBpblxuICBmdW4gbGFiZWwgLT5cbiAgICBpbmNyIGk7XG4gICAgU3RyaW5nLmNvbmNhdCBcIlwiXG4gICAgICBbXG4gICAgICAgIFwic2hvdzpcIjtcbiAgICAgICAgc3RyaW5nX29mX2ludCAhaTtcbiAgICAgICAgKG1hdGNoIGxhYmVsIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgfCBTb21lIHggLT4gXCIvXCIgXiB4KTtcbiAgICAgIF1cblxubGV0IHNob3cgP2xhYmVsICh0b19odG1sIDogJ2EgLT4gSHRtbC5odG1sKSBzaWduYWwgOiBIdG1sLmh0bWwgPVxuIGZ1biBjdHggcGFyZW50IC0+XG4gIGxldCBjb3VudCA9IHJlZiAwIGluXG4gIGxldCBjb21tZW50X2RhdGEgPSBnZW5fc2hvd19pZCBsYWJlbCBpblxuICBsZXQgYW5jaG9yID0gQ29tbWVudC5tYWtlIGNvbW1lbnRfZGF0YSBpblxuICBsZXQgdGhpc19jdHggPSBIdG1sLkN0eC5tYWtlICgpIGluXG4gIGxldCBjdXJyX3N0YXRlID1cbiAgICBsZXQgaHRtbCA9IHRvX2h0bWwgKFNpZ25hbC5nZXQgc2lnbmFsKSBpblxuICAgIGxldCBodG1sID0gIWRlYnVnX2h0bWwgIWNvdW50IGNvbW1lbnRfZGF0YSBodG1sIGluXG4gICAgaW5jciBjb3VudDtcbiAgICByZWYgKGh0bWwgdGhpc19jdHggcGFyZW50KVxuICBpblxuICBsZXQgdW5zdWIgPVxuICAgIGxldCBpbnNlcnQgPSBOb2RlLmluc2VydF9hZnRlciB+cGFyZW50IH5yZWZlcmVuY2U6YW5jaG9yIGluXG4gICAgU2lnbmFsLnN1YidcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgaHRtbCA9IHRvX2h0bWwgeCBpblxuICAgICAgICBsZXQgaHRtbCA9ICFkZWJ1Z19odG1sICFjb3VudCBjb21tZW50X2RhdGEgaHRtbCBpblxuICAgICAgICBpbmNyIGNvdW50O1xuICAgICAgICBsZXQgbmV4dF9zdGF0ZSA9IGh0bWwgdGhpc19jdHggcGFyZW50IGluXG4gICAgICAgICFjdXJyX3N0YXRlLnVubW91bnQgKCk7XG4gICAgICAgIG5leHRfc3RhdGUubW91bnQgaW5zZXJ0O1xuICAgICAgICBjdXJyX3N0YXRlIDo9IG5leHRfc3RhdGUpXG4gICAgICBzaWduYWxcbiAgaW5cbiAgSHRtbC5DdHgub25fY2xlYW51cCB0aGlzX2N0eCB1bnN1YjtcbiAgbGV0IG1vdW50IGluc2VydCA9XG4gICAgaW5zZXJ0IGFuY2hvcjtcbiAgICAhY3Vycl9zdGF0ZS5tb3VudCBpbnNlcnQ7XG4gICAgSHRtbC5DdHgubGluayBjdHggdGhpc19jdHhcbiAgaW5cbiAgbGV0IHVubW91bnQgKCkgPVxuICAgIE5vZGUucmVtb3ZlIGFuY2hvcjtcbiAgICAhY3Vycl9zdGF0ZS51bm1vdW50ICgpO1xuICAgIEh0bWwuQ3R4LmNsZWFudXAgdGhpc19jdHg7XG4gICAgSHRtbC5DdHgudW5saW5rIGN0eCB0aGlzX2N0eFxuICBpblxuICB7IG1vdW50OyB1bm1vdW50IH1cblxubGV0IHNob3dfc29tZSA/bGFiZWwgdG9faHRtbCBvcHRfc2lnbmFsID1cbiAgc2hvdyA/bGFiZWxcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgTm9uZSAtPiBIdG1sLm51bGxcbiAgICAgIHwgU29tZSB4IC0+IHRvX2h0bWwgeClcbiAgICBvcHRfc2lnbmFsXG5cbmxldCBzaG93X29rID9sYWJlbCB0b19odG1sIHJlc19zaWduYWwgPVxuICBzaG93ID9sYWJlbFxuICAgIChmdW5jdGlvblxuICAgICAgfCBFcnJvciBfIC0+IEh0bWwubnVsbFxuICAgICAgfCBPayB4IC0+IHRvX2h0bWwgeClcbiAgICByZXNfc2lnbmFsXG5cbigqIENvbmRpdGlvbmFsICopXG5cbmxldCBnZW5fY29uZGl0aW9uYWxfaWQgPVxuICBsZXQgaSA9IHJlZiAoLTEpIGluXG4gIGZ1biAoKSAtPlxuICAgIGluY3IgaTtcbiAgICBcImNvbmRpdGlvbmFsOlwiIF4gc3RyaW5nX29mX2ludCAhaVxuXG5sZXQgY29uZGl0aW9uYWwgfm9uOnByZWQgc2lnbmFsIGh0bWwgOiBIdG1sLmh0bWwgPVxuICBzaG93IH5sYWJlbDpcImNvbmRpdGlvbmFsXCIgKGZ1biB4IC0+IGlmIHByZWQgeCB0aGVuIGh0bWwgZWxzZSBIdG1sLm51bGwpIHNpZ25hbFxuXG4oKiBFYWNoICopXG5cbm1vZHVsZSBFYWNoX2NhY2hlIDogc2lnXG4gIHR5cGUgdFxuICB0eXBlIHNsb3RzXG4gIHR5cGUga2V5XG5cbiAgdmFsIGtleSA6ICdhIC0+IGtleVxuICB2YWwgbWFrZSA6IHVuaXQgLT4gdFxuICB2YWwgc2V0IDogdCAtPiBrZXk6a2V5IC0+IHNsb3RzIC0+IHVuaXRcbiAgdmFsIGdldCA6IHQgLT4ga2V5OmtleSAtPiBzbG90cyBvcHRpb25cbiAgdmFsIGdldF9maXJzdF9zbG90IDogc2xvdHMgLT4gaW50ICogSHRtbC5FbGVtLnN0YXRlXG4gIHZhbCBhZGRfc2xvdCA6IHQgLT4ga2V5OmtleSAtPiBpbnQgLT4gSHRtbC5FbGVtLnN0YXRlIC0+IHVuaXRcbiAgdmFsIGRlbF9zbG90IDogdCAtPiBrZXk6a2V5IC0+IHNsb3RzIC0+IGludCAtPiB1bml0XG4gIHZhbCBjbGVhciA6IHQgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIG1vZHVsZSBNYXAgPSBTdGR3ZWIuTWFwXG4gIG1vZHVsZSBJdGVyYXRvciA9IFN0ZHdlYi5JdGVyYXRvclxuICBtb2R1bGUgRGljdCA9IFN0ZHdlYi5EaWN0XG5cbiAgdHlwZSBrZXkgPSBKeC50XG4gIHR5cGUgc2xvdHMgPSBIdG1sLkVsZW0uc3RhdGUgTWFwLnRcbiAgdHlwZSB0ID0gc2xvdHMgTWFwLnRcblxuICBsZXQga2V5IHggPSBKeC5FbmNvZGVyLmFueSB4XG4gIGxldCBtYWtlID0gTWFwLm1ha2VcbiAgbGV0IG1ha2Vfc2xvdHMgPSBNYXAubWFrZVxuXG4gIGxldCBnZXRfZmlyc3Rfc2xvdCAoc2xvdHMgOiBzbG90cykgPVxuICAgIG1hdGNoIE1hcC5maXJzdF9rZXkgc2xvdHMgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIkJVRzogZ2V0X3Nsb3Q6IHNsb3RzIG11c3Qgbm90IGJlIGVtcHR5XCJcbiAgICB8IFNvbWUgaWR4X2pzIC0+XG4gICAgICBsZXQgaWR4ID0gSnguRGVjb2Rlci5pbnQgaWR4X2pzIGluXG4gICAgICBsZXQgaHRtbCA9IE1hcC5nZXQgc2xvdHMgaWR4X2pzIHw+IE9wdGlvbi5nZXQgaW5cbiAgICAgIChpZHgsIGh0bWwpXG5cbiAgbGV0IHNldCBjYWNoZSB+a2V5IChzbG90cyA6IHNsb3RzKSA9IE1hcC5zZXQgY2FjaGUga2V5IHNsb3RzXG4gIGxldCBnZXQgKGNhY2hlIDogdCkgfmtleSA9IE1hcC5nZXQgY2FjaGUga2V5XG5cbiAgbGV0IGFkZF9zbG90IChjYWNoZSA6IHQpIH5rZXkgaWR4IGh0bWwgPVxuICAgIGxldCBzbG90cyA6IHNsb3RzID1cbiAgICAgIG1hdGNoIGdldCBjYWNoZSB+a2V5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBtYWtlX3Nsb3RzICgpXG4gICAgICB8IFNvbWUgc2xvdHMgLT4gc2xvdHNcbiAgICBpblxuICAgIE1hcC5zZXQgc2xvdHMgKEp4LkVuY29kZXIuaW50IGlkeCkgaHRtbDtcbiAgICBzZXQgY2FjaGUgfmtleSBzbG90c1xuXG4gIGxldCBkZWxfc2xvdCBjYWNoZSB+a2V5IHNsb3RzIGlkeCA9XG4gICAgTWFwLmRlbGV0ZSBzbG90cyAoSnguRW5jb2Rlci5pbnQgaWR4KTtcbiAgICBpZiBNYXAuc2l6ZSBzbG90cyA9IDAgdGhlbiBNYXAuZGVsZXRlIGNhY2hlIGtleVxuXG4gIGxldCBjbGVhciBjYWNoZSA9XG4gICAgTWFwLnZhbHVlcyBjYWNoZVxuICAgIHw+IEl0ZXJhdG9yLml0ZXIgKGZ1biAoc2xvdHMgOiBzbG90cykgLT5cbiAgICAgICAgICAgbGV0IHN0YXRlcyA9IE1hcC52YWx1ZXMgc2xvdHMgaW5cbiAgICAgICAgICAgSXRlcmF0b3IuaXRlciAoZnVuIChzIDogSHRtbC5FbGVtLnN0YXRlKSAtPiBzLnVubW91bnQgKCkpIHN0YXRlcztcbiAgICAgICAgICAgTWFwLmNsZWFyIHNsb3RzKVxuZW5kXG5cbmxldCBnZW5fZWFjaF9pZCA9XG4gIGxldCBpID0gcmVmICgtMSkgaW5cbiAgZnVuICgpIC0+XG4gICAgaW5jciBpO1xuICAgIFwiZWFjaDpcIiBeIHN0cmluZ19vZl9pbnQgIWlcblxuZXh0ZXJuYWwgZGVmYXVsdF9rZXkgOiAnYSAtPiBzdHJpbmcgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBlYWNoID9rZXk6KHRvX2tleSA9IGRlZmF1bHRfa2V5KSAodG9faHRtbCA6ICdhIC0+IEh0bWwuaHRtbCkgaXRlbXNfc2lnbmFsIDogSHRtbC5odG1sID1cbiBmdW4gY3R4IHBhcmVudCAtPlxuICBsZXQgYW5jaG9yID0gQ29tbWVudC5tYWtlIChnZW5fZWFjaF9pZCAoKSkgaW5cbiAgbGV0IGZyYWcgPSBGcmFnbWVudC5tYWtlICgpIGluXG4gIGxldCBjdXJyX2NhY2hlID0gcmVmIChFYWNoX2NhY2hlLm1ha2UgKCkpIGluXG4gIGxldCB0aGlzX2N0eCA9IEh0bWwuQ3R4Lm1ha2UgKCkgaW5cbiAgbGV0IHVuc3ViID1cbiAgICBTaWduYWwuc3ViJ1xuICAgICAgKGZ1biBuZXdfaXRlbXMgLT5cbiAgICAgICAgbGV0IG5leHRfY2FjaGUgPSBFYWNoX2NhY2hlLm1ha2UgKCkgaW5cbiAgICAgICAgTGlzdC5pdGVyaVxuICAgICAgICAgIChmdW4gaiBpdGVtIC0+XG4gICAgICAgICAgICBsZXQga2V5ID0gRWFjaF9jYWNoZS5rZXkgKHRvX2tleSBpdGVtKSBpblxuICAgICAgICAgICAgbWF0Y2ggRWFjaF9jYWNoZS5nZXQgIWN1cnJfY2FjaGUgfmtleSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbGV0IGh0bWwgOiBIdG1sLmh0bWwgPSB0b19odG1sIGl0ZW0gaW5cbiAgICAgICAgICAgICAgbGV0IHN0YXRlID0gaHRtbCB0aGlzX2N0eCBwYXJlbnQgaW5cbiAgICAgICAgICAgICAgc3RhdGUubW91bnQgKE5vZGUuYXBwZW5kX2NoaWxkIH5wYXJlbnQ6ZnJhZyk7XG4gICAgICAgICAgICAgIEVhY2hfY2FjaGUuYWRkX3Nsb3QgbmV4dF9jYWNoZSB+a2V5IGogc3RhdGVcbiAgICAgICAgICAgIHwgU29tZSBvbGRfc2xvdHMgLT5cbiAgICAgICAgICAgICAgbGV0IGksIGlfc3RhdGUgPSBFYWNoX2NhY2hlLmdldF9maXJzdF9zbG90IG9sZF9zbG90cyBpblxuICAgICAgICAgICAgICBpX3N0YXRlLm1vdW50IChOb2RlLmFwcGVuZF9jaGlsZCB+cGFyZW50OmZyYWcpO1xuICAgICAgICAgICAgICBFYWNoX2NhY2hlLmRlbF9zbG90ICFjdXJyX2NhY2hlIH5rZXkgb2xkX3Nsb3RzIGk7XG4gICAgICAgICAgICAgIEVhY2hfY2FjaGUuYWRkX3Nsb3QgbmV4dF9jYWNoZSB+a2V5IGogaV9zdGF0ZSlcbiAgICAgICAgICBuZXdfaXRlbXM7XG4gICAgICAgIEVhY2hfY2FjaGUuY2xlYXIgIWN1cnJfY2FjaGU7XG4gICAgICAgIE5vZGUuaW5zZXJ0X2FmdGVyIH5wYXJlbnQgfnJlZmVyZW5jZTphbmNob3IgZnJhZztcbiAgICAgICAgY3Vycl9jYWNoZSA6PSBuZXh0X2NhY2hlKVxuICAgICAgaXRlbXNfc2lnbmFsXG4gIGluXG4gIEh0bWwuQ3R4Lm9uX2NsZWFudXAgdGhpc19jdHggdW5zdWI7XG4gIGxldCBtb3VudCBpbnNlcnQgPVxuICAgIGluc2VydCBhbmNob3I7XG4gICAgbGV0IGl0ZW1zID0gU2lnbmFsLmdldCBpdGVtc19zaWduYWwgaW5cbiAgICBMaXN0Lml0ZXJpXG4gICAgICAoZnVuIGkgaXRlbSAtPlxuICAgICAgICBsZXQgaHRtbCA6IEh0bWwuaHRtbCA9IHRvX2h0bWwgaXRlbSBpblxuICAgICAgICBsZXQgc3RhdGUgPSBodG1sIHRoaXNfY3R4IHBhcmVudCBpblxuICAgICAgICBzdGF0ZS5tb3VudCAoTm9kZS5hcHBlbmRfY2hpbGQgfnBhcmVudDpmcmFnKTtcbiAgICAgICAgbGV0IGtleSA9IEVhY2hfY2FjaGUua2V5IGl0ZW0gaW5cbiAgICAgICAgRWFjaF9jYWNoZS5hZGRfc2xvdCAhY3Vycl9jYWNoZSB+a2V5IGkgc3RhdGUpXG4gICAgICBpdGVtcztcbiAgICBOb2RlLmluc2VydF9hZnRlciB+cGFyZW50IH5yZWZlcmVuY2U6YW5jaG9yIGZyYWc7XG4gICAgSHRtbC5DdHgubGluayBjdHggdGhpc19jdHhcbiAgaW5cbiAgbGV0IHVubW91bnQgKCkgPVxuICAgIEVhY2hfY2FjaGUuY2xlYXIgIWN1cnJfY2FjaGU7XG4gICAgSHRtbC5DdHguY2xlYW51cCB0aGlzX2N0eDtcbiAgICBIdG1sLkN0eC51bmxpbmsgY3R4IHRoaXNfY3R4XG4gIGluXG4gIHsgbW91bnQ7IHVubW91bnQgfVxuXG4oKiBCaW5kICopXG5cbmxldCBiaW5kIHRvX2F0dHIgc2lnbmFsIGN0eCBub2RlID1cbiAgbGV0IGN1cnJfc3RhdGUgPSByZWYgeyBIdG1sLkF0dHIuc2V0ID0gaWdub3JlOyB1bnNldCA9IGlnbm9yZSB9IGluXG4gIGxldCB1bnN1YiA9XG4gICAgU2lnbmFsLnN1YidcbiAgICAgIChmdW4geCAtPlxuICAgICAgICAhY3Vycl9zdGF0ZS51bnNldCAoKTtcbiAgICAgICAgbGV0IG5leHRfYXR0ciA6IEh0bWwuYXR0ciA9IHRvX2F0dHIgeCBpblxuICAgICAgICBsZXQgbmV4dF9zdGF0ZSA9IG5leHRfYXR0ciBjdHggbm9kZSBpblxuICAgICAgICBuZXh0X3N0YXRlLnNldCAoKTtcbiAgICAgICAgY3Vycl9zdGF0ZSA6PSBuZXh0X3N0YXRlKVxuICAgICAgc2lnbmFsXG4gIGluXG4gIEh0bWwuQ3R4Lm9uX2NsZWFudXAgY3R4IHVuc3ViO1xuICBsZXQgc2V0ICgpID1cbiAgICBsZXQgbmV4dF9hdHRyIDogSHRtbC5hdHRyID0gdG9fYXR0ciAoU2lnbmFsLmdldCBzaWduYWwpIGluXG4gICAgbGV0IG5leHRfc3RhdGUgPSBuZXh0X2F0dHIgY3R4IG5vZGUgaW5cbiAgICBuZXh0X3N0YXRlLnNldCAoKTtcbiAgICBjdXJyX3N0YXRlIDo9IG5leHRfc3RhdGVcbiAgaW5cbiAgbGV0IHVuc2V0ICgpID0gIWN1cnJfc3RhdGUudW5zZXQgKCkgaW5cbiAgeyBIdG1sLkF0dHIuc2V0OyB1bnNldCB9XG5cbmxldCBiaW5kX3NvbWUgdG9fYXR0ciBvcHRfc2lnbmFsID1cbiAgYmluZFxuICAgIChmdW5jdGlvblxuICAgICAgfCBOb25lIC0+IEh0bWwuQXR0ci5ub3BcbiAgICAgIHwgU29tZSB4IC0+IHRvX2F0dHIgeClcbiAgICBvcHRfc2lnbmFsXG5cbmxldCBiaW5kX29rIHRvX2F0dHIgcmVzX3NpZ25hbCA9XG4gIGJpbmRcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgRXJyb3IgXyAtPiBIdG1sLkF0dHIubm9wXG4gICAgICB8IE9rIHggLT4gdG9fYXR0ciB4KVxuICAgIHJlc19zaWduYWxcblxuKCogVG9nZ2xlICopXG5cbmxldCB0b2dnbGUgfm9uOnByZWQgc2lnbmFsIGF0dHIgOiBIdG1sLmF0dHIgPVxuIGZ1biBjdHggbm9kZSAtPlxuICBsZXQgYWN0aXZlX3NpZyA9IFNpZ25hbC51bmlxIH5lcXVhbDooID09ICkgKFNpZ25hbC5tYXAgcHJlZCBzaWduYWwpIGluXG4gIGxldCBzdGF0ZSA6IEh0bWwuQXR0ci5zdGF0ZSA9IGF0dHIgY3R4IG5vZGUgaW5cbiAgbGV0IGlzX2FjdGl2ZSA9IHJlZiBmYWxzZSBpblxuICBsZXQgdW5zdWIgPVxuICAgIFNpZ25hbC51c2UnXG4gICAgICAoZnVuIGFjdGl2ZSAtPlxuICAgICAgICBpZiBhY3RpdmUgdGhlbiBzdGF0ZS5zZXQgKCkgZWxzZSBzdGF0ZS51bnNldCAoKTtcbiAgICAgICAgaXNfYWN0aXZlIDo9IGFjdGl2ZSlcbiAgICAgIGFjdGl2ZV9zaWdcbiAgaW5cbiAgSHRtbC5DdHgub25fY2xlYW51cCBjdHggdW5zdWI7XG4gIGxldCBzZXQgKCkgPVxuICAgIGlzX2FjdGl2ZSA6PSBTaWduYWwuZ2V0IGFjdGl2ZV9zaWc7XG4gICAgaWYgIWlzX2FjdGl2ZSB0aGVuIHN0YXRlLnNldCAoKSBlbHNlIHN0YXRlLnVuc2V0ICgpXG4gIGluXG4gIGxldCB1bnNldCAoKSA9IGlmICFpc19hY3RpdmUgdGhlbiBzdGF0ZS51bnNldCAoKSBpblxuICB7IEh0bWwuQXR0ci5zZXQ7IHVuc2V0IH1cblxuKCogVmlzaWJsZSAqKVxuXG5sZXQgdmlzaWJsZSB+b246cHJlZCBzaWduYWwgOiBIdG1sLkF0dHIudCA9XG4gIHRvZ2dsZSB+b246KGZ1biB4IC0+IG5vdCAocHJlZCB4KSkgc2lnbmFsIChIdG1sLnN0eWxlX2xpc3QgWyAoXCJkaXNwbGF5XCIsIFwibm9uZVwiKSBdKVxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiZ2xvYmFsX2RhdGEiLCJIdG1sIiwiU2lnbmFsIiwiU3Rkd2ViIiwiU3RkbGliX0xpc3QiLCJTdGRsaWIiLCJKeCIsIlN0ZGxpYl9PcHRpb24iLCJTdGRsaWJfU3RyaW5nIiwicmV2X21hcGkiLCJsMCIsImkiLCJhY2MiLCJsIiwieCIsIm9wdGlvbl9nZXQiLCJvcHRpb24iLCJvcl9mYWlsIiwibXNnIiwiaW5zZXJ0X2FmdGVyX2FuY2hvciIsInBhcmVudCIsImFuY2hvciIsIm5vZGUiLCJtYXRjaCIsImFuY2hvcl9zaWJsaW5nIiwiZmFrZV9kZWJ1Z19odG1sIiwicmVuZGVyX2NvdW50IiwiY29tbWVudF9kYXRhIiwiaHRtbCIsImNvbG9ycyIsImNzdF9kaXNwbGF5IiwicmVhbF9kZWJ1Z19odG1sIiwiYyIsImRlYnVnX2h0bWwiLCJlbmFibGVfZGVidWciLCJmbGFnIiwiZ2VuX3Nob3dfaWQiLCJsYWJlbCIsImNzdCIsInNob3ciLCJ0b19odG1sIiwic2lnbmFsIiwiY3R4IiwidGhpc19jdHgiLCJjb3VudCIsImN1cnJfc3RhdGUiLCJpbnNlcnQiLCJ1bnN1YiIsIm5leHRfc3RhdGUiLCJtb3VudCIsInVubW91bnQiLCJwYXJhbSIsInNob3dfc29tZSIsIm9wdF9zaWduYWwiLCJzaG93X29rIiwicmVzX3NpZ25hbCIsImdlbl9jb25kaXRpb25hbF9pZCIsImNvbmRpdGlvbmFsIiwicHJlZCIsImtleSIsIm1ha2UiLCJtYWtlX3Nsb3RzIiwiZ2V0X2ZpcnN0X3Nsb3QiLCJzbG90cyIsImlkeF9qcyIsImlkeCIsInNldCIsImNhY2hlIiwiZ2V0IiwiYWRkX3Nsb3QiLCJkZWxfc2xvdCIsImNsZWFyIiwic3RhdGVzIiwicyIsImR1bW15IiwiZ2VuX2VhY2hfaWQiLCJlYWNoIiwib3B0IiwiaXRlbXNfc2lnbmFsIiwidG9fa2V5IiwiZnJhZyIsImN1cnJfY2FjaGUiLCJuZXdfaXRlbXMiLCJuZXh0X2NhY2hlIiwiaiIsIml0ZW0iLCJvbGRfc2xvdHMiLCJpX3N0YXRlIiwic3RhdGUiLCJpdGVtcyIsImJpbmQiLCJ0b19hdHRyIiwibmV4dF9hdHRyIiwidW5zZXQiLCJiaW5kX3NvbWUiLCJiaW5kX29rIiwidG9nZ2xlIiwiYXR0ciIsImFjdGl2ZV9zaWciLCJpc19hY3RpdmUiLCJhY3RpdmUiLCJ2aXNpYmxlIl0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUosR0FBQUMsSUFBQUUsSUFBQUU7QUFBQUEsSUFB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ZXJzaW9uIjozLCJmaWxlIjoiaGVsaXguY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL2hlbGl4L1RpbWUubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCJtb2R1bGUgV2luZG93ID0gU3Rkd2ViLkRvbS5XaW5kb3dcblxubGV0IHRpY2sgfm1zID1cbiAgbGV0IHMgPSBTaWduYWwubWFrZSB+ZXF1YWw6KGZ1biBfIF8gLT4gZmFsc2UpICgpIGluXG4gIGxldCBfID0gV2luZG93LnNldF9pbnRlcnZhbCAoZnVuICgpIC0+IFNpZ25hbC5lbWl0ICgpIHMpIG1zIGluXG4gIHNcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jYWxsMiIsImYiLCJhMCIsImExIiwiZ2xvYmFsX2RhdGEiLCJTaWduYWwiLCJTdGR3ZWIiLCJ0aWNrIiwibXMiLCJzIiwicGFyYW0iXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUMsSUFBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsWUFBQUMsS0FBQUM7QUFBQUEsUUFBQUMsSUNHVSxxQ0FBQUMsT0FBK0IsU0FBSztBQUFBLElBQ3BDO0FBQUE7QUFBQSxlQUFBQSxPQUErQixvQ0FBZ0I7QUFBQTtBQUFBLElBQUk7QUFBQSxHQUMxRDtBQUFBLEdETEgiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0NjM5OCwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJoZWxpeC5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvaGVsaXgvUm91dGVyLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwib3BlbiBzdHJ1Y3RcbiAgbW9kdWxlIFN0cmluZ19tYXAgPSBNYXAuTWFrZSAoU3RyaW5nKVxuXG4gIHR5cGUgJ2Egc2lnbmFsID0gJ2EgU2lnbmFsLnRcblxuICBsZXQgKCBvciApIG9wdCBkZWZhdWx0ID1cbiAgICBtYXRjaCBvcHQgd2l0aFxuICAgIHwgU29tZSB4IC0+IHhcbiAgICB8IE5vbmUgLT4gZGVmYXVsdFxuXG4gIGxldCBvcl9mYWlsIG1zZyBvcHQgPVxuICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgfCBTb21lIHggLT4geFxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBtc2dcblxuICBsZXQgcmVjIGxpc3Rfc3RhcnRzX3dpdGggfmVxdWFsIH5wcmVmaXg6cCBsID1cbiAgICBtYXRjaCBwIHdpdGhcbiAgICB8IFtdIC0+IHRydWVcbiAgICB8IHAwIDo6IHAnIC0+IChcbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBsMCA6OiBsJyB3aGVuIGVxdWFsIHAwIGwwIC0+IGxpc3Rfc3RhcnRzX3dpdGggfmVxdWFsIH5wcmVmaXg6cCcgbCdcbiAgICAgIHwgXyAtPiBmYWxzZSlcbmVuZFxuXG50eXBlICdhIHZhciA9IHtcbiAgbGFiZWwgOiBzdHJpbmc7XG4gIHRvX3N0cmluZyA6ICdhIC0+IHN0cmluZztcbiAgb2Zfc3RyaW5nIDogc3RyaW5nIC0+ICdhIG9wdGlvbjtcbiAgZXF1YWwgOiAnYSAtPiAnYSAtPiBib29sO1xufVxuXG5sZXQgdmFyIH5vZl9zdHJpbmcgfnRvX3N0cmluZyA/KGVxdWFsID0gU3RkbGliLiggPSApKSBsYWJlbCA9IHsgbGFiZWw7IHRvX3N0cmluZzsgb2Zfc3RyaW5nOyBlcXVhbCB9XG5cbmxldCBpbnQgPVxuICB7IGxhYmVsID0gXCJpbnRcIjsgdG9fc3RyaW5nID0gc3RyaW5nX29mX2ludDsgb2Zfc3RyaW5nID0gaW50X29mX3N0cmluZ19vcHQ7IGVxdWFsID0gSW50LmVxdWFsIH1cblxubGV0IHN0cmluZyA9IHsgbGFiZWwgPSBcInN0cmluZ1wiOyB0b19zdHJpbmcgPSBGdW4uaWQ7IG9mX3N0cmluZyA9IE9wdGlvbi5zb21lOyBlcXVhbCA9IFN0cmluZy5lcXVhbCB9XG5cbmxldCBxdWVyeSA9XG4gIHtcbiAgICBsYWJlbCA9IFwicXVlcnlcIjtcbiAgICB0b19zdHJpbmcgPSBTdGR3ZWIuVXJsX3NlYXJjaF9wYXJhbXMudG9fc3RyaW5nO1xuICAgIG9mX3N0cmluZyA9IChmdW4gc3RyIC0+IFNvbWUgKFN0ZHdlYi5Vcmxfc2VhcmNoX3BhcmFtcy5vZl9zdHJpbmcgc3RyKSk7XG4gICAgZXF1YWwgPVxuICAgICAgKGZ1biB4MSB4MiAtPlxuICAgICAgICBTdHJpbmcuZXF1YWwgKFN0ZHdlYi5Vcmxfc2VhcmNoX3BhcmFtcy50b19zdHJpbmcgeDEpIChTdGR3ZWIuVXJsX3NlYXJjaF9wYXJhbXMudG9fc3RyaW5nIHgyKSk7XG4gIH1cblxudHlwZSB0ID0geyBwcmVmaXggOiBzdHJpbmcgbGlzdCBzaWduYWw7IHJlc3QgOiBzdHJpbmcgbGlzdCBzaWduYWwgfVxuXG50eXBlICgndmlldywgJ2xpbmssICdhKSBwYXRoID1cbiAgfCBDb25zdCA6IHN0cmluZyAqICgndmlldywgJ2xpbmssICdhKSBwYXRoIC0+ICgndmlldywgJ2xpbmssICdhKSBwYXRoXG4gIHwgVmFyIDpcbiAgICAgICd2IHZhciAqICd2IHNpZ25hbCBvcHRpb24gKiAoJ3ZpZXcsICdsaW5rLCAnYSkgcGF0aFxuICAgICAgLT4gKCd2IHNpZ25hbCAtPiAndmlldywgJ3YgLT4gJ2xpbmssICdhKSBwYXRoXG4gIHwgUmVzdCA6ICh0IC0+ICdhLCAoJ3ZpZXcsICdsaW5rLCAnYSkgcGF0aCAtPiAnbGluaywgJ2EpIHBhdGhcbiAgfCBFbmQgOiAodW5pdCAtPiAnYSwgJ2EsICdhKSBwYXRoXG5cbnR5cGUgcm91dGUgPVxuICB8IFJvdXRlIDogKCd2aWV3LCAnbGluaywgSHRtbC5odG1sKSBwYXRoICogJ3ZpZXcgLT4gcm91dGVcbiAgfCBBbGlhcyA6ICh1bml0IC0+ICdhLCAnYSwgJ2EpIHBhdGggKiBzdHJpbmcgbGlzdCAtPiByb3V0ZVxuXG50eXBlIGxvb2t1cCA9IHsgcm91dGUgOiByb3V0ZTsgbWF0Y2hlZCA6IHN0cmluZyBsaXN0OyBhcmdzIDogc3RyaW5nIGxpc3QgfVxuKCogUm91dGluZyB0YWJsZSBsb29rdXAgcmVzdWx0LiAqKVxuXG50eXBlIGNhcHR1cmUgPSBNYXRjaCBvZiByb3V0ZSB8IE5vX21hdGNoIHwgUGFydGlhbCBvZiByb3V0ZVxuKCogV2hhdCBkb2VzIGEgcGF0aCBpbiBhIHJvdXRpbmcgdGFibGUgY2FwdHVyZT8uICopXG5cbnR5cGUgdGFibGUgPSB7IGNhcHR1cmUgOiBjYXB0dXJlOyBjaGlsZHJlbiA6IHRhYmxlIFN0cmluZ19tYXAudCB9XG5cbmxldCByb3V0ZSBwYXRoIHJlbmRlciA9IFJvdXRlIChwYXRoLCByZW5kZXIpXG5cbmxldCBzdHJpbmdfb2ZfcGF0aCA6IHR5cGUgYSBrIG91dC4gKGEsIGssIG91dCkgcGF0aCAtPiBzdHJpbmcgPVxuIGZ1biBwYXRoMCAtPlxuICBsZXQgcmVjIGxvb3AgOiB0eXBlIGEgayBvdXQuIChhLCBrLCBvdXQpIHBhdGggLT4gc3RyaW5nID1cbiAgIGZ1biBwYXRoIC0+XG4gICAgbWF0Y2ggcGF0aCB3aXRoXG4gICAgfCBFbmQgLT4gXCJcIlxuICAgIHwgUmVzdCAtPiBcIioqXCJcbiAgICB8IENvbnN0IChjb25zdCwgRW5kKSAtPiBjb25zdFxuICAgIHwgQ29uc3QgKGNvbnN0LCB0YWlsKSAtPiBTdHJpbmcuY29uY2F0IFwiL1wiIFsgY29uc3Q7IGxvb3AgdGFpbCBdXG4gICAgfCBWYXIgKHZhciwgXywgRW5kKSAtPiBcIjpcIiBeIHZhci5sYWJlbFxuICAgIHwgVmFyICh2YXIsIF8sIHRhaWwpIC0+IFN0cmluZy5jb25jYXQgXCIvXCIgWyB2YXIubGFiZWw7IGxvb3AgdGFpbCBdXG4gIGluXG4gIG1hdGNoIHBhdGgwIHdpdGhcbiAgfCBFbmQgLT4gXCIvXCJcbiAgfCBfIC0+IFN0cmluZy5jb25jYXQgXCJcIiBbIFwiL1wiOyBsb29wIHBhdGgwIF1cblxubGV0IGxpc3Rfb2ZfcGF0aCA6IHR5cGUgYSBrIG91dC4gKGEsIGssIG91dCkgcGF0aCAtPiBzdHJpbmcgbGlzdCA9XG4gZnVuIHBhdGgwIC0+XG4gIGxldCByZWMgbG9vcCA6IHR5cGUgYSBrIG91dC4gKGEsIGssIG91dCkgcGF0aCAtPiBzdHJpbmcgbGlzdCA9XG4gICBmdW4gcGF0aCAtPlxuICAgIG1hdGNoIHBhdGggd2l0aFxuICAgIHwgRW5kIC0+IFtdXG4gICAgfCBSZXN0IC0+IFsgXCIqKlwiIF1cbiAgICB8IENvbnN0IChjb25zdCwgRW5kKSAtPiBbIGNvbnN0IF1cbiAgICB8IENvbnN0IChjb25zdCwgdGFpbCkgLT4gWyBjb25zdCBdIEAgbG9vcCB0YWlsXG4gICAgfCBWYXIgKHZhciwgXywgRW5kKSAtPiBbIFwiOlwiIF4gdmFyLmxhYmVsIF1cbiAgICB8IFZhciAodmFyLCBfLCB0YWlsKSAtPiBbIHZhci5sYWJlbCBdIEAgbG9vcCB0YWlsXG4gIGluXG4gIG1hdGNoIHBhdGgwIHdpdGhcbiAgfCBFbmQgLT4gW11cbiAgfCBfIC0+IGxvb3AgcGF0aDBcblxubW9kdWxlIFRhYmxlID0gc3RydWN0XG4gIHR5cGUgdCA9IHRhYmxlXG5cbiAgbGV0IGVtcHR5ID0geyBjYXB0dXJlID0gTm9fbWF0Y2g7IGNoaWxkcmVuID0gU3RyaW5nX21hcC5lbXB0eSB9XG5cbiAgbGV0IHJlZ2lzdGVyIHJvdXRlMCByb290ID1cbiAgICBsZXQgcmVjIGxvb3AgOiB0eXBlIGEgayBvdXQuIChhLCBrLCBvdXQpIHBhdGggLT4gdCAtPiB0ID1cbiAgICAgZnVuIHBhdGggbm9kZSAtPlxuICAgICAgbWF0Y2ggcGF0aCB3aXRoXG4gICAgICB8IEVuZCAtPiB7IG5vZGUgd2l0aCBjYXB0dXJlID0gTWF0Y2ggcm91dGUwIH1cbiAgICAgIHwgUmVzdCAtPiB7IG5vZGUgd2l0aCBjYXB0dXJlID0gUGFydGlhbCByb3V0ZTAgfVxuICAgICAgfCBDb25zdCAoY29uc3QsIHRhaWwpIC0+XG4gICAgICAgIGxldCBtYXRjaGVkX25vZGUgPVxuICAgICAgICAgIG1hdGNoIFN0cmluZ19tYXAuZmluZF9vcHQgY29uc3Qgbm9kZS5jaGlsZHJlbiB3aXRoXG4gICAgICAgICAgfCBTb21lIGV4aXN0aW5nX25vZGUgLT4gZXhpc3Rpbmdfbm9kZVxuICAgICAgICAgIHwgTm9uZSAtPiB7IGNhcHR1cmUgPSBOb19tYXRjaDsgY2hpbGRyZW4gPSBTdHJpbmdfbWFwLmVtcHR5IH1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHRhaWwgPSBsb29wIHRhaWwgbWF0Y2hlZF9ub2RlIGluXG4gICAgICAgIHsgbm9kZSB3aXRoIGNoaWxkcmVuID0gU3RyaW5nX21hcC5hZGQgY29uc3QgdGFpbCBub2RlLmNoaWxkcmVuIH1cbiAgICAgIHwgVmFyIChfLCBfLCB0YWlsKSAtPlxuICAgICAgICBsZXQgbWF0Y2hlZF9ub2RlID1cbiAgICAgICAgICBtYXRjaCBTdHJpbmdfbWFwLmZpbmRfb3B0IFwiOlwiIG5vZGUuY2hpbGRyZW4gd2l0aFxuICAgICAgICAgIHwgU29tZSBleGlzdGluZ19ub2RlIC0+IGV4aXN0aW5nX25vZGVcbiAgICAgICAgICB8IE5vbmUgLT4geyBjYXB0dXJlID0gTm9fbWF0Y2g7IGNoaWxkcmVuID0gU3RyaW5nX21hcC5lbXB0eSB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCB0YWlsID0gbG9vcCB0YWlsIG1hdGNoZWRfbm9kZSBpblxuICAgICAgICB7IG5vZGUgd2l0aCBjaGlsZHJlbiA9IFN0cmluZ19tYXAuYWRkIFwiOlwiIHRhaWwgbm9kZS5jaGlsZHJlbiB9XG4gICAgaW5cbiAgICBtYXRjaCByb3V0ZTAgd2l0aFxuICAgIHwgUm91dGUgKHBhdGgwLCBfKSAtPiBsb29wIHBhdGgwIHJvb3RcbiAgICB8IEFsaWFzIChwYXRoMCwgXykgLT4gbG9vcCBwYXRoMCByb290XG5cbiAgZXhjZXB0aW9uIEluY29tcGxldGVfbWF0Y2ggb2Ygc3RyaW5nIGxpc3RcbiAgZXhjZXB0aW9uIE5vX21hdGNoIG9mIHN0cmluZyBsaXN0XG5cbiAgbGV0IGxvb2t1cCAodGFibGUwIDogdCkgKGlucHV0MCA6IHN0cmluZyBsaXN0KSA6IChsb29rdXAsIGV4bikgcmVzdWx0ID1cbiAgICBsZXQgcmVjIGxvb3AgP2J0IG5vZGUgaW5wdXQgbWF0Y2hlZCBhcmdzID1cbiAgICAgIG1hdGNoIGlucHV0IHdpdGhcbiAgICAgIHwgW10gLT4gKFxuICAgICAgICBtYXRjaCBub2RlLmNhcHR1cmUgd2l0aFxuICAgICAgICB8IE5vX21hdGNoIC0+IChcbiAgICAgICAgICAoKiBJZiB3ZSBoYXZlIGEgYmFja3RyYWNraW5nIGNvbnRpbnVhdGlvbiwgdHJ5IHRoYXQgYmVmb3JlIGZhaWxpbmcuICopXG4gICAgICAgICAgbWF0Y2ggYnQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBFcnJvciAoSW5jb21wbGV0ZV9tYXRjaCBpbnB1dDApXG4gICAgICAgICAgfCBTb21lIGJ0IC0+IGJ0ICgpKVxuICAgICAgICB8IE1hdGNoIHJvdXRlIC0+IE9rIHsgcm91dGU7IG1hdGNoZWQgPSBMaXN0LnJldiBtYXRjaGVkOyBhcmdzID0gTGlzdC5yZXYgYXJncyB9XG4gICAgICAgIHwgUGFydGlhbCByb3V0ZSAtPiBPayB7IHJvdXRlOyBtYXRjaGVkID0gTGlzdC5yZXYgbWF0Y2hlZDsgYXJncyA9IExpc3QucmV2IGFyZ3MgfSlcbiAgICAgIHwgaW5wdXRfaGQgOjogaW5wdXQnIC0+IChcbiAgICAgICAgbGV0IGJ0ICgpID1cbiAgICAgICAgICBtYXRjaCBub2RlLmNhcHR1cmUgd2l0aFxuICAgICAgICAgIHwgUGFydGlhbCByb3V0ZSAtPiBPayB7IHJvdXRlOyBtYXRjaGVkID0gTGlzdC5yZXYgbWF0Y2hlZDsgYXJncyA9IExpc3QucmV2IGFyZ3MgQCBpbnB1dCB9XG4gICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgIG1hdGNoIFN0cmluZ19tYXAuZmluZF9vcHQgXCI6XCIgbm9kZS5jaGlsZHJlbiB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgbm9kZScgLT4gbG9vcCBub2RlJyBpbnB1dCcgKGlucHV0X2hkIDo6IG1hdGNoZWQpIChpbnB1dF9oZCA6OiBhcmdzKVxuICAgICAgICAgICAgfCBOb25lIC0+IEVycm9yIChOb19tYXRjaCBpbnB1dDApKVxuICAgICAgICBpblxuICAgICAgICAoKiBGb2xsb3cgQ29uc3QuIElmIG5vdCBkZWZpbmVkLCBjaGVjayBmb3IgUmVzdCBhbmQgVmFyLlxuICAgICAgICAgICBJbiBhZGRpdGlvbiB0byBjaGVja2luZyB0aGlzIG5vdywgd2UgY3JlYXRlIGEgXCJiYWNrdHJhY2tpbmdcIlxuICAgICAgICAgICBjb250aW51YXRpb24gdGhhdCBtaWdodCBhdHRlbXB0IHRoZSBSZXN0L1ZhciBtYXRjaCBpZiBDb25zdCBmYWlscy4gKilcbiAgICAgICAgbWF0Y2ggU3RyaW5nX21hcC5maW5kX29wdCBpbnB1dF9oZCBub2RlLmNoaWxkcmVuIHdpdGhcbiAgICAgICAgfCBTb21lIG5vZGUnIC0+IGxvb3AgfmJ0IG5vZGUnIGlucHV0JyAoaW5wdXRfaGQgOjogbWF0Y2hlZCkgYXJnc1xuICAgICAgICB8IE5vbmUgLT4gYnQgKCkpXG4gICAgaW5cbiAgICBsb29wIHRhYmxlMCBpbnB1dDAgW10gW11cblxuICBsZXQgb2Zfcm91dGVfbGlzdCByb3V0ZXMgPSBMaXN0LmZvbGRfbGVmdCAoZnVuIGFjYyB4IC0+IHJlZ2lzdGVyIHggYWNjKSBlbXB0eSByb3V0ZXNcbmVuZFxuXG5sZXQgdGFibGUgPSBUYWJsZS5vZl9yb3V0ZV9saXN0XG5sZXQgbWFrZSA/KHByZWZpeCA9IFNpZ25hbC5tYWtlIFtdKSByZXN0ID0geyBwcmVmaXg7IHJlc3QgfVxubGV0IHBhdGggKHJvdXRlciA6IHQpID0gcm91dGVyLnJlc3RcbmxldCBwcmVmaXggKHJvdXRlciA6IHQpID0gcm91dGVyLnByZWZpeFxuXG5sZXQgcmVjIGV2YWxfcGF0aCA6IHR5cGUgdmlldyBsaW5rIGEuIChzdHJpbmcgbGlzdCAtPiBhKSAtPiAodmlldywgbGluaywgYSkgcGF0aCAtPiBsaW5rID1cbiBmdW4gayBwYXRoIC0+XG4gIG1hdGNoIHBhdGggd2l0aFxuICB8IEVuZCAtPiBrIFtdXG4gIHwgUmVzdCAtPiBmdW4gcGF0aDIgLT4gZXZhbF9wYXRoIGsgcGF0aDJcbiAgfCBDb25zdCAoY29uc3QsIEVuZCkgLT4gayBbIGNvbnN0IF1cbiAgfCBDb25zdCAoY29uc3QsIHRhaWwpIC0+IGV2YWxfcGF0aCAoZnVuIHJlc3QgLT4gayAoY29uc3QgOjogcmVzdCkpIHRhaWxcbiAgfCBWYXIgKHZhciwgXywgdGFpbCkgLT4gZnVuIHggLT4gZXZhbF9wYXRoIChmdW4gcmVzdCAtPiBrICh2YXIudG9fc3RyaW5nIHggOjogcmVzdCkpIHRhaWxcblxubGV0IGxvY2F0aW9uX3NldF9wYXRoIHBhdGggPVxuICBsZXQgaGFzaCA9IFwiIy9cIiBeIFN0cmluZy5jb25jYXQgXCIvXCIgcGF0aCBpblxuICBTdGR3ZWIuRG9tLkxvY2F0aW9uLnNldF9oYXNoIFN0ZHdlYi5Eb20uV2luZG93LmxvY2F0aW9uIGhhc2hcblxubGV0IGFsaWFzIHNyYyBkc3QgPSBldmFsX3BhdGggKGZ1biBzdHJfcGF0aCAtPiBBbGlhcyAoc3JjLCBzdHJfcGF0aCkpIGRzdFxuXG4oKiBnb191cCAyIGEvYi9jL2QgLT4gL2EvYiAqKVxuKCogZ29fdXAgMCBhL2IvYy9kIC0+IC9hL2IvYy9kICopXG4oKiBnb191cCAyIC8gLT4gLyAqKVxuKCogZ29fdXAgMTAgYS9iL2MvZCAtPiAvICopXG5sZXQgZ29fdXAgbjAgcHJlZml4ID1cbiAgaWYgbjAgPSAwIHRoZW4gcHJlZml4XG4gIGVsc2UgaWYgbjAgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJ1cCBtdXN0IGJlIHBvc2l0aXZlXCJcbiAgZWxzZVxuICAgIGxldCBwcmVmaXhfcmV2ID0gTGlzdC5yZXYgcHJlZml4IGluXG4gICAgbGV0IHJlYyBsb29wIG4gaW5wdXQgPVxuICAgICAgaWYgbiA9IDAgdGhlbiBMaXN0LnJldiBpbnB1dFxuICAgICAgZWxzZVxuICAgICAgICBtYXRjaCBpbnB1dCB3aXRoXG4gICAgICAgIHwgW10gLT4gW11cbiAgICAgICAgfCBfIDo6IHRsIC0+IGxvb3AgKG4gLSAxKSB0bFxuICAgIGluXG4gICAgbG9vcCBuMCBwcmVmaXhfcmV2XG5cbmxldCBnbyA/KGFic29sdXRlID0gZmFsc2UpID8odXAgPSAwKSAocm91dGVyIDogdCkgcGF0aCA9XG4gIGV2YWxfcGF0aFxuICAgIChmdW4gc3RyX3BhdGggLT5cbiAgICAgIGxldCBwcmVmaXggPSBpZiBhYnNvbHV0ZSB0aGVuIFtdIGVsc2UgZ29fdXAgdXAgKFNpZ25hbC5nZXQgcm91dGVyLnByZWZpeCkgaW5cbiAgICAgIGxvY2F0aW9uX3NldF9wYXRoIChwcmVmaXggQCBzdHJfcGF0aCkpXG4gICAgcGF0aFxuXG5sZXQgcGlja19xcGF0aCBzZWdtZW50cyA9XG4gIExpc3QubWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEVpdGhlci5MZWZ0IGNvbnN0IC0+IGNvbnN0XG4gICAgICB8IFJpZ2h0IHZhcl9zaWcgLT4gU2lnbmFsLmdldCB2YXJfc2lnKVxuICAgIHNlZ21lbnRzXG5cbmxldCBsaW5rID8oYWJzb2x1dGUgPSBmYWxzZSkgPyh1cCA9IDApID8oYWN0aXZlID0gSHRtbC5BdHRyLm5vcCkgPyhpbmFjdGl2ZSA9IEh0bWwuQXR0ci5ub3ApXG4gICAgPyhleGFjdCA9IGZhbHNlKSA/YWxpYXMgKHJvdXRlciA6IHQpIHBhdGgwID1cbiAgbGV0IGFsaWFzID0gT3B0aW9uLm1hcCBsaXN0X29mX3BhdGggYWxpYXMgaW5cbiAgbGV0IGNoZWNrX2lzX2FjdGl2ZSBsaW5rIGN1cnIgPVxuICAgIGxldCBlcSA9XG4gICAgICBpZiBleGFjdCB0aGVuIExpc3QuZXF1YWwgU3RyaW5nLmVxdWFsIGxpbmsgY3VyclxuICAgICAgZWxzZSBsaXN0X3N0YXJ0c193aXRoIH5lcXVhbDpTdHJpbmcuZXF1YWwgfnByZWZpeDpsaW5rIGN1cnJcbiAgICBpblxuICAgIG1hdGNoIGFsaWFzIHdpdGhcbiAgICB8IFNvbWUgYWxpYXMgLT4gZXEgfHwgTGlzdC5lcXVhbCBTdHJpbmcuZXF1YWwgYWxpYXMgY3VyclxuICAgIHwgTm9uZSAtPiBlcVxuICBpblxuICBldmFsX3BhdGhcbiAgICAoZnVuIHN0cl9wYXRoIC0+XG4gICAgICBsZXQgb3V0ID1cbiAgICAgICAgU2lnbmFsLm1hcFxuICAgICAgICAgIChmdW4gcHJlZml4IC0+IChnb191cCB1cCBwcmVmaXgsIHN0cl9wYXRoKSlcbiAgICAgICAgICAoaWYgYWJzb2x1dGUgdGhlbiBTaWduYWwubWFrZSBbXSBlbHNlIHJvdXRlci5wcmVmaXgpXG4gICAgICBpblxuICAgICAgU2lnbmFsLnBhaXIgb3V0IHJvdXRlci5yZXN0XG4gICAgICB8PiBTaWduYWwudW5pcSB+ZXF1YWw6KGZ1biAoKHAxLCBzMSksIHIxKSAoKHAyLCBzMiksIHIyKSAtPlxuICAgICAgICAgICAgIGlmIGFjdGl2ZSA9PSBIdG1sLkF0dHIubm9wIHRoZW5cbiAgICAgICAgICAgICAgIExpc3QuZXF1YWwgU3RyaW5nLmVxdWFsIHAxIHAyICYmIExpc3QuZXF1YWwgU3RyaW5nLmVxdWFsIHMxIHMyXG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgTGlzdC5lcXVhbCBTdHJpbmcuZXF1YWwgcDEgcDJcbiAgICAgICAgICAgICAgICYmIExpc3QuZXF1YWwgU3RyaW5nLmVxdWFsIHMxIHMyXG4gICAgICAgICAgICAgICAmJiBMaXN0LmVxdWFsIFN0cmluZy5lcXVhbCByMSByMilcbiAgICAgIHw+IFZpZXcuYmluZCAoZnVuICgobGlua19wcmVmaXgsIGxpbmtfc3VmZml4KSwgcmVzdCkgLT5cbiAgICAgICAgICAgICBsZXQgcGF0aF9zdHIgPSBTdHJpbmcuY29uY2F0IFwiL1wiICgoXCIjXCIgOjogbGlua19wcmVmaXgpIEAgbGlua19zdWZmaXgpIGluXG4gICAgICAgICAgICAgbGV0IGhyZWZfYXR0ciA9IEh0bWwuaHJlZiBwYXRoX3N0ciBpblxuICAgICAgICAgICAgIGxldCB1c2VyX2F0dHIgPVxuICAgICAgICAgICAgICAgaWYgYWN0aXZlID09IEh0bWwuQXR0ci5ub3AgdGhlbiBpbmFjdGl2ZVxuICAgICAgICAgICAgICAgZWxzZSBpZiBjaGVja19pc19hY3RpdmUgbGlua19zdWZmaXggcmVzdCB0aGVuIGFjdGl2ZVxuICAgICAgICAgICAgICAgZWxzZSBpbmFjdGl2ZVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgSHRtbC5BdHRyLmNvbWJpbmUgaHJlZl9hdHRyIHVzZXJfYXR0cikpXG4gICAgcGF0aDBcblxudHlwZSBlbWl0cyA9IHtcbiAgbXV0YWJsZSBlbWl0X2FyZ3MgOiAobm90aWZ5OlNpZ25hbC5ub3RpZmljYXRpb24gLT4gc3RyaW5nIC0+IHVuaXQpIGxpc3Q7XG4gIG11dGFibGUgZW1pdF9wcmVmaXggOiBub3RpZnk6U2lnbmFsLm5vdGlmaWNhdGlvbiAtPiBzdHJpbmcgbGlzdCAtPiB1bml0O1xuICBtdXRhYmxlIGVtaXRfcmVzdCA6IG5vdGlmeTpTaWduYWwubm90aWZpY2F0aW9uIC0+IHN0cmluZyBsaXN0IC0+IHVuaXQ7XG59XG5cbmxldCBpbml0X2VtaXRzICgpID1cbiAgeyBlbWl0X2FyZ3MgPSBbXTsgZW1pdF9wcmVmaXggPSAoZnVuIH5ub3RpZnk6XyBfIC0+ICgpKTsgZW1pdF9yZXN0ID0gKGZ1biB+bm90aWZ5Ol8gXyAtPiAoKSkgfVxuXG5sZXQgYXBwbHkgZW1pdHMgfnByZWZpeDphYnNwcmVmaXgwIH5tYXRjaGVkIH5hcmdzOmFyZ3MwID1cbiAgbGV0ICggbGV0KiApID0gUmVzdWx0LmJpbmQgaW5cbiAgbGV0IGFic3ByZWZpeF9zaWcgPSBTaWduYWwubWFwIChmdW4gYWJzcHJlZml4MCAtPiBhYnNwcmVmaXgwIEAgbWF0Y2hlZCkgYWJzcHJlZml4MCBpblxuICBsZXQgYWJzcHJlZml4X2VtaXQgfm5vdGlmeSBwcmVmaXgnID1cbiAgICBsZXQgYWJzcHJlZml4JyA9IFNpZ25hbC5nZXQgYWJzcHJlZml4MCBAIHByZWZpeCcgaW5cbiAgICBpZiBub3QgKExpc3QuZXF1YWwgU3RyaW5nLmVxdWFsIGFic3ByZWZpeCcgKFNpZ25hbC5nZXQgYWJzcHJlZml4X3NpZykpIHRoZW5cbiAgICAgIFNpZ25hbC5lbWl0IH5ub3RpZnkgYWJzcHJlZml4JyBhYnNwcmVmaXhfc2lnXG4gIGluXG4gIGVtaXRzLmVtaXRfcHJlZml4IDwtIGFic3ByZWZpeF9lbWl0O1xuICBsZXQgcmVjIGxvb3AgOlxuICAgICAgdHlwZSB2aWV3IGxpbmsuXG4gICAgICBzdHJpbmcgbGlzdCAtPlxuICAgICAgXyBsaXN0IC0+XG4gICAgICAoc3RyaW5nLCBzdHJpbmcgc2lnbmFsKSBFaXRoZXIudCBsaXN0IC0+XG4gICAgICAodmlldywgbGluaywgSHRtbC5odG1sKSBwYXRoIC0+XG4gICAgICB2aWV3IC0+XG4gICAgICAoSHRtbC5odG1sICogKHN0cmluZywgc3RyaW5nIHNpZ25hbCkgRWl0aGVyLnQgbGlzdCwgc3RyaW5nKSByZXN1bHQgPVxuICAgZnVuIGFyZ3MgYXJnc19lbWl0cyByZXZfcXVhbGlmaWVkX3BhdGggcGF0aCB2aWV3IC0+XG4gICAgbWF0Y2ggKHBhdGgsIGFyZ3MpIHdpdGhcbiAgICB8IFJlc3QsIF8gLT5cbiAgICAgIGxldCByZXN0X3NpZyA9IFNpZ25hbC5tYWtlIGFyZ3MgaW5cbiAgICAgIGxldCByZXN0X2VtaXQgfm5vdGlmeSByZXN0ID1cbiAgICAgICAgaWYgbm90IChMaXN0LmVxdWFsIFN0cmluZy5lcXVhbCByZXN0IChTaWduYWwuZ2V0IHJlc3Rfc2lnKSkgdGhlblxuICAgICAgICAgIFNpZ25hbC5lbWl0IH5ub3RpZnkgcmVzdCByZXN0X3NpZ1xuICAgICAgaW5cbiAgICAgIGVtaXRzLmVtaXRfYXJncyA8LSBMaXN0LnJldiBhcmdzX2VtaXRzO1xuICAgICAgZW1pdHMuZW1pdF9yZXN0IDwtIHJlc3RfZW1pdDtcbiAgICAgIGxldCBodG1sID0gdmlldyAoeyBwcmVmaXggPSBhYnNwcmVmaXhfc2lnOyByZXN0ID0gcmVzdF9zaWcgfSA6IHQpIGluXG4gICAgICBsZXQgcXVhbGlmaWVkX3BhdGgnID1cbiAgICAgICAgbGV0IHF1YWxpZmllZF9yZXN0ID0gTGlzdC5tYXAgKGZ1biBhcmcgLT4gRWl0aGVyLkxlZnQgYXJnKSBhcmdzIGluXG4gICAgICAgIExpc3QucmV2X2FwcGVuZCByZXZfcXVhbGlmaWVkX3BhdGggcXVhbGlmaWVkX3Jlc3RcbiAgICAgIGluXG4gICAgICBPayAoaHRtbCwgcXVhbGlmaWVkX3BhdGgnKVxuICAgIHwgRW5kLCBbXSAtPlxuICAgICAgZW1pdHMuZW1pdF9hcmdzIDwtIExpc3QucmV2IGFyZ3NfZW1pdHM7XG4gICAgICBPayAodmlldyAoKSwgTGlzdC5yZXYgcmV2X3F1YWxpZmllZF9wYXRoKVxuICAgIHwgRW5kLCBfIDo6IF8gLT4gRXJyb3IgXCJ0b28gbWFueSBhcmd1bWVudHMgZm9yIHBhdGhcIlxuICAgIHwgQ29uc3QgKGNvbnN0LCBwYXRoJyksIF8gLT4gbG9vcCBhcmdzIGFyZ3NfZW1pdHMgKExlZnQgY29uc3QgOjogcmV2X3F1YWxpZmllZF9wYXRoKSBwYXRoJyB2aWV3XG4gICAgfCBWYXIgXywgW10gLT4gRXJyb3IgXCJpbnN1ZmZpY2llbnQgYXJndW1lbnRzIGZvciBwYXRoXCJcbiAgICB8IFZhciAodmFyLCB2YXJfc2lnX29wdCwgcGF0aCcpLCBhcmdfc3RyIDo6IGFyZ3MnIC0+XG4gICAgICBsZXQqIGFyZyA9XG4gICAgICAgIHZhci5vZl9zdHJpbmcgYXJnX3N0clxuICAgICAgICB8PiBPcHRpb24udG9fcmVzdWx0XG4gICAgICAgICAgICAgfm5vbmU6KFN0cmluZy5jb25jYXQgXCJcIiBbIFwiY291bGQgbm90IGRlY29kZSBcIjsgdmFyLmxhYmVsOyBcIiB2YXJpYWJsZTogXCI7IGFyZ19zdHIgXSlcbiAgICAgIGluXG4gICAgICBsZXQgYXJnX3NpZyA9XG4gICAgICAgIG1hdGNoIHZhcl9zaWdfb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFNpZ25hbC5tYWtlIH5sYWJlbDooXCJ2YXItXCIgXiB2YXIubGFiZWwpIGFyZ1xuICAgICAgICB8IFNvbWUgdmFyX3NpZyAtPlxuICAgICAgICAgIFNpZ25hbC5lbWl0IGFyZyB2YXJfc2lnO1xuICAgICAgICAgIHZhcl9zaWdcbiAgICAgIGluXG4gICAgICBsZXQgYXJnX2VtaXQgfm5vdGlmeSBhcmdfc3RyJyA9XG4gICAgICAgIGxldCBhcmcnID0gdmFyLm9mX3N0cmluZyBhcmdfc3RyJyB8PiBvcl9mYWlsIChcInZhciBkZWNvZGluZyBmYWlsZWQ6IFwiIF4gdmFyLmxhYmVsKSBpblxuICAgICAgICBpZiBub3QgKHZhci5lcXVhbCAoU2lnbmFsLmdldCBhcmdfc2lnKSBhcmcnKSB0aGVuIFNpZ25hbC5lbWl0IH5ub3RpZnkgYXJnJyBhcmdfc2lnXG4gICAgICBpblxuICAgICAgbGV0IHF1YWxpZmllZF9wYXRoJyA9IEVpdGhlci5SaWdodCAoU2lnbmFsLm1hcCB2YXIudG9fc3RyaW5nIGFyZ19zaWcpIDo6IHJldl9xdWFsaWZpZWRfcGF0aCBpblxuICAgICAgbG9vcCBhcmdzJyAoYXJnX2VtaXQgOjogYXJnc19lbWl0cykgcXVhbGlmaWVkX3BhdGgnIHBhdGgnICh2aWV3IGFyZ19zaWcpXG4gIGluXG4gIGxvb3AgYXJnczAgW10gW11cblxubGV0IHJlbmRlcl9sb29rdXBfZXJyb3IgfnByZWZpeCA/YWxpYXMgfmxhYmVsIH5kZWZhdWx0IGVyciA9XG4gIGxldCBsYWJlbCA9XG4gICAgbWF0Y2ggYWxpYXMgd2l0aFxuICAgIHwgTm9uZSAtPiBsYWJlbFxuICAgIHwgU29tZSBhbGlhcyAtPiBTdHJpbmcuY29uY2F0IFwiXCIgWyBsYWJlbDsgXCI6IGFsaWFzIFwiOyBhbGlhcyBdXG4gIGluXG4gIG1hdGNoIGVyciB3aXRoXG4gIHwgVGFibGUuTm9fbWF0Y2ggcGF0aCAtPlxuICAgIGRlZmF1bHQgb3IgSHRtbC50ZXh0IChsYWJlbCBeIFwiOiBubyBtYXRjaDogL1wiIF4gU3RyaW5nLmNvbmNhdCBcIi9cIiAoU2lnbmFsLmdldCBwcmVmaXggQCBwYXRoKSlcbiAgfCBUYWJsZS5JbmNvbXBsZXRlX21hdGNoIHBhdGggLT5cbiAgICBkZWZhdWx0XG4gICAgb3IgSHRtbC50ZXh0IChsYWJlbCBeIFwiOiBpbmNvbXBsZXRlIG1hdGNoOiAvXCIgXiBTdHJpbmcuY29uY2F0IFwiL1wiIChTaWduYWwuZ2V0IHByZWZpeCBAIHBhdGgpKVxuICB8IGV4biAtPlxuICAgIEp4LmxvZyBleG47XG4gICAgSHRtbC50ZXh0IChsYWJlbCBeIFwiOiB1bmV4cGVjdGVkIGV4Y2VwdGlvblwiKVxuXG4oKiBUT0RPOiBtdXN0IGJlIGxhenkgaW5pdGlhbGl6ZWQgc2ltaWxhciB0byBWaWV3LnNob3cuICopXG4oKiBUT0RPOiBpbXByb3ZlIGV4biBjb250ZXh0IGxvZ2dpbmcuICopXG5sZXQgZGlzcGF0Y2hfdGFibGUgP2xhYmVsID9kZWZhdWx0ICh7IHByZWZpeDsgcmVzdCB9IDogdCkgdGFibGUgOiBIdG1sLmh0bWwgPVxuIGZ1biBwYXJlbnQgaW5zZXJ0IC0+XG4gIGxldCBsYWJlbCA9XG4gICAgbWF0Y2ggbGFiZWwgd2l0aFxuICAgIHwgTm9uZSAtPiBcInJvdXRlclwiXG4gICAgfCBTb21lIHggLT4gXCJyb3V0ZXItXCIgXiB4XG4gIGluXG4gIGxldCBsb29rdXBfc2lnID0gU2lnbmFsLm1hcCAoVGFibGUubG9va3VwIHRhYmxlKSByZXN0IGluXG4gIGxldCBsb29rdXBfcm91dGVfc2lnID1cbiAgICBTaWduYWwudW5pcVxuICAgICAgfmVxdWFsOihmdW4gcmVzMSByZXMyIC0+XG4gICAgICAgIG1hdGNoIChyZXMxLCByZXMyKSB3aXRoXG4gICAgICAgIHwgT2sgeyByb3V0ZSA9IHIxOyBfIH0sIE9rIHsgcm91dGUgPSByMjsgXyB9IC0+IHIxID09IHIyXG4gICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgIGxvb2t1cF9zaWdcbiAgaW5cbiAgKCogRG8gd2UgbmVlZCB0byBjbGVhbiB1cCBlbWl0cyBpbiB1bm1vdW50PyAqKVxuICBsZXQgZW1pdHMgPSBpbml0X2VtaXRzICgpIGluXG4gIGxldCBodG1sID1cbiAgICBWaWV3LnNob3cgfmxhYmVsXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBPayB7IHJvdXRlID0gQWxpYXMgKHNyY19wYXRoLCBkc3Rfc3RyX3BhdGgpOyBfIH0gLT4gYmVnaW5cbiAgICAgICAgICBtYXRjaCBUYWJsZS5sb29rdXAgdGFibGUgZHN0X3N0cl9wYXRoIHdpdGhcbiAgICAgICAgICB8IE9rIHsgcm91dGUgPSBSb3V0ZSAocGF0aCwgdmlldyk7IG1hdGNoZWQ7IGFyZ3MgfSAtPiBiZWdpblxuICAgICAgICAgICAgbWF0Y2ggYXBwbHkgZW1pdHMgfnByZWZpeCB+bWF0Y2hlZCB+YXJncyBwYXRoIHZpZXcgd2l0aFxuICAgICAgICAgICAgfCBPayAoaHRtbCwgX3FwYXRoKSAtPiBodG1sXG4gICAgICAgICAgICB8IEVycm9yIGVyciAtPiBIdG1sLnRleHQgKGxhYmVsIF4gXCI6IFwiIF4gZXJyKVxuICAgICAgICAgIGVuZFxuICAgICAgICAgIHwgT2sgeyByb3V0ZSA9IEFsaWFzIF87IF8gfSAtPiBmYWlsd2l0aCBcImJ1ZzogZm9yd2FyZCB0byBmb3J3YXJkXCJcbiAgICAgICAgICB8IEVycm9yIGVyciAtPlxuICAgICAgICAgICAgbGV0IGFsaWFzID0gc3RyaW5nX29mX3BhdGggc3JjX3BhdGggaW5cbiAgICAgICAgICAgIHJlbmRlcl9sb29rdXBfZXJyb3IgfnByZWZpeCB+YWxpYXMgfmxhYmVsIH5kZWZhdWx0IGVyclxuICAgICAgICBlbmRcbiAgICAgICAgfCBPayB7IHJvdXRlID0gUm91dGUgKHBhdGgsIHZpZXcpOyBtYXRjaGVkOyBhcmdzIH0gLT4gYmVnaW5cbiAgICAgICAgICBtYXRjaCBhcHBseSBlbWl0cyB+cHJlZml4IH5tYXRjaGVkIH5hcmdzIHBhdGggdmlldyB3aXRoXG4gICAgICAgICAgfCBPayAoaHRtbCwgcXBhdGgpIC0+XG4gICAgICAgICAgICAoKkp4LmxvZyAoXCJBRlRFUiBBUFBMWVwiLCBBcnJheS5vZl9saXN0IHFwYXRoKTsqKVxuICAgICAgICAgICAgKCpsZXQgdXBfcmVzdCA9IFNpZ25hbC5tYWtlIFtdIGluXG4gICAgICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgICAgIChmdW4gc2VnIC0+XG4gICAgICAgICAgICAgICAgICBtYXRjaCBzZWcgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBFaXRoZXIuTGVmdCBfIC0+ICgpXG4gICAgICAgICAgICAgICAgICB8IEVpdGhlci5SaWdodCB2YXJfc2lnIC0+XG4gICAgICAgICAgICAgICAgICAgICgqIEZJWE1FOiB0aGlzIHFwYXRoIGlzIHRoZSBpbml0aWFsIHBhdGggYXQgcmVuZGVyaW5nIHRpbWUsIG5vdCB0aGUgY3VycmVudCByZXN0IHBhdGguICopXG4gICAgICAgICAgICAgICAgICAgIFNpZ25hbC5zdWIgKGZ1biBfIC0+IFNpZ25hbC5lbWl0IChwaWNrX3FwYXRoIHFwYXRoKSB1cF9yZXN0KSB2YXJfc2lnXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIHFwYXRoO1xuICAgICAgICAgICAgICBTaWduYWwuc3ViXG4gICAgICAgICAgICAgICAgKGZ1biByZXN0IC0+XG4gICAgICAgICAgICAgICAgICAoKiBKeC5sb2cgKFwiUk9VVEUgVVAsIHJlc3RcIiwgQXJyYXkub2ZfbGlzdCByZXN0LCBBcnJheS5vZl9saXN0IChTaWduYWwuZ2V0IHJvdXRlci5yZXN0KSk7ICopXG4gICAgICAgICAgICAgICAgICBsZXQgaGFzaCA9IFwiIy9cIiBeIFN0cmluZy5jb25jYXQgXCIvXCIgKFNpZ25hbC5nZXQgcHJlZml4IEAgcmVzdCkgaW5cbiAgICAgICAgICAgICAgICAgIFN0ZHdlYi5Eb20uTG9jYXRpb24uc2V0X2hhc2ggU3Rkd2ViLkRvbS5XaW5kb3cubG9jYXRpb24gaGFzaFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB1cF9yZXN0OyopXG4gICAgICAgICAgICBodG1sXG4gICAgICAgICAgfCBFcnJvciBlcnIgLT4gSHRtbC50ZXh0IChsYWJlbCBeIFwiOiBcIiBeIGVycilcbiAgICAgICAgZW5kXG4gICAgICAgIHwgRXJyb3IgZXJyIC0+IHJlbmRlcl9sb29rdXBfZXJyb3IgfnByZWZpeCB+bGFiZWwgfmRlZmF1bHQgZXJyKVxuICAgICAgbG9va3VwX3JvdXRlX3NpZ1xuICBpblxuICBsZXQgdW5zdWIgPVxuICAgIFNpZ25hbC5zdWInXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBPayAoeyBhcmdzID0gYXJnczA7IG1hdGNoZWQgPSBtYXRjaGVkMDsgcm91dGUgPSBSb3V0ZSBfIH0gOiBsb29rdXApIC0+XG4gICAgICAgICAgU2lnbmFsLnNjb3BlIChmdW4gbm90aWZ5IC0+XG4gICAgICAgICAgICAgIGVtaXRzLmVtaXRfcHJlZml4IH5ub3RpZnkgbWF0Y2hlZDA7XG4gICAgICAgICAgICAgIGxldCByZWMgbG9vcCBhcmdzX2VtaXRzIGFyZ3MgPVxuICAgICAgICAgICAgICAgIG1hdGNoIChhcmdzX2VtaXRzLCBhcmdzKSB3aXRoXG4gICAgICAgICAgICAgICAgfCBbXSwgW10gLT4gZW1pdHMuZW1pdF9yZXN0IH5ub3RpZnkgW11cbiAgICAgICAgICAgICAgICB8IFtdLCByZXN0IC0+IGVtaXRzLmVtaXRfcmVzdCB+bm90aWZ5IHJlc3RcbiAgICAgICAgICAgICAgICB8IF9hcmdfZW1pdHMsIFtdIC0+IGludmFsaWRfYXJnIFwicm91dGVyOiBpbnN1ZmZpY2llbnQgYXJncyBmb3IgZW1pdFwiXG4gICAgICAgICAgICAgICAgfCBhcmdfZW1pdCA6OiBhcmdfZW1pdHMnLCBhcmcgOjogYXJncycgLT5cbiAgICAgICAgICAgICAgICAgICgqIFRPRE86IHRoZXNlIGVtaXRzIGNhbiByYWlzZSB2YXIgZGVjb2RpbmcgZXhjZXB0aW9ucywgaGFuZGxlIHRoaXMgaGVyZSBhbmQgdXBkYXRlIHZpZXcgd2l0aCBlcnJvci4gKilcbiAgICAgICAgICAgICAgICAgIGFyZ19lbWl0IH5ub3RpZnkgYXJnO1xuICAgICAgICAgICAgICAgICAgbG9vcCBhcmdfZW1pdHMnIGFyZ3MnXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxvb3AgZW1pdHMuZW1pdF9hcmdzIGFyZ3MwKVxuICAgICAgICB8IE9rICh7IHJvdXRlID0gQWxpYXMgXzsgXyB9IDogbG9va3VwKSAtPiAoKVxuICAgICAgICB8IEVycm9yIF8gLT4gKCkpXG4gICAgICBsb29rdXBfc2lnXG4gIGluXG4gIGxldCBodG1sJyA9IEh0bWwuRWxlbS5vbl91bm1vdW50IHVuc3ViIGh0bWwgaW5cbiAgaHRtbCcgcGFyZW50IGluc2VydFxuXG5sZXQgZGlzcGF0Y2ggP2xhYmVsID9kZWZhdWx0IHJvdXRlciByb3V0ZXMgPVxuICBkaXNwYXRjaF90YWJsZSA/bGFiZWwgP2RlZmF1bHQgcm91dGVyIChUYWJsZS5vZl9yb3V0ZV9saXN0IHJvdXRlcylcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9mcmVzaF9vb19pZCIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJjYW1sX2NhbGwzIiwiYTIiLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYiIsIlNpZ25hbCIsIkh0bWwiLCJIZWxpeF9WaWV3IiwiU3RkbGliX1N0cmluZyIsIkp4IiwiU3RkbGliX0xpc3QiLCJTdGRsaWJfT3B0aW9uIiwiU3RkbGliX1Jlc3VsdCIsIlN0ZHdlYiIsIlN0ZGxpYl9NYXAiLCJTdGRsaWJfSW50IiwiU3RyaW5nX21hcCIsIm9yIiwib3B0IiwiZGVmYXVsdCQiLCJ4IiwidmFyJCIsIm9mX3N0cmluZyIsInRvX3N0cmluZyIsImxhYmVsIiwiZXF1YWwiLCJpbnQiLCJzdHJpbmciLCJxdWVyeSIsInN0ciIsIngxIiwieDIiLCJyb3V0ZSIsInBhdGgiLCJyZW5kZXIiLCJjc3QiLCJzdHJpbmdfb2ZfcGF0aCIsInBhdGgwIiwibG9vcCIsImNvbnN0JCIsIm1hdGNoIiwidGFpbCIsImxpc3Rfb2ZfcGF0aCIsImVtcHR5IiwicmVnaXN0ZXIiLCJyb3V0ZTAiLCJyb290Iiwibm9kZSIsImV4aXN0aW5nX25vZGUiLCJtYXRjaGVkX25vZGUiLCJJbmNvbXBsZXRlX21hdGNoIiwiTm9fbWF0Y2giLCJsb29rdXAiLCJ0YWJsZTAiLCJpbnB1dDAiLCJidCIsImlucHV0IiwibWF0Y2hlZCIsImFyZ3MiLCJpbnB1dF9oZCIsInBhcmFtIiwib2Zfcm91dGVfbGlzdCIsInJvdXRlcyIsImFjYyIsIm1ha2UiLCJyZXN0IiwicHJlZml4Iiwicm91dGVyIiwiZXZhbF9wYXRoIiwiayIsInBhdGgyIiwibG9jYXRpb25fc2V0X3BhdGgiLCJoYXNoIiwiYWxpYXMiLCJzcmMiLCJkc3QiLCJzdHJfcGF0aCIsImdvX3VwIiwibjAiLCJwcmVmaXhfcmV2IiwibiIsImdvIiwiYWJzb2x1dGUiLCJ1cCIsInBpY2tfcXBhdGgiLCJzZWdtZW50cyIsInZhcl9zaWciLCJsaW5rIiwiYWN0aXZlIiwiaW5hY3RpdmUiLCJleGFjdCIsIm91dCIsInIyIiwiczIiLCJwMiIsInIxIiwiczEiLCJwMSIsImxpbmtfc3VmZml4IiwibGlua19wcmVmaXgiLCJwYXRoX3N0ciIsImhyZWZfYXR0ciIsInVzZXJfYXR0ciIsImVxIiwicCIsImwiLCJwMCIsImwwIiwiaW5pdF9lbWl0cyIsImFwcGx5IiwiZW1pdHMiLCJhYnNwcmVmaXgwIiwiYXJnczAiLCJsZXQkIiwiYWJzcHJlZml4X3NpZyIsImFic3ByZWZpeF9lbWl0Iiwibm90aWZ5IiwiYWJzcHJlZml4IiwiYXJnc19lbWl0cyIsInJldl9xdWFsaWZpZWRfcGF0aCIsInZpZXciLCJ2YXJfc2lnX29wdCIsImFyZ19zdHIiLCJhcmciLCJhcmdfc2lnIiwiYXJnX2VtaXQiLCJtc2ciLCJxdWFsaWZpZWRfcGF0aCIsInJlc3Rfc2lnIiwicmVzdF9lbWl0IiwiaHRtbCIsInF1YWxpZmllZF9yZXN0IiwicmVuZGVyX2xvb2t1cF9lcnJvciIsImVyciIsImRpc3BhdGNoX3RhYmxlIiwidGFibGUiLCJwYXJlbnQiLCJpbnNlcnQiLCJsb29rdXBfc2lnIiwibG9va3VwX3JvdXRlX3NpZyIsInJlczEiLCJyZXMyIiwiZHN0X3N0cl9wYXRoIiwic3JjX3BhdGgiLCJ1bnN1YiIsIm1hdGNoZWQwIiwiZGlzcGF0Y2giXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFKLEdBQUFDLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDLE9BQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyxLQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLGFBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsWUFBQUMsR0FBQUMsS0FBQUM7QUFBQUEsSUNNSSxVQUVVO0FBQUEsUUFBQUMsSUFGVjtBQUFBLElBQ1k7QUFBQSxHQUNLO0FBQUEsWUFBQUMsS0FBQUMsV0FBQUMsV0FBQUwsS0FBQU07QUFBQUEsUUFBQUMsUUF1QmI7QUFBQSxJQUFzRDtBQUFBLEdBQXNDO0FBQUE7QUFBQSxJQUFBQyxNRC9CcEc7QUFBQSxJQUFBQztBQUFBQSxNQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQztBQUFBQSxNQUFBO0FBQUE7QUFBQTtBQUFBLGdCQUFBQyxLQzBDaUMsMENBQXdDO0FBQUEsZ0JBQUFDLElBQUFDO0FBQUFBO0FBQUFBLFNBQUEsSUFHWjtBQUFBLGFBQXhDO0FBQUEsUUFBdUMsd0NB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QUFBQSxHRG5icEUiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0NzA5NSwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJoZWxpeC5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvaGVsaXgvTW91c2UubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCJtb2R1bGUgRXZlbnQgPSBTdGR3ZWIuRG9tLkV2ZW50XG5tb2R1bGUgV2luZG93ID0gU3Rkd2ViLkRvbS5XaW5kb3dcblxubGV0IHBvc2l0aW9uX29mX21vdXNlX2V2ZW50IG1fZXYgPSBFdmVudC4ocGFnZV94IG1fZXYsIHBhZ2VfeSBtX2V2KVxuXG5sZXQgcG9zaXRpb24gKCkgPVxuICBsZXQgcyA9IFNpZ25hbC5tYWtlICgwLjAsIDAuMCkgaW5cbiAgV2luZG93LmJpbmQgRXZlbnQubW91c2Vtb3ZlIChmdW4gbV9ldiAtPiBTaWduYWwuZW1pdCAocG9zaXRpb25fb2ZfbW91c2VfZXZlbnQgbV9ldikgcyk7XG4gIHNcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImdsb2JhbF9kYXRhIiwiU2lnbmFsIiwiU3Rkd2ViIiwicG9zaXRpb25fb2ZfbW91c2VfZXZlbnQiLCJtX2V2IiwicG9zaXRpb24iLCJwYXJhbSIsInMiXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLFlBQUFDLHdCQUFBQztBQUFBQSxRQUFBLElDR3VEO0FBQUEsSUFBYixnREFBVztBQUFBLEdBQWM7QUFBQSxXREhuRTtBQUFBLFlBQUFDLFNBQUFDO0FBQUFBLFFBQUFDLElDTVU7QUFBQSxJQUNSO0FBQUE7QUFBQTtBQUFBLGVBQUFIO0FBQUFBLFdBQUEsSUFBcUQ7QUFBQSxPQUE4QixvQ0FBRTtBQUFBO0FBQUEsSUFBQztBQUFBLEdBQ3JGO0FBQUEsR0RSSCIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQ3MTM4LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6ImhlbGl4LmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9oZWxpeC9IdHRwLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwibW9kdWxlIEZldGNoID0gU3Rkd2ViLkZldGNoXG5tb2R1bGUgUHJvbWlzZSA9IFN0ZHdlYi5Qcm9taXNlXG5cbnR5cGUgZXJyb3IgPVxuICB8IEZldGNoX2Vycm9yIG9mIEp4LnRcbiAgfCBVbnN1Y2Nlc3NmdWwgb2YgU3Rkd2ViLkZldGNoLlJlc3BvbnNlLnRcbiAgfCBEZWNvZGluZ19lcnJvciBvZiBleG5cbiAgfCBIYW5kbGluZ19lcnJvciBvZiBleG5cblxubGV0IHN0cmluZ19vZl9lcnJvciA9IGZ1bmN0aW9uXG4gIHwgRmV0Y2hfZXJyb3IgXyAtPiBcIkZldGNoIGVycm9yXCJcbiAgfCBVbnN1Y2Nlc3NmdWwgcmVzcCAtPlxuICAgIFwiVW5zdWNjZXNzZnVsIHJlc3BvbnNlOiBcIiBeIHN0cmluZ19vZl9pbnQgKFN0ZHdlYi5GZXRjaC5SZXNwb25zZS5zdGF0dXMgcmVzcClcbiAgfCBEZWNvZGluZ19lcnJvciBfIC0+IFwiRGVjb2RpbmcgZmFpbGVkXCJcbiAgfCBIYW5kbGluZ19lcnJvciBfIC0+IFwiQ291bGQgbm90IGhhbmRsZSBmZXRjaGVkIHBheWxvYWRcIlxuXG50eXBlIG5vbnJlYyAnYSByZXN1bHQgPSAoJ2EsIGVycm9yKSByZXN1bHRcbnR5cGUgYm9keSA9IFN0ZHdlYi5GZXRjaC5Cb2R5LnRcblxubW9kdWxlIEVuY29kZXIgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gc3RyaW5nIG9wdGlvbiAqICgnYSAtPiBGZXRjaC5Cb2R5LnQpXG5cbiAgbGV0IG1ha2UgPyhjb250ZW50X3R5cGUpIGYgPSBjb250ZW50X3R5cGUsIGZcblxuICBsZXQgdG9fdW5kZWZpbmVkX2JvZHkgXyA9IEZldGNoLkJvZHkudW5zYWZlX29mX2pzIEp4LnVuZGVmaW5lZFxuICBsZXQgZW1wdHkgPSAoTm9uZSwgdG9fdW5kZWZpbmVkX2JvZHkpXG4gIGxldCBpZ25vcmUgPSAoTm9uZSwgdG9fdW5kZWZpbmVkX2JvZHkpXG4gIGxldCB0ZXh0ID0gKE5vbmUsIEZldGNoLkJvZHkub2Zfc3RyaW5nKVxuICBsZXQgZm9ybV9kYXRhID0gKE5vbmUsIEZldGNoLkJvZHkub2ZfZm9ybV9kYXRhKVxuXG4gIGxldCBhc3NvY190b19mb3JtX3VybGVuY29kZWRfYm9keSBhc3NvYyA9XG4gICAgbGV0IHN0cmluZyA9XG4gICAgICBTdHJpbmcuY29uY2F0IFwiJlwiXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIChrLCB2KSAtPlxuICAgICAgICAgICAgIFN0cmluZy5jb25jYXQgXCI9XCJcbiAgICAgICAgICAgICAgIFsgU3Rkd2ViLmVuY29kZV91cmlfY29tcG9uZW50IGs7IFN0ZHdlYi5lbmNvZGVfdXJpX2NvbXBvbmVudCB2IF1cbiAgICAgICAgICAgKVxuICAgICAgICAgICBhc3NvY1xuICAgICAgICApXG4gICAgaW5cbiAgICBGZXRjaC5Cb2R5Lm9mX3N0cmluZyBzdHJpbmdcblxuICBsZXQgZm9ybV91cmxlbmNvZGVkID1cbiAgICAoIFNvbWUgXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLThcIixcbiAgICAgIGFzc29jX3RvX2Zvcm1fdXJsZW5jb2RlZF9ib2R5XG4gICAgKVxuXG4gIGxldCBqc29uX3RvX2JvZHkganNvbiA9XG4gICAgbGV0IHRleHQgPSBTdGR3ZWIuSnNvbi5zdHJpbmdpZnkganNvbiBpblxuICAgIEZldGNoLkJvZHkub2Zfc3RyaW5nIHRleHRcblxuICBsZXQganNvbiA9IChTb21lIFwiYXBwbGljYXRpb24vanNvblwiLCBqc29uX3RvX2JvZHkpXG5cbiAgbGV0IG1hcF9qc29uIGVuY29kZV9qc29uID1cbiAgICAoU29tZSBcImFwcGxpY2F0aW9uL2pzb25cIiwgZnVuIHggLT4ganNvbl90b19ib2R5IChlbmNvZGVfanNvbiB4KSlcbmVuZFxuXG5tb2R1bGUgRGVjb2RlciA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSBGZXRjaC5SZXNwb25zZS50IC0+ICdhIFByb21pc2UudFxuXG4gIGxldCBpZ25vcmUgX3JlcyA9IFByb21pc2UucmVzb2x2ZSAoKVxuICBsZXQgdGV4dCA9IEZldGNoLlJlc3BvbnNlLnRleHRcbiAgbGV0IGpzb24gPSBGZXRjaC5SZXNwb25zZS5qc29uXG5cbiAgbGV0IG1hcCBmIHQgcmVzcG9uc2UgPVxuICAgIHQgcmVzcG9uc2VcbiAgICB8PiBQcm9taXNlLmFuZF90aGVuIChmdW4geCAtPlxuICAgICAgICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgICAgICB8IE9rIHggLT4gUHJvbWlzZS5yZXNvbHZlIHhcbiAgICAgICAgICAgfCBFcnJvciBlcnIgLT4gUHJvbWlzZS5yZWplY3QgZXJyXG4gICAgICAgKVxuXG4gIGxldCBtYXBfanNvbiBmID0gbWFwIGYganNvblxuZW5kXG5cbigqIEZJWE1FOiBwcmV2ZW50IHNpZ25hbCBoYW5kbGVyIGVycm9ycyBmcm9tIGJlaW5nIGNhdWdodCAqKVxubGV0IHJlcXVlc3QgP21ldGggPyhoZWFkZXJzID0gW10pID9tb2RlID9jcmVkZW50aWFsc1xuICAgIH5lbmNvZGU6KGNvbnRlbnRfdHlwZSwgdG9fYm9keSkgfmRlY29kZSB+dXJsIHJlcXVlc3RfdmFsdWUgPVxuICBsZXQgaGVhZGVycyA9XG4gICAgbWF0Y2ggY29udGVudF90eXBlIHdpdGhcbiAgICB8IFNvbWUgY29udGVudF90eXBlIC0+IChcIkNvbnRlbnQtVHlwZVwiLCBjb250ZW50X3R5cGUpIDo6IGhlYWRlcnNcbiAgICB8IE5vbmUgLT4gaGVhZGVyc1xuICBpblxuICBsZXQgYm9keSA9IHRvX2JvZHkgcmVxdWVzdF92YWx1ZSBpblxuICBsZXQgcyA9IFNpZ25hbC5tYWtlIE5vbmUgaW5cbiAgRmV0Y2guZmV0Y2ggfmJvZHkgP21ldGggfmhlYWRlcnMgP21vZGUgP2NyZWRlbnRpYWxzIHVybFxuICB8PiBQcm9taXNlLmFuZF90aGVuIChmdW4gcmVzcG9uc2UgLT5cbiAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgIGlmIEZldGNoLlJlc3BvbnNlLm9rIHJlc3BvbnNlIHRoZW5cbiAgICAgICAgICAgICBkZWNvZGUgcmVzcG9uc2VcbiAgICAgICAgICAgICB8PiBQcm9taXNlLmFuZF90aGVuIChmdW4gdGV4dCAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIHRyeSBTaWduYWwuZW1pdCAoU29tZSAoT2sgdGV4dCkpIHNcbiAgICAgICAgICAgICAgICAgICAgICB3aXRoIGV4biAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgU2lnbmFsLmVtaXQgKFNvbWUgKEVycm9yIChIYW5kbGluZ19lcnJvciBleG4pKSkgc1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBQcm9taXNlLnJlc29sdmUgKClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgfD4gUHJvbWlzZS5jYXRjaCAoZnVuIGVyciAtPlxuICAgICAgICAgICAgICAgICAgICBTaWduYWwuZW1pdCAoU29tZSAoRXJyb3IgKERlY29kaW5nX2Vycm9yIGVycikpKSBzXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgbGV0IGVyciA9IEVycm9yIChVbnN1Y2Nlc3NmdWwgcmVzcG9uc2UpIGluXG4gICAgICAgICAgICAgU2lnbmFsLmVtaXQgKFNvbWUgZXJyKSBzXG4gICAgICAgICBpblxuICAgICAgICAgUHJvbWlzZS5yZXNvbHZlICgpXG4gICAgIClcbiAgfD4gUHJvbWlzZS5jYXRjaCAoZnVuIGVyciAtPiBTaWduYWwuZW1pdCAoU29tZSAoRXJyb3IgKEZldGNoX2Vycm9yIGVycikpKSBzKTtcbiAgc1xuXG5sZXQgZ2V0ID9oZWFkZXJzID9tb2RlID9jcmVkZW50aWFscyB+ZGVjb2RlIH51cmwgKCkgPVxuICByZXF1ZXN0IH5tZXRoOmBHZXQgP2hlYWRlcnMgP21vZGUgP2NyZWRlbnRpYWxzIH5lbmNvZGU6RW5jb2Rlci5pZ25vcmUgfmRlY29kZVxuICAgIH51cmwgKClcblxubGV0IHB1dCA/aGVhZGVycyA/bW9kZSA/Y3JlZGVudGlhbHMgfmVuY29kZSB+ZGVjb2RlIH51cmwgcmVxdWVzdF92YWx1ZSA9XG4gIHJlcXVlc3Qgfm1ldGg6YFB1dCA/aGVhZGVycyA/bW9kZSA/Y3JlZGVudGlhbHMgfmVuY29kZSB+ZGVjb2RlIH51cmxcbiAgICByZXF1ZXN0X3ZhbHVlXG5cbmxldCBwb3N0ID9oZWFkZXJzID9tb2RlID9jcmVkZW50aWFscyB+ZW5jb2RlIH5kZWNvZGUgfnVybCByZXF1ZXN0X3ZhbHVlID1cbiAgcmVxdWVzdCB+bWV0aDpgUG9zdCA/aGVhZGVycyA/bW9kZSA/Y3JlZGVudGlhbHMgfmVuY29kZSB+ZGVjb2RlIH51cmxcbiAgICByZXF1ZXN0X3ZhbHVlXG5cbmxldCBkZWxldGUgP2hlYWRlcnMgP21vZGUgP2NyZWRlbnRpYWxzIH5kZWNvZGUgfnVybCByZXF1ZXN0X3ZhbHVlID1cbiAgcmVxdWVzdCB+bWV0aDpgRGVsZXRlID9oZWFkZXJzID9tb2RlID9jcmVkZW50aWFscyB+ZW5jb2RlOkVuY29kZXIuaWdub3JlXG4gICAgfmRlY29kZSB+dXJsIHJlcXVlc3RfdmFsdWVcblxubW9kdWxlIEpzb24gPSBzdHJ1Y3RcbiAgbGV0IHJlcXVlc3QgP21ldGggP2hlYWRlcnMgP21vZGUgP2NyZWRlbnRpYWxzIH5lbmNvZGUgfmRlY29kZSA9XG4gICAgcmVxdWVzdCA/bWV0aCA/aGVhZGVycyA/bW9kZSA/Y3JlZGVudGlhbHMgfmVuY29kZTooRW5jb2Rlci5tYXBfanNvbiBlbmNvZGUpXG4gICAgICB+ZGVjb2RlOihEZWNvZGVyLm1hcF9qc29uIGRlY29kZSlcblxuICBsZXQgZ2V0ID9oZWFkZXJzID9tb2RlID9jcmVkZW50aWFscyB+ZGVjb2RlID1cbiAgICBnZXQgP2hlYWRlcnMgP21vZGUgP2NyZWRlbnRpYWxzIH5kZWNvZGU6KERlY29kZXIubWFwX2pzb24gZGVjb2RlKVxuXG4gIGxldCBwdXQgP2hlYWRlcnMgP21vZGUgP2NyZWRlbnRpYWxzIH5lbmNvZGUgfmRlY29kZSA9XG4gICAgcHV0ID9oZWFkZXJzID9tb2RlID9jcmVkZW50aWFscyB+ZW5jb2RlOihFbmNvZGVyLm1hcF9qc29uIGVuY29kZSlcbiAgICAgIH5kZWNvZGU6KERlY29kZXIubWFwX2pzb24gZGVjb2RlKVxuXG4gIGxldCBwb3N0ID9oZWFkZXJzID9tb2RlID9jcmVkZW50aWFscyB+ZW5jb2RlIH5kZWNvZGUgPVxuICAgIHBvc3QgP2hlYWRlcnMgP21vZGUgP2NyZWRlbnRpYWxzIH5lbmNvZGU6KEVuY29kZXIubWFwX2pzb24gZW5jb2RlKVxuICAgICAgfmRlY29kZTooRGVjb2Rlci5tYXBfanNvbiBkZWNvZGUpXG5cbiAgbGV0IGRlbGV0ZSA/aGVhZGVycyA/bW9kZSA/Y3JlZGVudGlhbHMgfmRlY29kZSA9XG4gICAgZGVsZXRlID9oZWFkZXJzID9tb2RlID9jcmVkZW50aWFscyB+ZGVjb2RlOihEZWNvZGVyLm1hcF9qc29uIGRlY29kZSlcbmVuZFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDMiLCJhMSIsImEyIiwiY2FtbF9jYWxsNiIsImEzIiwiYTQiLCJhNSIsImdsb2JhbF9kYXRhIiwiU2lnbmFsIiwiU3Rkd2ViIiwiU3RkbGliX1N0cmluZyIsIlN0ZGxpYl9MaXN0IiwiSngiLCJTdGRsaWIiLCJzdHJpbmdfb2ZfZXJyb3IiLCJwYXJhbSIsInJlc3AiLCJtYWtlIiwiY29udGVudF90eXBlIiwidG9fdW5kZWZpbmVkX2JvZHkiLCJ0ZXh0IiwiZm9ybV9kYXRhIiwiYXNzb2NfdG9fZm9ybV91cmxlbmNvZGVkX2JvZHkiLCJhc3NvYyIsInYiLCJrIiwic3RyaW5nIiwianNvbl90b19ib2R5IiwianNvbiIsImNzdF9hcHBsaWNhdGlvbl9qc29uIiwibWFwX2pzb24iLCJlbmNvZGVfanNvbiIsIngiLCJpZ25vcmUiLCJyZXMiLCJtYXAiLCJ0IiwicmVzcG9uc2UiLCJtYXRjaCIsImVyciIsInJlcXVlc3QiLCJtZXRoIiwib3B0IiwibW9kZSIsImNyZWRlbnRpYWxzIiwiZGVjb2RlIiwidXJsIiwicmVxdWVzdF92YWx1ZSIsImhlYWRlcnMiLCJ0b19ib2R5IiwiYm9keSIsInMiLCJleG4iLCJnZXQiLCJwdXQiLCJlbmNvZGUiLCJwb3N0IiwiZGVsZXRlJCJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyxzQkFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRSxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUwsR0FBQUMsSUFBQUUsSUFBQUMsSUFBQUUsSUFBQUMsSUFBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsS0FBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxZQUFBQyxnQkFBQUM7QUFBQUEsSUNT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QUFBQTtBQUFBO0FBQUE7QUFBQSw4QkFvQnNFO0FBQUE7QUFBQSxHRGhKeEUiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0NzQyMywiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJoZWxpeC5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvaGVsaXgvSGlzdG9yeS5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIm9wZW4gc3RydWN0XG4gIG1vZHVsZSBXaW5kb3cgPSBTdGR3ZWIuRG9tLldpbmRvd1xuICBtb2R1bGUgTG9jYXRpb24gPSBTdGR3ZWIuRG9tLkxvY2F0aW9uXG4gIG1vZHVsZSBFdmVudCA9IFN0ZHdlYi5Eb20uRXZlbnRcbmVuZFxuXG4oKiBUT0RPOiBtYWtlIHRoZXNlIHNpZ25hbHMgbGF6eS4gKilcblxubGV0IGxvY2F0aW9uID1cbiAgbGV0IHMgPSBTaWduYWwubWFrZSBXaW5kb3cubG9jYXRpb24gaW5cbiAgV2luZG93LmJpbmQgRXZlbnQucG9wc3RhdGUgKGZ1biBfIC0+IFNpZ25hbC5lbWl0IFdpbmRvdy5sb2NhdGlvbiBzKTtcbiAgc1xuXG5sZXQgaGFzaCA9XG4gIGxldCBzID0gU2lnbmFsLm1ha2UgKExvY2F0aW9uLmhhc2ggV2luZG93LmxvY2F0aW9uKSBpblxuICBXaW5kb3cuYmluZCBFdmVudC5oYXNoY2hhbmdlIChmdW4gXyAtPlxuICAgICAgbGV0IGhhc2ggPSBMb2NhdGlvbi5oYXNoIFdpbmRvdy5sb2NhdGlvbiBpblxuICAgICAgU2lnbmFsLmVtaXQgaGFzaCBzXG4gICk7XG4gIHNcblxubGV0IGhhc2hfdG9fcGF0aCBzdHIgPVxuICBtYXRjaCBTdHJpbmcuc3BsaXRfb25fY2hhciAnLycgc3RyIHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IFsgXCJcIiBdIC0+IFtdXG4gIHwgXCIjXCIgOjogdGwgLT4gdGxcbiAgfCBfIDo6IF8gLT4gaW52YWxpZF9hcmcgc3RyXG5cbmxldCBoYXNoX3BhdGggPSBTaWduYWwubWFwIGhhc2hfdG9fcGF0aCBoYXNoXG5sZXQgZ28gaHJlZiA9IExvY2F0aW9uLnNldF9ocmVmIFdpbmRvdy5sb2NhdGlvbiBocmVmXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJnbG9iYWxfZGF0YSIsIlN0ZHdlYiIsIlN0ZGxpYl9TdHJpbmciLCJTdGRsaWIiLCJTaWduYWwiLCJsb2NhdGlvbiIsInBhcmFtIiwiaGFzaCIsImhhc2hfdG9fcGF0aCIsInN0ciIsIm1hdGNoIiwidGwiLCJoYXNoX3BhdGgiLCJnbyIsImhyZWYiXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDLFdDU1U7QUFBQSxHQUNSO0FBQUE7QUFBQTtBQUFBLGNBQUFDO0FBQUFBLE1BQXFDLDBEQUE2QjtBQUFBO0FBQUE7QUFBQSxRQUk5QztBQUFBLElBQUFDLE9BQVo7QUFBQSxHQUNSO0FBQUE7QUFBQTtBQUFBLGNBQUFEO0FBQUFBLFVBQUFDLFNBQ2U7QUFBQSxNQUNYLDRDQUFrQjtBQUFBO0FBQUEsWUFBQUMsYUFBQUM7QUFBQUEsUUFBQUMsUUFLaEI7QUFBQSxJQUE0QixZQUMxQjtBQUFBLFFBQUFBLFVBRDBCO0FBQUE7QUFBQSw2QkFBQUMsS0FBQSxVQUduQjtBQUFBO0FBQUEsd0JBREg7QUFBQSxJQUVBLGdDQUFlO0FBQUE7QUFBQSxPQUFBQyxZQUViO0FBQUEsWUFBQUMsR0FBQUM7QUFBQUEsSUFDRiwyREFBc0M7QUFBQTtBQUFBLEdBRFI7QUFBQTtBQUFBO0FBQUEsRUQ1QjVDIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDc0ODMsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVsaXguY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL2hlbGl4L0hlbGl4Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwidHlwZSBodG1sID0gSHRtbC5odG1sXG50eXBlIGF0dHIgPSBIdG1sLmF0dHJcbnR5cGUgJ2Egc2lnbmFsID0gJ2EgU2lnbmFsLnRcblxubGV0IHNpZ25hbCA9IFNpZ25hbC5tYWtlXG5cbm1vZHVsZSBIdG1sID0gSHRtbFxubW9kdWxlIFRpbWUgPSBUaW1lXG5tb2R1bGUgTW91c2UgPSBNb3VzZVxubW9kdWxlIEhpc3RvcnkgPSBIaXN0b3J5XG5tb2R1bGUgSHR0cCA9IEh0dHBcbm1vZHVsZSBSb3V0ZXIgPSBSb3V0ZXJcbmluY2x1ZGUgVmlld1xuXG5sZXQgZW5hYmxlX2RlYnVnID0gVmlldy5lbmFibGVfZGVidWdcbmxldCAoIGxldCQgKSBzIGYgPSBzaG93IGYgc1xubGV0ICggYW5kJCApID0gU2lnbmFsLnBhaXJcbmxldCAoIGxldEAgKSBzIGYgPSBiaW5kIGYgc1xubGV0ICggYW5kQCApID0gU2lnbmFsLnBhaXJcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiZ2xvYmFsX2RhdGEiLCJTaWduYWwiLCJIZWxpeF9WaWV3IiwiSGVsaXhfUm91dGVyIiwiSGVsaXhfSGlzdG9yeSIsIkhlbGl4X0h0dHAiLCJIZWxpeF9UaW1lIiwiSGVsaXhfTW91c2UiLCJzaWduYWwiLCJzaG93Iiwic2hvd19zb21lIiwic2hvd19vayIsImNvbmRpdGlvbmFsIiwiZWFjaCIsImJpbmQiLCJiaW5kX3NvbWUiLCJiaW5kX29rIiwidG9nZ2xlIiwidmlzaWJsZSIsImVuYWJsZV9kZWJ1ZyIsImxldCQiLCJzIiwiZiIsImFuZCIsIkhlbGl4Il0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLGFBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxPQUFBO0FBQUEsSUFBQUMsWUFBQTtBQUFBLElBQUFDLFVBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsT0FBQTtBQUFBLElBQUFDLE9BQUE7QUFBQSxJQUFBQyxZQUFBO0FBQUEsSUFBQUMsVUFBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxVQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLFlBQUFDLEtBQUFDLEdBQUFDLEdDZW1CLG9CQUFRO0FBQUEsT0FBQUMsTURmM0I7QUFBQSxZQUFBSCxNQUFBQyxHQUFBQyxHQ2lCbUIsZ0RBQVE7QUFBQTtBQUFBLElBQUFDLFFEakIzQjtBQUFBO0FBQUE7QUFBQSxJQUFBQztBQUFBQSxNQUFBIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDc1NzAsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLm1haW4uZW9ianMvanNvby9kdW5lX19leGVfX01haW4uY21vLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9vY2FtbC1nbG9iZS9kZW1vL21haW4ubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgQ29weXJpZ2h0IChjKSAyMDI1IFRob21hcyBHYXphZ25haXJlLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG4oKiogb2NhbWwtZ2xvYmUgZGVtbyDigJQgaW50ZXJhY3RpdmUgc2hvd2Nhc2Ugb2YgYWxsIHJlbmRlcmluZyBzdHlsZXMuICopXG5cbm9wZW4gQnJyXG5vcGVuIEhlbGl4XG5vcGVuIEh0bWxcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG4oKiAgU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxubGV0IHNob3dfZG90cyA9IFNpZ25hbC5tYWtlIHRydWVcbmxldCBzaG93X2dyaWQgPSBTaWduYWwubWFrZSBmYWxzZVxubGV0IHNob3dfc3RhcnMgPSBTaWduYWwubWFrZSB0cnVlXG5sZXQgc2hvd19jb3ZlcmFnZSA9IFNpZ25hbC5tYWtlIHRydWVcbmxldCBzaG93X29yYml0cyA9IFNpZ25hbC5tYWtlIHRydWVcbmxldCBncmlkX3NwYWNpbmcgPSBTaWduYWwubWFrZSAzMC5cbmxldCBudW1fc2F0cyA9IFNpZ25hbC5tYWtlIDUuXG5cbmxldCBzYXRlbGxpdGVfcG9zaXRpb25zIHRpbWUgbiA9XG4gIGxldCByID0gMS4wNjUgaW5cbiAgTGlzdC5pbml0IG4gKGZ1biBpIC0+XG4gICAgICBsZXQgZmkgPSBGbG9hdC5vZl9pbnQgaSBpblxuICAgICAgbGV0IGluY2wgPSAwLjMgKy4gKGZpICouIDAuMjUpIGluXG4gICAgICBsZXQgdCA9IHRpbWUgKy4gKGZpICouIDEuMikgaW5cbiAgICAgIEdsb2JlLk1hdGguVmVjMy5jcmVhdGVcbiAgICAgICAgKHIgKi4gY29zIHQgKi4gY29zIGluY2wpXG4gICAgICAgIChyICouIHNpbiBpbmNsICouIHNpbiAodCAqLiAwLjcpKVxuICAgICAgICAociAqLiBzaW4gdCAqLiBjb3MgaW5jbCkpXG5cbmxldCBvcmJpdF9wb2ludCBmaSB0ID1cbiAgbGV0IGluY2wgPSAwLjMgKy4gKGZpICouIDAuMjUpIGluXG4gIGxldCByID0gMS4wNjUgaW5cbiAgR2xvYmUuTWF0aC5WZWMzLmNyZWF0ZVxuICAgIChyICouIGNvcyB0ICouIGNvcyBpbmNsKVxuICAgIChyICouIHNpbiBpbmNsICouIHNpbiAodCAqLiAwLjcpKVxuICAgIChyICouIHNpbiB0ICouIGNvcyBpbmNsKVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcbigqICBVSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG5sZXQgdG9nZ2xlIGxhYmVsIHNpZ25hbCA9XG4gIHNob3dcbiAgICAoZnVuIGFjdGl2ZSAtPlxuICAgICAgYnV0dG9uXG4gICAgICAgIFtcbiAgICAgICAgICBjbGFzc19uYW1lXG4gICAgICAgICAgICAoaWYgYWN0aXZlIHRoZW5cbiAgICAgICAgICAgICAgIFwicHgtMyBweS0xLjUgdGV4dC14cyByb3VuZGVkIGJnLWN5YW4tNTAwLzMwIGJvcmRlciBcXFxuICAgICAgICAgICAgICAgIGJvcmRlci1jeWFuLTUwMC82MCB0ZXh0LWN5YW4tMzAwIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICBcInB4LTMgcHktMS41IHRleHQteHMgcm91bmRlZCBiZy1ncmF5LTgwMC81MCBib3JkZXIgXFxcbiAgICAgICAgICAgICAgICBib3JkZXItZ3JheS03MDAgdGV4dC1ncmF5LTUwMCBjdXJzb3ItcG9pbnRlciBcXFxuICAgICAgICAgICAgICAgIGhvdmVyOnRleHQtZ3JheS0zMDAgaG92ZXI6Ym9yZGVyLWdyYXktNTAwXCIpO1xuICAgICAgICAgIG9uX2NsaWNrIChmdW4gKCkgLT4gU2lnbmFsLnVwZGF0ZSBub3Qgc2lnbmFsKTtcbiAgICAgICAgXVxuICAgICAgICBbIHRleHQgbGFiZWwgXSlcbiAgICBzaWduYWxcblxubGV0IHNsaWRlciBsYWJlbCBzaWduYWwgfm1pbiB+bWF4IH5zdGVwID1cbiAgZGl2XG4gICAgWyBjbGFzc19uYW1lIFwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIiBdXG4gICAgW1xuICAgICAgc3BhbiBbIGNsYXNzX25hbWUgXCJ0ZXh0LWdyYXktNTAwIHRleHQtWzEwcHhdIHctMTZcIiBdIFsgdGV4dCBsYWJlbCBdO1xuICAgICAgaW5wdXRcbiAgICAgICAgW1xuICAgICAgICAgIGF0dHIgXCJ0eXBlXCIgXCJyYW5nZVwiO1xuICAgICAgICAgIGF0dHIgXCJtaW5cIiAoRm10LnN0ciBcIiUuMGZcIiBtaW4pO1xuICAgICAgICAgIGF0dHIgXCJtYXhcIiAoRm10LnN0ciBcIiUuMGZcIiBtYXgpO1xuICAgICAgICAgIGF0dHIgXCJzdGVwXCIgKEZtdC5zdHIgXCIlLjBmXCIgc3RlcCk7XG4gICAgICAgICAgYXR0ciBcInZhbHVlXCIgKEZtdC5zdHIgXCIlLjBmXCIgKFNpZ25hbC5nZXQgc2lnbmFsKSk7XG4gICAgICAgICAgY2xhc3NfbmFtZVxuICAgICAgICAgICAgXCJmbGV4LTEgaC0xIGFwcGVhcmFuY2Utbm9uZSBiZy1ncmF5LTcwMCByb3VuZGVkIGN1cnNvci1wb2ludGVyIFxcXG4gICAgICAgICAgICAgYWNjZW50LWN5YW4tNDAwXCI7XG4gICAgICAgICAgb25faW5wdXQgKGZ1biB2IC0+XG4gICAgICAgICAgICAgIG1hdGNoIEZsb2F0Lm9mX3N0cmluZ19vcHQgdiB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSBmIC0+IFNpZ25hbC5lbWl0IGYgc2lnbmFsXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiAoKSk7XG4gICAgICAgIF07XG4gICAgICBzaG93XG4gICAgICAgIChmdW4gdiAtPlxuICAgICAgICAgIHNwYW5cbiAgICAgICAgICAgIFsgY2xhc3NfbmFtZSBcInRleHQtY3lhbi00MDAgdGV4dC1bMTBweF0gdy04IHRleHQtcmlnaHRcIiBdXG4gICAgICAgICAgICBbIHRleHQgKEZtdC5zdHIgXCIlLjBmXCIgdikgXSlcbiAgICAgICAgc2lnbmFsO1xuICAgIF1cblxubGV0IHVpICgpID1cbiAgZGl2XG4gICAgW1xuICAgICAgY2xhc3NfbmFtZVxuICAgICAgICBcInBvaW50ZXItZXZlbnRzLWF1dG8gZml4ZWQgdG9wLTUgbGVmdC01IGJnLWJsYWNrLzgwIGJvcmRlciBcXFxuICAgICAgICAgYm9yZGVyLWN5YW4tNTAwLzIwIHJvdW5kZWQtbGcgYmFja2Ryb3AtYmx1ci1tZCBwLTQgdy02NCBzcGFjZS15LTNcIjtcbiAgICBdXG4gICAgW1xuICAgICAgZGl2XG4gICAgICAgIFsgY2xhc3NfbmFtZSBcInRleHQtY3lhbi00MDAgdGV4dC1sZyBmb250LWJvbGQgdHJhY2tpbmctWzNweF1cIiBdXG4gICAgICAgIFsgdGV4dCBcIkdMT0JFXCIgXTtcbiAgICAgIGRpdlxuICAgICAgICBbIGNsYXNzX25hbWUgXCJ0ZXh0LWdyYXktNjAwIHRleHQtWzEwcHhdIHRyYWNraW5nLXdpZGVzdCBtYi0zXCIgXVxuICAgICAgICBbIHRleHQgXCJSRU5ERVJJTkcgREVNT1wiIF07XG4gICAgICBkaXZcbiAgICAgICAgWyBjbGFzc19uYW1lIFwidGV4dC1ncmF5LTUwMCB0ZXh0LVsxMHB4XSB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXJcIiBdXG4gICAgICAgIFsgdGV4dCBcIkxheWVyc1wiIF07XG4gICAgICBkaXZcbiAgICAgICAgWyBjbGFzc19uYW1lIFwiZmxleCBmbGV4LXdyYXAgZ2FwLTEuNSBtdC0xXCIgXVxuICAgICAgICBbXG4gICAgICAgICAgdG9nZ2xlIFwiRG90c1wiIHNob3dfZG90cztcbiAgICAgICAgICB0b2dnbGUgXCJHcmlkXCIgc2hvd19ncmlkO1xuICAgICAgICAgIHRvZ2dsZSBcIlN0YXJzXCIgc2hvd19zdGFycztcbiAgICAgICAgICB0b2dnbGUgXCJDb3ZlcmFnZVwiIHNob3dfY292ZXJhZ2U7XG4gICAgICAgICAgdG9nZ2xlIFwiT3JiaXRzXCIgc2hvd19vcmJpdHM7XG4gICAgICAgIF07XG4gICAgICBkaXZcbiAgICAgICAgW1xuICAgICAgICAgIGNsYXNzX25hbWVcbiAgICAgICAgICAgIFwidGV4dC1ncmF5LTUwMCB0ZXh0LVsxMHB4XSB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXIgbXQtMyBwdC0zIFxcXG4gICAgICAgICAgICAgYm9yZGVyLXQgYm9yZGVyLWdyYXktODAwXCI7XG4gICAgICAgIF1cbiAgICAgICAgWyB0ZXh0IFwiUGFyYW1ldGVyc1wiIF07XG4gICAgICBzbGlkZXIgXCJHcmlkXCIgZ3JpZF9zcGFjaW5nIH5taW46MTAuIH5tYXg6OTAuIH5zdGVwOjEwLjtcbiAgICAgIHNsaWRlciBcIlNhdHNcIiBudW1fc2F0cyB+bWluOjEuIH5tYXg6MjAuIH5zdGVwOjEuO1xuICAgIF1cblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG4oKiAgRW50cnkgcG9pbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxubGV0ICgpID1cbiAgbGV0IGRvYyA9IERvY3VtZW50Lm9mX2p2IChKdi5nZXQgSnYuZ2xvYmFsIFwiZG9jdW1lbnRcIikgaW5cbiAgbGV0IGNhbnZhc19lbCA9XG4gICAgbWF0Y2ggRG9jdW1lbnQuZmluZF9lbF9ieV9pZCBkb2MgKEpzdHIub2Zfc3RyaW5nIFwiZ2wtY2FudmFzXCIpIHdpdGhcbiAgICB8IFNvbWUgZWwgLT4gZWxcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJDYW52YXMgbm90IGZvdW5kXCJcbiAgaW5cbiAgbGV0IHNjZW5lID0gR2xvYmVfd2ViZ2wuU2NlbmUudiBjYW52YXNfZWwgaW5cbiAgKG1hdGNoIFN0ZHdlYi5Eb20uRG9jdW1lbnQuZ2V0X2VsZW1lbnRfYnlfaWQgXCJ1aVwiIHdpdGhcbiAgfCBTb21lIGVsIC0+IEh0bWwubW91bnQgZWwgKHVpICgpKVxuICB8IE5vbmUgLT4gKCkpO1xuICBsZXQgcHJldl9zcGFjaW5nID0gcmVmIDMwLiBpblxuICBsZXQgcmVjIHJlbmRlciBfbm93ID1cbiAgICBsZXQgdGltZSA9IF9ub3cgLy4gMjAwMC4gaW5cbiAgICBsZXQgc3AgPSBTaWduYWwuZ2V0IGdyaWRfc3BhY2luZyBpblxuICAgIGlmIHNwIDw+ICFwcmV2X3NwYWNpbmcgdGhlbiBiZWdpblxuICAgICAgR2xvYmVfd2ViZ2wuU2NlbmUuc2V0X2dyaWRfc3BhY2luZyBzY2VuZSBzcDtcbiAgICAgIHByZXZfc3BhY2luZyA6PSBzcFxuICAgIGVuZDtcbiAgICBsZXQgbiA9IEZsb2F0LnRvX2ludCAoU2lnbmFsLmdldCBudW1fc2F0cykgaW5cbiAgICBsZXQgY29sb3JzID0gR2xvYmUuQ29sb3IucGFsZXR0ZSBuIGluXG4gICAgbGV0IHNhdF9wb3MgPSBzYXRlbGxpdGVfcG9zaXRpb25zIHRpbWUgbiBpblxuICAgIGxldCBnbCA9IEdsb2JlX3dlYmdsLlNjZW5lLmdsIHNjZW5lIGluXG4gICAgbGV0IG9yYml0ID0gR2xvYmVfd2ViZ2wuU2NlbmUub3JiaXQgc2NlbmUgaW5cbiAgICBHbG9iZV93ZWJnbC5PcmJpdC5jbGVhcl9saW5lcyBvcmJpdDtcbiAgICBMaXN0Lml0ZXJpXG4gICAgICAoZnVuIGkgX3BvcyAtPlxuICAgICAgICBsZXQgZmkgPSBGbG9hdC5vZl9pbnQgaSBpblxuICAgICAgICBsZXQgY29sb3IgPSBMaXN0Lm50aCBjb2xvcnMgaSBpblxuICAgICAgICBsZXQgcGhhc2UgPSBmaSAqLiAxLjIgaW5cbiAgICAgICAgbGV0IGdob3N0ID1cbiAgICAgICAgICBBcnJheS5pbml0IDEyMCAoZnVuIGogLT5cbiAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgIChvcmJpdF9wb2ludCBmaVxuICAgICAgICAgICAgICAgICAgICgoRmxvYXQub2ZfaW50IGogKi4gMi4gKi4gRmxvYXQucGkgLy4gMTIwLikgKy4gcGhhc2UpKSlcbiAgICAgICAgaW5cbiAgICAgICAgR2xvYmVfd2ViZ2wuT3JiaXQuYWRkX3RyYWlsIGdsIG9yYml0IGdob3N0IH5oZWFkX2lkeDowXG4gICAgICAgICAgfmNvbG9yOkdsb2JlLkNvbG9yLmdob3N0O1xuICAgICAgICBsZXQgdHJhaWwgPVxuICAgICAgICAgIEFycmF5LmluaXQgNTAgKGZ1biBqIC0+XG4gICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAob3JiaXRfcG9pbnQgZmlcbiAgICAgICAgICAgICAgICAgICAodGltZSArLiBwaGFzZSArLiAoRmxvYXQub2ZfaW50IChqIC0gNDkpICouIDAuMDMpKSkpXG4gICAgICAgIGluXG4gICAgICAgIEdsb2JlX3dlYmdsLk9yYml0LmFkZF90cmFpbCBnbCBvcmJpdCB0cmFpbCB+aGVhZF9pZHg6NDkgfmNvbG9yKVxuICAgICAgc2F0X3BvcztcbiAgICBsZXQgY292ID0gR2xvYmVfd2ViZ2wuU2NlbmUuY292ZXJhZ2Ugc2NlbmUgaW5cbiAgICBsZXQgYW5nbGUgPVxuICAgICAgR2xvYmUuR2VvbWV0cnkuZm9vdHByaW50X2FuZ2xlIH5hbHRpdHVkZTo0MTUuIH5taW5fZWxldmF0aW9uOjAuXG4gICAgaW5cbiAgICBsZXQgZm9vdHByaW50cyA9XG4gICAgICBpZiBTaWduYWwuZ2V0IHNob3dfY292ZXJhZ2UgdGhlblxuICAgICAgICBMaXN0Lm1hcGlcbiAgICAgICAgICAoZnVuIGkgcG9zIC0+XG4gICAgICAgICAgICBHbG9iZV93ZWJnbC5Db3ZlcmFnZS5cbiAgICAgICAgICAgICAgeyBwb3M7IGNvbG9yID0gTGlzdC5udGggY29sb3JzIGk7IGhhbGZfYW5nbGUgPSBhbmdsZSB9KVxuICAgICAgICAgIHNhdF9wb3NcbiAgICAgIGVsc2UgW11cbiAgICBpblxuICAgIEdsb2JlX3dlYmdsLkNvdmVyYWdlLmxvYWQgZ2wgY292IGZvb3RwcmludHM7XG4gICAgbGV0IGhhc19jb3YgPSBTaWduYWwuZ2V0IHNob3dfY292ZXJhZ2UgJiYgU2lnbmFsLmdldCBzaG93X29yYml0cyBpblxuICAgIGxldCBmcmFtZSA9IEdsb2JlX3dlYmdsLlNjZW5lLmJlZ2luX2ZyYW1lIHNjZW5lIDAuMDE2IGluXG4gICAgR2xvYmVfd2ViZ2wuU2NlbmUuZHJhdyBzY2VuZSBmcmFtZVxuICAgICAge1xuICAgICAgICBHbG9iZV93ZWJnbC5TY2VuZS5kZWZhdWx0X2xheWVycyB3aXRoXG4gICAgICAgIHNob3dfc3RhcnMgPSBTaWduYWwuZ2V0IHNob3dfc3RhcnM7XG4gICAgICAgIHNob3dfZWFydGggPSBTaWduYWwuZ2V0IHNob3dfZG90cztcbiAgICAgICAgc2hvd19ncmlkID0gU2lnbmFsLmdldCBzaG93X2dyaWQ7XG4gICAgICAgIHNob3dfb3JiaXRzID0gU2lnbmFsLmdldCBzaG93X29yYml0cztcbiAgICAgICAgc2hvd19jb3ZlcmFnZSA9IFNpZ25hbC5nZXQgc2hvd19jb3ZlcmFnZTtcbiAgICAgICAgZWFydGhfZGltID0gKGlmIGhhc19jb3YgdGhlbiAwLjIgZWxzZSAxLjApO1xuICAgICAgICBvcmJpdF9kb3RzID1cbiAgICAgICAgICBMaXN0Lm1hcGlcbiAgICAgICAgICAgIChmdW4gaSBwb3MgLT4gR2xvYmVfd2ViZ2wuT3JiaXQueyBwb3M7IGNvbG9yID0gTGlzdC5udGggY29sb3JzIGkgfSlcbiAgICAgICAgICAgIHNhdF9wb3M7XG4gICAgICB9O1xuICAgIGlnbm9yZSAoRy5yZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZSByZW5kZXIpXG4gIGluXG4gIGlnbm9yZSAoRy5yZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZSByZW5kZXIpXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYl9MaXN0IiwiU3RkbGliX0Zsb2F0IiwiU3RkbGliX0FycmF5IiwiR2xvYmVfQ29sb3IiLCJHbG9iZV93ZWJnbF9PcmJpdCIsIlNpZ25hbCIsIkdsb2JlX3dlYmdsX1NjZW5lIiwiR2xvYmVfR2VvbWV0cnkiLCJHbG9iZV93ZWJnbF9Db3ZlcmFnZSIsIkJyciIsIkh0bWwiLCJGbXQiLCJIZWxpeCIsIkdsb2JlX01hdGgiLCJKdiIsIlN0ZGxpYiIsIlN0ZHdlYiIsInNob3dfZG90cyIsInNob3dfZ3JpZCIsInNob3dfc3RhcnMiLCJzaG93X2NvdmVyYWdlIiwic2hvd19vcmJpdHMiLCJncmlkX3NwYWNpbmciLCJudW1fc2F0cyIsIm9yYml0X3BvaW50IiwiZmkiLCJ0IiwiaW5jbCIsInRvZ2dsZSIsImxhYmVsIiwic2lnbmFsIiwiYWN0aXZlIiwicGFyYW0iLCJjc3RfMGYiLCJzbGlkZXIiLCJtaW4iLCJtYXgiLCJzdGVwIiwidiIsIm1hdGNoIiwiZG9jIiwiZWwiLCJjYW52YXNfZWwiLCJzY2VuZSIsImNzdF9HcmlkIiwicHJldl9zcGFjaW5nIiwicmVuZGVyIiwibm93IiwidGltZSIsInNwIiwibiIsImNvbG9ycyIsInNhdF9wb3MiLCJpIiwiZ2wiLCJvcmJpdCIsInBvcyIsImNvbG9yIiwicGhhc2UiLCJnaG9zdCIsImoiLCJ0cmFpbCIsImNvdiIsImFuZ2xlIiwiZm9vdHByaW50cyIsImhhc19jb3YiLCJmcmFtZSIs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QyxRQUNBO0FBQUEsUUFBQUM7QUFBQUEsVUFFVjtBQUFBO0FBQUE7QUFBQSxxQkFBQUM7QUFBQUEsYUFFTTtBQUFBLCtFQUN5RDtBQUFBO0FBQUEsT0FFakU7QUFBQTtBQUFBLFFBQUFDO0FBQUFBLFVBR0U7QUFBQTtBQUFBO0FBQUEscUJBQUFEO0FBQUFBLGFBRU0sK0RBQ3NEO0FBQUE7QUFBQSxPQUU5RCxtRUFBOEQ7QUFBQTtBQUFBO0FBQUE7QUFBQSxLQUFBRSxNQUV4RDtBQUFBLEtBQUFDLFFBRVI7QUFBQSxLQUFBQztBQUFBQSxPQUdHO0FBQUEsVUFDRDtBQUFBO0FBQUE7QUFBQSxvQkFBQVgsR0FBQUc7QUFBQUEsWUFHcUIsNERBQWlCO0FBQUEsV0FBc0I7QUFBQTtBQUFBO0FBQUEsSUFJaEU7QUFBQTtBQUFBLFNBQ2M7QUFBQSxLQUFBUyxVQUF3QixJQUFJO0FBQUEsS0FBQUMsUUFDOUI7QUFBQSxLQUFBQyxPQUF5QztBQUFBLFNBVy9DO0FBQUE7QUFBQTtBQUFBO0FBQUEsa0JBQUFkLEdBQUFHO0FBQUFBLFVBQ2lELHFEQUFpQjtBQUFBLFNBQUU7QUFBQTtBQUFBLFNBQzNEO0FBQUE7QUFBQTtBQUFBO0FBQUEsU0FMSztBQUFBLFNBREY7QUFBQSxTQURGO0FBQUEsU0FEQztBQUFBLFNBREE7QUFBQSxJQUhqQjtBQUFBLElBY087QUFBQSxJQUFrQztBQUFBO0FBQUEsR0FFcEM7QUFBQSxHQUFrQztBQUFBO0FBQUEsRURuTjNDIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDc4OTksImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkX2V4aXQuY21vLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL3N0ZF9leGl0Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBFbnN1cmUgdGhhdCBbYXRfZXhpdF0gZnVuY3Rpb25zIGFyZSBjYWxsZWQgYXQgdGhlIGVuZCBvZiBldmVyeSBwcm9ncmFtICopXG5cbmxldCBfID0gZG9fYXRfZXhpdCgpXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJTdGRsaWIiXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE9BQUFDLFNBQUE7QUFBQSxHQ2lCUTtBQUFBLEdBQVk7QUFBQTtBQUFBLEVEakJwQiIsImlnbm9yZUxpc3QiOlswXX19XX0= 47913 + //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5iYy5qcyIsInNlY3Rpb25zIjpbeyJvZmZzZXQiOnsibGluZSI6MywiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiIubWFpbi5lb2Jqcy9qc29vL21haW4uYmMucnVudGltZS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvYnVpbHRpbi8rbWxCeXRlcy5qcyIsIi9idWlsdGluLyttYXJzaGFsLmpzIiwiL2J1aWx0aW4vK2lvLmpzIiwiL2J1aWx0aW4vK3N5cy5qcyIsIi9idWlsdGluLytiYWNrdHJhY2UuanMiLCIvYnVpbHRpbi8rc3RkbGliLmpzIiwiL2J1aWx0aW4vK2pzbGliLmpzIiwiL2J1aWx0aW4vK2ZhaWwuanMiLCIvYnVpbHRpbi8rdW5peC5qcyIsIi9idWlsdGluLytmcy5qcyIsIi9idWlsdGluLytmc19mYWtlLmpzIiwiL2J1aWx0aW4vK2ludDY0LmpzIiwiL2J1aWx0aW4vK3N5bmMuanMiLCIvYnVpbHRpbi8rbmF0LmpzIiwiL2J1aWx0aW4vK2ZzX25vZGUuanMiLCIvYnVpbHRpbi8rYmlnYXJyYXkuanMiLCIvYnVpbHRpbi8rYmlnc3RyaW5nLmpzIiwiL2J1aWx0aW4vK2JsYWtlMi5qcyIsIi9idWlsdGluLyttZDUuanMiLCIvYnVpbHRpbi8raWVlZV83NTQuanMiLCIvYnVpbHRpbi8rb2JqLmpzIiwiL2J1aWx0aW4vK2VmZmVjdC5qcyIsIi9idWlsdGluLythcnJheS5qcyIsIi9idWlsdGluLytkb21haW4uanMiLCIvYnVpbHRpbi8raW50cy5qcyIsIi9idWlsdGluLytoYXNoLmpzIiwiL2J1aWx0aW4vK2NvbXBhcmUuanMiLCIvYnVpbHRpbi8rcnVudGltZV9ldmVudHMuanMiLCIvYnVpbHRpbi8renN0ZC5qcyIsIi9idWlsdGluLyt3ZWFrLmpzIiwiL2J1aWx0aW4vK2djLmpzIiwiL2J1aWx0aW4vK2Zvcm1hdC5qcyIsIi9idWlsdGluLytncmFwaGljcy5qcyIsIi9idWlsdGluLytqc2xpYl9qc19vZl9vY2FtbC5qcyIsIi9idWlsdGluLytsZXhpbmcuanMiLCIvYnVpbHRpbi8rcHJuZy5qcyIsIi9idWlsdGluLytwYXJzaW5nLmpzIiwiL2J1aWx0aW4vK3N0ci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMC0yMDE0IErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vIEFuIE9DYW1sIHN0cmluZyBpcyBhbiBvYmplY3Qgd2l0aCB0aHJlZSBmaWVsZHM6XG4vLyAtIHRhZyAndCdcbi8vIC0gbGVuZ3RoICdsJ1xuLy8gLSBjb250ZW50cyAnYydcbi8vXG4vLyBUaGUgY29udGVudHMgb2YgdGhlIHN0cmluZyBjYW4gYmUgZWl0aGVyIGEgSmF2YVNjcmlwdCBhcnJheSBvclxuLy8gYSBKYXZhU2NyaXB0IHN0cmluZy4gVGhlIGxlbmd0aCBvZiB0aGlzIHN0cmluZyBjYW4gYmUgbGVzcyB0aGFuIHRoZVxuLy8gbGVuZ3RoIG9mIHRoZSBPQ2FtbCBzdHJpbmcuIEluIHRoaXMgY2FzZSwgcmVtYWluaW5nIGJ5dGVzIGFyZVxuLy8gYXNzdW1lZCB0byBiZSB6ZXJvZXMuIEFycmF5cyBhcmUgbXV0YWJsZSBidXQgY29uc3VtZXMgbW9yZSBtZW1vcnlcbi8vIHRoYW4gc3RyaW5ncy4gQSBjb21tb24gcGF0dGVybiBpcyB0byBzdGFydCBmcm9tIGFuIGVtcHR5IHN0cmluZyBhbmRcbi8vIHByb2dyZXNzaXZlbHkgZmlsbCBpdCBmcm9tIHRoZSBzdGFydC4gUGFydGlhbCBzdHJpbmdzIG1ha2VzIGl0XG4vLyBwb3NzaWJsZSB0byBpbXBsZW1lbnQgdGhpcyBlZmZpY2llbnRseS5cbi8vXG4vLyBXaGVuIGNvbnZlcnRpbmcgdG8gYW5kIGZyb20gVVRGLTE2LCB3ZSBrZWVwIHRyYWNrIG9mIHdoZXRoZXIgdGhlXG4vLyBzdHJpbmcgaXMgY29tcG9zZWQgb25seSBvZiBBU0NJSSBjaGFyYWN0ZXJzIChpbiB3aGljaCBjYXNlLCBub1xuLy8gY29udmVyc2lvbiBuZWVkcyB0byBiZSBwZXJmb3JtZWQpIG9yIG5vdC5cbi8vXG4vLyBUaGUgc3RyaW5nIHRhZyBjYW4gdGh1cyB0YWtlIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuLy8gICBmdWxsIHN0cmluZyAgICAgQllURSB8IFVOS05PV046ICAgICAgMFxuLy8gICAgICAgICAgICAgICAgICAgQllURSB8IEFTQ0lJOiAgICAgICAgOVxuLy8gICAgICAgICAgICAgICAgICAgQllURSB8IE5PVF9BU0NJSTogICAgOFxuLy8gICBzdHJpbmcgcHJlZml4ICAgUEFSVElBTDogICAgICAgICAgICAgMlxuLy8gICBhcnJheSAgICAgICAgICAgQVJSQVk6ICAgICAgICAgICAgICAgNFxuLy9cbi8vIE9uZSBjYW4gdXNlIGJpdCBtYXNraW5nIHRvIGRpc2NyaW1pbmF0ZSB0aGVzZSBkaWZmZXJlbnQgY2FzZXM6XG4vLyAgIGtub3duX2VuY29kaW5nKHgpID0geCY4XG4vLyAgIGlzX2FzY2lpKHgpID0gICAgICAgeCYxXG4vLyAgIGtpbmQoeCkgPSAgICAgICAgICAgeCY2XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyX3JlcGVhdFxuZnVuY3Rpb24gY2FtbF9zdHJfcmVwZWF0KG4sIHMpIHtcbiAgcmV0dXJuIHMucmVwZWF0KG4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXNcbi8vV2Vha2RlZlxuLy8gUHJlIEVDTUFTY3JpcHQgNSwgW2FwcGx5XSB3b3VsZCBub3Qgc3VwcG9ydCBhcnJheS1saWtlIG9iamVjdC5cbi8vIEluIHN1Y2ggc2V0dXAsIFR5cGVkX2FycmF5IHdvdWxkIGJlIGltcGxlbWVudGVkIGFzIHBvbHlmaWxsLCBhbmQgW2YuYXBwbHldIHdvdWxkXG4vLyBmYWlsIGhlcmUuIE1hcmsgdGhlIHByaW1pdGl2ZSBhcyBXZWFrZGVmLCBzbyB0aGF0IHBlb3BsZSBjYW4gb3ZlcnJpZGUgaXQgZWFzaWx5LlxuZnVuY3Rpb24gY2FtbF9zdWJhcnJheV90b19qc2J5dGVzKGEsIGksIGxlbikge1xuICB2YXIgZiA9IFN0cmluZy5mcm9tQ2hhckNvZGU7XG4gIGlmIChpID09PSAwICYmIGxlbiA8PSA0MDk2ICYmIGxlbiA9PT0gYS5sZW5ndGgpIHJldHVybiBmLmFwcGx5KG51bGwsIGEpO1xuICB2YXIgcyA9IFwiXCI7XG4gIGZvciAoOyAwIDwgbGVuOyBpICs9IDEwMjQsIGxlbiAtPSAxMDI0KVxuICAgIHMgKz0gZi5hcHBseShudWxsLCBhLnNsaWNlKGksIGkgKyBNYXRoLm1pbihsZW4sIDEwMjQpKSk7XG4gIHJldHVybiBzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N1Yl91aW50OF9hcnJheV90b19qc2J5dGVzXG4vL1dlYWtkZWZcbi8vIFByZSBFQ01BU2NyaXB0IDUsIFthcHBseV0gd291bGQgbm90IHN1cHBvcnQgYXJyYXktbGlrZSBvYmplY3QuXG4vLyBJbiBzdWNoIHNldHVwLCBUeXBlZF9hcnJheSB3b3VsZCBiZSBpbXBsZW1lbnRlZCBhcyBwb2x5ZmlsbCwgYW5kIFtmLmFwcGx5XSB3b3VsZFxuLy8gZmFpbCBoZXJlLiBNYXJrIHRoZSBwcmltaXRpdmUgYXMgV2Vha2RlZiwgc28gdGhhdCBwZW9wbGUgY2FuIG92ZXJyaWRlIGl0IGVhc2lseS5cbmZ1bmN0aW9uIGNhbWxfc3ViX3VpbnQ4X2FycmF5X3RvX2pzYnl0ZXMoYSwgaSwgbGVuKSB7XG4gIHZhciBmID0gU3RyaW5nLmZyb21DaGFyQ29kZTtcbiAgaWYgKGkgPT09IDAgJiYgbGVuIDw9IDQwOTYgJiYgbGVuID09PSBhLmxlbmd0aCkgcmV0dXJuIGYuYXBwbHkobnVsbCwgYSk7XG4gIHZhciBzID0gXCJcIjtcbiAgZm9yICg7IDAgPCBsZW47IGkgKz0gMTAyNCwgbGVuIC09IDEwMjQpXG4gICAgcyArPSBmLmFwcGx5KG51bGwsIGEuc3ViYXJyYXkoaSwgaSArIE1hdGgubWluKGxlbiwgMTAyNCkpKTtcbiAgcmV0dXJuIHM7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29faXNfYXNjaWlcbmZ1bmN0aW9uIGpzb29faXNfYXNjaWkocykge1xuICAvLyBUaGUgcmVndWxhciBleHByZXNzaW9uIGdldHMgYmV0dGVyIGF0IGFyb3VuZCB0aGlzIHBvaW50IGZvciBhbGwgYnJvd3NlcnNcbiAgaWYgKHMubGVuZ3RoIDwgMjQpIHtcbiAgICAvLyBTcGlkZXJtb25rZXkgZ2V0cyBtdWNoIHNsb3dlciB3aGVuIHMubGVuZ3RoID49IDI0IChvbiA2NCBiaXQgYXJjaHMpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzLmxlbmd0aDsgaSsrKSBpZiAocy5jaGFyQ29kZUF0KGkpID4gMTI3KSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0NvbnRyb2xDaGFyYWN0ZXJzSW5SZWdleDogZXhwZWN0ZWRcbiAgZWxzZSByZXR1cm4gIS9bXlxceDAwLVxceDdmXS8udGVzdChzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0IG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLCBpKSB7XG4gIHN3aXRjaCAocy50ICYgNikge1xuICAgIGNhc2UgMCAvKiBCWVRFUyAqLzpcbiAgICAgIHJldHVybiBzLmMuY2hhckNvZGVBdChpKTtcbiAgICBjYXNlIDIgLyogUEFSVElBTCAqLzpcbiAgICAgIGlmIChpID49IHMuYy5sZW5ndGgpIHJldHVybiAwO1xuICAgICAgcmV0dXJuIHMuYy5jaGFyQ29kZUF0KGkpO1xuICAgIGNhc2UgNCAvKiBBUlJBWSAqLzpcbiAgICAgIHJldHVybiBzLmNbaV07XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfdW5zYWZlX3NldChzLCBpLCBjKSB7XG4gIC8vIFRoZSBPQ2FtbCBjb21waWxlciB1c2VzIENoYXIudW5zYWZlX2NociBvbiBpbnRlZ2VycyBsYXJnZXIgdGhhbiAyNTUhXG4gIGMgJj0gMHhmZjtcbiAgaWYgKHMudCAhPT0gNCAvKiBBUlJBWSAqLykge1xuICAgIGlmIChpID09PSBzLmMubGVuZ3RoKSB7XG4gICAgICBzLmMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjKTtcbiAgICAgIGlmIChpICsgMSA9PT0gcy5sKSBzLnQgPSAwOyAvKkJZVEVTIHwgVU5LTk9XTiovXG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMpO1xuICB9XG4gIHMuY1tpXSA9IGM7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCkge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJpbmRleCBvdXQgb2YgYm91bmRzXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19nZXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldChzLCBpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSkgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldDE2XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQxNihzLCBpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSAtIDEpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSksXG4gICAgYjIgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkgKyAxKTtcbiAgcmV0dXJuIChiMiA8PCA4KSB8IGIxO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQsIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0MTYocywgaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSAxKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLCBpKSxcbiAgICBiMiA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLCBpICsgMSk7XG4gIHJldHVybiAoYjIgPDwgOCkgfCBiMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldDMyKHMsIGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIC0gMykgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKSxcbiAgICBiMiA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSArIDEpLFxuICAgIGIzID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpICsgMiksXG4gICAgYjQgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkgKyAzKTtcbiAgcmV0dXJuIChiNCA8PCAyNCkgfCAoYjMgPDwgMTYpIHwgKGIyIDw8IDgpIHwgYjE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCwgY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9ieXRlc19nZXQzMihzLCBpKSB7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDMpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0KHMsIGkpLFxuICAgIGIyID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0KHMsIGkgKyAxKSxcbiAgICBiMyA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLCBpICsgMiksXG4gICAgYjQgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQocywgaSArIDMpO1xuICByZXR1cm4gKGI0IDw8IDI0KSB8IChiMyA8PCAxNikgfCAoYjIgPDwgOCkgfCBiMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldDY0KHMsIGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIC0gNykgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGEgPSBuZXcgQXJyYXkoOCk7XG4gIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB7XG4gICAgYVs3IC0gal0gPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkgKyBqKTtcbiAgfVxuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19nZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0LCBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldDY0KHMsIGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gNykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYSA9IG5ldyBBcnJheSg4KTtcbiAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHtcbiAgICBhWzcgLSBqXSA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLCBpICsgaik7XG4gIH1cbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoYSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0KHMsIGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQocywgaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQoX3MsIF9pLCBfYykge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfc2V0XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQocywgaSwgYykge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBjYW1sX3N0cmluZ191bnNhZmVfc2V0KHMsIGksIGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0MTYocywgaSwgaTE2KSB7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDEpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIyID0gMHhmZiAmIChpMTYgPj4gOCksXG4gICAgYjEgPSAweGZmICYgaTE2O1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQocywgaSArIDAsIGIxKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0KHMsIGkgKyAxLCBiMik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0MzIocywgaSwgaTMyKSB7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDMpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGI0ID0gMHhmZiAmIChpMzIgPj4gMjQpLFxuICAgIGIzID0gMHhmZiAmIChpMzIgPj4gMTYpLFxuICAgIGIyID0gMHhmZiAmIChpMzIgPj4gOCksXG4gICAgYjEgPSAweGZmICYgaTMyO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQocywgaSArIDAsIGIxKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0KHMsIGkgKyAxLCBiMik7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldChzLCBpICsgMiwgYjMpO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQocywgaSArIDMsIGI0KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQ2NChzLCBpLCBpNjQpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gNykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYSA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoaTY0KTtcbiAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHtcbiAgICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQocywgaSArIDcgLSBqLCBhW2pdKTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQocywgaSwgYykge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX3NldChzLCBpLCBjKTtcbn1cblxuLy9Qcm92aWRlczoganNvb190ZXh0X2VuY29kZXJcbnZhciBqc29vX3RleHRfZW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpO1xuXG4vL1Byb3ZpZGVzOiBqc29vX3RleHRfZGVjb2RlclxudmFyIGpzb29fdGV4dF9kZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsIGpzb29fdGV4dF9lbmNvZGVyXG4vL1JlcXVpcmVzOiBqc29vX2lzX2FzY2lpXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nKHMpIHtcbiAgaWYgKGpzb29faXNfYXNjaWkocykpIHtcbiAgICByZXR1cm4gbmV3IE1sQnl0ZXMoOSwgcywgcy5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHZhciBhID0ganNvb190ZXh0X2VuY29kZXIuZW5jb2RlKHMpO1xuICAgIHJldHVybiBuZXcgTWxCeXRlcyg0LCBhLCBhLmxlbmd0aCk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogTWxCeXRlc1xuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcywganNvb19pc19hc2NpaVxuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuLy9SZXF1aXJlczoganNvb190ZXh0X2RlY29kZXJcbmNsYXNzIE1sQnl0ZXMge1xuICBjb25zdHJ1Y3Rvcih0YWcsIGNvbnRlbnRzLCBsZW5ndGgpIHtcbiAgICB0aGlzLnQgPSB0YWc7XG4gICAgdGhpcy5jID0gY29udGVudHM7XG4gICAgdGhpcy5sID0gbGVuZ3RoO1xuICB9XG5cbiAgdG9TdHJpbmcoKSB7XG4gICAgc3dpdGNoICh0aGlzLnQpIHtcbiAgICAgIGNhc2UgOTogLypCWVRFUyB8IEFTQ0lJKi9cbiAgICAgIGNhc2UgOCAvKkJZVEVTIHwgTk9UX0FTQ0lJKi86XG4gICAgICAgIHJldHVybiB0aGlzLmM7XG4gICAgICBjYXNlIDQ6IC8qIEFSUkFZICovXG4gICAgICBjYXNlIDIgLyogUEFSVElBTCAqLzpcbiAgICAgICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0ZhbGx0aHJvdWdoU3dpdGNoQ2xhdXNlOlxuICAgICAgICBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHRoaXMpO1xuICAgICAgLy8gZmFsbHRocm91Z2hcbiAgICAgIGNhc2UgMCAvKkJZVEVTIHwgVU5LTk9XTiovOlxuICAgICAgICBpZiAoanNvb19pc19hc2NpaSh0aGlzLmMpKSB0aGlzLnQgPSA5OyAvKkJZVEVTIHwgQVNDSUkqL1xuICAgICAgICBlbHNlIHRoaXMudCA9IDg7IC8qQllURVMgfCBOT1RfQVNDSUkqL1xuICAgICAgICByZXR1cm4gdGhpcy5jO1xuICAgIH1cbiAgfVxuXG4gIHRvVXRmMTYoKSB7XG4gICAgaWYgKHRoaXMudCA9PT0gOSkgcmV0dXJuIHRoaXMuYztcbiAgICB2YXIgYSA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXModGhpcyk7XG4gICAgcmV0dXJuIGpzb29fdGV4dF9kZWNvZGVyLmRlY29kZShhKTtcbiAgfVxuXG4gIHNsaWNlKCkge1xuICAgIHZhciBjb250ZW50ID0gdGhpcy50ID09PSA0ID8gdGhpcy5jLnNsaWNlKCkgOiB0aGlzLmM7XG4gICAgcmV0dXJuIG5ldyBNbEJ5dGVzKHRoaXMudCwgY29udGVudCwgdGhpcy5sKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cl9yZXBlYXQsIGNhbWxfc3ViX3VpbnQ4X2FycmF5X3RvX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMocykge1xuICAvKiBBc3N1bWVzIG5vdCBCWVRFUyAqL1xuICBpZiAocy50ID09PSAyIC8qIFBBUlRJQUwgKi8pIHMuYyArPSBjYW1sX3N0cl9yZXBlYXQocy5sIC0gcy5jLmxlbmd0aCwgXCJcXDBcIik7XG4gIGVsc2Ugcy5jID0gY2FtbF9zdWJfdWludDhfYXJyYXlfdG9fanNieXRlcyhzLmMsIDAsIHMuYy5sZW5ndGgpO1xuICBzLnQgPSAwOyAvKkJZVEVTIHwgVU5LTk9XTiovXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMpIHtcbiAgLyogQXNzdW1lcyBub3QgQVJSQVkgKi9cbiAgdmFyIGEgPSBuZXcgVWludDhBcnJheShzLmwpO1xuICB2YXIgYiA9IHMuYyxcbiAgICBsID0gYi5sZW5ndGgsXG4gICAgaSA9IDA7XG4gIGZvciAoOyBpIDwgbDsgaSsrKSBhW2ldID0gYi5jaGFyQ29kZUF0KGkpO1xuICBmb3IgKGwgPSBzLmw7IGkgPCBsOyBpKyspIGFbaV0gPSAwO1xuICBzLmMgPSBhO1xuICBzLnQgPSA0OyAvKiBBUlJBWSAqL1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMocykge1xuICBpZiAocy50ICE9PSA0IC8qIEFSUkFZICovKSBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkocyk7XG4gIHJldHVybiBzLmM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuZnVuY3Rpb24gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcocykge1xuICB2YXIgbCA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKTtcbiAgdmFyIGEgPSBuZXcgVWludDhBcnJheShsKTtcbiAgdmFyIGkgPSAwO1xuICBmb3IgKDsgaSA8IGw7IGkrKykgYVtpXSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk7XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9jcmVhdGVfc3RyaW5nKGxlbikge1xuICBpZiAobGVuIDwgMCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyaW5nLmNyZWF0ZVwiKTtcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKGxlbiA/IDIgOiA5LCBcIlwiLCBsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2NyZWF0ZV9zdHJpbmcoX2xlbikge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHJpbmcuY3JlYXRlXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9ieXRlcyBjb25zdFxuLy9SZXF1aXJlczogTWxCeXRlcyxjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX2J5dGVzKGxlbikge1xuICBpZiAobGVuIDwgMCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQnl0ZXMuY3JlYXRlXCIpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXMobGVuID8gMiA6IDksIFwiXCIsIGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2FycmF5KGEpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY2FtbF9zdWJhcnJheV90b19qc2J5dGVzKGEsIDAsIGEubGVuZ3RoKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX3VpbnQ4X2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3N1Yl91aW50OF9hcnJheV90b19qc2J5dGVzXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX3VpbnQ4X2FycmF5KGEpIHtcbiAgcmV0dXJuIGNhbWxfc3ViX3VpbnQ4X2FycmF5X3RvX2pzYnl0ZXMoYSwgMCwgYS5sZW5ndGgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl91aW50OF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl91aW50OF9hcnJheVxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfdWludDhfYXJyYXkoYSkge1xuICByZXR1cm4gY2FtbF9ieXRlc19vZl91aW50OF9hcnJheShhLnNsaWNlKCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX2FycmF5XG4vL1JlcXVpcmVzOiBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX2FycmF5KGEpIHtcbiAgaWYgKCEoYSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKSB7XG4gICAgYSA9IG5ldyBVaW50OEFycmF5KGEpO1xuICB9XG4gIHJldHVybiBuZXcgTWxCeXRlcyg0LCBhLCBhLmxlbmd0aCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2ZfdWludDhfYXJyYXlcbi8vUmVxdWlyZXM6IE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2ZfdWludDhfYXJyYXkoYSkge1xuICByZXR1cm4gbmV3IE1sQnl0ZXMoNCwgYSwgYS5sZW5ndGgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2NvbXBhcmUgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19jb21wYXJlKHMxLCBzMikge1xuICBzMS50ICYgNiAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgczIudCAmIDYgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiBzMS5jIDwgczIuYyA/IC0xIDogczEuYyA+IHMyLmMgPyAxIDogMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19lcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2VxdWFsKHMxLCBzMikge1xuICBpZiAoczEgPT09IHMyKSByZXR1cm4gMTtcbiAgczEudCAmIDYgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIHMyLnQgJiA2ICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gczEuYyA9PT0gczIuYyA/IDEgOiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ub3RlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19lcXVhbFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbm90ZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiAxIC0gY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ub3RlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2VxdWFsXG5mdW5jdGlvbiBjYW1sX2J5dGVzX25vdGVxdWFsKHMxLCBzMikge1xuICByZXR1cm4gMSAtIGNhbWxfYnl0ZXNfZXF1YWwoczEsIHMyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19sZXNzZXF1YWwgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19sZXNzZXF1YWwoczEsIHMyKSB7XG4gIHMxLnQgJiA2ICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICBzMi50ICYgNiAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIHMxLmMgPD0gczIuYyA/IDEgOiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2xlc3N0aGFuIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfbGVzc3RoYW4oczEsIHMyKSB7XG4gIHMxLnQgJiA2ICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICBzMi50ICYgNiAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIHMxLmMgPCBzMi5jID8gMSA6IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dyZWF0ZXJlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfbGVzc2VxdWFsXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ncmVhdGVyZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19sZXNzZXF1YWwoczIsIHMxKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ3JlYXRlcmVxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2xlc3NlcXVhbFxuZnVuY3Rpb24gY2FtbF9ieXRlc19ncmVhdGVyZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3NlcXVhbChzMiwgczEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ncmVhdGVydGhhblxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfbGVzc3RoYW5cbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dyZWF0ZXJ0aGFuKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfbGVzc3RoYW4oczIsIHMxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ncmVhdGVydGhhblxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzdGhhblxuZnVuY3Rpb24gY2FtbF9ieXRlc19ncmVhdGVydGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc3RoYW4oczIsIHMxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maWxsX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cl9yZXBlYXQsIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuLy9BbGlhczogY2FtbF9maWxsX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9maWxsX2J5dGVzKHMsIGksIGwsIGMpIHtcbiAgaWYgKGwgPiAwKSB7XG4gICAgaWYgKGkgPT09IDAgJiYgKGwgPj0gcy5sIHx8IChzLnQgPT09IDIgLyogUEFSVElBTCAqLyAmJiBsID49IHMuYy5sZW5ndGgpKSkge1xuICAgICAgaWYgKGMgPT09IDApIHtcbiAgICAgICAgcy5jID0gXCJcIjtcbiAgICAgICAgcy50ID0gMjsgLyogUEFSVElBTCAqL1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcy5jID0gY2FtbF9zdHJfcmVwZWF0KGwsIFN0cmluZy5mcm9tQ2hhckNvZGUoYykpO1xuICAgICAgICBzLnQgPSBsID09PSBzLmwgPyAwIC8qIEJZVEVTIHwgVU5LTk9XTiAqLyA6IDI7IC8qIFBBUlRJQUwgKi9cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHMudCAhPT0gNCAvKiBBUlJBWSAqLykgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMpO1xuICAgICAgZm9yIChsICs9IGk7IGkgPCBsOyBpKyspIHMuY1tpXSA9IGM7XG4gICAgfVxuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JsaXRfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfc3ViX3VpbnQ4X2FycmF5X3RvX2pzYnl0ZXMsIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9ibGl0X2J5dGVzKHMxLCBpMSwgczIsIGkyLCBsZW4pIHtcbiAgaWYgKGxlbiA9PT0gMCkgcmV0dXJuIDA7XG4gIGlmIChcbiAgICBpMiA9PT0gMCAmJlxuICAgIChsZW4gPj0gczIubCB8fCAoczIudCA9PT0gMiAvKiBQQVJUSUFMICovICYmIGxlbiA+PSBzMi5jLmxlbmd0aCkpXG4gICkge1xuICAgIHMyLmMgPVxuICAgICAgczEudCA9PT0gNCAvKiBBUlJBWSAqL1xuICAgICAgICA/IGNhbWxfc3ViX3VpbnQ4X2FycmF5X3RvX2pzYnl0ZXMoczEuYywgaTEsIGxlbilcbiAgICAgICAgOiBpMSA9PT0gMCAmJiBzMS5jLmxlbmd0aCA9PT0gbGVuXG4gICAgICAgICAgPyBzMS5jXG4gICAgICAgICAgOiBzMS5jLnNsaWNlKGkxLCBpMSArIGxlbik7XG4gICAgczIudCA9IHMyLmMubGVuZ3RoID09PSBzMi5sID8gMCAvKiBCWVRFUyB8IFVOS05PV04gKi8gOiAyOyAvKiBQQVJUSUFMICovXG4gIH0gZWxzZSBpZiAoczIudCA9PT0gMiAvKiBQQVJUSUFMICovICYmIGkyID09PSBzMi5jLmxlbmd0aCkge1xuICAgIHMyLmMgKz1cbiAgICAgIHMxLnQgPT09IDQgLyogQVJSQVkgKi9cbiAgICAgICAgPyBjYW1sX3N1Yl91aW50OF9hcnJheV90b19qc2J5dGVzKHMxLmMsIGkxLCBsZW4pXG4gICAgICAgIDogaTEgPT09IDAgJiYgczEuYy5sZW5ndGggPT09IGxlblxuICAgICAgICAgID8gczEuY1xuICAgICAgICAgIDogczEuYy5zbGljZShpMSwgaTEgKyBsZW4pO1xuICAgIHMyLnQgPSBzMi5jLmxlbmd0aCA9PT0gczIubCA/IDAgLyogQllURVMgfCBVTktOT1dOICovIDogMjsgLyogUEFSVElBTCAqL1xuICB9IGVsc2Uge1xuICAgIGlmIChzMi50ICE9PSA0IC8qIEFSUkFZICovKSBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkoczIpO1xuICAgIHZhciBjMSA9IHMxLmMsXG4gICAgICBjMiA9IHMyLmM7XG4gICAgaWYgKHMxLnQgPT09IDQgLyogQVJSQVkgKi8pIHtcbiAgICAgIGlmIChpMiA8PSBpMSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBjMltpMiArIGldID0gYzFbaTEgKyBpXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAodmFyIGkgPSBsZW4gLSAxOyBpID49IDA7IGktLSkgYzJbaTIgKyBpXSA9IGMxW2kxICsgaV07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBsID0gTWF0aC5taW4obGVuLCBjMS5sZW5ndGggLSBpMSk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKykgYzJbaTIgKyBpXSA9IGMxLmNoYXJDb2RlQXQoaTEgKyBpKTtcbiAgICAgIGZvciAoOyBpIDwgbGVuOyBpKyspIGMyW2kyICsgaV0gPSAwO1xuICAgIH1cbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGl0X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ibGl0X3N0cmluZyhhLCBiLCBjLCBkLCBlKSB7XG4gIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX3N0cmluZyhhKSwgYiwgYywgZCwgZSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aCBjb25zdFxuZnVuY3Rpb24gY2FtbF9tbF9ieXRlc19sZW5ndGgocykge1xuICByZXR1cm4gcy5sO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb25jYXQgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfY29uY2F0KGEsIGIpIHtcbiAgcmV0dXJuIGEgKyBiO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb25jYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMsIE1sQnl0ZXNcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbmNhdChzMSwgczIpIHtcbiAgczEudCAmIDYgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIHMyLnQgJiA2ICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXMoMCwgczEuYyArIHMyLmMsIHMxLmwgKyBzMi5sKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpIHtcbiAgcmV0dXJuIHMuY2hhckNvZGVBdChpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSB7XG4gIHJldHVybiBzLmxlbmd0aDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfY29tcGFyZSBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19jb21wYXJlKHMxLCBzMikge1xuICByZXR1cm4gczEgPCBzMiA/IC0xIDogczEgPiBzMiA/IDEgOiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19lcXVhbCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19lcXVhbChzMSwgczIpIHtcbiAgaWYgKHMxID09PSBzMikgcmV0dXJuIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzZXF1YWwgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc2VxdWFsKHMxLCBzMikge1xuICByZXR1cm4gczEgPD0gczIgPyAxIDogMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfbGVzc3RoYW4gY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc3RoYW4oczEsIHMyKSB7XG4gIHJldHVybiBzMSA8IHMyID8gMSA6IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2J5dGVzKHMpIHtcbiAgcy50ICYgNiAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzLmMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHgpIHtcbiAgcmV0dXJuIHg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc2J5dGVzX29mX3N0cmluZyh4KSB7XG4gIHJldHVybiB4O1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX3RleHRfZGVjb2Rlcl9idWZmXG52YXIganNvb190ZXh0X2RlY29kZXJfYnVmZiA9IG5ldyBBcnJheUJ1ZmZlcigxMDI0KTtcblxuLy9Qcm92aWRlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29faXNfYXNjaWlcbi8vUmVxdWlyZXM6IGpzb29fdGV4dF9kZWNvZGVyXG4vL1JlcXVpcmVzOiBqc29vX3RleHRfZGVjb2Rlcl9idWZmXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpIHtcbiAgaWYgKGpzb29faXNfYXNjaWkocykpIHJldHVybiBzO1xuICB2YXIgYSA9XG4gICAgcy5sZW5ndGggPD0ganNvb190ZXh0X2RlY29kZXJfYnVmZi5sZW5ndGhcbiAgICAgID8gbmV3IFVpbnQ4QXJyYXkoanNvb190ZXh0X2RlY29kZXJfYnVmZiwgMCwgcy5sZW5ndGgpXG4gICAgICA6IG5ldyBVaW50OEFycmF5KHMubGVuZ3RoKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzLmxlbmd0aDsgaSsrKSB7XG4gICAgYVtpXSA9IHMuY2hhckNvZGVBdChpKTtcbiAgfVxuICByZXR1cm4ganNvb190ZXh0X2RlY29kZXIuZGVjb2RlKGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGpzb29fdGV4dF9lbmNvZGVyXG4vL1JlcXVpcmVzOiBqc29vX2lzX2FzY2lpLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHMpIHtcbiAgaWYgKGpzb29faXNfYXNjaWkocykpIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpO1xuICB2YXIgYSA9IGpzb29fdGV4dF9lbmNvZGVyLmVuY29kZShzKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMgY29uc3Rcbi8vUmVxdWlyZXM6IE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhzKSB7XG4gIHJldHVybiBuZXcgTWxCeXRlcygwLCBzLCBzLmxlbmd0aCk7XG59XG5cbi8vIFRoZSBzZWN0aW9uIGJlbG93IHNob3VsZCBiZSB1c2VkIHdoZW4gdXNlLWpzLXN0cmluZz1mYWxzZVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSkge1xuICByZXR1cm4gY2FtbF9ieXRlc191bnNhZmVfZ2V0KHMsIGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQocywgaSwgYykge1xuICByZXR1cm4gY2FtbF9ieXRlc191bnNhZmVfc2V0KHMsIGksIGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGggY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykge1xuICByZXR1cm4gY2FtbF9tbF9ieXRlc19sZW5ndGgocyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2NvbXBhcmVcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfY29tcGFyZVxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfY29tcGFyZShzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfY29tcGFyZShzMSwgczIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19lcXVhbFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19lcXVhbFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2VxdWFsKHMxLCBzMik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3NlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzZXF1YWxcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3NlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc2VxdWFsKHMxLCBzMik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3N0aGFuXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2xlc3N0aGFuXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19sZXNzdGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc3RoYW4oczEsIHMyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2J5dGVzKHMpIHtcbiAgcmV0dXJuIHM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3N0cmluZyhzKSB7XG4gIHJldHVybiBzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX2pzYnl0ZXNcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocykge1xuICByZXR1cm4gY2FtbF9ieXRlc19vZl9qc2J5dGVzKHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpIHtcbiAgcy50ICYgNiAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMpO1xuICByZXR1cm4gcy5jO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIHMudG9VdGYxNigpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZ1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocykge1xuICByZXR1cm4gY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyhzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19tbF9ieXRlc1xuLy9SZXF1aXJlczogTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9pc19tbF9ieXRlcyhzKSB7XG4gIHJldHVybiBzIGluc3RhbmNlb2YgTWxCeXRlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ieXRlc19jb250ZW50XG4vL1JlcXVpcmVzOiBNbEJ5dGVzLCBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG4vL1JldHVybnMgYSAoZnVsbCkgc3RyaW5nIG9mIGJ5dGVzIG9yIGFuIGFycmF5XG5mdW5jdGlvbiBjYW1sX21sX2J5dGVzX2NvbnRlbnQocykge1xuICBzd2l0Y2ggKHMudCAmIDYpIHtcbiAgICBjYXNlIDIgLyogUEFSVElBTCAqLzpcbiAgICAgIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMocyk7XG4gICAgICByZXR1cm4gcy5jO1xuICAgIGRlZmF1bHQ6IC8qIEJZVEVTIG9yIEFSUkFZICovXG4gICAgICByZXR1cm4gcy5jO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfbWxfc3RyaW5nXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfaXNfbWxfc3RyaW5nKHMpIHtcbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0NvbnRyb2xDaGFyYWN0ZXJzSW5SZWdleDogZXhwZWN0ZWRcbiAgcmV0dXJuIHR5cGVvZiBzID09PSBcInN0cmluZ1wiICYmICEvW15cXHgwMC1cXHhmZl0vLnRlc3Qocyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfbWxfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2lzX21sX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2lzX21sX2J5dGVzKHMpO1xufVxuXG4vLyBUaGUgZnVuY3Rpb25zIGJlbG93IGFyZSBkZXByZWNhdGVkXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vRGVwcmVjYXRlZDogVXNlIFtjYW1sX3N0cmluZ19vZl9qc2J5dGVzXSBpbnN0ZWFkXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2J5dGVfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9zdHJpbmcgbXV0YWJsZSAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9EZXByZWNhdGVkOiBVc2UgW2NhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXSBpbnN0ZWFkXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3RvX2pzX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG4vL0RlcHJlY2F0ZWQ6IFVzZSBbY2FtbF9qc3N0cmluZ19vZl9zdHJpbmddIGluc3RlYWRcbmZ1bmN0aW9uIGNhbWxfdG9fanNfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vRGVwcmVjYXRlZDogVXNlIFtjYW1sX3N0cmluZ19vZl9qc3N0cmluZ10gaW5zdGVhZFxuZnVuY3Rpb24gY2FtbF9qc190b19zdHJpbmcocykge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuLy9EZXByZWNhdGVkOiBVc2UgW2NhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nXSBpbnN0ZWFkXG5mdW5jdGlvbiBjYW1sX2FycmF5X29mX3N0cmluZyh4KSB7XG4gIHJldHVybiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyh4KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuLy9EZXByZWNhdGVkOiBVc2UgW2NhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNdIGluc3RlYWRcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfb2ZfYnl0ZXMoeCkge1xuICByZXR1cm4gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyh4KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9uZXdfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL0RlcHJlY2F0ZWQ6IFVzZSBbY2FtbF9zdHJpbmdfb2ZfanNieXRlc10gaW5zdGVhZFxuZnVuY3Rpb24gY2FtbF9uZXdfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocyk7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9tYXJzaGFsX2NvbnN0YW50c1xudmFyIGNhbWxfbWFyc2hhbF9jb25zdGFudHMgPSB7XG4gIFBSRUZJWF9TTUFMTF9CTE9DSzogMHg4MCxcbiAgUFJFRklYX1NNQUxMX0lOVDogMHg0MCxcbiAgUFJFRklYX1NNQUxMX1NUUklORzogMHgyMCxcbiAgQ09ERV9JTlQ4OiAweDAwLFxuICBDT0RFX0lOVDE2OiAweDAxLFxuICBDT0RFX0lOVDMyOiAweDAyLFxuICBDT0RFX0lOVDY0OiAweDAzLFxuICBDT0RFX1NIQVJFRDg6IDB4MDQsXG4gIENPREVfU0hBUkVEMTY6IDB4MDUsXG4gIENPREVfU0hBUkVEMzI6IDB4MDYsXG4gIENPREVfQkxPQ0szMjogMHgwOCxcbiAgQ09ERV9CTE9DSzY0OiAweDEzLFxuICBDT0RFX1NUUklORzg6IDB4MDksXG4gIENPREVfU1RSSU5HMzI6IDB4MGEsXG4gIENPREVfRE9VQkxFX0JJRzogMHgwYixcbiAgQ09ERV9ET1VCTEVfTElUVExFOiAweDBjLFxuICBDT0RFX0RPVUJMRV9BUlJBWThfQklHOiAweDBkLFxuICBDT0RFX0RPVUJMRV9BUlJBWThfTElUVExFOiAweDBlLFxuICBDT0RFX0RPVUJMRV9BUlJBWTMyX0JJRzogMHgwZixcbiAgQ09ERV9ET1VCTEVfQVJSQVkzMl9MSVRUTEU6IDB4MDcsXG4gIENPREVfQ09ERVBPSU5URVI6IDB4MTAsXG4gIENPREVfSU5GSVhQT0lOVEVSOiAweDExLFxuICBDT0RFX0NVU1RPTTogMHgxMixcbiAgQ09ERV9DVVNUT01fTEVOOiAweDE4LFxuICBDT0RFX0NVU1RPTV9GSVhFRDogMHgxOSxcbn07XG5cbi8vUHJvdmlkZXM6IFVJbnQ4QXJyYXlSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX3VpbnQ4X2FycmF5XG5jbGFzcyBVSW50OEFycmF5UmVhZGVyIHtcbiAgY29uc3RydWN0b3IocywgaSkge1xuICAgIHRoaXMucyA9IHM7XG4gICAgdGhpcy5pID0gaTtcbiAgfVxuXG4gIHJlYWQ4dSgpIHtcbiAgICByZXR1cm4gdGhpcy5zW3RoaXMuaSsrXTtcbiAgfVxuXG4gIHJlYWQ4cygpIHtcbiAgICByZXR1cm4gKHRoaXMuc1t0aGlzLmkrK10gPDwgMjQpID4+IDI0O1xuICB9XG5cbiAgcmVhZDE2dSgpIHtcbiAgICB2YXIgcyA9IHRoaXMucyxcbiAgICAgIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChzW2ldIDw8IDgpIHwgc1tpICsgMV07XG4gIH1cblxuICByZWFkMTZzKCkge1xuICAgIHZhciBzID0gdGhpcy5zLFxuICAgICAgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKChzW2ldIDw8IDI0KSA+PiAxNikgfCBzW2kgKyAxXTtcbiAgfVxuXG4gIHJlYWQzMnUoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsXG4gICAgICBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoKHNbaV0gPDwgMjQpIHwgKHNbaSArIDFdIDw8IDE2KSB8IChzW2kgKyAyXSA8PCA4KSB8IHNbaSArIDNdKSA+Pj4gMDtcbiAgfVxuXG4gIHJlYWQzMnMoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsXG4gICAgICBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoc1tpXSA8PCAyNCkgfCAoc1tpICsgMV0gPDwgMTYpIHwgKHNbaSArIDJdIDw8IDgpIHwgc1tpICsgM107XG4gIH1cblxuICByZWFkc3RyKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX3VpbnQ4X2FycmF5KHRoaXMucy5zdWJhcnJheShpLCBpICsgbGVuKSk7XG4gIH1cblxuICByZWFkdWludDhhcnJheShsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiB0aGlzLnMuc3ViYXJyYXkoaSwgaSArIGxlbik7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogSnNTdHJpbmdSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmNsYXNzIEpzU3RyaW5nUmVhZGVyIHtcbiAgY29uc3RydWN0b3IocywgaSkge1xuICAgIHRoaXMucyA9IHM7XG4gICAgdGhpcy5pID0gaTtcbiAgfVxuXG4gIHJlYWQ4dSgpIHtcbiAgICByZXR1cm4gdGhpcy5zLmNoYXJDb2RlQXQodGhpcy5pKyspO1xuICB9XG5cbiAgcmVhZDhzKCkge1xuICAgIHJldHVybiAodGhpcy5zLmNoYXJDb2RlQXQodGhpcy5pKyspIDw8IDI0KSA+PiAyNDtcbiAgfVxuXG4gIHJlYWQxNnUoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsXG4gICAgICBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAocy5jaGFyQ29kZUF0KGkpIDw8IDgpIHwgcy5jaGFyQ29kZUF0KGkgKyAxKTtcbiAgfVxuXG4gIHJlYWQxNnMoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsXG4gICAgICBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAoKHMuY2hhckNvZGVBdChpKSA8PCAyNCkgPj4gMTYpIHwgcy5jaGFyQ29kZUF0KGkgKyAxKTtcbiAgfVxuXG4gIHJlYWQzMnUoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsXG4gICAgICBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoXG4gICAgICAoKHMuY2hhckNvZGVBdChpKSA8PCAyNCkgfFxuICAgICAgICAocy5jaGFyQ29kZUF0KGkgKyAxKSA8PCAxNikgfFxuICAgICAgICAocy5jaGFyQ29kZUF0KGkgKyAyKSA8PCA4KSB8XG4gICAgICAgIHMuY2hhckNvZGVBdChpICsgMykpID4+PlxuICAgICAgMFxuICAgICk7XG4gIH1cblxuICByZWFkMzJzKCkge1xuICAgIHZhciBzID0gdGhpcy5zLFxuICAgICAgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKFxuICAgICAgKHMuY2hhckNvZGVBdChpKSA8PCAyNCkgfFxuICAgICAgKHMuY2hhckNvZGVBdChpICsgMSkgPDwgMTYpIHxcbiAgICAgIChzLmNoYXJDb2RlQXQoaSArIDIpIDw8IDgpIHxcbiAgICAgIHMuY2hhckNvZGVBdChpICsgMylcbiAgICApO1xuICB9XG5cbiAgcmVhZHN0cihsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHRoaXMucy5zbGljZShpLCBpICsgbGVuKSk7XG4gIH1cblxuICByZWFkdWludDhhcnJheShsZW4pIHtcbiAgICB2YXIgYiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgdmFyIHMgPSB0aGlzLnM7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBsZW47IGorKykge1xuICAgICAgYltqXSA9IHMuY2hhckNvZGVBdChpICsgaik7XG4gICAgfVxuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGI7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdF9vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzLCBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2Zsb2F0X29mX2J5dGVzKGEpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyhjYW1sX2ludDY0X29mX2J5dGVzKGEpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzIG11dGFibGVcbi8vUmVxdWlyZXM6IEpzU3RyaW5nUmVhZGVyLCBVSW50OEFycmF5UmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcyhzLCBvZnMpIHtcbiAgdmFyIGMgPSBjYW1sX21sX2J5dGVzX2NvbnRlbnQocyk7XG4gIHZhciBvZnMgPSB0eXBlb2Ygb2ZzID09PSBcIm51bWJlclwiID8gb2ZzIDogb2ZzWzBdO1xuICB2YXIgcmVhZGVyID1cbiAgICBjIGluc3RhbmNlb2YgVWludDhBcnJheVxuICAgICAgPyBuZXcgVUludDhBcnJheVJlYWRlcihjLCBvZnMpXG4gICAgICA6IG5ldyBKc1N0cmluZ1JlYWRlcihjLCBvZnMpO1xuICByZXR1cm4gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcihyZWFkZXIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3VubWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF91bm1hcnNoYWwocmVhZGVyLCBzaXplKSB7XG4gIHZhciB0ID0gbmV3IEFycmF5KDgpO1xuICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgc2l6ZVswXSA9IDg7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKHQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X21hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbWFyc2hhbCh3cml0ZXIsIHYsIHNpemVzKSB7XG4gIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyh2KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA4OyBpKyspIHdyaXRlci53cml0ZSg4LCBiW2ldKTtcbiAgc2l6ZXNbMF0gPSA4O1xuICBzaXplc1sxXSA9IDg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfdW5tYXJzaGFsXG5mdW5jdGlvbiBjYW1sX2ludDMyX3VubWFyc2hhbChyZWFkZXIsIHNpemUpIHtcbiAgc2l6ZVswXSA9IDQ7XG4gIHJldHVybiByZWFkZXIucmVhZDMycygpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25hdGl2ZWludF91bm1hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfbmF0aXZlaW50X3VubWFyc2hhbChyZWFkZXIsIHNpemUpIHtcbiAgc3dpdGNoIChyZWFkZXIucmVhZDh1KCkpIHtcbiAgICBjYXNlIDE6XG4gICAgICBzaXplWzBdID0gNDtcbiAgICAgIHJldHVybiByZWFkZXIucmVhZDMycygpO1xuICAgIGNhc2UgMjpcbiAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogbmF0aXZlIGludGVnZXIgdmFsdWUgdG9vIGxhcmdlXCIpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogaWxsLWZvcm1lZCBuYXRpdmUgaW50ZWdlclwiKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdW5tYXJzaGFsLCBjYW1sX2ludDY0X21hcnNoYWwsIGNhbWxfaW50NjRfY29tcGFyZSwgY2FtbF9pbnQ2NF9oYXNoXG4vL1JlcXVpcmVzOiBjYW1sX2ludDMyX3VubWFyc2hhbCwgY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3NlcmlhbGl6ZSwgY2FtbF9iYV9kZXNlcmlhbGl6ZSwgY2FtbF9iYV9jb21wYXJlLCBjYW1sX2JhX2hhc2hcbnZhciBjYW1sX2N1c3RvbV9vcHMgPSB7XG4gIF9qOiB7XG4gICAgZGVzZXJpYWxpemU6IGNhbWxfaW50NjRfdW5tYXJzaGFsLFxuICAgIHNlcmlhbGl6ZTogY2FtbF9pbnQ2NF9tYXJzaGFsLFxuICAgIGZpeGVkX2xlbmd0aDogOCxcbiAgICBjb21wYXJlOiBjYW1sX2ludDY0X2NvbXBhcmUsXG4gICAgaGFzaDogY2FtbF9pbnQ2NF9oYXNoLFxuICB9LFxuICBfaToge1xuICAgIGRlc2VyaWFsaXplOiBjYW1sX2ludDMyX3VubWFyc2hhbCxcbiAgICBmaXhlZF9sZW5ndGg6IDQsXG4gIH0sXG4gIF9uOiB7XG4gICAgZGVzZXJpYWxpemU6IGNhbWxfbmF0aXZlaW50X3VubWFyc2hhbCxcbiAgICBmaXhlZF9sZW5ndGg6IDQsXG4gIH0sXG4gIF9iaWdhcnJheToge1xuICAgIGRlc2VyaWFsaXplOiBmdW5jdGlvbiAocmVhZGVyLCBzeikge1xuICAgICAgcmV0dXJuIGNhbWxfYmFfZGVzZXJpYWxpemUocmVhZGVyLCBzeiwgXCJfYmlnYXJyYXlcIik7XG4gICAgfSxcbiAgICBzZXJpYWxpemU6IGNhbWxfYmFfc2VyaWFsaXplLFxuICAgIGNvbXBhcmU6IGNhbWxfYmFfY29tcGFyZSxcbiAgICBoYXNoOiBjYW1sX2JhX2hhc2gsXG4gIH0sXG4gIF9iaWdhcnIwMjoge1xuICAgIGRlc2VyaWFsaXplOiBmdW5jdGlvbiAocmVhZGVyLCBzeikge1xuICAgICAgcmV0dXJuIGNhbWxfYmFfZGVzZXJpYWxpemUocmVhZGVyLCBzeiwgXCJfYmlnYXJyMDJcIik7XG4gICAgfSxcbiAgICBzZXJpYWxpemU6IGNhbWxfYmFfc2VyaWFsaXplLFxuICAgIGNvbXBhcmU6IGNhbWxfYmFfY29tcGFyZSxcbiAgICBoYXNoOiBjYW1sX2JhX2hhc2gsXG4gIH0sXG59O1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfZmxvYXRfb2ZfYnl0ZXMsIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogVUludDhBcnJheVJlYWRlclxuLy9SZXF1aXJlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1JlcXVpcmVzOiBjYW1sX3NldF9vb19pZFxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcihyZWFkZXIpIHtcbiAgZnVuY3Rpb24gcmVhZHZscShvdmVyZmxvdykge1xuICAgIHZhciBjID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgIHZhciBuID0gYyAmIDB4N2Y7XG4gICAgd2hpbGUgKChjICYgMHg4MCkgIT09IDApIHtcbiAgICAgIGMgPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgbjcgPSBuIDw8IDc7XG4gICAgICBpZiAobiAhPT0gbjcgPj4gNykgb3ZlcmZsb3dbMF0gPSB0cnVlO1xuICAgICAgbiA9IG43IHwgKGMgJiAweDdmKTtcbiAgICB9XG4gICAgcmV0dXJuIG47XG4gIH1cbiAgdmFyIG9sZF9wb3MgPSByZWFkZXIuaTtcbiAgdmFyIG1hZ2ljID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgc3dpdGNoIChtYWdpYykge1xuICAgIGNhc2UgMHg4NDk1YTZiZSAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX3NtYWxsICovOlxuICAgICAgdmFyIGhlYWRlcl9sZW4gPSAyMDtcbiAgICAgIHZhciBjb21wcmVzc2VkID0gMDtcbiAgICAgIHZhciBkYXRhX2xlbiA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICB2YXIgdW5jb21wcmVzc2VkX2RhdGFfbGVuID0gZGF0YV9sZW47XG4gICAgICB2YXIgbnVtX29iamVjdHMgPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgdmFyIF9zaXplXzMyID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgIHZhciBfc2l6ZV82NCA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDB4ODQ5NWE2YmQgLyogSW50ZXh0X21hZ2ljX251bWJlcl9jb21wcmVzc2VkICovOlxuICAgICAgdmFyIGhlYWRlcl9sZW4gPSByZWFkZXIucmVhZDh1KCkgJiAweDNmO1xuICAgICAgdmFyIGNvbXByZXNzZWQgPSAxO1xuICAgICAgdmFyIG92ZXJmbG93ID0gW2ZhbHNlXTtcbiAgICAgIHZhciBkYXRhX2xlbiA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgICAgdmFyIHVuY29tcHJlc3NlZF9kYXRhX2xlbiA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgICAgdmFyIG51bV9vYmplY3RzID0gcmVhZHZscShvdmVyZmxvdyk7XG4gICAgICB2YXIgX3NpemVfMzIgPSByZWFkdmxxKG92ZXJmbG93KTtcbiAgICAgIHZhciBfc2l6ZV82NCA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgICAgaWYgKG92ZXJmbG93WzBdKSB7XG4gICAgICAgIGNhbWxfZmFpbHdpdGgoXG4gICAgICAgICAgXCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyOiBvYmplY3QgdG9vIGxhcmdlIHRvIGJlIHJlYWQgYmFjayBvbiB0aGlzIHBsYXRmb3JtXCIsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIDB4ODQ5NWE2YmYgLyogSW50ZXh0X21hZ2ljX251bWJlcl9iaWcgKi86XG4gICAgICBjYW1sX2ZhaWx3aXRoKFxuICAgICAgICBcImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXI6IG9iamVjdCB0b28gbGFyZ2UgdG8gYmUgcmVhZCBiYWNrIG9uIGEgMzItYml0IHBsYXRmb3JtXCIsXG4gICAgICApO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyOiBiYWQgb2JqZWN0XCIpO1xuICAgICAgYnJlYWs7XG4gIH1cbiAgaWYgKGhlYWRlcl9sZW4gIT09IHJlYWRlci5pIC0gb2xkX3Bvcykge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyOiBpbnZhbGlkIGhlYWRlclwiKTtcbiAgfVxuICB2YXIgc3RhY2sgPSBbXTtcbiAgdmFyIG9iamVjdHMgPSBbXTtcbiAgdmFyIGludGVybl9vYmpfdGFibGUgPSBudW1fb2JqZWN0cyA+IDAgPyBbXSA6IG51bGw7XG4gIHZhciBvYmpfY291bnRlciA9IDA7XG4gIGZ1bmN0aW9uIGludGVybl9yZWMocmVhZGVyKSB7XG4gICAgdmFyIGNvZGUgPSByZWFkZXIucmVhZDh1KCk7XG4gICAgaWYgKGNvZGUgPj0gMHg0MCAvKmNzdC5QUkVGSVhfU01BTExfSU5UKi8pIHtcbiAgICAgIGlmIChjb2RlID49IDB4ODAgLypjc3QuUFJFRklYX1NNQUxMX0JMT0NLKi8pIHtcbiAgICAgICAgdmFyIHRhZyA9IGNvZGUgJiAweGY7XG4gICAgICAgIHZhciBzaXplID0gKGNvZGUgPj4gNCkgJiAweDc7XG4gICAgICAgIHZhciB2ID0gW3RhZ107XG4gICAgICAgIGlmIChzaXplID09PSAwKSByZXR1cm4gdjtcbiAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICBpZiAodGFnID09PSAyNDgpIG9iamVjdHMucHVzaCh2KTtcbiAgICAgICAgc3RhY2sucHVzaCh2LCBzaXplKTtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICB9IGVsc2UgcmV0dXJuIGNvZGUgJiAweDNmO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY29kZSA+PSAweDIwIC8qY3N0LlBSRUZJWF9TTUFMTF9TVFJJTkcgKi8pIHtcbiAgICAgICAgdmFyIGxlbiA9IGNvZGUgJiAweDFmO1xuICAgICAgICB2YXIgdiA9IHJlYWRlci5yZWFkc3RyKGxlbik7XG4gICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2ggKGNvZGUpIHtcbiAgICAgICAgICBjYXNlIDB4MDA6IC8vY3N0LkNPREVfSU5UODpcbiAgICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZDhzKCk7XG4gICAgICAgICAgY2FzZSAweDAxOiAvL2NzdC5DT0RFX0lOVDE2OlxuICAgICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkMTZzKCk7XG4gICAgICAgICAgY2FzZSAweDAyOiAvL2NzdC5DT0RFX0lOVDMyOlxuICAgICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkMzJzKCk7XG4gICAgICAgICAgY2FzZSAweDAzOiAvL2NzdC5DT0RFX0lOVDY0OlxuICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBpbnRlZ2VyIHRvbyBsYXJnZVwiKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMHgwNDogLy9jc3QuQ09ERV9TSEFSRUQ4OlxuICAgICAgICAgICAgdmFyIG9mZnNldCA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIGlmIChjb21wcmVzc2VkID09PSAwKSBvZmZzZXQgPSBvYmpfY291bnRlciAtIG9mZnNldDtcbiAgICAgICAgICAgIHJldHVybiBpbnRlcm5fb2JqX3RhYmxlW29mZnNldF07XG4gICAgICAgICAgY2FzZSAweDA1OiAvL2NzdC5DT0RFX1NIQVJFRDE2OlxuICAgICAgICAgICAgdmFyIG9mZnNldCA9IHJlYWRlci5yZWFkMTZ1KCk7XG4gICAgICAgICAgICBpZiAoY29tcHJlc3NlZCA9PT0gMCkgb2Zmc2V0ID0gb2JqX2NvdW50ZXIgLSBvZmZzZXQ7XG4gICAgICAgICAgICByZXR1cm4gaW50ZXJuX29ial90YWJsZVtvZmZzZXRdO1xuICAgICAgICAgIGNhc2UgMHgwNjogLy9jc3QuQ09ERV9TSEFSRUQzMjpcbiAgICAgICAgICAgIHZhciBvZmZzZXQgPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgICAgaWYgKGNvbXByZXNzZWQgPT09IDApIG9mZnNldCA9IG9ial9jb3VudGVyIC0gb2Zmc2V0O1xuICAgICAgICAgICAgcmV0dXJuIGludGVybl9vYmpfdGFibGVbb2Zmc2V0XTtcbiAgICAgICAgICBjYXNlIDB4MDg6IC8vY3N0LkNPREVfQkxPQ0szMjpcbiAgICAgICAgICAgIHZhciBoZWFkZXIgPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgICAgdmFyIHRhZyA9IGhlYWRlciAmIDB4ZmY7XG4gICAgICAgICAgICB2YXIgc2l6ZSA9IGhlYWRlciA+PiAxMDtcbiAgICAgICAgICAgIHZhciB2ID0gW3RhZ107XG4gICAgICAgICAgICBpZiAoc2l6ZSA9PT0gMCkgcmV0dXJuIHY7XG4gICAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgICBpZiAodGFnID09PSAyNDgpIG9iamVjdHMucHVzaCh2KTtcbiAgICAgICAgICAgIHN0YWNrLnB1c2godiwgc2l6ZSk7XG4gICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgICBjYXNlIDB4MTM6IC8vY3N0LkNPREVfQkxPQ0s2NDpcbiAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogZGF0YSBibG9jayB0b28gbGFyZ2VcIik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDB4MDk6IC8vY3N0LkNPREVfU1RSSU5HODpcbiAgICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2YXIgdiA9IHJlYWRlci5yZWFkc3RyKGxlbik7XG4gICAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgICBjYXNlIDB4MGE6IC8vY3N0LkNPREVfU1RSSU5HMzI6XG4gICAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgICAgIHZhciB2ID0gcmVhZGVyLnJlYWRzdHIobGVuKTtcbiAgICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICAgIGNhc2UgMHgwYzogLy9jc3QuQ09ERV9ET1VCTEVfTElUVExFOlxuICAgICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDg7IGkrKykgdFs3IC0gaV0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2YXIgdiA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXModCk7XG4gICAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgICBjYXNlIDB4MGI6IC8vY3N0LkNPREVfRE9VQkxFX0JJRzpcbiAgICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA4OyBpKyspIHRbaV0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2YXIgdiA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXModCk7XG4gICAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgICBjYXNlIDB4MGU6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZOF9MSVRUTEU6XG4gICAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuICsgMSk7XG4gICAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7XG4gICAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8PSBsZW47IGkrKykge1xuICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgdFs3IC0gal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICAgIHZbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzKHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgICAgY2FzZSAweDBkOiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWThfQklHOlxuICAgICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbiArIDEpO1xuICAgICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpO1xuICAgICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPD0gbGVuOyBpKyspIHtcbiAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICAgIHZbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzKHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgICAgY2FzZSAweDA3OiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWTMyX0xJVFRMRTpcbiAgICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuICsgMSk7XG4gICAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8PSBsZW47IGkrKykge1xuICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgdFs3IC0gal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICAgIHZbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzKHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgICAgY2FzZSAweDBmOiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWTMyX0JJRzpcbiAgICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuICsgMSk7XG4gICAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8PSBsZW47IGkrKykge1xuICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgICAgdltpXSA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXModCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgICBjYXNlIDB4MTA6IC8vY3N0LkNPREVfQ09ERVBPSU5URVI6XG4gICAgICAgICAgY2FzZSAweDExOiAvL2NzdC5DT0RFX0lORklYUE9JTlRFUjpcbiAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogY29kZSBwb2ludGVyXCIpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAweDEyOiAvL2NzdC5DT0RFX0NVU1RPTTpcbiAgICAgICAgICBjYXNlIDB4MTg6IC8vY3N0LkNPREVfQ1VTVE9NX0xFTjpcbiAgICAgICAgICBjYXNlIDB4MTk6IC8vY3N0LkNPREVfQ1VTVE9NX0ZJWEVEOlxuICAgICAgICAgICAgdmFyIGMsXG4gICAgICAgICAgICAgIHMgPSBcIlwiO1xuICAgICAgICAgICAgd2hpbGUgKChjID0gcmVhZGVyLnJlYWQ4dSgpKSAhPT0gMCkgcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpO1xuICAgICAgICAgICAgdmFyIG9wcyA9IGNhbWxfY3VzdG9tX29wc1tzXTtcbiAgICAgICAgICAgIHZhciBleHBlY3RlZF9zaXplO1xuICAgICAgICAgICAgaWYgKCFvcHMpXG4gICAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogdW5rbm93biBjdXN0b20gYmxvY2sgaWRlbnRpZmllclwiKTtcbiAgICAgICAgICAgIHN3aXRjaCAoY29kZSkge1xuICAgICAgICAgICAgICBjYXNlIDB4MTI6IC8vIGNzdC5DT0RFX0NVU1RPTSAoZGVwcmVjYXRlZClcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSAweDE5OiAvLyBjc3QuQ09ERV9DVVNUT01fRklYRURcbiAgICAgICAgICAgICAgICBpZiAoIW9wcy5maXhlZF9sZW5ndGgpXG4gICAgICAgICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFxuICAgICAgICAgICAgICAgICAgICBcImlucHV0X3ZhbHVlOiBleHBlY3RlZCBhIGZpeGVkLXNpemUgY3VzdG9tIGJsb2NrXCIsXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGV4cGVjdGVkX3NpemUgPSBvcHMuZml4ZWRfbGVuZ3RoO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIDB4MTg6IC8vIGNzdC5DT0RFX0NVU1RPTV9MRU5cbiAgICAgICAgICAgICAgICBleHBlY3RlZF9zaXplID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgICAgICAgICAvLyBTa2lwIHNpemU2NFxuICAgICAgICAgICAgICAgIHJlYWRlci5yZWFkMzJzKCk7XG4gICAgICAgICAgICAgICAgcmVhZGVyLnJlYWQzMnMoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBzaXplID0gWzBdO1xuICAgICAgICAgICAgdmFyIHYgPSBvcHMuZGVzZXJpYWxpemUocmVhZGVyLCBzaXplKTtcbiAgICAgICAgICAgIGlmIChleHBlY3RlZF9zaXplICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgaWYgKGV4cGVjdGVkX3NpemUgIT09IHNpemVbMF0pXG4gICAgICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcbiAgICAgICAgICAgICAgICAgIFwiaW5wdXRfdmFsdWU6IGluY29ycmVjdCBsZW5ndGggb2Ygc2VyaWFsaXplZCBjdXN0b20gYmxvY2tcIixcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogaWxsLWZvcm1lZCBtZXNzYWdlXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChjb21wcmVzc2VkKSB7XG4gICAgaWYgKGNhbWxfZGVjb21wcmVzc19pbnB1dCkge1xuICAgICAgdmFyIGRhdGEgPSByZWFkZXIucmVhZHVpbnQ4YXJyYXkoZGF0YV9sZW4pO1xuICAgICAgdmFyIHJlcyA9IG5ldyBVaW50OEFycmF5KHVuY29tcHJlc3NlZF9kYXRhX2xlbik7XG4gICAgICB2YXIgcmVzID0gY2FtbF9kZWNvbXByZXNzX2lucHV0KGRhdGEsIHJlcyk7XG4gICAgICB2YXIgcmVhZGVyID0gbmV3IFVJbnQ4QXJyYXlSZWFkZXIocmVzLCAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBjb21wcmVzc2VkIG9iamVjdCwgY2Fubm90IGRlY29tcHJlc3NcIik7XG4gICAgfVxuICB9XG4gIHZhciByZXMgPSBpbnRlcm5fcmVjKHJlYWRlcik7XG4gIHdoaWxlIChzdGFjay5sZW5ndGggPiAwKSB7XG4gICAgdmFyIHNpemUgPSBzdGFjay5wb3AoKTtcbiAgICB2YXIgdiA9IHN0YWNrLnBvcCgpO1xuICAgIHZhciBkID0gdi5sZW5ndGg7XG4gICAgaWYgKGQgPCBzaXplKSBzdGFjay5wdXNoKHYsIHNpemUpO1xuICAgIHZbZF0gPSBpbnRlcm5fcmVjKHJlYWRlcik7XG4gIH1cbiAgd2hpbGUgKG9iamVjdHMubGVuZ3RoID4gMCkge1xuICAgIHZhciB4ID0gb2JqZWN0cy5wb3AoKTtcbiAgICBpZiAoeFsyXSA+PSAwKSBjYW1sX3NldF9vb19pZCh4KTtcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemVcbi8vVmVyc2lvbjogPCA1LjEuMFxudmFyIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSA9IDIwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemVcbi8vVmVyc2lvbjogPj0gNS4xLjBcbnZhciBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUgPSAxNjtcblxuLy9Qcm92aWRlczogY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IFVJbnQ4QXJyYXlSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZVxuZnVuY3Rpb24gY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZShzLCBvZnMpIHtcbiAgdmFyIHIgPSBuZXcgVUludDhBcnJheVJlYWRlcihjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKHMpLCBvZnMpO1xuICBmdW5jdGlvbiByZWFkdmxxKG92ZXJmbG93KSB7XG4gICAgdmFyIGMgPSByLnJlYWQ4dSgpO1xuICAgIHZhciBuID0gYyAmIDB4N2Y7XG4gICAgd2hpbGUgKChjICYgMHg4MCkgIT09IDApIHtcbiAgICAgIGMgPSByLnJlYWQ4dSgpO1xuICAgICAgdmFyIG43ID0gbiA8PCA3O1xuICAgICAgaWYgKG4gIT09IG43ID4+IDcpIG92ZXJmbG93WzBdID0gdHJ1ZTtcbiAgICAgIG4gPSBuNyB8IChjICYgMHg3Zik7XG4gICAgfVxuICAgIHJldHVybiBuO1xuICB9XG5cbiAgc3dpdGNoIChyLnJlYWQzMnUoKSkge1xuICAgIGNhc2UgMHg4NDk1YTZiZSAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX3NtYWxsICovOlxuICAgICAgdmFyIGhlYWRlcl9sZW4gPSAyMDtcbiAgICAgIHZhciBkYXRhX2xlbiA9IHIucmVhZDMydSgpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAweDg0OTVhNmJkIC8qIEludGV4dF9tYWdpY19udW1iZXJfY29tcHJlc3NlZCAqLzpcbiAgICAgIHZhciBoZWFkZXJfbGVuID0gci5yZWFkOHUoKSAmIDB4M2Y7XG4gICAgICB2YXIgb3ZlcmZsb3cgPSBbZmFsc2VdO1xuICAgICAgdmFyIGRhdGFfbGVuID0gcmVhZHZscShvdmVyZmxvdyk7XG4gICAgICBpZiAob3ZlcmZsb3dbMF0pIHtcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcbiAgICAgICAgICBcIk1hcnNoYWwuZGF0YV9zaXplOiBvYmplY3QgdG9vIGxhcmdlIHRvIGJlIHJlYWQgYmFjayBvbiB0aGlzIHBsYXRmb3JtXCIsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIDB4ODQ5NWE2YmYgLyogSW50ZXh0X21hZ2ljX251bWJlcl9iaWcgKi86XG4gICAgICBjYW1sX2ZhaWx3aXRoKFxuICAgICAgICBcIk1hcnNoYWwuZGF0YV9zaXplOiBvYmplY3QgdG9vIGxhcmdlIHRvIGJlIHJlYWQgYmFjayBvbiBhIDMyLWJpdCBwbGF0Zm9ybVwiLFxuICAgICAgKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBjYW1sX2ZhaWx3aXRoKFwiTWFyc2hhbC5kYXRhX3NpemU6IGJhZCBvYmplY3RcIik7XG4gICAgICBicmVhaztcbiAgfVxuICByZXR1cm4gaGVhZGVyX2xlbiAtIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSArIGRhdGFfbGVuO1xufVxuXG4vL1Byb3ZpZGVzOiBNbE9iamVjdFRhYmxlXG5jbGFzcyBNbE9iamVjdFRhYmxlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5vYmpzID0gW107XG4gICAgdGhpcy5sb29rdXAgPSBuZXcgZ2xvYmFsVGhpcy5NYXAoKTtcbiAgfVxuXG4gIHN0b3JlKHYpIHtcbiAgICB0aGlzLmxvb2t1cC5zZXQodiwgdGhpcy5vYmpzLmxlbmd0aCk7XG4gICAgdGhpcy5vYmpzLnB1c2godik7XG4gIH1cblxuICByZWNhbGwodikge1xuICAgIHZhciBpID0gdGhpcy5sb29rdXAuZ2V0KHYpO1xuICAgIHJldHVybiBpID09PSB1bmRlZmluZWRcbiAgICAgID8gdW5kZWZpbmVkXG4gICAgICA6IHRoaXMub2Jqcy5sZW5ndGggLSBpOyAvKiBpbmRleCBpcyByZWxhdGl2ZSAqL1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlcywgY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0XG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzLCBjYW1sX21sX2J5dGVzX2xlbmd0aCwgY2FtbF9ieXRlc191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBNbE9iamVjdFRhYmxlLCBjYW1sX2xpc3RfdG9fanNfYXJyYXksIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xudmFyIGNhbWxfb3V0cHV0X3ZhbCA9IChmdW5jdGlvbiAoKSB7XG4gIGNsYXNzIFdyaXRlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICB0aGlzLmNodW5rID0gW107XG4gICAgICB0aGlzLmNodW5rX2lkeCA9IDIwO1xuICAgICAgdGhpcy5ibG9ja19sZW4gPSAwO1xuICAgICAgdGhpcy5vYmpfY291bnRlciA9IDA7XG4gICAgICB0aGlzLnNpemVfMzIgPSAwO1xuICAgICAgdGhpcy5zaXplXzY0ID0gMDtcbiAgICB9XG5cbiAgICB3cml0ZShzaXplLCB2YWx1ZSkge1xuICAgICAgZm9yICh2YXIgaSA9IHNpemUgLSA4OyBpID49IDA7IGkgLT0gOClcbiAgICAgICAgdGhpcy5jaHVua1t0aGlzLmNodW5rX2lkeCsrXSA9ICh2YWx1ZSA+PiBpKSAmIDB4ZmY7XG4gICAgfVxuXG4gICAgd3JpdGVfYXQocG9zLCBzaXplLCB2YWx1ZSkge1xuICAgICAgdmFyIHBvcyA9IHBvcztcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODsgaSA+PSAwOyBpIC09IDgpXG4gICAgICAgIHRoaXMuY2h1bmtbcG9zKytdID0gKHZhbHVlID4+IGkpICYgMHhmZjtcbiAgICB9XG5cbiAgICB3cml0ZV9jb2RlKHNpemUsIGNvZGUsIHZhbHVlKSB7XG4gICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gY29kZTtcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODsgaSA+PSAwOyBpIC09IDgpXG4gICAgICAgIHRoaXMuY2h1bmtbdGhpcy5jaHVua19pZHgrK10gPSAodmFsdWUgPj4gaSkgJiAweGZmO1xuICAgIH1cblxuICAgIHdyaXRlX3NoYXJlZChvZmZzZXQpIHtcbiAgICAgIGlmIChvZmZzZXQgPCAxIDw8IDgpXG4gICAgICAgIHRoaXMud3JpdGVfY29kZSg4LCAweDA0IC8qY3N0LkNPREVfU0hBUkVEOCovLCBvZmZzZXQpO1xuICAgICAgZWxzZSBpZiAob2Zmc2V0IDwgMSA8PCAxNilcbiAgICAgICAgdGhpcy53cml0ZV9jb2RlKDE2LCAweDA1IC8qY3N0LkNPREVfU0hBUkVEMTYqLywgb2Zmc2V0KTtcbiAgICAgIGVsc2UgdGhpcy53cml0ZV9jb2RlKDMyLCAweDA2IC8qY3N0LkNPREVfU0hBUkVEMzIqLywgb2Zmc2V0KTtcbiAgICB9XG5cbiAgICBwb3MoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jaHVua19pZHg7XG4gICAgfVxuXG4gICAgZmluYWxpemUoKSB7XG4gICAgICB0aGlzLmJsb2NrX2xlbiA9IHRoaXMuY2h1bmtfaWR4IC0gMjA7XG4gICAgICB0aGlzLmNodW5rX2lkeCA9IDA7XG4gICAgICB0aGlzLndyaXRlKDMyLCAweDg0OTVhNmJlKTtcbiAgICAgIHRoaXMud3JpdGUoMzIsIHRoaXMuYmxvY2tfbGVuKTtcbiAgICAgIHRoaXMud3JpdGUoMzIsIHRoaXMub2JqX2NvdW50ZXIpO1xuICAgICAgdGhpcy53cml0ZSgzMiwgdGhpcy5zaXplXzMyKTtcbiAgICAgIHRoaXMud3JpdGUoMzIsIHRoaXMuc2l6ZV82NCk7XG4gICAgICByZXR1cm4gdGhpcy5jaHVuaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICh2LCBmbGFncykge1xuICAgIGZsYWdzID0gY2FtbF9saXN0X3RvX2pzX2FycmF5KGZsYWdzKTtcblxuICAgIHZhciBub19zaGFyaW5nID0gZmxhZ3MuaW5kZXhPZigwIC8qTWFyc2hhbC5Ob19zaGFyaW5nKi8pICE9PSAtMSxcbiAgICAgIGNsb3N1cmVzID0gZmxhZ3MuaW5kZXhPZigxIC8qTWFyc2hhbC5DbG9zdXJlcyovKSAhPT0gLTE7XG4gICAgLyogTWFyc2hhbC5Db21wYXRfMzIgaXMgcmVkdW5kYW50IHNpbmNlIGludGVnZXJzIGFyZSAzMi1iaXQgYW55d2F5ICovXG5cbiAgICBpZiAoY2xvc3VyZXMpXG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIFwiaW4gY2FtbF9vdXRwdXRfdmFsOiBmbGFnIE1hcnNoYWwuQ2xvc3VyZXMgaXMgbm90IHN1cHBvcnRlZC5cIixcbiAgICAgICk7XG5cbiAgICB2YXIgd3JpdGVyID0gbmV3IFdyaXRlcigpO1xuICAgIHZhciBzdGFjayA9IFtdO1xuICAgIHZhciBpbnRlcm5fb2JqX3RhYmxlID0gbm9fc2hhcmluZyA/IG51bGwgOiBuZXcgTWxPYmplY3RUYWJsZSgpO1xuXG4gICAgZnVuY3Rpb24gbWVtbyh2KSB7XG4gICAgICBpZiAobm9fc2hhcmluZykgcmV0dXJuIGZhbHNlO1xuICAgICAgdmFyIGV4aXN0aW5nX29mZnNldCA9IGludGVybl9vYmpfdGFibGUucmVjYWxsKHYpO1xuICAgICAgaWYgKGV4aXN0aW5nX29mZnNldCkge1xuICAgICAgICB3cml0ZXIud3JpdGVfc2hhcmVkKGV4aXN0aW5nX29mZnNldCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW50ZXJuX29ial90YWJsZS5zdG9yZSh2KTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGV4dGVybl9yZWModikge1xuICAgICAgaWYgKHYuY2FtbF9jdXN0b20pIHtcbiAgICAgICAgaWYgKG1lbW8odikpIHJldHVybjtcbiAgICAgICAgdmFyIG5hbWUgPSB2LmNhbWxfY3VzdG9tO1xuICAgICAgICB2YXIgb3BzID0gY2FtbF9jdXN0b21fb3BzW25hbWVdO1xuICAgICAgICB2YXIgc3pfMzJfNjQgPSBbMCwgMF07XG4gICAgICAgIGlmICghb3BzLnNlcmlhbGl6ZSlcbiAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJvdXRwdXRfdmFsdWU6IGFic3RyYWN0IHZhbHVlIChDdXN0b20pXCIpO1xuICAgICAgICBpZiAob3BzLmZpeGVkX2xlbmd0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgd3JpdGVyLndyaXRlKDgsIDB4MTggLypjc3QuQ09ERV9DVVNUT01fTEVOKi8pO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSg4LCBuYW1lLmNoYXJDb2RlQXQoaSkpO1xuICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB2YXIgaGVhZGVyX3BvcyA9IHdyaXRlci5wb3MoKTtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEyOyBpKyspIHtcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb3BzLnNlcmlhbGl6ZSh3cml0ZXIsIHYsIHN6XzMyXzY0KTtcbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcywgMzIsIHN6XzMyXzY0WzBdKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcyArIDQsIDMyLCAwKTsgLy8gemVyb1xuICAgICAgICAgIHdyaXRlci53cml0ZV9hdChoZWFkZXJfcG9zICsgOCwgMzIsIHN6XzMyXzY0WzFdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMHgxOSAvKmNzdC5DT0RFX0NVU1RPTV9GSVhFRCovKTtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWUubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgbmFtZS5jaGFyQ29kZUF0KGkpKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMCk7XG4gICAgICAgICAgb3BzLnNlcmlhbGl6ZSh3cml0ZXIsIHYsIHN6XzMyXzY0KTtcbiAgICAgICAgICBpZiAob3BzLmZpeGVkX2xlbmd0aCAhPT0gc3pfMzJfNjRbMF0pXG4gICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFxuICAgICAgICAgICAgICBcIm91dHB1dF92YWx1ZTogaW5jb3JyZWN0IGZpeGVkIHNpemVzIHNwZWNpZmllZCBieSBcIiArIG5hbWUsXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IDIgKyAoKHN6XzMyXzY0WzBdICsgMykgPj4gMik7XG4gICAgICAgIHdyaXRlci5zaXplXzY0ICs9IDIgKyAoKHN6XzMyXzY0WzFdICsgNykgPj4gMyk7XG4gICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodikgJiYgdlswXSA9PT0gKHZbMF0gfCAwKSkge1xuICAgICAgICBpZiAodlswXSA9PT0gMjUxKSB7XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogYWJzdHJhY3QgdmFsdWUgKEFic3RyYWN0KVwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FtbF9pc19jb250aW51YXRpb25fdGFnKHZbMF0pKVxuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIm91dHB1dF92YWx1ZTogY29udGludWF0aW9uIHZhbHVlXCIpO1xuICAgICAgICBpZiAodi5sZW5ndGggPiAxICYmIG1lbW8odikpIHJldHVybjtcbiAgICAgICAgaWYgKHZbMF0gPCAxNiAmJiB2Lmxlbmd0aCAtIDEgPCA4KVxuICAgICAgICAgIHdyaXRlci53cml0ZShcbiAgICAgICAgICAgIDgsXG4gICAgICAgICAgICAweDgwIC8qY3N0LlBSRUZJWF9TTUFMTF9CTE9DSyovICsgdlswXSArICgodi5sZW5ndGggLSAxKSA8PCA0KSxcbiAgICAgICAgICApO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoXG4gICAgICAgICAgICAzMixcbiAgICAgICAgICAgIDB4MDggLypjc3QuQ09ERV9CTE9DSzMyKi8sXG4gICAgICAgICAgICAoKHYubGVuZ3RoIC0gMSkgPDwgMTApIHwgdlswXSxcbiAgICAgICAgICApO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSB2Lmxlbmd0aDtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gdi5sZW5ndGg7XG4gICAgICAgIGlmICh2Lmxlbmd0aCA+IDEpIHN0YWNrLnB1c2godiwgMSk7XG4gICAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXModikpIHtcbiAgICAgICAgaWYgKCFjYW1sX2lzX21sX2J5dGVzKGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIikpKSB7XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcbiAgICAgICAgICAgIFwib3V0cHV0X3ZhbHVlOiBbQnl0ZXMudF0gY2Fubm90IHNhZmVseSBiZSBtYXJzaGFsZWQgd2l0aCBbLS1lbmFibGUgdXNlLWpzLXN0cmluZ11cIixcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtZW1vKHYpKSByZXR1cm47XG4gICAgICAgIHZhciBsZW4gPSBjYW1sX21sX2J5dGVzX2xlbmd0aCh2KTtcbiAgICAgICAgaWYgKGxlbiA8IDB4MjApIHdyaXRlci53cml0ZSg4LCAweDIwIC8qY3N0LlBSRUZJWF9TTUFMTF9TVFJJTkcqLyArIGxlbik7XG4gICAgICAgIGVsc2UgaWYgKGxlbiA8IDB4MTAwKVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDgsIDB4MDkgLypjc3QuQ09ERV9TVFJJTkc4Ki8sIGxlbik7XG4gICAgICAgIGVsc2Ugd3JpdGVyLndyaXRlX2NvZGUoMzIsIDB4MGEgLypjc3QuQ09ERV9TVFJJTkczMiovLCBsZW4pO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKVxuICAgICAgICAgIHdyaXRlci53cml0ZSg4LCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQodiwgaSkpO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAxICsgKCgobGVuICsgNCkgLyA0KSB8IDApO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSAxICsgKCgobGVuICsgOCkgLyA4KSB8IDApO1xuICAgICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyh2KSkge1xuICAgICAgICBpZiAobWVtbyh2KSkgcmV0dXJuO1xuICAgICAgICB2YXIgbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHYpO1xuICAgICAgICBpZiAobGVuIDwgMHgyMCkgd3JpdGVyLndyaXRlKDgsIDB4MjAgLypjc3QuUFJFRklYX1NNQUxMX1NUUklORyovICsgbGVuKTtcbiAgICAgICAgZWxzZSBpZiAobGVuIDwgMHgxMDApXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoOCwgMHgwOSAvKmNzdC5DT0RFX1NUUklORzgqLywgbGVuKTtcbiAgICAgICAgZWxzZSB3cml0ZXIud3JpdGVfY29kZSgzMiwgMHgwYSAvKmNzdC5DT0RFX1NUUklORzMyKi8sIGxlbik7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspXG4gICAgICAgICAgd3JpdGVyLndyaXRlKDgsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQodiwgaSkpO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAxICsgKCgobGVuICsgNCkgLyA0KSB8IDApO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSAxICsgKCgobGVuICsgOCkgLyA4KSB8IDApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHYgIT09ICh2IHwgMCkpIHtcbiAgICAgICAgICB2YXIgdHlwZV9vZl92ID0gdHlwZW9mIHY7XG4gICAgICAgICAgaWYgKHR5cGVfb2ZfdiAhPT0gXCJudW1iZXJcIilcbiAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJvdXRwdXRfdmFsdWU6IGFic3RyYWN0IHZhbHVlIChcIiArIHR5cGVfb2ZfdiArIFwiKVwiKTtcbiAgICAgICAgICAvLyBJZiBhIGZsb2F0IGhhcHBlbnMgdG8gYmUgYW4gaW50ZWdlciBpdCBpcyBzZXJpYWxpemVkIGFzIGFuIGludGVnZXJcbiAgICAgICAgICAvLyAoSnNfb2Zfb2NhbWwgY2Fubm90IHRlbGwgd2hldGhlciB0aGUgdHlwZSBvZiBhbiBpbnRlZ2VyIG51bWJlciBpc1xuICAgICAgICAgIC8vIGZsb2F0IG9yIGludGVnZXIuKSBUaGlzIGNhbiByZXN1bHQgaW4gdW5leHBlY3RlZCBjcmFzaGVzIHdoZW5cbiAgICAgICAgICAvLyB1bm1hcnNoYWxsaW5nIHVzaW5nIHRoZSBzdGFuZGFyZCBydW50aW1lLlxuICAgICAgICAgIGlmIChtZW1vKHYpKSByZXR1cm47XG4gICAgICAgICAgdmFyIHQgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCh2KSk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlKDgsIDB4MGMgLypjc3QuQ09ERV9ET1VCTEVfTElUVExFKi8pO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgODsgaSsrKSB7XG4gICAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgdFs3IC0gaV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAzO1xuICAgICAgICAgIHdyaXRlci5zaXplXzY0ICs9IDI7XG4gICAgICAgIH0gZWxzZSBpZiAodiA+PSAwICYmIHYgPCAweDQwKSB7XG4gICAgICAgICAgd3JpdGVyLndyaXRlKDgsIDB4NDAgLypjc3QuUFJFRklYX1NNQUxMX0lOVCovICsgdik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHYgPj0gLSgxIDw8IDcpICYmIHYgPCAxIDw8IDcpXG4gICAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSg4LCAweDAwIC8qY3N0LkNPREVfSU5UOCovLCB2KTtcbiAgICAgICAgICBlbHNlIGlmICh2ID49IC0oMSA8PCAxNSkgJiYgdiA8IDEgPDwgMTUpXG4gICAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSgxNiwgMHgwMSAvKmNzdC5DT0RFX0lOVDE2Ki8sIHYpO1xuICAgICAgICAgIGVsc2Ugd3JpdGVyLndyaXRlX2NvZGUoMzIsIDB4MDIgLypjc3QuQ09ERV9JTlQzMiovLCB2KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBleHRlcm5fcmVjKHYpO1xuICAgIHdoaWxlIChzdGFjay5sZW5ndGggPiAwKSB7XG4gICAgICB2YXIgaSA9IHN0YWNrLnBvcCgpO1xuICAgICAgdmFyIHYgPSBzdGFjay5wb3AoKTtcbiAgICAgIGlmIChpICsgMSA8IHYubGVuZ3RoKSBzdGFjay5wdXNoKHYsIGkgKyAxKTtcbiAgICAgIGV4dGVybl9yZWModltpXSk7XG4gICAgfVxuICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSB3cml0ZXIub2JqX2NvdW50ZXIgPSBpbnRlcm5fb2JqX3RhYmxlLm9ianMubGVuZ3RoO1xuICAgIHdyaXRlci5maW5hbGl6ZSgpO1xuICAgIHJldHVybiBuZXcgVWludDhBcnJheSh3cml0ZXIuY2h1bmspO1xuICB9O1xufSkoKTtcblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9zdHJpbmdfb2ZfdWludDhfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyh2LCBmbGFncykge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfdWludDhfYXJyYXkoY2FtbF9vdXRwdXRfdmFsKHYsIGZsYWdzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J5dGVzIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9ieXRlc19vZl91aW50OF9hcnJheVxuZnVuY3Rpb24gY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXModiwgZmxhZ3MpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfb2ZfdWludDhfYXJyYXkoY2FtbF9vdXRwdXRfdmFsKHYsIGZsYWdzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlclxuLy9SZXF1aXJlczogY2FtbF9vdXRwdXRfdmFsLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX2JsaXRfYnl0ZXMsIGNhbWxfYnl0ZXNfb2ZfdWludDhfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlcihzLCBvZnMsIGxlbiwgdiwgZmxhZ3MpIHtcbiAgdmFyIHQgPSBjYW1sX291dHB1dF92YWwodiwgZmxhZ3MpO1xuICBpZiAodC5sZW5ndGggPiBsZW4pIGNhbWxfZmFpbHdpdGgoXCJNYXJzaGFsLnRvX2J1ZmZlcjogYnVmZmVyIG92ZXJmbG93XCIpO1xuICBjYW1sX2JsaXRfYnl0ZXMoY2FtbF9ieXRlc19vZl91aW50OF9hcnJheSh0KSwgMCwgcywgb2ZzLCB0Lmxlbmd0aCk7XG4gIHJldHVybiAwO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBJb1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19mZHNcbnZhciBjYW1sX3N5c19mZHMgPSBuZXcgQXJyYXkoMyk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2Nsb3NlXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19mZHNcbmZ1bmN0aW9uIGNhbWxfc3lzX2Nsb3NlKGZkKSB7XG4gIHZhciB4ID0gY2FtbF9zeXNfZmRzW2ZkXTtcbiAgaWYgKHgpIHtcbiAgICB4LmZpbGUuY2xvc2UoZmFsc2UpO1xuICAgIGRlbGV0ZSBjYW1sX3N5c19mZHNbZmRdO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBNbENoYW5pZFxuZnVuY3Rpb24gTWxDaGFuaWQoaWQpIHtcbiAgdGhpcy5pZCA9IGlkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19vcGVuXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuLy9SZXF1aXJlczogTWxGYWtlRmRfb3V0XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuLy9SZXF1aXJlczogZnNfbm9kZV9zdXBwb3J0ZWRcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2Zkc1xuLy9SZXF1aXJlczogY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZVxuLy9SZXF1aXJlczogTWxDaGFuaWRcbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW5faW50ZXJuYWwoZmlsZSwgaWR4KSB7XG4gIHZhciBjaGFuaWQ7XG4gIGlmIChpZHggPT09IHVuZGVmaW5lZCkge1xuICAgIGlkeCA9IGNhbWxfc3lzX2Zkcy5sZW5ndGg7XG4gICAgY2hhbmlkID0gbmV3IE1sQ2hhbmlkKGlkeCk7XG4gIH0gZWxzZSBpZiAoY2FtbF9zeXNfZmRzW2lkeF0pIHtcbiAgICBjaGFuaWQgPSBjYW1sX3N5c19mZHNbaWR4XS5jaGFuaWQ7XG4gIH0gZWxzZSBjaGFuaWQgPSBuZXcgTWxDaGFuaWQoaWR4KTtcbiAgY2FtbF9zeXNfZmRzW2lkeF0gPSB7IGZpbGU6IGZpbGUsIGNoYW5pZDogY2hhbmlkIH07XG4gIHJldHVybiBpZHggfCAwO1xufVxuZnVuY3Rpb24gY2FtbF9zeXNfb3BlbihuYW1lLCBmbGFncywgcGVybXMpIHtcbiAgdmFyIGYgPSB7fTtcbiAgd2hpbGUgKGZsYWdzKSB7XG4gICAgc3dpdGNoIChmbGFnc1sxXSkge1xuICAgICAgY2FzZSAwOlxuICAgICAgICBmLnJkb25seSA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxOlxuICAgICAgICBmLndyb25seSA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICBmLmFwcGVuZCA9IDE7XG4gICAgICAgIGYud3JpdGVvbmx5ID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM6XG4gICAgICAgIGYuY3JlYXRlID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDQ6XG4gICAgICAgIGYudHJ1bmNhdGUgPSAxO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNTpcbiAgICAgICAgZi5leGNsID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDY6XG4gICAgICAgIGYuYmluYXJ5ID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDc6XG4gICAgICAgIGYudGV4dCA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA4OlxuICAgICAgICBmLm5vbmJsb2NrID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGZsYWdzID0gZmxhZ3NbMl07XG4gIH1cbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIGZpbGUgPSByb290LmRldmljZS5vcGVuKHJvb3QucmVzdCwgZiwgcGVybXMpO1xuICByZXR1cm4gY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChmaWxlLCB1bmRlZmluZWQpO1xufVxuKGZ1bmN0aW9uICgpIHtcbiAgdmFyIGlzX25vZGUgPSBmc19ub2RlX3N1cHBvcnRlZCgpO1xuICBmdW5jdGlvbiBmaWxlKGZkLCBmbGFncykge1xuICAgIGlmIChpc19ub2RlKSB7XG4gICAgICByZXR1cm4gY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZShmZCwgZmxhZ3MpO1xuICAgIH0gZWxzZSByZXR1cm4gbmV3IE1sRmFrZUZkX291dChmZCwgZmxhZ3MpO1xuICB9XG4gIGNhbWxfc3lzX29wZW5faW50ZXJuYWwoXG4gICAgZmlsZSgwLCB7IHJkb25seTogMSwgYWx0bmFtZTogXCIvZGV2L3N0ZGluXCIsIGlzQ2hhcmFjdGVyRGV2aWNlOiB0cnVlIH0pLFxuICAgIDAsXG4gICk7XG4gIGNhbWxfc3lzX29wZW5faW50ZXJuYWwoXG4gICAgZmlsZSgxLCB7IGJ1ZmZlcmVkOiBpc19ub2RlID8gMSA6IDIsIHdyb25seTogMSwgaXNDaGFyYWN0ZXJEZXZpY2U6IHRydWUgfSksXG4gICAgMSxcbiAgKTtcbiAgY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChcbiAgICBmaWxlKDIsIHsgYnVmZmVyZWQ6IGlzX25vZGUgPyAxIDogMiwgd3Jvbmx5OiAxLCBpc0NoYXJhY3RlckRldmljZTogdHJ1ZSB9KSxcbiAgICAyLFxuICApO1xufSkoKTtcblxuLy8gb2NhbWwgQ2hhbm5lbHNcblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX25hbWUoY2hhbmlkLCBuYW1lKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICBjaGFuLm5hbWUgPSBuYW1lO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jaGFubmVsc1xuLy9SZXF1aXJlczogTWxDaGFuaWRcbmNsYXNzIGNhbWxfbWxfY2hhbm5lbHNfc3RhdGUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLm1hcCA9IG5ldyBnbG9iYWxUaGlzLldlYWtNYXAoKTtcbiAgICB0aGlzLm9wZW5lZCA9IG5ldyBnbG9iYWxUaGlzLlNldCgpO1xuICB9XG5cbiAgY2xvc2UoY2hhbmlkKSB7XG4gICAgdGhpcy5vcGVuZWQuZGVsZXRlKGNoYW5pZCk7XG4gIH1cblxuICBnZXQoY2hhbmlkKSB7XG4gICAgcmV0dXJuIHRoaXMubWFwLmdldChjaGFuaWQpO1xuICB9XG5cbiAgc2V0KGNoYW5pZCwgdmFsKSB7XG4gICAgaWYgKHZhbC5vcGVuZWQpIHRoaXMub3BlbmVkLmFkZChjaGFuaWQpO1xuICAgIHJldHVybiB0aGlzLm1hcC5zZXQoY2hhbmlkLCB2YWwpO1xuICB9XG5cbiAgYWxsKCkge1xuICAgIHJldHVybiB0aGlzLm9wZW5lZC52YWx1ZXMoKTtcbiAgfVxufVxuXG52YXIgY2FtbF9tbF9jaGFubmVscyA9IG5ldyBjYW1sX21sX2NoYW5uZWxzX3N0YXRlKCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfY2hhbm5lbF9nZXQoaWQpIHtcbiAgcmV0dXJuIGNhbWxfbWxfY2hhbm5lbHMuZ2V0KGlkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jaGFubmVsX3JlZGlyZWN0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0LCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2NoYW5uZWxfcmVkaXJlY3QoY2FwdHVyZWQsIGludG8pIHtcbiAgdmFyIHRvX3Jlc3RvcmUgPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNhcHR1cmVkKTtcbiAgdmFyIG5ld18gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGludG8pO1xuICBjYW1sX21sX2NoYW5uZWxzLnNldChjYXB0dXJlZCwgbmV3Xyk7XG4gIHJldHVybiB0b19yZXN0b3JlO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NoYW5uZWxfcmVzdG9yZVxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9jaGFubmVsX3Jlc3RvcmUoY2FwdHVyZWQsIHRvX3Jlc3RvcmUpIHtcbiAgY2FtbF9tbF9jaGFubmVscy5zZXQoY2FwdHVyZWQsIHRvX3Jlc3RvcmUpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRfY2hhbm5lbHNfbGlzdFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9tbF9vdXRfY2hhbm5lbHNfbGlzdCgpIHtcbiAgdmFyIGwgPSAwO1xuICB2YXIga2V5cyA9IGNhbWxfbWxfY2hhbm5lbHMuYWxsKCk7XG4gIGZvciAodmFyIGsgb2Yga2V5cykge1xuICAgIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChrKTtcbiAgICBpZiAoY2hhbi5vcGVuZWQgJiYgY2hhbi5vdXQpIGwgPSBbMCwgaywgbF07XG4gIH1cbiAgcmV0dXJuIGw7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9zeXNfZmRzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuLy9SZXF1aXJlczogY2FtbF9zeXNfb3BlblxuLy9SZXF1aXJlczogY2FtbF9pb19idWZmZXJfc2l6ZVxuZnVuY3Rpb24gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0KGZkKSB7XG4gIHZhciBmZF9kZXNjID0gY2FtbF9zeXNfZmRzW2ZkXTtcbiAgaWYgKGZkX2Rlc2MgPT09IHVuZGVmaW5lZClcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihcImZkIFwiICsgZmQgKyBcIiBkb2Vzbid0IGV4aXN0XCIpO1xuICB2YXIgZmlsZSA9IGZkX2Rlc2MuZmlsZTtcbiAgdmFyIGNoYW5pZCA9IGZkX2Rlc2MuY2hhbmlkO1xuICB2YXIgYnVmZmVyZWQgPSBmaWxlLmZsYWdzLmJ1ZmZlcmVkICE9PSB1bmRlZmluZWQgPyBmaWxlLmZsYWdzLmJ1ZmZlcmVkIDogMTtcbiAgdmFyIGNoYW5uZWwgPSB7XG4gICAgZmlsZTogZmlsZSxcbiAgICBvZmZzZXQ6IGZpbGUucG9zKCksXG4gICAgZmQ6IGZkLFxuICAgIG9wZW5lZDogdHJ1ZSxcbiAgICBvdXQ6IHRydWUsXG4gICAgYnVmZmVyX2N1cnI6IDAsXG4gICAgYnVmZmVyOiBuZXcgVWludDhBcnJheShjYW1sX2lvX2J1ZmZlcl9zaXplKSxcbiAgICBidWZmZXJlZDogYnVmZmVyZWQsXG4gIH07XG4gIGNhbWxfbWxfY2hhbm5lbHMuc2V0KGNoYW5pZCwgY2hhbm5lbCk7XG4gIHJldHVybiBjaGFuaWQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX3N5c19mZHNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19vcGVuXG4vL1JlcXVpcmVzOiBjYW1sX2lvX2J1ZmZlcl9zaXplXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbihmZCkge1xuICB2YXIgZmRfZGVzYyA9IGNhbWxfc3lzX2Zkc1tmZF07XG4gIGlmIChmZF9kZXNjID09PSB1bmRlZmluZWQpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJmZCBcIiArIGZkICsgXCIgZG9lc24ndCBleGlzdFwiKTtcbiAgdmFyIGZpbGUgPSBmZF9kZXNjLmZpbGU7XG4gIHZhciBjaGFuaWQgPSBmZF9kZXNjLmNoYW5pZDtcbiAgdmFyIHJlZmlsbCA9IG51bGw7XG4gIHZhciBjaGFubmVsID0ge1xuICAgIGZpbGU6IGZpbGUsXG4gICAgb2Zmc2V0OiBmaWxlLnBvcygpLFxuICAgIGZkOiBmZCxcbiAgICBvcGVuZWQ6IHRydWUsXG4gICAgb3V0OiBmYWxzZSxcbiAgICBidWZmZXJfY3VycjogMCxcbiAgICBidWZmZXJfbWF4OiAwLFxuICAgIGJ1ZmZlcjogbmV3IFVpbnQ4QXJyYXkoY2FtbF9pb19idWZmZXJfc2l6ZSksXG4gICAgcmVmaWxsOiByZWZpbGwsXG4gIH07XG4gIGNhbWxfbWxfY2hhbm5lbHMuc2V0KGNoYW5pZCwgY2hhbm5lbCk7XG4gIHJldHVybiBjaGFuaWQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luX3dpdGhfZmxhZ3Ncbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luXG4vL1ZlcnNpb246ID49IDUuMVxuZnVuY3Rpb24gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5fd2l0aF9mbGFncyhmZCwgX2ZsYWdzKSB7XG4gIHJldHVybiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbihmZCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dF93aXRoX2ZsYWdzXG4vL1JlcXVpcmVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRcbi8vVmVyc2lvbjogPj0gNS4xXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRfd2l0aF9mbGFncyhmZCwgX2ZsYWdzKSB7XG4gIHJldHVybiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQoZmQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NoYW5uZWxfZGVzY3JpcHRvclxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuLy9BbGlhczogd2luX2ZpbGVkZXNjcl9vZl9jaGFubmVsXG5mdW5jdGlvbiBjYW1sX2NoYW5uZWxfZGVzY3JpcHRvcihjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHJldHVybiBjaGFuLmZkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9iaW5hcnlfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9tbF9zZXRfYmluYXJ5X21vZGUoY2hhbmlkLCBtb2RlKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICBjaGFuLmZpbGUuZmxhZ3MudGV4dCA9ICFtb2RlO1xuICBjaGFuLmZpbGUuZmxhZ3MuYmluYXJ5ID0gbW9kZTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaXNfYmluYXJ5X21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXRcbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBjYW1sX21sX2lzX2JpbmFyeV9tb2RlKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgcmV0dXJuIGNoYW4uZmlsZS5mbGFncy5iaW5hcnk7XG59XG5cbi8vSW5wdXQgZnJvbSBpbl9jaGFubmVsXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2xvc2VfY2hhbm5lbFxuLy9SZXF1aXJlczogY2FtbF9tbF9mbHVzaCwgY2FtbF9tbF9jaGFubmVsX2dldFxuLy9SZXF1aXJlczogY2FtbF9zeXNfY2xvc2Vcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfY2xvc2VfY2hhbm5lbChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIGlmIChjaGFuLm9wZW5lZCkge1xuICAgIGNoYW4ub3BlbmVkID0gZmFsc2U7XG4gICAgY2FtbF9tbF9jaGFubmVscy5jbG9zZShjaGFuaWQpO1xuICAgIGNhbWxfc3lzX2Nsb3NlKGNoYW4uZmQpO1xuICAgIGNoYW4uZmQgPSAtMTtcbiAgICBjaGFuLmJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KDApO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX2NoYW5uZWxfc2l6ZShjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHJldHVybiBjaGFuLmZpbGUubGVuZ3RoKCkgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NoYW5uZWxfc2l6ZV82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9mbG9hdCxjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX2NoYW5uZWxfc2l6ZV82NChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2Zsb2F0KGNoYW4uZmlsZS5sZW5ndGgoKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX291dHB1dChjaGFuaWQsIGYpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIGNoYW4ub3V0cHV0ID0gZnVuY3Rpb24gKHMpIHtcbiAgICBmKHMpO1xuICB9O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGxcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXRcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsKGNoYW5pZCwgZikge1xuICBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCkucmVmaWxsID0gZjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVmaWxsXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gY2FtbF9yZWZpbGwoY2hhbikge1xuICBpZiAoY2hhbi5yZWZpbGwgIT0gbnVsbCkge1xuICAgIHZhciBzdHIgPSBjaGFuLnJlZmlsbCgpO1xuICAgIHZhciBzdHJfYSA9IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nKHN0cik7XG4gICAgaWYgKHN0cl9hLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY2hhbi5yZWZpbGwgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY2hhbi5idWZmZXIubGVuZ3RoIDwgY2hhbi5idWZmZXJfbWF4ICsgc3RyX2EubGVuZ3RoKSB7XG4gICAgICAgIHZhciBiID0gbmV3IFVpbnQ4QXJyYXkoY2hhbi5idWZmZXJfbWF4ICsgc3RyX2EubGVuZ3RoKTtcbiAgICAgICAgYi5zZXQoY2hhbi5idWZmZXIpO1xuICAgICAgICBjaGFuLmJ1ZmZlciA9IGI7XG4gICAgICB9XG4gICAgICBjaGFuLmJ1ZmZlci5zZXQoc3RyX2EsIGNoYW4uYnVmZmVyX21heCk7XG4gICAgICBjaGFuLm9mZnNldCArPSBzdHJfYS5sZW5ndGg7XG4gICAgICBjaGFuLmJ1ZmZlcl9tYXggKz0gc3RyX2EubGVuZ3RoO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoY2hhbi5mZCA9PT0gLTEpIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiQmFkIGZpbGUgZGVzY3JpcHRvclwiKTtcbiAgICB9XG4gICAgdmFyIG5yZWFkID0gY2hhbi5maWxlLnJlYWQoXG4gICAgICBjaGFuLmJ1ZmZlcixcbiAgICAgIGNoYW4uYnVmZmVyX21heCxcbiAgICAgIGNoYW4uYnVmZmVyLmxlbmd0aCAtIGNoYW4uYnVmZmVyX21heCxcbiAgICAgIGZhbHNlLFxuICAgICk7XG4gICAgY2hhbi5vZmZzZXQgKz0gbnJlYWQ7XG4gICAgY2hhbi5idWZmZXJfbWF4ICs9IG5yZWFkO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfaW5wdXRfYmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXQoY2hhbmlkLCBiLCBpLCBsKSB7XG4gIHZhciBiYSA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoYik7XG4gIHJldHVybiBjYW1sX21sX2lucHV0X2Jsb2NrKGNoYW5pZCwgYmEsIGksIGwpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2JpZ2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX21sX2lucHV0X2Jsb2NrXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5XG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9iaWdhcnJheShjaGFuaWQsIGIsIGksIGwpIHtcbiAgdmFyIGJhID0gY2FtbF9iYV90b190eXBlZF9hcnJheShiKTtcbiAgcmV0dXJuIGNhbWxfbWxfaW5wdXRfYmxvY2soY2hhbmlkLCBiYSwgaSwgbCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfYmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfcmVmaWxsLCBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2Jsb2NrKGNoYW5pZCwgYmEsIGksIGwpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHZhciBuID0gbDtcbiAgdmFyIGF2YWlsID0gY2hhbi5idWZmZXJfbWF4IC0gY2hhbi5idWZmZXJfY3VycjtcbiAgaWYgKGwgPD0gYXZhaWwpIHtcbiAgICBiYS5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VyciwgY2hhbi5idWZmZXJfY3VyciArIGwpLCBpKTtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGw7XG4gIH0gZWxzZSBpZiAoYXZhaWwgPiAwKSB7XG4gICAgYmEuc2V0KGNoYW4uYnVmZmVyLnN1YmFycmF5KGNoYW4uYnVmZmVyX2N1cnIsIGNoYW4uYnVmZmVyX2N1cnIgKyBhdmFpbCksIGkpO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gYXZhaWw7XG4gICAgbiA9IGF2YWlsO1xuICB9IGVsc2Uge1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gICAgY2FtbF9yZWZpbGwoY2hhbik7XG4gICAgdmFyIGF2YWlsID0gY2hhbi5idWZmZXJfbWF4IC0gY2hhbi5idWZmZXJfY3VycjtcbiAgICBpZiAobiA+IGF2YWlsKSBuID0gYXZhaWw7XG4gICAgYmEuc2V0KGNoYW4uYnVmZmVyLnN1YmFycmF5KGNoYW4uYnVmZmVyX2N1cnIsIGNoYW4uYnVmZmVyX2N1cnIgKyBuKSwgaSk7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBuO1xuICB9XG4gIHJldHVybiBuIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSwgY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzLCBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9tbF9jaGFubmVsX2dldCwgY2FtbF9ieXRlc19vZl91aW50OF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9yZWZpbGwsIGNhbWxfZmFpbHdpdGgsIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZVxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZShjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHZhciBoZWFkZXIgPSBuZXcgVWludDhBcnJheShjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUpO1xuICBmdW5jdGlvbiBibG9jayhidWZmZXIsIG9mZnNldCwgbikge1xuICAgIHZhciByID0gMDtcbiAgICB3aGlsZSAociA8IG4pIHtcbiAgICAgIGlmIChjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyX21heCkge1xuICAgICAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICAgICAgY2hhbi5idWZmZXJfbWF4ID0gMDtcbiAgICAgICAgY2FtbF9yZWZpbGwoY2hhbik7XG4gICAgICB9XG4gICAgICBpZiAoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlcl9tYXgpIGJyZWFrO1xuICAgICAgYnVmZmVyW29mZnNldCArIHJdID0gY2hhbi5idWZmZXJbY2hhbi5idWZmZXJfY3Vycl07XG4gICAgICBjaGFuLmJ1ZmZlcl9jdXJyKys7XG4gICAgICByKys7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG4gIHZhciByID0gYmxvY2soaGVhZGVyLCAwLCBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUpO1xuICBpZiAociA9PT0gMCkgY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSgpO1xuICBlbHNlIGlmIChyIDwgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogdHJ1bmNhdGVkIG9iamVjdFwiKTtcbiAgdmFyIGxlbiA9IGNhbWxfbWFyc2hhbF9kYXRhX3NpemUoY2FtbF9ieXRlc19vZl91aW50OF9hcnJheShoZWFkZXIpLCAwKTtcbiAgdmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGxlbiArIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSk7XG4gIGJ1Zi5zZXQoaGVhZGVyLCAwKTtcbiAgdmFyIHIgPSBibG9jayhidWYsIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSwgbGVuKTtcbiAgaWYgKHIgPCBsZW4pIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogdHJ1bmNhdGVkIG9iamVjdCBcIiArIHIgKyBcIiAgXCIgKyBsZW4pO1xuICB2YXIgcmVzID0gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzKGNhbWxfYnl0ZXNfb2ZfdWludDhfYXJyYXkoYnVmKSwgMCk7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVfdG9fb3V0c2lkZV9oZWFwXG4vL1JlcXVpcmVzOiBjYW1sX2lucHV0X3ZhbHVlXG4vL1ZlcnNpb246ID49IDVcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWVfdG9fb3V0c2lkZV9oZWFwKGMpIHtcbiAgcmV0dXJuIGNhbWxfaW5wdXRfdmFsdWUoYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfY2hhclxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldCwgY2FtbF9yZWZpbGxcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXRfY2hhcihjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIGlmIChjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyX21heCkge1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gICAgY2FtbF9yZWZpbGwoY2hhbik7XG4gIH1cbiAgaWYgKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXJfbWF4KSBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gIHZhciByZXMgPSBjaGFuLmJ1ZmZlcltjaGFuLmJ1ZmZlcl9jdXJyXTtcbiAgY2hhbi5idWZmZXJfY3VycisrO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2ludFxuLy9SZXF1aXJlczogY2FtbF9tbF9pbnB1dF9jaGFyXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2ludChjaGFuaWQpIHtcbiAgdmFyIHJlcyA9IDA7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgcmVzID0gKChyZXMgPDwgOCkgKyBjYW1sX21sX2lucHV0X2NoYXIoY2hhbmlkKSkgfCAwO1xuICB9XG4gIHJldHVybiByZXMgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NlZWtfaW5cbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX3NlZWtfaW4oY2hhbmlkLCBwb3MpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIGlmIChjaGFuLnJlZmlsbCAhPSBudWxsKSBjYW1sX3JhaXNlX3N5c19lcnJvcihcIklsbGVnYWwgc2Vla1wiKTtcbiAgaWYgKFxuICAgIHBvcyA+PSBjaGFuLm9mZnNldCAtIGNoYW4uYnVmZmVyX21heCAmJlxuICAgIHBvcyA8PSBjaGFuLm9mZnNldCAmJlxuICAgIGNoYW4uZmlsZS5mbGFncy5iaW5hcnlcbiAgKSB7XG4gICAgY2hhbi5idWZmZXJfY3VyciA9IGNoYW4uYnVmZmVyX21heCAtIChjaGFuLm9mZnNldCAtIHBvcyk7XG4gIH0gZWxzZSB7XG4gICAgY2hhbi5maWxlLnNlZWsocG9zLCAwKTtcbiAgICBjaGFuLm9mZnNldCA9IHBvcztcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICBjaGFuLmJ1ZmZlcl9tYXggPSAwO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NlZWtfaW5cbi8vUmVxdWlyZXM6IGNhbWxfc2Vla19pblxuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX2luKGNoYW5pZCwgcG9zKSB7XG4gIHJldHVybiBjYW1sX3NlZWtfaW4oY2hhbmlkLCBwb3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NlZWtfaW5fNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fZmxvYXQsIGNhbWxfc2Vla19pblxuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX2luXzY0KGNoYW5pZCwgcG9zKSB7XG4gIHZhciBwb3MgPSBjYW1sX2ludDY0X3RvX2Zsb2F0KHBvcyk7XG4gIHJldHVybiBjYW1sX3NlZWtfaW4oY2hhbmlkLCBwb3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3Bvc19pblxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9wb3NfaW4oY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICByZXR1cm4gY2hhbi5vZmZzZXQgLSAoY2hhbi5idWZmZXJfbWF4IC0gY2hhbi5idWZmZXJfY3Vycik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX2luXG4vL1JlcXVpcmVzOiBjYW1sX3Bvc19pblxuZnVuY3Rpb24gY2FtbF9tbF9wb3NfaW4oY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX3Bvc19pbihjaGFuaWQpIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3NfaW5fNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQsIGNhbWxfcG9zX2luXG5mdW5jdGlvbiBjYW1sX21sX3Bvc19pbl82NChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQoY2FtbF9wb3NfaW4oY2hhbmlkKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0LCBjYW1sX3JlZmlsbFxuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmUoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICB2YXIgcCA9IGNoYW4uYnVmZmVyX2N1cnI7XG4gIGRvIHtcbiAgICBpZiAocCA+PSBjaGFuLmJ1ZmZlcl9tYXgpIHtcbiAgICAgIGlmIChjaGFuLmJ1ZmZlcl9jdXJyID4gMCkge1xuICAgICAgICBjaGFuLmJ1ZmZlci5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VyciksIDApO1xuICAgICAgICBwIC09IGNoYW4uYnVmZmVyX2N1cnI7XG4gICAgICAgIGNoYW4uYnVmZmVyX21heCAtPSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICAgICAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICAgIH1cbiAgICAgIGlmIChjaGFuLmJ1ZmZlcl9tYXggPj0gY2hhbi5idWZmZXIubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiAtY2hhbi5idWZmZXJfbWF4IHwgMDtcbiAgICAgIH1cbiAgICAgIHZhciBwcmV2X21heCA9IGNoYW4uYnVmZmVyX21heDtcbiAgICAgIGNhbWxfcmVmaWxsKGNoYW4pO1xuICAgICAgaWYgKHByZXZfbWF4ID09PSBjaGFuLmJ1ZmZlcl9tYXgpIHtcbiAgICAgICAgcmV0dXJuIC1jaGFuLmJ1ZmZlcl9tYXggfCAwO1xuICAgICAgfVxuICAgIH1cbiAgfSB3aGlsZSAoY2hhbi5idWZmZXJbcCsrXSAhPT0gMTApO1xuICByZXR1cm4gKHAgLSBjaGFuLmJ1ZmZlcl9jdXJyKSB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZmx1c2hcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX3N1Yl91aW50OF9hcnJheV90b19qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX21sX2ZsdXNoKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgaWYgKCFjaGFuLm9wZW5lZCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJDYW5ub3QgZmx1c2ggYSBjbG9zZWQgY2hhbm5lbFwiKTtcbiAgaWYgKCFjaGFuLmJ1ZmZlciB8fCBjaGFuLmJ1ZmZlcl9jdXJyID09PSAwKSByZXR1cm4gMDtcbiAgaWYgKGNoYW4ub3V0cHV0KSB7XG4gICAgY2hhbi5vdXRwdXQoXG4gICAgICBjYW1sX3N1Yl91aW50OF9hcnJheV90b19qc2J5dGVzKGNoYW4uYnVmZmVyLCAwLCBjaGFuLmJ1ZmZlcl9jdXJyKSxcbiAgICApO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIHBvcyA9IDA7IHBvcyA8IGNoYW4uYnVmZmVyX2N1cnI7ICkge1xuICAgICAgcG9zICs9IGNoYW4uZmlsZS53cml0ZShjaGFuLmJ1ZmZlciwgcG9zLCBjaGFuLmJ1ZmZlcl9jdXJyIC0gcG9zLCBmYWxzZSk7XG4gICAgfVxuICB9XG4gIGNoYW4ub2Zmc2V0ICs9IGNoYW4uYnVmZmVyX2N1cnI7XG4gIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICByZXR1cm4gMDtcbn1cblxuLy9vdXRwdXQgdG8gb3V0X2NoYW5uZWxcblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfdGFcbi8vUmVxdWlyZXM6IGNhbWxfbWxfZmx1c2gsY2FtbF9tbF9ieXRlc19sZW5ndGhcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF90YShjaGFuaWQsIGJ1ZmZlciwgb2Zmc2V0LCBsZW4pIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIGlmICghY2hhbi5vcGVuZWQpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiQ2Fubm90IG91dHB1dCB0byBhIGNsb3NlZCBjaGFubmVsXCIpO1xuICBidWZmZXIgPSBidWZmZXIuc3ViYXJyYXkob2Zmc2V0LCBvZmZzZXQgKyBsZW4pO1xuICBpZiAoY2hhbi5idWZmZXJfY3VyciArIGJ1ZmZlci5sZW5ndGggPiBjaGFuLmJ1ZmZlci5sZW5ndGgpIHtcbiAgICB2YXIgYiA9IG5ldyBVaW50OEFycmF5KGNoYW4uYnVmZmVyX2N1cnIgKyBidWZmZXIubGVuZ3RoKTtcbiAgICBiLnNldChjaGFuLmJ1ZmZlcik7XG4gICAgY2hhbi5idWZmZXIgPSBiO1xuICB9XG4gIHN3aXRjaCAoY2hhbi5idWZmZXJlZCkge1xuICAgIGNhc2UgMDogLy8gVW5idWZmZXJlZFxuICAgICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlciwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGJ1ZmZlci5sZW5ndGg7XG4gICAgICBjYW1sX21sX2ZsdXNoKGNoYW5pZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDE6IC8vIEJ1ZmZlcmVkICh0aGUgZGVmYXVsdClcbiAgICAgIGNoYW4uYnVmZmVyLnNldChidWZmZXIsIGNoYW4uYnVmZmVyX2N1cnIpO1xuICAgICAgY2hhbi5idWZmZXJfY3VyciArPSBidWZmZXIubGVuZ3RoO1xuICAgICAgaWYgKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXIubGVuZ3RoKSBjYW1sX21sX2ZsdXNoKGNoYW5pZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDI6IC8vIEJ1ZmZlcmVkIChvbmx5IGZvciBzdGRvdXQgYW5kIHN0ZGVycilcbiAgICAgIHZhciBpZCA9IGJ1ZmZlci5sYXN0SW5kZXhPZigxMCk7XG4gICAgICBpZiAoaWQgPCAwKSB7XG4gICAgICAgIGNoYW4uYnVmZmVyLnNldChidWZmZXIsIGNoYW4uYnVmZmVyX2N1cnIpO1xuICAgICAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGJ1ZmZlci5sZW5ndGg7XG4gICAgICAgIGlmIChjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyLmxlbmd0aCkgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlci5zdWJhcnJheSgwLCBpZCArIDEpLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICAgICAgY2hhbi5idWZmZXJfY3VyciArPSBpZCArIDE7XG4gICAgICAgIGNhbWxfbWxfZmx1c2goY2hhbmlkKTtcbiAgICAgICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlci5zdWJhcnJheShpZCArIDEpLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICAgICAgY2hhbi5idWZmZXJfY3VyciArPSBidWZmZXIubGVuZ3RoIC0gaWQgLSAxO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzLCBjYW1sX21sX291dHB1dF90YVxuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfYnl0ZXMoY2hhbmlkLCBidWZmZXIsIG9mZnNldCwgbGVuKSB7XG4gIHZhciBidWZmZXIgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGJ1ZmZlcik7XG4gIHJldHVybiBjYW1sX21sX291dHB1dF90YShjaGFuaWQsIGJ1ZmZlciwgb2Zmc2V0LCBsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF9iaWdhcnJheVxuLy9SZXF1aXJlczogY2FtbF9iYV90b190eXBlZF9hcnJheSwgY2FtbF9tbF9vdXRwdXRfdGFcbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF9iaWdhcnJheShjaGFuaWQsIGJ1ZmZlciwgb2Zmc2V0LCBsZW4pIHtcbiAgdmFyIGJ1ZmZlciA9IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkoYnVmZmVyKTtcbiAgcmV0dXJuIGNhbWxfbWxfb3V0cHV0X3RhKGNoYW5pZCwgYnVmZmVyLCBvZmZzZXQsIGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dF9ieXRlcywgY2FtbF9ieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCwgYnVmZmVyLCBvZmZzZXQsIGxlbikge1xuICByZXR1cm4gY2FtbF9tbF9vdXRwdXRfYnl0ZXMoXG4gICAgY2hhbmlkLFxuICAgIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGJ1ZmZlciksXG4gICAgb2Zmc2V0LFxuICAgIGxlbixcbiAgKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfY2hhclxuLy9SZXF1aXJlczogY2FtbF9tbF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X2NoYXIoY2hhbmlkLCBjKSB7XG4gIHZhciBzID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTtcbiAgY2FtbF9tbF9vdXRwdXQoY2hhbmlkLCBzLCAwLCAxKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlXG4vL1JlcXVpcmVzOiBjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmcsIGNhbWxfbWxfb3V0cHV0LGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9vdXRwdXRfdmFsdWUoY2hhbmlkLCB2LCBmbGFncykge1xuICB2YXIgcyA9IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyh2LCBmbGFncyk7XG4gIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCwgcywgMCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2Vla19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXQsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfc2Vla19vdXQoY2hhbmlkLCBwb3MpIHtcbiAgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgY2hhbi5maWxlLnNlZWsocG9zLCAwKTtcbiAgY2hhbi5vZmZzZXQgPSBwb3M7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NlZWtfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX3NlZWtfb3V0XG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfb3V0KGNoYW5pZCwgcG9zKSB7XG4gIHJldHVybiBjYW1sX3NlZWtfb3V0KGNoYW5pZCwgcG9zKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19vdXRfNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fZmxvYXQsIGNhbWxfc2Vla19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19vdXRfNjQoY2hhbmlkLCBwb3MpIHtcbiAgdmFyIHBvcyA9IGNhbWxfaW50NjRfdG9fZmxvYXQocG9zKTtcbiAgcmV0dXJuIGNhbWxfc2Vla19vdXQoY2hhbmlkLCBwb3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3Bvc19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXQsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfcG9zX291dChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHJldHVybiBjaGFuLm9mZnNldCArIGNoYW4uYnVmZmVyX2N1cnI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX291dFxuLy9SZXF1aXJlczogY2FtbF9wb3Nfb3V0XG5mdW5jdGlvbiBjYW1sX21sX3Bvc19vdXQoY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX3Bvc19vdXQoY2hhbmlkKSB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX291dF82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9mbG9hdCwgY2FtbF9wb3Nfb3V0XG5mdW5jdGlvbiBjYW1sX21sX3Bvc19vdXRfNjQoY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2Zsb2F0KGNhbWxfcG9zX291dChjaGFuaWQpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfaW50XG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dF90YVxuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfaW50KGNoYW5pZCwgaSkge1xuICB2YXIgYXJyID0gWyhpID4+IDI0KSAmIDB4ZmYsIChpID4+IDE2KSAmIDB4ZmYsIChpID4+IDgpICYgMHhmZiwgaSAmIDB4ZmZdO1xuICBjYW1sX21sX291dHB1dF90YShjaGFuaWQsIG5ldyBVaW50OEFycmF5KGFyciksIDAsIDQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pc19idWZmZXJlZFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9tbF9pc19idWZmZXJlZChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKS5idWZmZXJlZCA/IDEgOiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9idWZmZXJlZFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldCwgY2FtbF9tbF9mbHVzaFxuZnVuY3Rpb24gY2FtbF9tbF9zZXRfYnVmZmVyZWQoY2hhbmlkLCB2KSB7XG4gIGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKS5idWZmZXJlZCA9IHY7XG4gIGlmICghdikgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICByZXR1cm4gMDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gU3lzXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcsIGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3N5c19lcnJvcihtc2cpIHtcbiAgY2FtbF9yYWlzZV93aXRoX2FyZyhjYW1sX2dsb2JhbF9kYXRhLlN5c19lcnJvciwgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcobXNnKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2V4aXRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9BbGlhczogY2FtbF91bml4X2V4aXRcbi8vQWxpYXM6IHVuaXhfZXhpdFxuZnVuY3Rpb24gY2FtbF9zeXNfZXhpdChjb2RlKSB7XG4gIGlmIChnbG9iYWxUaGlzLnF1aXQpIGdsb2JhbFRoaXMucXVpdChjb2RlKTtcbiAgLy9ub2RlanNcbiAgaWYgKGdsb2JhbFRoaXMucHJvY2Vzcz8uZXhpdCkgZ2xvYmFsVGhpcy5wcm9jZXNzLmV4aXQoY29kZSk7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkZ1bmN0aW9uICdleGl0JyBub3QgaW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24oZXhuKSB7XG4gIHN3aXRjaCAoZXhuWzJdKSB7XG4gICAgY2FzZSAtODogLy8gTWF0Y2hfZmFpbHVyZVxuICAgIGNhc2UgLTExOiAvLyBBc3NlcnRfZmFpbHVyZVxuICAgIGNhc2UgLTEyOiAvLyBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZVxuICAgICAgcmV0dXJuIDE7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAwO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZm9ybWF0X2V4Y2VwdGlvblxuLy9SZXF1aXJlczogTWxCeXRlcywgY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9mb3JtYXRfZXhjZXB0aW9uKGV4bikge1xuICB2YXIgciA9IFwiXCI7XG4gIGlmIChleG5bMF0gPT09IDApIHtcbiAgICByICs9IGV4blsxXVsxXTtcbiAgICBpZiAoXG4gICAgICBleG4ubGVuZ3RoID09PSAzICYmXG4gICAgICBleG5bMl1bMF0gPT09IDAgJiZcbiAgICAgIGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24oZXhuWzFdKVxuICAgICkge1xuICAgICAgdmFyIGJ1Y2tldCA9IGV4blsyXTtcbiAgICAgIHZhciBzdGFydCA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBzdGFydCA9IDI7XG4gICAgICB2YXIgYnVja2V0ID0gZXhuO1xuICAgIH1cbiAgICByICs9IFwiKFwiO1xuICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGJ1Y2tldC5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGkgPiBzdGFydCkgciArPSBcIiwgXCI7XG4gICAgICB2YXIgdiA9IGJ1Y2tldFtpXTtcbiAgICAgIGlmICh0eXBlb2YgdiA9PT0gXCJudW1iZXJcIikgciArPSB2LnRvU3RyaW5nKCk7XG4gICAgICBlbHNlIGlmICh2IGluc3RhbmNlb2YgTWxCeXRlcykge1xuICAgICAgICByICs9ICdcIicgKyB2LnRvU3RyaW5nKCkgKyAnXCInO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICByICs9ICdcIicgKyB2LnRvU3RyaW5nKCkgKyAnXCInO1xuICAgICAgfSBlbHNlIHIgKz0gXCJfXCI7XG4gICAgfVxuICAgIHIgKz0gXCIpXCI7XG4gIH0gZWxzZSBpZiAoZXhuWzBdID09PSAyNDgpIHtcbiAgICByICs9IGV4blsxXTtcbiAgfVxuICByZXR1cm4gcjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25cbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfZm9ybWF0X2V4Y2VwdGlvbiwgY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24oZXJyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGVycikgJiYgKGVyclswXSA9PT0gMCB8fCBlcnJbMF0gPT09IDI0OCkpIHtcbiAgICB2YXIgaGFuZGxlciA9IGNhbWxfbmFtZWRfdmFsdWUoXCJQcmludGV4Yy5oYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uXCIpO1xuICAgIGlmIChoYW5kbGVyKSBjYW1sX2NhbGxiYWNrKGhhbmRsZXIsIFtlcnIsIGZhbHNlXSk7XG4gICAgZWxzZSB7XG4gICAgICB2YXIgbXNnID0gY2FtbF9mb3JtYXRfZXhjZXB0aW9uKGVycik7XG4gICAgICB2YXIgYXRfZXhpdCA9IGNhbWxfbmFtZWRfdmFsdWUoXCJQZXJ2YXNpdmVzLmRvX2F0X2V4aXRcIik7XG4gICAgICBpZiAoYXRfZXhpdCkgY2FtbF9jYWxsYmFjayhhdF9leGl0LCBbMF0pO1xuICAgICAgY29uc29sZS5lcnJvcihcIkZhdGFsIGVycm9yOiBleGNlcHRpb24gXCIgKyBtc2cpO1xuICAgICAgaWYgKGVyci5qc19lcnJvcikgdGhyb3cgZXJyLmpzX2Vycm9yO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBlcnI7XG4gIH1cbn1cblxuLy9Qcm92aWRlczoganNvb19zdGF0aWNfZW52XG52YXIganNvb19zdGF0aWNfZW52ID0ge307XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2V0X3N0YXRpY19lbnZcbi8vUmVxdWlyZXM6IGpzb29fc3RhdGljX2VudlxuZnVuY3Rpb24gY2FtbF9zZXRfc3RhdGljX2VudihrLCB2KSB7XG4gIGpzb29fc3RhdGljX2VudltrXSA9IHY7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX3N5c19nZXRlbnYgKGNvbnN0KVxuLy9SZXF1aXJlczoganNvb19zdGF0aWNfZW52XG5mdW5jdGlvbiBqc29vX3N5c19nZXRlbnYobikge1xuICBpZiAoanNvb19zdGF0aWNfZW52W25dKSByZXR1cm4ganNvb19zdGF0aWNfZW52W25dO1xuICB2YXIgcHJvY2VzcyA9IGdsb2JhbFRoaXMucHJvY2VzcztcbiAgLy9ub2RlanMgZW52XG4gIGlmIChwcm9jZXNzICYmIHByb2Nlc3MuZW52ICYmIHByb2Nlc3MuZW52W25dICE9PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIHByb2Nlc3MuZW52W25dO1xuICBpZiAoZ2xvYmFsVGhpcy5qc29vX2VudiAmJiB0eXBlb2YgZ2xvYmFsVGhpcy5qc29vX2VudltuXSA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiBnbG9iYWxUaGlzLmpzb29fZW52W25dO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldGVudiAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vdF9mb3VuZFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBqc29vX3N5c19nZXRlbnZcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldGVudihuYW1lKSB7XG4gIHZhciByID0ganNvb19zeXNfZ2V0ZW52KGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWUpKTtcbiAgaWYgKHIgPT09IHVuZGVmaW5lZCkgY2FtbF9yYWlzZV9ub3RfZm91bmQoKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRlbnZfb3B0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9SZXF1aXJlczoganNvb19zeXNfZ2V0ZW52XG4vL1ZlcnNpb246ID49IDUuNFxuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0ZW52X29wdChuYW1lKSB7XG4gIHZhciByID0ganNvb19zeXNfZ2V0ZW52KGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWUpKTtcbiAgaWYgKHIgPT09IHVuZGVmaW5lZCkgcmV0dXJuIDA7XG4gIHJldHVybiBbMCwgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocildO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c191bnNhZmVfZ2V0ZW52XG4vL1JlcXVpcmVzOiBjYW1sX3N5c19nZXRlbnZcbmZ1bmN0aW9uIGNhbWxfc3lzX3Vuc2FmZV9nZXRlbnYobmFtZSkge1xuICByZXR1cm4gY2FtbF9zeXNfZ2V0ZW52KG5hbWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG52YXIgY2FtbF9hcmd2ID0gKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHByb2Nlc3MgPSBnbG9iYWxUaGlzLnByb2Nlc3M7XG4gIHZhciBtYWluID0gXCJhLm91dFwiO1xuICB2YXIgYXJncyA9IFtdO1xuXG4gIGlmIChwcm9jZXNzPy5hcmd2Py5sZW5ndGggPiAxKSB7XG4gICAgdmFyIGFyZ3YgPSBwcm9jZXNzLmFyZ3Y7XG4gICAgLy9ub2RlanNcbiAgICBtYWluID0gYXJndlsxXTtcbiAgICBhcmdzID0gYXJndi5zbGljZSgyKTtcbiAgfVxuXG4gIHZhciBwID0gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcobWFpbik7XG4gIHZhciBhcmdzMiA9IFswLCBwXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKVxuICAgIGFyZ3MyLnB1c2goY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoYXJnc1tpXSkpO1xuICByZXR1cm4gYXJnczI7XG59KSgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2V4ZWN1dGFibGVfbmFtZVxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG52YXIgY2FtbF9leGVjdXRhYmxlX25hbWUgPSBjYW1sX2FyZ3ZbMV07XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldF9hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldF9hcmd2KF91bml0KSB7XG4gIHJldHVybiBbMCwgY2FtbF9hcmd2WzFdLCBjYW1sX2FyZ3ZdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbmZ1bmN0aW9uIGNhbWxfc3lzX2FyZ3YoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfYXJndjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfbW9kaWZ5X2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxuZnVuY3Rpb24gY2FtbF9zeXNfbW9kaWZ5X2FyZ3YoYXJnKSB7XG4gIGNhbWxfYXJndiA9IGFyZztcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZSBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9leGVjdXRhYmxlX25hbWVcbmZ1bmN0aW9uIGNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZShfdW5pdCkge1xuICByZXR1cm4gY2FtbF9leGVjdXRhYmxlX25hbWU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmQoY21kKSB7XG4gIHZhciBjbWQgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhjbWQpO1xuICBpZiAodHlwZW9mIHJlcXVpcmUgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICB2YXIgY2hpbGRfcHJvY2VzcyA9IHJlcXVpcmUoXCJub2RlOmNoaWxkX3Byb2Nlc3NcIik7XG4gICAgaWYgKGNoaWxkX3Byb2Nlc3M/LmV4ZWNTeW5jKVxuICAgICAgdHJ5IHtcbiAgICAgICAgY2hpbGRfcHJvY2Vzcy5leGVjU3luYyhjbWQsIHsgc3RkaW86IFwiaW5oZXJpdFwiIH0pO1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9XG4gIH0gZWxzZSByZXR1cm4gMTI3O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19zeXN0ZW1fY29tbWFuZFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kKF9jbWQpIHtcbiAgcmV0dXJuIDEyNztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfdGltZSBtdXRhYmxlXG52YXIgY2FtbF9pbml0aWFsX3RpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKSAqIDAuMDAxO1xuZnVuY3Rpb24gY2FtbF9zeXNfdGltZSgpIHtcbiAgdmFyIG5vdyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICByZXR1cm4gbm93ICogMC4wMDEgLSBjYW1sX2luaXRpYWxfdGltZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfdGltZV9pbmNsdWRlX2NoaWxkcmVuXG4vL1JlcXVpcmVzOiBjYW1sX3N5c190aW1lXG5mdW5jdGlvbiBjYW1sX3N5c190aW1lX2luY2x1ZGVfY2hpbGRyZW4oX2IpIHtcbiAgcmV0dXJuIGNhbWxfc3lzX3RpbWUoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmFuZG9tX3NlZWQgbXV0YWJsZVxuLy9UaGUgZnVuY3Rpb24gbmVlZHMgdG8gcmV0dXJuIGFuIGFycmF5IHNpbmNlIE9DYW1sIDQuMC4uLlxuZnVuY3Rpb24gY2FtbF9zeXNfcmFuZG9tX3NlZWQoKSB7XG4gIGlmIChnbG9iYWxUaGlzLmNyeXB0bykge1xuICAgIGlmIChnbG9iYWxUaGlzLmNyeXB0by5nZXRSYW5kb21WYWx1ZXMpIHtcbiAgICAgIHZhciBhID0gZ2xvYmFsVGhpcy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBJbnQzMkFycmF5KDQpKTtcbiAgICAgIHJldHVybiBbMCwgYVswXSwgYVsxXSwgYVsyXSwgYVszXV07XG4gICAgfSBlbHNlIGlmIChnbG9iYWxUaGlzLmNyeXB0by5yYW5kb21CeXRlcykge1xuICAgICAgdmFyIGEgPSBuZXcgSW50MzJBcnJheShnbG9iYWxUaGlzLmNyeXB0by5yYW5kb21CeXRlcygxNikuYnVmZmVyKTtcbiAgICAgIHJldHVybiBbMCwgYVswXSwgYVsxXSwgYVsyXSwgYVszXV07XG4gICAgfVxuICB9XG4gIHZhciBub3cgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgdmFyIHggPSBub3cgXiAoMHhmZmZmZmZmZiAqIE1hdGgucmFuZG9tKCkpO1xuICByZXR1cm4gWzAsIHhdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuIGNvbnN0XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuKCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfd29yZF9zaXplIGNvbnN0XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF93b3JkX3NpemUoKSB7XG4gIHJldHVybiAzMjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfaW50X3NpemUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X2ludF9zaXplKCkge1xuICByZXR1cm4gMzI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X21heF93b3NpemUgY29uc3Rcbi8vIG1heF9pbnQgLyA0IHNvIHRoYXQgdGhlIGZvbGxvd2luZyBkb2VzIG5vdCBvdmVyZmxvd1xuLy9sZXQgbWF4X3N0cmluZ19sZW5ndGggPSB3b3JkX3NpemUgLyA4ICogbWF4X2FycmF5X2xlbmd0aCAtIDE7O1xuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfbWF4X3dvc2l6ZSgpIHtcbiAgcmV0dXJuICgweDdmZmZmZmZmIC8gNCkgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9vc3R5cGVfdW5peCBjb25zdFxuLy9SZXF1aXJlczogb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3VuaXgoKSB7XG4gIHJldHVybiBvc190eXBlID09PSBcIlVuaXhcIiA/IDEgOiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3dpbjMyIGNvbnN0XG4vL1JlcXVpcmVzOiBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIoKSB7XG4gIHJldHVybiBvc190eXBlID09PSBcIldpbjMyXCIgPyAxIDogMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4gY29uc3Rcbi8vUmVxdWlyZXM6IG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4oKSB7XG4gIHJldHVybiBvc190eXBlID09PSBcIkN5Z3dpblwiID8gMSA6IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X2JhY2tlbmRfdHlwZSBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfYmFja2VuZF90eXBlKCkge1xuICByZXR1cm4gWzAsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJqc19vZl9vY2FtbFwiKV07XG59XG5cbi8vUHJvdmlkZXM6IG9zX3R5cGVcbi8vUmVxdWlyZXM6IGpzb29faXNfd2luMzJcbnZhciBvc190eXBlID0ganNvb19pc193aW4zMiA/IFwiV2luMzJcIiA6IFwiVW5peFwiO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRfY29uZmlnIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19nZXRfY29uZmlnKCkge1xuICByZXR1cm4gWzAsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMob3NfdHlwZSksIDMyLCAwXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfaXNhdHR5XG5mdW5jdGlvbiBjYW1sX3N5c19pc2F0dHkoX2NoYW4pIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV92YXJpYW50XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfdmFyaWFudChfdW5pdCkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9wYXJhbWV0ZXJzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfcGFyYW1ldGVycyhfdW5pdCkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnN0YWxsX3NpZ25hbF9oYW5kbGVyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2luc3RhbGxfc2lnbmFsX2hhbmRsZXIoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfd2FybmluZ3NcbnZhciBjYW1sX3J1bnRpbWVfd2FybmluZ3MgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzXG4vL1JlcXVpcmVzOiBjYW1sX3J1bnRpbWVfd2FybmluZ3NcbmZ1bmN0aW9uIGNhbWxfbWxfZW5hYmxlX3J1bnRpbWVfd2FybmluZ3MoYm9vbCkge1xuICBjYW1sX3J1bnRpbWVfd2FybmluZ3MgPSBib29sO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWRcbi8vUmVxdWlyZXM6IGNhbWxfcnVudGltZV93YXJuaW5nc1xuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWQoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfcnVudGltZV93YXJuaW5ncztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfbmFrZWRfcG9pbnRlcnNfY2hlY2tlZCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9uYWtlZF9wb2ludGVyc19jaGVja2VkKF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3hkZ19kZWZhdWx0c1xuLy9WZXJzaW9uOiA+PSA1LjJcbmZ1bmN0aW9uIGNhbWxfeGRnX2RlZmF1bHRzKF91bml0KSB7XG4gIHJldHVybiAwOyAvLyBlbXB0eSBsaXN0XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2lzX3JlZ3VsYXJfZmlsZVxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2Vcbi8vVmVyc2lvbjogPj0gNS4xXG5mdW5jdGlvbiBjYW1sX3N5c19pc19yZWd1bGFyX2ZpbGUobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByZXR1cm4gcm9vdC5kZXZpY2UuaXNGaWxlKHJvb3QucmVzdCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW9fYnVmZmVyX3NpemVcbnZhciBjYW1sX2lvX2J1ZmZlcl9zaXplID0gNjU1MzY7XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2lvX2J1ZmZlcl9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2lvX2J1ZmZlcl9zaXplXG4vL1ZlcnNpb246ID49IDUuNFxuZnVuY3Rpb24gY2FtbF9zeXNfaW9fYnVmZmVyX3NpemUoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfaW9fYnVmZmVyX3NpemU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3RlbXBfZGlyX25hbWVcbi8vUmVxdWlyZXM6IG9zX3R5cGVcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1ZlcnNpb246ID49IDUuNFxuZnVuY3Rpb24gY2FtbF9zeXNfdGVtcF9kaXJfbmFtZShfdW5pdCkge1xuICBpZiAob3NfdHlwZSA9PT0gXCJXaW4zMlwiKSB7XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHJlcXVpcmUoXCJub2RlOm9zXCIpLnRtcGRpcigpKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoXCJcIik7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfdGVtcF9kaXJfbmFtZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vVmVyc2lvbjogPj0gNS40XG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBjYW1sX3N5c190ZW1wX2Rpcl9uYW1lKF91bml0KSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhcIlwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29udmVydF9zaWduYWxfbnVtYmVyXG4vL1ZlcnNpb246ID49IDUuNFxuZnVuY3Rpb24gY2FtbF9zeXNfY29udmVydF9zaWduYWxfbnVtYmVyKHNpZ25vKSB7XG4gIHJldHVybiBzaWdubztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmV2X2NvbnZlcnRfc2lnbmFsX251bWJlclxuLy9WZXJzaW9uOiA+PSA1LjRcbmZ1bmN0aW9uIGNhbWxfc3lzX3Jldl9jb252ZXJ0X3NpZ25hbF9udW1iZXIoc2lnbm8pIHtcbiAgcmV0dXJuIHNpZ25vO1xufVxuXG4vL0Fsd2F5c1xuLy9SZXF1aXJlczogY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25cbi8vSWY6ICF3YXNtXG5mdW5jdGlvbiBjYW1sX3NldHVwX3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyKCkge1xuICB2YXIgcHJvY2VzcyA9IGdsb2JhbFRoaXMucHJvY2VzcztcbiAgaWYgKHByb2Nlc3M/Lm9uKSB7XG4gICAgcHJvY2Vzcy5vbihcInVuY2F1Z2h0RXhjZXB0aW9uXCIsIGZ1bmN0aW9uIChlcnIsIG9yaWdpbikge1xuICAgICAgY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24oZXJyKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgyKTtcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChnbG9iYWxUaGlzLmFkZEV2ZW50TGlzdGVuZXIpIHtcbiAgICBnbG9iYWxUaGlzLmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIGlmIChldmVudC5lcnJvcikge1xuICAgICAgICBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbihldmVudC5lcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbmNhbWxfc2V0dXBfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIoKTtcbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9lbnZfZmxhZ1xuLy9SZXF1aXJlczoganNvb19zeXNfZ2V0ZW52XG52YXIgY2FtbF9yZWNvcmRfYmFja3RyYWNlX2Vudl9mbGFnID0gRkxBRyhcIndpdGgtanMtZXJyb3JcIik7XG5cbihmdW5jdGlvbiAoKSB7XG4gIHZhciByID0ganNvb19zeXNfZ2V0ZW52KFwiT0NBTUxSVU5QQVJBTVwiKTtcbiAgaWYgKHIgIT09IHVuZGVmaW5lZCkge1xuICAgIHZhciBsID0gci5zcGxpdChcIixcIik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAobFtpXSA9PT0gXCJiXCIpIHtcbiAgICAgICAgY2FtbF9yZWNvcmRfYmFja3RyYWNlX2Vudl9mbGFnID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9IGVsc2UgaWYgKGxbaV0uc3RhcnRzV2l0aChcImI9XCIpKSB7XG4gICAgICAgIGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9lbnZfZmxhZyA9ICtsW2ldLnNsaWNlKDIpO1xuICAgICAgfSBlbHNlIGNvbnRpbnVlO1xuICAgIH1cbiAgfVxufSkoKTtcblxuLy9Qcm92aWRlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX3J1bnRpbWVfZmxhZ1xuLy9SZXF1aXJlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX2Vudl9mbGFnXG52YXIgY2FtbF9yZWNvcmRfYmFja3RyYWNlX3J1bnRpbWVfZmxhZyA9IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9lbnZfZmxhZztcblxuLy9Qcm92aWRlczogY2FtbF9tbF9kZWJ1Z19pbmZvX3N0YXR1cyBjb25zdFxuZnVuY3Rpb24gY2FtbF9tbF9kZWJ1Z19pbmZvX3N0YXR1cygpIHtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2JhY2t0cmFjZV9zdGF0dXNcbi8vUmVxdWlyZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9ydW50aW1lX2ZsYWdcbmZ1bmN0aW9uIGNhbWxfYmFja3RyYWNlX3N0YXR1cyhfdW5pdCkge1xuICByZXR1cm4gY2FtbF9yZWNvcmRfYmFja3RyYWNlX3J1bnRpbWVfZmxhZyA/IDEgOiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9nZXRfZXhjZXB0aW9uX2JhY2t0cmFjZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9nZXRfZXhjZXB0aW9uX2JhY2t0cmFjZSgpIHtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9leGNlcHRpb25fcmF3X2JhY2t0cmFjZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2UoX3VuaXQpIHtcbiAgcmV0dXJuIFswXTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZVxuLy9SZXF1aXJlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX3J1bnRpbWVfZmxhZ1xuZnVuY3Rpb24gY2FtbF9yZWNvcmRfYmFja3RyYWNlKGIpIHtcbiAgY2FtbF9yZWNvcmRfYmFja3RyYWNlX3J1bnRpbWVfZmxhZyA9IGI7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlKCkge1xuICByZXR1cm4gWzBdO1xufVxuLy9Qcm92aWRlczogY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aCgpIHtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90XG5mdW5jdGlvbiBjYW1sX3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90KF9zbG90KSB7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3QoX2J0LCBfaWR4KSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlX3Nsb3Q6IGluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3Jlc3RvcmVfcmF3X2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9yZXN0b3JlX3Jhd19iYWNrdHJhY2UoX2V4biwgX2J0KSB7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2sgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZ2V0X2N1cnJlbnRfY2FsbHN0YWNrKCkge1xuICByZXR1cm4gWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90KF9yYnQpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3RcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9jYWxsX2dlbiAoY29uc3QsIHNoYWxsb3cpXG4vL0lmOiAhZWZmZWN0c1xuLy9XZWFrZGVmXG5mdW5jdGlvbiBjYW1sX2NhbGxfZ2VuKGYsIGFyZ3MpIHtcbiAgdmFyIG4gPSBmLmwgPj0gMCA/IGYubCA6IChmLmwgPSBmLmxlbmd0aCk7XG4gIHZhciBhcmdzTGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBkID0gbiAtIGFyZ3NMZW47XG4gIGlmIChkID09PSAwKSByZXR1cm4gZiguLi5hcmdzKTtcbiAgZWxzZSBpZiAoZCA8IDApIHtcbiAgICB2YXIgZyA9IGYoLi4uYXJncy5zbGljZSgwLCBuKSk7XG4gICAgaWYgKHR5cGVvZiBnICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBnO1xuICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGcsIGFyZ3Muc2xpY2UobikpO1xuICB9IGVsc2Uge1xuICAgIHN3aXRjaCAoZCkge1xuICAgICAgY2FzZSAxOiB7XG4gICAgICAgIHZhciBnID0gZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJnc0xlbiArIDEpO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJnc0xlbjsgaSsrKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgICAgbmFyZ3NbYXJnc0xlbl0gPSB4O1xuICAgICAgICAgIHJldHVybiBmKC4uLm5hcmdzKTtcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDI6IHtcbiAgICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoeCwgeSkge1xuICAgICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgMik7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKyspIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgICBuYXJnc1thcmdzTGVuXSA9IHg7XG4gICAgICAgICAgbmFyZ3NbYXJnc0xlbiArIDFdID0geTtcbiAgICAgICAgICByZXR1cm4gZiguLi5uYXJncyk7XG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICB2YXIgZyA9IGZ1bmN0aW9uICguLi5leHRyYV9hcmdzKSB7XG4gICAgICAgICAgaWYgKGV4dHJhX2FyZ3MubGVuZ3RoID09PSAwKSBleHRyYV9hcmdzID0gW3VuZGVmaW5lZF07XG4gICAgICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZiwgYXJncy5jb25jYXQoZXh0cmFfYXJncykpO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICBnLmwgPSBkO1xuICAgIHJldHVybiBnO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2FsbF9nZW4gKGNvbnN0LCBzaGFsbG93KVxuLy9JZjogZWZmZWN0c1xuLy9JZjogIWRvdWJsZXRyYW5zbGF0ZVxuLy9XZWFrZGVmXG5mdW5jdGlvbiBjYW1sX2NhbGxfZ2VuKGYsIGFyZ3MpIHtcbiAgdmFyIG4gPSBmLmwgPj0gMCA/IGYubCA6IChmLmwgPSBmLmxlbmd0aCk7XG4gIHZhciBhcmdzTGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBkID0gbiAtIGFyZ3NMZW47XG4gIGlmIChkID09PSAwKSB7XG4gICAgcmV0dXJuIGYoLi4uYXJncyk7XG4gIH0gZWxzZSBpZiAoZCA8IDApIHtcbiAgICB2YXIgcmVzdCA9IGFyZ3Muc2xpY2UobiAtIDEpO1xuICAgIHZhciBrID0gYXJnc1thcmdzTGVuIC0gMV07XG4gICAgYXJncyA9IGFyZ3Muc2xpY2UoMCwgbik7XG4gICAgYXJnc1tuIC0gMV0gPSBmdW5jdGlvbiAoZykge1xuICAgICAgaWYgKHR5cGVvZiBnICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBrKGcpO1xuICAgICAgdmFyIGFyZ3MgPSByZXN0LnNsaWNlKCk7XG4gICAgICBhcmdzW2FyZ3MubGVuZ3RoIC0gMV0gPSBrO1xuICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZywgYXJncyk7XG4gICAgfTtcbiAgICByZXR1cm4gZiguLi5hcmdzKTtcbiAgfSBlbHNlIHtcbiAgICBhcmdzTGVuLS07XG4gICAgdmFyIGsgPSBhcmdzW2FyZ3NMZW5dO1xuICAgIHN3aXRjaCAoZCkge1xuICAgICAgY2FzZSAxOiB7XG4gICAgICAgIHZhciBnID0gZnVuY3Rpb24gKHgsIHkpIHtcbiAgICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJnc0xlbiArIDIpO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJnc0xlbjsgaSsrKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgICAgbmFyZ3NbYXJnc0xlbl0gPSB4O1xuICAgICAgICAgIG5hcmdzW2FyZ3NMZW4gKyAxXSA9IHk7XG4gICAgICAgICAgcmV0dXJuIGYoLi4ubmFyZ3MpO1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgMjoge1xuICAgICAgICB2YXIgZyA9IGZ1bmN0aW9uICh4LCB5LCB6KSB7XG4gICAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3NMZW4gKyAzKTtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3NMZW47IGkrKykgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICAgIG5hcmdzW2FyZ3NMZW5dID0geDtcbiAgICAgICAgICBuYXJnc1thcmdzTGVuICsgMV0gPSB5O1xuICAgICAgICAgIG5hcmdzW2FyZ3NMZW4gKyAyXSA9IHo7XG4gICAgICAgICAgcmV0dXJuIGYoLi4ubmFyZ3MpO1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgYXJncy5sZW5ndGggPSBhcmdzTGVuO1xuICAgICAgICB2YXIgZyA9IGZ1bmN0aW9uICguLi5leHRyYV9hcmdzKSB7XG4gICAgICAgICAgaWYgKGV4dHJhX2FyZ3MubGVuZ3RoID09PSAwKSBleHRyYV9hcmdzID0gW3VuZGVmaW5lZF07XG4gICAgICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZiwgYXJncy5jb25jYXQoZXh0cmFfYXJncykpO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICBnLmwgPSBkICsgMTtcbiAgICByZXR1cm4gayhnKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxfZ2VuX2Nwc1xuLy9SZXF1aXJlczogY2FtbF9jYWxsX2dlblxuLy9JZjogZWZmZWN0c1xuLy9JZjogIWRvdWJsZXRyYW5zbGF0ZVxuLy9XZWFrZGVmXG52YXIgY2FtbF9jYWxsX2dlbl9jcHMgPSBjYW1sX2NhbGxfZ2VuO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxfZ2VuX3R1cGxlIChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfY3BzX2Nsb3N1cmVcbi8vSWY6IGVmZmVjdHNcbi8vSWY6IGRvdWJsZXRyYW5zbGF0ZVxuLy9XZWFrZGVmXG52YXIgY2FtbF9jYWxsX2dlbl90dXBsZSA9IChmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIGNhbWxfY2FsbF9nZW5fZGlyZWN0KGYsIGFyZ3MpIHtcbiAgICB2YXIgbiA9IGYubCA+PSAwID8gZi5sIDogKGYubCA9IGYubGVuZ3RoKTtcbiAgICB2YXIgYXJnc0xlbiA9IGFyZ3MubGVuZ3RoO1xuICAgIHZhciBkID0gbiAtIGFyZ3NMZW47XG4gICAgaWYgKGQgPT09IDApIHtcbiAgICAgIHJldHVybiBmLmFwcGx5KG51bGwsIGFyZ3MpO1xuICAgIH0gZWxzZSBpZiAoZCA8IDApIHtcbiAgICAgIHZhciBnID0gZiguLi5hcmdzLnNsaWNlKDAsIG4pKTtcbiAgICAgIGlmICh0eXBlb2YgZyAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gZztcbiAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuX2RpcmVjdChnLCBhcmdzLnNsaWNlKG4pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRklYTUU6IFJlc3RvcmUgdGhlIG9wdGltaXphdGlvbiBvZiBoYW5kbGluZyBzcGVjaWFsbHkgZCA9IDEgb3IgMlxuICAgICAgdmFyIGFyZ3NfID0gYXJncy5zbGljZSgpO1xuICAgICAgYXJnc18ubGVuZ3RoID0gYXJnc0xlbjtcbiAgICAgIHZhciByZXQgPSBjYW1sX2Nwc19jbG9zdXJlKFxuICAgICAgICBmdW5jdGlvbiAoLi4uZXh0cmFfYXJncykge1xuICAgICAgICAgIGlmIChleHRyYV9hcmdzLmxlbmd0aCA9PT0gMCkgZXh0cmFfYXJncyA9IFt1bmRlZmluZWRdO1xuICAgICAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuX2RpcmVjdChmLCBhcmdzLmNvbmNhdChleHRyYV9hcmdzKSk7XG4gICAgICAgIH0sXG4gICAgICAgIGZ1bmN0aW9uICguLi5leHRyYV9hcmdzKSB7XG4gICAgICAgICAgaWYgKGV4dHJhX2FyZ3MubGVuZ3RoID09PSAwKSBleHRyYV9hcmdzID0gW3VuZGVmaW5lZF07XG4gICAgICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW5fY3BzKGYsIGFyZ3NfLmNvbmNhdChleHRyYV9hcmdzKSk7XG4gICAgICAgIH0sXG4gICAgICApO1xuICAgICAgcmV0LmwgPSBkO1xuICAgICAgcmV0LmNwcy5sID0gZCArIDE7XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBjYW1sX2NhbGxfZ2VuX2NwcyhmLCBhcmdzKSB7XG4gICAgaWYgKCFmLmNwcykge1xuICAgICAgdmFyIGsgPSBhcmdzLnBvcCgpO1xuICAgICAgcmV0dXJuIGsoY2FtbF9jYWxsX2dlbl9kaXJlY3QoZiwgYXJncykpO1xuICAgIH1cbiAgICB2YXIgbiA9IGYuY3BzLmwgPj0gMCA/IGYuY3BzLmwgOiAoZi5jcHMubCA9IGYuY3BzLmxlbmd0aCk7XG4gICAgdmFyIGFyZ3NMZW4gPSBhcmdzLmxlbmd0aDtcbiAgICB2YXIgZCA9IG4gLSBhcmdzTGVuO1xuICAgIGlmIChkID09PSAwKSB7XG4gICAgICByZXR1cm4gZi5jcHMuYXBwbHkobnVsbCwgYXJncyk7XG4gICAgfSBlbHNlIGlmIChkIDwgMCkge1xuICAgICAgdmFyIHJlc3QgPSBhcmdzLnNsaWNlKG4gLSAxKTtcbiAgICAgIHZhciBrID0gYXJnc1thcmdzTGVuIC0gMV07XG4gICAgICBhcmdzID0gYXJncy5zbGljZSgwLCBuKTtcbiAgICAgIGFyZ3NbbiAtIDFdID0gZnVuY3Rpb24gKGcpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSByZXN0LnNsaWNlKCk7XG4gICAgICAgIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9IGs7XG4gICAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuX2NwcyhnLCBhcmdzKTtcbiAgICAgIH07XG4gICAgICByZXR1cm4gZi5jcHMuYXBwbHkobnVsbCwgYXJncyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFyZ3NMZW4tLTtcbiAgICAgIHZhciBhcmdzXyA9IGFyZ3Muc2xpY2UoKTtcbiAgICAgIGFyZ3NfLmxlbmd0aCA9IGFyZ3NMZW47XG4gICAgICB2YXIgY29udCA9IGNhbWxfY3BzX2Nsb3N1cmUoXG4gICAgICAgIGZ1bmN0aW9uICguLi5leHRyYV9hcmdzKSB7XG4gICAgICAgICAgaWYgKGV4dHJhX2FyZ3MubGVuZ3RoID09PSAwKSBleHRyYV9hcmdzID0gW3VuZGVmaW5lZF07XG4gICAgICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW5fZGlyZWN0KGYsIGFyZ3NfLmNvbmNhdChleHRyYV9hcmdzKSk7XG4gICAgICAgIH0sXG4gICAgICAgIGZ1bmN0aW9uICguLi5leHRyYV9hcmdzKSB7XG4gICAgICAgICAgaWYgKGV4dHJhX2FyZ3MubGVuZ3RoID09PSAwKSBleHRyYV9hcmdzID0gW3VuZGVmaW5lZF07XG4gICAgICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW5fY3BzKGYsIGFyZ3NfLmNvbmNhdChleHRyYV9hcmdzKSk7XG4gICAgICAgIH0sXG4gICAgICApO1xuICAgICAgdmFyIGsgPSBhcmdzW2FyZ3NMZW5dO1xuICAgICAgY29udC5sID0gZDtcbiAgICAgIGNvbnQuY3BzLmwgPSBkICsgMTtcbiAgICAgIHJldHVybiBrKGNvbnQpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gW2NhbWxfY2FsbF9nZW5fZGlyZWN0LCBjYW1sX2NhbGxfZ2VuX2Nwc107XG59KSgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxfZ2VuXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxfZ2VuX3R1cGxlXG4vL0lmOiBlZmZlY3RzXG4vL0lmOiBkb3VibGV0cmFuc2xhdGVcbi8vV2Vha2RlZlxudmFyIGNhbWxfY2FsbF9nZW4gPSBjYW1sX2NhbGxfZ2VuX3R1cGxlWzBdO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxfZ2VuX2Nwc1xuLy9SZXF1aXJlczogY2FtbF9jYWxsX2dlbl90dXBsZVxuLy9JZjogZWZmZWN0c1xuLy9JZjogZG91YmxldHJhbnNsYXRlXG4vL1dlYWtkZWZcbnZhciBjYW1sX2NhbGxfZ2VuX2NwcyA9IGNhbWxfY2FsbF9nZW5fdHVwbGVbMV07XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmFtZWRfdmFsdWVzXG52YXIgY2FtbF9uYW1lZF92YWx1ZXMgPSB7fTtcblxuLy9Qcm92aWRlczogY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSAoY29uc3QsbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlKG5tLCB2KSB7XG4gIGNhbWxfbmFtZWRfdmFsdWVzW2NhbWxfanNieXRlc19vZl9zdHJpbmcobm0pXSA9IHY7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25hbWVkX3ZhbHVlXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlc1xuZnVuY3Rpb24gY2FtbF9uYW1lZF92YWx1ZShubSkge1xuICByZXR1cm4gY2FtbF9uYW1lZF92YWx1ZXNbbm1dO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dsb2JhbF9kYXRhXG52YXIgY2FtbF9nbG9iYWxfZGF0YSA9IFswXTtcblxuLy9Qcm92aWRlczogY2FtbF9idWlsZF9zeW1ib2xzXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9idWlsZF9zeW1ib2xzKHN5bWIpIHtcbiAgdmFyIHIgPSB7fTtcbiAgdmFyIG1heCA9IC0xO1xuICBpZiAoc3ltYikge1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgc3ltYi5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGlkeCA9IHN5bWJbaV1bMl07XG4gICAgICBtYXggPSBNYXRoLm1heChtYXgsIGlkeCk7XG4gICAgICByW2NhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHN5bWJbaV1bMV0pXSA9IGlkeDtcbiAgICB9XG4gIH1cbiAgci5uZXh0X2lkeCA9IG1heCArIDE7XG4gIHJldHVybiByO1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX3RvcGxldmVsX3JlbG9jXG52YXIganNvb190b3BsZXZlbF9yZWxvYyA9IHVuZGVmaW5lZDtcblxuLy9Qcm92aWRlczogY2FtbF9yZWdpc3Rlcl9nbG9iYWwgKGNvbnN0LCBzaGFsbG93LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfY2FsbGJhY2ssIGNhbWxfYnVpbGRfc3ltYm9sc1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczoganNvb190b3BsZXZlbF9yZWxvY1xuZnVuY3Rpb24gY2FtbF9yZWdpc3Rlcl9nbG9iYWwobiwgdiwgbmFtZV9vcHQpIHtcbiAgaWYgKG5hbWVfb3B0KSB7XG4gICAgdmFyIG5hbWUgPSBuYW1lX29wdDtcbiAgICBpZiAoanNvb190b3BsZXZlbF9yZWxvYykge1xuICAgICAgbiA9IGNhbWxfY2FsbGJhY2soanNvb190b3BsZXZlbF9yZWxvYywgW25hbWVdKTtcbiAgICB9IGVsc2UgaWYgKGNhbWxfZ2xvYmFsX2RhdGEuc3ltYm9scykge1xuICAgICAgaWYgKCFjYW1sX2dsb2JhbF9kYXRhLnN5bWlkeCkge1xuICAgICAgICBjYW1sX2dsb2JhbF9kYXRhLnN5bWlkeCA9IGNhbWxfYnVpbGRfc3ltYm9scyhjYW1sX2dsb2JhbF9kYXRhLnN5bWJvbHMpO1xuICAgICAgfVxuICAgICAgdmFyIG5pZCA9IGNhbWxfZ2xvYmFsX2RhdGEuc3ltaWR4W25hbWVdO1xuICAgICAgaWYgKG5pZCA+PSAwKSBuID0gbmlkO1xuICAgICAgZWxzZSB7XG4gICAgICAgIC8vIFRoZSB1bml0IGlzIHVua25vd24sIHRoaXMgY2FuIGhhcHBlbiB3aGVuIGR5bmxpbmtpbmcgYSBwcmVjb21waWxlZCBqcyxcbiAgICAgICAgLy8gbGV0J3MgYWxsb2NhdGUgYSBmcmVzaCBpZHguXG4gICAgICAgIHZhciBuID0gY2FtbF9nbG9iYWxfZGF0YS5zeW1pZHgubmV4dF9pZHgrKztcbiAgICAgICAgY2FtbF9nbG9iYWxfZGF0YS5zeW1pZHhbbmFtZV0gPSBuO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBjYW1sX2dsb2JhbF9kYXRhW24gKyAxXSA9IHY7XG4gIGlmIChuYW1lX29wdCkgY2FtbF9nbG9iYWxfZGF0YVtuYW1lX29wdF0gPSB2O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9nbG9iYWxfZGF0YSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2dldF9nbG9iYWxfZGF0YShfdW5pdCkge1xuICByZXR1cm4gY2FtbF9nbG9iYWxfZGF0YTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19wcmludGFibGUgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9pc19wcmludGFibGUoYykge1xuICByZXR1cm4gKyhjID4gMzEgJiYgYyA8IDEyNyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWF5YmVfcHJpbnRfc3RhdHNcbmZ1bmN0aW9uIGNhbWxfbWF5YmVfcHJpbnRfc3RhdHMoX3VuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBsaWJyYXJ5XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSnNsaWJcblxuLy9Qcm92aWRlczogY2FtbF9qc19wdXJlX2V4cHIgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfcHVyZV9leHByKGYpIHtcbiAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgWzBdKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19zZXQgKG11dGFibGUsIGNvbnN0LCBtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9qc19zZXQobywgZiwgdikge1xuICBvW2ZdID0gdjtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2dldCAobXV0YWJsZSwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2dldChvLCBmKSB7XG4gIHJldHVybiBvW2ZdO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19kZWxldGUgKG11dGFibGUsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19kZWxldGUobywgZikge1xuICBkZWxldGUgb1tmXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfaW5zdGFuY2VvZiAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19pbnN0YW5jZW9mKG8sIGMpIHtcbiAgcmV0dXJuIG8gaW5zdGFuY2VvZiBjID8gMSA6IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdHlwZW9mIChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfdHlwZW9mKG8pIHtcbiAgcmV0dXJuIHR5cGVvZiBvO1xufVxuXG4vL1Byb3ZpZGVzOmNhbWxfdHJhbXBvbGluZVxuZnVuY3Rpb24gY2FtbF90cmFtcG9saW5lKHJlcykge1xuICB2YXIgYyA9IDE7XG4gIHdoaWxlIChyZXM/Lmpvb190cmFtcCkge1xuICAgIHJlcyA9IHJlcy5qb29fdHJhbXAuYXBwbHkobnVsbCwgcmVzLmpvb19hcmdzKTtcbiAgICBjKys7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczpjYW1sX3RyYW1wb2xpbmVfcmV0dXJuXG5mdW5jdGlvbiBjYW1sX3RyYW1wb2xpbmVfcmV0dXJuKGYsIGFyZ3MsIGRpcmVjdCkge1xuICByZXR1cm4geyBqb29fdHJhbXA6IGYsIGpvb19hcmdzOiBhcmdzLCBqb29fZGlyZWN0OiBkaXJlY3QgfTtcbn1cblxuLy9Qcm92aWRlczpjYW1sX3N0YWNrX2RlcHRoXG4vL0lmOiBlZmZlY3RzXG52YXIgY2FtbF9zdGFja19kZXB0aCA9IDA7XG5cbi8vUHJvdmlkZXM6Y2FtbF9zdGFja19jaGVja19kZXB0aFxuLy9JZjogZWZmZWN0c1xuLy9SZXF1aXJlczpjYW1sX3N0YWNrX2RlcHRoXG5mdW5jdGlvbiBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoKCkge1xuICByZXR1cm4gLS1jYW1sX3N0YWNrX2RlcHRoID4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jYWxsYmFja1xuLy9JZjogIWVmZmVjdHNcbi8vUmVxdWlyZXM6Y2FtbF9jYWxsX2dlblxudmFyIGNhbWxfY2FsbGJhY2sgPSBjYW1sX2NhbGxfZ2VuO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxiYWNrXG4vL0lmOiBlZmZlY3RzXG4vL0lmOiAhZG91YmxldHJhbnNsYXRlXG4vL1JlcXVpcmVzOiBjYW1sX3N0YWNrX2RlcHRoLCBjYW1sX2NhbGxfZ2VuLCBjYW1sX3dyYXBfZXhjZXB0aW9uXG4vL1JlcXVpcmVzOiBjYW1sX2N1cnJlbnRfc3RhY2tcbi8vQWxpYXM6IGNhbWxfY3BzX3RyYW1wb2xpbmVcbmZ1bmN0aW9uIGNhbWxfY2FsbGJhY2soZiwgYXJncykge1xuICB2YXIgc2F2ZWRfc3RhY2tfZGVwdGggPSBjYW1sX3N0YWNrX2RlcHRoO1xuICB2YXIgc2F2ZWRfY3VycmVudF9zdGFjayA9IGNhbWxfY3VycmVudF9zdGFjaztcbiAgdHJ5IHtcbiAgICBjYW1sX2N1cnJlbnRfc3RhY2sgPSB7IGs6IDAsIHg6IDAsIGg6IDAsIGU6IDAgfTtcbiAgICB2YXIgcmVzID0ge1xuICAgICAgam9vX3RyYW1wOiBmLFxuICAgICAgam9vX2FyZ3M6IGFyZ3MuY29uY2F0KGZ1bmN0aW9uICh4KSB7XG4gICAgICAgIHJldHVybiB4O1xuICAgICAgfSksXG4gICAgfTtcbiAgICBkbyB7XG4gICAgICBjYW1sX3N0YWNrX2RlcHRoID0gNDA7XG4gICAgICB0cnkge1xuICAgICAgICByZXMgPSBjYW1sX2NhbGxfZ2VuKHJlcy5qb29fdHJhbXAsIHJlcy5qb29fYXJncyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8qIEhhbmRsZSBleGNlcHRpb24gY29taW5nIGZyb20gSmF2YVNjcmlwdCBvciBmcm9tIHRoZSBydW50aW1lLiAqL1xuICAgICAgICBpZiAoIWNhbWxfY3VycmVudF9zdGFjay54KSB0aHJvdyBlO1xuICAgICAgICB2YXIgaGFuZGxlciA9IGNhbWxfY3VycmVudF9zdGFjay54Lmg7XG4gICAgICAgIGNhbWxfY3VycmVudF9zdGFjay54ID0gY2FtbF9jdXJyZW50X3N0YWNrLngudDtcbiAgICAgICAgcmVzID0geyBqb29fdHJhbXA6IGhhbmRsZXIsIGpvb19hcmdzOiBbY2FtbF93cmFwX2V4Y2VwdGlvbihlKV0gfTtcbiAgICAgIH1cbiAgICB9IHdoaWxlIChyZXM/Lmpvb19hcmdzKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBjYW1sX3N0YWNrX2RlcHRoID0gc2F2ZWRfc3RhY2tfZGVwdGg7XG4gICAgY2FtbF9jdXJyZW50X3N0YWNrID0gc2F2ZWRfY3VycmVudF9zdGFjaztcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxiYWNrXG4vL0lmOiBlZmZlY3RzXG4vL0lmOiBkb3VibGV0cmFuc2xhdGVcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbF9nZW5cbnZhciBjYW1sX2NhbGxiYWNrID0gY2FtbF9jYWxsX2dlbjtcblxuLy9Qcm92aWRlczogY2FtbF9pc19qc1xuZnVuY3Rpb24gY2FtbF9pc19qcygpIHtcbiAgcmV0dXJuIDE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNvb19mbGFnc191c2VfanNfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZyhfdW5pdCkge1xuICByZXR1cm4gRkxBRyhcInVzZS1qcy1zdHJpbmdcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNvb19mbGFnc19lZmZlY3RzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc29vX2ZsYWdzX2VmZmVjdHMoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKENPTkZJRyhcImVmZmVjdHNcIikpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dyYXBfZXhjZXB0aW9uIGNvbnN0IChtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YSxjYW1sX3N0cmluZ19vZl9qc3N0cmluZyxjYW1sX25hbWVkX3ZhbHVlXG5mdW5jdGlvbiBjYW1sX3dyYXBfZXhjZXB0aW9uKGUpIHtcbiAgaWYgKEZMQUcoXCJleGN3cmFwXCIpKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZSkpIHJldHVybiBlO1xuICAgIHZhciBleG47XG4gICAgLy9TdGFja19vdmVyZmxvdzogY2hyb21lLCBzYWZhcmlcbiAgICBpZiAoXG4gICAgICBnbG9iYWxUaGlzLlJhbmdlRXJyb3IgJiZcbiAgICAgIGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLlJhbmdlRXJyb3IgJiZcbiAgICAgIGUubWVzc2FnZSAmJlxuICAgICAgZS5tZXNzYWdlLm1hdGNoKC9tYXhpbXVtIGNhbGwgc3RhY2svaSlcbiAgICApXG4gICAgICBleG4gPSBjYW1sX2dsb2JhbF9kYXRhLlN0YWNrX292ZXJmbG93O1xuICAgIC8vU3RhY2tfb3ZlcmZsb3c6IGZpcmVmb3hcbiAgICBlbHNlIGlmIChcbiAgICAgIGdsb2JhbFRoaXMuSW50ZXJuYWxFcnJvciAmJlxuICAgICAgZSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuSW50ZXJuYWxFcnJvciAmJlxuICAgICAgZS5tZXNzYWdlICYmXG4gICAgICBlLm1lc3NhZ2UubWF0Y2goL3RvbyBtdWNoIHJlY3Vyc2lvbi9pKVxuICAgIClcbiAgICAgIGV4biA9IGNhbWxfZ2xvYmFsX2RhdGEuU3RhY2tfb3ZlcmZsb3c7XG4gICAgLy9XcmFwIEVycm9yIGluIEpzLkVycm9yIGV4Y2VwdGlvblxuICAgIGVsc2UgaWYgKGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkVycm9yICYmIGNhbWxfbmFtZWRfdmFsdWUoXCJqc0Vycm9yXCIpKVxuICAgICAgZXhuID0gWzAsIGNhbWxfbmFtZWRfdmFsdWUoXCJqc0Vycm9yXCIpLCBlXTtcbiAgICAvL2ZhbGxiYWNrOiB3cmFwcGVkIGluIEZhaWx1cmVcbiAgICBlbHNlXG4gICAgICBleG4gPSBbMCwgY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhTdHJpbmcoZSkpXTtcbiAgICAvLyBXZSBhbHJlYWR5IGhhdmUgYW4gZXJyb3IgYXQgaGFuZCwgbGV0J3MgdXNlIGl0LlxuICAgIGlmIChlIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5FcnJvcikgZXhuLmpzX2Vycm9yID0gZTtcbiAgICByZXR1cm4gZXhuO1xuICB9IGVsc2UgcmV0dXJuIGU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZVxuLy9SZXF1aXJlczogY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9lbnZfZmxhZ1xuLy9SZXF1aXJlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX3J1bnRpbWVfZmxhZ1xuZnVuY3Rpb24gY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlKGV4biwgZm9yY2UpIHtcbiAgLy8gQmFja3RyYWNlcyBhcmUgdmVyeSBleHBlbnNpdmUsIHdlIG9ubHkgZW5hYmxlIHRoZW0gd2hlbiBleHBsaWNpdGx5IHJlcXVlc3RlZFxuICAvLyBhdCBjb21waWxlLXRpbWUgKC0tZW5hYmxlIHdpdGgtanMtZXJyb3IpIG9yIGF0IHN0YXJ0dXAgd2l0aCBPQ0FNTFJVTlBBUkFNPWI9MS5cbiAgLy8gTGlicmFyaWVzIHN1Y2ggYXMgQmFzZSB1bmNvbmRpdGlvbmFsbHkgZW5hYmxlIGJhY2t0cmFjZXMgKHByb2dyYW1tYXRpY2FsbHkpIGJ1dFxuICAvLyBpdCdzIHdheSB0byBzbG93LiBIZXJlLCB3ZSBmb3JjZSB0aGUgZW5kLXVzZXIgdG8gb3B0LWluIHRvIGJhY2t0cmFjZXMuXG4gIGlmIChjYW1sX3JlY29yZF9iYWNrdHJhY2VfZW52X2ZsYWcgJiYgY2FtbF9yZWNvcmRfYmFja3RyYWNlX3J1bnRpbWVfZmxhZylcbiAgICByZXR1cm4gY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UoZXhuLCBmb3JjZSk7XG4gIGVsc2UgcmV0dXJuIGV4bjtcbn1cblxuLy8gRXhwZXJpbWVudGFsXG4vL1Byb3ZpZGVzOiBjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UoZXhuLCBmb3JjZSkge1xuICAvL25ldmVyIHJlcmFpc2UgZm9yIGNvbnN0YW50IGV4blxuICBpZiAoIWV4bi5qc19lcnJvciB8fCBmb3JjZSB8fCBleG5bMF0gPT09IDI0OClcbiAgICBleG4uanNfZXJyb3IgPSBuZXcgZ2xvYmFsVGhpcy5FcnJvcihcIkpzIGV4Y2VwdGlvbiBjb250YWluaW5nIGJhY2t0cmFjZVwiKTtcbiAgcmV0dXJuIGV4bjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2pzX2Vycm9yX29wdGlvbl9vZl9leGNlcHRpb24oZXhuKSB7XG4gIGlmIChleG4uanNfZXJyb3IpIHtcbiAgICByZXR1cm4gWzAsIGV4bi5qc19lcnJvcl07XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdGhyb3dfanNfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX3Rocm93X2pzX2V4Y2VwdGlvbihleG4pIHtcbiAgdGhyb3cgZXhuO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Zyb21fYm9vbCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fYm9vbCh4KSB7XG4gIHJldHVybiAhIXg7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2Jvb2wgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc190b19ib29sKHgpIHtcbiAgcmV0dXJuICt4O1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX2Zsb2F0IGNvbnN0IChjb25zdClcbi8vQWxpYXM6IGNhbWxfanNfZnJvbV9pbnQzMlxuLy9BbGlhczogY2FtbF9qc19mcm9tX25hdGl2ZWludFxuZnVuY3Rpb24gY2FtbF9qc19mcm9tX2Zsb2F0KHgpIHtcbiAgcmV0dXJuIHg7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2Zsb2F0IGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfdG9fZmxvYXQoeCkge1xuICByZXR1cm4geDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9faW50MzIgY29uc3QgKGNvbnN0KVxuLy9BbGlhczogY2FtbF9qc190b19uYXRpdmVpbnRcbmZ1bmN0aW9uIGNhbWxfanNfdG9faW50MzIoeCkge1xuICByZXR1cm4geCB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9hcnJheSBtdXRhYmxlIChzaGFsbG93KVxuZnVuY3Rpb24gY2FtbF9qc19mcm9tX2FycmF5KGEpIHtcbiAgcmV0dXJuIGEuc2xpY2UoMSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2FycmF5IG11dGFibGUgKHNoYWxsb3cpXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2FycmF5KGEpIHtcbiAgdmFyIGxlbiA9IGEubGVuZ3RoO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4gKyAxKTtcbiAgYlswXSA9IDA7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGJbaSArIDFdID0gYVtpXTtcbiAgcmV0dXJuIGI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGlzdF9vZl9qc19hcnJheSBjb25zdCAobXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfbGlzdF9vZl9qc19hcnJheShhKSB7XG4gIHZhciBsID0gMDtcbiAgZm9yICh2YXIgaSA9IGEubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgZSA9IGFbaV07XG4gICAgbCA9IFswLCBlLCBsXTtcbiAgfVxuICByZXR1cm4gbDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9saXN0X3RvX2pzX2FycmF5IGNvbnN0IChtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9saXN0X3RvX2pzX2FycmF5KGwpIHtcbiAgdmFyIGEgPSBbXTtcbiAgZm9yICg7IGwgIT09IDA7IGwgPSBsWzJdKSB7XG4gICAgYS5wdXNoKGxbMV0pO1xuICB9XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3ZhciBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc192YXIoeCkge1xuICB2YXIgeCA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHgpO1xuICAvL0NoZWNrcyB0aGF0IHggaGFzIHRoZSBmb3JtIGlkZW50Wy5pZGVudF0qXG4gIGlmICgheC5tYXRjaCgvXlthLXpBLVpfJF1bYS16QS1aXyQwLTldKihcXC5bYS16QS1aXyRdW2EtekEtWl8kMC05XSopKiQvKSkge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAnY2FtbF9qc192YXI6IFwiJyArXG4gICAgICAgIHggK1xuICAgICAgICAnXCIgaXMgbm90IGEgdmFsaWQgSmF2YVNjcmlwdCB2YXJpYWJsZS4gY29udGludWluZyAuLicsXG4gICAgKTtcbiAgICAvL2NvbnNvbGUuZXJyb3IoXCJKcy5VbnNhZmUuZXZhbF9zdHJpbmdcIilcbiAgfVxuICAvLyBiaW9tZS1pZ25vcmUgbGludC9zZWN1cml0eS9ub0dsb2JhbEV2YWw6XG4gIHJldHVybiBldmFsPy4oeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2NhbGwgKGNvbnN0LCBtdXRhYmxlLCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2pzX2NhbGwoZiwgbywgYXJncykge1xuICByZXR1cm4gZi5hcHBseShvLCBjYW1sX2pzX2Zyb21fYXJyYXkoYXJncykpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19mdW5fY2FsbCAoY29uc3QsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfanNfZnVuX2NhbGwoZiwgYSkge1xuICBzd2l0Y2ggKGEubGVuZ3RoKSB7XG4gICAgY2FzZSAxOlxuICAgICAgcmV0dXJuIGYoKTtcbiAgICBjYXNlIDI6XG4gICAgICByZXR1cm4gZihhWzFdKTtcbiAgICBjYXNlIDM6XG4gICAgICByZXR1cm4gZihhWzFdLCBhWzJdKTtcbiAgICBjYXNlIDQ6XG4gICAgICByZXR1cm4gZihhWzFdLCBhWzJdLCBhWzNdKTtcbiAgICBjYXNlIDU6XG4gICAgICByZXR1cm4gZihhWzFdLCBhWzJdLCBhWzNdLCBhWzRdKTtcbiAgICBjYXNlIDY6XG4gICAgICByZXR1cm4gZihhWzFdLCBhWzJdLCBhWzNdLCBhWzRdLCBhWzVdKTtcbiAgICBjYXNlIDc6XG4gICAgICByZXR1cm4gZihhWzFdLCBhWzJdLCBhWzNdLCBhWzRdLCBhWzVdLCBhWzZdKTtcbiAgICBjYXNlIDg6XG4gICAgICByZXR1cm4gZihhWzFdLCBhWzJdLCBhWzNdLCBhWzRdLCBhWzVdLCBhWzZdLCBhWzddKTtcbiAgfVxuICByZXR1cm4gZi5hcHBseShudWxsLCBjYW1sX2pzX2Zyb21fYXJyYXkoYSkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19tZXRoX2NhbGwgKG11dGFibGUsIGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19tZXRoX2NhbGwobywgZiwgYXJncykge1xuICByZXR1cm4gb1tjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhmKV0uYXBwbHkobywgY2FtbF9qc19mcm9tX2FycmF5KGFyZ3MpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfbmV3IChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19uZXcoYywgYSkge1xuICBzd2l0Y2ggKGEubGVuZ3RoKSB7XG4gICAgY2FzZSAxOlxuICAgICAgcmV0dXJuIG5ldyBjKCk7XG4gICAgY2FzZSAyOlxuICAgICAgcmV0dXJuIG5ldyBjKGFbMV0pO1xuICAgIGNhc2UgMzpcbiAgICAgIHJldHVybiBuZXcgYyhhWzFdLCBhWzJdKTtcbiAgICBjYXNlIDQ6XG4gICAgICByZXR1cm4gbmV3IGMoYVsxXSwgYVsyXSwgYVszXSk7XG4gICAgY2FzZSA1OlxuICAgICAgcmV0dXJuIG5ldyBjKGFbMV0sIGFbMl0sIGFbM10sIGFbNF0pO1xuICAgIGNhc2UgNjpcbiAgICAgIHJldHVybiBuZXcgYyhhWzFdLCBhWzJdLCBhWzNdLCBhWzRdLCBhWzVdKTtcbiAgICBjYXNlIDc6XG4gICAgICByZXR1cm4gbmV3IGMoYVsxXSwgYVsyXSwgYVszXSwgYVs0XSwgYVs1XSwgYVs2XSk7XG4gICAgY2FzZSA4OlxuICAgICAgcmV0dXJuIG5ldyBjKGFbMV0sIGFbMl0sIGFbM10sIGFbNF0sIGFbNV0sIGFbNl0sIGFbN10pO1xuICB9XG4gIGZ1bmN0aW9uIEYoKSB7XG4gICAgcmV0dXJuIGMuYXBwbHkodGhpcywgY2FtbF9qc19mcm9tX2FycmF5KGEpKTtcbiAgfVxuICBGLnByb3RvdHlwZSA9IGMucHJvdG90eXBlO1xuICByZXR1cm4gbmV3IEYoKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfb2pzX25ld19hcnIgKGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX29qc19uZXdfYXJyKGMsIGEpIHtcbiAgc3dpdGNoIChhLmxlbmd0aCkge1xuICAgIGNhc2UgMDpcbiAgICAgIHJldHVybiBuZXcgYygpO1xuICAgIGNhc2UgMTpcbiAgICAgIHJldHVybiBuZXcgYyhhWzBdKTtcbiAgICBjYXNlIDI6XG4gICAgICByZXR1cm4gbmV3IGMoYVswXSwgYVsxXSk7XG4gICAgY2FzZSAzOlxuICAgICAgcmV0dXJuIG5ldyBjKGFbMF0sIGFbMV0sIGFbMl0pO1xuICAgIGNhc2UgNDpcbiAgICAgIHJldHVybiBuZXcgYyhhWzBdLCBhWzFdLCBhWzJdLCBhWzNdKTtcbiAgICBjYXNlIDU6XG4gICAgICByZXR1cm4gbmV3IGMoYVswXSwgYVsxXSwgYVsyXSwgYVszXSwgYVs0XSk7XG4gICAgY2FzZSA2OlxuICAgICAgcmV0dXJuIG5ldyBjKGFbMF0sIGFbMV0sIGFbMl0sIGFbM10sIGFbNF0sIGFbNV0pO1xuICAgIGNhc2UgNzpcbiAgICAgIHJldHVybiBuZXcgYyhhWzBdLCBhWzFdLCBhWzJdLCBhWzNdLCBhWzRdLCBhWzVdLCBhWzZdKTtcbiAgfVxuICBmdW5jdGlvbiBGKCkge1xuICAgIHJldHVybiBjLmFwcGx5KHRoaXMsIGEpO1xuICB9XG4gIEYucHJvdG90eXBlID0gYy5wcm90b3R5cGU7XG4gIHJldHVybiBuZXcgRigpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9jYWxsYmFjayhmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgYXJncyA9IFt1bmRlZmluZWRdO1xuICAgIH1cbiAgICB2YXIgcmVzID0gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTtcbiAgICByZXR1cm4gcmVzIGluc3RhbmNlb2YgRnVuY3Rpb24gPyBjYW1sX2pzX3dyYXBfY2FsbGJhY2socmVzKSA6IHJlcztcbiAgfTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50c1xuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50cyhmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIFthcmdzXSk7XG4gIH07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0KGFyaXR5LCBmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgIGFyZ3MubGVuZ3RoID0gYXJpdHk7XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgYXJncyk7XG4gIH07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfdW5zYWZlIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2ssIGNhbWxfanNfZnVuY3Rpb25fYXJpdHlcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmUoZikge1xuICByZXR1cm4gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICB2YXIgbGVuID0gY2FtbF9qc19mdW5jdGlvbl9hcml0eShmKTtcbiAgICBhcmdzLmxlbmd0aCA9IGxlbjtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTtcbiAgfTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2ssIGNhbWxfanNfd3JhcF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2soZikge1xuICByZXR1cm4gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICBhcmdzLnVuc2hpZnQodGhpcyk7XG4gICAgdmFyIHJlcyA9IGNhbWxfY2FsbGJhY2soZiwgYXJncyk7XG4gICAgcmV0dXJuIHJlcyBpbnN0YW5jZW9mIEZ1bmN0aW9uID8gY2FtbF9qc193cmFwX2NhbGxiYWNrKHJlcykgOiByZXM7XG4gIH07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHMgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgW3RoaXMsIGFyZ3NdKTtcbiAgfTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0KGFyaXR5LCBmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgIGFyZ3MubGVuZ3RoID0gYXJpdHk7XG4gICAgYXJncy51bnNoaWZ0KHRoaXMpO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpO1xuICB9O1xufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2ssIGNhbWxfanNfZnVuY3Rpb25fYXJpdHlcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZShmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgIHZhciBsZW4gPSBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5KGYpO1xuICAgIGFyZ3MudW5zaGlmdCh0aGlzKTtcbiAgICBhcmdzLmxlbmd0aCA9IGxlbjtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTtcbiAgfTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mdW5jdGlvbl9hcml0eVxuLy9JZjogIWVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfanNfZnVuY3Rpb25fYXJpdHkoZikge1xuICByZXR1cm4gZi5sID49IDAgPyBmLmwgOiAoZi5sID0gZi5sZW5ndGgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5XG4vL0lmOiBlZmZlY3RzXG4vL0lmOiBkb3VibGV0cmFuc2xhdGVcbmZ1bmN0aW9uIGNhbWxfanNfZnVuY3Rpb25fYXJpdHkoZikge1xuICByZXR1cm4gZi5sID49IDAgPyBmLmwgOiAoZi5sID0gZi5sZW5ndGgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5XG4vL0lmOiBlZmZlY3RzXG4vL0lmOiAhZG91YmxldHJhbnNsYXRlXG5mdW5jdGlvbiBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5KGYpIHtcbiAgLy8gRnVuY3Rpb25zIGhhdmUgYW4gYWRkaXRpb25hbCBjb250aW51YXRpb24gcGFyYW1ldGVyLiBUaGlzIHNob3VsZFxuICAvLyBub3QgYmUgdmlzaWJsZSB3aGVuIGNhbGxpbmcgdGhlbSBmcm9tIEphdmFTY3JpcHRcbiAgcmV0dXJuIChmLmwgPj0gMCA/IGYubCA6IChmLmwgPSBmLmxlbmd0aCkpIC0gMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19lcXVhbHMgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19lcXVhbHMoeCwgeSkge1xuICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRG91YmxlRXF1YWxzOlxuICByZXR1cm4gKyh4ID09IHkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3N0cmljdF9lcXVhbHMgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19zdHJpY3RfZXF1YWxzKHgsIHkpIHtcbiAgcmV0dXJuICsoeCA9PT0geSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXZhbF9zdHJpbmcgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfZXZhbF9zdHJpbmcocykge1xuICAvLyBVc2VzIGFuIGluZGlyZWN0IGV2YWwgdGhyb3VnaCB0aGUgb3B0aW9uYWwgY2hhaW5pbmcgb3BlcmF0b3IuXG4gIC8vIChzZWUgaHR0cHM6Ly9tZG4uZGV2L2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL2V2YWwpXG4gIC8vIFRoaXMgaXMgZmFzdGVyIGFuZCBhdm9pZCB2YXJpYWJsZSBjYXB0dXJlcy5cbiAgLy8gQWxzbyBwcmVwZW5kcyBgXCJ1c2Ugc3RyaWN0XCJgIGRpcmVjdGl2ZSBzaW5jZSB0aGlzIGlzIG5vdCBpbmhlcml0ZWRcbiAgLy8gZnJvbSB0aGUgZW5jbG9zaW5nIGZ1bmN0aW9uIHdpdGggYW4gaW5kaXJlY3QgZXZhbC5cbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc2VjdXJpdHkvbm9HbG9iYWxFdmFsOlxuICByZXR1cm4gZXZhbD8uKCdcInVzZSBzdHJpY3RcIjsnICsgY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2V4cHIgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfZXhwcihzKSB7XG4gIGNvbnNvbGUuZXJyb3IoXCJjYW1sX2pzX2V4cHI6IGZhbGxiYWNrIHRvIHJ1bnRpbWUgZXZhbHVhdGlvblxcblwiKTtcbiAgLy8gV2UgYWRkIHBhcmVudGhlc2VzIHRvIGF2b2lkIHRoZSBhbWJpZ3VpdHkgYmV0d2VlbiBleHByZXNzaW9uc1xuICAvLyBhbmQgc3RhdGVtZW50cy4gVGhpcyBtZWFucyB0aGF0IHdlIGFjY2VwdCBpbnZhbGlkIGlucHV0cyBsaWtlXG4gIC8vIFwiYSkoYlwiLCBidXQgdGhpcyBpcyB1bmxpa2VseSB0byBiZSBhbiBpc3N1ZSBpbiBwcmFjdGljZS5cbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc2VjdXJpdHkvbm9HbG9iYWxFdmFsOlxuICByZXR1cm4gZXZhbD8uKCdcInVzZSBzdHJpY3RcIjsoJyArIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpICsgXCIpXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3B1cmVfanNfZXhwciBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9wdXJlX2pzX2V4cHIocykge1xuICBjb25zb2xlLmVycm9yKFwiY2FtbF9wdXJlX2pzX2V4cHI6IGZhbGxiYWNrIHRvIHJ1bnRpbWUgZXZhbHVhdGlvblxcblwiKTtcbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc2VjdXJpdHkvbm9HbG9iYWxFdmFsOlxuICByZXR1cm4gZXZhbD8uKCdcInVzZSBzdHJpY3RcIjsoJyArIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpICsgXCIpXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX29iamVjdCAob2JqZWN0X2xpdGVyYWwpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc19vYmplY3QoYSkge1xuICB2YXIgbyA9IHt9O1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcCA9IGFbaV07XG4gICAgb1tjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhwWzFdKV0gPSBwWzJdO1xuICB9XG4gIHJldHVybiBvO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9SYWlzZSBleGNlcHRpb25cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9jb25zdGFudCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3JhaXNlX2NvbnN0YW50KHRhZykge1xuICB0aHJvdyB0YWc7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfYXJnKHRhZywgYXJnKSB7XG4gIHRocm93IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZShbMCwgdGFnLCBhcmddKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV93aXRoX2FyZ3MgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfYXJncyh0YWcsIGFyZ3MpIHtcbiAgdGhyb3cgY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlKFswLCB0YWddLmNvbmNhdChhcmdzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcodGFnLCBtc2cpIHtcbiAgY2FtbF9yYWlzZV93aXRoX2FyZyh0YWcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMobXNnKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmFpbHdpdGggKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV93aXRoX3N0cmluZywgY2FtbF9nbG9iYWxfZGF0YSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9mYWlsd2l0aChtc2cpIHtcbiAgaWYgKCFjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmUpXG4gICAgY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlID0gWzI0OCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIkZhaWx1cmVcIiksIC0zXTtcbiAgY2FtbF9yYWlzZV93aXRoX3N0cmluZyhjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmUsIG1zZyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2ludmFsaWRfYXJndW1lbnQobXNnKSB7XG4gIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcoY2FtbF9nbG9iYWxfZGF0YS5JbnZhbGlkX2FyZ3VtZW50LCBtc2cpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCkge1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuRW5kX29mX2ZpbGUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlKCkge1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuRGl2aXNpb25fYnlfemVybyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vdF9mb3VuZCgpIHtcbiAgY2FtbF9yYWlzZV9jb25zdGFudChjYW1sX2dsb2JhbF9kYXRhLk5vdF9mb3VuZCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cbiIsIi8vUHJvdmlkZXM6IGNhbWxfdW5peF9nZXR0aW1lb2ZkYXlcbi8vQWxpYXM6IHVuaXhfZ2V0dGltZW9mZGF5XG5mdW5jdGlvbiBjYW1sX3VuaXhfZ2V0dGltZW9mZGF5KCkge1xuICByZXR1cm4gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfdGltZVxuLy9SZXF1aXJlczogY2FtbF91bml4X2dldHRpbWVvZmRheVxuLy9BbGlhczogdW5peF90aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfdGltZSgpIHtcbiAgcmV0dXJuIE1hdGguZmxvb3IoY2FtbF91bml4X2dldHRpbWVvZmRheSgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3RpbWVzXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3RpbWVzXG5mdW5jdGlvbiBjYW1sX3VuaXhfdGltZXMoKSB7XG4gIGlmIChnbG9iYWxUaGlzLnByb2Nlc3M/LmNwdVVzYWdlKSB7XG4gICAgdmFyIHQgPSBnbG9iYWxUaGlzLnByb2Nlc3MuY3B1VXNhZ2UoKTtcbiAgICByZXR1cm4gQkxPQ0soMCwgdC51c2VyIC8gMWU2LCB0LnN5c3RlbSAvIDFlNiwgMCwgMCk7XG4gIH0gZWxzZSBpZiAoZ2xvYmFsVGhpcy5wZXJmb3JtYW5jZT8ubm93KSB7XG4gICAgcmV0dXJuIEJMT0NLKDAsIGdsb2JhbFRoaXMucGVyZm9ybWFuY2Uubm93KCkgLyAxMDAwLCAwLCAwLCAwKTtcbiAgfSBlbHNlIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3RpbWVzOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2dtdGltZVxuLy9BbGlhczogdW5peF9nbXRpbWVcbmZ1bmN0aW9uIGNhbWxfdW5peF9nbXRpbWUodCkge1xuICB2YXIgZCA9IG5ldyBEYXRlKHQgKiAxMDAwKTtcbiAgdmFyIGRfbnVtID0gZC5nZXRUaW1lKCk7XG4gIHZhciBqYW51YXJ5Zmlyc3QgPSBuZXcgRGF0ZShEYXRlLlVUQyhkLmdldFVUQ0Z1bGxZZWFyKCksIDAsIDEpKS5nZXRUaW1lKCk7XG4gIHZhciBkb3kgPSBNYXRoLmZsb29yKChkX251bSAtIGphbnVhcnlmaXJzdCkgLyA4NjQwMDAwMCk7XG4gIHJldHVybiBCTE9DSyhcbiAgICAwLFxuICAgIGQuZ2V0VVRDU2Vjb25kcygpLFxuICAgIGQuZ2V0VVRDTWludXRlcygpLFxuICAgIGQuZ2V0VVRDSG91cnMoKSxcbiAgICBkLmdldFVUQ0RhdGUoKSxcbiAgICBkLmdldFVUQ01vbnRoKCksXG4gICAgZC5nZXRVVENGdWxsWWVhcigpIC0gMTkwMCxcbiAgICBkLmdldFVUQ0RheSgpLFxuICAgIGRveSxcbiAgICBmYWxzZSB8IDAgLyogZm9yIFVUQyBkYXlsaWdodCBzYXZpbmdzIHRpbWUgaXMgZmFsc2UgKi8sXG4gICk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9sb2NhbHRpbWVcbi8vQWxpYXM6IHVuaXhfbG9jYWx0aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfbG9jYWx0aW1lKHQpIHtcbiAgdmFyIGQgPSBuZXcgRGF0ZSh0ICogMTAwMCk7XG4gIHZhciBkX251bSA9IGQuZ2V0VGltZSgpO1xuICB2YXIgamFudWFyeWZpcnN0ID0gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCAwLCAxKS5nZXRUaW1lKCk7XG4gIHZhciBkb3kgPSBNYXRoLmZsb29yKChkX251bSAtIGphbnVhcnlmaXJzdCkgLyA4NjQwMDAwMCk7XG4gIHZhciBqYW4gPSBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIDAsIDEpO1xuICB2YXIganVsID0gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCA2LCAxKTtcbiAgdmFyIHN0ZFRpbWV6b25lT2Zmc2V0ID0gTWF0aC5tYXgoXG4gICAgamFuLmdldFRpbWV6b25lT2Zmc2V0KCksXG4gICAganVsLmdldFRpbWV6b25lT2Zmc2V0KCksXG4gICk7XG4gIHJldHVybiBCTE9DSyhcbiAgICAwLFxuICAgIGQuZ2V0U2Vjb25kcygpLFxuICAgIGQuZ2V0TWludXRlcygpLFxuICAgIGQuZ2V0SG91cnMoKSxcbiAgICBkLmdldERhdGUoKSxcbiAgICBkLmdldE1vbnRoKCksXG4gICAgZC5nZXRGdWxsWWVhcigpIC0gMTkwMCxcbiAgICBkLmdldERheSgpLFxuICAgIGRveSxcbiAgICAoZC5nZXRUaW1lem9uZU9mZnNldCgpIDwgc3RkVGltZXpvbmVPZmZzZXQpIHxcbiAgICAgIDAgLyogZGF5bGlnaHQgc2F2aW5ncyB0aW1lICBmaWVsZC4gKi8sXG4gICk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9ta3RpbWVcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sb2NhbHRpbWVcbi8vQWxpYXM6IHVuaXhfbWt0aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfbWt0aW1lKHRtKSB7XG4gIHZhciBkID0gbmV3IERhdGUodG1bNl0gKyAxOTAwLCB0bVs1XSwgdG1bNF0sIHRtWzNdLCB0bVsyXSwgdG1bMV0pLmdldFRpbWUoKTtcbiAgdmFyIHQgPSBNYXRoLmZsb29yKGQgLyAxMDAwKTtcbiAgdmFyIHRtMiA9IGNhbWxfdW5peF9sb2NhbHRpbWUodCk7XG4gIHJldHVybiBCTE9DSygwLCB0LCB0bTIpO1xufVxuLy9Qcm92aWRlczogY2FtbF91bml4X3N0YXJ0dXAgY29uc3Rcbi8vQWxpYXM6IHdpbl9zdGFydHVwXG5mdW5jdGlvbiBjYW1sX3VuaXhfc3RhcnR1cCgpIHt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9jbGVhbnVwIGNvbnN0XG4vL0FsaWFzOiB3aW5fY2xlYW51cFxuZnVuY3Rpb24gY2FtbF91bml4X2NsZWFudXAoKSB7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZmlsZWRlc2NyX29mX2ZkIGNvbnN0XG4vL0FsaWFzOiB3aW5faGFuZGxlX2ZkXG5mdW5jdGlvbiBjYW1sX3VuaXhfZmlsZWRlc2NyX29mX2ZkKHgpIHtcbiAgcmV0dXJuIHg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9pc2F0dHlcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sb29rdXBfZmlsZVxuLy9BbGlhczogdW5peF9pc2F0dHlcbmZ1bmN0aW9uIGNhbWxfdW5peF9pc2F0dHkoZmQpIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3VuaXhfbG9va3VwX2ZpbGUoZmQpO1xuICBpZiAoIWZpbGUuaXNhdHR5KSByZXR1cm4gMDtcbiAgcmV0dXJuIGZpbGUuaXNhdHR5KCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9pc2F0dHlcbi8vQWxpYXM6IHVuaXhfaXNhdHR5XG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBjYW1sX3VuaXhfaXNhdHR5KF9maWxlRGVzY3JpcHRvcikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogdW5peF9lcnJvclxudmFyIHVuaXhfZXJyb3IgPSBbXG4gIC8qID09PVVuaXguZXJyb3I9PT1cbiAgICpcbiAgICogVGhpcyBhcnJheSBpcyBpbiBvcmRlciBvZiB0aGUgdmFyaWFudCBpbiBPQ2FtbFxuICAgKi9cbiAgXCJFMkJJR1wiLFxuICBcIkVBQ0NFU1wiLFxuICBcIkVBR0FJTlwiLFxuICBcIkVCQURGXCIsXG4gIFwiRUJVU1lcIixcbiAgXCJFQ0hJTERcIixcbiAgXCJFREVBRExLXCIsXG4gIFwiRURPTVwiLFxuICBcIkVFWElTVFwiLFxuICBcIkVGQVVMVFwiLFxuICBcIkVGQklHXCIsXG4gIFwiRUlOVFJcIixcbiAgXCJFSU5WQUxcIixcbiAgXCJFSU9cIixcbiAgXCJFSVNESVJcIixcbiAgXCJFTUZJTEVcIixcbiAgXCJFTUxJTktcIixcbiAgXCJFTkFNRVRPT0xPTkdcIixcbiAgXCJFTkZJTEVcIixcbiAgXCJFTk9ERVZcIixcbiAgXCJFTk9FTlRcIixcbiAgXCJFTk9FWEVDXCIsXG4gIFwiRU5PTENLXCIsXG4gIFwiRU5PTUVNXCIsXG4gIFwiRU5PU1BDXCIsXG4gIFwiRU5PU1lTXCIsXG4gIFwiRU5PVERJUlwiLFxuICBcIkVOT1RFTVBUWVwiLFxuICBcIkVOT1RUWVwiLFxuICBcIkVOWElPXCIsXG4gIFwiRVBFUk1cIixcbiAgXCJFUElQRVwiLFxuICBcIkVSQU5HRVwiLFxuICBcIkVST0ZTXCIsXG4gIFwiRVNQSVBFXCIsXG4gIFwiRVNSQ0hcIixcbiAgXCJFWERFVlwiLFxuICBcIkVXT1VMREJMT0NLXCIsXG4gIFwiRUlOUFJPR1JFU1NcIixcbiAgXCJFQUxSRUFEWVwiLFxuICBcIkVOT1RTT0NLXCIsXG4gIFwiRURFU1RBRERSUkVRXCIsXG4gIFwiRU1TR1NJWkVcIixcbiAgXCJFUFJPVE9UWVBFXCIsXG4gIFwiRU5PUFJPVE9PUFRcIixcbiAgXCJFUFJPVE9OT1NVUFBPUlRcIixcbiAgXCJFU09DS1ROT1NVUFBPUlRcIixcbiAgXCJFT1BOT1RTVVBQXCIsXG4gIFwiRVBGTk9TVVBQT1JUXCIsXG4gIFwiRUFGTk9TVVBQT1JUXCIsXG4gIFwiRUFERFJJTlVTRVwiLFxuICBcIkVBRERSTk9UQVZBSUxcIixcbiAgXCJFTkVURE9XTlwiLFxuICBcIkVORVRVTlJFQUNIXCIsXG4gIFwiRU5FVFJFU0VUXCIsXG4gIFwiRUNPTk5BQk9SVEVEXCIsXG4gIFwiRUNPTk5SRVNFVFwiLFxuICBcIkVOT0JVRlNcIixcbiAgXCJFSVNDT05OXCIsXG4gIFwiRU5PVENPTk5cIixcbiAgXCJFU0hVVERPV05cIixcbiAgXCJFVE9PTUFOWVJFRlNcIixcbiAgXCJFVElNRURPVVRcIixcbiAgXCJFQ09OTlJFRlVTRURcIixcbiAgXCJFSE9TVERPV05cIixcbiAgXCJFSE9TVFVOUkVBQ0hcIixcbiAgXCJFTE9PUFwiLFxuICBcIkVPVkVSRkxPV1wiLFxuXTtcblxuLy9Qcm92aWRlczogbWFrZV91bml4X2Vycl9hcmdzXG4vL1JlcXVpcmVzOiB1bml4X2Vycm9yLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuZnVuY3Rpb24gbWFrZV91bml4X2Vycl9hcmdzKGNvZGUsIHN5c2NhbGwsIHBhdGgsIGVycm5vKSB7XG4gIHZhciB2YXJpYW50ID0gdW5peF9lcnJvci5pbmRleE9mKGNvZGUpO1xuICBpZiAodmFyaWFudCA8IDApIHtcbiAgICAvLyBEZWZhdWx0IGlmIHVuZGVmaW5lZFxuICAgIGlmIChlcnJubyA9PSBudWxsKSB7XG4gICAgICBlcnJubyA9IC05OTk5O1xuICAgIH1cbiAgICAvLyBJZiBub25lIG9mIHRoZSBhYm92ZSB2YXJpYW50cywgZmFsbGJhY2sgdG8gRVVOS05PV05FUlIoaW50KVxuICAgIC8vIGVycm5vIGlzIGV4cGVjdGVkIHRvIGJlIHBvc2l0aXZlXG4gICAgdmFyaWFudCA9IEJMT0NLKDAsIC1lcnJubyk7XG4gIH1cbiAgdmFyIGFyZ3MgPSBbXG4gICAgdmFyaWFudCxcbiAgICBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhzeXNjYWxsIHx8IFwiXCIpLFxuICAgIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHBhdGggfHwgXCJcIiksXG4gIF07XG4gIHJldHVybiBhcmdzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmVycm9yXG4vL1JlcXVpcmVzOiB1bml4X2Vycm9yXG5mdW5jdGlvbiBjYW1sX3N0cmVycm9yKGVycm5vKSB7XG4gIGNvbnN0IHV0aWwgPSByZXF1aXJlKFwibm9kZTp1dGlsXCIpO1xuICBpZiAoZXJybm8gPj0gMCkge1xuICAgIGNvbnN0IGNvZGUgPSB1bml4X2Vycm9yW2Vycm5vXTtcbiAgICByZXR1cm4gdXRpbFxuICAgICAgLmdldFN5c3RlbUVycm9yTWFwKClcbiAgICAgIC5lbnRyaWVzKClcbiAgICAgIC5maW5kKCh4KSA9PiB4WzFdWzBdID09PSBjb2RlKVsxXVsxXTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdXRpbC5nZXRTeXN0ZW1FcnJvck1lc3NhZ2UoZXJybm8pO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyZXJyb3Jcbi8vUmVxdWlyZXM6IHVuaXhfZXJyb3Jcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGNhbWxfc3RyZXJyb3IoZXJybm8pIHtcbiAgY29uc3QgY29kZSA9IHVuaXhfZXJyb3JbZXJybm9dO1xuICByZXR1cm4gY29kZSB8fCBcIlVua25vd24gZXJyb3IgXCIgKyBlcnJubztcbn1cblxuLy9Qcm92aWRlczogdW5peF9lcnJvcl9tZXNzYWdlXG4vL0FsaWFzOiBjYW1sX3VuaXhfZXJyb3JfbWVzc2FnZVxuLy9SZXF1aXJlczogY2FtbF9zdHJlcnJvciwgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbmZ1bmN0aW9uIHVuaXhfZXJyb3JfbWVzc2FnZShlcnIpIHtcbiAgY29uc3QgZXJybm8gPSB0eXBlb2YgZXJyID09PSBcIm51bWJlclwiID8gZXJyIDogLWVyclsxXTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGNhbWxfc3RyZXJyb3IoZXJybm8pKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2NoZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19jaGRpclxuLy9BbGlhczogdW5peF9jaGRpclxuZnVuY3Rpb24gY2FtbF91bml4X2NoZGlyKGRpcikge1xuICByZXR1cm4gY2FtbF9zeXNfY2hkaXIoZGlyLCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfc3RhdFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfc3RhdFxuZnVuY3Rpb24gY2FtbF91bml4X3N0YXQobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnN0YXQpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3N0YXQ6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2Uuc3RhdChcbiAgICByb290LnJlc3QsXG4gICAgLyogbGFyZ2UgKi8gZmFsc2UsXG4gICAgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlLFxuICApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfc3RhdF82NFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfc3RhdF82NFxuZnVuY3Rpb24gY2FtbF91bml4X3N0YXRfNjQobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnN0YXQpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3N0YXRfNjQ6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2Uuc3RhdChcbiAgICByb290LnJlc3QsXG4gICAgLyogbGFyZ2UgKi8gdHJ1ZSxcbiAgICAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUsXG4gICk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9sc3RhdFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfbHN0YXRcbmZ1bmN0aW9uIGNhbWxfdW5peF9sc3RhdChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UubHN0YXQpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X2xzdGF0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmxzdGF0KFxuICAgIHJvb3QucmVzdCxcbiAgICAvKiBsYXJnZSAqLyBmYWxzZSxcbiAgICAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUsXG4gICk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9sc3RhdF82NFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfbHN0YXRfNjRcbmZ1bmN0aW9uIGNhbWxfdW5peF9sc3RhdF82NChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UubHN0YXQpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X2xzdGF0XzY0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmxzdGF0KFxuICAgIHJvb3QucmVzdCxcbiAgICAvKiBsYXJnZSAqLyB0cnVlLFxuICAgIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSxcbiAgKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2NobW9kXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9jaG1vZFxuZnVuY3Rpb24gY2FtbF91bml4X2NobW9kKG5hbWUsIHBlcm1zKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UuY2htb2QpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X2NobW9kOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmNobW9kKHJvb3QucmVzdCwgcGVybXMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfcmVuYW1lXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCByZXNvbHZlX2ZzX2RldmljZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3Jcbi8vQWxpYXM6IHVuaXhfcmVuYW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfcmVuYW1lKG8sIG4pIHtcbiAgdmFyIG9fcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG8pO1xuICB2YXIgbl9yb290ID0gcmVzb2x2ZV9mc19kZXZpY2Uobik7XG4gIGlmIChvX3Jvb3QuZGV2aWNlICE9PSBuX3Jvb3QuZGV2aWNlKVxuICAgIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gMSwgXCJFWERFVlwiLCBcInJlbmFtZVwiKTtcbiAgaWYgKCFvX3Jvb3QuZGV2aWNlLnJlbmFtZSkgY2FtbF9mYWlsd2l0aChcImNhbWxfc3lzX3JlbmFtZTogbm90IGltcGxlbWVudGVkXCIpO1xuICBvX3Jvb3QuZGV2aWNlLnJlbmFtZShvX3Jvb3QucmVzdCwgbl9yb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9ta2RpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfbWtkaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9ta2RpcihuYW1lLCBwZXJtKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UubWtkaXIpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X21rZGlyOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLm1rZGlyKHJvb3QucmVzdCwgcGVybSwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3JtZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9ybWRpclxuZnVuY3Rpb24gY2FtbF91bml4X3JtZGlyKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5ybWRpcikge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfcm1kaXI6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2Uucm1kaXIocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGgsIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yXG4vL0FsaWFzOiB1bml4X2xpbmtcbmZ1bmN0aW9uIGNhbWxfdW5peF9saW5rKGZvbGxvdywgc3JjLCBkc3QpIHtcbiAgdmFyIHNyY19yb290ID0gcmVzb2x2ZV9mc19kZXZpY2Uoc3JjKTtcbiAgdmFyIGRzdF9yb290ID0gcmVzb2x2ZV9mc19kZXZpY2UoZHN0KTtcbiAgaWYgKCFzcmNfcm9vdC5kZXZpY2UubGluaykge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfbGluazogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIC8vIFdlIGNhbid0IGNvbnRyb2wgd2hldGhlciBhICdzcmMnIHN5bWxpbmsgaXMgZm9sbG93ZWQgb3Igbm90LlxuICAvLyBTbyB3ZSBmYWlsIHdoZW4gJ2ZvbGxvdycgaXMgc2V0LCBhcyBkb2N1bWVudGVkIGluIHRoZSBVbml4IG1vZHVsZS5cbiAgaWYgKHR5cGVvZiBmb2xsb3cgIT09IFwibnVtYmVyXCIpXG4gICAgY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3IoLyogcmFpc2UgVW5peF9lcnJvciAqLyAxLCBcIkVOT1NZU1wiLCBcImxpbmtcIik7XG4gIGlmIChzcmNfcm9vdC5kZXZpY2UgIT09IGRzdF9yb290LmRldmljZSlcbiAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcigvKiByYWlzZSBVbml4X2Vycm9yICovIDEsIFwiRVhERVZcIiwgXCJsaW5rXCIpO1xuICByZXR1cm4gc3JjX3Jvb3QuZGV2aWNlLmxpbmsoXG4gICAgc3JjX3Jvb3QucmVzdCxcbiAgICBkc3Rfcm9vdC5yZXN0LFxuICAgIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSxcbiAgKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3N5bWxpbmtcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9BbGlhczogdW5peF9zeW1saW5rXG5mdW5jdGlvbiBjYW1sX3VuaXhfc3ltbGluayh0b19kaXIsIHNyYywgZHN0KSB7XG4gIHZhciBkc3Rfcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKGRzdCk7XG4gIGlmICghZHN0X3Jvb3QuZGV2aWNlLnN5bWxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3N5bWxpbms6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gZHN0X3Jvb3QuZGV2aWNlLnN5bWxpbmsoXG4gICAgdG9fZGlyLFxuICAgIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHNyYyksXG4gICAgZHN0X3Jvb3QucmVzdCxcbiAgICAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUsXG4gICk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9yZWFkbGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfcmVhZGxpbmtcbmZ1bmN0aW9uIGNhbWxfdW5peF9yZWFkbGluayhuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UucmVhZGxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3JlYWRsaW5rOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnJlYWRsaW5rKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3VubGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfdW5saW5rXG5mdW5jdGlvbiBjYW1sX3VuaXhfdW5saW5rKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS51bmxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3VubGluazogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJvb3QuZGV2aWNlLnVubGluayhyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfdXRpbWVzXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF91dGltZXNcbmZ1bmN0aW9uIGNhbWxfdW5peF91dGltZXMobmFtZSwgYXRpbWUsIG10aW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UudXRpbWVzKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF91dGltZXM6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByb290LmRldmljZS51dGltZXMocm9vdC5yZXN0LCBhdGltZSwgbXRpbWUsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfdHJ1bmNhdGVcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3RydW5jYXRlXG5mdW5jdGlvbiBjYW1sX3VuaXhfdHJ1bmNhdGUobmFtZSwgbGVuKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UudHJ1bmNhdGUpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3RydW5jYXRlOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcm9vdC5kZXZpY2UudHJ1bmNhdGUocm9vdC5yZXN0LCBsZW4sIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfdHJ1bmNhdGVfNjRcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX2ludDY0X3RvX2Zsb2F0XG4vL0FsaWFzOiB1bml4X3RydW5jYXRlXzY0XG5mdW5jdGlvbiBjYW1sX3VuaXhfdHJ1bmNhdGVfNjQobmFtZSwgbGVuKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UudHJ1bmNhdGUpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3RydW5jYXRlXzY0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcm9vdC5kZXZpY2UudHJ1bmNhdGUoXG4gICAgcm9vdC5yZXN0LFxuICAgIGNhbWxfaW50NjRfdG9fZmxvYXQobGVuKSxcbiAgICAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUsXG4gICk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfYWNjZXNzXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9hY2Nlc3NcbmZ1bmN0aW9uIGNhbWxfdW5peF9hY2Nlc3MobmFtZSwgZmxhZ3MpIHtcbiAgdmFyIGYgPSB7fTtcbiAgd2hpbGUgKGZsYWdzKSB7XG4gICAgc3dpdGNoIChmbGFnc1sxXSkge1xuICAgICAgY2FzZSAwOlxuICAgICAgICBmLnIgPSAxO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgZi53ID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI6XG4gICAgICAgIGYueCA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzOlxuICAgICAgICBmLmYgPSAxO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgZmxhZ3MgPSBmbGFnc1syXTtcbiAgfVxuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLmFjY2Vzcykge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfYWNjZXNzOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcm9vdC5kZXZpY2UuYWNjZXNzKHJvb3QucmVzdCwgZiwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9vcGVuXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9zeXNfZmRzLCBNbENoYW5pZFxuLy9BbGlhczogdW5peF9vcGVuXG5mdW5jdGlvbiBjYW1sX3VuaXhfb3BlbihuYW1lLCBmbGFncywgcGVybXMpIHtcbiAgdmFyIGYgPSB7fTtcbiAgd2hpbGUgKGZsYWdzKSB7XG4gICAgc3dpdGNoIChmbGFnc1sxXSkge1xuICAgICAgY2FzZSAwOlxuICAgICAgICBmLnJkb25seSA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxOlxuICAgICAgICBmLndyb25seSA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICBmLnJkd3IgPSAxO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMzpcbiAgICAgICAgZi5ub25ibG9jayA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA0OlxuICAgICAgICBmLmFwcGVuZCA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA1OlxuICAgICAgICBmLmNyZWF0ZSA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA2OlxuICAgICAgICBmLnRydW5jYXRlID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDc6XG4gICAgICAgIGYuZXhjbCA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA4OlxuICAgICAgICBmLm5vY3R0eSA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA5OlxuICAgICAgICBmLmRzeW5jID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEwOlxuICAgICAgICBmLnN5bmMgPSAxO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgZmxhZ3MgPSBmbGFnc1syXTtcbiAgfVxuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgZmlsZSA9IHJvb3QuZGV2aWNlLm9wZW4ocm9vdC5yZXN0LCBmLCBwZXJtcywgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbiAgdmFyIGlkeCA9IGNhbWxfc3lzX2Zkcy5sZW5ndGg7XG4gIHZhciBjaGFuaWQgPSBuZXcgTWxDaGFuaWQoaWR4KTtcbiAgY2FtbF9zeXNfZmRzW2lkeF0gPSB7IGZpbGU6IGZpbGUsIGNoYW5pZDogY2hhbmlkIH07XG4gIHJldHVybiBpZHggfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbG9va3VwX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2ZkcywgY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3JcbmZ1bmN0aW9uIGNhbWxfdW5peF9sb29rdXBfZmlsZShmZCwgY21kKSB7XG4gIHZhciBmZF9kZXNjID0gY2FtbF9zeXNfZmRzW2ZkXTtcbiAgaWYgKGZkX2Rlc2MgPT09IHVuZGVmaW5lZClcbiAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcigvKiByYWlzZSBVbml4X2Vycm9yICovIDEsIFwiRUJBREZcIiwgY21kKTtcbiAgcmV0dXJuIGZkX2Rlc2MuZmlsZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZzdGF0XG4vL0FsaWFzOiB1bml4X2ZzdGF0XG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfbG9va3VwX2ZpbGUsIGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfdW5peF9mc3RhdChmZCkge1xuICB2YXIgZmlsZSA9IGNhbWxfdW5peF9sb29rdXBfZmlsZShmZCwgXCJmc3RhdFwiKTtcbiAgaWYgKCFmaWxlLnN0YXQpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X2ZzdGF0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIGZpbGUuc3RhdCgvKiBsYXJnZSAqLyBmYWxzZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9mc3RhdF82NFxuLy9BbGlhczogdW5peF9mc3RhdF82NFxuLy9SZXF1aXJlczogY2FtbF91bml4X2xvb2t1cF9maWxlLCBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX3VuaXhfZnN0YXRfNjQoZmQpIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3VuaXhfbG9va3VwX2ZpbGUoZmQsIFwiZnN0YXRcIik7XG4gIGlmICghZmlsZS5zdGF0KSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9mc3RhdDY0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIGZpbGUuc3RhdCgvKiBsYXJnZSAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZjaG1vZFxuLy9BbGlhczogdW5peF9mY2htb2Rcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sb29rdXBfZmlsZSwgY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF91bml4X2ZjaG1vZChmZCwgcGVybXMpIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3VuaXhfbG9va3VwX2ZpbGUoZmQsIFwiZmNobW9kXCIpO1xuICBpZiAoIWZpbGUuY2htb2QpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X2ZjaG1vZDogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiBmaWxlLmNobW9kKHBlcm1zKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZzeW5jXG4vL0FsaWFzOiB1bml4X2ZzeW5jXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfbG9va3VwX2ZpbGUsIGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfdW5peF9mc3luYyhmZCkge1xuICB2YXIgZmlsZSA9IGNhbWxfdW5peF9sb29rdXBfZmlsZShmZCwgXCJmc3luY1wiKTtcbiAgaWYgKCFmaWxlLnN5bmMpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X2ZzeW5jOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIGZpbGUuc3luYygpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfd3JpdGVcbi8vQWxpYXM6IHVuaXhfd3JpdGVcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sb29rdXBfZmlsZSwgY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF91bml4X3dyaXRlKGZkLCBidWYsIHBvcywgbGVuKSB7XG4gIHZhciBmaWxlID0gY2FtbF91bml4X2xvb2t1cF9maWxlKGZkLCBcIndyaXRlXCIpO1xuICB2YXIgYSA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoYnVmKTtcbiAgdmFyIHdyaXR0ZW4gPSAwO1xuICB3aGlsZSAobGVuID4gMCkge1xuICAgIHZhciBuID0gZmlsZS53cml0ZShhLCBwb3MsIGxlbiwgLyogcmFpc2UgdW5peF9lcnJvciAqLyAxKTtcbiAgICB3cml0dGVuICs9IG47XG4gICAgcG9zICs9IG47XG4gICAgbGVuIC09IG47XG4gIH1cbiAgcmV0dXJuIHdyaXR0ZW47XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9zaW5nbGVfd3JpdGVcbi8vQWxpYXM6IHVuaXhfc2luZ2xlX3dyaXRlXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfbG9va3VwX2ZpbGUsIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfdW5peF9zaW5nbGVfd3JpdGUoZmQsIGJ1ZiwgcG9zLCBsZW4pIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3VuaXhfbG9va3VwX2ZpbGUoZmQsIFwid3JpdGVcIik7XG4gIGlmIChsZW4gPT09IDApIHJldHVybiAwO1xuICByZXR1cm4gZmlsZS53cml0ZShcbiAgICBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGJ1ZiksXG4gICAgcG9zLFxuICAgIGxlbixcbiAgICAvKiByYWlzZSB1bml4X2Vycm9yICovIDEsXG4gICk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF93cml0ZV9iaWdhcnJheVxuLy9BbGlhczogY2FtbF91bml4X2xvb2t1cF9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5LCBjYW1sX3VuaXhfbG9va3VwX2ZpbGVcbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBjYW1sX3VuaXhfd3JpdGVfYmlnYXJyYXkoZmQsIGJ1ZiwgcG9zLCBsZW4pIHtcbiAgdmFyIGEgPSBjYW1sX2JhX3RvX3R5cGVkX2FycmF5KGJ1Zik7XG4gIHZhciBmaWxlID0gY2FtbF91bml4X2xvb2t1cF9maWxlKGZkLCBcIndyaXRlXCIpO1xuICB2YXIgd3JpdHRlbiA9IDA7XG4gIHdoaWxlIChsZW4gPiAwKSB7XG4gICAgdmFyIG4gPSBmaWxlLndyaXRlKGEsIHBvcywgbGVuLCAvKiByYWlzZSB1bml4X2Vycm9yICovIDEpO1xuICAgIHdyaXR0ZW4gKz0gbjtcbiAgICBwb3MgKz0gbjtcbiAgICBsZW4gLT0gbjtcbiAgfVxuICByZXR1cm4gd3JpdHRlbjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3JlYWRcbi8vQWxpYXM6IHVuaXhfcmVhZFxuLy9SZXF1aXJlczogY2FtbF91bml4X2xvb2t1cF9maWxlLCBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX3VuaXhfcmVhZChmZCwgYnVmLCBwb3MsIGxlbikge1xuICB2YXIgZmlsZSA9IGNhbWxfdW5peF9sb29rdXBfZmlsZShmZCwgXCJyZWFkXCIpO1xuICByZXR1cm4gZmlsZS5yZWFkKFxuICAgIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoYnVmKSxcbiAgICBwb3MsXG4gICAgbGVuLFxuICAgIC8qIHJhaXNlIHVuaXhfZXJyb3IgKi8gMSxcbiAgKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3JlYWRfYmlnYXJyYXlcbi8vQWxpYXM6IHVuaXhfcmVhZF9iaWdhcnJheVxuLy9SZXF1aXJlczogY2FtbF9iYV90b190eXBlZF9hcnJheSwgY2FtbF91bml4X2xvb2t1cF9maWxlXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF91bml4X3JlYWRfYmlnYXJyYXkoZmQsIGJ1ZiwgcG9zLCBsZW4pIHtcbiAgdmFyIGEgPSBjYW1sX2JhX3RvX3R5cGVkX2FycmF5KGJ1Zik7XG4gIHZhciBmaWxlID0gY2FtbF91bml4X2xvb2t1cF9maWxlKGZkLCBcInJlYWRcIik7XG4gIHJldHVybiBmaWxlLnJlYWQoYSwgcG9zLCBsZW4sIC8qIHJhaXNlIHVuaXhfZXJyb3IgKi8gMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9sc2Vla1xuLy9BbGlhczogdW5peF9sc2Vla1xuLy9SZXF1aXJlczogY2FtbF91bml4X2xvb2t1cF9maWxlXG5mdW5jdGlvbiBjYW1sX3VuaXhfbHNlZWsoZmQsIGxlbiwgd2hlbmNlKSB7XG4gIHZhciBmaWxlID0gY2FtbF91bml4X2xvb2t1cF9maWxlKGZkLCBcImxzZWVrXCIpO1xuICByZXR1cm4gZmlsZS5zZWVrKGxlbiwgd2hlbmNlLCAvKiByYWlzZSB1bml4X2Vycm9yICovIDEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbHNlZWtfNjRcbi8vQWxpYXM6IHVuaXhfbHNlZWtfNjRcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sb29rdXBfZmlsZSwgY2FtbF9pbnQ2NF90b19mbG9hdFxuZnVuY3Rpb24gY2FtbF91bml4X2xzZWVrXzY0KGZkLCBsZW4sIHdoZW5jZSkge1xuICB2YXIgZmlsZSA9IGNhbWxfdW5peF9sb29rdXBfZmlsZShmZCwgXCJsc2Vla1wiKTtcbiAgcmV0dXJuIGZpbGUuc2VlayhjYW1sX2ludDY0X3RvX2Zsb2F0KGxlbiksIHdoZW5jZSwgLyogcmFpc2UgdW5peF9lcnJvciAqLyAxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2Z0cnVuY2F0ZVxuLy9BbGlhczogdW5peF9mdHJ1bmNhdGVcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sb29rdXBfZmlsZSwgY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF91bml4X2Z0cnVuY2F0ZShmZCwgbGVuKSB7XG4gIHZhciBmaWxlID0gY2FtbF91bml4X2xvb2t1cF9maWxlKGZkLCBcImZ0cnVuY2F0ZVwiKTtcbiAgaWYgKCFmaWxlLnRydW5jYXRlKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9mdHJ1bmNhdGU6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICBmaWxlLnRydW5jYXRlKGxlbiwgLyogcmFpc2UgdW5peF9lcnJvciAqLyAxKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9mdHJ1bmNhdGVfNjRcbi8vQWxpYXM6IHVuaXhfZnRydW5jYXRlXzY0XG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfbG9va3VwX2ZpbGUsIGNhbWxfZmFpbHdpdGgsIGNhbWxfaW50NjRfdG9fZmxvYXRcbmZ1bmN0aW9uIGNhbWxfdW5peF9mdHJ1bmNhdGVfNjQoZmQsIGxlbikge1xuICB2YXIgZmlsZSA9IGNhbWxfdW5peF9sb29rdXBfZmlsZShmZCwgXCJmdHJ1bmNhdGVcIik7XG4gIGlmICghZmlsZS50cnVuY2F0ZSkge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfZnRydW5jYXRlXzY0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgZmlsZS50cnVuY2F0ZShjYW1sX2ludDY0X3RvX2Zsb2F0KGxlbiksIC8qIHJhaXNlIHVuaXhfZXJyb3IgKi8gMSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfY2xvc2Vcbi8vQWxpYXM6IHVuaXhfY2xvc2Vcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sb29rdXBfZmlsZVxuZnVuY3Rpb24gY2FtbF91bml4X2Nsb3NlKGZkKSB7XG4gIHZhciBmaWxlID0gY2FtbF91bml4X2xvb2t1cF9maWxlKGZkLCBcImNsb3NlXCIpO1xuICBmaWxlLmNsb3NlKC8qIHJhaXNlIHVuaXhfZXJyb3IgKi8gMSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfaW5jaGFubmVsX29mX2ZpbGVkZXNjclxuLy9BbGlhczogdW5peF9pbmNoYW5uZWxfb2ZfZmlsZWRlc2NyXG4vL0FsaWFzOiB3aW5faW5jaGFubmVsX29mX2ZpbGVkZXNjclxuLy9SZXF1aXJlczogY2FtbF91bml4X2xvb2t1cF9maWxlLCBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pblxuZnVuY3Rpb24gY2FtbF91bml4X2luY2hhbm5lbF9vZl9maWxlZGVzY3IoZmQpIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3VuaXhfbG9va3VwX2ZpbGUoZmQsIFwiaW5fY2hhbm5lbF9vZl9kZXNjclwiKTtcbiAgZmlsZS5jaGVja19zdHJlYW1fc2VtYW50aWNzKFwiaW5fY2hhbm5lbF9vZl9kZXNjclwiKTtcbiAgcmV0dXJuIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luKGZkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X291dGNoYW5uZWxfb2ZfZmlsZWRlc2NyXG4vL0FsaWFzOiB1bml4X291dGNoYW5uZWxfb2ZfZmlsZWRlc2NyXG4vL0FsaWFzOiB3aW5fb3V0Y2hhbm5lbF9vZl9maWxlZGVzY3Jcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sb29rdXBfZmlsZSwgY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0XG5mdW5jdGlvbiBjYW1sX3VuaXhfb3V0Y2hhbm5lbF9vZl9maWxlZGVzY3IoZmQpIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3VuaXhfbG9va3VwX2ZpbGUoZmQsIFwib3V0X2NoYW5uZWxfb2ZfZGVzY3JcIik7XG4gIGZpbGUuY2hlY2tfc3RyZWFtX3NlbWFudGljcyhcIm91dF9jaGFubmVsX29mX2Rlc2NyXCIpO1xuICByZXR1cm4gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0KGZkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2dldHVpZFxuLy9BbGlhczogdW5peF9nZXR1aWRcbmZ1bmN0aW9uIGNhbWxfdW5peF9nZXR1aWQoX3VuaXQpIHtcbiAgaWYgKGdsb2JhbFRoaXMucHJvY2Vzcz8uZ2V0dWlkKSB7XG4gICAgcmV0dXJuIGdsb2JhbFRoaXMucHJvY2Vzcy5nZXR1aWQoKTtcbiAgfVxuICByZXR1cm4gMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2dldGV1aWRcbi8vQWxpYXM6IHVuaXhfZ2V0ZXVpZFxuZnVuY3Rpb24gY2FtbF91bml4X2dldGV1aWQoX3VuaXQpIHtcbiAgaWYgKGdsb2JhbFRoaXMucHJvY2Vzcz8uZ2V0ZXVpZCkge1xuICAgIHJldHVybiBnbG9iYWxUaGlzLnByb2Nlc3MuZ2V0ZXVpZCgpO1xuICB9XG4gIHJldHVybiAxO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZ2V0Z2lkXG4vL0FsaWFzOiB1bml4X2dldGdpZFxuZnVuY3Rpb24gY2FtbF91bml4X2dldGdpZChfdW5pdCkge1xuICBpZiAoZ2xvYmFsVGhpcy5wcm9jZXNzPy5nZXRnaWQpIHtcbiAgICByZXR1cm4gZ2xvYmFsVGhpcy5wcm9jZXNzLmdldGdpZCgpO1xuICB9XG4gIHJldHVybiAxO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZ2V0ZWdpZFxuLy9BbGlhczogdW5peF9nZXRlZ2lkXG5mdW5jdGlvbiBjYW1sX3VuaXhfZ2V0ZWdpZChfdW5pdCkge1xuICBpZiAoZ2xvYmFsVGhpcy5wcm9jZXNzPy5nZXRlZ2lkKSB7XG4gICAgcmV0dXJuIGdsb2JhbFRoaXMucHJvY2Vzcy5nZXRlZ2lkKCk7XG4gIH1cbiAgcmV0dXJuIDE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9nZXRwd25hbVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub3RfZm91bmRcbi8vQWxpYXM6IHVuaXhfZ2V0cHduYW1cbi8vQWxpYXM6IGNhbWxfdW5peF9nZXRwd3VpZFxuLy9BbGlhczogdW5peF9nZXRwd3VpZFxuLy9BbGlhczogY2FtbF91bml4X2dldGdybmFtXG4vL0FsaWFzOiB1bml4X2dldGdybmFtXG4vL0FsaWFzOiBjYW1sX3VuaXhfZ2V0Z3JnaWRcbi8vQWxpYXM6IHVuaXhfZ2V0Z3JnaWRcbmZ1bmN0aW9uIGNhbWxfdW5peF9nZXRwd25hbShfdW5pdCkge1xuICBjYW1sX3JhaXNlX25vdF9mb3VuZCgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfaGFzX3N5bWxpbmtcbi8vUmVxdWlyZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL0FsaWFzOiB1bml4X2hhc19zeW1saW5rXG5mdW5jdGlvbiBjYW1sX3VuaXhfaGFzX3N5bWxpbmsoX3VuaXQpIHtcbiAgcmV0dXJuIGZzX25vZGVfc3VwcG9ydGVkKCkgPyAxIDogMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X29wZW5kaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X29wZW5kaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9vcGVuZGlyKHBhdGgpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShwYXRoKTtcbiAgaWYgKCFyb290LmRldmljZS5vcGVuZGlyKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9vcGVuZGlyOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgdmFyIGRpcl9oYW5kbGUgPSByb290LmRldmljZS5vcGVuZGlyKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbiAgcmV0dXJuIHsgcG9pbnRlcjogZGlyX2hhbmRsZSwgcGF0aDogcGF0aCB9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfcmVhZGRpclxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yXG4vL0FsaWFzOiB1bml4X3JlYWRkaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9yZWFkZGlyKGRpcl9oYW5kbGUpIHtcbiAgdmFyIGVudHJ5O1xuICB0cnkge1xuICAgIGVudHJ5ID0gZGlyX2hhbmRsZS5wb2ludGVyLnJlYWRTeW5jKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcigvKiByYWlzZSBVbml4X2Vycm9yICovIDEsIFwiRUJBREZcIiwgXCJyZWFkZGlyXCIpO1xuICB9XG4gIGlmIChlbnRyeSA9PT0gbnVsbCkge1xuICAgIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoZW50cnkubmFtZSk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2Nsb3NlZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvclxuLy9BbGlhczogdW5peF9jbG9zZWRpclxuZnVuY3Rpb24gY2FtbF91bml4X2Nsb3NlZGlyKGRpcl9oYW5kbGUpIHtcbiAgdHJ5IHtcbiAgICBkaXJfaGFuZGxlLnBvaW50ZXIuY2xvc2VTeW5jKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcigvKiByYWlzZSBVbml4X2Vycm9yICovIDEsIFwiRUJBREZcIiwgXCJjbG9zZWRpclwiKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfcmV3aW5kZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfY2xvc2VkaXIsIGNhbWxfdW5peF9vcGVuZGlyXG4vL0FsaWFzOiB1bml4X3Jld2luZGRpclxuZnVuY3Rpb24gY2FtbF91bml4X3Jld2luZGRpcihkaXJfaGFuZGxlKSB7XG4gIGNhbWxfdW5peF9jbG9zZWRpcihkaXJfaGFuZGxlKTtcbiAgdmFyIG5ld19kaXJfaGFuZGxlID0gY2FtbF91bml4X29wZW5kaXIoZGlyX2hhbmRsZS5wYXRoKTtcbiAgZGlyX2hhbmRsZS5wb2ludGVyID0gbmV3X2Rpcl9oYW5kbGUucG9pbnRlcjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9maW5kZmlyc3Rcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF91bml4X29wZW5kaXIsIGNhbWxfdW5peF9yZWFkZGlyXG4vL0FsaWFzOiB3aW5fZmluZGZpcnN0XG5mdW5jdGlvbiBjYW1sX3VuaXhfZmluZGZpcnN0KHBhdGgpIHtcbiAgLy8gVGhlIFdpbmRvd3MgY29kZSBhZGRzIHRoaXMgZ2xvYiB0byB0aGUgcGF0aCwgc28gd2UgbmVlZCB0byByZW1vdmUgaXRcbiAgdmFyIHBhdGhfanMgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhwYXRoKTtcbiAgcGF0aF9qcyA9IHBhdGhfanMucmVwbGFjZSgvKF58W1xcXFwvXSlcXCpcXC5cXCokLywgXCJcIik7XG4gIHBhdGggPSBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhwYXRoX2pzKTtcbiAgLy8gKi4qIGlzIG5vdyBzdHJpcHBlZFxuICB2YXIgZGlyX2hhbmRsZSA9IGNhbWxfdW5peF9vcGVuZGlyKHBhdGgpO1xuICB2YXIgZmlyc3RfZW50cnkgPSBjYW1sX3VuaXhfcmVhZGRpcihkaXJfaGFuZGxlKTtcbiAgLy8gVGhlIFdpbmRvd3MgYmluZGluZ3MgdHlwZSBkaXJfaGFuZGxlIGFzIGFuIGBpbnRgIGJ1dCBpdCdzIG5vdCBpbiBKU1xuICByZXR1cm4gWzAsIGZpcnN0X2VudHJ5LCBkaXJfaGFuZGxlXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZpbmRuZXh0XG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfcmVhZGRpclxuLy9BbGlhczogd2luX2ZpbmRuZXh0XG5mdW5jdGlvbiBjYW1sX3VuaXhfZmluZG5leHQoZGlyX2hhbmRsZSkge1xuICByZXR1cm4gY2FtbF91bml4X3JlYWRkaXIoZGlyX2hhbmRsZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9maW5kY2xvc2Vcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9jbG9zZWRpclxuLy9BbGlhczogd2luX2ZpbmRjbG9zZVxuZnVuY3Rpb24gY2FtbF91bml4X2ZpbmRjbG9zZShkaXJfaGFuZGxlKSB7XG4gIHJldHVybiBjYW1sX3VuaXhfY2xvc2VkaXIoZGlyX2hhbmRsZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nIGNvbnN0XG4vL0FsaWFzOiB1bml4X2luZXRfYWRkcl9vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nKCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmdzLCBtYWtlX3VuaXhfZXJyX2FyZ3MsIGNhbWxfbmFtZWRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcihyYWlzZV91bml4LCBjb2RlLCBjbWQsIG1zZywgcGF0aCkge1xuICB2YXIgdW5peF9lcnJvciA9IGNhbWxfbmFtZWRfdmFsdWUoXCJVbml4LlVuaXhfZXJyb3JcIik7XG4gIGlmIChyYWlzZV91bml4ICYmIHVuaXhfZXJyb3IpXG4gICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKGNvZGUsIGNtZCwgcGF0aCkpO1xuICBlbHNlIHtcbiAgICB2YXIgbXNnID0gY29kZSArIFwiOiBcIiArIG1zZyArIFwiLCBcIiArIGNtZDtcbiAgICBpZiAocGF0aCAhPT0gdW5kZWZpbmVkKSBtc2cgKz0gXCIgJ1wiICsgcGF0aCArIFwiJ1wiO1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG1zZyk7XG4gIH1cbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gRHVtbXkgZmlsZXN5c3RlbVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX3RyYWlsaW5nX3NsYXNoKG5hbWUpIHtcbiAgcmV0dXJuIG5hbWUuc2xpY2UoLTEpICE9PSBcIi9cIiA/IG5hbWUgKyBcIi9cIiA6IG5hbWU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3VycmVudF9kaXJcbi8vUmVxdWlyZXM6IGNhbWxfdHJhaWxpbmdfc2xhc2gsIGZzX25vZGVfc3VwcG9ydGVkXG5pZiAoZnNfbm9kZV9zdXBwb3J0ZWQoKSAmJiBnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLmN3ZClcbiAgdmFyIGNhbWxfY3VycmVudF9kaXIgPSBnbG9iYWxUaGlzLnByb2Nlc3MuY3dkKCkucmVwbGFjZSgvXFxcXC9nLCBcIi9cIik7XG5lbHNlIHZhciBjYW1sX2N1cnJlbnRfZGlyID0gXCIvc3RhdGljXCI7XG5jYW1sX2N1cnJlbnRfZGlyID0gY2FtbF90cmFpbGluZ19zbGFzaChjYW1sX2N1cnJlbnRfZGlyKTtcblxuLy9Qcm92aWRlczogY2FtbF9nZXRfcm9vdFxuLy9SZXF1aXJlczogcGF0aF9pc19hYnNvbHV0ZVxuZnVuY3Rpb24gY2FtbF9nZXRfcm9vdChwYXRoKSB7XG4gIHZhciB4ID0gcGF0aF9pc19hYnNvbHV0ZShwYXRoKTtcbiAgaWYgKCF4KSByZXR1cm47XG4gIHJldHVybiB4WzBdICsgXCIvXCI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcm9vdFxuLy9SZXF1aXJlczogY2FtbF9nZXRfcm9vdCwgY2FtbF9jdXJyZW50X2RpciwgY2FtbF9mYWlsd2l0aFxudmFyIGNhbWxfcm9vdCA9XG4gIGNhbWxfZ2V0X3Jvb3QoY2FtbF9jdXJyZW50X2RpcikgfHxcbiAgY2FtbF9mYWlsd2l0aChcInVuYWJsZSB0byBjb21wdXRlIGNhbWxfcm9vdFwiKTtcblxuLy9Qcm92aWRlczogTWxGaWxlXG5mdW5jdGlvbiBNbEZpbGUoKSB7fVxuXG4vL1Byb3ZpZGVzOiBwYXRoX2lzX2Fic29sdXRlXG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuLy9SZXF1aXJlczoganNvb19pc193aW4zMlxuZnVuY3Rpb24gbWFrZV9wYXRoX2lzX2Fic29sdXRlKCkge1xuICBmdW5jdGlvbiBwb3NpeChwYXRoKSB7XG4gICAgaWYgKHBhdGguY2hhckF0KDApID09PSBcIi9cIikgcmV0dXJuIFtcIlwiLCBwYXRoLnNsaWNlKDEpXTtcbiAgICByZXR1cm47XG4gIH1cblxuICBmdW5jdGlvbiB3aW4zMihwYXRoKSB7XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2Jsb2IvYjNmY2MyNDVmYjI1NTM5OTA5ZWYxZDVlYWEwMWRiZjkyZTE2ODYzMy9saWIvcGF0aC5qcyNMNTZcbiAgICB2YXIgc3BsaXREZXZpY2VSZSA9XG4gICAgICAvXihbYS16QS1aXTp8W1xcXFwvXXsyfVteXFxcXC9dK1tcXFxcL10rW15cXFxcL10rKT8oW1xcXFwvXSk/KFtcXHNcXFNdKj8pJC87XG4gICAgdmFyIHJlc3VsdCA9IHNwbGl0RGV2aWNlUmUuZXhlYyhwYXRoKTtcbiAgICB2YXIgZGV2aWNlID0gcmVzdWx0WzFdIHx8IFwiXCI7XG4gICAgdmFyIGlzVW5jID0gZGV2aWNlLmxlbmd0aCA+IDAgJiYgZGV2aWNlLmNoYXJBdCgxKSAhPT0gXCI6XCI7XG5cbiAgICAvLyBVTkMgcGF0aHMgYXJlIGFsd2F5cyBhYnNvbHV0ZVxuICAgIGlmIChyZXN1bHRbMl0gfHwgaXNVbmMpIHtcbiAgICAgIHZhciByb290ID0gcmVzdWx0WzFdIHx8IFwiXCI7XG4gICAgICB2YXIgc2VwID0gcmVzdWx0WzJdIHx8IFwiXCI7XG4gICAgICByZXR1cm4gW3Jvb3QsIHBhdGguc2xpY2Uocm9vdC5sZW5ndGggKyBzZXAubGVuZ3RoKV07XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuICByZXR1cm4ganNvb19pc193aW4zMiA/IHdpbjMyIDogcG9zaXg7XG59XG52YXIgcGF0aF9pc19hYnNvbHV0ZSA9IG1ha2VfcGF0aF9pc19hYnNvbHV0ZSgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21ha2VfcGF0aFxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X2RpclxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcsIHBhdGhfaXNfYWJzb2x1dGVcbmZ1bmN0aW9uIGNhbWxfbWFrZV9wYXRoKG5hbWUpIHtcbiAgbmFtZSA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWUpO1xuICBpZiAoIXBhdGhfaXNfYWJzb2x1dGUobmFtZSkpIG5hbWUgPSBjYW1sX2N1cnJlbnRfZGlyICsgbmFtZTtcbiAgdmFyIGNvbXAwID0gcGF0aF9pc19hYnNvbHV0ZShuYW1lKTtcbiAgdmFyIGNvbXAgPSBjb21wMFsxXS5zcGxpdCgvWy9cXFxcXS8pO1xuICB2YXIgbmNvbXAgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb21wLmxlbmd0aDsgaSsrKSB7XG4gICAgc3dpdGNoIChjb21wW2ldKSB7XG4gICAgICBjYXNlIFwiLi5cIjpcbiAgICAgICAgbmNvbXAucG9wKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIi5cIjpcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiXCI6XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgbmNvbXAucHVzaChjb21wW2ldKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIG5jb21wLnVuc2hpZnQoY29tcDBbMF0pO1xuICBuY29tcC5vcmlnID0gbmFtZTtcbiAgcmV0dXJuIG5jb21wO1xufVxuXG4vL1Byb3ZpZGVzOmpzb29fbW91bnRfcG9pbnRcbi8vUmVxdWlyZXM6IE1sRmFrZURldmljZSwgTWxOb2RlRGV2aWNlLCBjYW1sX3Jvb3QsIGZzX25vZGVfc3VwcG9ydGVkXG52YXIganNvb19tb3VudF9wb2ludCA9IFtdO1xuaWYgKGZzX25vZGVfc3VwcG9ydGVkKCkpIHtcbiAganNvb19tb3VudF9wb2ludC5wdXNoKHtcbiAgICBwYXRoOiBjYW1sX3Jvb3QsXG4gICAgZGV2aWNlOiBuZXcgTWxOb2RlRGV2aWNlKGNhbWxfcm9vdCksXG4gIH0pO1xufSBlbHNlIHtcbiAganNvb19tb3VudF9wb2ludC5wdXNoKHtcbiAgICBwYXRoOiBjYW1sX3Jvb3QsXG4gICAgZGV2aWNlOiBuZXcgTWxGYWtlRGV2aWNlKGNhbWxfcm9vdCksXG4gIH0pO1xufVxuanNvb19tb3VudF9wb2ludC5wdXNoKHtcbiAgcGF0aDogXCIvc3RhdGljL1wiLFxuICBkZXZpY2U6IG5ldyBNbEZha2VEZXZpY2UoXCIvc3RhdGljL1wiKSxcbn0pO1xuXG4vL1Byb3ZpZGVzOmNhbWxfbGlzdF9tb3VudF9wb2ludFxuLy9SZXF1aXJlczoganNvb19tb3VudF9wb2ludCwgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbGlzdF9tb3VudF9wb2ludCgpIHtcbiAgdmFyIHByZXYgPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGpzb29fbW91bnRfcG9pbnQubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgb2xkID0gcHJldjtcbiAgICBwcmV2ID0gWzAsIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGpzb29fbW91bnRfcG9pbnRbaV0ucGF0aCksIG9sZF07XG4gIH1cbiAgcmV0dXJuIHByZXY7XG59XG5cbi8vUHJvdmlkZXM6IHJlc29sdmVfZnNfZGV2aWNlXG4vL1JlcXVpcmVzOiBjYW1sX21ha2VfcGF0aCwganNvb19tb3VudF9wb2ludCwgY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfZ2V0X3Jvb3QsIE1sTm9kZURldmljZSwgY2FtbF90cmFpbGluZ19zbGFzaCwgZnNfbm9kZV9zdXBwb3J0ZWRcbmZ1bmN0aW9uIHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpIHtcbiAgdmFyIHBhdGggPSBjYW1sX21ha2VfcGF0aChuYW1lKTtcbiAgdmFyIG5hbWUgPSBwYXRoLmpvaW4oXCIvXCIpO1xuICB2YXIgbmFtZV9zbGFzaCA9IGNhbWxfdHJhaWxpbmdfc2xhc2gobmFtZSk7XG4gIHZhciByZXM7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwganNvb19tb3VudF9wb2ludC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBtID0ganNvb19tb3VudF9wb2ludFtpXTtcbiAgICBpZiAoXG4gICAgICBuYW1lX3NsYXNoLnNlYXJjaChtLnBhdGgpID09PSAwICYmXG4gICAgICAoIXJlcyB8fCByZXMucGF0aC5sZW5ndGggPCBtLnBhdGgubGVuZ3RoKVxuICAgIClcbiAgICAgIHJlcyA9IHtcbiAgICAgICAgcGF0aDogbS5wYXRoLFxuICAgICAgICBkZXZpY2U6IG0uZGV2aWNlLFxuICAgICAgICByZXN0OiBuYW1lLnNsaWNlKG0ucGF0aC5sZW5ndGgsIG5hbWUubGVuZ3RoKSxcbiAgICAgIH07XG4gIH1cbiAgaWYgKCFyZXMgJiYgZnNfbm9kZV9zdXBwb3J0ZWQoKSkge1xuICAgIHZhciByb290ID0gY2FtbF9nZXRfcm9vdChuYW1lKTtcbiAgICBpZiAocm9vdD8ubWF0Y2goL15bYS16QS1aXTpcXC8kLykpIHtcbiAgICAgIHZhciBtID0geyBwYXRoOiByb290LCBkZXZpY2U6IG5ldyBNbE5vZGVEZXZpY2Uocm9vdCkgfTtcbiAgICAgIGpzb29fbW91bnRfcG9pbnQucHVzaChtKTtcbiAgICAgIHJlcyA9IHtcbiAgICAgICAgcGF0aDogbS5wYXRoLFxuICAgICAgICBkZXZpY2U6IG0uZGV2aWNlLFxuICAgICAgICByZXN0OiBuYW1lLnNsaWNlKG0ucGF0aC5sZW5ndGgsIG5hbWUubGVuZ3RoKSxcbiAgICAgIH07XG4gICAgfVxuICB9XG4gIGlmIChyZXMpIHJldHVybiByZXM7XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwibm8gZGV2aWNlIGZvdW5kIGZvciBcIiArIG5hbWVfc2xhc2gpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21vdW50X2F1dG9sb2FkXG4vL1JlcXVpcmVzOiBNbEZha2VEZXZpY2UsIGNhbWxfbWFrZV9wYXRoLCBqc29vX21vdW50X3BvaW50LCBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX21vdW50X2F1dG9sb2FkKG5hbWUsIGYpIHtcbiAgdmFyIHBhdGggPSBjYW1sX21ha2VfcGF0aChuYW1lKTtcbiAgdmFyIG5hbWUgPSBjYW1sX3RyYWlsaW5nX3NsYXNoKHBhdGguam9pbihcIi9cIikpO1xuICBqc29vX21vdW50X3BvaW50LnB1c2goeyBwYXRoOiBuYW1lLCBkZXZpY2U6IG5ldyBNbEZha2VEZXZpY2UobmFtZSwgZikgfSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VubW91bnRcbi8vUmVxdWlyZXM6IGpzb29fbW91bnRfcG9pbnQsIGNhbWxfbWFrZV9wYXRoLCBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX3VubW91bnQobmFtZSkge1xuICB2YXIgcGF0aCA9IGNhbWxfbWFrZV9wYXRoKG5hbWUpO1xuICB2YXIgbmFtZSA9IGNhbWxfdHJhaWxpbmdfc2xhc2gocGF0aC5qb2luKFwiL1wiKSk7XG4gIHZhciBpZHggPSAtMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBqc29vX21vdW50X3BvaW50Lmxlbmd0aDsgaSsrKVxuICAgIGlmIChqc29vX21vdW50X3BvaW50W2ldLnBhdGggPT09IG5hbWUpIGlkeCA9IGk7XG4gIGlmIChpZHggPiAtMSkganNvb19tb3VudF9wb2ludC5zcGxpY2UoaWR4LCAxKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldGN3ZFxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X2RpciwgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vQWxpYXM6IGNhbWxfdW5peF9nZXRjd2Rcbi8vQWxpYXM6IHVuaXhfZ2V0Y3dkXG5mdW5jdGlvbiBjYW1sX3N5c19nZXRjd2QoKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhjYW1sX2N1cnJlbnRfZGlyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY2hkaXJcbi8vUmVxdWlyZXM6IGNhbWxfY3VycmVudF9kaXIsIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlLCByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF90cmFpbGluZ19zbGFzaCwgY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcsIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3N5c19jaGRpcihkaXIsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShkaXIpO1xuICBpZiAocm9vdC5kZXZpY2UuaXNfZGlyKHJvb3QucmVzdCkpIHtcbiAgICBpZiAocm9vdC5yZXN0KVxuICAgICAgY2FtbF9jdXJyZW50X2RpciA9IGNhbWxfdHJhaWxpbmdfc2xhc2gocm9vdC5wYXRoICsgcm9vdC5yZXN0KTtcbiAgICBlbHNlIGNhbWxfY3VycmVudF9kaXIgPSByb290LnBhdGg7XG4gICAgcmV0dXJuIDA7XG4gIH0gZWxzZSBpZiAocm9vdC5kZXZpY2UuZXhpc3RzKHJvb3QucmVzdCkpIHtcbiAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcihcbiAgICAgIHJhaXNlX3VuaXgsXG4gICAgICBcIkVOT1RESVJcIixcbiAgICAgIFwiY2hkaXJcIixcbiAgICAgIFwibm90IGEgZGlyZWN0b3J5XCIsXG4gICAgICBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhkaXIpLFxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoZGlyKSwgcmFpc2VfdW5peCk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZShuYW1lLCByYWlzZV91bml4KSB7XG4gIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKFxuICAgIHJhaXNlX3VuaXgsXG4gICAgXCJFTk9FTlRcIixcbiAgICBcIm5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIixcbiAgICBuYW1lLFxuICApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19maWxlX2V4aXN0c1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX2ZpbGVfZXhpc3RzKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmV4aXN0cyhyb290LnJlc3QpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yZWFkX2RpcmVjdG9yeVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19yZWFkX2RpcmVjdG9yeShuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBhID0gcm9vdC5kZXZpY2UucmVhZGRpcihyb290LnJlc3QpO1xuICB2YXIgbCA9IG5ldyBBcnJheShhLmxlbmd0aCArIDEpO1xuICBsWzBdID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSBsW2kgKyAxXSA9IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGFbaV0pO1xuICByZXR1cm4gbDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmVtb3ZlXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfcmVtb3ZlKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnVubGluayhyb290LnJlc3QpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19pc19kaXJlY3Rvcnlcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19pc19kaXJlY3RvcnkobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgYSA9IHJvb3QuZGV2aWNlLmlzX2Rpcihyb290LnJlc3QpO1xuICByZXR1cm4gYSA/IDEgOiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yZW5hbWVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19yZW5hbWUobywgbikge1xuICB2YXIgb19yb290ID0gcmVzb2x2ZV9mc19kZXZpY2Uobyk7XG4gIHZhciBuX3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuKTtcbiAgaWYgKG9fcm9vdC5kZXZpY2UgIT09IG5fcm9vdC5kZXZpY2UpXG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3lzX3JlbmFtZTogY2Fubm90IG1vdmUgZmlsZSBiZXR3ZWVuIHR3byBmaWxlc3lzdGVtXCIpO1xuICBpZiAoIW9fcm9vdC5kZXZpY2UucmVuYW1lKSBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zeXNfcmVuYW1lOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIG9fcm9vdC5kZXZpY2UucmVuYW1lKG9fcm9vdC5yZXN0LCBuX3Jvb3QucmVzdCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX21rZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfbWtkaXIobmFtZSwgcGVybSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByb290LmRldmljZS5ta2Rpcihyb290LnJlc3QsIHBlcm0pO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcm1kaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19ybWRpcihuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJvb3QuZGV2aWNlLnJtZGlyKHJvb3QucmVzdCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX21hcF9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2JhX21hcF9maWxlKF92ZmQsIF9raW5kLCBfbGF5b3V0LCBfc2hhcmVkLCBfZGltcywgX3Bvcykge1xuICAvLyB2YXIgZGF0YSA9IGNhbWxfc3lzX2Zkc1t2ZmRdO1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9iYV9tYXBfZmlsZSBub3QgaW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfbWFwX2ZpbGVcbmZ1bmN0aW9uIGNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGUoYXJndiwgX2FyZ24pIHtcbiAgLy8gYXJnbiA9PT0gNlxuICByZXR1cm4gY2FtbF9iYV9tYXBfZmlsZShhcmd2WzBdLCBhcmd2WzFdLCBhcmd2WzJdLCBhcmd2WzNdLCBhcmd2WzRdLCBhcmd2WzVdKTtcbn1cblxuLy9Qcm92aWRlczoganNvb19jcmVhdGVfZmlsZV9leHRlcm5cbmZ1bmN0aW9uIGpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuKG5hbWUsIGNvbnRlbnQpIHtcbiAgaWYgKGdsb2JhbFRoaXMuanNvb19jcmVhdGVfZmlsZSkgZ2xvYmFsVGhpcy5qc29vX2NyZWF0ZV9maWxlKG5hbWUsIGNvbnRlbnQpO1xuICBlbHNlIHtcbiAgICBpZiAoIWdsb2JhbFRoaXMuanNvb19mc190bXApIGdsb2JhbFRoaXMuanNvb19mc190bXAgPSBbXTtcbiAgICBnbG9iYWxUaGlzLmpzb29fZnNfdG1wLnB1c2goeyBuYW1lOiBuYW1lLCBjb250ZW50OiBjb250ZW50IH0pO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZzX2luaXRcbi8vUmVxdWlyZXM6IGpzb29fY3JlYXRlX2ZpbGVcbmZ1bmN0aW9uIGNhbWxfZnNfaW5pdCgpIHtcbiAgdmFyIHRtcCA9IGdsb2JhbFRoaXMuanNvb19mc190bXA7XG4gIGlmICh0bXApIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRtcC5sZW5ndGg7IGkrKykge1xuICAgICAganNvb19jcmVhdGVfZmlsZSh0bXBbaV0ubmFtZSwgdG1wW2ldLmNvbnRlbnQpO1xuICAgIH1cbiAgfVxuICBnbG9iYWxUaGlzLmpzb29fY3JlYXRlX2ZpbGUgPSBqc29vX2NyZWF0ZV9maWxlO1xuICBnbG9iYWxUaGlzLmpzb29fZnNfdG1wID0gW107XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9jcmVhdGVfZmlsZShuYW1lLCBjb250ZW50KSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UucmVnaXN0ZXIpIGNhbWxfZmFpbHdpdGgoXCJjYW5ub3QgcmVnaXN0ZXIgZmlsZVwiKTtcbiAgcm9vdC5kZXZpY2UucmVnaXN0ZXIocm9vdC5yZXN0LCBjb250ZW50KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29fY3JlYXRlX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfY3JlYXRlX2ZpbGUsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG5mdW5jdGlvbiBqc29vX2NyZWF0ZV9maWxlKG5hbWUsIGNvbnRlbnQpIHtcbiAgdmFyIG5hbWUgPSBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhuYW1lKTtcbiAgdmFyIGNvbnRlbnQgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNvbnRlbnQpO1xuICByZXR1cm4gY2FtbF9jcmVhdGVfZmlsZShuYW1lLCBjb250ZW50KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yZWFkX2ZpbGVfY29udGVudFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlLCBjYW1sX3N0cmluZ19vZl91aW50OF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcsIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3JlYWRfZmlsZV9jb250ZW50KG5hbWUpIHtcbiAgdmFyIG5hbWUgPSB0eXBlb2YgbmFtZSA9PT0gXCJzdHJpbmdcIiA/IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKG5hbWUpIDogbmFtZTtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKHJvb3QuZGV2aWNlLmV4aXN0cyhyb290LnJlc3QpKSB7XG4gICAgdmFyIGZpbGUgPSByb290LmRldmljZS5vcGVuKHJvb3QucmVzdCwgeyByZG9ubHk6IDEgfSk7XG4gICAgdmFyIGxlbiA9IGZpbGUubGVuZ3RoKCk7XG4gICAgdmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgZmlsZS5yZWFkKGJ1ZiwgMCwgbGVuLCBmYWxzZSk7XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX3VpbnQ4X2FycmF5KGJ1Zik7XG4gIH1cbiAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZSkpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogTWxGYWtlRGV2aWNlXG4vL1JlcXVpcmVzOiBNbEZha2VGaWxlLCBNbEZha2VGZCwgY2FtbF9jcmVhdGVfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfYXJyYXksIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX2J5dGVzX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfYnl0ZXMsIGNhbWxfaXNfbWxfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvclxuY2xhc3MgTWxGYWtlRGV2aWNlIHtcbiAgY29uc3RydWN0b3Iocm9vdCwgZikge1xuICAgIHRoaXMuY29udGVudCA9IHt9O1xuICAgIHRoaXMucm9vdCA9IHJvb3Q7XG4gICAgdGhpcy5sb29rdXBGdW4gPSBmO1xuICB9XG5cbiAgbm0obmFtZSkge1xuICAgIHJldHVybiB0aGlzLnJvb3QgKyBuYW1lO1xuICB9XG5cbiAgY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSkge1xuICAgIHZhciBjb21wID0gbmFtZS5zcGxpdChcIi9cIik7XG4gICAgdmFyIHJlcyA9IFwiXCI7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb21wLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgcmVzICs9IGNvbXBbaV0gKyBcIi9cIjtcbiAgICAgIGlmICh0aGlzLmNvbnRlbnRbcmVzXSkgY29udGludWU7XG4gICAgICB0aGlzLmNvbnRlbnRbcmVzXSA9IFN5bWJvbChcImRpcmVjdG9yeVwiKTtcbiAgICB9XG4gIH1cblxuICBzbGFzaChuYW1lKSB7XG4gICAgcmV0dXJuIC9cXC8kLy50ZXN0KG5hbWUpID8gbmFtZSA6IG5hbWUgKyBcIi9cIjtcbiAgfVxuXG4gIGxvb2t1cChuYW1lKSB7XG4gICAgaWYgKCF0aGlzLmNvbnRlbnRbbmFtZV0gJiYgdGhpcy5sb29rdXBGdW4pIHtcbiAgICAgIHZhciByZXMgPSB0aGlzLmxvb2t1cEZ1bihcbiAgICAgICAgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcodGhpcy5yb290KSxcbiAgICAgICAgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcobmFtZSksXG4gICAgICApO1xuICAgICAgaWYgKHJlcyAhPT0gMCkge1xuICAgICAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgICAgICB0aGlzLmNvbnRlbnRbbmFtZV0gPSBuZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX3N0cmluZyhyZXNbMV0pKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBleGlzdHMobmFtZSwgZG9fbm90X2xvb2t1cCkge1xuICAgIC8vIFRoZSByb290IG9mIHRoZSBkZXZpY2UgZXhpc3RzXG4gICAgaWYgKG5hbWUgPT09IFwiXCIpIHJldHVybiAxO1xuICAgIC8vIENoZWNrIGlmIGEgZGlyZWN0b3J5IGV4aXN0c1xuICAgIHZhciBuYW1lX3NsYXNoID0gdGhpcy5zbGFzaChuYW1lKTtcbiAgICBpZiAodGhpcy5jb250ZW50W25hbWVfc2xhc2hdKSByZXR1cm4gMTtcbiAgICAvLyBDaGVjayBpZiBhIGZpbGUgZXhpc3RzXG4gICAgaWYgKCFkb19ub3RfbG9va3VwKSB0aGlzLmxvb2t1cChuYW1lKTtcbiAgICByZXR1cm4gdGhpcy5jb250ZW50W25hbWVdID8gMSA6IDA7XG4gIH1cblxuICBpc0ZpbGUobmFtZSkge1xuICAgIGlmICh0aGlzLmV4aXN0cyhuYW1lKSAmJiAhdGhpcy5pc19kaXIobmFtZSkpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gIH1cblxuICByZW5hbWVfZGlyKG9sZG5hbWUsIG5ld25hbWUpIHtcbiAgICBpZiAodGhpcy5leGlzdHMobmV3bmFtZSkpIHtcbiAgICAgIGlmICghdGhpcy5pc19kaXIobmV3bmFtZSkpIHtcbiAgICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXG4gICAgICAgICAgdGhpcy5ubShuZXduYW1lKSArIFwiIDogZmlsZSBhbHJlYWR5IGV4aXN0cyBhbmQgaXMgbm90IGEgZGlyZWN0b3J5XCIsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5yZWFkZGlyKG5ld25hbWUpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuZXduYW1lKSArIFwiIDogZGlyZWN0b3J5IG5vdCBlbXB0eVwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIG9sZF9zbGFzaCA9IHRoaXMuc2xhc2gob2xkbmFtZSk7XG4gICAgdmFyIG5ld19zbGFzaCA9IHRoaXMuc2xhc2gobmV3bmFtZSk7XG4gICAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZChuZXdfc2xhc2gpO1xuICAgIGZvciAoY29uc3QgZiBvZiB0aGlzLnJlYWRkaXIob2xkbmFtZSkpIHtcbiAgICAgIHRoaXMucmVuYW1lKG9sZF9zbGFzaCArIGYsIG5ld19zbGFzaCArIGYpO1xuICAgIH1cbiAgICBkZWxldGUgdGhpcy5jb250ZW50W29sZF9zbGFzaF07XG4gIH1cblxuICByZW5hbWUob2xkbmFtZSwgbmV3bmFtZSkge1xuICAgIGlmICghdGhpcy5leGlzdHMob2xkbmFtZSkpXG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG9sZG5hbWUpICsgXCIgOiBubyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xuICAgIGlmICh0aGlzLmlzX2RpcihvbGRuYW1lKSkge1xuICAgICAgdGhpcy5yZW5hbWVfZGlyKG9sZG5hbWUsIG5ld25hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5leGlzdHMobmV3bmFtZSkgJiYgdGhpcy5pc19kaXIobmV3bmFtZSkpIHtcbiAgICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXG4gICAgICAgICAgdGhpcy5ubShuZXduYW1lKSArIFwiIDogZmlsZSBhbHJlYWR5IGV4aXN0cyBhbmQgaXMgYSBkaXJlY3RvcnlcIixcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY29udGVudFtuZXduYW1lXSA9IHRoaXMuY29udGVudFtvbGRuYW1lXTtcbiAgICAgIGRlbGV0ZSB0aGlzLmNvbnRlbnRbb2xkbmFtZV07XG4gICAgfVxuICB9XG5cbiAgbWtkaXIobmFtZSwgX21vZGUsIHJhaXNlX3VuaXgpIHtcbiAgICBpZiAodGhpcy5leGlzdHMobmFtZSkpXG4gICAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcihcbiAgICAgICAgcmFpc2VfdW5peCxcbiAgICAgICAgXCJFRVhJU1RcIixcbiAgICAgICAgXCJta2RpclwiLFxuICAgICAgICBcImZpbGUgYWxyZWFkeSBleGlzdHNcIixcbiAgICAgICAgdGhpcy5ubShuYW1lKSxcbiAgICAgICk7XG4gICAgdmFyIHBhcmVudCA9IC9eKC4qKVxcL1teL10rLy5leGVjKG5hbWUpO1xuICAgIHBhcmVudCA9IHBhcmVudD8uWzFdIHx8IFwiXCI7XG4gICAgaWYgKCF0aGlzLmV4aXN0cyhwYXJlbnQpKVxuICAgICAgY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3IoXG4gICAgICAgIHJhaXNlX3VuaXgsXG4gICAgICAgIFwiRU5PRU5UXCIsXG4gICAgICAgIFwibWtkaXJcIixcbiAgICAgICAgXCJubyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIsXG4gICAgICAgIHRoaXMubm0obmFtZSksXG4gICAgICApO1xuICAgIGlmICghdGhpcy5pc19kaXIocGFyZW50KSlcbiAgICAgIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKFxuICAgICAgICByYWlzZV91bml4LFxuICAgICAgICBcIkVOT1RESVJcIixcbiAgICAgICAgXCJta2RpclwiLFxuICAgICAgICBcIm5vdCBhIGRpcmVjdG9yeVwiLFxuICAgICAgICB0aGlzLm5tKG5hbWUpLFxuICAgICAgKTtcbiAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKHRoaXMuc2xhc2gobmFtZSkpO1xuICB9XG5cbiAgcm1kaXIobmFtZSwgcmFpc2VfdW5peCkge1xuICAgIHZhciBuYW1lX3NsYXNoID0gbmFtZSA9PT0gXCJcIiA/IFwiXCIgOiB0aGlzLnNsYXNoKG5hbWUpO1xuICAgIGlmICghdGhpcy5leGlzdHMobmFtZSkpXG4gICAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcihcbiAgICAgICAgcmFpc2VfdW5peCxcbiAgICAgICAgXCJFTk9FTlRcIixcbiAgICAgICAgXCJybWRpclwiLFxuICAgICAgICBcIm5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIixcbiAgICAgICAgdGhpcy5ubShuYW1lKSxcbiAgICAgICk7XG4gICAgaWYgKCF0aGlzLmlzX2RpcihuYW1lKSlcbiAgICAgIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKFxuICAgICAgICByYWlzZV91bml4LFxuICAgICAgICBcIkVOT1RESVJcIixcbiAgICAgICAgXCJybWRpclwiLFxuICAgICAgICBcIm5vdCBhIGRpcmVjdG9yeVwiLFxuICAgICAgICB0aGlzLm5tKG5hbWUpLFxuICAgICAgKTtcbiAgICBmb3IgKHZhciBuIGluIHRoaXMuY29udGVudCkge1xuICAgICAgaWYgKG4uc3RhcnRzV2l0aChuYW1lX3NsYXNoKSAmJiBuICE9PSBuYW1lX3NsYXNoKVxuICAgICAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcihcbiAgICAgICAgICByYWlzZV91bml4LFxuICAgICAgICAgIFwiRU5PVEVNUFRZXCIsXG4gICAgICAgICAgXCJybWRpclwiLFxuICAgICAgICAgIFwiZGlyZWN0b3J5IG5vdCBlbXB0eVwiLFxuICAgICAgICAgIHRoaXMubm0obmFtZSksXG4gICAgICAgICk7XG4gICAgfVxuICAgIGRlbGV0ZSB0aGlzLmNvbnRlbnRbbmFtZV9zbGFzaF07XG4gIH1cblxuICByZWFkZGlyKG5hbWUpIHtcbiAgICB2YXIgbmFtZV9zbGFzaCA9IG5hbWUgPT09IFwiXCIgPyBcIlwiIDogdGhpcy5zbGFzaChuYW1lKTtcbiAgICBpZiAoIXRoaXMuZXhpc3RzKG5hbWUpKSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIik7XG4gICAgfVxuICAgIGlmICghdGhpcy5pc19kaXIobmFtZSkpIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgICB2YXIgc2VlbiA9IHt9O1xuICAgIHZhciBhID0gW107XG4gICAgZm9yICh2YXIgbiBpbiB0aGlzLmNvbnRlbnQpIHtcbiAgICAgIGlmIChuLnN0YXJ0c1dpdGgobmFtZV9zbGFzaCkgJiYgbiAhPT0gbmFtZV9zbGFzaCkge1xuICAgICAgICB2YXIgbGFzdCA9IG4uaW5kZXhPZihcIi9cIiwgbmFtZV9zbGFzaC5sZW5ndGgpO1xuICAgICAgICBpZiAobGFzdCA8IDApIGxhc3QgPSB1bmRlZmluZWQ7XG4gICAgICAgIHZhciBtID0gbi5zbGljZShuYW1lX3NsYXNoLmxlbmd0aCwgbGFzdCk7XG4gICAgICAgIGlmIChtICYmICFzZWVuW21dKSB7XG4gICAgICAgICAgc2VlblttXSA9IHRydWU7XG4gICAgICAgICAgYS5wdXNoKG0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhO1xuICB9XG5cbiAgb3BlbmRpcihuYW1lLCByYWlzZV91bml4KSB7XG4gICAgdmFyIGEgPSB0aGlzLnJlYWRkaXIobmFtZSk7XG4gICAgdmFyIGMgPSBmYWxzZTtcbiAgICB2YXIgaSA9IDA7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlYWRTeW5jOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChjKVxuICAgICAgICAgIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKFxuICAgICAgICAgICAgcmFpc2VfdW5peCxcbiAgICAgICAgICAgIFwiRUJBREZcIixcbiAgICAgICAgICAgIFwicmVhZGRpclwiLFxuICAgICAgICAgICAgXCJiYWQgZmlsZSBkZXNjcmlwdG9yXCIsXG4gICAgICAgICAgKTtcbiAgICAgICAgaWYgKGkgPT09IGEubGVuZ3RoKSByZXR1cm4gbnVsbDtcbiAgICAgICAgdmFyIGVudHJ5ID0gYVtpXTtcbiAgICAgICAgaSsrO1xuICAgICAgICByZXR1cm4geyBuYW1lOiBlbnRyeSB9O1xuICAgICAgfSxcbiAgICAgIGNsb3NlU3luYzogZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoYylcbiAgICAgICAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcihcbiAgICAgICAgICAgIHJhaXNlX3VuaXgsXG4gICAgICAgICAgICBcIkVCQURGXCIsXG4gICAgICAgICAgICBcInJlYWRkaXJcIixcbiAgICAgICAgICAgIFwiYmFkIGZpbGUgZGVzY3JpcHRvclwiLFxuICAgICAgICAgICk7XG4gICAgICAgIGMgPSB0cnVlO1xuICAgICAgICBhID0gW107XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBpc19kaXIobmFtZSkge1xuICAgIGlmIChuYW1lID09PSBcIlwiKSByZXR1cm4gdHJ1ZTtcbiAgICB2YXIgbmFtZV9zbGFzaCA9IHRoaXMuc2xhc2gobmFtZSk7XG4gICAgcmV0dXJuIHRoaXMuY29udGVudFtuYW1lX3NsYXNoXSA/IDEgOiAwO1xuICB9XG5cbiAgdW5saW5rKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgICBpZiAoIXRoaXMuZXhpc3RzKG5hbWUsIHRydWUpKSB7XG4gICAgICAvLyBbdHJ1ZV0gbWVhbnMgbm8gXCJsb29rdXBcIiBpZiBub3QgZm91bmQuXG4gICAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcihcbiAgICAgICAgcmFpc2VfdW5peCxcbiAgICAgICAgXCJFTk9FTlRcIixcbiAgICAgICAgXCJ1bmxpbmtcIixcbiAgICAgICAgXCJubyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIsXG4gICAgICAgIG5hbWUsXG4gICAgICApO1xuICAgIH1cbiAgICBkZWxldGUgdGhpcy5jb250ZW50W25hbWVdO1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgYWNjZXNzKG5hbWUsIF9mbGFncywgcmFpc2VfdW5peCkge1xuICAgIHRoaXMubG9va3VwKG5hbWUpO1xuICAgIGlmICh0aGlzLmNvbnRlbnRbbmFtZV0pIHtcbiAgICAgIGlmICh0aGlzLmlzX2RpcihuYW1lKSlcbiAgICAgICAgY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3IoXG4gICAgICAgICAgcmFpc2VfdW5peCxcbiAgICAgICAgICBcIkVBQ0NFU1NcIixcbiAgICAgICAgICBcImFjY2Vzc1wiLFxuICAgICAgICAgIFwicGVybWlzc2lvbiBkZW5pZWQsXCIsXG4gICAgICAgICAgdGhpcy5ubShuYW1lKSxcbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUodGhpcy5ubShuYW1lKSwgcmFpc2VfdW5peCk7XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9XG5cbiAgb3BlbihuYW1lLCBmLCBfcGVybXMsIHJhaXNlX3VuaXgpIHtcbiAgICB2YXIgZmlsZTtcbiAgICB0aGlzLmxvb2t1cChuYW1lKTtcbiAgICBpZiAodGhpcy5jb250ZW50W25hbWVdKSB7XG4gICAgICBpZiAodGhpcy5pc19kaXIobmFtZSkpXG4gICAgICAgIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKFxuICAgICAgICAgIHJhaXNlX3VuaXgsXG4gICAgICAgICAgXCJFSVNESVJcIixcbiAgICAgICAgICBcIm9wZW5cIixcbiAgICAgICAgICBcImlsbGVnYWwgb3BlcmF0aW9uIG9uIGEgZGlyZWN0b3J5XCIsXG4gICAgICAgICAgdGhpcy5ubShuYW1lKSxcbiAgICAgICAgKTtcbiAgICAgIGlmIChmLmNyZWF0ZSAmJiBmLmV4Y2wpXG4gICAgICAgIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKFxuICAgICAgICAgIHJhaXNlX3VuaXgsXG4gICAgICAgICAgXCJFRVhJU1RcIixcbiAgICAgICAgICBcIm9wZW5cIixcbiAgICAgICAgICBcImZpbGUgYWxyZWFkeSBleGlzdHNcIixcbiAgICAgICAgICB0aGlzLm5tKG5hbWUpLFxuICAgICAgICApO1xuICAgICAgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgICAgIGlmIChmLnRydW5jYXRlKSBmaWxlLnRydW5jYXRlKDApO1xuICAgIH0gZWxzZSBpZiAoZi5jcmVhdGUpIHtcbiAgICAgIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSk7XG4gICAgICB0aGlzLmNvbnRlbnRbbmFtZV0gPSBuZXcgTWxGYWtlRmlsZShjYW1sX2NyZWF0ZV9ieXRlcygwKSk7XG4gICAgICBmaWxlID0gdGhpcy5jb250ZW50W25hbWVdO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSh0aGlzLm5tKG5hbWUpLCByYWlzZV91bml4KTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBNbEZha2VGZCh0aGlzLm5tKG5hbWUpLCBmaWxlLCBmKTtcbiAgfVxuXG4gIHRydW5jYXRlKG5hbWUsIGxlbiwgcmFpc2VfdW5peCkge1xuICAgIHZhciBmaWxlO1xuICAgIHRoaXMubG9va3VwKG5hbWUpO1xuICAgIGlmICh0aGlzLmNvbnRlbnRbbmFtZV0pIHtcbiAgICAgIGlmICh0aGlzLmlzX2RpcihuYW1lKSlcbiAgICAgICAgY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3IoXG4gICAgICAgICAgcmFpc2VfdW5peCxcbiAgICAgICAgICBcIkVJU0RJUlwiLFxuICAgICAgICAgIFwib3BlblwiLFxuICAgICAgICAgIFwiaWxsZWdhbCBvcGVyYXRpb24gb24gYSBkaXJlY3RvcnlcIixcbiAgICAgICAgICB0aGlzLm5tKG5hbWUpLFxuICAgICAgICApO1xuICAgICAgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgICAgIGZpbGUudHJ1bmNhdGUobGVuKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUodGhpcy5ubShuYW1lKSwgcmFpc2VfdW5peCk7XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXIobmFtZSwgY29udGVudCkge1xuICAgIHZhciBmaWxlO1xuICAgIGlmICh0aGlzLmNvbnRlbnRbbmFtZV0pXG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmaWxlIGFscmVhZHkgZXhpc3RzXCIpO1xuICAgIGlmIChjYW1sX2lzX21sX2J5dGVzKGNvbnRlbnQpKSBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY29udGVudCk7XG4gICAgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKGNvbnRlbnQpKVxuICAgICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGNvbnRlbnQpKTtcbiAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KGNvbnRlbnQpKVxuICAgICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoY29udGVudCkpO1xuICAgIGVsc2UgaWYgKHR5cGVvZiBjb250ZW50ID09PSBcInN0cmluZ1wiKVxuICAgICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhjb250ZW50KSk7XG4gICAgZWxzZSBpZiAoY29udGVudC50b1N0cmluZykge1xuICAgICAgdmFyIGJ5dGVzID0gY2FtbF9ieXRlc19vZl9zdHJpbmcoXG4gICAgICAgIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGNvbnRlbnQudG9TdHJpbmcoKSksXG4gICAgICApO1xuICAgICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGJ5dGVzKTtcbiAgICB9XG4gICAgaWYgKGZpbGUpIHtcbiAgICAgIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSk7XG4gICAgICB0aGlzLmNvbnRlbnRbbmFtZV0gPSBmaWxlO1xuICAgIH0gZWxzZVxuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXG4gICAgICAgIHRoaXMubm0obmFtZSkgKyBcIiA6IHJlZ2lzdGVyaW5nIGZpbGUgd2l0aCBpbnZhbGlkIGNvbnRlbnQgdHlwZVwiLFxuICAgICAgKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBNbEZha2VGaWxlXG4vL1JlcXVpcmVzOiBNbEZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfY3JlYXRlX2J5dGVzLCBjYW1sX21sX2J5dGVzX2xlbmd0aCwgY2FtbF9ibGl0X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzLCBjYW1sX2J5dGVzX29mX3VpbnQ4X2FycmF5XG5jbGFzcyBNbEZha2VGaWxlIGV4dGVuZHMgTWxGaWxlIHtcbiAgY29uc3RydWN0b3IoY29udGVudCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5kYXRhID0gY29udGVudDtcbiAgfVxuXG4gIHRydW5jYXRlKGxlbikge1xuICAgIHZhciBvbGQgPSB0aGlzLmRhdGE7XG4gICAgdmFyIG9sZF9sZW4gPSBjYW1sX21sX2J5dGVzX2xlbmd0aChvbGQpO1xuICAgIHRoaXMuZGF0YSA9IGNhbWxfY3JlYXRlX2J5dGVzKGxlbiB8IDApO1xuICAgIGNhbWxfYmxpdF9ieXRlcyhvbGQsIDAsIHRoaXMuZGF0YSwgMCwgTWF0aC5taW4obGVuLCBvbGRfbGVuKSk7XG4gIH1cblxuICBsZW5ndGgoKSB7XG4gICAgcmV0dXJuIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHRoaXMuZGF0YSk7XG4gIH1cblxuICB3cml0ZShvZmZzZXQsIGJ1ZiwgcG9zLCBsZW4pIHtcbiAgICB2YXIgY2xlbiA9IHRoaXMubGVuZ3RoKCk7XG4gICAgaWYgKG9mZnNldCArIGxlbiA+PSBjbGVuKSB7XG4gICAgICB2YXIgbmV3X3N0ciA9IGNhbWxfY3JlYXRlX2J5dGVzKG9mZnNldCArIGxlbik7XG4gICAgICB2YXIgb2xkX2RhdGEgPSB0aGlzLmRhdGE7XG4gICAgICB0aGlzLmRhdGEgPSBuZXdfc3RyO1xuICAgICAgY2FtbF9ibGl0X2J5dGVzKG9sZF9kYXRhLCAwLCB0aGlzLmRhdGEsIDAsIGNsZW4pO1xuICAgIH1cbiAgICBjYW1sX2JsaXRfYnl0ZXMoXG4gICAgICBjYW1sX2J5dGVzX29mX3VpbnQ4X2FycmF5KGJ1ZiksXG4gICAgICBwb3MsXG4gICAgICB0aGlzLmRhdGEsXG4gICAgICBvZmZzZXQsXG4gICAgICBsZW4sXG4gICAgKTtcbiAgICByZXR1cm4gbGVuO1xuICB9XG5cbiAgcmVhZChvZmZzZXQsIGJ1ZiwgcG9zLCBsZW4pIHtcbiAgICB2YXIgY2xlbiA9IHRoaXMubGVuZ3RoKCk7XG4gICAgaWYgKG9mZnNldCArIGxlbiA+PSBjbGVuKSB7XG4gICAgICBsZW4gPSBjbGVuIC0gb2Zmc2V0O1xuICAgIH1cbiAgICBpZiAobGVuID4gMCkge1xuICAgICAgdmFyIGRhdGEgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4gfCAwKTtcbiAgICAgIGNhbWxfYmxpdF9ieXRlcyh0aGlzLmRhdGEsIG9mZnNldCwgZGF0YSwgMCwgbGVuKTtcbiAgICAgIGJ1Zi5zZXQoY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhkYXRhKSwgcG9zKTtcbiAgICAgIHJldHVybiBsZW47XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IE1sRmFrZUZkX291dFxuLy9SZXF1aXJlczogTWxGYWtlRmlsZSwgY2FtbF9jcmVhdGVfYnl0ZXMsIGNhbWxfYmxpdF9ieXRlcywgY2FtbF9ieXRlc19vZl91aW50OF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3JcbmNsYXNzIE1sRmFrZUZkX291dCBleHRlbmRzIE1sRmFrZUZpbGUge1xuICBjb25zdHJ1Y3RvcihmZCwgZmxhZ3MpIHtcbiAgICBzdXBlcihjYW1sX2NyZWF0ZV9ieXRlcygwKSk7XG4gICAgdGhpcy5sb2cgPSBmdW5jdGlvbiAoX3MpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH07XG4gICAgaWYgKGZkID09PSAxICYmIHR5cGVvZiBjb25zb2xlLmxvZyA9PT0gXCJmdW5jdGlvblwiKSB0aGlzLmxvZyA9IGNvbnNvbGUubG9nO1xuICAgIGVsc2UgaWYgKGZkID09PSAyICYmIHR5cGVvZiBjb25zb2xlLmVycm9yID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICB0aGlzLmxvZyA9IGNvbnNvbGUuZXJyb3I7XG4gICAgZWxzZSBpZiAodHlwZW9mIGNvbnNvbGUubG9nID09PSBcImZ1bmN0aW9uXCIpIHRoaXMubG9nID0gY29uc29sZS5sb2c7XG4gICAgdGhpcy5mbGFncyA9IGZsYWdzO1xuICB9XG5cbiAgbGVuZ3RoKCkge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgdHJ1bmNhdGUoX2xlbiwgcmFpc2VfdW5peCkge1xuICAgIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKFxuICAgICAgcmFpc2VfdW5peCxcbiAgICAgIFwiRUlOVkFMXCIsXG4gICAgICBcImZ0cnVuY2F0ZVwiLFxuICAgICAgXCJpbnZhbGlkIGFyZ3VtZW50XCIsXG4gICAgKTtcbiAgfVxuXG4gIHdyaXRlKGJ1ZiwgcG9zLCBsZW4sIHJhaXNlX3VuaXgpIHtcbiAgICB2YXIgd3JpdHRlbiA9IGxlbjtcbiAgICBpZiAodGhpcy5sb2cpIHtcbiAgICAgIGlmIChcbiAgICAgICAgbGVuID4gMCAmJlxuICAgICAgICBwb3MgPj0gMCAmJlxuICAgICAgICBwb3MgKyBsZW4gPD0gYnVmLmxlbmd0aCAmJlxuICAgICAgICBidWZbcG9zICsgbGVuIC0gMV0gPT09IDEwXG4gICAgICApXG4gICAgICAgIGxlbi0tO1xuICAgICAgLy8gRG8gbm90IG91dHB1dCB0aGUgbGFzdCBcXG4gaWYgcHJlc2VudFxuICAgICAgLy8gYXMgY29uc29sZSBsb2dnaW5nIGRpc3BsYXkgYSBuZXdsaW5lIGF0IHRoZSBlbmRcbiAgICAgIHZhciBzcmMgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4pO1xuICAgICAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2ZfdWludDhfYXJyYXkoYnVmKSwgcG9zLCBzcmMsIDAsIGxlbik7XG4gICAgICB0aGlzLmxvZyhzcmMudG9VdGYxNigpKTtcbiAgICAgIHJldHVybiB3cml0dGVuO1xuICAgIH1cbiAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcihcbiAgICAgIHJhaXNlX3VuaXgsXG4gICAgICBcIkVCQURGXCIsXG4gICAgICBcIndyaXRlXCIsXG4gICAgICBcImJhZCBmaWxlIGRlc2NyaXB0b3JcIixcbiAgICApO1xuICB9XG5cbiAgcmVhZChfYnVmLCBfcG9zLCBfbGVuLCByYWlzZV91bml4KSB7XG4gICAgY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3IocmFpc2VfdW5peCwgXCJFQkFERlwiLCBcInJlYWRcIiwgXCJiYWQgZmlsZSBkZXNjcmlwdG9yXCIpO1xuICB9XG5cbiAgc2VlayhfbGVuLCBfd2hlbmNlLCByYWlzZV91bml4KSB7XG4gICAgY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3IocmFpc2VfdW5peCwgXCJFU1BJUEVcIiwgXCJsc2Vla1wiLCBcImlsbGVnYWwgc2Vla1wiKTtcbiAgfVxuICBwb3MoKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5sb2cgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBjaGVja19zdHJlYW1fc2VtYW50aWNzKF9jbWQpIHt9XG59XG5cbi8vUHJvdmlkZXM6IE1sRmFrZUZkXG4vL1JlcXVpcmVzOiBNbEZha2VGaWxlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvclxuY2xhc3MgTWxGYWtlRmQge1xuICBjb25zdHJ1Y3RvcihuYW1lLCBmaWxlLCBmbGFncykge1xuICAgIHRoaXMuZmlsZSA9IGZpbGU7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLmZsYWdzID0gZmxhZ3M7XG4gICAgdGhpcy5vZmZzZXQgPSAwO1xuICAgIHRoaXMuc2Vla2VkID0gZmFsc2U7XG4gIH1cblxuICBlcnJfY2xvc2VkKGNtZCwgcmFpc2VfdW5peCkge1xuICAgIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKHJhaXNlX3VuaXgsIFwiRUJBREZcIiwgY21kLCBcImJhZCBmaWxlIGRlc2NyaXB0b3JcIik7XG4gIH1cblxuICBsZW5ndGgoKSB7XG4gICAgaWYgKHRoaXMuZmlsZSkgcmV0dXJuIHRoaXMuZmlsZS5sZW5ndGgoKTtcbiAgICB0aGlzLmVycl9jbG9zZWQoXCJsZW5ndGhcIik7XG4gIH1cblxuICB0cnVuY2F0ZShsZW4sIHJhaXNlX3VuaXgpIHtcbiAgICBpZiAodGhpcy5maWxlKSB7XG4gICAgICBpZiAoISh0aGlzLmZsYWdzLndyb25seSB8fCB0aGlzLmZsYWdzLnJkd3IpKVxuICAgICAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcihcbiAgICAgICAgICByYWlzZV91bml4LFxuICAgICAgICAgIFwiRUlOVkFMXCIsXG4gICAgICAgICAgXCJ0cnVuY2F0ZVwiLFxuICAgICAgICAgIFwiaW52YWxpZCBhcmd1bWVudFwiLFxuICAgICAgICApO1xuICAgICAgcmV0dXJuIHRoaXMuZmlsZS50cnVuY2F0ZShsZW4pO1xuICAgIH1cbiAgICB0aGlzLmVycl9jbG9zZWQoXCJ0cnVuY2F0ZVwiLCByYWlzZV91bml4KTtcbiAgfVxuXG4gIHdyaXRlKGJ1ZiwgcG9zLCBsZW4sIHJhaXNlX3VuaXgpIHtcbiAgICBpZiAodGhpcy5maWxlICYmICh0aGlzLmZsYWdzLndyb25seSB8fCB0aGlzLmZsYWdzLnJkd3IpKSB7XG4gICAgICB2YXIgb2Zmc2V0ID0gdGhpcy5vZmZzZXQ7XG4gICAgICBsZW4gPSB0aGlzLmZpbGUud3JpdGUob2Zmc2V0LCBidWYsIHBvcywgbGVuKTtcbiAgICAgIHRoaXMub2Zmc2V0ICs9IGxlbjtcbiAgICAgIHJldHVybiBsZW47XG4gICAgfVxuICAgIHRoaXMuZXJyX2Nsb3NlZChcIndyaXRlXCIsIHJhaXNlX3VuaXgpO1xuICB9XG5cbiAgcmVhZChidWYsIHBvcywgbGVuLCByYWlzZV91bml4KSB7XG4gICAgaWYgKHRoaXMuZmlsZSAmJiAhdGhpcy5mbGFncy53cm9ubHkpIHtcbiAgICAgIHZhciBvZmZzZXQgPSB0aGlzLm9mZnNldDtcbiAgICAgIGxlbiA9IHRoaXMuZmlsZS5yZWFkKG9mZnNldCwgYnVmLCBwb3MsIGxlbik7XG4gICAgICB0aGlzLm9mZnNldCArPSBsZW47XG4gICAgICByZXR1cm4gbGVuO1xuICAgIH1cbiAgICB0aGlzLmVycl9jbG9zZWQoXCJyZWFkXCIsIHJhaXNlX3VuaXgpO1xuICB9XG5cbiAgc2VlayhvZmZzZXQsIHdoZW5jZSwgcmFpc2VfdW5peCkge1xuICAgIHN3aXRjaCAod2hlbmNlKSB7XG4gICAgICBjYXNlIDA6XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxOlxuICAgICAgICBvZmZzZXQgKz0gdGhpcy5vZmZzZXQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICBvZmZzZXQgKz0gdGhpcy5sZW5ndGgoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGlmIChvZmZzZXQgPCAwKVxuICAgICAgY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3IoXG4gICAgICAgIHJhaXNlX3VuaXgsXG4gICAgICAgIFwiRUlOVkFMXCIsXG4gICAgICAgIFwibHNlZWtcIixcbiAgICAgICAgXCJpbnZhbGlkIGFyZ3VtZW50XCIsXG4gICAgICApO1xuICAgIHRoaXMub2Zmc2V0ID0gb2Zmc2V0O1xuICAgIHRoaXMuc2Vla2VkID0gdHJ1ZTtcbiAgICByZXR1cm4gb2Zmc2V0O1xuICB9XG5cbiAgcG9zKCkge1xuICAgIHJldHVybiB0aGlzLm9mZnNldDtcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIGlmICghdGhpcy5maWxlKSB0aGlzLmVycl9jbG9zZWQoXCJjbG9zZVwiKTtcbiAgICB0aGlzLmZpbGUgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBjaGVja19zdHJlYW1fc2VtYW50aWNzKGNtZCkge1xuICAgIGlmICghdGhpcy5maWxlKSByZXR1cm4gdGhpcy5lcnJfY2xvc2VkKGNtZCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyAxKTtcbiAgfVxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2Zmc2V0XG52YXIgY2FtbF9pbnQ2NF9vZmZzZXQgPSBNYXRoLnBvdygyLCAtMjQpO1xuXG4vL1Byb3ZpZGVzOiBNbEludDY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mZnNldCwgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuY2xhc3MgTWxJbnQ2NCB7XG4gIGNvbnN0cnVjdG9yKGxvLCBtaSwgaGkpIHtcbiAgICB0aGlzLmxvID0gbG8gJiAweGZmZmZmZjtcbiAgICB0aGlzLm1pID0gbWkgJiAweGZmZmZmZjtcbiAgICB0aGlzLmhpID0gaGkgJiAweGZmZmY7XG4gICAgdGhpcy5jYW1sX2N1c3RvbSA9IFwiX2pcIjtcbiAgfVxuXG4gIHN0YXRpYyBVTlNJR05FRF9NQVggPSBuZXcgTWxJbnQ2NCgweGZmZmZmZiwgMHhmZmZmZmYsIDB4ZmZmZik7XG4gIHN0YXRpYyBTSUdORURfTUFYID0gbmV3IE1sSW50NjQoMHhmZmZmZmYsIDB4ZmZmZmZmLCAweDdmZmYpO1xuICBzdGF0aWMgU0lHTkVEX01JTiA9IG5ldyBNbEludDY0KDB4MDAwMDAwLCAweDAwMDAwMCwgMHg4MDAwKTtcblxuICBzbGljZSgpIHtcbiAgICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sbywgdGhpcy5taSwgdGhpcy5oaSk7XG4gIH1cblxuICB1Y29tcGFyZSh4KSB7XG4gICAgaWYgKHRoaXMuaGkgPiB4LmhpKSByZXR1cm4gMTtcbiAgICBpZiAodGhpcy5oaSA8IHguaGkpIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5taSA+IHgubWkpIHJldHVybiAxO1xuICAgIGlmICh0aGlzLm1pIDwgeC5taSkgcmV0dXJuIC0xO1xuICAgIGlmICh0aGlzLmxvID4geC5sbykgcmV0dXJuIDE7XG4gICAgaWYgKHRoaXMubG8gPCB4LmxvKSByZXR1cm4gLTE7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBjb21wYXJlKHgpIHtcbiAgICB2YXIgaGkgPSB0aGlzLmhpIDw8IDE2O1xuICAgIHZhciB4aGkgPSB4LmhpIDw8IDE2O1xuICAgIGlmIChoaSA+IHhoaSkgcmV0dXJuIDE7XG4gICAgaWYgKGhpIDwgeGhpKSByZXR1cm4gLTE7XG4gICAgaWYgKHRoaXMubWkgPiB4Lm1pKSByZXR1cm4gMTtcbiAgICBpZiAodGhpcy5taSA8IHgubWkpIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5sbyA+IHgubG8pIHJldHVybiAxO1xuICAgIGlmICh0aGlzLmxvIDwgeC5sbykgcmV0dXJuIC0xO1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgbmVnKCkge1xuICAgIHZhciBsbyA9IC10aGlzLmxvO1xuICAgIHZhciBtaSA9IC10aGlzLm1pICsgKGxvID4+IDI0KTtcbiAgICB2YXIgaGkgPSAtdGhpcy5oaSArIChtaSA+PiAyNCk7XG4gICAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xuICB9XG5cbiAgYWRkKHgpIHtcbiAgICB2YXIgbG8gPSB0aGlzLmxvICsgeC5sbztcbiAgICB2YXIgbWkgPSB0aGlzLm1pICsgeC5taSArIChsbyA+PiAyNCk7XG4gICAgdmFyIGhpID0gdGhpcy5oaSArIHguaGkgKyAobWkgPj4gMjQpO1xuICAgIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbiAgfVxuXG4gIHN1Yih4KSB7XG4gICAgdmFyIGxvID0gdGhpcy5sbyAtIHgubG87XG4gICAgdmFyIG1pID0gdGhpcy5taSAtIHgubWkgKyAobG8gPj4gMjQpO1xuICAgIHZhciBoaSA9IHRoaXMuaGkgLSB4LmhpICsgKG1pID4+IDI0KTtcbiAgICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG4gIH1cblxuICBtdWwoeCkge1xuICAgIHZhciBsbyA9IHRoaXMubG8gKiB4LmxvO1xuICAgIHZhciBtaSA9ICgobG8gKiBjYW1sX2ludDY0X29mZnNldCkgfCAwKSArIHRoaXMubWkgKiB4LmxvICsgdGhpcy5sbyAqIHgubWk7XG4gICAgdmFyIGhpID1cbiAgICAgICgobWkgKiBjYW1sX2ludDY0X29mZnNldCkgfCAwKSArXG4gICAgICB0aGlzLmhpICogeC5sbyArXG4gICAgICB0aGlzLm1pICogeC5taSArXG4gICAgICB0aGlzLmxvICogeC5oaTtcbiAgICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG4gIH1cblxuICBpc1plcm8oKSB7XG4gICAgcmV0dXJuICh0aGlzLmxvIHwgdGhpcy5taSB8IHRoaXMuaGkpID09PSAwO1xuICB9XG5cbiAgaXNOZWcoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGkgPDwgMTYgPCAwO1xuICB9XG5cbiAgYW5kKHgpIHtcbiAgICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sbyAmIHgubG8sIHRoaXMubWkgJiB4Lm1pLCB0aGlzLmhpICYgeC5oaSk7XG4gIH1cblxuICBvcih4KSB7XG4gICAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG8gfCB4LmxvLCB0aGlzLm1pIHwgeC5taSwgdGhpcy5oaSB8IHguaGkpO1xuICB9XG5cbiAgeG9yKHgpIHtcbiAgICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sbyBeIHgubG8sIHRoaXMubWkgXiB4Lm1pLCB0aGlzLmhpIF4geC5oaSk7XG4gIH1cblxuICBzaGlmdF9sZWZ0KHMpIHtcbiAgICBzID0gcyAmIDYzO1xuICAgIGlmIChzID09PSAwKSByZXR1cm4gdGhpcztcbiAgICBpZiAocyA8IDI0KSB7XG4gICAgICByZXR1cm4gbmV3IE1sSW50NjQoXG4gICAgICAgIHRoaXMubG8gPDwgcyxcbiAgICAgICAgKHRoaXMubWkgPDwgcykgfCAodGhpcy5sbyA+PiAoMjQgLSBzKSksXG4gICAgICAgICh0aGlzLmhpIDw8IHMpIHwgKHRoaXMubWkgPj4gKDI0IC0gcykpLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHMgPCA0OClcbiAgICAgIHJldHVybiBuZXcgTWxJbnQ2NChcbiAgICAgICAgMCxcbiAgICAgICAgdGhpcy5sbyA8PCAocyAtIDI0KSxcbiAgICAgICAgKHRoaXMubWkgPDwgKHMgLSAyNCkpIHwgKHRoaXMubG8gPj4gKDQ4IC0gcykpLFxuICAgICAgKTtcbiAgICByZXR1cm4gbmV3IE1sSW50NjQoMCwgMCwgdGhpcy5sbyA8PCAocyAtIDQ4KSk7XG4gIH1cblxuICBzaGlmdF9yaWdodF91bnNpZ25lZChzKSB7XG4gICAgcyA9IHMgJiA2MztcbiAgICBpZiAocyA9PT0gMCkgcmV0dXJuIHRoaXM7XG4gICAgaWYgKHMgPCAyNClcbiAgICAgIHJldHVybiBuZXcgTWxJbnQ2NChcbiAgICAgICAgKHRoaXMubG8gPj4gcykgfCAodGhpcy5taSA8PCAoMjQgLSBzKSksXG4gICAgICAgICh0aGlzLm1pID4+IHMpIHwgKHRoaXMuaGkgPDwgKDI0IC0gcykpLFxuICAgICAgICB0aGlzLmhpID4+IHMsXG4gICAgICApO1xuICAgIGlmIChzIDwgNDgpXG4gICAgICByZXR1cm4gbmV3IE1sSW50NjQoXG4gICAgICAgICh0aGlzLm1pID4+IChzIC0gMjQpKSB8ICh0aGlzLmhpIDw8ICg0OCAtIHMpKSxcbiAgICAgICAgdGhpcy5oaSA+PiAocyAtIDI0KSxcbiAgICAgICAgMCxcbiAgICAgICk7XG4gICAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMuaGkgPj4gKHMgLSA0OCksIDAsIDApO1xuICB9XG5cbiAgc2hpZnRfcmlnaHQocykge1xuICAgIHMgPSBzICYgNjM7XG4gICAgaWYgKHMgPT09IDApIHJldHVybiB0aGlzO1xuICAgIHZhciBoID0gKHRoaXMuaGkgPDwgMTYpID4+IDE2O1xuICAgIGlmIChzIDwgMjQpXG4gICAgICByZXR1cm4gbmV3IE1sSW50NjQoXG4gICAgICAgICh0aGlzLmxvID4+IHMpIHwgKHRoaXMubWkgPDwgKDI0IC0gcykpLFxuICAgICAgICAodGhpcy5taSA+PiBzKSB8IChoIDw8ICgyNCAtIHMpKSxcbiAgICAgICAgKCh0aGlzLmhpIDw8IDE2KSA+PiBzKSA+Pj4gMTYsXG4gICAgICApO1xuICAgIHZhciBzaWduID0gKHRoaXMuaGkgPDwgMTYpID4+IDMxO1xuICAgIGlmIChzIDwgNDgpXG4gICAgICByZXR1cm4gbmV3IE1sSW50NjQoXG4gICAgICAgICh0aGlzLm1pID4+IChzIC0gMjQpKSB8ICh0aGlzLmhpIDw8ICg0OCAtIHMpKSxcbiAgICAgICAgKCh0aGlzLmhpIDw8IDE2KSA+PiAocyAtIDI0KSkgPj4gMTYsXG4gICAgICAgIHNpZ24gJiAweGZmZmYsXG4gICAgICApO1xuICAgIHJldHVybiBuZXcgTWxJbnQ2NCgodGhpcy5oaSA8PCAxNikgPj4gKHMgLSAzMiksIHNpZ24sIHNpZ24pO1xuICB9XG5cbiAgbHNsMSgpIHtcbiAgICB0aGlzLmhpID0gKHRoaXMuaGkgPDwgMSkgfCAodGhpcy5taSA+PiAyMyk7XG4gICAgdGhpcy5taSA9ICgodGhpcy5taSA8PCAxKSB8ICh0aGlzLmxvID4+IDIzKSkgJiAweGZmZmZmZjtcbiAgICB0aGlzLmxvID0gKHRoaXMubG8gPDwgMSkgJiAweGZmZmZmZjtcbiAgfVxuXG4gIGxzcjEoKSB7XG4gICAgdGhpcy5sbyA9ICgodGhpcy5sbyA+Pj4gMSkgfCAodGhpcy5taSA8PCAyMykpICYgMHhmZmZmZmY7XG4gICAgdGhpcy5taSA9ICgodGhpcy5taSA+Pj4gMSkgfCAodGhpcy5oaSA8PCAyMykpICYgMHhmZmZmZmY7XG4gICAgdGhpcy5oaSA9IHRoaXMuaGkgPj4+IDE7XG4gIH1cblxuICB1ZGl2bW9kKHgpIHtcbiAgICB2YXIgb2Zmc2V0ID0gMDtcbiAgICB2YXIgbW9kdWx1cyA9IHRoaXMuc2xpY2UoKTtcbiAgICB2YXIgZGl2aXNvciA9IHguc2xpY2UoKTtcbiAgICB2YXIgcXVvdGllbnQgPSBuZXcgTWxJbnQ2NCgwLCAwLCAwKTtcbiAgICB3aGlsZSAobW9kdWx1cy51Y29tcGFyZShkaXZpc29yKSA+IDApIHtcbiAgICAgIG9mZnNldCsrO1xuICAgICAgZGl2aXNvci5sc2wxKCk7XG4gICAgfVxuICAgIHdoaWxlIChvZmZzZXQgPj0gMCkge1xuICAgICAgb2Zmc2V0LS07XG4gICAgICBxdW90aWVudC5sc2wxKCk7XG4gICAgICBpZiAobW9kdWx1cy51Y29tcGFyZShkaXZpc29yKSA+PSAwKSB7XG4gICAgICAgIHF1b3RpZW50LmxvKys7XG4gICAgICAgIG1vZHVsdXMgPSBtb2R1bHVzLnN1YihkaXZpc29yKTtcbiAgICAgIH1cbiAgICAgIGRpdmlzb3IubHNyMSgpO1xuICAgIH1cbiAgICByZXR1cm4geyBxdW90aWVudDogcXVvdGllbnQsIG1vZHVsdXM6IG1vZHVsdXMgfTtcbiAgfVxuXG4gIGRpdih5KSB7XG4gICAgdmFyIHggPSB0aGlzO1xuICAgIGlmICh5LmlzWmVybygpKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlKCk7XG4gICAgdmFyIHNpZ24gPSB4LmhpIF4geS5oaTtcbiAgICBpZiAoeC5oaSAmIDB4ODAwMCkgeCA9IHgubmVnKCk7XG4gICAgaWYgKHkuaGkgJiAweDgwMDApIHkgPSB5Lm5lZygpO1xuICAgIHZhciBxID0geC51ZGl2bW9kKHkpLnF1b3RpZW50O1xuICAgIGlmIChzaWduICYgMHg4MDAwKSBxID0gcS5uZWcoKTtcbiAgICByZXR1cm4gcTtcbiAgfVxuXG4gIG1vZCh5KSB7XG4gICAgdmFyIHggPSB0aGlzO1xuICAgIGlmICh5LmlzWmVybygpKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlKCk7XG4gICAgdmFyIHNpZ24gPSB4LmhpO1xuICAgIGlmICh4LmhpICYgMHg4MDAwKSB4ID0geC5uZWcoKTtcbiAgICBpZiAoeS5oaSAmIDB4ODAwMCkgeSA9IHkubmVnKCk7XG4gICAgdmFyIHIgPSB4LnVkaXZtb2QoeSkubW9kdWx1cztcbiAgICBpZiAoc2lnbiAmIDB4ODAwMCkgciA9IHIubmVnKCk7XG4gICAgcmV0dXJuIHI7XG4gIH1cblxuICB0b0ludCgpIHtcbiAgICByZXR1cm4gdGhpcy5sbyB8ICh0aGlzLm1pIDw8IDI0KTtcbiAgfVxuXG4gIHRvRmxvYXQoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgICh0aGlzLmhpIDw8IDE2KSAqIE1hdGgucG93KDIsIDMyKSArIHRoaXMubWkgKiBNYXRoLnBvdygyLCAyNCkgKyB0aGlzLmxvXG4gICAgKTtcbiAgfVxuXG4gIHRvQXJyYXkoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHRoaXMuaGkgPj4gOCxcbiAgICAgIHRoaXMuaGkgJiAweGZmLFxuICAgICAgdGhpcy5taSA+PiAxNixcbiAgICAgICh0aGlzLm1pID4+IDgpICYgMHhmZixcbiAgICAgIHRoaXMubWkgJiAweGZmLFxuICAgICAgdGhpcy5sbyA+PiAxNixcbiAgICAgICh0aGlzLmxvID4+IDgpICYgMHhmZixcbiAgICAgIHRoaXMubG8gJiAweGZmLFxuICAgIF07XG4gIH1cblxuICBsbzMyKCkge1xuICAgIHJldHVybiB0aGlzLmxvIHwgKCh0aGlzLm1pICYgMHhmZikgPDwgMjQpO1xuICB9XG5cbiAgaGkzMigpIHtcbiAgICByZXR1cm4gKCh0aGlzLm1pID4+PiA4KSAmIDB4ZmZmZikgfCAodGhpcy5oaSA8PCAxNik7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF91bHQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdWx0KHgsIHkpIHtcbiAgcmV0dXJuIHgudWNvbXBhcmUoeSkgPCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2NvbXBhcmUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfY29tcGFyZSh4LCB5LCBfdG90YWwpIHtcbiAgcmV0dXJuIHguY29tcGFyZSh5KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9uZWcgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbmVnKHgpIHtcbiAgcmV0dXJuIHgubmVnKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfYWRkIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2FkZCh4LCB5KSB7XG4gIHJldHVybiB4LmFkZCh5KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zdWIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc3ViKHgsIHkpIHtcbiAgcmV0dXJuIHguc3ViKHkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X211bCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbXVsKHgsIHkpIHtcbiAgcmV0dXJuIHgubXVsKHkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2lzX3plcm8gY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaXNfemVybyh4KSB7XG4gIHJldHVybiAreC5pc1plcm8oKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSh4KSB7XG4gIHJldHVybiAreC5pc05lZygpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2FuZCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9hbmQoeCwgeSkge1xuICByZXR1cm4geC5hbmQoeSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb3IgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb3IoeCwgeSkge1xuICByZXR1cm4geC5vcih5KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF94b3IgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfeG9yKHgsIHkpIHtcbiAgcmV0dXJuIHgueG9yKHkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3NoaWZ0X2xlZnQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc2hpZnRfbGVmdCh4LCBzKSB7XG4gIHJldHVybiB4LnNoaWZ0X2xlZnQocyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgcykge1xuICByZXR1cm4geC5zaGlmdF9yaWdodF91bnNpZ25lZChzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zaGlmdF9yaWdodCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodCh4LCBzKSB7XG4gIHJldHVybiB4LnNoaWZ0X3JpZ2h0KHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2RpdlxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9kaXYoeCwgeSkge1xuICByZXR1cm4geC5kaXYoeSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbW9kXG5mdW5jdGlvbiBjYW1sX2ludDY0X21vZCh4LCB5KSB7XG4gIHJldHVybiB4Lm1vZCh5KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9pbnQzMiBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuLy9BbGlhczogY2FtbF9pbnQ2NF9vZl9pbnRcbi8vQWxpYXM6IGNhbWxfaW50NjRfb2ZfbmF0aXZlaW50XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX2ludDMyKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHggJiAweGZmZmZmZiwgKHggPj4gMjQpICYgMHhmZmZmZmYsICh4ID4+IDMxKSAmIDB4ZmZmZik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdG9faW50MzIgY29uc3Rcbi8vQWxpYXM6IGNhbWxfaW50NjRfdG9faW50XG4vL0FsaWFzOiBjYW1sX2ludDY0X3RvX25hdGl2ZWludFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF90b19pbnQzMih4KSB7XG4gIHJldHVybiB4LnRvSW50KCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdG9fZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdG9fZmxvYXQoeCkge1xuICByZXR1cm4geC50b0Zsb2F0KCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zmc2V0LCBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX2Zsb2F0KHgpIHtcbiAgaWYgKHggPCAwKSB4ID0gTWF0aC5jZWlsKHgpO1xuICByZXR1cm4gbmV3IE1sSW50NjQoXG4gICAgeCAmIDB4ZmZmZmZmLFxuICAgIE1hdGguZmxvb3IoeCAqIGNhbWxfaW50NjRfb2Zmc2V0KSAmIDB4ZmZmZmZmLFxuICAgIE1hdGguZmxvb3IoeCAqIGNhbWxfaW50NjRfb2Zmc2V0ICogY2FtbF9pbnQ2NF9vZmZzZXQpICYgMHhmZmZmLFxuICApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2Zvcm1hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9mb3JtYXQsIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfaXNfbmVnYXRpdmUsIGNhbWxfaW50NjRfbmVnXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2ludDMyLCBjYW1sX2ludDY0X3RvX2ludDMyXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2lzX3plcm8sIGNhbWxfc3RyX3JlcGVhdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9mb3JtYXQoZm10LCB4KSB7XG4gIHZhciBmID0gY2FtbF9wYXJzZV9mb3JtYXQoZm10KTtcbiAgaWYgKGYuc2lnbmVkY29udiAmJiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlKHgpKSB7XG4gICAgZi5zaWduID0gLTE7XG4gICAgeCA9IGNhbWxfaW50NjRfbmVnKHgpO1xuICB9XG4gIHZhciBidWZmZXIgPSBcIlwiO1xuICB2YXIgd2Jhc2UgPSBjYW1sX2ludDY0X29mX2ludDMyKGYuYmFzZSk7XG4gIHZhciBjdnRibCA9IFwiMDEyMzQ1Njc4OWFiY2RlZlwiO1xuICBkbyB7XG4gICAgdmFyIHAgPSB4LnVkaXZtb2Qod2Jhc2UpO1xuICAgIHggPSBwLnF1b3RpZW50O1xuICAgIGJ1ZmZlciA9IGN2dGJsLmNoYXJBdChjYW1sX2ludDY0X3RvX2ludDMyKHAubW9kdWx1cykpICsgYnVmZmVyO1xuICB9IHdoaWxlICghY2FtbF9pbnQ2NF9pc196ZXJvKHgpKTtcbiAgaWYgKGYucHJlYyA+PSAwKSB7XG4gICAgZi5maWxsZXIgPSBcIiBcIjtcbiAgICB2YXIgbiA9IGYucHJlYyAtIGJ1ZmZlci5sZW5ndGg7XG4gICAgaWYgKG4gPiAwKSBidWZmZXIgPSBjYW1sX3N0cl9yZXBlYXQobiwgXCIwXCIpICsgYnVmZmVyO1xuICB9XG4gIHJldHVybiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nKGYsIGJ1ZmZlcik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UsIGNhbWxfZmFpbHdpdGgsIGNhbWxfcGFyc2VfZGlnaXRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfaW50MzIsIGNhbWxfaW50NjRfdWx0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2FkZCwgY2FtbF9pbnQ2NF9tdWwsIGNhbWxfaW50NjRfbmVnXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGgsY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vZl9zdHJpbmcocykge1xuICB2YXIgciA9IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZShzKTtcbiAgdmFyIGkgPSByWzBdLFxuICAgIHNpZ24gPSByWzFdLFxuICAgIGJhc2UgPSByWzJdLFxuICAgIHNpZ25lZG5lc3MgPSByWzNdO1xuICB2YXIgYmFzZTY0ID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihiYXNlKTtcbiAgdmFyIHRocmVzaG9sZCA9IE1sSW50NjQuVU5TSUdORURfTUFYLnVkaXZtb2QoYmFzZTY0KS5xdW90aWVudDtcbiAgdmFyIGMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpO1xuICB2YXIgZCA9IGNhbWxfcGFyc2VfZGlnaXQoYyk7XG4gIGlmIChkIDwgMCB8fCBkID49IGJhc2UpIGNhbWxfZmFpbHdpdGgoXCJJbnQ2NC5vZl9zdHJpbmdcIik7XG4gIHZhciByZXMgPSBjYW1sX2ludDY0X29mX2ludDMyKGQpO1xuICBmb3IgKDs7KSB7XG4gICAgaSsrO1xuICAgIGMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpO1xuICAgIGlmIChjID09PSA5NSkgY29udGludWU7XG4gICAgZCA9IGNhbWxfcGFyc2VfZGlnaXQoYyk7XG4gICAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgYnJlYWs7XG4gICAgLyogRGV0ZWN0IG92ZXJmbG93IGluIG11bHRpcGxpY2F0aW9uIGJhc2UgKiByZXMgKi9cbiAgICBpZiAoY2FtbF9pbnQ2NF91bHQodGhyZXNob2xkLCByZXMpKSBjYW1sX2ZhaWx3aXRoKFwiSW50NjQub2Zfc3RyaW5nXCIpO1xuICAgIGQgPSBjYW1sX2ludDY0X29mX2ludDMyKGQpO1xuICAgIHJlcyA9IGNhbWxfaW50NjRfYWRkKGNhbWxfaW50NjRfbXVsKGJhc2U2NCwgcmVzKSwgZCk7XG4gICAgLyogRGV0ZWN0IG92ZXJmbG93IGluIGFkZGl0aW9uIChiYXNlICogcmVzKSArIGQgKi9cbiAgICBpZiAoY2FtbF9pbnQ2NF91bHQocmVzLCBkKSkgY2FtbF9mYWlsd2l0aChcIkludDY0Lm9mX3N0cmluZ1wiKTtcbiAgfVxuICBpZiAoaSAhPT0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKSBjYW1sX2ZhaWx3aXRoKFwiSW50NjQub2Zfc3RyaW5nXCIpO1xuICBpZiAoXG4gICAgc2lnbmVkbmVzcyAmJlxuICAgIGNhbWxfaW50NjRfdWx0KHNpZ24gPCAwID8gTWxJbnQ2NC5TSUdORURfTUlOIDogTWxJbnQ2NC5TSUdORURfTUFYLCByZXMpXG4gIClcbiAgICBjYW1sX2ZhaWx3aXRoKFwiSW50NjQub2Zfc3RyaW5nXCIpO1xuICBpZiAoc2lnbiA8IDApIHJlcyA9IGNhbWxfaW50NjRfbmVnKHJlcyk7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaShsbywgbWksIGhpKSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaShsbywgaGkpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KFxuICAgIGxvICYgMHhmZmZmZmYsXG4gICAgKChsbyA+Pj4gMjQpICYgMHhmZikgfCAoKGhpICYgMHhmZmZmKSA8PCA4KSxcbiAgICAoaGkgPj4+IDE2KSAmIDB4ZmZmZixcbiAgKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbG8zMiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9sbzMyKHYpIHtcbiAgcmV0dXJuIHYubG8zMigpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2hpMzIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaGkzMih2KSB7XG4gIHJldHVybiB2LmhpMzIoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9ieXRlcyBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vZl9ieXRlcyhhKSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChcbiAgICAoYVs3XSA8PCAwKSB8IChhWzZdIDw8IDgpIHwgKGFbNV0gPDwgMTYpLFxuICAgIChhWzRdIDw8IDApIHwgKGFbM10gPDwgOCkgfCAoYVsyXSA8PCAxNiksXG4gICAgKGFbMV0gPDwgMCkgfCAoYVswXSA8PCA4KSxcbiAgKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXMgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdG9fYnl0ZXMoeCkge1xuICByZXR1cm4geC50b0FycmF5KCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfaGFzaCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9oYXNoKHYpIHtcbiAgcmV0dXJuIHYubG8zMigpIF4gdi5oaTMyKCk7XG59XG4iLCIvL1Byb3ZpZGVzOiBNbE11dGV4XG5jbGFzcyBNbE11dGV4IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5sb2NrZWQgPSBmYWxzZTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX211dGV4X25ld1xuLy9SZXF1aXJlczogTWxNdXRleFxuZnVuY3Rpb24gY2FtbF9tbF9tdXRleF9uZXcoX3VuaXQpIHtcbiAgcmV0dXJuIG5ldyBNbE11dGV4KCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfbXV0ZXhfbG9ja1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9tbF9tdXRleF9sb2NrKHQpIHtcbiAgaWYgKHQubG9ja2VkKSBjYW1sX2ZhaWx3aXRoKFwiTXV0ZXgubG9jazogbXV0ZXggYWxyZWFkeSBsb2NrZWQuIENhbm5vdCB3YWl0LlwiKTtcbiAgZWxzZSB0LmxvY2tlZCA9IHRydWU7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX211dGV4X3RyeV9sb2NrXG5mdW5jdGlvbiBjYW1sX21sX211dGV4X3RyeV9sb2NrKHQpIHtcbiAgaWYgKCF0LmxvY2tlZCkge1xuICAgIHQubG9ja2VkID0gdHJ1ZTtcbiAgICByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9tdXRleF91bmxvY2tcbmZ1bmN0aW9uIGNhbWxfbWxfbXV0ZXhfdW5sb2NrKHQpIHtcbiAgdC5sb2NrZWQgPSBmYWxzZTtcbiAgcmV0dXJuIDA7XG59XG4iLCIvL1Byb3ZpZGVzOiBpbml0aWFsaXplX25hdFxuLy9SZXF1aXJlczogY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBzZXJpYWxpemVfbmF0LCBkZXNlcmlhbGl6ZV9uYXQsIGNhbWxfaGFzaF9uYXRcbmZ1bmN0aW9uIGluaXRpYWxpemVfbmF0KCkge1xuICBjYW1sX2N1c3RvbV9vcHMuX25hdCA9IHtcbiAgICBkZXNlcmlhbGl6ZTogZGVzZXJpYWxpemVfbmF0LFxuICAgIHNlcmlhbGl6ZTogc2VyaWFsaXplX25hdCxcbiAgICBoYXNoOiBjYW1sX2hhc2hfbmF0LFxuICB9O1xufVxuXG4vL1Byb3ZpZGVzOiBNbE5hdFxuY2xhc3MgTWxOYXQge1xuICBjb25zdHJ1Y3Rvcih4KSB7XG4gICAgdGhpcy5kYXRhID0gbmV3IEludDMyQXJyYXkoeCk7XG4gICAgLy8gRm9yIG51bSA8IDEuNVxuICAgIC8vIGxlbmd0aF9uYXQgaXNuJ3QgZXh0ZXJuYWwsIHNvIHdlIGhhdmUgdG8gbWFrZSB0aGUgT2JqLnNpemVcbiAgICAvLyB3b3JrIG91dCByaWdodC5cbiAgICAvLyBXZSBhZGQgKzIgdG8gdGhlIGFycmF5IGxlbmd0aDpcbiAgICAvLyAtICsxIGZvciB0aGUgdGFnXG4gICAgLy8gLSArMSBmb3IgdGhlIGN1c3RvbV9vcHMgc2xvdFxuICAgIHRoaXMubGVuZ3RoID0gdGhpcy5kYXRhLmxlbmd0aCArIDI7XG4gICAgdGhpcy5jYW1sX2N1c3RvbSA9IFwiX25hdFwiO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9uYXRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50LCBudW1fZGlnaXRzX25hdFxuZnVuY3Rpb24gY2FtbF9oYXNoX25hdCh4KSB7XG4gIHZhciBsZW4gPSBudW1fZGlnaXRzX25hdCh4LCAwLCB4LmRhdGEubGVuZ3RoKTtcbiAgdmFyIGggPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHguZGF0YVtpXSk7XG4gIH1cbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGxlbmd0aF9uYXRcbmZ1bmN0aW9uIGxlbmd0aF9uYXQoeCkge1xuICByZXR1cm4geC5kYXRhLmxlbmd0aDtcbn1cblxuLy9Qcm92aWRlczogbmF0X29mX2FycmF5XG4vL1JlcXVpcmVzOiBNbE5hdFxuZnVuY3Rpb24gbmF0X29mX2FycmF5KGwpIHtcbiAgcmV0dXJuIG5ldyBNbE5hdChsKTtcbn1cblxuLy9Qcm92aWRlczogY3JlYXRlX25hdFxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIGNyZWF0ZV9uYXQoc2l6ZSkge1xuICB2YXIgYXJyID0gbmV3IE1sTmF0KHNpemUpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgIGFyci5kYXRhW2ldID0gLTE7XG4gIH1cbiAgcmV0dXJuIGFycjtcbn1cblxuLy9Qcm92aWRlczogc2V0X3RvX3plcm9fbmF0XG5mdW5jdGlvbiBzZXRfdG9femVyb19uYXQobmF0LCBvZnMsIGxlbikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgbmF0LmRhdGFbb2ZzICsgaV0gPSAwO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBibGl0X25hdFxuZnVuY3Rpb24gYmxpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMiwgbGVuKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBuYXQxLmRhdGFbb2ZzMSArIGldID0gbmF0Mi5kYXRhW29mczIgKyBpXTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogc2V0X2RpZ2l0X25hdFxuZnVuY3Rpb24gc2V0X2RpZ2l0X25hdChuYXQsIG9mcywgZGlnaXQpIHtcbiAgbmF0LmRhdGFbb2ZzXSA9IGRpZ2l0O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbnRoX2RpZ2l0X25hdFxuZnVuY3Rpb24gbnRoX2RpZ2l0X25hdChuYXQsIG9mcykge1xuICByZXR1cm4gbmF0LmRhdGFbb2ZzXTtcbn1cblxuLy9Qcm92aWRlczogc2V0X2RpZ2l0X25hdF9uYXRpdmVcbmZ1bmN0aW9uIHNldF9kaWdpdF9uYXRfbmF0aXZlKG5hdCwgb2ZzLCBkaWdpdCkge1xuICBuYXQuZGF0YVtvZnNdID0gZGlnaXQ7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBudGhfZGlnaXRfbmF0X25hdGl2ZVxuZnVuY3Rpb24gbnRoX2RpZ2l0X25hdF9uYXRpdmUobmF0LCBvZnMpIHtcbiAgcmV0dXJuIG5hdC5kYXRhW29mc107XG59XG5cbi8vUHJvdmlkZXM6IG51bV9kaWdpdHNfbmF0XG5mdW5jdGlvbiBudW1fZGlnaXRzX25hdChuYXQsIG9mcywgbGVuKSB7XG4gIGZvciAodmFyIGkgPSBsZW4gLSAxOyBpID49IDA7IGktLSkge1xuICAgIGlmIChuYXQuZGF0YVtvZnMgKyBpXSAhPT0gMCkgcmV0dXJuIGkgKyAxO1xuICB9XG4gIHJldHVybiAxOyAvLyAwIGNvdW50cyBhcyAxIGRpZ2l0XG59XG5cbi8vUHJvdmlkZXM6IG51bV9sZWFkaW5nX3plcm9fYml0c19pbl9kaWdpdFxuZnVuY3Rpb24gbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0KG5hdCwgb2ZzKSB7XG4gIHZhciBhID0gbmF0LmRhdGFbb2ZzXTtcbiAgdmFyIGIgPSAwO1xuICBpZiAoYSAmIDB4ZmZmZjAwMDApIHtcbiAgICBiICs9IDE2O1xuICAgIGEgPj4+PSAxNjtcbiAgfVxuICBpZiAoYSAmIDB4ZmYwMCkge1xuICAgIGIgKz0gODtcbiAgICBhID4+Pj0gODtcbiAgfVxuICBpZiAoYSAmIDB4ZjApIHtcbiAgICBiICs9IDQ7XG4gICAgYSA+Pj49IDQ7XG4gIH1cbiAgaWYgKGEgJiAxMikge1xuICAgIGIgKz0gMjtcbiAgICBhID4+Pj0gMjtcbiAgfVxuICBpZiAoYSAmIDIpIHtcbiAgICBiICs9IDE7XG4gICAgYSA+Pj49IDE7XG4gIH1cbiAgaWYgKGEgJiAxKSB7XG4gICAgYiArPSAxO1xuICB9XG4gIHJldHVybiAzMiAtIGI7XG59XG5cbi8vUHJvdmlkZXM6IGlzX2RpZ2l0X2ludFxuZnVuY3Rpb24gaXNfZGlnaXRfaW50KG5hdCwgb2ZzKSB7XG4gIGlmIChuYXQuZGF0YVtvZnNdID49IDApIHJldHVybiAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogaXNfZGlnaXRfemVyb1xuZnVuY3Rpb24gaXNfZGlnaXRfemVybyhuYXQsIG9mcykge1xuICBpZiAobmF0LmRhdGFbb2ZzXSA9PT0gMCkgcmV0dXJuIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBpc19kaWdpdF9ub3JtYWxpemVkXG5mdW5jdGlvbiBpc19kaWdpdF9ub3JtYWxpemVkKF9uYXQsIF9vZnMpIHtcbiAgcmV0dXJuIDE7XG59XG5cbi8vUHJvdmlkZXM6IGlzX2RpZ2l0X29kZFxuZnVuY3Rpb24gaXNfZGlnaXRfb2RkKG5hdCwgb2ZzKSB7XG4gIGlmIChuYXQuZGF0YVtvZnNdICYgMSkgcmV0dXJuIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBpbmNyX25hdFxuZnVuY3Rpb24gaW5jcl9uYXQobmF0LCBvZnMsIGxlbiwgY2FycnlfaW4pIHtcbiAgdmFyIGNhcnJ5ID0gY2FycnlfaW47XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgeCA9IChuYXQuZGF0YVtvZnMgKyBpXSA+Pj4gMCkgKyBjYXJyeTtcbiAgICBuYXQuZGF0YVtvZnMgKyBpXSA9IHggfCAwO1xuICAgIGlmICh4ID09PSB4ID4+PiAwKSB7XG4gICAgICBjYXJyeSA9IDA7XG4gICAgICBicmVhaztcbiAgICB9IGVsc2Uge1xuICAgICAgY2FycnkgPSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY2Fycnk7XG59XG5cbi8vIGxlbjEgPj0gbGVuMlxuLy9Qcm92aWRlczogYWRkX25hdFxuLy9SZXF1aXJlczogaW5jcl9uYXRcbmZ1bmN0aW9uIGFkZF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgY2FycnlfaW4pIHtcbiAgdmFyIGNhcnJ5ID0gY2FycnlfaW47XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuMjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0MS5kYXRhW29mczEgKyBpXSA+Pj4gMCkgKyAobmF0Mi5kYXRhW29mczIgKyBpXSA+Pj4gMCkgKyBjYXJyeTtcbiAgICBuYXQxLmRhdGFbb2ZzMSArIGldID0geDtcbiAgICBpZiAoeCA9PT0geCA+Pj4gMCkge1xuICAgICAgY2FycnkgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYXJyeSA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiBpbmNyX25hdChuYXQxLCBvZnMxICsgbGVuMiwgbGVuMSAtIGxlbjIsIGNhcnJ5KTtcbn1cblxuLy9Qcm92aWRlczogY29tcGxlbWVudF9uYXRcbmZ1bmN0aW9uIGNvbXBsZW1lbnRfbmF0KG5hdCwgb2ZzLCBsZW4pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG5hdC5kYXRhW29mcyArIGldID0gKC0xID4+PiAwKSAtIChuYXQuZGF0YVtvZnMgKyBpXSA+Pj4gMCk7XG4gIH1cbn1cblxuLy8gb2NhbWwgZmxpcHMgY2FycnlfaW5cbi8vUHJvdmlkZXM6IGRlY3JfbmF0XG5mdW5jdGlvbiBkZWNyX25hdChuYXQsIG9mcywgbGVuLCBjYXJyeV9pbikge1xuICB2YXIgYm9ycm93ID0gY2FycnlfaW4gPT09IDEgPyAwIDogMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciB4ID0gKG5hdC5kYXRhW29mcyArIGldID4+PiAwKSAtIGJvcnJvdztcbiAgICBuYXQuZGF0YVtvZnMgKyBpXSA9IHg7XG4gICAgaWYgKHggPj0gMCkge1xuICAgICAgYm9ycm93ID0gMDtcbiAgICAgIGJyZWFrO1xuICAgIH0gZWxzZSB7XG4gICAgICBib3Jyb3cgPSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYm9ycm93ID09PSAxID8gMCA6IDE7XG59XG5cbi8vIG9jYW1sIGZsaXBzIGNhcnJ5X2luXG4vLyBsZW4xID49IGxlbjJcbi8vUHJvdmlkZXM6IHN1Yl9uYXRcbi8vUmVxdWlyZXM6IGRlY3JfbmF0XG5mdW5jdGlvbiBzdWJfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIGNhcnJ5X2luKSB7XG4gIHZhciBib3Jyb3cgPSBjYXJyeV9pbiA9PT0gMSA/IDAgOiAxO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjI7IGkrKykge1xuICAgIHZhciB4ID0gKG5hdDEuZGF0YVtvZnMxICsgaV0gPj4+IDApIC0gKG5hdDIuZGF0YVtvZnMyICsgaV0gPj4+IDApIC0gYm9ycm93O1xuICAgIG5hdDEuZGF0YVtvZnMxICsgaV0gPSB4O1xuICAgIGlmICh4ID49IDApIHtcbiAgICAgIGJvcnJvdyA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJvcnJvdyA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiBkZWNyX25hdChuYXQxLCBvZnMxICsgbGVuMiwgbGVuMSAtIGxlbjIsIGJvcnJvdyA9PT0gMSA/IDAgOiAxKTtcbn1cblxuLy8gbmF0MSArPSBuYXQyICogbmF0M1tvZnMzXVxuLy8gbGVuMSA+PSBsZW4yXG4vL1Byb3ZpZGVzOiBtdWx0X2RpZ2l0X25hdFxuLy9SZXF1aXJlczogYWRkX25hdCwgbmF0X29mX2FycmF5XG5mdW5jdGlvbiBtdWx0X2RpZ2l0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXQzLCBvZnMzKSB7XG4gIHZhciBjYXJyeSA9IDA7XG4gIHZhciBhID0gbmF0My5kYXRhW29mczNdID4+PiAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjI7IGkrKykge1xuICAgIHZhciB4MSA9XG4gICAgICAobmF0MS5kYXRhW29mczEgKyBpXSA+Pj4gMCkgK1xuICAgICAgKG5hdDIuZGF0YVtvZnMyICsgaV0gPj4+IDApICogKGEgJiAweDAwMDBmZmZmKSArXG4gICAgICBjYXJyeTtcbiAgICB2YXIgeDIgPSAobmF0Mi5kYXRhW29mczIgKyBpXSA+Pj4gMCkgKiAoYSA+Pj4gMTYpO1xuICAgIGNhcnJ5ID0gTWF0aC5mbG9vcih4MiAvIDY1NTM2KTtcbiAgICB2YXIgeDMgPSB4MSArICh4MiAlIDY1NTM2KSAqIDY1NTM2O1xuICAgIG5hdDEuZGF0YVtvZnMxICsgaV0gPSB4MztcbiAgICBjYXJyeSArPSBNYXRoLmZsb29yKHgzIC8gNDI5NDk2NzI5Nik7XG4gIH1cblxuICBpZiAobGVuMiA8IGxlbjEgJiYgY2FycnkpIHtcbiAgICByZXR1cm4gYWRkX25hdChcbiAgICAgIG5hdDEsXG4gICAgICBvZnMxICsgbGVuMixcbiAgICAgIGxlbjEgLSBsZW4yLFxuICAgICAgbmF0X29mX2FycmF5KFtjYXJyeV0pLFxuICAgICAgMCxcbiAgICAgIDEsXG4gICAgICAwLFxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNhcnJ5O1xuICB9XG59XG5cbi8vIG5hdDEgKz0gbmF0MiAqIG5hdDNcbi8vIGxlbjEgPj0gbGVuMiArIGxlbjMuXG4vL1Byb3ZpZGVzOiBtdWx0X25hdFxuLy9SZXF1aXJlczogbXVsdF9kaWdpdF9uYXRcbmZ1bmN0aW9uIG11bHRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdDMsIG9mczMsIGxlbjMpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW4zOyBpKyspIHtcbiAgICBjYXJyeSArPSBtdWx0X2RpZ2l0X25hdChcbiAgICAgIG5hdDEsXG4gICAgICBvZnMxICsgaSxcbiAgICAgIGxlbjEgLSBpLFxuICAgICAgbmF0MixcbiAgICAgIG9mczIsXG4gICAgICBsZW4yLFxuICAgICAgbmF0MyxcbiAgICAgIG9mczMgKyBpLFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGNhcnJ5O1xufVxuXG4vLyBuYXQxID0gMiAqIG5hdDEgKyBuYXQyICogbmF0MlxuLy8gbGVuMSA+PSAyICogbGVuMlxuLy9Qcm92aWRlczogc3F1YXJlX25hdFxuLy9SZXF1aXJlczogbXVsdF9uYXQsIGFkZF9uYXRcbmZ1bmN0aW9uIHNxdWFyZV9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMikge1xuICB2YXIgY2FycnkgPSAwO1xuICBjYXJyeSArPSBhZGRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDEsIG9mczEsIGxlbjEsIDApO1xuICBjYXJyeSArPSBtdWx0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXQyLCBvZnMyLCBsZW4yKTtcbiAgcmV0dXJuIGNhcnJ5O1xufVxuXG4vLyAwIDw9IHNoaWZ0IDwgMzJcbi8vUHJvdmlkZXM6IHNoaWZ0X2xlZnRfbmF0XG5mdW5jdGlvbiBzaGlmdF9sZWZ0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBuYml0cykge1xuICBpZiAobmJpdHMgPT09IDApIHtcbiAgICBuYXQyLmRhdGFbb2ZzMl0gPSAwO1xuICAgIHJldHVybiAwO1xuICB9XG4gIHZhciB3cmFwID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW4xOyBpKyspIHtcbiAgICB2YXIgYSA9IG5hdDEuZGF0YVtvZnMxICsgaV0gPj4+IDA7XG4gICAgbmF0MS5kYXRhW29mczEgKyBpXSA9IChhIDw8IG5iaXRzKSB8IHdyYXA7XG4gICAgd3JhcCA9IGEgPj4+ICgzMiAtIG5iaXRzKTtcbiAgfVxuICBuYXQyLmRhdGFbb2ZzMl0gPSB3cmFwO1xuICByZXR1cm4gMDtcbn1cblxuLy8gQXNzdW1pbmcgYyA+IGEsIHJldHVybnMgW3F1b3RpZW50LCByZW1haW5kZXJdIG9mIChhPDwzMiArIGIpL2Ncbi8vUHJvdmlkZXM6IGRpdl9oZWxwZXJcbmZ1bmN0aW9uIGRpdl9oZWxwZXIoYSwgYiwgYykge1xuICB2YXIgeCA9IGEgKiA2NTUzNiArIChiID4+PiAxNik7XG4gIHZhciB5ID0gTWF0aC5mbG9vcih4IC8gYykgKiA2NTUzNjtcbiAgdmFyIHogPSAoeCAlIGMpICogNjU1MzY7XG4gIHZhciB3ID0geiArIChiICYgMHgwMDAwZmZmZik7XG4gIHJldHVybiBbeSArIE1hdGguZmxvb3IodyAvIGMpLCB3ICUgY107XG59XG5cbi8vIG5hdDFbb2ZzMStsZW5dIDwgbmF0MltvZnMyXVxuLy9Qcm92aWRlczogZGl2X2RpZ2l0X25hdFxuLy9SZXF1aXJlczogZGl2X2hlbHBlclxuZnVuY3Rpb24gZGl2X2RpZ2l0X25hdChuYXRxLCBvZnNxLCBuYXRyLCBvZnNyLCBuYXQxLCBvZnMxLCBsZW4sIG5hdDIsIG9mczIpIHtcbiAgdmFyIHJlbSA9IG5hdDEuZGF0YVtvZnMxICsgbGVuIC0gMV0gPj4+IDA7XG4gIC8vIG5hdHFbb2ZzcStsZW4tMV0gaXMgZ3VhcmFudGVlZCB0byBiZSB6ZXJvIChkdWUgdG8gdGhlIE1TRCByZXF1aXJlbWVudCksXG4gIC8vIGFuZCBzaG91bGQgbm90IGJlIHdyaXR0ZW4gdG8uXG4gIGZvciAodmFyIGkgPSBsZW4gLSAyOyBpID49IDA7IGktLSkge1xuICAgIHZhciB4ID0gZGl2X2hlbHBlcihyZW0sIG5hdDEuZGF0YVtvZnMxICsgaV0gPj4+IDAsIG5hdDIuZGF0YVtvZnMyXSA+Pj4gMCk7XG4gICAgbmF0cS5kYXRhW29mc3EgKyBpXSA9IHhbMF07XG4gICAgcmVtID0geFsxXTtcbiAgfVxuICBuYXRyLmRhdGFbb2Zzcl0gPSByZW07XG4gIHJldHVybiAwO1xufVxuXG4vLyBuYXQxW25hdDI6XSA6PSBuYXQxIC8gbmF0MlxuLy8gbmF0MVs6bmF0Ml0gOj0gbmF0MSAlIG5hdDJcbi8vIGxlbjEgPiBsZW4yLCBuYXQyW29mczIrbGVuMi0xXSA+IG5hdDFbb2ZzMStsZW4xLTFdXG4vL1Byb3ZpZGVzOiBkaXZfbmF0XG4vL1JlcXVpcmVzOiBkaXZfZGlnaXRfbmF0LCBkaXZfaGVscGVyLCBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQsIHNoaWZ0X2xlZnRfbmF0LCBzaGlmdF9yaWdodF9uYXQsIGNyZWF0ZV9uYXQsIHNldF90b196ZXJvX25hdCwgbXVsdF9kaWdpdF9uYXQsIHN1Yl9uYXQsIGNvbXBhcmVfbmF0LCBuYXRfb2ZfYXJyYXlcbmZ1bmN0aW9uIGRpdl9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMikge1xuICBpZiAobGVuMiA9PT0gMSkge1xuICAgIGRpdl9kaWdpdF9uYXQobmF0MSwgb2ZzMSArIDEsIG5hdDEsIG9mczEsIG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIpO1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgdmFyIHMgPSBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQobmF0Miwgb2ZzMiArIGxlbjIgLSAxKTtcbiAgc2hpZnRfbGVmdF9uYXQobmF0Miwgb2ZzMiwgbGVuMiwgbmF0X29mX2FycmF5KFswXSksIDAsIHMpO1xuICBzaGlmdF9sZWZ0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7XG5cbiAgdmFyIGQgPSAobmF0Mi5kYXRhW29mczIgKyBsZW4yIC0gMV0gPj4+IDApICsgMTtcbiAgdmFyIGEgPSBjcmVhdGVfbmF0KGxlbjIgKyAxKTtcbiAgZm9yICh2YXIgaSA9IGxlbjEgLSAxOyBpID49IGxlbjI7IGktLSkge1xuICAgIC8vIERlY2VudCBsb3dlciBib3VuZCBvbiBxdW9cbiAgICB2YXIgcXVvID1cbiAgICAgIGQgPT09IDQyOTQ5NjcyOTZcbiAgICAgICAgPyBuYXQxLmRhdGFbb2ZzMSArIGldID4+PiAwXG4gICAgICAgIDogZGl2X2hlbHBlcihcbiAgICAgICAgICAgIG5hdDEuZGF0YVtvZnMxICsgaV0gPj4+IDAsXG4gICAgICAgICAgICBuYXQxLmRhdGFbb2ZzMSArIGkgLSAxXSA+Pj4gMCxcbiAgICAgICAgICAgIGQsXG4gICAgICAgICAgKVswXTtcbiAgICBzZXRfdG9femVyb19uYXQoYSwgMCwgbGVuMiArIDEpO1xuICAgIG11bHRfZGlnaXRfbmF0KGEsIDAsIGxlbjIgKyAxLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXRfb2ZfYXJyYXkoW3F1b10pLCAwKTtcbiAgICBzdWJfbmF0KG5hdDEsIG9mczEgKyBpIC0gbGVuMiwgbGVuMiArIDEsIGEsIDAsIGxlbjIgKyAxLCAxKTtcblxuICAgIHdoaWxlIChcbiAgICAgIG5hdDEuZGF0YVtvZnMxICsgaV0gIT09IDAgfHxcbiAgICAgIGNvbXBhcmVfbmF0KG5hdDEsIG9mczEgKyBpIC0gbGVuMiwgbGVuMiwgbmF0Miwgb2ZzMiwgbGVuMikgPj0gMFxuICAgICkge1xuICAgICAgcXVvID0gcXVvICsgMTtcbiAgICAgIHN1Yl9uYXQobmF0MSwgb2ZzMSArIGkgLSBsZW4yLCBsZW4yICsgMSwgbmF0Miwgb2ZzMiwgbGVuMiwgMSk7XG4gICAgfVxuXG4gICAgbmF0MS5kYXRhW29mczEgKyBpXSA9IHF1bztcbiAgfVxuXG4gIHNoaWZ0X3JpZ2h0X25hdChuYXQxLCBvZnMxLCBsZW4yLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7IC8vIHNoaWZ0IHJlbWFpbmRlclxuICBzaGlmdF9yaWdodF9uYXQobmF0Miwgb2ZzMiwgbGVuMiwgbmF0X29mX2FycmF5KFswXSksIDAsIHMpOyAvLyByZXN0b3JlXG4gIHJldHVybiAwO1xufVxuXG4vLyAwIDw9IHNoaWZ0IDwgMzJcbi8vUHJvdmlkZXM6IHNoaWZ0X3JpZ2h0X25hdFxuZnVuY3Rpb24gc2hpZnRfcmlnaHRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIG5iaXRzKSB7XG4gIGlmIChuYml0cyA9PT0gMCkge1xuICAgIG5hdDIuZGF0YVtvZnMyXSA9IDA7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgdmFyIHdyYXAgPSAwO1xuICBmb3IgKHZhciBpID0gbGVuMSAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIGEgPSBuYXQxLmRhdGFbb2ZzMSArIGldID4+PiAwO1xuICAgIG5hdDEuZGF0YVtvZnMxICsgaV0gPSAoYSA+Pj4gbmJpdHMpIHwgd3JhcDtcbiAgICB3cmFwID0gYSA8PCAoMzIgLSBuYml0cyk7XG4gIH1cbiAgbmF0Mi5kYXRhW29mczJdID0gd3JhcDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNvbXBhcmVfZGlnaXRzX25hdFxuZnVuY3Rpb24gY29tcGFyZV9kaWdpdHNfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgaWYgKG5hdDEuZGF0YVtvZnMxXSA+IG5hdDIuZGF0YVtvZnMyXSkgcmV0dXJuIDE7XG4gIGlmIChuYXQxLmRhdGFbb2ZzMV0gPCBuYXQyLmRhdGFbb2ZzMl0pIHJldHVybiAtMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNvbXBhcmVfbmF0XG4vL1JlcXVpcmVzOiBudW1fZGlnaXRzX25hdFxuZnVuY3Rpb24gY29tcGFyZV9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMikge1xuICB2YXIgYSA9IG51bV9kaWdpdHNfbmF0KG5hdDEsIG9mczEsIGxlbjEpO1xuICB2YXIgYiA9IG51bV9kaWdpdHNfbmF0KG5hdDIsIG9mczIsIGxlbjIpO1xuICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgZm9yICh2YXIgaSA9IGxlbjEgLSAxOyBpID49IDA7IGktLSkge1xuICAgIGlmIChuYXQxLmRhdGFbb2ZzMSArIGldID4+PiAwID4gbmF0Mi5kYXRhW29mczIgKyBpXSA+Pj4gMCkgcmV0dXJuIDE7XG4gICAgaWYgKG5hdDEuZGF0YVtvZnMxICsgaV0gPj4+IDAgPCBuYXQyLmRhdGFbb2ZzMiArIGldID4+PiAwKSByZXR1cm4gLTE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGxhbmRfZGlnaXRfbmF0XG5mdW5jdGlvbiBsYW5kX2RpZ2l0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIG5hdDEuZGF0YVtvZnMxXSAmPSBuYXQyLmRhdGFbb2ZzMl07XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBsb3JfZGlnaXRfbmF0XG5mdW5jdGlvbiBsb3JfZGlnaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgbmF0MS5kYXRhW29mczFdIHw9IG5hdDIuZGF0YVtvZnMyXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGx4b3JfZGlnaXRfbmF0XG5mdW5jdGlvbiBseG9yX2RpZ2l0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIG5hdDEuZGF0YVtvZnMxXSBePSBuYXQyLmRhdGFbb2ZzMl07XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBzZXJpYWxpemVfbmF0XG5mdW5jdGlvbiBzZXJpYWxpemVfbmF0KHdyaXRlciwgbmF0LCBzeikge1xuICB2YXIgbGVuID0gbmF0LmRhdGEubGVuZ3RoO1xuICB3cml0ZXIud3JpdGUoMzIsIGxlbik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB3cml0ZXIud3JpdGUoMzIsIG5hdC5kYXRhW2ldKTtcbiAgfVxuICBzelswXSA9IGxlbiAqIDQ7XG4gIHN6WzFdID0gbGVuICogODtcbn1cblxuLy9Qcm92aWRlczogZGVzZXJpYWxpemVfbmF0XG4vL1JlcXVpcmVzOiBNbE5hdFxuZnVuY3Rpb24gZGVzZXJpYWxpemVfbmF0KHJlYWRlciwgc3opIHtcbiAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIHZhciBuYXQgPSBuZXcgTWxOYXQobGVuKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG5hdC5kYXRhW2ldID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgfVxuICBzelswXSA9IGxlbiAqIDQ7XG4gIHJldHVybiBuYXQ7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBqc29vX2lzX3dpbjMyXG52YXIganNvb19pc193aW4zMiA9XG4gIGdsb2JhbFRoaXMuRGVubz8uYnVpbGQ/Lm9zID09PSBcIndpbmRvd3NcIiB8fFxuICBnbG9iYWxUaGlzLnByb2Nlc3M/LnBsYXRmb3JtID09PSBcIndpbjMyXCI7XG5cbi8vUHJvdmlkZXM6IGZzX25vZGVfc3VwcG9ydGVkXG5mdW5jdGlvbiBmc19ub2RlX3N1cHBvcnRlZCgpIHtcbiAgcmV0dXJuIGdsb2JhbFRoaXMucHJvY2Vzcz8udmVyc2lvbnM/Lm5vZGUgIT09IHVuZGVmaW5lZDtcbn1cbi8vUHJvdmlkZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBmc19ub2RlX3N1cHBvcnRlZCgpIHtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVEZXZpY2Vcbi8vUmVxdWlyZXM6IE1sTm9kZUZkLCBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yLCBvY2FtbF9zdGF0c19mcm9tX25vZGVfc3RhdHNcbi8vUmVxdWlyZXM6IGpzb29faXNfd2luMzJcbmNsYXNzIE1sTm9kZURldmljZSB7XG4gIGNvbnN0cnVjdG9yKHJvb3QpIHtcbiAgICB0aGlzLmZzID0gcmVxdWlyZShcIm5vZGU6ZnNcIik7XG4gICAgdGhpcy5yb290ID0gcm9vdDtcbiAgfVxuXG4gIG5tKG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5yb290ICsgbmFtZTtcbiAgfVxuXG4gIGV4aXN0cyhuYW1lKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB0aGlzLmZzLmV4aXN0c1N5bmModGhpcy5ubShuYW1lKSkgPyAxIDogMDtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgfVxuXG4gIGlzRmlsZShuYW1lKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB0aGlzLmZzLnN0YXRTeW5jKHRoaXMubm0obmFtZSkpLmlzRmlsZSgpID8gMSA6IDA7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gICAgfVxuICB9XG5cbiAgbWtkaXIobmFtZSwgbW9kZSwgcmFpc2VfdW5peCkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmZzLm1rZGlyU3luYyh0aGlzLm5tKG5hbWUpLCB7IG1vZGU6IG1vZGUgfSk7XG4gICAgICByZXR1cm4gMDtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gICAgfVxuICB9XG5cbiAgcm1kaXIobmFtZSwgcmFpc2VfdW5peCkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmZzLnJtZGlyU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICAgIHJldHVybiAwO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY2FtbF9yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgICB9XG4gIH1cblxuICByZWFkZGlyKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMuZnMucmVhZGRpclN5bmModGhpcy5ubShuYW1lKSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjYW1sX3JhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICAgIH1cbiAgfVxuXG4gIGlzX2RpcihuYW1lKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB0aGlzLmZzLnN0YXRTeW5jKHRoaXMubm0obmFtZSkpLmlzRGlyZWN0b3J5KCkgPyAxIDogMDtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgICB9XG4gIH1cblxuICB1bmxpbmsobmFtZSwgcmFpc2VfdW5peCkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmZzLnVubGlua1N5bmModGhpcy5ubShuYW1lKSk7XG4gICAgICByZXR1cm4gMDtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gICAgfVxuICB9XG5cbiAgdXRpbWVzKG5hbWUsIGF0aW1lLCBtdGltZSwgcmFpc2VfdW5peCkge1xuICAgIHRyeSB7XG4gICAgICBpZiAoYXRpbWUgPT09IDAgJiYgbXRpbWUgPT09IDApIHtcbiAgICAgICAgYXRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDA7XG4gICAgICAgIG10aW1lID0gYXRpbWU7XG4gICAgICB9XG4gICAgICB0aGlzLmZzLnV0aW1lc1N5bmModGhpcy5ubShuYW1lKSwgYXRpbWUsIG10aW1lKTtcbiAgICAgIHJldHVybiAwO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY2FtbF9yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgICB9XG4gIH1cblxuICB0cnVuY2F0ZShuYW1lLCBsZW4sIHJhaXNlX3VuaXgpIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5mcy50cnVuY2F0ZVN5bmModGhpcy5ubShuYW1lKSwgbGVuIHwgMCk7XG4gICAgICByZXR1cm4gMDtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gICAgfVxuICB9XG5cbiAgYWNjZXNzKG5hbWUsIGYsIHJhaXNlX3VuaXgpIHtcbiAgICB2YXIgY29uc3RzID0gdGhpcy5mcy5jb25zdGFudHM7XG4gICAgdmFyIHJlcyA9IDA7XG4gICAgZm9yICh2YXIga2V5IGluIGYpIHtcbiAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgIGNhc2UgXCJyXCI6XG4gICAgICAgICAgcmVzIHw9IGNvbnN0cy5SX09LO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwid1wiOlxuICAgICAgICAgIHJlcyB8PSBjb25zdHMuV19PSztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInhcIjpcbiAgICAgICAgICByZXMgfD0ganNvb19pc193aW4zMiA/IGNvbnN0cy5SX09LIDogY29uc3RzLlhfT0s7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJmXCI6XG4gICAgICAgICAgcmVzIHw9IGNvbnN0cy5GX09LO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICB0cnkge1xuICAgICAgdGhpcy5mcy5hY2Nlc3NTeW5jKHRoaXMubm0obmFtZSksIHJlcyk7XG4gICAgICByZXR1cm4gMDtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gICAgfVxuICB9XG5cbiAgb3BlbihuYW1lLCBmLCBwZXJtcywgcmFpc2VfdW5peCkge1xuICAgIHZhciBjb25zdHMgPSB0aGlzLmZzLmNvbnN0YW50cztcbiAgICB2YXIgcmVzID0gMDtcbiAgICBmb3IgKHZhciBrZXkgaW4gZikge1xuICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgY2FzZSBcInJkb25seVwiOlxuICAgICAgICAgIHJlcyB8PSBjb25zdHMuT19SRE9OTFk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJ3cm9ubHlcIjpcbiAgICAgICAgICByZXMgfD0gY29uc3RzLk9fV1JPTkxZO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwicmR3clwiOlxuICAgICAgICAgIHJlcyB8PSBjb25zdHMuT19SRFdSO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiYXBwZW5kXCI6XG4gICAgICAgICAgcmVzIHw9IGNvbnN0cy5PX0FQUEVORDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcImNyZWF0ZVwiOlxuICAgICAgICAgIHJlcyB8PSBjb25zdHMuT19DUkVBVDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInRydW5jYXRlXCI6XG4gICAgICAgICAgcmVzIHw9IGNvbnN0cy5PX1RSVU5DO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiZXhjbFwiOlxuICAgICAgICAgIHJlcyB8PSBjb25zdHMuT19FWENMO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiYmluYXJ5XCI6XG4gICAgICAgICAgcmVzIHw9IGNvbnN0cy5PX0JJTkFSWTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInRleHRcIjpcbiAgICAgICAgICByZXMgfD0gY29uc3RzLk9fVEVYVDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIm5vbmJsb2NrXCI6XG4gICAgICAgICAgcmVzIHw9IGNvbnN0cy5PX05PTkJMT0NLO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwibm9jdHR5XCI6XG4gICAgICAgICAgcmVzIHw9IGNvbnN0cy5PX05PQ1RUWTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcImRzeW5jXCI6XG4gICAgICAgICAgcmVzIHw9IGNvbnN0cy5PX0RTWU5DO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwic3luY1wiOlxuICAgICAgICAgIHJlcyB8PSBjb25zdHMuT19TWU5DO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICB0cnkge1xuICAgICAgdmFyIGZkID0gdGhpcy5mcy5vcGVuU3luYyh0aGlzLm5tKG5hbWUpLCByZXMsIHBlcm1zKTtcbiAgICAgIHJldHVybiBuZXcgTWxOb2RlRmQoZmQsIGYpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY2FtbF9yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgICB9XG4gIH1cblxuICBzbGFzaChuYW1lKSB7XG4gICAgcmV0dXJuIC9cXC8kLy50ZXN0KG5hbWUpID8gbmFtZSA6IG5hbWUgKyBcIi9cIjtcbiAgfVxuXG4gIHJlbmFtZShvLCBuLCByYWlzZV91bml4KSB7XG4gICAgaWYgKGpzb29faXNfd2luMzIpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhciB0YXJnZXQgPSB0aGlzLm5tKG4pO1xuICAgICAgICB2YXIgc291cmNlID0gdGhpcy5ubShvKTtcbiAgICAgICAgdmFyIHRhcmdldF9zdGF0cywgc291cmNlX3N0YXRzO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgKHRhcmdldF9zdGF0cyA9IHRoaXMuZnMuc3RhdFN5bmModGFyZ2V0LCB7XG4gICAgICAgICAgICB0aHJvd0lmTm9FbnRyeTogZmFsc2UsXG4gICAgICAgICAgfSkpICYmXG4gICAgICAgICAgKHNvdXJjZV9zdGF0cyA9IHRoaXMuZnMuc3RhdFN5bmMoc291cmNlLCB7XG4gICAgICAgICAgICB0aHJvd0lmTm9FbnRyeTogZmFsc2UsXG4gICAgICAgICAgfSkpICYmXG4gICAgICAgICAgc291cmNlX3N0YXRzLmlzRGlyZWN0b3J5KClcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKHRhcmdldF9zdGF0cy5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuc2xhc2godGFyZ2V0KS5zdGFydHNXaXRoKHRoaXMuc2xhc2goc291cmNlKSkpXG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mcy5ybWRpclN5bmModGFyZ2V0KTtcbiAgICAgICAgICAgICAgfSBjYXRjaCB7fVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgZXJyID0gbmV3IEVycm9yKFxuICAgICAgICAgICAgICBgRU5PVERJUjogbm90IGEgZGlyZWN0b3J5LCByZW5hbWUgJyR7c291cmNlfScgLT4gJyR7dGFyZ2V0fSdgLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRocm93IE9iamVjdC5hc3NpZ24oZXJyLCB7XG4gICAgICAgICAgICAgIGVycm5vOiAtMjAsXG4gICAgICAgICAgICAgIGNvZGU6IFwiRU5PVERJUlwiLFxuICAgICAgICAgICAgICBzeXNjYWxsOiBcInJlbmFtZVwiLFxuICAgICAgICAgICAgICBwYXRoOiB0YXJnZXQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5mcy5yZW5hbWVTeW5jKHRoaXMubm0obyksIHRoaXMubm0obikpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuZnMucmVuYW1lU3luYyh0aGlzLm5tKG8pLCB0aGlzLm5tKG4pKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBjYW1sX3JhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHN0YXQobmFtZSwgbGFyZ2UsIHJhaXNlX3VuaXgpIHtcbiAgICB0cnkge1xuICAgICAgdmFyIGpzX3N0YXRzID0gdGhpcy5mcy5zdGF0U3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICAgIHJldHVybiBvY2FtbF9zdGF0c19mcm9tX25vZGVfc3RhdHMoanNfc3RhdHMsIGxhcmdlKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gICAgfVxuICB9XG5cbiAgbHN0YXQobmFtZSwgbGFyZ2UsIHJhaXNlX3VuaXgpIHtcbiAgICB0cnkge1xuICAgICAgdmFyIGpzX3N0YXRzID0gdGhpcy5mcy5sc3RhdFN5bmModGhpcy5ubShuYW1lKSk7XG4gICAgICByZXR1cm4gb2NhbWxfc3RhdHNfZnJvbV9ub2RlX3N0YXRzKGpzX3N0YXRzLCBsYXJnZSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjYW1sX3JhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICAgIH1cbiAgfVxuXG4gIGNobW9kKG5hbWUsIHBlcm1zLCByYWlzZV91bml4KSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuZnMuY2htb2RTeW5jKHRoaXMubm0obmFtZSksIHBlcm1zKTtcbiAgICAgIHJldHVybiAwO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY2FtbF9yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgICB9XG4gIH1cblxuICBsaW5rKHRhcmdldCwgcGF0aCwgcmFpc2VfdW5peCkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmZzLmxpbmtTeW5jKHRoaXMubm0odGFyZ2V0KSwgdGhpcy5ubShwYXRoKSk7XG4gICAgICByZXR1cm4gMDtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gICAgfVxuICB9XG5cbiAgc3ltbGluayh0b19kaXIsIHRhcmdldCwgcGF0aCwgcmFpc2VfdW5peCkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmZzLnN5bWxpbmtTeW5jKFxuICAgICAgICB0YXJnZXQsXG4gICAgICAgIHRoaXMubm0ocGF0aCksXG4gICAgICAgIHRvX2RpciA9PT0gMCA/IG51bGwgOiB0b19kaXJbMV0gPyBcImRpclwiIDogXCJmaWxlXCIsXG4gICAgICApO1xuICAgICAgcmV0dXJuIDA7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjYW1sX3JhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICAgIH1cbiAgfVxuXG4gIHJlYWRsaW5rKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgICB0cnkge1xuICAgICAgdmFyIGxpbmsgPSB0aGlzLmZzLnJlYWRsaW5rU3luYyh0aGlzLm5tKG5hbWUpLCBcInV0ZjhcIik7XG4gICAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcobGluayk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjYW1sX3JhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5kaXIobmFtZSwgcmFpc2VfdW5peCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gdGhpcy5mcy5vcGVuZGlyU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gICAgfVxuICB9XG59XG5cbi8vUHJvdmlkZXM6IG9jYW1sX3N0YXRzX2Zyb21fbm9kZV9zdGF0c1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9mbG9hdFxuZnVuY3Rpb24gb2NhbWxfc3RhdHNfZnJvbV9ub2RlX3N0YXRzKGpzX3N0YXRzLCBsYXJnZSkge1xuICAvKiA9PT1Vbml4LmZpbGVfa2luZD09PVxuICAgKiB0eXBlIGZpbGVfa2luZCA9XG4gICAqICAgICBTX1JFRyAgICAgICAgICAgICAgICAgICAgICAgKCoqIFJlZ3VsYXIgZmlsZSAqKVxuICAgKiAgIHwgU19ESVIgICAgICAgICAgICAgICAgICAgICAgICgqKiBEaXJlY3RvcnkgKilcbiAgICogICB8IFNfQ0hSICAgICAgICAgICAgICAgICAgICAgICAoKiogQ2hhcmFjdGVyIGRldmljZSAqKVxuICAgKiAgIHwgU19CTEsgICAgICAgICAgICAgICAgICAgICAgICgqKiBCbG9jayBkZXZpY2UgKilcbiAgICogICB8IFNfTE5LICAgICAgICAgICAgICAgICAgICAgICAoKiogU3ltYm9saWMgbGluayAqKVxuICAgKiAgIHwgU19GSUZPICAgICAgICAgICAgICAgICAgICAgICgqKiBOYW1lZCBwaXBlICopXG4gICAqICAgfCBTX1NPQ0sgICAgICAgICAgICAgICAgICAgICAgKCoqIFNvY2tldCAqKVxuICAgKi9cbiAgdmFyIGZpbGVfa2luZDtcbiAgaWYgKGpzX3N0YXRzLmlzRmlsZSgpKSB7XG4gICAgZmlsZV9raW5kID0gMDtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0RpcmVjdG9yeSgpKSB7XG4gICAgZmlsZV9raW5kID0gMTtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0NoYXJhY3RlckRldmljZSgpKSB7XG4gICAgZmlsZV9raW5kID0gMjtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0Jsb2NrRGV2aWNlKCkpIHtcbiAgICBmaWxlX2tpbmQgPSAzO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzU3ltYm9saWNMaW5rKCkpIHtcbiAgICBmaWxlX2tpbmQgPSA0O1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzRklGTygpKSB7XG4gICAgZmlsZV9raW5kID0gNTtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc1NvY2tldCgpKSB7XG4gICAgZmlsZV9raW5kID0gNjtcbiAgfVxuICAvKiA9PT1Vbml4LnN0YXRzPT09XG4gICAqIHR5cGUgc3RhdHMgPVxuICAgKiAgeyBzdF9kZXYgOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIERldmljZSBudW1iZXIgKilcbiAgICogICAgc3RfaW5vIDogaW50OyAgICAgICAgICAgICAgICgqKiBJbm9kZSBudW1iZXIgKilcbiAgICogICAgc3Rfa2luZCA6IGZpbGVfa2luZDsgICAgICAgICgqKiBLaW5kIG9mIHRoZSBmaWxlICopXG4gICAqICAgIHN0X3Blcm0gOiBmaWxlX3Blcm07ICAgICAgICAoKiogQWNjZXNzIHJpZ2h0cyAqKVxuICAgKiAgICBzdF9ubGluayA6IGludDsgICAgICAgICAgICAgKCoqIE51bWJlciBvZiBsaW5rcyAqKVxuICAgKiAgICBzdF91aWQgOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIFVzZXIgaWQgb2YgdGhlIG93bmVyICopXG4gICAqICAgIHN0X2dpZCA6IGludDsgICAgICAgICAgICAgICAoKiogR3JvdXAgSUQgb2YgdGhlIGZpbGUncyBncm91cCAqKVxuICAgKiAgICBzdF9yZGV2IDogaW50OyAgICAgICAgICAgICAgKCoqIERldmljZSBJRCAoaWYgc3BlY2lhbCBmaWxlKSAqKVxuICAgKiAgICBzdF9zaXplIDogaW50OyAgICAgICAgICAgICAgKCoqIFNpemUgaW4gYnl0ZXMgKilcbiAgICogICAgc3RfYXRpbWUgOiBmbG9hdDsgICAgICAgICAgICgqKiBMYXN0IGFjY2VzcyB0aW1lICopXG4gICAqICAgIHN0X210aW1lIDogZmxvYXQ7ICAgICAgICAgICAoKiogTGFzdCBtb2RpZmljYXRpb24gdGltZSAqKVxuICAgKiAgICBzdF9jdGltZSA6IGZsb2F0OyAgICAgICAgICAgKCoqIExhc3Qgc3RhdHVzIGNoYW5nZSB0aW1lICopXG4gICAqICB9XG4gICAqL1xuICByZXR1cm4gQkxPQ0soXG4gICAgMCxcbiAgICBqc19zdGF0cy5kZXYsXG4gICAganNfc3RhdHMuaW5vIHwgMCxcbiAgICBmaWxlX2tpbmQsXG4gICAganNfc3RhdHMubW9kZSxcbiAgICBqc19zdGF0cy5ubGluayxcbiAgICBqc19zdGF0cy51aWQsXG4gICAganNfc3RhdHMuZ2lkLFxuICAgIGpzX3N0YXRzLnJkZXYsXG4gICAgbGFyZ2UgPyBjYW1sX2ludDY0X29mX2Zsb2F0KGpzX3N0YXRzLnNpemUpIDoganNfc3RhdHMuc2l6ZSB8IDAsXG4gICAganNfc3RhdHMuYXRpbWVNcyAvIDEwMDAsXG4gICAganNfc3RhdHMubXRpbWVNcyAvIDEwMDAsXG4gICAganNfc3RhdHMuY3RpbWVNcyAvIDEwMDAsXG4gICk7XG59XG5cbi8vUHJvdmlkZXM6IE1sTm9kZURldmljZVxuLy9JZjogYnJvd3NlclxuY2xhc3MgTWxOb2RlRGV2aWNlIHt9XG5cbi8vUHJvdmlkZXM6IE1sTm9kZUZkXG4vL1JlcXVpcmVzOiBNbEZpbGUsIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nLCBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzLCBjYW1sX2J5dGVzX3NldCwgY2FtbF9yYWlzZV9zeXNfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yLCBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvciwgb2NhbWxfc3RhdHNfZnJvbV9ub2RlX3N0YXRzXG5jbGFzcyBNbE5vZGVGZCBleHRlbmRzIE1sRmlsZSB7XG4gIGNvbnN0cnVjdG9yKGZkLCBmbGFncykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5mcyA9IHJlcXVpcmUoXCJub2RlOmZzXCIpO1xuICAgIHRoaXMuZmQgPSBmZDtcbiAgICB0aGlzLmZsYWdzID0gZmxhZ3M7XG4gICAgdHJ5IHtcbiAgICAgIHZhciBzdGF0cyA9IHRoaXMuZnMuZnN0YXRTeW5jKGZkKTtcbiAgICAgIGZsYWdzLm5vU2VlayA9XG4gICAgICAgIHN0YXRzLmlzQ2hhcmFjdGVyRGV2aWNlKCkgfHwgc3RhdHMuaXNGSUZPKCkgfHwgc3RhdHMuaXNTb2NrZXQoKTtcbiAgICAgIHRoaXMub2Zmc2V0ID0gdGhpcy5mbGFncy5hcHBlbmQgPyBzdGF0cy5zaXplIDogMDtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIFRoZSBmc3RhdCB3aWxsIGZhaWwgb24gc3RhbmRhcmQgc3RyZWFtcyB1bmRlciBXaW5kb3dzIHdpdGggbm9kZVxuICAgICAgLy8gMTggKGFuZCBsb3dlcikuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbGlidXYvbGlidXYvcHVsbC8zODExLlxuICAgICAgZmxhZ3Mubm9TZWVrID0gdHJ1ZTtcbiAgICAgIHRoaXMub2Zmc2V0ID0gMDtcbiAgICB9XG4gICAgdGhpcy5zZWVrZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHRydW5jYXRlKGxlbiwgcmFpc2VfdW5peCkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmZzLmZ0cnVuY2F0ZVN5bmModGhpcy5mZCwgbGVuIHwgMCk7XG4gICAgICBpZiAodGhpcy5vZmZzZXQgPiBsZW4pIHRoaXMub2Zmc2V0ID0gbGVuO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY2FtbF9yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgICB9XG4gIH1cblxuICBpc2F0dHkoKSB7XG4gICAgdmFyIHR0eSA9IHJlcXVpcmUoXCJub2RlOnR0eVwiKTtcbiAgICByZXR1cm4gdHR5LmlzYXR0eSh0aGlzLmZkKSA/IDEgOiAwO1xuICB9XG5cbiAgbGVuZ3RoKCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gdGhpcy5mcy5mc3RhdFN5bmModGhpcy5mZCkuc2l6ZTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgICB9XG4gIH1cblxuICB3cml0ZShidWYsIGJ1Zl9vZmZzZXQsIGxlbiwgcmFpc2VfdW5peCkge1xuICAgIHRyeSB7XG4gICAgICBpZiAodGhpcy5mbGFncy5ub1NlZWsgfHwgIXRoaXMuc2Vla2VkKSB7XG4gICAgICAgIHZhciB3cml0dGVuID0gdGhpcy5mcy53cml0ZVN5bmModGhpcy5mZCwgYnVmLCBidWZfb2Zmc2V0LCBsZW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHdyaXR0ZW4gPSB0aGlzLmZzLndyaXRlU3luYyhcbiAgICAgICAgICB0aGlzLmZkLFxuICAgICAgICAgIGJ1ZixcbiAgICAgICAgICBidWZfb2Zmc2V0LFxuICAgICAgICAgIGxlbixcbiAgICAgICAgICB0aGlzLm9mZnNldCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMub2Zmc2V0ICs9IHdyaXR0ZW47XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjYW1sX3JhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICAgIH1cbiAgICByZXR1cm4gd3JpdHRlbjtcbiAgfVxuXG4gIHJlYWQoYSwgYnVmX29mZnNldCwgbGVuLCByYWlzZV91bml4KSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICh0aGlzLmZsYWdzLm5vU2VlayB8fCAhdGhpcy5zZWVrZWQpIHtcbiAgICAgICAgdmFyIHJlYWQgPSB0aGlzLmZzLnJlYWRTeW5jKHRoaXMuZmQsIGEsIGJ1Zl9vZmZzZXQsIGxlbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcmVhZCA9IHRoaXMuZnMucmVhZFN5bmModGhpcy5mZCwgYSwgYnVmX29mZnNldCwgbGVuLCB0aGlzLm9mZnNldCk7XG4gICAgICB9XG4gICAgICB0aGlzLm9mZnNldCArPSByZWFkO1xuICAgICAgcmV0dXJuIHJlYWQ7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjYW1sX3JhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICAgIH1cbiAgfVxuXG4gIHNlZWsob2Zmc2V0LCB3aGVuY2UsIHJhaXNlX3VuaXgpIHtcbiAgICBpZiAodGhpcy5mbGFncy5ub1NlZWspIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKHJhaXNlX3VuaXgsIFwiRVNQSVBFXCIsIFwibHNlZWtcIiwgXCJpbGxlZ2FsIHNlZWtcIik7XG4gICAgfVxuICAgIHN3aXRjaCAod2hlbmNlKSB7XG4gICAgICBjYXNlIDA6XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxOlxuICAgICAgICBvZmZzZXQgKz0gdGhpcy5vZmZzZXQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICBvZmZzZXQgKz0gdGhpcy5sZW5ndGgoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGlmIChvZmZzZXQgPCAwKSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcihcbiAgICAgICAgcmFpc2VfdW5peCxcbiAgICAgICAgXCJFSU5WQUxcIixcbiAgICAgICAgXCJsc2Vla1wiLFxuICAgICAgICBcImludmFsaWQgYXJndW1lbnRcIixcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMub2Zmc2V0ID0gb2Zmc2V0O1xuICAgIHRoaXMuc2Vla2VkID0gdHJ1ZTtcbiAgICByZXR1cm4gdGhpcy5vZmZzZXQ7XG4gIH1cblxuICBwb3MoKSB7XG4gICAgcmV0dXJuIHRoaXMub2Zmc2V0O1xuICB9XG5cbiAgc3RhdChsYXJnZSkge1xuICAgIHRyeSB7XG4gICAgICB2YXIganNfc3RhdHMgPSB0aGlzLmZzLmZzdGF0U3luYyh0aGlzLmZkKTtcbiAgICAgIHJldHVybiBvY2FtbF9zdGF0c19mcm9tX25vZGVfc3RhdHMoanNfc3RhdHMsIGxhcmdlKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgLyogcmFpc2UgVW5peF9lcnJvciAqLyAxKTtcbiAgICB9XG4gIH1cblxuICBjaG1vZChwZXJtcykge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmZzLmZjaG1vZFN5bmModGhpcy5mZCwgcGVybXMpO1xuICAgICAgcmV0dXJuIDA7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjYW1sX3JhaXNlX25vZGVqc19lcnJvcihlcnIsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gMSk7XG4gICAgfVxuICB9XG5cbiAgc3luYygpIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5mcy5mc3luY1N5bmModGhpcy5mZCk7XG4gICAgICByZXR1cm4gMDtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgLyogcmFpc2UgVW5peF9lcnJvciAqLyAxKTtcbiAgICB9XG4gIH1cblxuICBjbG9zZShyYWlzZV91bml4KSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuZnMuY2xvc2VTeW5jKHRoaXMuZmQpO1xuICAgICAgcmV0dXJuIDA7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjYW1sX3JhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICAgIH1cbiAgfVxuXG4gIGNoZWNrX3N0cmVhbV9zZW1hbnRpY3MoY21kKSB7XG4gICAgdHJ5IHtcbiAgICAgIHZhciBqc19zdGF0cyA9IHRoaXMuZnMuZnN0YXRTeW5jKHRoaXMuZmQpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY2FtbF9yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCAvKiByYWlzZSBVbml4X2Vycm9yICovIDEsIGNtZCk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgICEoXG4gICAgICAgIGpzX3N0YXRzLmlzRmlsZSgpIHx8XG4gICAgICAgIGpzX3N0YXRzLmlzQ2hhcmFjdGVyRGV2aWNlKCkgfHxcbiAgICAgICAganNfc3RhdHMuaXNGSUZPKCkgfHxcbiAgICAgICAganNfc3RhdHMuaXNTb2NrZXQoKVxuICAgICAgKVxuICAgIClcbiAgICAgIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKFxuICAgICAgICAvKiByYWlzZSBVbml4X2Vycm9yICovIDEsXG4gICAgICAgIFwiRUlOVkFMXCIsXG4gICAgICAgIGNtZCxcbiAgICAgICAgXCJpbnZhbGlkIGFyZ3VtZW50XCIsXG4gICAgICApO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IE1sTm9kZUZkXG4vL0lmOiBicm93c2VyXG5jbGFzcyBNbE5vZGVGZCB7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlXG4vL1JlcXVpcmVzOiBNbE5vZGVGZFxuZnVuY3Rpb24gY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZShmZCwgZmxhZ3MpIHtcbiAgaWYgKGZsYWdzLmFsdG5hbWUpIHtcbiAgICB0cnkge1xuICAgICAgdmFyIGZzID0gcmVxdWlyZShcIm5vZGU6ZnNcIik7XG4gICAgICB2YXIgZmQyID0gZnMub3BlblN5bmMoZmxhZ3MuYWx0bmFtZSwgXCJyc1wiKTtcbiAgICAgIHJldHVybiBuZXcgTWxOb2RlRmQoZmQyLCBmbGFncyk7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgfVxuICByZXR1cm4gbmV3IE1sTm9kZUZkKGZkLCBmbGFncyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX29wZW5fZm9yX25vZGVcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW5fZm9yX25vZGUoX2ZkLCBfZmxhZ3MpIHtcbiAgcmV0dXJuIG51bGw7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfYXJncywgbWFrZV91bml4X2Vycl9hcmdzLCBjYW1sX25hbWVkX3ZhbHVlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gY2FtbF9yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4LCBjbWQpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSBjYW1sX25hbWVkX3ZhbHVlKFwiVW5peC5Vbml4X2Vycm9yXCIpO1xuICBpZiAocmFpc2VfdW5peCAmJiB1bml4X2Vycm9yKSB7XG4gICAgdmFyIGFyZ3MgPSBtYWtlX3VuaXhfZXJyX2FyZ3MoXG4gICAgICBlcnIuY29kZSxcbiAgICAgIGNtZCB8fCBlcnIuc3lzY2FsbCxcbiAgICAgIGVyci5wYXRoLFxuICAgICAgZXJyLmVycm5vLFxuICAgICk7XG4gICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZCwgQW5keSBSYXlcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbi8vXG4vLyBCaWdhcnJheS5cbi8vXG4vLyAtIGFsbCBiaWdhcnJheSB0eXBlcyBpbmNsdWRpbmcgSW50NjQgYW5kIENvbXBsZXguXG4vLyAtIGZvcnRyYW4gKyBjIGxheW91dHNcbi8vIC0gc3ViL3NsaWNlL3Jlc2hhcGVcbi8vIC0gcmV0YWluIGZhc3QgcGF0aCBmb3IgMWQgYXJyYXkgYWNjZXNzXG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfaW5pdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9iYV9pbml0KCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2dldF9zaXplKGRpbXMpIHtcbiAgdmFyIG5fZGltcyA9IGRpbXMubGVuZ3RoO1xuICB2YXIgc2l6ZSA9IDE7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbl9kaW1zOyBpKyspIHtcbiAgICBpZiAoZGltc1tpXSA8IDApXG4gICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5jcmVhdGU6IG5lZ2F0aXZlIGRpbWVuc2lvblwiKTtcbiAgICBzaXplID0gc2l6ZSAqIGRpbXNbaV07XG4gIH1cbiAgcmV0dXJuIHNpemU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5wYWNrRmxvYXQxNlxudmFyIGNhbWxfdW5wYWNrRmxvYXQxNiA9IChmdW5jdGlvbiAoKSB7XG4gIHZhciBwb3cgPSBNYXRoLnBvdztcblxuICB2YXIgRVhQX01BU0sxNiA9IDMxOyAvLyAyICoqIDUgLSAxXG4gIHZhciBTSUdOSUZJQ0FORF9NQVNLMTYgPSAxMDIzOyAvLyAyICoqIDEwIC0gMVxuICB2YXIgTUlOX1NVQk5PUk1BTDE2ID0gcG93KDIsIC0yNCk7IC8vIDIgKiogLTEwICogMiAqKiAtMTRcbiAgdmFyIFNJR05JRklDQU5EX0RFTk9NMTYgPSAwLjAwMDk3NjU2MjU7IC8vIDIgKiogLTEwXG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChieXRlcykge1xuICAgIHZhciBzaWduID0gYnl0ZXMgPj4+IDE1O1xuICAgIHZhciBleHBvbmVudCA9IChieXRlcyA+Pj4gMTApICYgRVhQX01BU0sxNjtcbiAgICB2YXIgc2lnbmlmaWNhbmQgPSBieXRlcyAmIFNJR05JRklDQU5EX01BU0sxNjtcbiAgICBpZiAoZXhwb25lbnQgPT09IEVYUF9NQVNLMTYpXG4gICAgICByZXR1cm4gc2lnbmlmaWNhbmQgPT09IDBcbiAgICAgICAgPyBzaWduID09PSAwXG4gICAgICAgICAgPyBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFlcbiAgICAgICAgICA6IE51bWJlci5ORUdBVElWRV9JTkZJTklUWVxuICAgICAgICA6IE51bWJlci5OYU47XG4gICAgaWYgKGV4cG9uZW50ID09PSAwKVxuICAgICAgcmV0dXJuIHNpZ25pZmljYW5kICogKHNpZ24gPT09IDAgPyBNSU5fU1VCTk9STUFMMTYgOiAtTUlOX1NVQk5PUk1BTDE2KTtcbiAgICB2YXIgciA9XG4gICAgICBwb3coMiwgZXhwb25lbnQgLSAxNSkgKlxuICAgICAgKHNpZ24gPT09IDBcbiAgICAgICAgPyAxICsgc2lnbmlmaWNhbmQgKiBTSUdOSUZJQ0FORF9ERU5PTTE2XG4gICAgICAgIDogLTEgLSBzaWduaWZpY2FuZCAqIFNJR05JRklDQU5EX0RFTk9NMTYpO1xuICAgIHJldHVybiByO1xuICB9O1xufSkoKTtcblxuLy9Qcm92aWRlczogY2FtbF9wYWNrRmxvYXQxNlxudmFyIGNhbWxfcGFja0Zsb2F0MTYgPSAoZnVuY3Rpb24gKCkge1xuICBjb25zdCBJTlZFUlNFX09GX0VQU0lMT04gPSAxIC8gTnVtYmVyLkVQU0lMT047XG5cbiAgZnVuY3Rpb24gcm91bmRUaWVzVG9FdmVuKG51bSkge1xuICAgIHJldHVybiBudW0gKyBJTlZFUlNFX09GX0VQU0lMT04gLSBJTlZFUlNFX09GX0VQU0lMT047XG4gIH1cblxuICBjb25zdCBGTE9BVDE2X01JTl9WQUxVRSA9IDYuMTAzNTE1NjI1ZS01O1xuICBjb25zdCBGTE9BVDE2X01BWF9WQUxVRSA9IDY1NTA0O1xuICBjb25zdCBGTE9BVDE2X0VQU0lMT04gPSAwLjAwMDk3NjU2MjU7XG5cbiAgY29uc3QgRkxPQVQxNl9FUFNJTE9OX01VTFRJUExJRURfQllfRkxPQVQxNl9NSU5fVkFMVUUgPVxuICAgIEZMT0FUMTZfRVBTSUxPTiAqIEZMT0FUMTZfTUlOX1ZBTFVFO1xuICBjb25zdCBGTE9BVDE2X0VQU0lMT05fREVWSURFRF9CWV9FUFNJTE9OID1cbiAgICBGTE9BVDE2X0VQU0lMT04gKiBJTlZFUlNFX09GX0VQU0lMT047XG5cbiAgZnVuY3Rpb24gcm91bmRUb0Zsb2F0MTYobnVtKSB7XG4gICAgY29uc3QgbnVtYmVyID0gK251bTtcblxuICAgIC8vIE5hTiwgSW5maW5pdHksIC1JbmZpbml0eSwgMCwgLTBcbiAgICBpZiAoIU51bWJlci5pc0Zpbml0ZShudW1iZXIpIHx8IG51bWJlciA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICB9XG5cbiAgICAvLyBmaW5pdGUgZXhjZXB0IDAsIC0wXG4gICAgY29uc3Qgc2lnbiA9IG51bWJlciA+IDAgPyAxIDogLTE7XG4gICAgY29uc3QgYWJzb2x1dGUgPSBNYXRoLmFicyhudW1iZXIpO1xuXG4gICAgLy8gc21hbGwgbnVtYmVyXG4gICAgaWYgKGFic29sdXRlIDwgRkxPQVQxNl9NSU5fVkFMVUUpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHNpZ24gKlxuICAgICAgICByb3VuZFRpZXNUb0V2ZW4oXG4gICAgICAgICAgYWJzb2x1dGUgLyBGTE9BVDE2X0VQU0lMT05fTVVMVElQTElFRF9CWV9GTE9BVDE2X01JTl9WQUxVRSxcbiAgICAgICAgKSAqXG4gICAgICAgIEZMT0FUMTZfRVBTSUxPTl9NVUxUSVBMSUVEX0JZX0ZMT0FUMTZfTUlOX1ZBTFVFXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHRlbXAgPSAoMSArIEZMT0FUMTZfRVBTSUxPTl9ERVZJREVEX0JZX0VQU0lMT04pICogYWJzb2x1dGU7XG4gICAgY29uc3QgcmVzdWx0ID0gdGVtcCAtICh0ZW1wIC0gYWJzb2x1dGUpO1xuXG4gICAgLy8gbGFyZ2UgbnVtYmVyXG4gICAgaWYgKHJlc3VsdCA+IEZMT0FUMTZfTUFYX1ZBTFVFIHx8IE51bWJlci5pc05hTihyZXN1bHQpKSB7XG4gICAgICByZXR1cm4gc2lnbiAqIE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2lnbiAqIHJlc3VsdDtcbiAgfVxuXG4gIC8vIGJhc2UgYWxnb3JpdGhtOiBodHRwOi8vZm94LXRvb2xraXQub3JnL2Z0cC9mYXN0aGFsZmZsb2F0Y29udmVyc2lvbi5wZGZcblxuICBjb25zdCBiYXNlVGFibGUgPSBuZXcgVWludDE2QXJyYXkoNTEyKTtcbiAgY29uc3Qgc2hpZnRUYWJsZSA9IG5ldyBVaW50OEFycmF5KDUxMik7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCAyNTY7ICsraSkge1xuICAgIGNvbnN0IGUgPSBpIC0gMTI3O1xuXG4gICAgLy8gdmVyeSBzbWFsbCBudW1iZXIgKDAsIC0wKVxuICAgIGlmIChlIDwgLTI0KSB7XG4gICAgICBiYXNlVGFibGVbaV0gPSAweDAwMDA7XG4gICAgICBiYXNlVGFibGVbaSB8IDB4MTAwXSA9IDB4ODAwMDtcbiAgICAgIHNoaWZ0VGFibGVbaV0gPSAyNDtcbiAgICAgIHNoaWZ0VGFibGVbaSB8IDB4MTAwXSA9IDI0O1xuXG4gICAgICAvLyBzbWFsbCBudW1iZXIgKGRlbm9ybSlcbiAgICB9IGVsc2UgaWYgKGUgPCAtMTQpIHtcbiAgICAgIGJhc2VUYWJsZVtpXSA9IDB4MDQwMCA+PiAoLWUgLSAxNCk7XG4gICAgICBiYXNlVGFibGVbaSB8IDB4MTAwXSA9ICgweDA0MDAgPj4gKC1lIC0gMTQpKSB8IDB4ODAwMDtcbiAgICAgIHNoaWZ0VGFibGVbaV0gPSAtZSAtIDE7XG4gICAgICBzaGlmdFRhYmxlW2kgfCAweDEwMF0gPSAtZSAtIDE7XG5cbiAgICAgIC8vIG5vcm1hbCBudW1iZXJcbiAgICB9IGVsc2UgaWYgKGUgPD0gMTUpIHtcbiAgICAgIGJhc2VUYWJsZVtpXSA9IChlICsgMTUpIDw8IDEwO1xuICAgICAgYmFzZVRhYmxlW2kgfCAweDEwMF0gPSAoKGUgKyAxNSkgPDwgMTApIHwgMHg4MDAwO1xuICAgICAgc2hpZnRUYWJsZVtpXSA9IDEzO1xuICAgICAgc2hpZnRUYWJsZVtpIHwgMHgxMDBdID0gMTM7XG5cbiAgICAgIC8vIGxhcmdlIG51bWJlciAoSW5maW5pdHksIC1JbmZpbml0eSlcbiAgICB9IGVsc2UgaWYgKGUgPCAxMjgpIHtcbiAgICAgIGJhc2VUYWJsZVtpXSA9IDB4N2MwMDtcbiAgICAgIGJhc2VUYWJsZVtpIHwgMHgxMDBdID0gMHhmYzAwO1xuICAgICAgc2hpZnRUYWJsZVtpXSA9IDI0O1xuICAgICAgc2hpZnRUYWJsZVtpIHwgMHgxMDBdID0gMjQ7XG5cbiAgICAgIC8vIHN0YXkgKE5hTiwgSW5maW5pdHksIC1JbmZpbml0eSlcbiAgICB9IGVsc2Uge1xuICAgICAgYmFzZVRhYmxlW2ldID0gMHg3YzAwO1xuICAgICAgYmFzZVRhYmxlW2kgfCAweDEwMF0gPSAweGZjMDA7XG4gICAgICBzaGlmdFRhYmxlW2ldID0gMTM7XG4gICAgICBzaGlmdFRhYmxlW2kgfCAweDEwMF0gPSAxMztcbiAgICB9XG4gIH1cblxuICBjb25zdCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoNCk7XG4gIGNvbnN0IGZsb2F0VmlldyA9IG5ldyBGbG9hdDMyQXJyYXkoYnVmZmVyKTtcbiAgY29uc3QgdWludDMyVmlldyA9IG5ldyBVaW50MzJBcnJheShidWZmZXIpO1xuXG4gIHJldHVybiBmdW5jdGlvbiAobnVtKSB7XG4gICAgZmxvYXRWaWV3WzBdID0gcm91bmRUb0Zsb2F0MTYobnVtKTtcbiAgICBjb25zdCBmID0gdWludDMyVmlld1swXTtcbiAgICBjb25zdCBlID0gKGYgPj4gMjMpICYgMHgxZmY7XG4gICAgcmV0dXJuIGJhc2VUYWJsZVtlXSArICgoZiAmIDB4MDA3ZmZmZmYpID4+IHNoaWZ0VGFibGVbZV0pO1xuICB9O1xufSkoKTtcblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChraW5kKSB7XG4gIHN3aXRjaCAoa2luZCkge1xuICAgIGNhc2UgNzpcbiAgICBjYXNlIDEwOlxuICAgIGNhc2UgMTE6XG4gICAgICByZXR1cm4gMjtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIDE7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVfYnVmZmVyXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX2J1ZmZlcihraW5kLCBzaXplKSB7XG4gIHZhciB2aWV3O1xuICBzd2l0Y2ggKGtpbmQpIHtcbiAgICBjYXNlIDA6XG4gICAgICB2aWV3ID0gRmxvYXQzMkFycmF5O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxOlxuICAgICAgdmlldyA9IEZsb2F0NjRBcnJheTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMjpcbiAgICAgIHZpZXcgPSBJbnQ4QXJyYXk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDM6XG4gICAgICB2aWV3ID0gVWludDhBcnJheTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgNDpcbiAgICAgIHZpZXcgPSBJbnQxNkFycmF5O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA1OlxuICAgICAgdmlldyA9IFVpbnQxNkFycmF5O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA2OlxuICAgICAgdmlldyA9IEludDMyQXJyYXk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDc6XG4gICAgICB2aWV3ID0gSW50MzJBcnJheTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgODpcbiAgICAgIHZpZXcgPSBJbnQzMkFycmF5O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA5OlxuICAgICAgdmlldyA9IEludDMyQXJyYXk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDEwOlxuICAgICAgdmlldyA9IEZsb2F0MzJBcnJheTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTE6XG4gICAgICB2aWV3ID0gRmxvYXQ2NEFycmF5O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxMjpcbiAgICAgIHZpZXcgPSBVaW50OEFycmF5O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxMzpcbiAgICAgIHZpZXcgPSBVaW50MTZBcnJheTtcbiAgICAgIGJyZWFrO1xuICB9XG4gIGlmICghdmlldykgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuY3JlYXRlOiB1bnN1cHBvcnRlZCBraW5kXCIpO1xuICB2YXIgZGF0YSA9IG5ldyB2aWV3KHNpemUgKiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpKTtcbiAgcmV0dXJuIGRhdGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3VzdG9tX25hbWVcbnZhciBjYW1sX2JhX2N1c3RvbV9uYW1lID0gXCJfYmlnYXJyMDJcIjtcblxuLy9Qcm92aWRlczogTWxfQmlnYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jdXN0b21fbmFtZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGksIGNhbWxfaW50NjRfaGkzMiwgY2FtbF9pbnQ2NF9sbzMyXG4vL1JlcXVpcmVzOiBjYW1sX3BhY2tGbG9hdDE2LCBjYW1sX3VucGFja0Zsb2F0MTZcbmNsYXNzIE1sX0JpZ2FycmF5IHtcbiAgY29uc3RydWN0b3Ioa2luZCwgbGF5b3V0LCBkaW1zLCBidWZmZXIpIHtcbiAgICB0aGlzLmtpbmQgPSBraW5kO1xuICAgIHRoaXMubGF5b3V0ID0gbGF5b3V0O1xuICAgIHRoaXMuZGltcyA9IGRpbXM7XG4gICAgdGhpcy5kYXRhID0gYnVmZmVyO1xuICAgIHRoaXMuY2FtbF9jdXN0b20gPSBjYW1sX2JhX2N1c3RvbV9uYW1lO1xuICB9XG5cbiAgb2Zmc2V0KGFyZykge1xuICAgIHZhciBvZnMgPSAwO1xuICAgIGlmICh0eXBlb2YgYXJnID09PSBcIm51bWJlclwiKSBhcmcgPSBbYXJnXTtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoYXJnKSlcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImJpZ2FycmF5LmpzOiBpbnZhbGlkIG9mZnNldFwiKTtcbiAgICBpZiAodGhpcy5kaW1zLmxlbmd0aCAhPT0gYXJnLmxlbmd0aClcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmdldC9zZXQ6IGJhZCBudW1iZXIgb2YgZGltZW5zaW9uc1wiKTtcbiAgICBpZiAodGhpcy5sYXlvdXQgPT09IDAgLyogY19sYXlvdXQgKi8pIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kaW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChhcmdbaV0gPCAwIHx8IGFyZ1tpXSA+PSB0aGlzLmRpbXNbaV0pIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgICAgICAgb2ZzID0gb2ZzICogdGhpcy5kaW1zW2ldICsgYXJnW2ldO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy5kaW1zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIGlmIChhcmdbaV0gPCAxIHx8IGFyZ1tpXSA+IHRoaXMuZGltc1tpXSkge1xuICAgICAgICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgICAgICAgfVxuICAgICAgICBvZnMgPSBvZnMgKiB0aGlzLmRpbXNbaV0gKyAoYXJnW2ldIC0gMSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvZnM7XG4gIH1cblxuICBnZXQob2ZzKSB7XG4gICAgc3dpdGNoICh0aGlzLmtpbmQpIHtcbiAgICAgIGNhc2UgNzpcbiAgICAgICAgLy8gSW50NjRcbiAgICAgICAgdmFyIGwgPSB0aGlzLmRhdGFbb2ZzICogMiArIDBdO1xuICAgICAgICB2YXIgaCA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMV07XG4gICAgICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaShsLCBoKTtcbiAgICAgIGNhc2UgMTA6XG4gICAgICBjYXNlIDExOlxuICAgICAgICAvLyBDb21wbGV4MzIsIENvbXBsZXg2NFxuICAgICAgICB2YXIgciA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMF07XG4gICAgICAgIHZhciBpID0gdGhpcy5kYXRhW29mcyAqIDIgKyAxXTtcbiAgICAgICAgcmV0dXJuIFsyNTQsIHIsIGldO1xuICAgICAgY2FzZSAxMzpcbiAgICAgICAgcmV0dXJuIGNhbWxfdW5wYWNrRmxvYXQxNih0aGlzLmRhdGFbb2ZzXSk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdGhpcy5kYXRhW29mc107XG4gICAgfVxuICB9XG5cbiAgc2V0KG9mcywgdikge1xuICAgIHN3aXRjaCAodGhpcy5raW5kKSB7XG4gICAgICBjYXNlIDc6XG4gICAgICAgIC8vIEludDY0XG4gICAgICAgIHRoaXMuZGF0YVtvZnMgKiAyICsgMF0gPSBjYW1sX2ludDY0X2xvMzIodik7XG4gICAgICAgIHRoaXMuZGF0YVtvZnMgKiAyICsgMV0gPSBjYW1sX2ludDY0X2hpMzIodik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMDpcbiAgICAgIGNhc2UgMTE6XG4gICAgICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgICAgIHRoaXMuZGF0YVtvZnMgKiAyICsgMF0gPSB2WzFdO1xuICAgICAgICB0aGlzLmRhdGFbb2ZzICogMiArIDFdID0gdlsyXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEzOlxuICAgICAgICB0aGlzLmRhdGFbb2ZzXSA9IGNhbWxfcGFja0Zsb2F0MTYodik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5kYXRhW29mc10gPSB2O1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBmaWxsKHYpIHtcbiAgICBzd2l0Y2ggKHRoaXMua2luZCkge1xuICAgICAgY2FzZSA3OlxuICAgICAgICAvLyBJbnQ2NFxuICAgICAgICB2YXIgYSA9IGNhbWxfaW50NjRfbG8zMih2KTtcbiAgICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X2hpMzIodik7XG4gICAgICAgIGlmIChhID09PSBiKSB7XG4gICAgICAgICAgdGhpcy5kYXRhLmZpbGwoYSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YVtpXSA9IGkgJSAyID09PSAwID8gYSA6IGI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMDpcbiAgICAgIGNhc2UgMTE6XG4gICAgICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgICAgIHZhciBpbSA9IHZbMV07XG4gICAgICAgIHZhciByZSA9IHZbMl07XG4gICAgICAgIGlmIChpbSA9PT0gcmUpIHtcbiAgICAgICAgICB0aGlzLmRhdGEuZmlsbChpbSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YVtpXSA9IGkgJSAyID09PSAwID8gaW0gOiByZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEzOlxuICAgICAgICB0aGlzLmRhdGEuZmlsbChjYW1sX3BhY2tGbG9hdDE2KHYpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLmRhdGEuZmlsbCh2KTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgY29tcGFyZShiLCB0b3RhbCkge1xuICAgIGlmICh0aGlzLmxheW91dCAhPT0gYi5sYXlvdXQgfHwgdGhpcy5raW5kICE9PSBiLmtpbmQpIHtcbiAgICAgIHZhciBrMSA9IHRoaXMua2luZCB8ICh0aGlzLmxheW91dCA8PCA4KTtcbiAgICAgIHZhciBrMiA9IGIua2luZCB8IChiLmxheW91dCA8PCA4KTtcbiAgICAgIHJldHVybiBrMiAtIGsxO1xuICAgIH1cbiAgICBpZiAodGhpcy5kaW1zLmxlbmd0aCAhPT0gYi5kaW1zLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGIuZGltcy5sZW5ndGggLSB0aGlzLmRpbXMubGVuZ3RoO1xuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGltcy5sZW5ndGg7IGkrKylcbiAgICAgIGlmICh0aGlzLmRpbXNbaV0gIT09IGIuZGltc1tpXSkgcmV0dXJuIHRoaXMuZGltc1tpXSA8IGIuZGltc1tpXSA/IC0xIDogMTtcbiAgICBzd2l0Y2ggKHRoaXMua2luZCkge1xuICAgICAgY2FzZSAwOlxuICAgICAgY2FzZSAxOlxuICAgICAgY2FzZSAxMDpcbiAgICAgIGNhc2UgMTE6XG4gICAgICAgIC8vIEZsb2F0c1xuICAgICAgICB2YXIgeCwgeTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB4ID0gdGhpcy5kYXRhW2ldO1xuICAgICAgICAgIHkgPSBiLmRhdGFbaV07XG4gICAgICAgICAgaWYgKHggPCB5KSByZXR1cm4gLTE7XG4gICAgICAgICAgaWYgKHggPiB5KSByZXR1cm4gMTtcbiAgICAgICAgICBpZiAoeCAhPT0geSkge1xuICAgICAgICAgICAgaWYgKCF0b3RhbCkgcmV0dXJuIE51bWJlci5OYU47XG4gICAgICAgICAgICBpZiAoIU51bWJlci5pc05hTih4KSkgcmV0dXJuIDE7XG4gICAgICAgICAgICBpZiAoIU51bWJlci5pc05hTih5KSkgcmV0dXJuIC0xO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNzpcbiAgICAgICAgLy8gSW50NjRcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgICAgICAvLyBDaGVjayBoaWdoZXN0IGJpdHMgZmlyc3RcbiAgICAgICAgICBpZiAodGhpcy5kYXRhW2kgKyAxXSA8IGIuZGF0YVtpICsgMV0pIHJldHVybiAtMTtcbiAgICAgICAgICBpZiAodGhpcy5kYXRhW2kgKyAxXSA+IGIuZGF0YVtpICsgMV0pIHJldHVybiAxO1xuICAgICAgICAgIGlmICh0aGlzLmRhdGFbaV0gPj4+IDAgPCBiLmRhdGFbaV0gPj4+IDApIHJldHVybiAtMTtcbiAgICAgICAgICBpZiAodGhpcy5kYXRhW2ldID4+PiAwID4gYi5kYXRhW2ldID4+PiAwKSByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTM6XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIGFhID0gY2FtbF91bnBhY2tGbG9hdDE2KHRoaXMuZGF0YVtpXSk7XG4gICAgICAgICAgdmFyIGJiID0gY2FtbF91bnBhY2tGbG9hdDE2KGIuZGF0YVtpXSk7XG4gICAgICAgICAgaWYgKGFhIDwgYmIpIHJldHVybiAtMTtcbiAgICAgICAgICBpZiAoYWEgPiBiYikgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI6XG4gICAgICBjYXNlIDM6XG4gICAgICBjYXNlIDQ6XG4gICAgICBjYXNlIDU6XG4gICAgICBjYXNlIDY6XG4gICAgICBjYXNlIDg6XG4gICAgICBjYXNlIDk6XG4gICAgICBjYXNlIDEyOlxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmICh0aGlzLmRhdGFbaV0gPCBiLmRhdGFbaV0pIHJldHVybiAtMTtcbiAgICAgICAgICBpZiAodGhpcy5kYXRhW2ldID4gYi5kYXRhW2ldKSByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogTWxfQmlnYXJyYXlfY18xXzFcbi8vUmVxdWlyZXM6IE1sX0JpZ2FycmF5LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmNsYXNzIE1sX0JpZ2FycmF5X2NfMV8xIGV4dGVuZHMgTWxfQmlnYXJyYXkge1xuICBvZmZzZXQoYXJnKSB7XG4gICAgaWYgKHR5cGVvZiBhcmcgIT09IFwibnVtYmVyXCIpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGFyZykgJiYgYXJnLmxlbmd0aCA9PT0gMSkgYXJnID0gYXJnWzBdO1xuICAgICAgZWxzZSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJNbF9CaWdhcnJheV9jXzFfMS5vZmZzZXRcIik7XG4gICAgfVxuICAgIGlmIChhcmcgPCAwIHx8IGFyZyA+PSB0aGlzLmRpbXNbMF0pIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgICByZXR1cm4gYXJnO1xuICB9XG5cbiAgZ2V0KG9mcykge1xuICAgIHJldHVybiB0aGlzLmRhdGFbb2ZzXTtcbiAgfVxuXG4gIHNldChvZnMsIHYpIHtcbiAgICB0aGlzLmRhdGFbb2ZzXSA9IHY7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBmaWxsKHYpIHtcbiAgICB0aGlzLmRhdGEuZmlsbCh2KTtcbiAgICByZXR1cm4gMDtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NvbXBhcmVcbmZ1bmN0aW9uIGNhbWxfYmFfY29tcGFyZShhLCBiLCB0b3RhbCkge1xuICByZXR1cm4gYS5jb21wYXJlKGIsIHRvdGFsKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG4vL1JlcXVpcmVzOiBNbF9CaWdhcnJheSwgTWxfQmlnYXJyYXlfY18xXzEsIGNhbWxfYmFfZ2V0X3NpemUsIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSkge1xuICB2YXIgc2l6ZV9wZXJfZWxlbWVudCA9IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCk7XG4gIGlmIChjYW1sX2JhX2dldF9zaXplKGRpbXMpICogc2l6ZV9wZXJfZWxlbWVudCAhPT0gZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJsZW5ndGggZG9lc24ndCBtYXRjaCBkaW1zXCIpO1xuICB9XG4gIGlmIChcbiAgICBsYXlvdXQgPT09IDAgJiYgLy8gY19sYXlvdXRcbiAgICBkaW1zLmxlbmd0aCA9PT0gMSAmJiAvLyBBcnJheTFcbiAgICBzaXplX3Blcl9lbGVtZW50ID09PSAxICYmXG4gICAga2luZCAhPT0gMTMgLy8gZmxvYXQxNlxuICApXG4gICAgLy8gMS10by0xIG1hcHBpbmdcbiAgICByZXR1cm4gbmV3IE1sX0JpZ2FycmF5X2NfMV8xKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG4gIHJldHVybiBuZXcgTWxfQmlnYXJyYXkoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZSwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV9idWZmZXJcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlKGtpbmQsIGxheW91dCwgZGltc19tbCkge1xuICB2YXIgZGltcyA9IGNhbWxfanNfZnJvbV9hcnJheShkaW1zX21sKTtcbiAgdmFyIGRhdGEgPSBjYW1sX2JhX2NyZWF0ZV9idWZmZXIoa2luZCwgY2FtbF9iYV9nZXRfc2l6ZShkaW1zKSk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGNhbWxfYmFfY2hhbmdlX2xheW91dChiYSwgbGF5b3V0KSB7XG4gIGlmIChiYS5sYXlvdXQgPT09IGxheW91dCkgcmV0dXJuIGJhO1xuICB2YXIgbmV3X2RpbXMgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKVxuICAgIG5ld19kaW1zW2ldID0gYmEuZGltc1tiYS5kaW1zLmxlbmd0aCAtIGkgLSAxXTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiYS5raW5kLCBsYXlvdXQsIG5ld19kaW1zLCBiYS5kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9raW5kXG5mdW5jdGlvbiBjYW1sX2JhX2tpbmQoYmEpIHtcbiAgcmV0dXJuIGJhLmtpbmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbGF5b3V0XG5mdW5jdGlvbiBjYW1sX2JhX2xheW91dChiYSkge1xuICByZXR1cm4gYmEubGF5b3V0O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX251bV9kaW1zXG5mdW5jdGlvbiBjYW1sX2JhX251bV9kaW1zKGJhKSB7XG4gIHJldHVybiBiYS5kaW1zLmxlbmd0aDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9kaW1cbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9kaW0oYmEsIGkpIHtcbiAgaWYgKGkgPCAwIHx8IGkgPj0gYmEuZGltcy5sZW5ndGgpIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmRpbVwiKTtcbiAgcmV0dXJuIGJhLmRpbXNbaV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXzFcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZGltXG5mdW5jdGlvbiBjYW1sX2JhX2RpbV8xKGJhKSB7XG4gIHJldHVybiBjYW1sX2JhX2RpbShiYSwgMCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXzJcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZGltXG5mdW5jdGlvbiBjYW1sX2JhX2RpbV8yKGJhKSB7XG4gIHJldHVybiBjYW1sX2JhX2RpbShiYSwgMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXzNcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZGltXG5mdW5jdGlvbiBjYW1sX2JhX2RpbV8zKGJhKSB7XG4gIHJldHVybiBjYW1sX2JhX2RpbShiYSwgMik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0X2dlbmVyaWNcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfZ2VuZXJpYyhiYSwgaSkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGNhbWxfanNfZnJvbV9hcnJheShpKSk7XG4gIHJldHVybiBiYS5nZXQob2ZzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9nZXQxNlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9nZXQxNihiYSwgaTApIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmIChvZnMgKyAxID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMpO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzICsgMSk7XG4gIHJldHVybiBiMSB8IChiMiA8PCA4KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9nZXQzMlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9nZXQzMihiYSwgaTApIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmIChvZnMgKyAzID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMgKyAwKTtcbiAgdmFyIGIyID0gYmEuZ2V0KG9mcyArIDEpO1xuICB2YXIgYjMgPSBiYS5nZXQob2ZzICsgMik7XG4gIHZhciBiNCA9IGJhLmdldChvZnMgKyAzKTtcbiAgcmV0dXJuIChiMSA8PCAwKSB8IChiMiA8PCA4KSB8IChiMyA8PCAxNikgfCAoYjQgPDwgMjQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X2dldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X2dldDY0KGJhLCBpMCkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYgKG9mcyArIDcgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gYmEuZ2V0KG9mcyArIDApO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzICsgMSk7XG4gIHZhciBiMyA9IGJhLmdldChvZnMgKyAyKTtcbiAgdmFyIGI0ID0gYmEuZ2V0KG9mcyArIDMpO1xuICB2YXIgYjUgPSBiYS5nZXQob2ZzICsgNCk7XG4gIHZhciBiNiA9IGJhLmdldChvZnMgKyA1KTtcbiAgdmFyIGI3ID0gYmEuZ2V0KG9mcyArIDYpO1xuICB2YXIgYjggPSBiYS5nZXQob2ZzICsgNyk7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKFtiOCwgYjcsIGI2LCBiNSwgYjQsIGIzLCBiMiwgYjFdKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfMVxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfMShiYSwgaTApIHtcbiAgcmV0dXJuIGJhLmdldChiYS5vZmZzZXQoaTApKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfMlxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfMihiYSwgaTAsIGkxKSB7XG4gIHJldHVybiBiYS5nZXQoYmEub2Zmc2V0KFtpMCwgaTFdKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0XzNcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0XzMoYmEsIGkwLCBpMSwgaTIpIHtcbiAgcmV0dXJuIGJhLmdldChiYS5vZmZzZXQoW2kwLCBpMSwgaTJdKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0X2dlbmVyaWNcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9iYV9zZXRfZ2VuZXJpYyhiYSwgaSwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KGNhbWxfanNfZnJvbV9hcnJheShpKSksIHYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9zZXQxNlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9zZXQxNihiYSwgaTAsIHYpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmIChvZnMgKyAxID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIGJhLnNldChvZnMgKyAwLCB2ICYgMHhmZik7XG4gIGJhLnNldChvZnMgKyAxLCAodiA+Pj4gOCkgJiAweGZmKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfc2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfc2V0MzIoYmEsIGkwLCB2KSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZiAob2ZzICsgMyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICBiYS5zZXQob2ZzICsgMCwgdiAmIDB4ZmYpO1xuICBiYS5zZXQob2ZzICsgMSwgKHYgPj4+IDgpICYgMHhmZik7XG4gIGJhLnNldChvZnMgKyAyLCAodiA+Pj4gMTYpICYgMHhmZik7XG4gIGJhLnNldChvZnMgKyAzLCAodiA+Pj4gMjQpICYgMHhmZik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X3NldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2ludDY0X3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X3NldDY0KGJhLCBpMCwgdikge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYgKG9mcyArIDcgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIHYgPSBjYW1sX2ludDY0X3RvX2J5dGVzKHYpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IDg7IGkrKykgYmEuc2V0KG9mcyArIGksIHZbNyAtIGldKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzFcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzEoYmEsIGkwLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoaTApLCB2KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzJcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzIoYmEsIGkwLCBpMSwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KFtpMCwgaTFdKSwgdik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NldF8zXG5mdW5jdGlvbiBjYW1sX2JhX3NldF8zKGJhLCBpMCwgaTEsIGkyLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoW2kwLCBpMSwgaTJdKSwgdik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2ZpbGxcbmZ1bmN0aW9uIGNhbWxfYmFfZmlsbChiYSwgdikge1xuICBiYS5maWxsKHYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9ibGl0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfYmxpdChzcmMsIGRzdCkge1xuICBpZiAoZHN0LmRpbXMubGVuZ3RoICE9PSBzcmMuZGltcy5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuYmxpdDogZGltZW5zaW9uIG1pc21hdGNoXCIpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGRzdC5kaW1zLmxlbmd0aDsgaSsrKVxuICAgIGlmIChkc3QuZGltc1tpXSAhPT0gc3JjLmRpbXNbaV0pXG4gICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5ibGl0OiBkaW1lbnNpb24gbWlzbWF0Y2hcIik7XG4gIGRzdC5kYXRhLnNldChzcmMuZGF0YSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3N1YlxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfc3ViKGJhLCBvZnMsIGxlbikge1xuICB2YXIgY2hhbmdlZF9kaW07XG4gIHZhciBtdWwgPSAxO1xuICBpZiAoYmEubGF5b3V0ID09PSAwKSB7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSBtdWwgPSBtdWwgKiBiYS5kaW1zW2ldO1xuICAgIGNoYW5nZWRfZGltID0gMDtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoIC0gMTsgaSsrKSBtdWwgPSBtdWwgKiBiYS5kaW1zW2ldO1xuICAgIGNoYW5nZWRfZGltID0gYmEuZGltcy5sZW5ndGggLSAxO1xuICAgIG9mcyA9IG9mcyAtIDE7XG4gIH1cbiAgaWYgKG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgKyBsZW4gPiBiYS5kaW1zW2NoYW5nZWRfZGltXSkge1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnN1YjogYmFkIHN1Yi1hcnJheVwiKTtcbiAgfVxuICB2YXIgbmV3X2RpbXMgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSBuZXdfZGltc1tpXSA9IGJhLmRpbXNbaV07XG4gIG5ld19kaW1zW2NoYW5nZWRfZGltXSA9IGxlbjtcbiAgbXVsICo9IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoYmEua2luZCk7XG4gIHZhciBuZXdfZGF0YSA9IGJhLmRhdGEuc3ViYXJyYXkob2ZzICogbXVsLCAob2ZzICsgbGVuKSAqIG11bCk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmEua2luZCwgYmEubGF5b3V0LCBuZXdfZGltcywgbmV3X2RhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NsaWNlXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXksIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2dldF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX3NsaWNlKGJhLCB2aW5kKSB7XG4gIHZpbmQgPSBjYW1sX2pzX2Zyb21fYXJyYXkodmluZCk7XG4gIHZhciBudW1faW5kcyA9IHZpbmQubGVuZ3RoO1xuICB2YXIgaW5kZXggPSBbXTtcbiAgdmFyIHN1Yl9kaW1zID0gW107XG4gIHZhciBvZnM7XG5cbiAgaWYgKG51bV9pbmRzID4gYmEuZGltcy5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuc2xpY2U6IHRvbyBtYW55IGluZGljZXNcIik7XG5cbiAgLy8gQ29tcHV0ZSBvZmZzZXQgYW5kIGNoZWNrIGJvdW5kc1xuICBpZiAoYmEubGF5b3V0ID09PSAwKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1faW5kczsgaSsrKSBpbmRleFtpXSA9IHZpbmRbaV07XG4gICAgZm9yICg7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSBpbmRleFtpXSA9IDA7XG4gICAgc3ViX2RpbXMgPSBiYS5kaW1zLnNsaWNlKG51bV9pbmRzKTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9pbmRzOyBpKyspXG4gICAgICBpbmRleFtiYS5kaW1zLmxlbmd0aCAtIG51bV9pbmRzICsgaV0gPSB2aW5kW2ldO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGggLSBudW1faW5kczsgaSsrKSBpbmRleFtpXSA9IDE7XG4gICAgc3ViX2RpbXMgPSBiYS5kaW1zLnNsaWNlKDAsIGJhLmRpbXMubGVuZ3RoIC0gbnVtX2luZHMpO1xuICB9XG4gIG9mcyA9IGJhLm9mZnNldChpbmRleCk7XG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShzdWJfZGltcyk7XG4gIHZhciBzaXplX3Blcl9lbGVtZW50ID0gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChiYS5raW5kKTtcbiAgdmFyIG5ld19kYXRhID0gYmEuZGF0YS5zdWJhcnJheShcbiAgICBvZnMgKiBzaXplX3Blcl9lbGVtZW50LFxuICAgIChvZnMgKyBzaXplKSAqIHNpemVfcGVyX2VsZW1lbnQsXG4gICk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmEua2luZCwgYmEubGF5b3V0LCBzdWJfZGltcywgbmV3X2RhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3Jlc2hhcGVcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfYmFfZ2V0X3NpemVcbmZ1bmN0aW9uIGNhbWxfYmFfcmVzaGFwZShiYSwgdmluZCkge1xuICB2aW5kID0gY2FtbF9qc19mcm9tX2FycmF5KHZpbmQpO1xuICB2YXIgbmV3X2RpbSA9IFtdO1xuICB2YXIgbnVtX2RpbXMgPSB2aW5kLmxlbmd0aDtcblxuICBpZiAobnVtX2RpbXMgPCAwIHx8IG51bV9kaW1zID4gMTYpIHtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5yZXNoYXBlOiBiYWQgbnVtYmVyIG9mIGRpbWVuc2lvbnNcIik7XG4gIH1cbiAgdmFyIG51bV9lbHRzID0gMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZGltczsgaSsrKSB7XG4gICAgbmV3X2RpbVtpXSA9IHZpbmRbaV07XG4gICAgaWYgKG5ld19kaW1baV0gPCAwKVxuICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkucmVzaGFwZTogbmVnYXRpdmUgZGltZW5zaW9uXCIpO1xuICAgIG51bV9lbHRzID0gbnVtX2VsdHMgKiBuZXdfZGltW2ldO1xuICB9XG5cbiAgdmFyIHNpemUgPSBjYW1sX2JhX2dldF9zaXplKGJhLmRpbXMpO1xuICAvLyBDaGVjayB0aGF0IHNpemVzIGFncmVlXG4gIGlmIChudW1fZWx0cyAhPT0gc2l6ZSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5yZXNoYXBlOiBzaXplIG1pc21hdGNoXCIpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGJhLmxheW91dCwgbmV3X2RpbSwgYmEuZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2VyaWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaW50NjRfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdFxuLy9SZXF1aXJlczogY2FtbF9wYWNrRmxvYXQxNlxuZnVuY3Rpb24gY2FtbF9iYV9zZXJpYWxpemUod3JpdGVyLCBiYSwgc3opIHtcbiAgd3JpdGVyLndyaXRlKDMyLCBiYS5kaW1zLmxlbmd0aCk7XG4gIHdyaXRlci53cml0ZSgzMiwgYmEua2luZCB8IChiYS5sYXlvdXQgPDwgOCkpO1xuICBpZiAoYmEuY2FtbF9jdXN0b20gPT09IFwiX2JpZ2FycjAyXCIpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoYmEuZGltc1tpXSA8IDB4ZmZmZikgd3JpdGVyLndyaXRlKDE2LCBiYS5kaW1zW2ldKTtcbiAgICAgIGVsc2Uge1xuICAgICAgICB3cml0ZXIud3JpdGUoMTYsIDB4ZmZmZik7XG4gICAgICAgIHdyaXRlci53cml0ZSgzMiwgMCk7XG4gICAgICAgIHdyaXRlci53cml0ZSgzMiwgYmEuZGltc1tpXSk7XG4gICAgICB9XG4gICAgfVxuICBlbHNlIGZvciAodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKykgd3JpdGVyLndyaXRlKDMyLCBiYS5kaW1zW2ldKTtcbiAgc3dpdGNoIChiYS5raW5kKSB7XG4gICAgY2FzZSAyOiAvL0ludDhBcnJheVxuICAgIGNhc2UgMzogLy9VaW50OEFycmF5XG4gICAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgd3JpdGVyLndyaXRlKDgsIGJhLmRhdGFbaV0pO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSA0OiAvLyBJbnQxNkFycmF5XG4gICAgY2FzZSA1OiAvLyBVaW50MTZBcnJheVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHdyaXRlci53cml0ZSgxNiwgYmEuZGF0YVtpXSk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIDY6IC8vIEludDMyQXJyYXkgKGludDMyKVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHdyaXRlci53cml0ZSgzMiwgYmEuZGF0YVtpXSk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIDg6IC8vIEludDMyQXJyYXkgKGludClcbiAgICBjYXNlIDk6IC8vIEludDMyQXJyYXkgKG5hdGl2ZWludClcbiAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICB3cml0ZXIud3JpdGUoMzIsIGJhLmRhdGFbaV0pO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSA3OiAvLyBJbnQzMkFycmF5IChpbnQ2NClcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGggLyAyOyBpKyspIHtcbiAgICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGJhLmdldChpKSk7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUoOCwgYltqXSk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIDE6IC8vIEZsb2F0NjRBcnJheVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQoYmEuZ2V0KGkpKSk7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUoOCwgYltqXSk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIDEzOiAvLyBGbG9hdDE2QXJyYXlcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICB3cml0ZXIud3JpdGUoMTYsIGJhLmRhdGFbaV0pO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAwOiAvLyBGbG9hdDMyQXJyYXlcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgYiA9IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChiYS5nZXQoaSkpO1xuICAgICAgICB3cml0ZXIud3JpdGUoMzIsIGIpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxMDogLy8gRmxvYXQzMkFycmF5IChjb21wbGV4MzIpXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoIC8gMjsgaSsrKSB7XG4gICAgICAgIHZhciBqID0gYmEuZ2V0KGkpO1xuICAgICAgICB3cml0ZXIud3JpdGUoMzIsIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChqWzFdKSk7XG4gICAgICAgIHdyaXRlci53cml0ZSgzMiwgY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0KGpbMl0pKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTE6IC8vIEZsb2F0NjRBcnJheSAoY29tcGxleDY0KVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aCAvIDI7IGkrKykge1xuICAgICAgICB2YXIgY29tcGxleCA9IGJhLmdldChpKTtcbiAgICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdChjb21wbGV4WzFdKSk7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUoOCwgYltqXSk7XG4gICAgICAgIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQoY29tcGxleFsyXSkpO1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgd3JpdGVyLndyaXRlKDgsIGJbal0pO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gIH1cbiAgc3pbMF0gPSAoNCArIGJhLmRpbXMubGVuZ3RoKSAqIDQ7XG4gIHN6WzFdID0gKDQgKyBiYS5kaW1zLmxlbmd0aCkgKiA4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2Rlc2VyaWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXMsIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1xuLy9SZXF1aXJlczogY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV9idWZmZXJcbi8vUmVxdWlyZXM6IGNhbWxfdW5wYWNrRmxvYXQxNlxuZnVuY3Rpb24gY2FtbF9iYV9kZXNlcmlhbGl6ZShyZWFkZXIsIHN6LCBuYW1lKSB7XG4gIHZhciBudW1fZGltcyA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIGlmIChudW1fZGltcyA8IDAgfHwgbnVtX2RpbXMgPiAxNilcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHdyb25nIG51bWJlciBvZiBiaWdhcnJheSBkaW1lbnNpb25zXCIpO1xuICB2YXIgdGFnID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgdmFyIGtpbmQgPSB0YWcgJiAweGZmO1xuICB2YXIgbGF5b3V0ID0gKHRhZyA+PiA4KSAmIDE7XG4gIHZhciBkaW1zID0gW107XG4gIGlmIChuYW1lID09PSBcIl9iaWdhcnIwMlwiKVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2RpbXM7IGkrKykge1xuICAgICAgdmFyIHNpemVfZGltID0gcmVhZGVyLnJlYWQxNnUoKTtcbiAgICAgIGlmIChzaXplX2RpbSA9PT0gMHhmZmZmKSB7XG4gICAgICAgIHZhciBzaXplX2RpbV9oaSA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgIHZhciBzaXplX2RpbV9sbyA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgIGlmIChzaXplX2RpbV9oaSAhPT0gMClcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGJpZ2FycmF5IGRpbWVuc2lvbiBvdmVyZmxvdyBpbiAzMmJpdFwiKTtcbiAgICAgICAgc2l6ZV9kaW0gPSBzaXplX2RpbV9sbztcbiAgICAgIH1cbiAgICAgIGRpbXMucHVzaChzaXplX2RpbSk7XG4gICAgfVxuICBlbHNlIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2RpbXM7IGkrKykgZGltcy5wdXNoKHJlYWRlci5yZWFkMzJ1KCkpO1xuICB2YXIgc2l6ZSA9IGNhbWxfYmFfZ2V0X3NpemUoZGltcyk7XG4gIHZhciBkYXRhID0gY2FtbF9iYV9jcmVhdGVfYnVmZmVyKGtpbmQsIHNpemUpO1xuICB2YXIgYmEgPSBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcbiAgc3dpdGNoIChraW5kKSB7XG4gICAgY2FzZSAyOiAvL0ludDhBcnJheVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkOHMoKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMzogLy9VaW50OEFycmF5XG4gICAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSA0OiAvLyBJbnQxNkFycmF5XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQxNnMoKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgNTogLy8gVWludDE2QXJyYXlcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDE2dSgpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSA2OiAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDMycygpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSA4OiAvLyBJbnQzMkFycmF5IChpbnQpXG4gICAgY2FzZSA5OiAvLyBJbnQzMkFycmF5IChuYXRpdmVpbnQpXG4gICAgICB2YXIgc2l4dHkgPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICBpZiAoc2l4dHkpXG4gICAgICAgIGNhbWxfZmFpbHdpdGgoXG4gICAgICAgICAgXCJpbnB1dF92YWx1ZTogY2Fubm90IHJlYWQgYmlnYXJyYXkgd2l0aCA2NC1iaXQgT0NhbWwgaW50c1wiLFxuICAgICAgICApO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMzJzKCk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIDc6IC8vIChpbnQ2NClcbiAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgIHZhciBpbnQ2NCA9IGNhbWxfaW50NjRfb2ZfYnl0ZXModCk7XG4gICAgICAgIGJhLnNldChpLCBpbnQ2NCk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIDE6IC8vIEZsb2F0NjRBcnJheVxuICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgdmFyIGYgPSBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KSk7XG4gICAgICAgIGJhLnNldChpLCBmKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTM6IC8vIEZsb2F0MTZBcnJheVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMTZ1KCk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIDA6IC8vIEZsb2F0MzJBcnJheVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgdmFyIGYgPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMocmVhZGVyLnJlYWQzMnMoKSk7XG4gICAgICAgIGJhLnNldChpLCBmKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgdmFyIHJlID0gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzKHJlYWRlci5yZWFkMzJzKCkpO1xuICAgICAgICB2YXIgaW0gPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMocmVhZGVyLnJlYWQzMnMoKSk7XG4gICAgICAgIGJhLnNldChpLCBbMjU0LCByZSwgaW1dKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTE6IC8vIEZsb2F0NjRBcnJheSAoY29tcGxleDY0KVxuICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgdmFyIHJlID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgdmFyIGltID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgICBiYS5zZXQoaSwgWzI1NCwgcmUsIGltXSk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgfVxuICBzelswXSA9ICg0ICsgbnVtX2RpbXMpICogNDtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NyZWF0ZV9mcm9tXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuLy9EZXByZWNhdGVkOiBVc2UgW2NhbWxfYmFfY3JlYXRlX3Vuc2FmZV0gaW5zdGVhZFxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGVfZnJvbShkYXRhMSwgZGF0YTIsIF9qc3R5cCwga2luZCwgbGF5b3V0LCBkaW1zKSB7XG4gIGlmIChkYXRhMiB8fCBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpID09PSAyKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFxuICAgICAgXCJjYW1sX2JhX2NyZWF0ZV9mcm9tOiB1c2UgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVwiLFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGExKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9oYXNoIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplLCBjYW1sX2hhc2hfbWl4X2ludCwgY2FtbF9oYXNoX21peF9mbG9hdFxuLy9SZXF1aXJlczogY2FtbF91bnBhY2tGbG9hdDE2LCBjYW1sX2hhc2hfbWl4X2Zsb2F0MTYsIGNhbWxfaGFzaF9taXhfZmxvYXQzMlxuZnVuY3Rpb24gY2FtbF9iYV9oYXNoKGJhKSB7XG4gIHZhciBudW1fZWx0cyA9IGNhbWxfYmFfZ2V0X3NpemUoYmEuZGltcyk7XG4gIHZhciBoID0gMDtcbiAgc3dpdGNoIChiYS5raW5kKSB7XG4gICAgY2FzZSAyOiAvL0ludDhBcnJheVxuICAgIGNhc2UgMzogLy9VaW50OEFycmF5XG4gICAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgICBpZiAobnVtX2VsdHMgPiAyNTYpIG51bV9lbHRzID0gMjU2O1xuICAgICAgdmFyIHcgPSAwLFxuICAgICAgICBpID0gMDtcbiAgICAgIGZvciAoaSA9IDA7IGkgKyA0IDw9IG51bV9lbHRzOyBpICs9IDQpIHtcbiAgICAgICAgdyA9XG4gICAgICAgICAgKGJhLmRhdGFbaSArIDBdICYgMHhmZikgfFxuICAgICAgICAgICgoYmEuZGF0YVtpICsgMV0gJiAweGZmKSA8PCA4KSB8XG4gICAgICAgICAgKChiYS5kYXRhW2kgKyAyXSAmIDB4ZmYpIDw8IDE2KSB8XG4gICAgICAgICAgKGJhLmRhdGFbaSArIDNdIDw8IDI0KTtcbiAgICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICAgICAgfVxuICAgICAgdyA9IDA7XG4gICAgICBzd2l0Y2ggKG51bV9lbHRzICYgMykge1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0ZhbGx0aHJvdWdoU3dpdGNoQ2xhdXNlOlxuICAgICAgICAgIHcgPSBiYS5kYXRhW2kgKyAyXSA8PCAxNjtcbiAgICAgICAgLy8gZmFsbHRocm91Z2hcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9GYWxsdGhyb3VnaFN3aXRjaENsYXVzZTpcbiAgICAgICAgICB3IHw9IGJhLmRhdGFbaSArIDFdIDw8IDg7XG4gICAgICAgIC8vIGZhbGx0aHJvdWdoXG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICB3IHw9IGJhLmRhdGFbaSArIDBdO1xuICAgICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgNDogLy8gSW50MTZBcnJheVxuICAgIGNhc2UgNTogLy8gVWludDE2QXJyYXlcbiAgICAgIGlmIChudW1fZWx0cyA+IDEyOCkgbnVtX2VsdHMgPSAxMjg7XG4gICAgICB2YXIgdyA9IDAsXG4gICAgICAgIGkgPSAwO1xuICAgICAgZm9yIChpID0gMDsgaSArIDIgPD0gbnVtX2VsdHM7IGkgKz0gMikge1xuICAgICAgICB3ID0gKGJhLmRhdGFbaSArIDBdICYgMHhmZmZmKSB8IChiYS5kYXRhW2kgKyAxXSA8PCAxNik7XG4gICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgICAgIH1cbiAgICAgIGlmICgobnVtX2VsdHMgJiAxKSAhPT0gMCkgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA2OiAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICAgIGlmIChudW1fZWx0cyA+IDY0KSBudW1fZWx0cyA9IDY0O1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDg6IC8vIEludDMyQXJyYXkgKGludClcbiAgICBjYXNlIDk6IC8vIEludDMyQXJyYXkgKG5hdGl2ZWludClcbiAgICAgIGlmIChudW1fZWx0cyA+IDY0KSBudW1fZWx0cyA9IDY0O1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDc6IC8vIEludDMyQXJyYXkgKGludDY0KVxuICAgICAgaWYgKG51bV9lbHRzID4gMzIpIG51bV9lbHRzID0gMzI7XG4gICAgICBudW1fZWx0cyAqPSAyO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSB7XG4gICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0ZhbGx0aHJvdWdoU3dpdGNoQ2xhdXNlOlxuICAgICAgbnVtX2VsdHMgKj0gMjtcbiAgICAvLyBmYWxsdGhyb3VnaFxuICAgIGNhc2UgMDogLy8gRmxvYXQzMkFycmF5XG4gICAgICBpZiAobnVtX2VsdHMgPiA2NCkgbnVtX2VsdHMgPSA2NDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKylcbiAgICAgICAgaCA9IGNhbWxfaGFzaF9taXhfZmxvYXQzMihoLCBiYS5kYXRhW2ldKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTE6IC8vIEZsb2F0NjRBcnJheSAoY29tcGxleDY0KVxuICAgICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0ZhbGx0aHJvdWdoU3dpdGNoQ2xhdXNlOlxuICAgICAgbnVtX2VsdHMgKj0gMjtcbiAgICAvLyBmYWxsdGhyb3VnaFxuICAgIGNhc2UgMTogLy8gRmxvYXQ2NEFycmF5XG4gICAgICBpZiAobnVtX2VsdHMgPiAzMikgbnVtX2VsdHMgPSAzMjtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykgaCA9IGNhbWxfaGFzaF9taXhfZmxvYXQoaCwgYmEuZGF0YVtpXSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDEzOlxuICAgICAgaWYgKG51bV9lbHRzID4gMTI4KSBudW1fZWx0cyA9IDEyODtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykge1xuICAgICAgICBoID0gY2FtbF9oYXNoX21peF9mbG9hdDE2KGgsIGJhLmRhdGFbaV0pO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfZmxvYXQxNlxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfZmxvYXQxNihoYXNoLCBkKSB7XG4gIC8qIE5vcm1hbGl6ZSBOYU5zICovXG4gIGlmICgoZCAmIDB4N2MwMCkgPT09IDB4N2MwMCAmJiAoZCAmIDB4MDNmZikgIT09IDApIHtcbiAgICBkID0gMHg3YzAxO1xuICB9IGVsc2UgaWYgKGQgPT09IDB4ODAwMCkge1xuICAgIC8qIE5vcm1hbGl6ZSAtMCBpbnRvICswICovXG4gICAgZCA9IDA7XG4gIH1cbiAgcmV0dXJuIGNhbWxfaGFzaF9taXhfaW50KGhhc2gsIGQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2Zsb2F0MzJcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfZmxvYXQzMihoYXNoLCB2KSB7XG4gIHZhciBpID0gY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0KHYpO1xuICAvKiBOb3JtYWxpemUgTmFOcyAqL1xuICBpZiAoKGkgJiAweDdmODAwMDAwKSA9PT0gMHg3ZjgwMDAwMCAmJiAoaSAmIDB4N2ZmZmZmKSAhPT0gMCkge1xuICAgIGkgPSAweDdmODAwMDAxO1xuICB9IGVsc2UgaWYgKGkgPT09ICgweDgwMDAwMDAwIHwgMCkpIHtcbiAgICAvKiBOb3JtYWxpemUgLTAgaW50byArMCAqL1xuICAgIC8vIFRoaXMgY29kZSBwYXRoIGlzIG5vdCB1c2VkIGJ5IGNhbWxfaGFzaCBiZWNhdXNlIDAgYW5kIC0wIGxvb2tcbiAgICAvLyBsaWtlIGludGVnZXJzXG4gICAgaSA9IDA7XG4gIH1cbiAgaGFzaCA9IGNhbWxfaGFzaF9taXhfaW50KGhhc2gsIGkpO1xuICByZXR1cm4gaGFzaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV90b190eXBlZF9hcnJheSBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5KGJhKSB7XG4gIHJldHVybiBiYS5kYXRhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkodGEpIHtcbiAgdmFyIGtpbmQ7XG4gIGlmICh0YSBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheSkga2luZCA9IDA7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgRmxvYXQ2NEFycmF5KSBraW5kID0gMTtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBJbnQ4QXJyYXkpIGtpbmQgPSAyO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIGtpbmQgPSAzO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIFVpbnQ4Q2xhbXBlZEFycmF5KSBraW5kID0gMztcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBJbnQxNkFycmF5KSBraW5kID0gNDtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBVaW50MTZBcnJheSkga2luZCA9IDU7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgSW50MzJBcnJheSkga2luZCA9IDY7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgVWludDMyQXJyYXkpIGtpbmQgPSA2O1xuICBlbHNlIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheTogdW5zdXBwb3J0ZWQga2luZFwiKTtcbiAgcmV0dXJuIGtpbmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZnJvbV90eXBlZF9hcnJheSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5KHRhKSB7XG4gIHZhciBraW5kID0gY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5KHRhKTtcbiAgdmFyIHRhID1cbiAgICAvKiBOZWVkZWQgdG8gYXZvaWQgdW5zaWduZWQgc2V0dGVycyBvdmVyZmxvd2luZ1xuICAgICAgICAgdGhlIHJhbmdlIG9mIE9DYW1sIFtpbnQzMl0gdmFsdWVzLiAqL1xuICAgIHRhIGluc3RhbmNlb2YgVWludDMyQXJyYXlcbiAgICAgID8gbmV3IEludDMyQXJyYXkodGEuYnVmZmVyLCB0YS5ieXRlT2Zmc2V0LCB0YS5sZW5ndGgpXG4gICAgICA6IHRhO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIDAsIFt0YS5sZW5ndGhdLCB0YSk7XG59XG4iLCIvLy8vLy8vLy8gQklHU1RSSU5HXG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfYmlnc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FyclxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9iaWdzdHJpbmcoaCwgYnMpIHtcbiAgcmV0dXJuIGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyKGgsIGJzLmRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyIG11dGFibGVcbmZ1bmN0aW9uIGJpZ3N0cmluZ190b19hcnJheV9idWZmZXIoYnMpIHtcbiAgcmV0dXJuIGJzLmRhdGEuYnVmZmVyO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXkgbXV0YWJsZVxuZnVuY3Rpb24gYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5KGJzKSB7XG4gIHJldHVybiBicy5kYXRhO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlcihhYikge1xuICB2YXIgdGEgPSBuZXcgVWludDhBcnJheShhYik7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoMTIsIDAsIFt0YS5sZW5ndGhdLCB0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheShiYSkge1xuICB2YXIgdGEgPSBuZXcgVWludDhBcnJheShcbiAgICBiYS5idWZmZXIsXG4gICAgYmEuYnl0ZU9mZnNldCxcbiAgICBiYS5sZW5ndGggKiBiYS5CWVRFU19QRVJfRUxFTUVOVCxcbiAgKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSgxMiwgMCwgW3RhLmxlbmd0aF0sIHRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfbWVtY21wXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19tZW1jbXAoczEsIHBvczEsIHMyLCBwb3MyLCBsZW4pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBhID0gY2FtbF9iYV9nZXRfMShzMSwgcG9zMSArIGkpO1xuICAgIHZhciBiID0gY2FtbF9iYV9nZXRfMShzMiwgcG9zMiArIGkpO1xuICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmFcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYShiYTEsIHBvczEsIGJhMiwgcG9zMiwgbGVuKSB7XG4gIGlmICgxMiAhPT0gYmExLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYgKDEyICE9PSBiYTIua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZiAobGVuID09PSAwKSByZXR1cm4gMDtcbiAgdmFyIG9mczEgPSBiYTEub2Zmc2V0KHBvczEpO1xuICB2YXIgb2ZzMiA9IGJhMi5vZmZzZXQocG9zMik7XG4gIGlmIChvZnMxICsgbGVuID4gYmExLmRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmIChvZnMyICsgbGVuID4gYmEyLmRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIHZhciBzbGljZSA9IGJhMS5kYXRhLnN1YmFycmF5KG9mczEsIG9mczEgKyBsZW4pO1xuICBiYTIuZGF0YS5zZXQoc2xpY2UsIHBvczIpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmFcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmEoc3RyMSwgcG9zMSwgYmEyLCBwb3MyLCBsZW4pIHtcbiAgaWYgKDEyICE9PSBiYTIua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYgKGxlbiA9PT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYgKHBvczEgKyBsZW4gPiBjYW1sX21sX3N0cmluZ19sZW5ndGgoc3RyMSkpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYgKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcoc3RyMSkuc3ViYXJyYXkocG9zMSwgcG9zMSArIGxlbik7XG4gIGJhMi5kYXRhLnNldChzbGljZSwgb2ZzMik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2J5dGVzX3RvX2JhXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X2J5dGVzX3RvX2JhKHN0cjEsIHBvczEsIGJhMiwgcG9zMiwgbGVuKSB7XG4gIGlmICgxMiAhPT0gYmEyLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmIChsZW4gPT09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMiA9IGJhMi5vZmZzZXQocG9zMik7XG4gIGlmIChwb3MxICsgbGVuID4gY2FtbF9tbF9ieXRlc19sZW5ndGgoc3RyMSkpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYgKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhzdHIxKS5zdWJhcnJheShwb3MxLCBwb3MxICsgbGVuKTtcbiAgYmEyLmRhdGEuc2V0KHNsaWNlLCBvZnMyKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX3VpbnQ4X2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyhiYTEsIHBvczEsIGJ5dGVzMiwgcG9zMiwgbGVuKSB7XG4gIGlmICgxMiAhPT0gYmExLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmIChsZW4gPT09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMSA9IGJhMS5vZmZzZXQocG9zMSk7XG4gIGlmIChvZnMxICsgbGVuID4gYmExLmRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmIChwb3MyICsgbGVuID4gY2FtbF9tbF9ieXRlc19sZW5ndGgoYnl0ZXMyKSkge1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBiYTEuZGF0YS5zdWJhcnJheShvZnMxLCBvZnMxICsgbGVuKTtcbiAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2ZfdWludDhfYXJyYXkoc2xpY2UpLCAwLCBieXRlczIsIHBvczIsIGxlbik7XG4gIHJldHVybiAwO1xufVxuIiwiLy9Qcm92aWRlczogYmxha2UyYlxuLy9WZXJzaW9uOiA+PSA1LjJcbnZhciBibGFrZTJiID0gKGZ1bmN0aW9uICgpIHtcbiAgLy8gQmxha2UyQiBpbiBwdXJlIEphdmFzY3JpcHRcbiAgLy8gQWRhcHRlZCBmcm9tIHRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gaW4gUkZDNzY5M1xuICAvLyBQb3J0ZWQgdG8gSmF2YXNjcmlwdCBieSBEQyAtIGh0dHBzOi8vZ2l0aHViLmNvbS9kY3Bvc2NoXG5cbiAgLy8gNjQtYml0IHVuc2lnbmVkIGFkZGl0aW9uXG4gIC8vIFNldHMgdlthLGErMV0gKz0gdltiLGIrMV1cbiAgLy8gdiBzaG91bGQgYmUgYSBVaW50MzJBcnJheVxuICBmdW5jdGlvbiBBREQ2NEFBKHYsIGEsIGIpIHtcbiAgICBjb25zdCBvMCA9IHZbYV0gKyB2W2JdO1xuICAgIGxldCBvMSA9IHZbYSArIDFdICsgdltiICsgMV07XG4gICAgaWYgKG8wID49IDB4MTAwMDAwMDAwKSB7XG4gICAgICBvMSsrO1xuICAgIH1cbiAgICB2W2FdID0gbzA7XG4gICAgdlthICsgMV0gPSBvMTtcbiAgfVxuXG4gIC8vIDY0LWJpdCB1bnNpZ25lZCBhZGRpdGlvblxuICAvLyBTZXRzIHZbYSxhKzFdICs9IGJcbiAgLy8gYjAgaXMgdGhlIGxvdyAzMiBiaXRzIG9mIGIsIGIxIHJlcHJlc2VudHMgdGhlIGhpZ2ggMzIgYml0c1xuICBmdW5jdGlvbiBBREQ2NEFDKHYsIGEsIGIwLCBiMSkge1xuICAgIGxldCBvMCA9IHZbYV0gKyBiMDtcbiAgICBpZiAoYjAgPCAwKSB7XG4gICAgICBvMCArPSAweDEwMDAwMDAwMDtcbiAgICB9XG4gICAgbGV0IG8xID0gdlthICsgMV0gKyBiMTtcbiAgICBpZiAobzAgPj0gMHgxMDAwMDAwMDApIHtcbiAgICAgIG8xKys7XG4gICAgfVxuICAgIHZbYV0gPSBvMDtcbiAgICB2W2EgKyAxXSA9IG8xO1xuICB9XG5cbiAgLy8gTGl0dGxlLWVuZGlhbiBieXRlIGFjY2Vzc1xuICBmdW5jdGlvbiBCMkJfR0VUMzIoYXJyLCBpKSB7XG4gICAgcmV0dXJuIGFycltpXSBeIChhcnJbaSArIDFdIDw8IDgpIF4gKGFycltpICsgMl0gPDwgMTYpIF4gKGFycltpICsgM10gPDwgMjQpO1xuICB9XG5cbiAgLy8gRyBNaXhpbmcgZnVuY3Rpb25cbiAgLy8gVGhlIFJPVFJzIGFyZSBpbmxpbmVkIGZvciBzcGVlZFxuICBmdW5jdGlvbiBCMkJfRyhhLCBiLCBjLCBkLCBpeCwgaXkpIHtcbiAgICBjb25zdCB4MCA9IG1baXhdO1xuICAgIGNvbnN0IHgxID0gbVtpeCArIDFdO1xuICAgIGNvbnN0IHkwID0gbVtpeV07XG4gICAgY29uc3QgeTEgPSBtW2l5ICsgMV07XG5cbiAgICBBREQ2NEFBKHYsIGEsIGIpOyAvLyB2W2EsYSsxXSArPSB2W2IsYisxXSAuLi4gaW4gSlMgd2UgbXVzdCBzdG9yZSBhIHVpbnQ2NCBhcyB0d28gdWludDMyc1xuICAgIEFERDY0QUModiwgYSwgeDAsIHgxKTsgLy8gdlthLCBhKzFdICs9IHggLi4uIHgwIGlzIHRoZSBsb3cgMzIgYml0cyBvZiB4LCB4MSBpcyB0aGUgaGlnaCAzMiBiaXRzXG5cbiAgICAvLyB2W2QsZCsxXSA9ICh2W2QsZCsxXSB4b3IgdlthLGErMV0pIHJvdGF0ZWQgdG8gdGhlIHJpZ2h0IGJ5IDMyIGJpdHNcbiAgICBsZXQgeG9yMCA9IHZbZF0gXiB2W2FdO1xuICAgIGxldCB4b3IxID0gdltkICsgMV0gXiB2W2EgKyAxXTtcbiAgICB2W2RdID0geG9yMTtcbiAgICB2W2QgKyAxXSA9IHhvcjA7XG5cbiAgICBBREQ2NEFBKHYsIGMsIGQpO1xuXG4gICAgLy8gdltiLGIrMV0gPSAodltiLGIrMV0geG9yIHZbYyxjKzFdKSByb3RhdGVkIHJpZ2h0IGJ5IDI0IGJpdHNcbiAgICB4b3IwID0gdltiXSBeIHZbY107XG4gICAgeG9yMSA9IHZbYiArIDFdIF4gdltjICsgMV07XG4gICAgdltiXSA9ICh4b3IwID4+PiAyNCkgXiAoeG9yMSA8PCA4KTtcbiAgICB2W2IgKyAxXSA9ICh4b3IxID4+PiAyNCkgXiAoeG9yMCA8PCA4KTtcblxuICAgIEFERDY0QUEodiwgYSwgYik7XG4gICAgQURENjRBQyh2LCBhLCB5MCwgeTEpO1xuXG4gICAgLy8gdltkLGQrMV0gPSAodltkLGQrMV0geG9yIHZbYSxhKzFdKSByb3RhdGVkIHJpZ2h0IGJ5IDE2IGJpdHNcbiAgICB4b3IwID0gdltkXSBeIHZbYV07XG4gICAgeG9yMSA9IHZbZCArIDFdIF4gdlthICsgMV07XG4gICAgdltkXSA9ICh4b3IwID4+PiAxNikgXiAoeG9yMSA8PCAxNik7XG4gICAgdltkICsgMV0gPSAoeG9yMSA+Pj4gMTYpIF4gKHhvcjAgPDwgMTYpO1xuXG4gICAgQURENjRBQSh2LCBjLCBkKTtcblxuICAgIC8vIHZbYixiKzFdID0gKHZbYixiKzFdIHhvciB2W2MsYysxXSkgcm90YXRlZCByaWdodCBieSA2MyBiaXRzXG4gICAgeG9yMCA9IHZbYl0gXiB2W2NdO1xuICAgIHhvcjEgPSB2W2IgKyAxXSBeIHZbYyArIDFdO1xuICAgIHZbYl0gPSAoeG9yMSA+Pj4gMzEpIF4gKHhvcjAgPDwgMSk7XG4gICAgdltiICsgMV0gPSAoeG9yMCA+Pj4gMzEpIF4gKHhvcjEgPDwgMSk7XG4gIH1cblxuICAvLyBJbml0aWFsaXphdGlvbiBWZWN0b3JcbiAgY29uc3QgQkxBS0UyQl9JVjMyID0gbmV3IFVpbnQzMkFycmF5KFtcbiAgICAweGYzYmNjOTA4LCAweDZhMDllNjY3LCAweDg0Y2FhNzNiLCAweGJiNjdhZTg1LCAweGZlOTRmODJiLCAweDNjNmVmMzcyLFxuICAgIDB4NWYxZDM2ZjEsIDB4YTU0ZmY1M2EsIDB4YWRlNjgyZDEsIDB4NTEwZTUyN2YsIDB4MmIzZTZjMWYsIDB4OWIwNTY4OGMsXG4gICAgMHhmYjQxYmQ2YiwgMHgxZjgzZDlhYiwgMHgxMzdlMjE3OSwgMHg1YmUwY2QxOSxcbiAgXSk7XG5cbiAgY29uc3QgU0lHTUE4ID0gW1xuICAgIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE0LCAxMCwgNCwgOCwgOSwgMTUsXG4gICAgMTMsIDYsIDEsIDEyLCAwLCAyLCAxMSwgNywgNSwgMywgMTEsIDgsIDEyLCAwLCA1LCAyLCAxNSwgMTMsIDEwLCAxNCwgMywgNixcbiAgICA3LCAxLCA5LCA0LCA3LCA5LCAzLCAxLCAxMywgMTIsIDExLCAxNCwgMiwgNiwgNSwgMTAsIDQsIDAsIDE1LCA4LCA5LCAwLCA1LFxuICAgIDcsIDIsIDQsIDEwLCAxNSwgMTQsIDEsIDExLCAxMiwgNiwgOCwgMywgMTMsIDIsIDEyLCA2LCAxMCwgMCwgMTEsIDgsIDMsIDQsXG4gICAgMTMsIDcsIDUsIDE1LCAxNCwgMSwgOSwgMTIsIDUsIDEsIDE1LCAxNCwgMTMsIDQsIDEwLCAwLCA3LCA2LCAzLCA5LCAyLCA4LFxuICAgIDExLCAxMywgMTEsIDcsIDE0LCAxMiwgMSwgMywgOSwgNSwgMCwgMTUsIDQsIDgsIDYsIDIsIDEwLCA2LCAxNSwgMTQsIDksIDExLFxuICAgIDMsIDAsIDgsIDEyLCAyLCAxMywgNywgMSwgNCwgMTAsIDUsIDEwLCAyLCA4LCA0LCA3LCA2LCAxLCA1LCAxNSwgMTEsIDksIDE0LFxuICAgIDMsIDEyLCAxMywgMCwgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTQsIDEwLFxuICAgIDQsIDgsIDksIDE1LCAxMywgNiwgMSwgMTIsIDAsIDIsIDExLCA3LCA1LCAzLFxuICBdO1xuXG4gIC8vIFRoZXNlIGFyZSBvZmZzZXRzIGludG8gYSB1aW50NjQgYnVmZmVyLlxuICAvLyBNdWx0aXBseSB0aGVtIGFsbCBieSAyIHRvIG1ha2UgdGhlbSBvZmZzZXRzIGludG8gYSB1aW50MzIgYnVmZmVyLFxuICAvLyBiZWNhdXNlIHRoaXMgaXMgSmF2YXNjcmlwdCBhbmQgd2UgZG9uJ3QgaGF2ZSB1aW50NjRzXG4gIGNvbnN0IFNJR01BODIgPSBuZXcgVWludDhBcnJheShcbiAgICBTSUdNQTgubWFwKGZ1bmN0aW9uICh4KSB7XG4gICAgICByZXR1cm4geCAqIDI7XG4gICAgfSksXG4gICk7XG5cbiAgLy8gQ29tcHJlc3Npb24gZnVuY3Rpb24uICdsYXN0JyBmbGFnIGluZGljYXRlcyBsYXN0IGJsb2NrLlxuICAvLyBOb3RlIHdlJ3JlIHJlcHJlc2VudGluZyAxNiB1aW50NjRzIGFzIDMyIHVpbnQzMnNcbiAgY29uc3QgdiA9IG5ldyBVaW50MzJBcnJheSgzMik7XG4gIGNvbnN0IG0gPSBuZXcgVWludDMyQXJyYXkoMzIpO1xuICBmdW5jdGlvbiBibGFrZTJiQ29tcHJlc3MoY3R4LCBsYXN0KSB7XG4gICAgbGV0IGkgPSAwO1xuXG4gICAgLy8gaW5pdCB3b3JrIHZhcmlhYmxlc1xuICAgIGZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKSB7XG4gICAgICB2W2ldID0gY3R4LmhbaV07XG4gICAgICB2W2kgKyAxNl0gPSBCTEFLRTJCX0lWMzJbaV07XG4gICAgfVxuXG4gICAgLy8gbG93IDY0IGJpdHMgb2Ygb2Zmc2V0XG4gICAgdlsyNF0gPSB2WzI0XSBeIGN0eC50O1xuICAgIHZbMjVdID0gdlsyNV0gXiAoY3R4LnQgLyAweDEwMDAwMDAwMCk7XG4gICAgLy8gaGlnaCA2NCBiaXRzIG5vdCBzdXBwb3J0ZWQsIG9mZnNldCBtYXkgbm90IGJlIGhpZ2hlciB0aGFuIDIqKjUzLTFcblxuICAgIC8vIGxhc3QgYmxvY2sgZmxhZyBzZXQgP1xuICAgIGlmIChsYXN0KSB7XG4gICAgICB2WzI4XSA9IH52WzI4XTtcbiAgICAgIHZbMjldID0gfnZbMjldO1xuICAgIH1cblxuICAgIC8vIGdldCBsaXR0bGUtZW5kaWFuIHdvcmRzXG4gICAgZm9yIChpID0gMDsgaSA8IDMyOyBpKyspIHtcbiAgICAgIG1baV0gPSBCMkJfR0VUMzIoY3R4LmIsIDQgKiBpKTtcbiAgICB9XG5cbiAgICAvLyB0d2VsdmUgcm91bmRzIG9mIG1peGluZ1xuICAgIC8vIHVuY29tbWVudCB0aGUgRGVidWdQcmludCBjYWxscyB0byBsb2cgdGhlIGNvbXB1dGF0aW9uXG4gICAgLy8gYW5kIG1hdGNoIHRoZSBSRkMgc2FtcGxlIGRvY3VtZW50YXRpb25cbiAgICBmb3IgKGkgPSAwOyBpIDwgMTI7IGkrKykge1xuICAgICAgQjJCX0coMCwgOCwgMTYsIDI0LCBTSUdNQTgyW2kgKiAxNiArIDBdLCBTSUdNQTgyW2kgKiAxNiArIDFdKTtcbiAgICAgIEIyQl9HKDIsIDEwLCAxOCwgMjYsIFNJR01BODJbaSAqIDE2ICsgMl0sIFNJR01BODJbaSAqIDE2ICsgM10pO1xuICAgICAgQjJCX0coNCwgMTIsIDIwLCAyOCwgU0lHTUE4MltpICogMTYgKyA0XSwgU0lHTUE4MltpICogMTYgKyA1XSk7XG4gICAgICBCMkJfRyg2LCAxNCwgMjIsIDMwLCBTSUdNQTgyW2kgKiAxNiArIDZdLCBTSUdNQTgyW2kgKiAxNiArIDddKTtcbiAgICAgIEIyQl9HKDAsIDEwLCAyMCwgMzAsIFNJR01BODJbaSAqIDE2ICsgOF0sIFNJR01BODJbaSAqIDE2ICsgOV0pO1xuICAgICAgQjJCX0coMiwgMTIsIDIyLCAyNCwgU0lHTUE4MltpICogMTYgKyAxMF0sIFNJR01BODJbaSAqIDE2ICsgMTFdKTtcbiAgICAgIEIyQl9HKDQsIDE0LCAxNiwgMjYsIFNJR01BODJbaSAqIDE2ICsgMTJdLCBTSUdNQTgyW2kgKiAxNiArIDEzXSk7XG4gICAgICBCMkJfRyg2LCA4LCAxOCwgMjgsIFNJR01BODJbaSAqIDE2ICsgMTRdLCBTSUdNQTgyW2kgKiAxNiArIDE1XSk7XG4gICAgfVxuXG4gICAgZm9yIChpID0gMDsgaSA8IDE2OyBpKyspIHtcbiAgICAgIGN0eC5oW2ldID0gY3R4LmhbaV0gXiB2W2ldIF4gdltpICsgMTZdO1xuICAgIH1cbiAgfVxuXG4gIC8vIHJldXNhYmxlIHBhcmFtZXRlckJsb2NrXG4gIGNvbnN0IHBhcmFtZXRlckJsb2NrID0gbmV3IFVpbnQ4QXJyYXkoW1xuICAgIDAsXG4gICAgMCxcbiAgICAwLFxuICAgIDAsIC8vICAwOiBvdXRsZW4sIGtleWxlbiwgZmFub3V0LCBkZXB0aFxuICAgIDAsXG4gICAgMCxcbiAgICAwLFxuICAgIDAsIC8vICA0OiBsZWFmIGxlbmd0aCwgc2VxdWVudGlhbCBtb2RlXG4gICAgMCxcbiAgICAwLFxuICAgIDAsXG4gICAgMCwgLy8gIDg6IG5vZGUgb2Zmc2V0XG4gICAgMCxcbiAgICAwLFxuICAgIDAsXG4gICAgMCwgLy8gMTI6IG5vZGUgb2Zmc2V0XG4gICAgMCxcbiAgICAwLFxuICAgIDAsXG4gICAgMCwgLy8gMTY6IG5vZGUgZGVwdGgsIGlubmVyIGxlbmd0aCwgcmZ1XG4gICAgMCxcbiAgICAwLFxuICAgIDAsXG4gICAgMCwgLy8gMjA6IHJmdVxuICAgIDAsXG4gICAgMCxcbiAgICAwLFxuICAgIDAsIC8vIDI0OiByZnVcbiAgICAwLFxuICAgIDAsXG4gICAgMCxcbiAgICAwLCAvLyAyODogcmZ1XG4gICAgMCxcbiAgICAwLFxuICAgIDAsXG4gICAgMCwgLy8gMzI6IHNhbHRcbiAgICAwLFxuICAgIDAsXG4gICAgMCxcbiAgICAwLCAvLyAzNjogc2FsdFxuICAgIDAsXG4gICAgMCxcbiAgICAwLFxuICAgIDAsIC8vIDQwOiBzYWx0XG4gICAgMCxcbiAgICAwLFxuICAgIDAsXG4gICAgMCwgLy8gNDQ6IHNhbHRcbiAgICAwLFxuICAgIDAsXG4gICAgMCxcbiAgICAwLCAvLyA0ODogcGVyc29uYWxcbiAgICAwLFxuICAgIDAsXG4gICAgMCxcbiAgICAwLCAvLyA1MjogcGVyc29uYWxcbiAgICAwLFxuICAgIDAsXG4gICAgMCxcbiAgICAwLCAvLyA1NjogcGVyc29uYWxcbiAgICAwLFxuICAgIDAsXG4gICAgMCxcbiAgICAwLCAvLyA2MDogcGVyc29uYWxcbiAgXSk7XG5cbiAgLy8gQ3JlYXRlcyBhIEJMQUtFMmIgaGFzaGluZyBjb250ZXh0XG4gIC8vIFJlcXVpcmVzIGFuIG91dHB1dCBsZW5ndGggYmV0d2VlbiAxIGFuZCA2NCBieXRlc1xuICAvLyBUYWtlcyBhbiBvcHRpb25hbCBVaW50OEFycmF5IGtleVxuICBmdW5jdGlvbiBibGFrZTJiSW5pdChvdXRsZW4sIGtleSkge1xuICAgIGlmIChvdXRsZW4gPT09IDAgfHwgb3V0bGVuID4gNjQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIklsbGVnYWwgb3V0cHV0IGxlbmd0aCwgZXhwZWN0ZWQgMCA8IGxlbmd0aCA8PSA2NFwiKTtcbiAgICB9XG4gICAgaWYgKGtleS5sZW5ndGggPiA2NCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSWxsZWdhbCBrZXksIGV4cGVjdGVkIFVpbnQ4QXJyYXkgd2l0aCAwIDwgbGVuZ3RoIDw9IDY0XCIpO1xuICAgIH1cblxuICAgIC8vIHN0YXRlLCAncGFyYW0gYmxvY2snXG4gICAgY29uc3QgY3R4ID0ge1xuICAgICAgYjogbmV3IFVpbnQ4QXJyYXkoMTI4KSxcbiAgICAgIGg6IG5ldyBVaW50MzJBcnJheSgxNiksXG4gICAgICB0OiAwLCAvLyBpbnB1dCBjb3VudFxuICAgICAgYzogMCwgLy8gcG9pbnRlciB3aXRoaW4gYnVmZmVyXG4gICAgICBvdXRsZW46IG91dGxlbiwgLy8gb3V0cHV0IGxlbmd0aCBpbiBieXRlc1xuICAgIH07XG5cbiAgICAvLyBpbml0aWFsaXplIHBhcmFtZXRlckJsb2NrIGJlZm9yZSB1c2FnZVxuICAgIHBhcmFtZXRlckJsb2NrLmZpbGwoMCk7XG4gICAgcGFyYW1ldGVyQmxvY2tbMF0gPSBvdXRsZW47XG4gICAgcGFyYW1ldGVyQmxvY2tbMV0gPSBrZXkubGVuZ3RoO1xuICAgIHBhcmFtZXRlckJsb2NrWzJdID0gMTsgLy8gZmFub3V0XG4gICAgcGFyYW1ldGVyQmxvY2tbM10gPSAxOyAvLyBkZXB0aFxuXG4gICAgLy8gaW5pdGlhbGl6ZSBoYXNoIHN0YXRlXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxNjsgaSsrKSB7XG4gICAgICBjdHguaFtpXSA9IEJMQUtFMkJfSVYzMltpXSBeIEIyQl9HRVQzMihwYXJhbWV0ZXJCbG9jaywgaSAqIDQpO1xuICAgIH1cblxuICAgIGlmIChrZXkubGVuZ3RoID4gMCkge1xuICAgICAgYmxha2UyYlVwZGF0ZShjdHgsIGtleSk7XG4gICAgICAvLyBhdCB0aGUgZW5kXG4gICAgICBjdHguYyA9IDEyODtcbiAgICB9XG5cbiAgICByZXR1cm4gY3R4O1xuICB9XG5cbiAgLy8gVXBkYXRlcyBhIEJMQUtFMmIgc3RyZWFtaW5nIGhhc2hcbiAgLy8gUmVxdWlyZXMgaGFzaCBjb250ZXh0IGFuZCBVaW50OEFycmF5IChieXRlIGFycmF5KVxuICBmdW5jdGlvbiBibGFrZTJiVXBkYXRlKGN0eCwgaW5wdXQpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoY3R4LmMgPT09IDEyOCkge1xuICAgICAgICAvLyBidWZmZXIgZnVsbCA/XG4gICAgICAgIGN0eC50ICs9IGN0eC5jOyAvLyBhZGQgY291bnRlcnNcbiAgICAgICAgYmxha2UyYkNvbXByZXNzKGN0eCwgZmFsc2UpOyAvLyBjb21wcmVzcyAobm90IGxhc3QpXG4gICAgICAgIGN0eC5jID0gMDsgLy8gY291bnRlciB0byB6ZXJvXG4gICAgICB9XG4gICAgICBjdHguYltjdHguYysrXSA9IGlucHV0W2ldO1xuICAgIH1cbiAgfVxuXG4gIC8vIENvbXBsZXRlcyBhIEJMQUtFMmIgc3RyZWFtaW5nIGhhc2hcbiAgLy8gUmV0dXJucyBhIFVpbnQ4QXJyYXkgY29udGFpbmluZyB0aGUgbWVzc2FnZSBkaWdlc3RcbiAgZnVuY3Rpb24gYmxha2UyYkZpbmFsKGN0eCkge1xuICAgIGN0eC50ICs9IGN0eC5jOyAvLyBtYXJrIGxhc3QgYmxvY2sgb2Zmc2V0XG5cbiAgICB3aGlsZSAoY3R4LmMgPCAxMjgpIHtcbiAgICAgIC8vIGZpbGwgdXAgd2l0aCB6ZXJvc1xuICAgICAgY3R4LmJbY3R4LmMrK10gPSAwO1xuICAgIH1cbiAgICBibGFrZTJiQ29tcHJlc3MoY3R4LCB0cnVlKTsgLy8gZmluYWwgYmxvY2sgZmxhZyA9IDFcblxuICAgIC8vIGxpdHRsZSBlbmRpYW4gY29udmVydCBhbmQgc3RvcmVcbiAgICBjb25zdCBvdXQgPSBuZXcgVWludDhBcnJheShjdHgub3V0bGVuKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGN0eC5vdXRsZW47IGkrKykge1xuICAgICAgb3V0W2ldID0gY3R4LmhbaSA+PiAyXSA+PiAoOCAqIChpICYgMykpO1xuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9XG4gIHJldHVybiB7IEluaXQ6IGJsYWtlMmJJbml0LCBVcGRhdGU6IGJsYWtlMmJVcGRhdGUsIEZpbmFsOiBibGFrZTJiRmluYWwgfTtcbn0pKCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmxha2UyX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGJsYWtlMmJcbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBjYW1sX2JsYWtlMl9jcmVhdGUoaGFzaGxlbiwga2V5KSB7XG4gIGtleSA9IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nKGtleSk7XG4gIGlmIChrZXkubGVuZ3RoID4gNjQpIHtcbiAgICBrZXkuc3ViYXJyYXkoMCwgNjQpO1xuICB9XG4gIHJldHVybiBibGFrZTJiLkluaXQoaGFzaGxlbiwga2V5KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGFrZTJfZmluYWxcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX3VpbnQ4X2FycmF5XG4vL1JlcXVpcmVzOiBibGFrZTJiXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9ibGFrZTJfZmluYWwoY3R4LCBfaGFzaGxlbikge1xuICAvLyBjdHgub3V0bGVuID09PSBoYXNobGVuXG4gIHZhciByID0gYmxha2UyYi5GaW5hbChjdHgpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfdWludDhfYXJyYXkocik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmxha2UyX3VwZGF0ZVxuLy9SZXF1aXJlczogYmxha2UyYlxuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmdcbi8vVmVyc2lvbjogPj0gNS4yLCA8IDUuM1xuZnVuY3Rpb24gY2FtbF9ibGFrZTJfdXBkYXRlKGN0eCwgYnVmLCBvZnMsIGxlbikge1xuICB2YXIgaW5wdXQgPSBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyhidWYpO1xuICBpbnB1dCA9IGlucHV0LnN1YmFycmF5KG9mcywgb2ZzICsgbGVuKTtcbiAgYmxha2UyYi5VcGRhdGUoY3R4LCBpbnB1dCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JsYWtlMl91cGRhdGVcbi8vUmVxdWlyZXM6IGJsYWtlMmJcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbi8vVmVyc2lvbjogPj0gNS4zXG5mdW5jdGlvbiBjYW1sX2JsYWtlMl91cGRhdGUoY3R4LCBidWYsIG9mcywgbGVuKSB7XG4gIHZhciBpbnB1dCA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoYnVmKTtcbiAgaW5wdXQgPSBpbnB1dC5zdWJhcnJheShvZnMsIG9mcyArIGxlbik7XG4gIGJsYWtlMmIuVXBkYXRlKGN0eCwgaW5wdXQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGFrZTJfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2JsYWtlMl9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfYmxha2UyX3VwZGF0ZVxuLy9SZXF1aXJlczogY2FtbF9ibGFrZTJfZmluYWxcbi8vVmVyc2lvbjogPj0gNS4yLCA8IDUuM1xuZnVuY3Rpb24gY2FtbF9ibGFrZTJfc3RyaW5nKGhhc2hsZW4sIGtleSwgYnVmLCBvZnMsIGxlbikge1xuICB2YXIgY3R4ID0gY2FtbF9ibGFrZTJfY3JlYXRlKGhhc2hsZW4sIGtleSk7XG4gIGNhbWxfYmxha2UyX3VwZGF0ZShjdHgsIGJ1Ziwgb2ZzLCBsZW4pO1xuICByZXR1cm4gY2FtbF9ibGFrZTJfZmluYWwoY3R4LCBoYXNobGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGFrZTJfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2JsYWtlMl9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfYmxha2UyX3VwZGF0ZVxuLy9SZXF1aXJlczogY2FtbF9ibGFrZTJfZmluYWxcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nXG4vL1ZlcnNpb246ID49IDUuM1xuZnVuY3Rpb24gY2FtbF9ibGFrZTJfc3RyaW5nKGhhc2hsZW4sIGtleSwgYnVmX3N0ciwgb2ZzLCBsZW4pIHtcbiAgdmFyIGN0eCA9IGNhbWxfYmxha2UyX2NyZWF0ZShoYXNobGVuLCBrZXkpO1xuICB2YXIgYnVmID0gY2FtbF9ieXRlc19vZl9zdHJpbmcoYnVmX3N0cik7XG4gIGNhbWxfYmxha2UyX3VwZGF0ZShjdHgsIGJ1Ziwgb2ZzLCBsZW4pO1xuICByZXR1cm4gY2FtbF9ibGFrZTJfZmluYWwoY3R4LCBoYXNobGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGFrZTJfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfYmxha2UyX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9ibGFrZTJfdXBkYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2JsYWtlMl9maW5hbFxuLy9WZXJzaW9uOiA+PSA1LjNcbmZ1bmN0aW9uIGNhbWxfYmxha2UyX2J5dGVzKGhhc2hsZW4sIGtleSwgYnVmLCBvZnMsIGxlbikge1xuICB2YXIgY3R4ID0gY2FtbF9ibGFrZTJfY3JlYXRlKGhhc2hsZW4sIGtleSk7XG4gIGNhbWxfYmxha2UyX3VwZGF0ZShjdHgsIGJ1Ziwgb2ZzLCBsZW4pO1xuICByZXR1cm4gY2FtbF9ibGFrZTJfZmluYWwoY3R4LCBoYXNobGVuKTtcbn1cblxuLy9Qcm92aWRlczogYmxha2UyX2pzX2Zvcl93YXNtX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9ibGFrZTJfY3JlYXRlLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL0lmOiB3YXNtXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gYmxha2UyX2pzX2Zvcl93YXNtX2NyZWF0ZShoYXNobGVuLCBrZXkpIHtcbiAgY29uc3Qga2V5X2pzb29fc3RyaW5nID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhrZXkpO1xuICByZXR1cm4gY2FtbF9ibGFrZTJfY3JlYXRlKGhhc2hsZW4sIGtleV9qc29vX3N0cmluZyk7XG59XG5cbi8vUHJvdmlkZXM6IGJsYWtlMl9qc19mb3Jfd2FzbV9maW5hbFxuLy9SZXF1aXJlczogY2FtbF9ibGFrZTJfZmluYWwsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbi8vSWY6IHdhc21cbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBibGFrZTJfanNfZm9yX3dhc21fZmluYWwoY3R4LCBoYXNobGVuKSB7XG4gIHJldHVybiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGNhbWxfYmxha2UyX2ZpbmFsKGN0eCwgaGFzaGxlbikpO1xufVxuXG4vL1Byb3ZpZGVzOiBibGFrZTJfanNfZm9yX3dhc21fdXBkYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2JsYWtlMl91cGRhdGUsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vSWY6IHdhc21cbi8vVmVyc2lvbjogPj0gNS4yLCA8IDUuM1xuZnVuY3Rpb24gYmxha2UyX2pzX2Zvcl93YXNtX3VwZGF0ZShjdHgsIGJ1Ziwgb2ZzLCBsZW4pIHtcbiAgY29uc3QgYnVmX2pzb29fc3RyaW5nID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhidWYpO1xuICByZXR1cm4gY2FtbF9ibGFrZTJfdXBkYXRlKGN0eCwgYnVmX2pzb29fc3RyaW5nLCBvZnMsIGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJsYWtlMl9qc19mb3Jfd2FzbV91cGRhdGVcbi8vUmVxdWlyZXM6IGNhbWxfYmxha2UyX3VwZGF0ZSwgY2FtbF9ieXRlc19vZl9qc2J5dGVzXG4vL0lmOiB3YXNtXG4vL1ZlcnNpb246ID49IDUuM1xuZnVuY3Rpb24gYmxha2UyX2pzX2Zvcl93YXNtX3VwZGF0ZShjdHgsIGJ1Ziwgb2ZzLCBsZW4pIHtcbiAgY29uc3QgYnVmX2pzb29fc3RyaW5nID0gY2FtbF9ieXRlc19vZl9qc2J5dGVzKGJ1Zik7XG4gIHJldHVybiBjYW1sX2JsYWtlMl91cGRhdGUoY3R4LCBidWZfanNvb19zdHJpbmcsIG9mcywgbGVuKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX21kNV9jaGFuXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl91aW50OF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSwgY2FtbF9tbF9pbnB1dF9ibG9ja1xuLy9SZXF1aXJlczogY2FtbF9NRDVJbml0LCBjYW1sX01ENVVwZGF0ZSwgY2FtbF9NRDVGaW5hbFxuZnVuY3Rpb24gY2FtbF9tZDVfY2hhbihjaGFuaWQsIHRvcmVhZCkge1xuICB2YXIgY3R4ID0gY2FtbF9NRDVJbml0KCk7XG4gIHZhciBidWZmZXIgPSBuZXcgVWludDhBcnJheSg0MDk2KTtcbiAgaWYgKHRvcmVhZCA8IDApIHtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgdmFyIHJlYWQgPSBjYW1sX21sX2lucHV0X2Jsb2NrKGNoYW5pZCwgYnVmZmVyLCAwLCBidWZmZXIubGVuZ3RoKTtcbiAgICAgIGlmIChyZWFkID09PSAwKSBicmVhaztcbiAgICAgIGNhbWxfTUQ1VXBkYXRlKGN0eCwgYnVmZmVyLnN1YmFycmF5KDAsIHJlYWQpLCByZWFkKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHRvcmVhZCA+IDApIHtcbiAgICAgIHZhciByZWFkID0gY2FtbF9tbF9pbnB1dF9ibG9jayhcbiAgICAgICAgY2hhbmlkLFxuICAgICAgICBidWZmZXIsXG4gICAgICAgIDAsXG4gICAgICAgIHRvcmVhZCA+IGJ1ZmZlci5sZW5ndGggPyBidWZmZXIubGVuZ3RoIDogdG9yZWFkLFxuICAgICAgKTtcbiAgICAgIGlmIChyZWFkID09PSAwKSBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gICAgICBjYW1sX01ENVVwZGF0ZShjdHgsIGJ1ZmZlci5zdWJhcnJheSgwLCByZWFkKSwgcmVhZCk7XG4gICAgICB0b3JlYWQgLT0gcmVhZDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX3VpbnQ4X2FycmF5KGNhbWxfTUQ1RmluYWwoY3R4KSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWQ1X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9zdHJpbmcsIGNhbWxfbWQ1X2J5dGVzXG5mdW5jdGlvbiBjYW1sX21kNV9zdHJpbmcocywgb2ZzLCBsZW4pIHtcbiAgcmV0dXJuIGNhbWxfbWQ1X2J5dGVzKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKHMpLCBvZnMsIGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfTUQ1VHJhbnNmb3JtXG52YXIgY2FtbF9NRDVUcmFuc2Zvcm0gPSAoZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBhZGQoeCwgeSkge1xuICAgIHJldHVybiAoeCArIHkpIHwgMDtcbiAgfVxuICBmdW5jdGlvbiB4eChxLCBhLCBiLCB4LCBzLCB0KSB7XG4gICAgYSA9IGFkZChhZGQoYSwgcSksIGFkZCh4LCB0KSk7XG4gICAgcmV0dXJuIGFkZCgoYSA8PCBzKSB8IChhID4+PiAoMzIgLSBzKSksIGIpO1xuICB9XG4gIGZ1bmN0aW9uIGZmKGEsIGIsIGMsIGQsIHgsIHMsIHQpIHtcbiAgICByZXR1cm4geHgoKGIgJiBjKSB8ICh+YiAmIGQpLCBhLCBiLCB4LCBzLCB0KTtcbiAgfVxuICBmdW5jdGlvbiBnZyhhLCBiLCBjLCBkLCB4LCBzLCB0KSB7XG4gICAgcmV0dXJuIHh4KChiICYgZCkgfCAoYyAmIH5kKSwgYSwgYiwgeCwgcywgdCk7XG4gIH1cbiAgZnVuY3Rpb24gaGgoYSwgYiwgYywgZCwgeCwgcywgdCkge1xuICAgIHJldHVybiB4eChiIF4gYyBeIGQsIGEsIGIsIHgsIHMsIHQpO1xuICB9XG4gIGZ1bmN0aW9uIGlpKGEsIGIsIGMsIGQsIHgsIHMsIHQpIHtcbiAgICByZXR1cm4geHgoYyBeIChiIHwgfmQpLCBhLCBiLCB4LCBzLCB0KTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAodywgYnVmZmVyKSB7XG4gICAgdmFyIGEgPSB3WzBdLFxuICAgICAgYiA9IHdbMV0sXG4gICAgICBjID0gd1syXSxcbiAgICAgIGQgPSB3WzNdO1xuXG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlclswXSwgNywgMHhkNzZhYTQ3OCk7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlclsxXSwgMTIsIDB4ZThjN2I3NTYpO1xuICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbMl0sIDE3LCAweDI0MjA3MGRiKTtcbiAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyWzNdLCAyMiwgMHhjMWJkY2VlZSk7XG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlcls0XSwgNywgMHhmNTdjMGZhZik7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlcls1XSwgMTIsIDB4NDc4N2M2MmEpO1xuICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbNl0sIDE3LCAweGE4MzA0NjEzKTtcbiAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyWzddLCAyMiwgMHhmZDQ2OTUwMSk7XG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlcls4XSwgNywgMHg2OTgwOThkOCk7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlcls5XSwgMTIsIDB4OGI0NGY3YWYpO1xuICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbMTBdLCAxNywgMHhmZmZmNWJiMSk7XG4gICAgYiA9IGZmKGIsIGMsIGQsIGEsIGJ1ZmZlclsxMV0sIDIyLCAweDg5NWNkN2JlKTtcbiAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyWzEyXSwgNywgMHg2YjkwMTEyMik7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlclsxM10sIDEyLCAweGZkOTg3MTkzKTtcbiAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyWzE0XSwgMTcsIDB4YTY3OTQzOGUpO1xuICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbMTVdLCAyMiwgMHg0OWI0MDgyMSk7XG5cbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWzFdLCA1LCAweGY2MWUyNTYyKTtcbiAgICBkID0gZ2coZCwgYSwgYiwgYywgYnVmZmVyWzZdLCA5LCAweGMwNDBiMzQwKTtcbiAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyWzExXSwgMTQsIDB4MjY1ZTVhNTEpO1xuICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbMF0sIDIwLCAweGU5YjZjN2FhKTtcbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWzVdLCA1LCAweGQ2MmYxMDVkKTtcbiAgICBkID0gZ2coZCwgYSwgYiwgYywgYnVmZmVyWzEwXSwgOSwgMHgwMjQ0MTQ1Myk7XG4gICAgYyA9IGdnKGMsIGQsIGEsIGIsIGJ1ZmZlclsxNV0sIDE0LCAweGQ4YTFlNjgxKTtcbiAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyWzRdLCAyMCwgMHhlN2QzZmJjOCk7XG4gICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlcls5XSwgNSwgMHgyMWUxY2RlNik7XG4gICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlclsxNF0sIDksIDB4YzMzNzA3ZDYpO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbM10sIDE0LCAweGY0ZDUwZDg3KTtcbiAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyWzhdLCAyMCwgMHg0NTVhMTRlZCk7XG4gICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlclsxM10sIDUsIDB4YTllM2U5MDUpO1xuICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbMl0sIDksIDB4ZmNlZmEzZjgpO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbN10sIDE0LCAweDY3NmYwMmQ5KTtcbiAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyWzEyXSwgMjAsIDB4OGQyYTRjOGEpO1xuXG4gICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlcls1XSwgNCwgMHhmZmZhMzk0Mik7XG4gICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlcls4XSwgMTEsIDB4ODc3MWY2ODEpO1xuICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbMTFdLCAxNiwgMHg2ZDlkNjEyMik7XG4gICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlclsxNF0sIDIzLCAweGZkZTUzODBjKTtcbiAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyWzFdLCA0LCAweGE0YmVlYTQ0KTtcbiAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyWzRdLCAxMSwgMHg0YmRlY2ZhOSk7XG4gICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlcls3XSwgMTYsIDB4ZjZiYjRiNjApO1xuICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbMTBdLCAyMywgMHhiZWJmYmM3MCk7XG4gICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlclsxM10sIDQsIDB4Mjg5YjdlYzYpO1xuICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbMF0sIDExLCAweGVhYTEyN2ZhKTtcbiAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyWzNdLCAxNiwgMHhkNGVmMzA4NSk7XG4gICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlcls2XSwgMjMsIDB4MDQ4ODFkMDUpO1xuICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbOV0sIDQsIDB4ZDlkNGQwMzkpO1xuICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbMTJdLCAxMSwgMHhlNmRiOTllNSk7XG4gICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlclsxNV0sIDE2LCAweDFmYTI3Y2Y4KTtcbiAgICBiID0gaGgoYiwgYywgZCwgYSwgYnVmZmVyWzJdLCAyMywgMHhjNGFjNTY2NSk7XG5cbiAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyWzBdLCA2LCAweGY0MjkyMjQ0KTtcbiAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyWzddLCAxMCwgMHg0MzJhZmY5Nyk7XG4gICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlclsxNF0sIDE1LCAweGFiOTQyM2E3KTtcbiAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyWzVdLCAyMSwgMHhmYzkzYTAzOSk7XG4gICAgYSA9IGlpKGEsIGIsIGMsIGQsIGJ1ZmZlclsxMl0sIDYsIDB4NjU1YjU5YzMpO1xuICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbM10sIDEwLCAweDhmMGNjYzkyKTtcbiAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyWzEwXSwgMTUsIDB4ZmZlZmY0N2QpO1xuICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbMV0sIDIxLCAweDg1ODQ1ZGQxKTtcbiAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyWzhdLCA2LCAweDZmYTg3ZTRmKTtcbiAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyWzE1XSwgMTAsIDB4ZmUyY2U2ZTApO1xuICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbNl0sIDE1LCAweGEzMDE0MzE0KTtcbiAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyWzEzXSwgMjEsIDB4NGUwODExYTEpO1xuICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbNF0sIDYsIDB4Zjc1MzdlODIpO1xuICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbMTFdLCAxMCwgMHhiZDNhZjIzNSk7XG4gICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlclsyXSwgMTUsIDB4MmFkN2QyYmIpO1xuICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbOV0sIDIxLCAweGViODZkMzkxKTtcblxuICAgIHdbMF0gPSBhZGQoYSwgd1swXSk7XG4gICAgd1sxXSA9IGFkZChiLCB3WzFdKTtcbiAgICB3WzJdID0gYWRkKGMsIHdbMl0pO1xuICAgIHdbM10gPSBhZGQoZCwgd1szXSk7XG4gIH07XG59KSgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX01ENUluaXRcbmZ1bmN0aW9uIGNhbWxfTUQ1SW5pdCgpIHtcbiAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcig2NCk7XG4gIHZhciBiMzIgPSBuZXcgVWludDMyQXJyYXkoYnVmZmVyKTtcbiAgdmFyIGI4ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTtcbiAgcmV0dXJuIHtcbiAgICBsZW46IDAsXG4gICAgdzogbmV3IFVpbnQzMkFycmF5KFsweDY3NDUyMzAxLCAweGVmY2RhYjg5LCAweDk4YmFkY2ZlLCAweDEwMzI1NDc2XSksXG4gICAgYjMyOiBiMzIsXG4gICAgYjg6IGI4LFxuICB9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX01ENVVwZGF0ZVxuLy9SZXF1aXJlczogY2FtbF9NRDVUcmFuc2Zvcm1cbmZ1bmN0aW9uIGNhbWxfTUQ1VXBkYXRlKGN0eCwgaW5wdXQsIGlucHV0X2xlbikge1xuICB2YXIgaW5fYnVmID0gY3R4LmxlbiAmIDB4M2Y7XG4gIHZhciBpbnB1dF9wb3MgPSAwO1xuICBjdHgubGVuICs9IGlucHV0X2xlbjtcbiAgaWYgKGluX2J1Zikge1xuICAgIHZhciBtaXNzaW5nID0gNjQgLSBpbl9idWY7XG4gICAgaWYgKGlucHV0X2xlbiA8IG1pc3NpbmcpIHtcbiAgICAgIGN0eC5iOC5zZXQoaW5wdXQuc3ViYXJyYXkoMCwgaW5wdXRfbGVuKSwgaW5fYnVmKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY3R4LmI4LnNldChpbnB1dC5zdWJhcnJheSgwLCBtaXNzaW5nKSwgaW5fYnVmKTtcbiAgICBjYW1sX01ENVRyYW5zZm9ybShjdHgudywgY3R4LmIzMik7XG4gICAgaW5wdXRfbGVuIC09IG1pc3Npbmc7XG4gICAgaW5wdXRfcG9zICs9IG1pc3Npbmc7XG4gIH1cbiAgd2hpbGUgKGlucHV0X2xlbiA+PSA2NCkge1xuICAgIGN0eC5iOC5zZXQoaW5wdXQuc3ViYXJyYXkoaW5wdXRfcG9zLCBpbnB1dF9wb3MgKyA2NCksIDApO1xuICAgIGNhbWxfTUQ1VHJhbnNmb3JtKGN0eC53LCBjdHguYjMyKTtcbiAgICBpbnB1dF9sZW4gLT0gNjQ7XG4gICAgaW5wdXRfcG9zICs9IDY0O1xuICB9XG4gIGlmIChpbnB1dF9sZW4pXG4gICAgY3R4LmI4LnNldChpbnB1dC5zdWJhcnJheShpbnB1dF9wb3MsIGlucHV0X3BvcyArIGlucHV0X2xlbiksIDApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX01ENUZpbmFsXG4vL1JlcXVpcmVzOiBjYW1sX01ENVRyYW5zZm9ybVxuZnVuY3Rpb24gY2FtbF9NRDVGaW5hbChjdHgpIHtcbiAgdmFyIGluX2J1ZiA9IGN0eC5sZW4gJiAweDNmO1xuICBjdHguYjhbaW5fYnVmXSA9IDB4ODA7XG4gIGluX2J1ZisrO1xuICBpZiAoaW5fYnVmID4gNTYpIHtcbiAgICBmb3IgKHZhciBqID0gaW5fYnVmOyBqIDwgNjQ7IGorKykge1xuICAgICAgY3R4LmI4W2pdID0gMDtcbiAgICB9XG4gICAgY2FtbF9NRDVUcmFuc2Zvcm0oY3R4LncsIGN0eC5iMzIpO1xuICAgIGZvciAodmFyIGogPSAwOyBqIDwgNTY7IGorKykge1xuICAgICAgY3R4LmI4W2pdID0gMDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaiA9IGluX2J1ZjsgaiA8IDU2OyBqKyspIHtcbiAgICAgIGN0eC5iOFtqXSA9IDA7XG4gICAgfVxuICB9XG4gIGN0eC5iMzJbMTRdID0gY3R4LmxlbiA8PCAzO1xuICBjdHguYjMyWzE1XSA9IChjdHgubGVuID4+IDI5KSAmIDB4MWZmZmZmZmY7XG4gIGNhbWxfTUQ1VHJhbnNmb3JtKGN0eC53LCBjdHguYjMyKTtcbiAgdmFyIHQgPSBuZXcgVWludDhBcnJheSgxNik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKVxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgNDsgaisrKSB0W2kgKiA0ICsgal0gPSAoY3R4LndbaV0gPj4gKDggKiBqKSkgJiAweGZmO1xuICByZXR1cm4gdDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZDVfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMsIGNhbWxfc3RyaW5nX29mX3VpbnQ4X2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX01ENUluaXQsIGNhbWxfTUQ1VXBkYXRlLCBjYW1sX01ENUZpbmFsXG5mdW5jdGlvbiBjYW1sX21kNV9ieXRlcyhzLCBvZnMsIGxlbikge1xuICB2YXIgY3R4ID0gY2FtbF9NRDVJbml0KCk7XG4gIHZhciBhID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhzKTtcbiAgY2FtbF9NRDVVcGRhdGUoY3R4LCBhLnN1YmFycmF5KG9mcywgb2ZzICsgbGVuKSwgbGVuKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX3VpbnQ4X2FycmF5KGNhbWxfTUQ1RmluYWwoY3R4KSk7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczoganNvb19kYXRhdmlld1xudmFyIGpzb29fZGF0YXZpZXcgPSBuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDgpKTtcblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaVxuLy9SZXF1aXJlczoganNvb19kYXRhdmlld1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KHgpIHtcbiAganNvb19kYXRhdmlldy5zZXRGbG9hdDY0KDAsIHgsIHRydWUpO1xuICB2YXIgbG8zMiA9IGpzb29fZGF0YXZpZXcuZ2V0VWludDMyKDAsIHRydWUpO1xuICB2YXIgaGkzMiA9IGpzb29fZGF0YXZpZXcuZ2V0VWludDMyKDQsIHRydWUpO1xuICB2YXIgbG8gPSBsbzMyICYgMHhmZmZmZmY7XG4gIHZhciBtaSA9IChsbzMyID4+PiAyNCkgfCAoKGhpMzIgPDwgOCkgJiAweGZmZmZmZik7XG4gIHZhciBoaSA9IChoaTMyID4+PiAxNikgJiAweGZmZmY7XG4gIC8vIFY4IHVzZXMgc2lnbmFsaW5nIE5hTnMgYXMgc2VudGluZWwuIFNvLCBOYU5zIGFyZSBtYWRlIHF1aWV0IHdoZW5cbiAgLy8gdGhleSBhcmUgc3RvcmVkIGluIGFuIGFycmF5LiBNYWtlIHRoZW0gcXVpZXQgaGVyZSBzbyB0aGF0IHdlIGdldFxuICAvLyBjb25zaXN0ZW50IHJlc3VsdHMuXG4gIGlmICgoaGkgJiAweDdmZjgpID09PSAweDdmZjAgJiYgKG1pIHwgbG8gfCAoaGkgJiAweGYpKSAhPT0gMCkgaGkgfD0gODtcbiAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKGxvLCBtaSwgaGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29fZGF0YXZpZXdcbmZ1bmN0aW9uIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdCh4KSB7XG4gIGpzb29fZGF0YXZpZXcuc2V0RmxvYXQzMigwLCB4LCB0cnVlKTtcbiAgcmV0dXJuIGpzb29fZGF0YXZpZXcuZ2V0VWludDMyKDAsIHRydWUpIHwgMDtcbn1cblxuLy9GUCBsaXRlcmFscyBjYW4gYmUgd3JpdHRlbiB1c2luZyB0aGUgaGV4YWRlY2ltYWxcbi8vbm90YXRpb24gMHg8bWFudGlzc2EgaW4gaGV4PnA8ZXhwb25lbnQ+IGZyb20gSVNPIEM5OS5cbi8vaHR0cHM6Ly9naXRodWIuY29tL2RhbmtvZ2FpL2pzLWhleGZsb2F0L2Jsb2IvbWFzdGVyL2hleGZsb2F0LmpzXG4vL1Byb3ZpZGVzOiBjYW1sX2hleHN0cmluZ19vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcsIGNhbWxfc3RyX3JlcGVhdFxuZnVuY3Rpb24gY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXQoeCwgcHJlYywgc3R5bGUpIHtcbiAgaWYgKCFOdW1iZXIuaXNGaW5pdGUoeCkpIHtcbiAgICBpZiAoTnVtYmVyLmlzTmFOKHgpKSByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoXCJuYW5cIik7XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHggPiAwID8gXCJpbmZpbml0eVwiIDogXCItaW5maW5pdHlcIik7XG4gIH1cbiAgdmFyIHNpZ24gPSB4ID09PSAwICYmIDEgLyB4ID09PSBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkgPyAxIDogeCA+PSAwID8gMCA6IDE7XG4gIGlmIChzaWduKSB4ID0gLXg7XG4gIHZhciBleHAgPSAwO1xuICBpZiAoeCA9PT0gMCkge1xuICB9IGVsc2UgaWYgKHggPCAxKSB7XG4gICAgd2hpbGUgKHggPCAxICYmIGV4cCA+IC0xMDIyKSB7XG4gICAgICB4ICo9IDI7XG4gICAgICBleHAtLTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHggPj0gMikge1xuICAgICAgeCAvPSAyO1xuICAgICAgZXhwKys7XG4gICAgfVxuICB9XG4gIHZhciBleHBfc2lnbiA9IGV4cCA8IDAgPyBcIlwiIDogXCIrXCI7XG4gIHZhciBzaWduX3N0ciA9IFwiXCI7XG4gIGlmIChzaWduKSBzaWduX3N0ciA9IFwiLVwiO1xuICBlbHNlIHtcbiAgICBzd2l0Y2ggKHN0eWxlKSB7XG4gICAgICBjYXNlIDQzIC8qICcrJyAqLzpcbiAgICAgICAgc2lnbl9zdHIgPSBcIitcIjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDMyIC8qICcgJyAqLzpcbiAgICAgICAgc2lnbl9zdHIgPSBcIiBcIjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKHByZWMgPj0gMCAmJiBwcmVjIDwgMTMpIHtcbiAgICAvKiBJZiBhIHByZWNpc2lvbiBpcyBnaXZlbiwgYW5kIGlzIHNtYWxsLCByb3VuZCBtYW50aXNzYSBhY2NvcmRpbmdseSAqL1xuICAgIHZhciBjc3QgPSBNYXRoLnBvdygyLCBwcmVjICogNCk7XG4gICAgeCA9IE1hdGgucm91bmQoeCAqIGNzdCkgLyBjc3Q7XG4gIH1cbiAgdmFyIHhfc3RyID0geC50b1N0cmluZygxNik7XG4gIGlmIChwcmVjID49IDApIHtcbiAgICB2YXIgaWR4ID0geF9zdHIuaW5kZXhPZihcIi5cIik7XG4gICAgaWYgKGlkeCA8IDApIHtcbiAgICAgIHhfc3RyICs9IFwiLlwiICsgY2FtbF9zdHJfcmVwZWF0KHByZWMsIFwiMFwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHNpemUgPSBpZHggKyAxICsgcHJlYztcbiAgICAgIGlmICh4X3N0ci5sZW5ndGggPCBzaXplKVxuICAgICAgICB4X3N0ciArPSBjYW1sX3N0cl9yZXBlYXQoc2l6ZSAtIHhfc3RyLmxlbmd0aCwgXCIwXCIpO1xuICAgICAgZWxzZSB4X3N0ciA9IHhfc3RyLnNsaWNlKDAsIHNpemUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoXG4gICAgc2lnbl9zdHIgKyBcIjB4XCIgKyB4X3N0ciArIFwicFwiICsgZXhwX3NpZ24gKyBleHAudG9TdHJpbmcoMTApLFxuICApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29fZGF0YXZpZXdcbmZ1bmN0aW9uIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyh4KSB7XG4gIHZhciBsbyA9IHgubG87XG4gIHZhciBtaSA9IHgubWk7XG4gIHZhciBoaSA9IHguaGk7XG4gIC8vIFY4IHVzZXMgc2lnbmFsaW5nIE5hTnMgYXMgc2VudGluZWwuIFNvLCBOYU5zIGFyZSBtYWRlIHF1aWV0IHdoZW5cbiAgLy8gdGhleSBhcmUgc3RvcmVkIGluIGFuIGFycmF5LiBNYWtlIHRoZW0gcXVpZXQgaGVyZSBzbyB0aGF0IHdlIGdldFxuICAvLyBjb25zaXN0ZW50IHJlc3VsdHMuXG4gIGlmICgoaGkgJiAweDdmZjgpID09PSAweDdmZjAgJiYgKG1pIHwgbG8gfCAoaGkgJiAweGYpKSAhPT0gMCkgaGkgfD0gODtcbiAganNvb19kYXRhdmlldy5zZXRVaW50MzIoMCwgbG8gfCAobWkgPDwgMjQpLCB0cnVlKTtcbiAganNvb19kYXRhdmlldy5zZXRVaW50MzIoNCwgKG1pID4+PiA4KSB8IChoaSA8PCAxNiksIHRydWUpO1xuICByZXR1cm4ganNvb19kYXRhdmlldy5nZXRGbG9hdDY0KDAsIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25leHRhZnRlcl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzLCBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaW50NjRfYWRkLCBjYW1sX2ludDY0X3N1YixjYW1sX2ludDY0X29mX2ludDMyXG5mdW5jdGlvbiBjYW1sX25leHRhZnRlcl9mbG9hdCh4LCB5KSB7XG4gIGlmIChOdW1iZXIuaXNOYU4oeCkgfHwgTnVtYmVyLmlzTmFOKHkpKSByZXR1cm4gTnVtYmVyLk5hTjtcbiAgaWYgKHggPT09IHkpIHJldHVybiB5O1xuICBpZiAoeCA9PT0gMCkge1xuICAgIGlmICh5IDwgMCkgcmV0dXJuIC1NYXRoLnBvdygyLCAtMTA3NCk7XG4gICAgZWxzZSByZXR1cm4gTWF0aC5wb3coMiwgLTEwNzQpO1xuICB9XG4gIHZhciBiaXRzID0gY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KHgpO1xuICB2YXIgb25lID0gY2FtbF9pbnQ2NF9vZl9pbnQzMigxKTtcbiAgaWYgKHggPCB5ID09PSB4ID4gMCkgYml0cyA9IGNhbWxfaW50NjRfYWRkKGJpdHMsIG9uZSk7XG4gIGVsc2UgYml0cyA9IGNhbWxfaW50NjRfc3ViKGJpdHMsIG9uZSk7XG4gIHJldHVybiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoYml0cyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdHJ1bmNfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfdHJ1bmNfZmxvYXQoeCkge1xuICByZXR1cm4gTWF0aC50cnVuYyh4KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzIGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2RhdGF2aWV3XG5mdW5jdGlvbiBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMoeCkge1xuICBqc29vX2RhdGF2aWV3LnNldFVpbnQzMigwLCB4LCB0cnVlKTtcbiAgcmV0dXJuIGpzb29fZGF0YXZpZXcuZ2V0RmxvYXQzMigwLCB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jbGFzc2lmeV9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9jbGFzc2lmeV9mbG9hdCh4KSB7XG4gIGlmIChOdW1iZXIuaXNGaW5pdGUoeCkpIHtcbiAgICBpZiAoTWF0aC5hYnMoeCkgPj0gMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDgpIHJldHVybiAwO1xuICAgIGlmICh4ICE9PSAwKSByZXR1cm4gMTtcbiAgICByZXR1cm4gMjtcbiAgfVxuICByZXR1cm4gTnVtYmVyLmlzTmFOKHgpID8gNCA6IDM7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX21vZGZfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbW9kZl9mbG9hdCh4KSB7XG4gIGlmIChOdW1iZXIuaXNGaW5pdGUoeCkpIHtcbiAgICB2YXIgbmVnID0gMSAvIHggPCAwO1xuICAgIHggPSBNYXRoLmFicyh4KTtcbiAgICB2YXIgaSA9IE1hdGguZmxvb3IoeCk7XG4gICAgdmFyIGYgPSB4IC0gaTtcbiAgICBpZiAobmVnKSB7XG4gICAgICBpID0gLWk7XG4gICAgICBmID0gLWY7XG4gICAgfVxuICAgIHJldHVybiBbMCwgZiwgaV07XG4gIH1cbiAgaWYgKE51bWJlci5pc05hTih4KSkgcmV0dXJuIFswLCBOdW1iZXIuTmFOLCBOdW1iZXIuTmFOXTtcbiAgcmV0dXJuIFswLCAxIC8geCwgeF07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2xkZXhwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xkZXhwX2Zsb2F0KHgsIGV4cCkge1xuICBleHAgfD0gMDtcbiAgaWYgKGV4cCA+IDEwMjMpIHtcbiAgICBleHAgLT0gMTAyMztcbiAgICB4ICo9IE1hdGgucG93KDIsIDEwMjMpO1xuICAgIGlmIChleHAgPiAxMDIzKSB7XG4gICAgICAvLyBpbiBjYXNlIHggaXMgc3Vibm9ybWFsXG4gICAgICBleHAgLT0gMTAyMztcbiAgICAgIHggKj0gTWF0aC5wb3coMiwgMTAyMyk7XG4gICAgfVxuICB9XG4gIGlmIChleHAgPCAtMTAyMykge1xuICAgIGV4cCArPSAxMDIzO1xuICAgIHggKj0gTWF0aC5wb3coMiwgLTEwMjMpO1xuICB9XG4gIHggKj0gTWF0aC5wb3coMiwgZXhwKTtcbiAgcmV0dXJuIHg7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ZyZXhwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ZyZXhwX2Zsb2F0KHgpIHtcbiAgaWYgKHggPT09IDAgfHwgIU51bWJlci5pc0Zpbml0ZSh4KSkgcmV0dXJuIFswLCB4LCAwXTtcbiAgdmFyIG5lZyA9IHggPCAwO1xuICBpZiAobmVnKSB4ID0gLXg7XG4gIHZhciBleHAgPSBNYXRoLm1heCgtMTAyMywgTWF0aC5mbG9vcihNYXRoLmxvZzIoeCkpICsgMSk7XG4gIHggKj0gTWF0aC5wb3coMiwgLWV4cCk7XG4gIHdoaWxlICh4IDwgMC41KSB7XG4gICAgeCAqPSAyO1xuICAgIGV4cC0tO1xuICB9XG4gIHdoaWxlICh4ID49IDEpIHtcbiAgICB4ICo9IDAuNTtcbiAgICBleHArKztcbiAgfVxuICBpZiAobmVnKSB4ID0gLXg7XG4gIHJldHVybiBbMCwgeCwgZXhwXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdF9jb21wYXJlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2Zsb2F0X2NvbXBhcmUoeCwgeSkge1xuICBpZiAoeCA9PT0geSkgcmV0dXJuIDA7XG4gIGlmICh4IDwgeSkgcmV0dXJuIC0xO1xuICBpZiAoeCA+IHkpIHJldHVybiAxO1xuICBpZiAoIU51bWJlci5pc05hTih4KSkgcmV0dXJuIDE7XG4gIGlmICghTnVtYmVyLmlzTmFOKHkpKSByZXR1cm4gLTE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvcHlzaWduX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NvcHlzaWduX2Zsb2F0KHgsIHkpIHtcbiAgaWYgKHkgPT09IDApIHkgPSAxIC8geTtcbiAgeCA9IE1hdGguYWJzKHgpO1xuICByZXR1cm4geSA8IDAgPyAteCA6IHg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2lnbmJpdF9mbG9hdCBjb25zdFxuLy9BbGlhczogY2FtbF9zaWduYml0XG5mdW5jdGlvbiBjYW1sX3NpZ25iaXRfZmxvYXQoeCkge1xuICBpZiAoeCA9PT0gMCkgeCA9IDEgLyB4O1xuICByZXR1cm4geCA8IDAgPyAxIDogMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9leHBtMV9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9leHBtMV9mbG9hdCh4KSB7XG4gIHJldHVybiBNYXRoLmV4cG0xKHgpO1xufVxuLy9Qcm92aWRlczogY2FtbF9leHAyX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2V4cDJfZmxvYXQoeCkge1xuICByZXR1cm4gTWF0aC5wb3coMiwgeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2xvZzFwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xvZzFwX2Zsb2F0KHgpIHtcbiAgcmV0dXJuIE1hdGgubG9nMXAoeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2xvZzJfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbG9nMl9mbG9hdCh4KSB7XG4gIHJldHVybiBNYXRoLmxvZzIoeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2h5cG90X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2h5cG90X2Zsb2F0KHgsIHkpIHtcbiAgcmV0dXJuIE1hdGguaHlwb3QoeCwgeSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2xvZzEwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xvZzEwX2Zsb2F0KHgpIHtcbiAgcmV0dXJuIE1hdGgubG9nMTAoeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2Nvc2hfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29zaF9mbG9hdCh4KSB7XG4gIHJldHVybiBNYXRoLmNvc2goeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2Fjb3NoX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2Fjb3NoX2Zsb2F0KHgpIHtcbiAgcmV0dXJuIE1hdGguYWNvc2goeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3NpbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc2luaF9mbG9hdCh4KSB7XG4gIHJldHVybiBNYXRoLnNpbmgoeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2FzaW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2FzaW5oX2Zsb2F0KHgpIHtcbiAgcmV0dXJuIE1hdGguYXNpbmgoeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3RhbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfdGFuaF9mbG9hdCh4KSB7XG4gIHJldHVybiBNYXRoLnRhbmgoeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2F0YW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2F0YW5oX2Zsb2F0KHgpIHtcbiAgcmV0dXJuIE1hdGguYXRhbmgoeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3JvdW5kX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3JvdW5kX2Zsb2F0KHgpIHtcbiAgaWYgKHggPj0gMCkge1xuICAgIHZhciB5ID0gTWF0aC5mbG9vcih4KTtcbiAgICByZXR1cm4geCAtIHkgPj0gMC41ID8geSArIDEgOiB5O1xuICB9IGVsc2Uge1xuICAgIHZhciB5ID0gTWF0aC5jZWlsKHgpO1xuICAgIHJldHVybiB5IC0geCA+PSAwLjUgPyB5IC0gMSA6IHk7XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfY2JydF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9jYnJ0X2Zsb2F0KHgpIHtcbiAgcmV0dXJuIE1hdGguY2JydCh4KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcmZfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZXJmX2Zsb2F0KHgpIHtcbiAgdmFyIGExID0gMC4yNTQ4Mjk1OTI7XG4gIHZhciBhMiA9IC0wLjI4NDQ5NjczNjtcbiAgdmFyIGEzID0gMS40MjE0MTM3NDE7XG4gIHZhciBhNCA9IC0xLjQ1MzE1MjAyNztcbiAgdmFyIGE1ID0gMS4wNjE0MDU0Mjk7XG4gIHZhciBwID0gMC4zMjc1OTExO1xuXG4gIHZhciBzaWduID0gMTtcbiAgaWYgKHggPCAwKSB7XG4gICAgc2lnbiA9IC0xO1xuICB9XG4gIHggPSBNYXRoLmFicyh4KTtcbiAgdmFyIHQgPSAxLjAgLyAoMS4wICsgcCAqIHgpO1xuICB2YXIgeSA9XG4gICAgMS4wIC0gKCgoKGE1ICogdCArIGE0KSAqIHQgKyBhMykgKiB0ICsgYTIpICogdCArIGExKSAqIHQgKiBNYXRoLmV4cCgteCAqIHgpO1xuXG4gIHJldHVybiBzaWduICogeTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcmZjX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2VyZl9mbG9hdFxuZnVuY3Rpb24gY2FtbF9lcmZjX2Zsb2F0KHgpIHtcbiAgcmV0dXJuIDEgLSBjYW1sX2VyZl9mbG9hdCh4KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbWFfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZm1hX2Zsb2F0KHgsIHksIHopIHtcbiAgdmFyIFNQTElUID0gTWF0aC5wb3coMiwgMjcpICsgMTtcbiAgdmFyIE1JTl9WQUxVRSA9IE1hdGgucG93KDIsIC0xMDIyKTtcbiAgdmFyIEVQU0lMT04gPSBNYXRoLnBvdygyLCAtNTIpO1xuICB2YXIgQyA9IDQxNjtcbiAgdmFyIEEgPSBNYXRoLnBvdygyLCArQyk7XG4gIHZhciBCID0gTWF0aC5wb3coMiwgLUMpO1xuXG4gIGZ1bmN0aW9uIG11bHRpcGx5KGEsIGIpIHtcbiAgICB2YXIgYXQgPSBTUExJVCAqIGE7XG4gICAgdmFyIGFoaSA9IGF0IC0gKGF0IC0gYSk7XG4gICAgdmFyIGFsbyA9IGEgLSBhaGk7XG4gICAgdmFyIGJ0ID0gU1BMSVQgKiBiO1xuICAgIHZhciBiaGkgPSBidCAtIChidCAtIGIpO1xuICAgIHZhciBibG8gPSBiIC0gYmhpO1xuICAgIHZhciBwID0gYSAqIGI7XG4gICAgdmFyIGUgPSBhaGkgKiBiaGkgLSBwICsgYWhpICogYmxvICsgYWxvICogYmhpICsgYWxvICogYmxvO1xuICAgIHJldHVybiB7XG4gICAgICBwOiBwLFxuICAgICAgZTogZSxcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gYWRkKGEsIGIpIHtcbiAgICB2YXIgcyA9IGEgKyBiO1xuICAgIHZhciB2ID0gcyAtIGE7XG4gICAgdmFyIGUgPSBhIC0gKHMgLSB2KSArIChiIC0gdik7XG4gICAgcmV0dXJuIHtcbiAgICAgIHM6IHMsXG4gICAgICBlOiBlLFxuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiBhZGp1c3QoeCwgeSkge1xuICAgIHJldHVybiB4ICE9PSAwICYmIHkgIT09IDAgJiYgU1BMSVQgKiB4IC0gKFNQTElUICogeCAtIHgpID09PSB4XG4gICAgICA/IHggKiAoMSArICh4IDwgMCA/IC0xIDogKzEpICogKHkgPCAwID8gLTEgOiArMSkgKiBFUFNJTE9OKVxuICAgICAgOiB4O1xuICB9XG5cbiAgaWYgKHggPT09IDAgfHwgeSA9PT0gMCB8fCAhTnVtYmVyLmlzRmluaXRlKHgpIHx8ICFOdW1iZXIuaXNGaW5pdGUoeSkpIHtcbiAgICByZXR1cm4geCAqIHkgKyB6O1xuICB9XG4gIGlmICh6ID09PSAwKSB7XG4gICAgcmV0dXJuIHggKiB5O1xuICB9XG4gIGlmICghTnVtYmVyLmlzRmluaXRlKHopKSB7XG4gICAgcmV0dXJuIHo7XG4gIH1cblxuICB2YXIgc2NhbGUgPSAxO1xuICB3aGlsZSAoTWF0aC5hYnMoeCkgPiBBKSB7XG4gICAgc2NhbGUgKj0gQTtcbiAgICB4ICo9IEI7XG4gIH1cbiAgd2hpbGUgKE1hdGguYWJzKHkpID4gQSkge1xuICAgIHNjYWxlICo9IEE7XG4gICAgeSAqPSBCO1xuICB9XG4gIGlmIChzY2FsZSA9PT0gMSAvIDApIHtcbiAgICByZXR1cm4geCAqIHkgKiBzY2FsZTtcbiAgfVxuICB3aGlsZSAoTWF0aC5hYnMoeCkgPCBCKSB7XG4gICAgc2NhbGUgKj0gQjtcbiAgICB4ICo9IEE7XG4gIH1cbiAgd2hpbGUgKE1hdGguYWJzKHkpIDwgQikge1xuICAgIHNjYWxlICo9IEI7XG4gICAgeSAqPSBBO1xuICB9XG4gIGlmIChzY2FsZSA9PT0gMCkge1xuICAgIHJldHVybiB6O1xuICB9XG5cbiAgdmFyIHhzID0geDtcbiAgdmFyIHlzID0geTtcbiAgdmFyIHpzID0geiAvIHNjYWxlO1xuXG4gIGlmIChNYXRoLmFicyh6cykgPiAoTWF0aC5hYnMoeHMgKiB5cykgKiA0KSAvIEVQU0lMT04pIHtcbiAgICByZXR1cm4gejtcbiAgfVxuICBpZiAoTWF0aC5hYnMoenMpIDwgKCgoTWF0aC5hYnMoeHMgKiB5cykgKiBFUFNJTE9OKSAvIDQpICogRVBTSUxPTikgLyA0KSB7XG4gICAgenMgPSAoeiA8IDAgPyAtMSA6ICsxKSAqIE1JTl9WQUxVRTtcbiAgfVxuXG4gIHZhciB4eSA9IG11bHRpcGx5KHhzLCB5cyk7XG4gIHZhciBzID0gYWRkKHh5LnAsIHpzKTtcbiAgdmFyIHUgPSBhZGQoeHkuZSwgcy5lKTtcbiAgdmFyIGkgPSBhZGQocy5zLCB1LnMpO1xuXG4gIHZhciBmID0gaS5zICsgYWRqdXN0KGkuZSwgdS5lKTtcbiAgaWYgKGYgPT09IDApIHtcbiAgICByZXR1cm4gZjtcbiAgfVxuXG4gIHZhciBmcyA9IGYgKiBzY2FsZTtcbiAgaWYgKE1hdGguYWJzKGZzKSA+IE1JTl9WQUxVRSkge1xuICAgIHJldHVybiBmcztcbiAgfVxuXG4gIC8vIEl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlcmUgd2FzIGV4dHJhIHJvdW5kaW5nIGZvciBhIGRlbm9ybWFsaXplZCB2YWx1ZS5cbiAgcmV0dXJuIGZzICsgYWRqdXN0KGYgLSBmcyAvIHNjYWxlLCBpLmUpICogc2NhbGU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZm9ybWF0X2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cl9yZXBlYXQsIGNhbWxfcGFyc2VfZm9ybWF0LCBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nXG5mdW5jdGlvbiBjYW1sX2Zvcm1hdF9mbG9hdChmbXQsIHgpIHtcbiAgZnVuY3Rpb24gdG9GaXhlZCh4LCBkcCkge1xuICAgIGlmIChNYXRoLmFicyh4KSA8IDEuMCkge1xuICAgICAgcmV0dXJuIHgudG9GaXhlZChkcCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBlID0gTnVtYmVyLnBhcnNlSW50KHgudG9TdHJpbmcoKS5zcGxpdChcIitcIilbMV0pO1xuICAgICAgaWYgKGUgPiAyMCkge1xuICAgICAgICBlIC09IDIwO1xuICAgICAgICB4IC89IE1hdGgucG93KDEwLCBlKTtcbiAgICAgICAgeCArPSBjYW1sX3N0cl9yZXBlYXQoZSwgXCIwXCIpO1xuICAgICAgICBpZiAoZHAgPiAwKSB7XG4gICAgICAgICAgeCA9IHggKyBcIi5cIiArIGNhbWxfc3RyX3JlcGVhdChkcCwgXCIwXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB4O1xuICAgICAgfSBlbHNlIHJldHVybiB4LnRvRml4ZWQoZHApO1xuICAgIH1cbiAgfVxuICB2YXIgcyxcbiAgICBmID0gY2FtbF9wYXJzZV9mb3JtYXQoZm10KTtcbiAgdmFyIHByZWMgPSBmLnByZWMgPCAwID8gNiA6IGYucHJlYztcbiAgaWYgKHggPCAwIHx8ICh4ID09PSAwICYmIDEgLyB4ID09PSBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkpKSB7XG4gICAgZi5zaWduID0gLTE7XG4gICAgeCA9IC14O1xuICB9XG4gIGlmIChOdW1iZXIuaXNOYU4oeCkpIHtcbiAgICBzID0gXCJuYW5cIjtcbiAgICBmLmZpbGxlciA9IFwiIFwiO1xuICB9IGVsc2UgaWYgKCFOdW1iZXIuaXNGaW5pdGUoeCkpIHtcbiAgICBzID0gXCJpbmZcIjtcbiAgICBmLmZpbGxlciA9IFwiIFwiO1xuICB9IGVsc2VcbiAgICBzd2l0Y2ggKGYuY29udikge1xuICAgICAgY2FzZSBcImVcIjpcbiAgICAgICAgdmFyIHMgPSB4LnRvRXhwb25lbnRpYWwocHJlYyk7XG4gICAgICAgIC8vIGV4cG9uZW50IHNob3VsZCBiZSBhdCBsZWFzdCB0d28gZGlnaXRzXG4gICAgICAgIHZhciBpID0gcy5sZW5ndGg7XG4gICAgICAgIGlmIChzLmNoYXJBdChpIC0gMykgPT09IFwiZVwiKVxuICAgICAgICAgIHMgPSBzLnNsaWNlKDAsIGkgLSAxKSArIFwiMFwiICsgcy5zbGljZShpIC0gMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImZcIjpcbiAgICAgICAgcyA9IHRvRml4ZWQoeCwgcHJlYyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImdcIjpcbiAgICAgICAgcHJlYyA9IHByZWMgPyBwcmVjIDogMTtcbiAgICAgICAgcyA9IHgudG9FeHBvbmVudGlhbChwcmVjIC0gMSk7XG4gICAgICAgIHZhciBqID0gcy5pbmRleE9mKFwiZVwiKTtcbiAgICAgICAgdmFyIGV4cCA9ICtzLnNsaWNlKGogKyAxKTtcbiAgICAgICAgaWYgKGV4cCA8IC00IHx8IHggPj0gMWUyMSB8fCB4LnRvRml4ZWQoMCkubGVuZ3RoID4gcHJlYykge1xuICAgICAgICAgIC8vIHJlbW92ZSB0cmFpbGluZyB6ZXJvZXNcbiAgICAgICAgICB2YXIgaSA9IGogLSAxO1xuICAgICAgICAgIHdoaWxlIChzLmNoYXJBdChpKSA9PT0gXCIwXCIpIGktLTtcbiAgICAgICAgICBpZiAocy5jaGFyQXQoaSkgPT09IFwiLlwiKSBpLS07XG4gICAgICAgICAgcyA9IHMuc2xpY2UoMCwgaSArIDEpICsgcy5zbGljZShqKTtcbiAgICAgICAgICBpID0gcy5sZW5ndGg7XG4gICAgICAgICAgaWYgKHMuY2hhckF0KGkgLSAzKSA9PT0gXCJlXCIpXG4gICAgICAgICAgICBzID0gcy5zbGljZSgwLCBpIC0gMSkgKyBcIjBcIiArIHMuc2xpY2UoaSAtIDEpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBwID0gcHJlYztcbiAgICAgICAgICBpZiAoZXhwIDwgMCkge1xuICAgICAgICAgICAgcCAtPSBleHAgKyAxO1xuICAgICAgICAgICAgcyA9IHgudG9GaXhlZChwKTtcbiAgICAgICAgICB9IGVsc2Ugd2hpbGUgKCgocyA9IHgudG9GaXhlZChwKSksIHMubGVuZ3RoID4gcHJlYyArIDEpKSBwLS07XG4gICAgICAgICAgaWYgKHApIHtcbiAgICAgICAgICAgIC8vIHJlbW92ZSB0cmFpbGluZyB6ZXJvZXNcbiAgICAgICAgICAgIHZhciBpID0gcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgd2hpbGUgKHMuY2hhckF0KGkpID09PSBcIjBcIikgaS0tO1xuICAgICAgICAgICAgaWYgKHMuY2hhckF0KGkpID09PSBcIi5cIikgaS0tO1xuICAgICAgICAgICAgcyA9IHMuc2xpY2UoMCwgaSArIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICB9XG4gIHJldHVybiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nKGYsIHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0X29mX3N0cmluZyAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2Zsb2F0X29mX3N0cmluZyhzKSB7XG4gIHZhciByZXM7XG4gIHZhciByX2Zsb2F0ID0gL14gKlstK10/KD86XFxkKlxcLj9cXGQrfFxcZCtcXC4/XFxkKikoPzpbZUVdWy0rXT9cXGQrKT8kLztcbiAgcyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocyk7XG4gIHJlcyA9ICtzO1xuICAvL0Zhc3QgcGF0aFxuICBpZiAoIU51bWJlci5pc05hTihyZXMpICYmIHJfZmxvYXQudGVzdChzKSkgcmV0dXJuIHJlcztcbiAgcyA9IHMucmVwbGFjZSgvXy9nLCBcIlwiKTtcbiAgcmVzID0gK3M7XG4gIGlmICgoIU51bWJlci5pc05hTihyZXMpICYmIHJfZmxvYXQudGVzdChzKSkgfHwgL15bKy1dP25hbiQvaS50ZXN0KHMpKVxuICAgIHJldHVybiByZXM7XG4gIHZhciBtID0gL14gKihbKy1dPykweChbMC05YS1mXSspXFwuPyhbMC05YS1mXSopKHAoWystXT9bMC05XSspKT8kL2kuZXhlYyhzKTtcbiAgLy8gICAgICAgICAgMSAgICAgICAgMiAgICAgICAgICAgICAzICAgICAgICAgICA1XG4gIGlmIChtKSB7XG4gICAgdmFyIG0zID0gbVszXS5yZXBsYWNlKC8wKyQvLCBcIlwiKTtcbiAgICB2YXIgbWFudGlzc2EgPSBOdW1iZXIucGFyc2VJbnQobVsxXSArIG1bMl0gKyBtMywgMTYpO1xuICAgIHZhciBleHBvbmVudCA9ICgrbVs1XSB8fCAwKSAtIDQgKiBtMy5sZW5ndGg7XG4gICAgcmVzID0gbWFudGlzc2EgKiBNYXRoLnBvdygyLCBleHBvbmVudCk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuICBpZiAoL15cXCs/aW5mKGluaXR5KT8kL2kudGVzdChzKSkgcmV0dXJuIE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgaWYgKC9eLWluZihpbml0eSk/JC9pLnRlc3QocykpIHJldHVybiBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7XG4gIGNhbWxfZmFpbHdpdGgoXCJmbG9hdF9vZl9zdHJpbmdcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VwZGF0ZV9kdW1teVxuZnVuY3Rpb24gY2FtbF91cGRhdGVfZHVtbXkoeCwgeSkge1xuICBpZiAoeS5mdW4pIHtcbiAgICB4LmZ1biA9IHkuZnVuO1xuICAgIHJldHVybiAwO1xuICB9XG4gIGlmICh0eXBlb2YgeSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgeC5mdW4gPSB5O1xuICAgIHJldHVybiAwO1xuICB9XG4gIHZhciBpID0geS5sZW5ndGg7XG4gIHdoaWxlIChpLS0pIHhbaV0gPSB5W2ldO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hbGxvY19kdW1teV9pbmZpeFxuLy9SZXF1aXJlczogY2FtbF9jYWxsX2dlblxuLy9WZXJzaW9uOiA8IDUuNFxuZnVuY3Rpb24gY2FtbF9hbGxvY19kdW1teV9pbmZpeCgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGYoeCkge1xuICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYuZnVuLCBbeF0pO1xuICB9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FsbG9jX2R1bW15X2xhenlcbi8vVmVyc2lvbjogPj0gNS40XG5mdW5jdGlvbiBjYW1sX2FsbG9jX2R1bW15X2xhenkoX3VuaXQpIHtcbiAgcmV0dXJuIFswLCAwXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91cGRhdGVfZHVtbXlfbGF6eVxuLy9SZXF1aXJlczogY2FtbF9vYmpfdGFnXG4vL1JlcXVpcmVzOiBjYW1sX3VwZGF0ZV9kdW1teVxuLy9WZXJzaW9uOiA+PSA1LjRcbmZ1bmN0aW9uIGNhbWxfdXBkYXRlX2R1bW15X2xhenkoZHVtbXksIG5ld3ZhbCkge1xuICBzd2l0Y2ggKGNhbWxfb2JqX3RhZyhuZXd2YWwpKSB7XG4gICAgY2FzZSAyNDY6IC8vIExhenlcbiAgICBjYXNlIDI0NDogLy8gRm9yY2luZ1xuICAgIGNhc2UgMjUwOiAvLyBGb3J3YXJkXG4gICAgICBjYW1sX3VwZGF0ZV9kdW1teShkdW1teSwgbmV3dmFsKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBkdW1teVsxXSA9IG5ld3ZhbDtcbiAgICAgIGR1bW15WzBdID0gMjUwO1xuICAgICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3RhZ1xuLy9SZXF1aXJlczogY2FtbF9pc19tbF9ieXRlcywgY2FtbF9pc19tbF9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfb2JqX3RhZyh4KSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHgpICYmIHhbMF0gPT09IHhbMF0gPj4+IDApIHJldHVybiB4WzBdO1xuICBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKHgpKSByZXR1cm4gMjUyO1xuICBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyh4KSkgcmV0dXJuIDI1MjtcbiAgZWxzZSBpZiAoeCBpbnN0YW5jZW9mIEZ1bmN0aW9uIHx8IHR5cGVvZiB4ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiAyNDc7XG4gIGVsc2UgaWYgKHg/LmNhbWxfY3VzdG9tKSByZXR1cm4gMjU1O1xuICBlbHNlIHJldHVybiAxMDAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9zZXRfdGFnIChtdXRhYmxlLCBjb25zdClcbi8vVmVyc2lvbjogPCA1LjBcbmZ1bmN0aW9uIGNhbWxfb2JqX3NldF90YWcoeCwgdGFnKSB7XG4gIHhbMF0gPSB0YWc7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9vYmpfYmxvY2sgY29uc3QgKGNvbnN0LGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9vYmpfYmxvY2sodGFnLCBzaXplKSB7XG4gIC8vIFRPRE86IGZhaWwgZm9yIHZhbHVlIHRoYXQgYXJlIG5vdCByZXByZXNlbnRlZCBhcyBhbiBhcnJheVxuICB2YXIgbyA9IG5ldyBBcnJheShzaXplICsgMSk7XG4gIG9bMF0gPSB0YWc7XG4gIGZvciAodmFyIGkgPSAxOyBpIDw9IHNpemU7IGkrKykgb1tpXSA9IDA7XG4gIHJldHVybiBvO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial93aXRoX3RhZ1xuZnVuY3Rpb24gY2FtbF9vYmpfd2l0aF90YWcodGFnLCB4KSB7XG4gIHZhciBsID0geC5sZW5ndGg7XG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBhWzBdID0gdGFnO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGw7IGkrKykgYVtpXSA9IHhbaV07XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9kdXAgbXV0YWJsZSAobXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfb2JqX2R1cCh4KSB7XG4gIHJldHVybiB0eXBlb2YgeCA9PT0gXCJudW1iZXJcIiA/IHggOiB4LnNsaWNlKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3RydW5jYXRlIChtdXRhYmxlLCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9WZXJzaW9uOiA8IDUuMFxuZnVuY3Rpb24gY2FtbF9vYmpfdHJ1bmNhdGUoeCwgcykge1xuICBpZiAocyA8PSAwIHx8IHMgKyAxID4geC5sZW5ndGgpIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIk9iai50cnVuY2F0ZVwiKTtcbiAgaWYgKHgubGVuZ3RoICE9PSBzICsgMSkgeC5sZW5ndGggPSBzICsgMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX21ha2VfZm9yd2FyZFxuLy9WZXJzaW9uOiA8IDUuMFxuZnVuY3Rpb24gY2FtbF9vYmpfbWFrZV9mb3J3YXJkKGIsIHYpIHtcbiAgYlswXSA9IDI1MDtcbiAgYlsxXSA9IHY7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9jb21wYXJlX2FuZF9zd2FwXG4vL1ZlcnNpb246ID49IDUuMFxuZnVuY3Rpb24gY2FtbF9vYmpfY29tcGFyZV9hbmRfc3dhcCh4LCBpLCBvbGQsIG4pIHtcbiAgaWYgKHhbaSArIDFdID09PSBvbGQpIHtcbiAgICB4W2kgKyAxXSA9IG47XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2lzX3NoYXJlZFxuLy9WZXJzaW9uOiA+PSA1LjBcbmZ1bmN0aW9uIGNhbWxfb2JqX2lzX3NoYXJlZChfeCkge1xuICByZXR1cm4gMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X21ha2VfZm9yd2FyZCBjb25zdCAobXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfbGF6eV9tYWtlX2ZvcndhcmQodikge1xuICByZXR1cm4gWzI1MCwgdl07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWV0aG9kX2NhY2hlXG52YXIgY2FtbF9tZXRob2RfY2FjaGUgPSBbXTtcblxuLy9Qcm92aWRlczogY2FtbF9vb19jYWNoZV9pZCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9tZXRob2RfY2FjaGVcbmZ1bmN0aW9uIGNhbWxfb29fY2FjaGVfaWQoKSB7XG4gIHZhciBjYWNoZWlkID0gY2FtbF9tZXRob2RfY2FjaGUubGVuZ3RoO1xuICBjYW1sX21ldGhvZF9jYWNoZVtjYWNoZWlkXSA9IDA7XG4gIGNhY2hlaWQ7XG59XG5cbi8vLy8vLy8vLy8vLy8gQ2FtbGludGVybmFsT09cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2NhY2hlZF9tZXRob2QgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfbWV0aG9kX2NhY2hlXG5mdW5jdGlvbiBjYW1sX2dldF9jYWNoZWRfbWV0aG9kKG9iaiwgdGFnLCBjYWNoZWlkKSB7XG4gIHZhciBtZXRocyA9IG9ialsxXTtcbiAgdmFyIG9mcyA9IGNhbWxfbWV0aG9kX2NhY2hlW2NhY2hlaWRdO1xuICBpZiAobWV0aHNbb2ZzICsgNF0gPT09IHRhZykge1xuICAgIHJldHVybiBtZXRoc1tvZnMgKyAzXTtcbiAgfVxuICB2YXIgbGkgPSAzLFxuICAgIGhpID0gbWV0aHNbMV0gKiAyICsgMSxcbiAgICBtaTtcbiAgd2hpbGUgKGxpIDwgaGkpIHtcbiAgICBtaSA9ICgobGkgKyBoaSkgPj4gMSkgfCAxO1xuICAgIGlmICh0YWcgPCBtZXRoc1ttaSArIDFdKSBoaSA9IG1pIC0gMjtcbiAgICBlbHNlIGxpID0gbWk7XG4gIH1cbiAgY2FtbF9tZXRob2RfY2FjaGVbY2FjaGVpZF0gPSBsaSAtIDM7XG4gIHJldHVybiBtZXRoc1tsaV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X3B1YmxpY19tZXRob2QgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZ2V0X3B1YmxpY19tZXRob2Qob2JqLCB0YWcpIHtcbiAgdmFyIG1ldGhzID0gb2JqWzFdO1xuICB2YXIgbGkgPSAzLFxuICAgIGhpID0gbWV0aHNbMV0gKiAyICsgMSxcbiAgICBtaTtcbiAgd2hpbGUgKGxpIDwgaGkpIHtcbiAgICBtaSA9ICgobGkgKyBoaSkgPj4gMSkgfCAxO1xuICAgIGlmICh0YWcgPCBtZXRoc1ttaSArIDFdKSBoaSA9IG1pIC0gMjtcbiAgICBlbHNlIGxpID0gbWk7XG4gIH1cbiAgLyogcmV0dXJuIDAgaWYgdGFnIGlzIG5vdCB0aGVyZSAqL1xuICByZXR1cm4gdGFnID09PSBtZXRoc1tsaSArIDFdID8gbWV0aHNbbGldIDogMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vb19sYXN0X2lkXG52YXIgY2FtbF9vb19sYXN0X2lkID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9zZXRfb29faWRcbi8vUmVxdWlyZXM6IGNhbWxfb29fbGFzdF9pZFxuZnVuY3Rpb24gY2FtbF9zZXRfb29faWQoYikge1xuICBiWzJdID0gY2FtbF9vb19sYXN0X2lkKys7XG4gIHJldHVybiBiO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZyZXNoX29vX2lkIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX29vX2xhc3RfaWRcbmZ1bmN0aW9uIGNhbWxfZnJlc2hfb29faWQoKSB7XG4gIHJldHVybiBjYW1sX29vX2xhc3RfaWQrKztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfcmF3X2ZpZWxkXG5mdW5jdGlvbiBjYW1sX29ial9yYXdfZmllbGQobywgaSkge1xuICByZXR1cm4gb1tpICsgMV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3NldF9yYXdfZmllbGRcbmZ1bmN0aW9uIGNhbWxfb2JqX3NldF9yYXdfZmllbGQobywgaSwgdikge1xuICByZXR1cm4gKG9baSArIDFdID0gdik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3JlYWNoYWJsZV93b3Jkc1xuZnVuY3Rpb24gY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzKF9vKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9hZGRfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX29ial9hZGRfb2Zmc2V0KF92LCBfb2Zmc2V0KSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJPYmouYWRkX29mZnNldCBpcyBub3Qgc3VwcG9ydGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial91cGRhdGVfdGFnXG4vL1ZlcnNpb246ID49IDUuMFxuZnVuY3Rpb24gY2FtbF9vYmpfdXBkYXRlX3RhZyhiLCBvLCBuKSB7XG4gIGlmIChiWzBdID09PSBvKSB7XG4gICAgYlswXSA9IG47XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yY2luZ1xuLy9SZXF1aXJlczogY2FtbF9vYmpfdXBkYXRlX3RhZ1xuLy9WZXJzaW9uOiA+PSA1LjBcbmZ1bmN0aW9uIGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yY2luZyhvKSB7XG4gIGlmIChcbiAgICBBcnJheS5pc0FycmF5KG8pICYmXG4gICAgb1swXSA9PT0gb1swXSA+Pj4gMCAmJlxuICAgIGNhbWxfb2JqX3VwZGF0ZV90YWcobywgMjQ2LCAyNDQpXG4gICkge1xuICAgIHJldHVybiAwO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAxO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yd2FyZFxuLy9SZXF1aXJlczogY2FtbF9vYmpfdXBkYXRlX3RhZ1xuLy9WZXJzaW9uOiA+PSA1LjBcbmZ1bmN0aW9uIGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yd2FyZChvKSB7XG4gIGNhbWxfb2JqX3VwZGF0ZV90YWcobywgMjQ0LCAyNTApO1xuICByZXR1cm4gMDsgLy8gdW5pdFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfcmVzZXRfdG9fbGF6eVxuLy9SZXF1aXJlczogY2FtbF9vYmpfdXBkYXRlX3RhZ1xuLy9WZXJzaW9uOiA+PSA1LjBcbmZ1bmN0aW9uIGNhbWxfbGF6eV9yZXNldF90b19sYXp5KG8pIHtcbiAgY2FtbF9vYmpfdXBkYXRlX3RhZyhvLCAyNDQsIDI0Nik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfcmVhZF9yZXN1bHRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX3RhZ1xuLy9WZXJzaW9uOiA+PSA1LjBcbmZ1bmN0aW9uIGNhbWxfbGF6eV9yZWFkX3Jlc3VsdChvKSB7XG4gIHJldHVybiBjYW1sX29ial90YWcobykgPT09IDI1MCA/IG9bMV0gOiBvO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWdcbi8vVmVyc2lvbjogPCA1XG5mdW5jdGlvbiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcoX3QpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xuLy9WZXJzaW9uOiA+PSA1XG5mdW5jdGlvbiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodCkge1xuICByZXR1cm4gdCA9PT0gMjQ1ID8gMSA6IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3VzdG9tX2lkZW50aWZpZXJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2N1c3RvbV9pZGVudGlmaWVyKG8pIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKG8uY2FtbF9jdXN0b20gfHwgXCJcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZ2NfcmFtcF91cFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuLy9WZXJzaW9uOiA+PSA1LjRcbmZ1bmN0aW9uIGNhbWxfbWxfZ2NfcmFtcF91cChmKSB7XG4gIHZhciBhID0gY2FtbF9jYWxsYmFjayhmLCBbMF0pO1xuICB2YXIgc3VzcGVuZGVkID0gMDtcbiAgcmV0dXJuIFswLCBhLCBzdXNwZW5kZWRdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2djX3JhbXBfZG93blxuLy9WZXJzaW9uOiA+PSA1LjRcbmZ1bmN0aW9uIGNhbWxfbWxfZ2NfcmFtcF9kb3duKF9zdXNwZW5kZWRfY29sbGVjdGlvbl93b3JrKSB7XG4gIHJldHVybiAwO1xufVxuIiwiLypcblRvIGRlYWwgd2l0aCBlZmZlY3RzLCB0aGUgZXhlY3V0aW9uIGNvbnRleHQgaXMgaW50dWl0aXZlbHkgY29tcG9zZWQgb2ZcbmEgc3RhY2sgb2YgZmliZXJzLiBFYWNoIGZpYmVyIGhhcyBhIGN1cnJlbnQgbG93LWxldmVsIGNvbnRpbnVhdGlvblxuKG9uZS1hcmd1bWVudCBKYXZhU2NyaXB0IGZ1bmN0aW9uKSwgYSBzdGFjayBvZiBleGNlcHRpb24gaGFuZGxlcnMgYW5kXG5hIHRyaXBsZSBvZiBoYW5kbGVycywgd2hpY2ggYXJlIGludm9rZWQgd2hlbiB0aGUgZmliZXIgdGVybWluYXRlc1xuKGVpdGhlciB3aXRoIGEgdmFsdWUgb3IgYW4gZXhjZXB0aW9uKSBvciB3aGVuIGFuIGVmZmVjdCBpcyBwZXJmb3JtZWQuXG5UaGUgbG93LWxldmVsIGNvbnRpbnVhdGlvbiBvZiB0aGUgdG9wbW9zdCBmaWJlciAod2hpY2ggaXMgY3VycmVudGx5XG5leGVjdXRpbmcpIGlzIHBhc3NlZCBmcm9tIGZ1bmN0aW9uIHRvIGZ1bmN0aW9uIGFzIGFuIGFkZGl0aW9uYWxcbmFyZ3VtZW50LiBJdHMgc3RhY2sgb2YgZXhjZXB0aW9uIGhhbmRsZXJzIGlzIHN0b3JlZCBpblxuW2NhbWxfY3VycmVudF9zdGFjay54XS5cbkV4Y2VwdGlvbiBoYW5kbGVycyBhcmUgcHVzaGVkIGludG8gdGhpcyBzdGFja1xud2hlbiBlbnRlcmluZyBhIFt0cnkgLi4uIHdpdGggLi4uXSBhbmQgcG9wcGVkIG9uIGV4aXQuXG5IYW5kbGVycyBhcmUgc3RvcmVkIGluIFtjYW1sX2N1cnJlbnRfc3RhY2suaF1cbmFuZCB0aGUgcmVtYWluaW5nIGZpYmVycyBhcmUgc3RvcmVkIGluIFtjYW1sX2N1cnJlbnRfc3RhY2suZV0uXG5UbyBpbnN0YWxsIGFuIGVmZmVjdCBoYW5kbGVyLCB3ZSBwdXNoIGEgbmV3IGZpYmVyIGludG8gdGhlIGV4ZWN1dGlvbiBjb250ZXh0LlxuXG5XZSBoYXZlIGJhc2ljYWxseSB0aGUgZm9sbG93aW5nIHR5cGUgZm9yIHJlaWZpZWQgY29udGludWF0aW9ucyAodHlwZVxuW2NvbnRpbnVhdGlvbl0gaW4gbW9kdWxlIFtFZmZlY3RdIG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJ5KTpcblxuICB0eXBlICgnYSwgJ2IpIGNvbnRpbnVhdGlvbiA9ICgnYSwgJ2IpIHN0YWNrIHJlZlxuXG4gIGFuZCAoXywgXykgc3RhY2sgPVxuICAgICAgQ29ucyA6ICgnYiAtPiB1bml0KSAqICAgICAgICAgICAgICgqIGxvdy1sZXZlbCBjb250aW51YXRpb24gKilcbiAgICAgICAgICAgICAoZXhuIC0+IHVuaXQpIGxpc3QgKiAgICAgICAoKiBleGNlcHRpb24gaGFuZGxlcnMgKilcbiAgICAgICAgICAgICAoJ2IsICdjKSBoYW5kbGVyICpcbiAgICAgICAgICAgICAoJ2EsICdiKSBzdGFja1xuICAgICAgICAgICAgIC0+ICgnYSwgJ2MpIHN0YWNrXG4gICAgfCBFbXB0eSA6ICgnYSwgJ2EpIHN0YWNrXG5cbiAgYW5kICgnYSwnYikgaGFuZGxlciA9ICAgKCogQXMgaW4gbW9kdWxlIEVmZmVjdCBmcm9tIHRoZSBzdGFuZGFyZCBsaWJyYXJ5ICopXG4gICAgeyByZXRjOiAnYSAtPiAnYjtcbiAgICAgIGV4bmM6IGV4biAtPiAnYjtcbiAgICAgIGVmZmM6ICdjLidjIEVmZmVjdC50IC0+ICgoJ2MsJ2IpIGNvbnRpbnVhdGlvbiAtPiAnYikgb3B0aW9uIH1cblxuQ29udGludWF0aW9ucyBhcmUgb25lLXNob3QuIEEgY29udGludWF0aW9uIFtyZWYgRW1wdHldIGhhcyBhbHJlYWR5XG5iZWVuIHJlc3VtZWQuXG5cbkEgY29udGludWF0aW9uIGlzIGJhc2ljYWxseSBjb21wb3NlZCBvZiBhIGxpc3Qgb2YgZmliZXJzLCB3aGljaCBlYWNoXG5oYXMgaXRzIGxvdy1sZXZlbCBjb250aW51YXRpb24sIGl0cyBzdGFjayBvZiBleGNlcHRpb24gaGFuZGxlcnMgYW5kIGFcbnRyaXBsZSBvZiBoYW5kbGVycyB0byBkZWFsIHdpdGggd2hlbiB0aGUgZmliZXIgdGVybWluYXRlcyBvciBhblxuZWZmZWN0IGlzIHBlcmZvcm1lZC4gV2hlbiByZXN1bWluZyBhIGNvbnRpbnVhdGlvbiwgdGhlIGlubmVybW9zdCBmaWJlclxuaXMgcmVzdW1lZCBmaXJzdC5cblxuVGhlIGhhbmRsZXJzIGFyZSBDUFMtdHJhbnNmb3JtZWQgZnVuY3Rpb25zOiB0aGV5IGFjdHVhbGx5IHRha2UgYW5cbmFkZGl0aW9uYWwgcGFyYW1ldGVyIHdoaWNoIGlzIHRoZSBjdXJyZW50IGxvdy1sZXZlbCBjb250aW51YXRpb24uXG4qL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2N1cnJlbnRfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbi8vIFRoaXMgaGFzIHRoZSBzaGFwZSB7aywgeCwgaCwgZX0gd2hlcmVcbi8vIC0gaCBpcyBhIHRyaXBsZSBvZiBoYW5kbGVycyAoc2VlIGVmZmVjdC5tbClcbi8vIC0gayBpcyB0aGUgbG93IGxldmVsIGNvbnRpbnVhdGlvblxuLy8gLSB4IGlzIHRoZSBleGNlcHRpb24gc3RhY2tcbi8vIC0gZSBpcyB0aGUgZmliZXIgc3RhY2sgb2YgdGhlIHBhcmVudCBmaWJlci5cbnZhciBjYW1sX2N1cnJlbnRfc3RhY2sgPSB7IGs6IDAsIHg6IDAsIGg6IDAsIGU6IDAgfTtcblxuLy9Qcm92aWRlczogY2FtbF9wdXNoX3RyYXBcbi8vUmVxdWlyZXM6IGNhbWxfY3VycmVudF9zdGFja1xuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9wdXNoX3RyYXAoaGFuZGxlcikge1xuICBjYW1sX2N1cnJlbnRfc3RhY2sueCA9IHsgaDogaGFuZGxlciwgdDogY2FtbF9jdXJyZW50X3N0YWNrLnggfTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wb3BfdHJhcFxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3BvcF90cmFwKCkge1xuICBpZiAoIWNhbWxfY3VycmVudF9zdGFjay54KVxuICAgIHJldHVybiBmdW5jdGlvbiAoeCkge1xuICAgICAgdGhyb3cgeDtcbiAgICB9O1xuICB2YXIgaCA9IGNhbWxfY3VycmVudF9zdGFjay54Lmg7XG4gIGNhbWxfY3VycmVudF9zdGFjay54ID0gY2FtbF9jdXJyZW50X3N0YWNrLngudDtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2VfdW5oYW5kbGVkXG4vL1JlcXVpcmVzOiBjYW1sX21ha2VfdW5oYW5kbGVkX2VmZmVjdF9leG5cbi8vSWY6IGVmZmVjdHNcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3VuaGFuZGxlZChlZmYpIHtcbiAgdmFyIGV4biA9IGNhbWxfbWFrZV91bmhhbmRsZWRfZWZmZWN0X2V4bihlZmYpO1xuICB0aHJvdyBleG47XG59XG5cbi8vUHJvdmlkZXM6Y2FtbF9yZXN1bWVfc3RhY2tcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfcmFpc2VfY29uc3RhbnRcbi8vUmVxdWlyZXM6IGNhbWxfcG9wX2ZpYmVyLCBjYW1sX2N1cnJlbnRfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX3Jlc3VtZV9zdGFjayhzdGFjaywgbGFzdCwgaykge1xuICBpZiAoIXN0YWNrKVxuICAgIGNhbWxfcmFpc2VfY29uc3RhbnQoXG4gICAgICBjYW1sX25hbWVkX3ZhbHVlKFwiRWZmZWN0LkNvbnRpbnVhdGlvbl9hbHJlYWR5X3Jlc3VtZWRcIiksXG4gICAgKTtcbiAgaWYgKGxhc3QgPT09IDApIHtcbiAgICBsYXN0ID0gc3RhY2s7XG4gICAgLy8gUHJlIE9DYW1sIDUuMiwgbGFzdCB3YXMgbm90IHBvcHVsYXRlZC5cbiAgICB3aGlsZSAobGFzdC5lICE9PSAwKSBsYXN0ID0gbGFzdC5lO1xuICB9XG4gIGNhbWxfY3VycmVudF9zdGFjay5rID0gaztcbiAgbGFzdC5lID0gY2FtbF9jdXJyZW50X3N0YWNrO1xuICBjYW1sX2N1cnJlbnRfc3RhY2sgPSBzdGFjaztcbiAgcmV0dXJuIHN0YWNrLms7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcG9wX2ZpYmVyXG4vL1JlcXVpcmVzOiBjYW1sX2N1cnJlbnRfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX3BvcF9maWJlcigpIHtcbiAgLy8gTW92ZSB0byB0aGUgcGFyZW50IGZpYmVyLCByZXR1cm5pbmcgdGhlIHBhcmVudCdzIGxvdy1sZXZlbCBjb250aW51YXRpb25cbiAgdmFyIGMgPSBjYW1sX2N1cnJlbnRfc3RhY2suZTtcbiAgY2FtbF9jdXJyZW50X3N0YWNrLmUgPSAwO1xuICBjYW1sX2N1cnJlbnRfc3RhY2sgPSBjO1xuICByZXR1cm4gYy5rO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21ha2VfdW5oYW5kbGVkX2VmZmVjdF9leG5cbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfZnJlc2hfb29faWRcbi8vSWY6IGVmZmVjdHNcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX21ha2VfdW5oYW5kbGVkX2VmZmVjdF9leG4oZWZmKSB7XG4gIHZhciBleG4gPSBjYW1sX25hbWVkX3ZhbHVlKFwiRWZmZWN0LlVuaGFuZGxlZFwiKTtcbiAgaWYgKGV4bikgZXhuID0gWzAsIGV4biwgZWZmXTtcbiAgZWxzZSB7XG4gICAgZXhuID0gW1xuICAgICAgMjQ4LFxuICAgICAgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIkVmZmVjdC5VbmhhbmRsZWRcIiksXG4gICAgICBjYW1sX2ZyZXNoX29vX2lkKDApLFxuICAgIF07XG4gIH1cbiAgcmV0dXJuIGV4bjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wZXJmb3JtX2VmZmVjdFxuLy9SZXF1aXJlczogY2FtbF9wb3BfZmliZXIsIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgsIGNhbWxfdHJhbXBvbGluZV9yZXR1cm5cbi8vUmVxdWlyZXM6IGNhbWxfbWFrZV91bmhhbmRsZWRfZWZmZWN0X2V4biwgY2FtbF9jdXJyZW50X3N0YWNrXG4vL1JlcXVpcmVzOiBjYW1sX2dldF9jcHNfZnVuXG4vL0lmOiBlZmZlY3RzXG4vL1ZlcnNpb246ID49IDUuMFxuZnVuY3Rpb24gY2FtbF9wZXJmb3JtX2VmZmVjdChlZmYsIGswKSB7XG4gIGlmIChjYW1sX2N1cnJlbnRfc3RhY2suZSA9PT0gMCkge1xuICAgIHZhciBleG4gPSBjYW1sX21ha2VfdW5oYW5kbGVkX2VmZmVjdF9leG4oZWZmKTtcbiAgICB0aHJvdyBleG47XG4gIH1cbiAgLy8gR2V0IGN1cnJlbnQgZWZmZWN0IGhhbmRsZXJcbiAgdmFyIGhhbmRsZXIgPSBjYW1sX2N1cnJlbnRfc3RhY2suaFszXTtcbiAgdmFyIGxhc3RfZmliZXIgPSBjYW1sX2N1cnJlbnRfc3RhY2s7XG4gIGxhc3RfZmliZXIuayA9IGswO1xuICB2YXIgY29udCA9IFsyNDUgLypjb250aW51YXRpb24qLywgbGFzdF9maWJlciwgbGFzdF9maWJlcl07XG4gIC8vIE1vdmUgdG8gcGFyZW50IGZpYmVyIGFuZCBleGVjdXRlIHRoZSBlZmZlY3QgaGFuZGxlciB0aGVyZVxuICAvLyBUaGUgaGFuZGxlciBpcyBkZWZpbmVkIGluIFN0ZGxpYi5FZmZlY3QsIHNvIHdlIGtub3cgdGhhdCB0aGUgYXJpdHkgbWF0Y2hlc1xuICB2YXIgazEgPSBjYW1sX3BvcF9maWJlcigpO1xuICByZXR1cm4gY2FtbF9zdGFja19jaGVja19kZXB0aCgpXG4gICAgPyBjYW1sX2dldF9jcHNfZnVuKGhhbmRsZXIpKGVmZiwgY29udCwgbGFzdF9maWJlciwgazEpXG4gICAgOiBjYW1sX3RyYW1wb2xpbmVfcmV0dXJuKGhhbmRsZXIsIFtlZmYsIGNvbnQsIGxhc3RfZmliZXIsIGsxXSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVwZXJmb3JtX2VmZmVjdFxuLy9SZXF1aXJlczogY2FtbF9wb3BfZmliZXIsIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgsIGNhbWxfdHJhbXBvbGluZV9yZXR1cm5cbi8vUmVxdWlyZXM6IGNhbWxfbWFrZV91bmhhbmRsZWRfZWZmZWN0X2V4biwgY2FtbF9jdXJyZW50X3N0YWNrXG4vL1JlcXVpcmVzOiBjYW1sX3Jlc3VtZV9zdGFjaywgY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjXG4vL1JlcXVpcmVzOiBjYW1sX2dldF9jcHNfZnVuXG4vL0lmOiBlZmZlY3RzXG4vL1ZlcnNpb246ID49IDUuMFxuZnVuY3Rpb24gY2FtbF9yZXBlcmZvcm1fZWZmZWN0KGVmZiwgY29udCwgbGFzdCwgazApIHtcbiAgaWYgKGNhbWxfY3VycmVudF9zdGFjay5lID09PSAwKSB7XG4gICAgdmFyIGV4biA9IGNhbWxfbWFrZV91bmhhbmRsZWRfZWZmZWN0X2V4bihlZmYpO1xuICAgIHZhciBzdGFjayA9IGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Yyhjb250KTtcbiAgICBjYW1sX3Jlc3VtZV9zdGFjayhzdGFjaywgbGFzdCwgazApO1xuICAgIHRocm93IGV4bjtcbiAgfVxuICAvLyBHZXQgY3VycmVudCBlZmZlY3QgaGFuZGxlclxuICB2YXIgaGFuZGxlciA9IGNhbWxfY3VycmVudF9zdGFjay5oWzNdO1xuICB2YXIgbGFzdF9maWJlciA9IGNhbWxfY3VycmVudF9zdGFjaztcbiAgbGFzdF9maWJlci5rID0gazA7XG4gIGxhc3QuZSA9IGxhc3RfZmliZXI7XG4gIGNvbnRbMl0gPSBsYXN0X2ZpYmVyO1xuICAvLyBNb3ZlIHRvIHBhcmVudCBmaWJlciBhbmQgZXhlY3V0ZSB0aGUgZWZmZWN0IGhhbmRsZXIgdGhlcmVcbiAgLy8gVGhlIGhhbmRsZXIgaXMgZGVmaW5lZCBpbiBTdGRsaWIuRWZmZWN0LCBzbyB3ZSBrbm93IHRoYXQgdGhlIGFyaXR5IG1hdGNoZXNcbiAgdmFyIGsxID0gY2FtbF9wb3BfZmliZXIoKTtcbiAgcmV0dXJuIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgoKVxuICAgID8gY2FtbF9nZXRfY3BzX2Z1bihoYW5kbGVyKShlZmYsIGNvbnQsIGxhc3RfZmliZXIsIGsxKVxuICAgIDogY2FtbF90cmFtcG9saW5lX3JldHVybihoYW5kbGVyLCBbZWZmLCBjb250LCBsYXN0X2ZpYmVyLCBrMV0pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9jcHNfZnVuXG4vL0lmOiBlZmZlY3RzXG4vL0lmOiAhZG91YmxldHJhbnNsYXRlXG5mdW5jdGlvbiBjYW1sX2dldF9jcHNfZnVuKGYpIHtcbiAgcmV0dXJuIGY7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2Nwc19mdW5cbi8vSWY6IGVmZmVjdHNcbi8vSWY6IGRvdWJsZXRyYW5zbGF0ZVxuZnVuY3Rpb24gY2FtbF9nZXRfY3BzX2Z1bihmKSB7XG4gIC8vIFRoaXMgZnVuY3Rpb24gaXMgb25seSB1c2VkIHRvIGdldCB0aGUgZWZmZWN0IGhhbmRsZXIuIElmIHRoZVxuICAvLyBlZmZlY3QgaGFuZGxlciBoYXMgbm8gQ1BTIGZ1bmN0aW9uLCB3ZSBrbm93IHRoYXQgd2UgY2FuIGRpcmVjdGx5XG4gIC8vIGNhbGwgdGhlIGRpcmVjdCB2ZXJzaW9uIGluc3RlYWQuXG4gIHJldHVybiBmLmNwcyA/IGYuY3BzIDogZjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hbGxvY19zdGFja1xuLy9SZXF1aXJlczogY2FtbF9wb3BfZmliZXIsIGNhbWxfY2FsbF9nZW4sIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgsIGNhbWxfdHJhbXBvbGluZV9yZXR1cm5cbi8vUmVxdWlyZXM6IGNhbWxfY2FsbF9nZW5fY3BzLCBjYW1sX2N1cnJlbnRfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX2FsbG9jX3N0YWNrX2NhbGwoZiwgeCkge1xuICB2YXIgYXJncyA9IFt4LCBjYW1sX3BvcF9maWJlcigpXTtcbiAgcmV0dXJuIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgoKVxuICAgID8gY2FtbF9jYWxsX2dlbl9jcHMoZiwgYXJncylcbiAgICA6IGNhbWxfdHJhbXBvbGluZV9yZXR1cm4oZiwgYXJncywgMCk7XG59XG5mdW5jdGlvbiBjYW1sX2FsbG9jX3N0YWNrX2h2YWwoeCkge1xuICAvLyBDYWxsIFtodl0gaW4gdGhlIHBhcmVudCBmaWJlclxuICB2YXIgZiA9IGNhbWxfY3VycmVudF9zdGFjay5oWzFdO1xuICByZXR1cm4gY2FtbF9hbGxvY19zdGFja19jYWxsKGYsIHgpO1xufVxuZnVuY3Rpb24gY2FtbF9hbGxvY19zdGFja19oZXhuKGUpIHtcbiAgLy8gQ2FsbCBbaHhdIGluIHRoZSBwYXJlbnQgZmliZXJcbiAgdmFyIGYgPSBjYW1sX2N1cnJlbnRfc3RhY2suaFsyXTtcbiAgcmV0dXJuIGNhbWxfYWxsb2Nfc3RhY2tfY2FsbChmLCBlKTtcbn1cbmZ1bmN0aW9uIGNhbWxfYWxsb2Nfc3RhY2soaHYsIGh4LCBoZikge1xuICB2YXIgaGFuZGxlcnMgPSBbMCwgaHYsIGh4LCBoZl07XG4gIHJldHVybiB7XG4gICAgazogY2FtbF9hbGxvY19zdGFja19odmFsLFxuICAgIHg6IHsgaDogY2FtbF9hbGxvY19zdGFja19oZXhuLCB0OiAwIH0sXG4gICAgaDogaGFuZGxlcnMsXG4gICAgZTogMCxcbiAgfTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hbGxvY19zdGFja1xuLy9JZjogIWVmZmVjdHNcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX2FsbG9jX3N0YWNrKF9odiwgX2h4LCBfaGYpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Y1xuLy9WZXJzaW9uOiA+PSA1LjBcbmZ1bmN0aW9uIGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Yyhjb250KSB7XG4gIHZhciBzdGFjayA9IGNvbnRbMV07XG4gIGNvbnRbMV0gPSAwO1xuICByZXR1cm4gc3RhY2s7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udGludWF0aW9uX3VzZV9hbmRfdXBkYXRlX2hhbmRsZXJfbm9leGNcbi8vUmVxdWlyZXM6IGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Y1xuLy9WZXJzaW9uOiA+PSA1LjBcbmZ1bmN0aW9uIGNhbWxfY29udGludWF0aW9uX3VzZV9hbmRfdXBkYXRlX2hhbmRsZXJfbm9leGMoXG4gIGNvbnQsXG4gIGh2YWwsXG4gIGhleG4sXG4gIGhlZmYsXG4pIHtcbiAgdmFyIHN0YWNrID0gY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjKGNvbnQpO1xuICBpZiAoc3RhY2sgPT09IDApIHJldHVybiBzdGFjaztcbiAgdmFyIGxhc3QgPSBjb250WzJdO1xuICBsYXN0LmhbMV0gPSBodmFsO1xuICBsYXN0LmhbMl0gPSBoZXhuO1xuICBsYXN0LmhbM10gPSBoZWZmO1xuICByZXR1cm4gc3RhY2s7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2NvbnRpbnVhdGlvbl9jYWxsc3RhY2tcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX2dldF9jb250aW51YXRpb25fY2FsbHN0YWNrKCkge1xuICByZXR1cm4gWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NvbmRpdGlvbl9uZXdcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX21sX2NvbmRpdGlvbl9uZXcoX3VuaXQpIHtcbiAgcmV0dXJuIHsgY29uZGl0aW9uOiAxIH07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY29uZGl0aW9uX3dhaXRcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX21sX2NvbmRpdGlvbl93YWl0KF90LCBfbXV0ZXh0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NvbmRpdGlvbl9icm9hZGNhc3Rcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX21sX2NvbmRpdGlvbl9icm9hZGNhc3QoX3QpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY29uZGl0aW9uX3NpZ25hbFxuLy9WZXJzaW9uOiA+PSA1LjBcbmZ1bmN0aW9uIGNhbWxfbWxfY29uZGl0aW9uX3NpZ25hbChfdCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczoganNvb19lZmZlY3Rfbm90X3N1cHBvcnRlZFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy8hSWY6IGVmZmVjdHNcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBqc29vX2VmZmVjdF9ub3Rfc3VwcG9ydGVkKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiRWZmZWN0IGhhbmRsZXJzIGFyZSBub3Qgc3VwcG9ydGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3Jlc3VtZVxuLy9SZXF1aXJlczpjYW1sX3N0YWNrX2RlcHRoLCBjYW1sX2NhbGxfZ2VuX2NwcywgY2FtbF9jdXJyZW50X3N0YWNrLCBjYW1sX3dyYXBfZXhjZXB0aW9uLCBjYW1sX3Jlc3VtZV9zdGFja1xuLy9JZjogZWZmZWN0c1xuLy9JZjogZG91YmxldHJhbnNsYXRlXG4vL1ZlcnNpb246ID49IDUuMFxuZnVuY3Rpb24gY2FtbF9yZXN1bWUoZiwgYXJnLCBzdGFjaywgbGFzdCkge1xuICB2YXIgc2F2ZWRfc3RhY2tfZGVwdGggPSBjYW1sX3N0YWNrX2RlcHRoO1xuICB2YXIgc2F2ZWRfY3VycmVudF9zdGFjayA9IGNhbWxfY3VycmVudF9zdGFjaztcbiAgdHJ5IHtcbiAgICBjYW1sX2N1cnJlbnRfc3RhY2sgPSB7IGs6IDAsIHg6IDAsIGg6IDAsIGU6IDAgfTtcbiAgICB2YXIgayA9IGNhbWxfcmVzdW1lX3N0YWNrKHN0YWNrLCBsYXN0LCBmdW5jdGlvbiAoeCkge1xuICAgICAgcmV0dXJuIHg7XG4gICAgfSk7XG4gICAgLyogTm90ZTogZiBpcyBub3QgYW4gb3JkaW5hcnkgZnVuY3Rpb24gYnV0IGEgKGRpcmVjdC1zdHlsZSwgQ1BTKSBjbG9zdXJlIHBhaXIgKi9cbiAgICB2YXIgcmVzID0geyBqb29fdHJhbXA6IGYsIGpvb19hcmdzOiBbYXJnLCBrXSwgam9vX2RpcmVjdDogMCB9O1xuICAgIGRvIHtcbiAgICAgIC8qIEF2b2lkcyB0cmFtcG9saW5pbmcgdG9vIG9mdGVuIHdoaWxlIHN0aWxsIGF2b2lkaW5nIHN0YWNrIG92ZXJmbG93LiBTZWVcbiAgICAgICAgIFtjYW1sX2NhbGxiYWNrXS4gKi9cbiAgICAgIGNhbWxfc3RhY2tfZGVwdGggPSA0MDtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJlcyA9IHJlcy5qb29fZGlyZWN0XG4gICAgICAgICAgPyByZXMuam9vX3RyYW1wLmFwcGx5KG51bGwsIHJlcy5qb29fYXJncylcbiAgICAgICAgICA6IGNhbWxfY2FsbF9nZW5fY3BzKHJlcy5qb29fdHJhbXAsIHJlcy5qb29fYXJncyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8qIEhhbmRsZSBleGNlcHRpb24gY29taW5nIGZyb20gSmF2YVNjcmlwdCBvciBmcm9tIHRoZSBydW50aW1lLiAqL1xuICAgICAgICBpZiAoIWNhbWxfY3VycmVudF9zdGFjay54KSB0aHJvdyBlO1xuICAgICAgICB2YXIgaGFuZGxlciA9IGNhbWxfY3VycmVudF9zdGFjay54Lmg7XG4gICAgICAgIGNhbWxfY3VycmVudF9zdGFjay54ID0gY2FtbF9jdXJyZW50X3N0YWNrLngudDtcbiAgICAgICAgcmVzID0ge1xuICAgICAgICAgIGpvb190cmFtcDogaGFuZGxlcixcbiAgICAgICAgICBqb29fYXJnczogW2NhbWxfd3JhcF9leGNlcHRpb24oZSldLFxuICAgICAgICAgIGpvb19kaXJlY3Q6IDEsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSB3aGlsZSAocmVzPy5qb29fYXJncyk7XG4gICAgcmV0dXJuIHJlcztcbiAgfSBmaW5hbGx5IHtcbiAgICBjYW1sX3N0YWNrX2RlcHRoID0gc2F2ZWRfc3RhY2tfZGVwdGg7XG4gICAgY2FtbF9jdXJyZW50X3N0YWNrID0gc2F2ZWRfY3VycmVudF9zdGFjaztcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Nwc19jbG9zdXJlXG4vL0lmOiBlZmZlY3RzXG4vL0lmOiBkb3VibGV0cmFuc2xhdGVcbmZ1bmN0aW9uIGNhbWxfY3BzX2Nsb3N1cmUoZGlyZWN0X2YsIGNwc19mKSB7XG4gIGRpcmVjdF9mLmNwcyA9IGNwc19mO1xuICByZXR1cm4gZGlyZWN0X2Y7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXNzdW1lX25vX3BlcmZvcm1cbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbi8vSWY6IGVmZmVjdHNcbi8vSWY6ICFkb3VibGV0cmFuc2xhdGVcbmZ1bmN0aW9uIGNhbWxfYXNzdW1lX25vX3BlcmZvcm0oZikge1xuICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBbMF0pO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBBcnJheVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X3N1YiBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2FycmF5X3N1YihhLCBpLCBsZW4pIHtcbiAgdmFyIGEyID0gbmV3IEFycmF5KGxlbiArIDEpO1xuICBhMlswXSA9IDA7XG4gIGZvciAodmFyIGkyID0gMSwgaTEgPSBpICsgMTsgaTIgPD0gbGVuOyBpMisrLCBpMSsrKSB7XG4gICAgYTJbaTJdID0gYVtpMV07XG4gIH1cbiAgcmV0dXJuIGEyO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0YXJyYXlfc3ViIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfc3ViXG4vL1ZlcnNpb246ID49IDUuM1xuZnVuY3Rpb24gY2FtbF9mbG9hdGFycmF5X3N1YihhLCBpLCBsZW4pIHtcbiAgcmV0dXJuIGNhbWxfYXJyYXlfc3ViKGEsIGksIGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5pZm9ybV9hcnJheV9zdWIgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9zdWJcbi8vVmVyc2lvbjogPj0gNS4zXG5mdW5jdGlvbiBjYW1sX3VuaWZvcm1fYXJyYXlfc3ViKGEsIGksIGxlbikge1xuICByZXR1cm4gY2FtbF9hcnJheV9zdWIoYSwgaSwgbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9hcHBlbmQgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9hcnJheV9hcHBlbmQoYTEsIGEyKSB7XG4gIHZhciBsMSA9IGExLmxlbmd0aCxcbiAgICBsMiA9IGEyLmxlbmd0aDtcbiAgdmFyIGwgPSBsMSArIGwyIC0gMTtcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGFbMF0gPSAwO1xuICB2YXIgaSA9IDEsXG4gICAgaiA9IDE7XG4gIGZvciAoOyBpIDwgbDE7IGkrKykgYVtpXSA9IGExW2ldO1xuICBmb3IgKDsgaSA8IGw7IGkrKywgaisrKSBhW2ldID0gYTJbal07XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0YXJyYXlfYXBwZW5kIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYXBwZW5kXG4vL1ZlcnNpb246ID49IDUuM1xuZnVuY3Rpb24gY2FtbF9mbG9hdGFycmF5X2FwcGVuZChhMSwgYTIpIHtcbiAgcmV0dXJuIGNhbWxfYXJyYXlfYXBwZW5kKGExLCBhMik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5pZm9ybV9hcnJheV9hcHBlbmQgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9hcHBlbmRcbi8vVmVyc2lvbjogPj0gNS4zXG5mdW5jdGlvbiBjYW1sX3VuaWZvcm1fYXJyYXlfYXBwZW5kKGExLCBhMikge1xuICByZXR1cm4gY2FtbF9hcnJheV9hcHBlbmQoYTEsIGEyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9jb25jYXQgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9hcnJheV9jb25jYXQobCkge1xuICB2YXIgYSA9IFswXTtcbiAgd2hpbGUgKGwgIT09IDApIHtcbiAgICB2YXIgYiA9IGxbMV07XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBiLmxlbmd0aDsgaSsrKSBhLnB1c2goYltpXSk7XG4gICAgbCA9IGxbMl07XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRhcnJheV9jb25jYXQgbXV0YWJsZVxuLy9WZXJzaW9uOiA+PSA1LjRcbmZ1bmN0aW9uIGNhbWxfZmxvYXRhcnJheV9jb25jYXQobCkge1xuICB2YXIgYSA9IFswXTtcbiAgd2hpbGUgKGwgIT09IDApIHtcbiAgICB2YXIgYiA9IGxbMV07XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBiLmxlbmd0aDsgaSsrKSBhLnB1c2goYltpXSk7XG4gICAgbCA9IGxbMl07XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5pZm9ybV9hcnJheV9jb25jYXQgbXV0YWJsZVxuLy9WZXJzaW9uOiA+PSA1LjRcbmZ1bmN0aW9uIGNhbWxfdW5pZm9ybV9hcnJheV9jb25jYXQobCkge1xuICB2YXIgYSA9IFswXTtcbiAgd2hpbGUgKGwgIT09IDApIHtcbiAgICB2YXIgYiA9IGxbMV07XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBiLmxlbmd0aDsgaSsrKSBhLnB1c2goYltpXSk7XG4gICAgbCA9IGxbMl07XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfYmxpdFxuZnVuY3Rpb24gY2FtbF9hcnJheV9ibGl0KGExLCBpMSwgYTIsIGkyLCBsZW4pIHtcbiAgaWYgKGkyIDw9IGkxKSB7XG4gICAgZm9yICh2YXIgaiA9IDE7IGogPD0gbGVuOyBqKyspIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGogPSBsZW47IGogPj0gMTsgai0tKSBhMltpMiArIGpdID0gYTFbaTEgKyBqXTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X2JsaXRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYmxpdFxuZnVuY3Rpb24gY2FtbF9mbG9hdGFycmF5X2JsaXQoYTEsIGkxLCBhMiwgaTIsIGxlbikge1xuICByZXR1cm4gY2FtbF9hcnJheV9ibGl0KGExLCBpMSwgYTIsIGkyLCBsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaWZvcm1fYXJyYXlfYmxpdFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ibGl0XG4vL1ZlcnNpb246ID49IDUuM1xuZnVuY3Rpb24gY2FtbF91bmlmb3JtX2FycmF5X2JsaXQoYTEsIGkxLCBhMiwgaTIsIGxlbikge1xuICByZXR1cm4gY2FtbF9hcnJheV9ibGl0KGExLCBpMSwgYTIsIGkyLCBsZW4pO1xufVxuXG4vLy8vLy8vLy8vLy8vIFBlcnZhc2l2ZVxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9zZXQgKG11dGFibGUsIGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9BbGlhczogY2FtbF9hcnJheV9zZXRfZmxvYXRcbi8vQWxpYXM6IGNhbWxfZmxvYXRhcnJheV9zZXRcbi8vQWxpYXM6IGNhbWxfYXJyYXlfc2V0X2FkZHJcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfc2V0KGFycmF5LCBpbmRleCwgbmV3dmFsKSB7XG4gIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gYXJyYXkubGVuZ3RoIC0gMSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICBhcnJheVtpbmRleCArIDFdID0gbmV3dmFsO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9nZXQgbXV0YWJsZSAobXV0YWJsZSwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL0FsaWFzOiBjYW1sX2FycmF5X2dldF9mbG9hdFxuLy9BbGlhczogY2FtbF9mbG9hdGFycmF5X2dldFxuLy9BbGlhczogY2FtbF9hcnJheV9nZXRfYWRkclxuZnVuY3Rpb24gY2FtbF9hcnJheV9nZXQoYXJyYXksIGluZGV4KSB7XG4gIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gYXJyYXkubGVuZ3RoIC0gMSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gYXJyYXlbaW5kZXggKyAxXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9maWxsXG5mdW5jdGlvbiBjYW1sX2FycmF5X2ZpbGwoYXJyYXksIG9mcywgbGVuLCB2KSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBhcnJheVtvZnMgKyBpICsgMV0gPSB2O1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0YXJyYXlfZmlsbFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9maWxsXG4vL1ZlcnNpb246ID49IDUuM1xuZnVuY3Rpb24gY2FtbF9mbG9hdGFycmF5X2ZpbGwoYXJyYXksIG9mcywgbGVuLCB2KSB7XG4gIHJldHVybiBjYW1sX2FycmF5X2ZpbGwoYXJyYXksIG9mcywgbGVuLCB2KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X2ZpbGxfdW5ib3hlZFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9maWxsXG4vL1ZlcnNpb246ID49IDUuM1xuZnVuY3Rpb24gY2FtbF9mbG9hdGFycmF5X2ZpbGxfdW5ib3hlZChhcnJheSwgb2ZzLCBsZW4sIHYpIHtcbiAgcmV0dXJuIGNhbWxfYXJyYXlfZmlsbChhcnJheSwgb2ZzLCBsZW4sIHYpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaWZvcm1fYXJyYXlfZmlsbFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9maWxsXG4vL1ZlcnNpb246ID49IDUuM1xuZnVuY3Rpb24gY2FtbF91bmlmb3JtX2FycmF5X2ZpbGwoYXJyYXksIG9mcywgbGVuLCB2KSB7XG4gIHJldHVybiBjYW1sX2FycmF5X2ZpbGwoYXJyYXksIG9mcywgbGVuLCB2KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jaGVja19ib3VuZCAobXV0YWJsZSwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL0FsaWFzOiBjYW1sX2NoZWNrX2JvdW5kX2dlblxuLy9BbGlhczogY2FtbF9jaGVja19ib3VuZF9mbG9hdFxuZnVuY3Rpb24gY2FtbF9jaGVja19ib3VuZChhcnJheSwgaW5kZXgpIHtcbiAgaWYgKGluZGV4ID4+PiAwID49IGFycmF5Lmxlbmd0aCAtIDEpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGFycmF5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X21ha2UgY29uc3QgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9hcnJheV9tYWtlKGxlbiwgaW5pdCkge1xuICBpZiAobGVuID4+PiAwID49ICgoMHg3ZmZmZmZmZiAvIDQpIHwgMCkpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGxlbiA9IChsZW4gKyAxKSB8IDA7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbik7XG4gIGJbMF0gPSAwO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGxlbjsgaSsrKSBiW2ldID0gaW5pdDtcbiAgcmV0dXJuIGI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFrZV92ZWN0IGNvbnN0IChjb25zdCwgbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfbWFrZVxuZnVuY3Rpb24gY2FtbF9tYWtlX3ZlY3QobGVuLCBpbml0KSB7XG4gIHJldHVybiBjYW1sX2FycmF5X21ha2UobGVuLCBpbml0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYWtlX2Zsb2F0X3ZlY3QgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9tYWtlX2Zsb2F0X3ZlY3QobGVuKSB7XG4gIGlmIChsZW4gPj4+IDAgPj0gKCgweDdmZmZmZmZmIC8gOCkgfCAwKSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgbGVuID0gKGxlbiArIDEpIHwgMDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKTtcbiAgYlswXSA9IDI1NDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBsZW47IGkrKykgYltpXSA9IDA7XG4gIHJldHVybiBiO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2NyZWF0ZV9mbG9hdCBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1ZlcnNpb246ID49IDUuM1xuZnVuY3Rpb24gY2FtbF9hcnJheV9jcmVhdGVfZmxvYXQobGVuKSB7XG4gIGlmIChsZW4gPj4+IDAgPj0gKCgweDdmZmZmZmZmIC8gOCkgfCAwKSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgbGVuID0gKGxlbiArIDEpIHwgMDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKTtcbiAgYlswXSA9IDI1NDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBsZW47IGkrKykgYltpXSA9IDA7XG4gIHJldHVybiBiO1xufVxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X2NyZWF0ZSBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlKGxlbikge1xuICBpZiAobGVuID4+PiAwID49ICgoMHg3ZmZmZmZmZiAvIDgpIHwgMCkpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGxlbiA9IChsZW4gKyAxKSB8IDA7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbik7XG4gIGJbMF0gPSAyNTQ7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuOyBpKyspIGJbaV0gPSAwO1xuICByZXR1cm4gYjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X21ha2UgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9WZXJzaW9uOiA+PSA1LjNcbmZ1bmN0aW9uIGNhbWxfZmxvYXRhcnJheV9tYWtlKGxlbiwgaW5pdCkge1xuICBpZiAobGVuID4+PiAwID49ICgoMHg3ZmZmZmZmZiAvIDgpIHwgMCkpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGxlbiA9IChsZW4gKyAxKSB8IDA7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbik7XG4gIGJbMF0gPSAyNTQ7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuOyBpKyspIGJbaV0gPSBpbml0O1xuICByZXR1cm4gYjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X21ha2VfdW5ib3hlZCBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2Zsb2F0YXJyYXlfbWFrZVxuLy9WZXJzaW9uOiA+PSA1LjNcbmZ1bmN0aW9uIGNhbWxfZmxvYXRhcnJheV9tYWtlX3VuYm94ZWQobGVuLCBpbml0KSB7XG4gIHJldHVybiBjYW1sX2Zsb2F0YXJyYXlfbWFrZShsZW4sIGluaXQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaWZvcm1fYXJyYXlfbWFrZSBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X21ha2Vcbi8vVmVyc2lvbjogPj0gNS4zXG5mdW5jdGlvbiBjYW1sX3VuaWZvcm1fYXJyYXlfbWFrZShsZW4sIGluaXQpIHtcbiAgcmV0dXJuIGNhbWxfYXJyYXlfbWFrZShsZW4sIGluaXQpO1xufVxuIiwiLy9Qcm92aWRlczogY2FtbF9kb21haW5fZGxzXG4vL1ZlcnNpb246ID49IDVcbnZhciBjYW1sX2RvbWFpbl9kbHMgPSBbMF07XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2Rsc19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2Rsc1xuLy9WZXJzaW9uOiA+PSA1XG5mdW5jdGlvbiBjYW1sX2RvbWFpbl9kbHNfc2V0KGEpIHtcbiAgY2FtbF9kb21haW5fZGxzID0gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5fZGxzX2NvbXBhcmVfYW5kX3NldFxuLy9SZXF1aXJlczogY2FtbF9kb21haW5fZGxzXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9kb21haW5fZGxzX2NvbXBhcmVfYW5kX3NldChvbGQsIG4pIHtcbiAgaWYgKGNhbWxfZG9tYWluX2RscyAhPT0gb2xkKSByZXR1cm4gMDtcbiAgY2FtbF9kb21haW5fZGxzID0gbjtcbiAgcmV0dXJuIDE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2Rsc19nZXRcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2Rsc1xuLy9WZXJzaW9uOiA+PSA1XG5mdW5jdGlvbiBjYW1sX2RvbWFpbl9kbHNfZ2V0KF91bml0KSB7XG4gIHJldHVybiBjYW1sX2RvbWFpbl9kbHM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2xvYWRcbi8vVmVyc2lvbjogPj0gNVxuZnVuY3Rpb24gY2FtbF9hdG9taWNfbG9hZChyZWYpIHtcbiAgcmV0dXJuIHJlZlsxXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfbG9hZF9maWVsZFxuLy9WZXJzaW9uOiA+PSA1LjRcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX2xvYWRfZmllbGQoYiwgaSkge1xuICByZXR1cm4gYltpICsgMV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2Nhc1xuLy9WZXJzaW9uOiA+PSA1XG5mdW5jdGlvbiBjYW1sX2F0b21pY19jYXMocmVmLCBvLCBuKSB7XG4gIGlmIChyZWZbMV0gPT09IG8pIHtcbiAgICByZWZbMV0gPSBuO1xuICAgIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19jYXNfZmllbGRcbi8vVmVyc2lvbjogPj0gNS40XG5mdW5jdGlvbiBjYW1sX2F0b21pY19jYXNfZmllbGQoYiwgaSwgbywgbikge1xuICBpZiAoYltpICsgMV0gPT09IG8pIHtcbiAgICBiW2kgKyAxXSA9IG47XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2ZldGNoX2FkZFxuLy9WZXJzaW9uOiA+PSA1XG5mdW5jdGlvbiBjYW1sX2F0b21pY19mZXRjaF9hZGQocmVmLCBpKSB7XG4gIHZhciBvbGQgPSByZWZbMV07XG4gIHJlZlsxXSArPSBpO1xuICByZXR1cm4gb2xkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19mZXRjaF9hZGRfZmllbGRcbi8vVmVyc2lvbjogPj0gNS40XG5mdW5jdGlvbiBjYW1sX2F0b21pY19mZXRjaF9hZGRfZmllbGQoYiwgaSwgbikge1xuICB2YXIgb2xkID0gYltpICsgMV07XG4gIGJbaSArIDFdICs9IG47XG4gIHJldHVybiBvbGQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2V4Y2hhbmdlXG4vL1ZlcnNpb246ID49IDVcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX2V4Y2hhbmdlKHJlZiwgdikge1xuICB2YXIgciA9IHJlZlsxXTtcbiAgcmVmWzFdID0gdjtcbiAgcmV0dXJuIHI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2V4Y2hhbmdlX2ZpZWxkXG4vL1ZlcnNpb246ID49IDUuNFxuZnVuY3Rpb24gY2FtbF9hdG9taWNfZXhjaGFuZ2VfZmllbGQoYiwgaSwgdikge1xuICB2YXIgciA9IGJbaSArIDFdO1xuICBiW2kgKyAxXSA9IHY7XG4gIHJldHVybiByO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19tYWtlX2NvbnRlbmRlZFxuLy9WZXJzaW9uOiA+PSA1LjJcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkKGEpIHtcbiAgcmV0dXJuIFswLCBhXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuXG4vL1ZlcnNpb246ID49IDUuMCwgPCA1LjJcbnZhciBjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW5fID0gWzBdO1xuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuKF91bml0KSB7XG4gIHJldHVybiBjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW5fO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudFxuLy9WZXJzaW9uOiA+PSA1XG5mdW5jdGlvbiBjYW1sX3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudChfdW5pdCkge1xuICByZXR1cm4gMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kb21haW5faW5kZXhcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2lkXG4vL1ZlcnNpb246ID49IDUuMDNcbmZ1bmN0aW9uIGNhbWxfbWxfZG9tYWluX2luZGV4KF91bml0KSB7XG4gIHJldHVybiBjYW1sX2RvbWFpbl9pZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5faWRcbi8vVmVyc2lvbjogPj0gNVxudmFyIGNhbWxfZG9tYWluX2lkID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5fc3Bhd25cbi8vUmVxdWlyZXM6IGNhbWxfbWxfbXV0ZXhfdW5sb2NrXG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9pZFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuLy9WZXJzaW9uOiA+PSA1LjJcbnZhciBjYW1sX2RvbWFpbl9sYXRlc3RfaWR4ID0gMTtcbmZ1bmN0aW9uIGNhbWxfZG9tYWluX3NwYXduKGYsIHRlcm1fc3luYykge1xuICB2YXIgaWQgPSBjYW1sX2RvbWFpbl9sYXRlc3RfaWR4Kys7XG4gIHZhciBvbGQgPSBjYW1sX2RvbWFpbl9pZDtcbiAgY2FtbF9kb21haW5faWQgPSBpZDtcbiAgdmFyIHJlcyA9IGNhbWxfY2FsbGJhY2soZiwgWzBdKTtcbiAgY2FtbF9kb21haW5faWQgPSBvbGQ7XG4gIGNhbWxfbWxfbXV0ZXhfdW5sb2NrKHRlcm1fc3luY1syXSk7XG4gIC8vVE9ETzogZml4IGV4biBjYXNlXG4gIHRlcm1fc3luY1sxXSA9IFswLCBbMCwgcmVzXV07XG4gIHJldHVybiBpZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5fc3Bhd25cbi8vUmVxdWlyZXM6IGNhbWxfbWxfbXV0ZXhfdW5sb2NrXG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9pZFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuLy9WZXJzaW9uOiA+PSA1LjAsIDwgNS4yXG52YXIgY2FtbF9kb21haW5fbGF0ZXN0X2lkeCA9IDE7XG5mdW5jdGlvbiBjYW1sX2RvbWFpbl9zcGF3bihmLCBtdXRleCkge1xuICB2YXIgaWQgPSBjYW1sX2RvbWFpbl9sYXRlc3RfaWR4Kys7XG4gIHZhciBvbGQgPSBjYW1sX2RvbWFpbl9pZDtcbiAgY2FtbF9kb21haW5faWQgPSBpZDtcbiAgdmFyIF9yZXMgPSBjYW1sX2NhbGxiYWNrKGYsIFswXSk7XG4gIGNhbWxfZG9tYWluX2lkID0gb2xkO1xuICBjYW1sX21sX211dGV4X3VubG9jayhtdXRleCk7XG4gIHJldHVybiBpZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kb21haW5faWRcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2lkXG4vL1ZlcnNpb246ID49IDUuMFxuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5faWQoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfZG9tYWluX2lkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RvbWFpbl9jcHVfcmVsYXhcbi8vVmVyc2lvbjogPj0gNVxuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5fY3B1X3JlbGF4KF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9mb3JtYXRfaW50IGNvbnN0IChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX2Zvcm1hdCwgY2FtbF9maW5pc2hfZm9ybWF0dGluZywgY2FtbF9zdHJfcmVwZWF0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL0FsaWFzOiBjYW1sX2ludDMyX2Zvcm1hdFxuLy9BbGlhczogY2FtbF9uYXRpdmVpbnRfZm9ybWF0XG5mdW5jdGlvbiBjYW1sX2Zvcm1hdF9pbnQoZm10LCBpKSB7XG4gIGlmIChjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGZtdCkgPT09IFwiJWRcIilcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiICsgaSk7XG4gIHZhciBmID0gY2FtbF9wYXJzZV9mb3JtYXQoZm10KTtcbiAgaWYgKGkgPCAwKSB7XG4gICAgaWYgKGYuc2lnbmVkY29udikge1xuICAgICAgZi5zaWduID0gLTE7XG4gICAgICBpID0gLWk7XG4gICAgfSBlbHNlIGkgPj4+PSAwO1xuICB9XG4gIHZhciBzID0gaS50b1N0cmluZyhmLmJhc2UpO1xuICBpZiAoZi5wcmVjID49IDApIHtcbiAgICBmLmZpbGxlciA9IFwiIFwiO1xuICAgIHZhciBuID0gZi5wcmVjIC0gcy5sZW5ndGg7XG4gICAgaWYgKG4gPiAwKSBzID0gY2FtbF9zdHJfcmVwZWF0KG4sIFwiMFwiKSArIHM7XG4gIH1cbiAgcmV0dXJuIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2Uocykge1xuICB2YXIgaSA9IDAsXG4gICAgbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpLFxuICAgIGJhc2UgPSAxMCxcbiAgICBzaWduID0gMSxcbiAgICBzaWduZWRuZXNzID0gMTtcbiAgaWYgKGxlbiA+IDApIHtcbiAgICBzd2l0Y2ggKGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSkpIHtcbiAgICAgIGNhc2UgNDU6XG4gICAgICAgIGkrKztcbiAgICAgICAgc2lnbiA9IC0xO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNDM6XG4gICAgICAgIGkrKztcbiAgICAgICAgc2lnbiA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAoaSArIDEgPCBsZW4gJiYgY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKSA9PT0gNDgpXG4gICAgc3dpdGNoIChjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkgKyAxKSkge1xuICAgICAgY2FzZSAxMjA6XG4gICAgICBjYXNlIDg4OlxuICAgICAgICBzaWduZWRuZXNzID0gMDtcbiAgICAgICAgYmFzZSA9IDE2O1xuICAgICAgICBpICs9IDI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMTE6XG4gICAgICBjYXNlIDc5OlxuICAgICAgICBzaWduZWRuZXNzID0gMDtcbiAgICAgICAgYmFzZSA9IDg7XG4gICAgICAgIGkgKz0gMjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDk4OlxuICAgICAgY2FzZSA2NjpcbiAgICAgICAgc2lnbmVkbmVzcyA9IDA7XG4gICAgICAgIGJhc2UgPSAyO1xuICAgICAgICBpICs9IDI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMTc6XG4gICAgICBjYXNlIDg1OlxuICAgICAgICBzaWduZWRuZXNzID0gMDtcbiAgICAgICAgaSArPSAyO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIHJldHVybiBbaSwgc2lnbiwgYmFzZSwgc2lnbmVkbmVzc107XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2VfZGlnaXRcbmZ1bmN0aW9uIGNhbWxfcGFyc2VfZGlnaXQoYykge1xuICBpZiAoYyA+PSA0OCAmJiBjIDw9IDU3KSByZXR1cm4gYyAtIDQ4O1xuICBpZiAoYyA+PSA2NSAmJiBjIDw9IDkwKSByZXR1cm4gYyAtIDU1O1xuICBpZiAoYyA+PSA5NyAmJiBjIDw9IDEyMikgcmV0dXJuIGMgLSA4NztcbiAgcmV0dXJuIC0xO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludF9vZl9zdHJpbmcgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UsIGNhbWxfcGFyc2VfZGlnaXQsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IGNhbWxfaW50MzJfb2Zfc3RyaW5nXG4vL0FsaWFzOiBjYW1sX25hdGl2ZWludF9vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfaW50X29mX3N0cmluZyhzKSB7XG4gIHZhciByID0gY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlKHMpO1xuICB2YXIgaSA9IHJbMF0sXG4gICAgc2lnbiA9IHJbMV0sXG4gICAgYmFzZSA9IHJbMl0sXG4gICAgc2lnbmVkbmVzcyA9IHJbM107XG4gIHZhciBsZW4gPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocyk7XG4gIHZhciB0aHJlc2hvbGQgPSAtMSA+Pj4gMDtcbiAgdmFyIGMgPSBpIDwgbGVuID8gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKSA6IDA7XG4gIHZhciBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIHZhciByZXMgPSBkO1xuICBmb3IgKGkrKzsgaSA8IGxlbjsgaSsrKSB7XG4gICAgYyA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk7XG4gICAgaWYgKGMgPT09IDk1KSBjb250aW51ZTtcbiAgICBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBicmVhaztcbiAgICByZXMgPSBiYXNlICogcmVzICsgZDtcbiAgICBpZiAocmVzID4gdGhyZXNob2xkKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgfVxuICBpZiAoaSAhPT0gbGVuKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgLy8gRm9yIGJhc2UgZGlmZmVyZW50IGZyb20gMTAsIHdlIGV4cGVjdCBhbiB1bnNpZ25lZCByZXByZXNlbnRhdGlvbixcbiAgLy8gaGVuY2UgYW55IHZhbHVlIG9mICdyZXMnIChsZXNzIHRoYW4gJ3RocmVzaG9sZCcpIGlzIGFjY2VwdGFibGUuXG4gIC8vIEJ1dCB3ZSBoYXZlIHRvIGNvbnZlcnQgdGhlIHJlc3VsdCBiYWNrIHRvIGEgc2lnbmVkIGludGVnZXIuXG4gIHJlcyA9IHNpZ24gKiByZXM7XG4gIGlmIChzaWduZWRuZXNzICYmIChyZXMgfCAwKSAhPT0gcmVzKVxuICAgIC8qIFNpZ25lZCByZXByZXNlbnRhdGlvbiBleHBlY3RlZCwgYWxsb3cgLTJeKG5iaXRzLTEpIHRvIDJeKG5iaXRzLTEpIC0gMSAqL1xuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICByZXR1cm4gcmVzIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tdWwgY29uc3Rcbi8vQWxpYXM6IGNhbWxfaW50MzJfbXVsXG4vL0FsaWFzOiBjYW1sX25hdGl2ZWludF9tdWxcbi8vQWxpYXM6ICVpbnRfbXVsXG5mdW5jdGlvbiBjYW1sX211bChhLCBiKSB7XG4gIHJldHVybiBNYXRoLmltdWwoYSwgYik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZGl2XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG4vL0FsaWFzOiBjYW1sX2ludDMyX2RpdlxuLy9BbGlhczogY2FtbF9uYXRpdmVpbnRfZGl2XG4vL0FsaWFzOiAlaW50X2RpdlxuZnVuY3Rpb24gY2FtbF9kaXYoeCwgeSkge1xuICBpZiAoeSA9PT0gMCkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSgpO1xuICByZXR1cm4gKHggLyB5KSB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbW9kXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG4vL0FsaWFzOiBjYW1sX2ludDMyX21vZFxuLy9BbGlhczogY2FtbF9uYXRpdmVpbnRfbW9kXG4vL0FsaWFzOiAlaW50X21vZFxuZnVuY3Rpb24gY2FtbF9tb2QoeCwgeSkge1xuICBpZiAoeSA9PT0gMCkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSgpO1xuICByZXR1cm4geCAlIHk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnN3YXAxNiBjb25zdFxuZnVuY3Rpb24gY2FtbF9ic3dhcDE2KHgpIHtcbiAgcmV0dXJuICgoeCAmIDB4MDBmZikgPDwgOCkgfCAoKHggJiAweGZmMDApID4+IDgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX2Jzd2FwIGNvbnN0XG4vL0FsaWFzOiBjYW1sX25hdGl2ZWludF9ic3dhcFxuZnVuY3Rpb24gY2FtbF9pbnQzMl9ic3dhcCh4KSB7XG4gIHJldHVybiAoXG4gICAgKCh4ICYgMHgwMDAwMDBmZikgPDwgMjQpIHxcbiAgICAoKHggJiAweDAwMDBmZjAwKSA8PCA4KSB8XG4gICAgKCh4ICYgMHgwMGZmMDAwMCkgPj4+IDgpIHxcbiAgICAoKHggJiAweGZmMDAwMDAwKSA+Pj4gMjQpXG4gICk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2Jzd2FwIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzLCBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ludDY0X2Jzd2FwKHgpIHtcbiAgdmFyIHkgPSBjYW1sX2ludDY0X3RvX2J5dGVzKHgpO1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhbeVs3XSwgeVs2XSwgeVs1XSwgeVs0XSwgeVszXSwgeVsyXSwgeVsxXSwgeVswXV0pO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBIYXNodGJsXG5cbi8vZnVuY3Rpb24gUk9UTDMyKHgsbikgeyByZXR1cm4gKCh4IDw8IG4pIHwgKHggPj4+ICgzMi1uKSkpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2ludFxuLy9SZXF1aXJlczogY2FtbF9tdWxcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfaW50KGgsIGQpIHtcbiAgZCA9IGNhbWxfbXVsKGQsIDB4Y2M5ZTJkNTEgfCAwKTtcbiAgZCA9IChkIDw8IDE1KSB8IChkID4+PiAoMzIgLSAxNSkpOyAvLyBST1RMMzIoZCwgMTUpO1xuICBkID0gY2FtbF9tdWwoZCwgMHgxYjg3MzU5Myk7XG4gIGggXj0gZDtcbiAgaCA9IChoIDw8IDEzKSB8IChoID4+PiAoMzIgLSAxMykpOyAvL1JPVEwzMihoLCAxMyk7XG4gIHJldHVybiAoKChoICsgKGggPDwgMikpIHwgMCkgKyAoMHhlNjU0NmI2NCB8IDApKSB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfZmluYWxcbi8vUmVxdWlyZXM6IGNhbWxfbXVsXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2ZpbmFsKGgpIHtcbiAgaCBePSBoID4+PiAxNjtcbiAgaCA9IGNhbWxfbXVsKGgsIDB4ODVlYmNhNmIgfCAwKTtcbiAgaCBePSBoID4+PiAxMztcbiAgaCA9IGNhbWxfbXVsKGgsIDB4YzJiMmFlMzUgfCAwKTtcbiAgaCBePSBoID4+PiAxNjtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfZmxvYXRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfbG8zMiwgY2FtbF9pbnQ2NF9oaTMyXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2Zsb2F0KGhhc2gsIHYwKSB7XG4gIHZhciBpNjQgPSBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQodjApO1xuICB2YXIgbCA9IGNhbWxfaW50NjRfbG8zMihpNjQpO1xuICB2YXIgaCA9IGNhbWxfaW50NjRfaGkzMihpNjQpO1xuICAvKiBOb3JtYWxpemUgTmFOcyAqL1xuICBpZiAoKGggJiAweDdmZjAwMDAwKSA9PT0gMHg3ZmYwMDAwMCAmJiAobCB8IChoICYgMHhmZmZmZikpICE9PSAwKSB7XG4gICAgaCA9IDB4N2ZmMDAwMDA7XG4gICAgbCA9IDB4MDAwMDAwMDE7XG4gIH0gZWxzZSBpZiAoaCA9PT0gKDB4ODAwMDAwMDAgfCAwKSAmJiBsID09PSAwKSB7XG4gICAgLyogTm9ybWFsaXplIC0wIGludG8gKzAgKi9cbiAgICAvLyBUaGlzIGNvZGUgcGF0aCBpcyBub3QgdXNlZCBieSBjYW1sX2hhc2ggYmVjYXVzZSAwIGFuZCAtMCBsb29rXG4gICAgLy8gbGlrZSBpbnRlZ2Vyc1xuICAgIGggPSAwO1xuICB9XG4gIGhhc2ggPSBjYW1sX2hhc2hfbWl4X2ludChoYXNoLCBsKTtcbiAgaGFzaCA9IGNhbWxfaGFzaF9taXhfaW50KGhhc2gsIGgpO1xuICByZXR1cm4gaGFzaDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfaW50NjRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2xvMzIsIGNhbWxfaW50NjRfaGkzMlxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9pbnQ2NChoLCB2KSB7XG4gIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBjYW1sX2ludDY0X2xvMzIodikpO1xuICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgY2FtbF9pbnQ2NF9oaTMyKHYpKTtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfanNieXRlcyhoLCBzKSB7XG4gIHZhciBsZW4gPSBzLmxlbmd0aCxcbiAgICBpLFxuICAgIHc7XG4gIGZvciAoaSA9IDA7IGkgKyA0IDw9IGxlbjsgaSArPSA0KSB7XG4gICAgdyA9XG4gICAgICBzLmNoYXJDb2RlQXQoaSkgfFxuICAgICAgKHMuY2hhckNvZGVBdChpICsgMSkgPDwgOCkgfFxuICAgICAgKHMuY2hhckNvZGVBdChpICsgMikgPDwgMTYpIHxcbiAgICAgIChzLmNoYXJDb2RlQXQoaSArIDMpIDw8IDI0KTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIH1cbiAgdyA9IDA7XG4gIHN3aXRjaCAobGVuICYgMykge1xuICAgIGNhc2UgMzpcbiAgICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9GYWxsdGhyb3VnaFN3aXRjaENsYXVzZTpcbiAgICAgIHcgPSBzLmNoYXJDb2RlQXQoaSArIDIpIDw8IDE2O1xuICAgIC8vIGZhbGx0aHJvdWdoXG4gICAgY2FzZSAyOlxuICAgICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0ZhbGx0aHJvdWdoU3dpdGNoQ2xhdXNlOlxuICAgICAgdyB8PSBzLmNoYXJDb2RlQXQoaSArIDEpIDw8IDg7XG4gICAgLy8gZmFsbHRocm91Z2hcbiAgICBjYXNlIDE6XG4gICAgICB3IHw9IHMuY2hhckNvZGVBdChpKTtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgfVxuICBoIF49IGxlbjtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9ieXRlc19hcnIoaCwgcykge1xuICB2YXIgbGVuID0gcy5sZW5ndGgsXG4gICAgaSxcbiAgICB3O1xuICBmb3IgKGkgPSAwOyBpICsgNCA8PSBsZW47IGkgKz0gNCkge1xuICAgIHcgPSBzW2ldIHwgKHNbaSArIDFdIDw8IDgpIHwgKHNbaSArIDJdIDw8IDE2KSB8IChzW2kgKyAzXSA8PCAyNCk7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICB9XG4gIHcgPSAwO1xuICBzd2l0Y2ggKGxlbiAmIDMpIHtcbiAgICBjYXNlIDM6XG4gICAgICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRmFsbHRocm91Z2hTd2l0Y2hDbGF1c2U6XG4gICAgICB3ID0gc1tpICsgMl0gPDwgMTY7XG4gICAgLy8gZmFsbHRocm91Z2hcbiAgICBjYXNlIDI6XG4gICAgICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRmFsbHRocm91Z2hTd2l0Y2hDbGF1c2U6XG4gICAgICB3IHw9IHNbaSArIDFdIDw8IDg7XG4gICAgLy8gZmFsbHRocm91Z2hcbiAgICBjYXNlIDE6XG4gICAgICB3IHw9IHNbaV07XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIH1cbiAgaCBePSBsZW47XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9ieXRlc19hcnJcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfYnl0ZXMoaCwgdikge1xuICB2YXIgY29udGVudCA9IGNhbWxfbWxfYnl0ZXNfY29udGVudCh2KTtcbiAgaWYgKHR5cGVvZiBjb250ZW50ID09PSBcInN0cmluZ1wiKSByZXR1cm4gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsIGNvbnRlbnQpO1xuICAvKiBBUlJBWSAqLyBlbHNlIHJldHVybiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FycihoLCBjb250ZW50KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9zdHJpbmcoaCwgdikge1xuICByZXR1cm4gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsIGNhbWxfanNieXRlc19vZl9zdHJpbmcodikpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2ggbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9pc19tbF9zdHJpbmcsIGNhbWxfaXNfbWxfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50LCBjYW1sX2hhc2hfbWl4X2ZpbmFsXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2Zsb2F0LCBjYW1sX2hhc2hfbWl4X3N0cmluZywgY2FtbF9oYXNoX21peF9ieXRlcywgY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xuZnVuY3Rpb24gY2FtbF9oYXNoKGNvdW50LCBsaW1pdCwgc2VlZCwgb2JqKSB7XG4gIHZhciBxdWV1ZSwgcmQsIHdyLCBzeiwgbnVtLCBoLCB2LCBpLCBsZW47XG4gIHN6ID0gbGltaXQ7XG4gIGlmIChzeiA8IDAgfHwgc3ogPiAyNTYpIHN6ID0gMjU2O1xuICBudW0gPSBjb3VudDtcbiAgaCA9IHNlZWQ7XG4gIHF1ZXVlID0gW29ial07XG4gIHJkID0gMDtcbiAgd3IgPSAxO1xuICB3aGlsZSAocmQgPCB3ciAmJiBudW0gPiAwKSB7XG4gICAgdiA9IHF1ZXVlW3JkKytdO1xuICAgIGlmICh2Py5jYW1sX2N1c3RvbSkge1xuICAgICAgaWYgKFxuICAgICAgICBjYW1sX2N1c3RvbV9vcHNbdi5jYW1sX2N1c3RvbV0gJiZcbiAgICAgICAgY2FtbF9jdXN0b21fb3BzW3YuY2FtbF9jdXN0b21dLmhhc2hcbiAgICAgICkge1xuICAgICAgICB2YXIgaGggPSBjYW1sX2N1c3RvbV9vcHNbdi5jYW1sX2N1c3RvbV0uaGFzaCh2KTtcbiAgICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGhoKTtcbiAgICAgICAgbnVtLS07XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHYpICYmIHZbMF0gPT09ICh2WzBdIHwgMCkpIHtcbiAgICAgIHN3aXRjaCAodlswXSkge1xuICAgICAgICBjYXNlIDI0ODpcbiAgICAgICAgICAvLyBPYmplY3RcbiAgICAgICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdlsyXSk7XG4gICAgICAgICAgbnVtLS07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjUwOlxuICAgICAgICAgIC8vIEZvcndhcmRcbiAgICAgICAgICBxdWV1ZVstLXJkXSA9IHZbMV07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgaWYgKGNhbWxfaXNfY29udGludWF0aW9uX3RhZyh2WzBdKSkge1xuICAgICAgICAgICAgLyogQWxsIGNvbnRpbnVhdGlvbnMgaGFzaCB0byB0aGUgc2FtZSB2YWx1ZSxcbiAgICAgICAgICAgICBzaW5jZSB3ZSBoYXZlIG5vIGlkZWEgaG93IHRvIGRpc3Rpbmd1aXNoIHRoZW0uICovXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIHRhZyA9ICgodi5sZW5ndGggLSAxKSA8PCAxMCkgfCB2WzBdO1xuICAgICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB0YWcpO1xuICAgICAgICAgIGZvciAoaSA9IDEsIGxlbiA9IHYubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh3ciA+PSBzeikgYnJlYWs7XG4gICAgICAgICAgICBxdWV1ZVt3cisrXSA9IHZbaV07XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyh2KSkge1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfYnl0ZXMoaCwgdik7XG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKHYpKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9zdHJpbmcoaCwgdik7XG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsIHYpO1xuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmICh2ID09PSAodiB8IDApKSB7XG4gICAgICAvLyBJbnRlZ2VyXG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdiArIHYgKyAxKTtcbiAgICAgIG51bS0tO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHYgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgIC8vIEZsb2F0XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9mbG9hdChoLCB2KTtcbiAgICAgIG51bS0tO1xuICAgIH1cbiAgfVxuICBoID0gY2FtbF9oYXNoX21peF9maW5hbChoKTtcbiAgcmV0dXJuIGggJiAweDNmZmZmZmZmO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19oYXNoXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ZpbmFsLCBjYW1sX2hhc2hfbWl4X3N0cmluZ1xuLy9WZXJzaW9uOiA+PSA1LjBcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2hhc2goaCwgdikge1xuICB2YXIgaCA9IGNhbWxfaGFzaF9taXhfc3RyaW5nKGgsIHYpO1xuICB2YXIgaCA9IGNhbWxfaGFzaF9taXhfZmluYWwoaCk7XG4gIHJldHVybiBoICYgMHgzZmZmZmZmZjtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWxfdGFnXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9pc19tbF9ieXRlc1xuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbF90YWcoYSkge1xuICBpZiAodHlwZW9mIGEgPT09IFwibnVtYmVyXCIpXG4gICAgcmV0dXJuIDEwMDA7IC8vIGludF90YWcgKHdlIHVzZSBpdCBmb3IgYWxsIG51bWJlcnMpXG4gIGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXMoYSkpXG4gICAgcmV0dXJuIDI1MjsgLy8gc3RyaW5nX3RhZ1xuICBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyhhKSlcbiAgICByZXR1cm4gMTI1MjsgLy8gb2NhbWwgc3RyaW5nIChpZiBkaWZmZXJlbnQgZnJvbSBieXRlcylcbiAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhKSAmJiBhWzBdID09PSBhWzBdID4+PiAwICYmIGFbMF0gPD0gMjU1KSB7XG4gICAgLy8gTG9vayBsaWtlIGFuIG9jYW1sIGJsb2NrXG4gICAgdmFyIHRhZyA9IGFbMF0gfCAwO1xuICAgIC8vIGlnbm9yZSBkb3VibGVfYXJyYXlfdGFnIGJlY2F1c2Ugd2UgY2Fubm90IGFjY3VyYXRlbHkgc2V0XG4gICAgLy8gdGhpcyB0YWcgd2hlbiB3ZSBjcmVhdGUgYW4gYXJyYXkgb2YgZmxvYXQuXG4gICAgcmV0dXJuIHRhZyA9PT0gMjU0ID8gMCA6IHRhZztcbiAgfSBlbHNlIGlmIChhIGluc3RhbmNlb2YgU3RyaW5nKVxuICAgIHJldHVybiAxMjUyMDsgLy8gamF2YXNjcmlwdCBzdHJpbmcsIGxpa2Ugc3RyaW5nX3RhZyAoMjUyKVxuICBlbHNlIGlmICh0eXBlb2YgYSA9PT0gXCJzdHJpbmdcIilcbiAgICByZXR1cm4gMTI1MjA7IC8vIGphdmFzY3JpcHQgc3RyaW5nLCBsaWtlIHN0cmluZ190YWcgKDI1MilcbiAgZWxzZSBpZiAoYSBpbnN0YW5jZW9mIE51bWJlcilcbiAgICByZXR1cm4gMTAwMDsgLy8gaW50X3RhZyAod2UgdXNlIGl0IGZvciBhbGwgbnVtYmVycylcbiAgZWxzZSBpZiAoYT8uY2FtbF9jdXN0b20pXG4gICAgcmV0dXJuIDEyNTU7IC8vIGxpa2UgY3VzdG9tX3RhZyAoMjU1KVxuICBlbHNlIGlmIChhPy5jb21wYXJlKVxuICAgIHJldHVybiAxMjU2OyAvLyBsaWtlIGN1c3RvbV90YWcgKDI1NSlcbiAgZWxzZSBpZiAodHlwZW9mIGEgPT09IFwiZnVuY3Rpb25cIilcbiAgICByZXR1cm4gMTI0NzsgLy8gbGlrZSBjbG9zdXJlX3RhZyAoMjQ3KVxuICBlbHNlIGlmICh0eXBlb2YgYSA9PT0gXCJzeW1ib2xcIikgcmV0dXJuIDEyNTE7XG4gIHJldHVybiAxMDAxOyAvL291dF9vZl9oZWFwX3RhZ1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b21cbi8vUmVxdWlyZXM6IGNhbWxfY3VzdG9tX29wc1xuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGEpIHtcbiAgcmV0dXJuIChcbiAgICBjYW1sX2N1c3RvbV9vcHNbYS5jYW1sX2N1c3RvbV0gJiYgY2FtbF9jdXN0b21fb3BzW2EuY2FtbF9jdXN0b21dLmNvbXBhcmVcbiAgKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b21cbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShudW0sIGN1c3RvbSwgc3dhcCwgdG90YWwpIHtcbiAgdmFyIGNvbXAgPSBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oY3VzdG9tKTtcbiAgaWYgKGNvbXApIHtcbiAgICB2YXIgeCA9IHN3YXAgPiAwID8gY29tcChjdXN0b20sIG51bSwgdG90YWwpIDogY29tcChudW0sIGN1c3RvbSwgdG90YWwpO1xuICAgIGlmICh0b3RhbCAmJiBOdW1iZXIuaXNOYU4oeCkpIHJldHVybiBzd2FwOyAvLyB0b3RhbCAmJiBuYW5cbiAgICBpZiAoTnVtYmVyLmlzTmFOKCt4KSkgcmV0dXJuICt4OyAvLyBuYW5cbiAgICBpZiAoKHggfCAwKSAhPT0gMCkgcmV0dXJuIHggfCAwOyAvLyAhbmFuXG4gIH1cbiAgcmV0dXJuIHN3YXA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWwgKGNvbnN0LCBjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2ludF9jb21wYXJlLCBjYW1sX3N0cmluZ19jb21wYXJlLCBjYW1sX2J5dGVzX2NvbXBhcmVcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tLCBjYW1sX2NvbXBhcmVfdmFsX3RhZ1xuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWdcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWwoYSwgYiwgdG90YWwpIHtcbiAgdmFyIHN0YWNrID0gW107XG4gIGZvciAoOzspIHtcbiAgICBpZiAoISh0b3RhbCAmJiBhID09PSBiKSkge1xuICAgICAgdmFyIHRhZ19hID0gY2FtbF9jb21wYXJlX3ZhbF90YWcoYSk7XG4gICAgICAvLyBmb3J3YXJkX3RhZyA/XG4gICAgICBpZiAodGFnX2EgPT09IDI1MCkge1xuICAgICAgICBhID0gYVsxXTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZhciB0YWdfYiA9IGNhbWxfY29tcGFyZV92YWxfdGFnKGIpO1xuICAgICAgLy8gZm9yd2FyZF90YWcgP1xuICAgICAgaWYgKHRhZ19iID09PSAyNTApIHtcbiAgICAgICAgYiA9IGJbMV07XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyB0YWdzIGFyZSBkaWZmZXJlbnRcbiAgICAgIGlmICh0YWdfYSAhPT0gdGFnX2IpIHtcbiAgICAgICAgaWYgKHRhZ19hID09PSAxMDAwKSB7XG4gICAgICAgICAgaWYgKHRhZ19iID09PSAxMjU1KSB7XG4gICAgICAgICAgICAvL2ltbWVkaWF0ZSBjYW4gY29tcGFyZSBhZ2FpbnN0IGN1c3RvbVxuICAgICAgICAgICAgcmV0dXJuIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShhLCBiLCAtMSwgdG90YWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRhZ19iID09PSAxMDAwKSB7XG4gICAgICAgICAgaWYgKHRhZ19hID09PSAxMjU1KSB7XG4gICAgICAgICAgICAvL2ltbWVkaWF0ZSBjYW4gY29tcGFyZSBhZ2FpbnN0IGN1c3RvbVxuICAgICAgICAgICAgcmV0dXJuIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShiLCBhLCAxLCB0b3RhbCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0YWdfYSA8IHRhZ19iID8gLTEgOiAxO1xuICAgICAgfVxuICAgICAgLy8gdGFnX2EgPSB0YWdfYlxuICAgICAgc3dpdGNoICh0YWdfYSkge1xuICAgICAgICAvLyAyNDY6IExhenlfdGFnIGhhbmRsZWQgYmVsbG93XG4gICAgICAgIGNhc2UgMjQ3OiAvLyBDbG9zdXJlX3RhZ1xuICAgICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBmdW5jdGlvbmFsIHZhbHVlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI0ODogLy8gT2JqZWN0XG4gICAgICAgICAgdmFyIHggPSBjYW1sX2ludF9jb21wYXJlKGFbMl0sIGJbMl0pIHwgMDtcbiAgICAgICAgICBpZiAoeCAhPT0gMCkgcmV0dXJuIHg7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjQ5OiAvLyBJbmZpeFxuICAgICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBmdW5jdGlvbmFsIHZhbHVlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI1MDogLy8gRm9yd2FyZCB0YWdcbiAgICAgICAgICAvLyBDYW5ub3QgaGFwcGVuLCBoYW5kbGVkIGFib3ZlXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBGb3J3YXJkX3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjUxOiAvL0Fic3RyYWN0XG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGFic3RyYWN0IHZhbHVlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI1MjogLy8gT0NhbWwgYnl0ZXNcbiAgICAgICAgICBpZiAoYSAhPT0gYikge1xuICAgICAgICAgICAgdmFyIHggPSBjYW1sX2J5dGVzX2NvbXBhcmUoYSwgYikgfCAwO1xuICAgICAgICAgICAgaWYgKHggIT09IDApIHJldHVybiB4O1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyNTM6IC8vIERvdWJsZV90YWdcbiAgICAgICAgICAvLyBDYW5ub3QgaGFwcGVuXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBEb3VibGVfdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyNTQ6IC8vIERvdWJsZV9hcnJheV90YWdcbiAgICAgICAgICAvLyBDYW5ub3QgaGFwcGVuLCBoYW5kbGVkIGluIGNhbWxfY29tcGFyZV92YWxfdGFnXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFxuICAgICAgICAgICAgXCJlcXVhbDogZ290IERvdWJsZV9hcnJheV90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyNTU6IC8vIEN1c3RvbV90YWdcbiAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogZ290IEN1c3RvbV90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDEyNDc6IC8vIEZ1bmN0aW9uXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogZnVuY3Rpb25hbCB2YWx1ZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxMjU1OiAvLyBDdXN0b21cbiAgICAgICAgICB2YXIgY29tcCA9IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShhKTtcbiAgICAgICAgICBpZiAoY29tcCAhPT0gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGIpKSB7XG4gICAgICAgICAgICByZXR1cm4gYS5jYW1sX2N1c3RvbSA8IGIuY2FtbF9jdXN0b20gPyAtMSA6IDE7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghY29tcCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogYWJzdHJhY3QgdmFsdWVcIik7XG4gICAgICAgICAgdmFyIHggPSBjb21wKGEsIGIsIHRvdGFsKTtcbiAgICAgICAgICBpZiAoTnVtYmVyLmlzTmFOKHgpKSB7XG4gICAgICAgICAgICAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCBVTk9SREVSRURcbiAgICAgICAgICAgIHJldHVybiB0b3RhbCA/IC0xIDogeDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHggIT09ICh4IHwgMCkpIHtcbiAgICAgICAgICAgIC8vIFByb3RlY3QgYWdhaW5zdCBpbnZhbGlkIHJldHVybiB2YWx1ZVxuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoeCAhPT0gMCkgcmV0dXJuIHggfCAwO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDEyNTY6IC8vIGNvbXBhcmUgZnVuY3Rpb25cbiAgICAgICAgICB2YXIgeCA9IGEuY29tcGFyZShiLCB0b3RhbCk7XG4gICAgICAgICAgaWYgKE51bWJlci5pc05hTih4KSkge1xuICAgICAgICAgICAgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgVU5PUkRFUkVEXG4gICAgICAgICAgICByZXR1cm4gdG90YWwgPyAtMSA6IHg7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh4ICE9PSAoeCB8IDApKSB7XG4gICAgICAgICAgICAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCByZXR1cm4gdmFsdWVcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHggIT09IDApIHJldHVybiB4IHwgMDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxMDAwOiAvLyBOdW1iZXJcbiAgICAgICAgICBhID0gK2E7XG4gICAgICAgICAgYiA9ICtiO1xuICAgICAgICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gICAgICAgICAgaWYgKGEgIT09IGIpIHtcbiAgICAgICAgICAgIGlmICghdG90YWwpIHJldHVybiBOdW1iZXIuTmFOO1xuICAgICAgICAgICAgaWYgKCFOdW1iZXIuaXNOYU4oYSkpIHJldHVybiAxO1xuICAgICAgICAgICAgaWYgKCFOdW1iZXIuaXNOYU4oYikpIHJldHVybiAtMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTAwMTogLy8gVGhlIHJlc3RcbiAgICAgICAgICAvLyBIZXJlIHdlIGNhbiBiZSBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOlxuICAgICAgICAgIC8vIDEuIEphdmFTY3JpcHQgcHJpbWl0aXZlIHR5cGVzXG4gICAgICAgICAgLy8gMi4gSmF2YVNjcmlwdCBvYmplY3QgdGhhdCBjYW4gYmUgY29lcmNlZCB0byBwcmltaXRpdmUgdHlwZXNcbiAgICAgICAgICAvLyAzLiBKYXZhU2NyaXB0IG9iamVjdCB0aGFuIGNhbm5vdCBiZSBjb2VyY2VkIHRvIHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAgIC8vXG4gICAgICAgICAgLy8gKDMpIHdpbGwgcmFpc2UgYSBbVHlwZUVycm9yXVxuICAgICAgICAgIC8vICgyKSB3aWxsIGNvZXJjZSB0byBwcmltaXRpdmUgdHlwZXMgdXNpbmcgW3ZhbHVlT2ZdIG9yIFt0b1N0cmluZ11cbiAgICAgICAgICAvLyAoMikgYW5kICgzKSwgYWZ0ZXIgZXZlbnR1YWwgY29lcmNpb25cbiAgICAgICAgICAvLyAtIGlmIGEgYW5kIGIgYXJlIHN0cmluZ3MsIGFwcGx5IGxleGljb2dyYXBoaWMgY29tcGFyaXNvblxuICAgICAgICAgIC8vIC0gaWYgYSBvciBiIGFyZSBub3Qgc3RyaW5ncywgY29udmVydCBhIGFuZCBiIHRvIG51bWJlclxuICAgICAgICAgIC8vICAgYW5kIGFwcGx5IHN0YW5kYXJkIGNvbXBhcmlzb25cbiAgICAgICAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICAgIGlmIChhICE9PSBiKSB7XG4gICAgICAgICAgICByZXR1cm4gdG90YWwgPyAxIDogTnVtYmVyLk5hTjtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTI1MTogLy8gSmF2YVNjcmlwdCBTeW1ib2wsIG5vIG9yZGVyaW5nLlxuICAgICAgICAgIGlmIChhICE9PSBiKSB7XG4gICAgICAgICAgICByZXR1cm4gdG90YWwgPyAxIDogTnVtYmVyLk5hTjtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTI1MjogLy8gb2NhbWwgc3RyaW5nc1xuICAgICAgICAgIHZhciBhID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhhKTtcbiAgICAgICAgICB2YXIgYiA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoYik7XG4gICAgICAgICAgaWYgKGEgIT09IGIpIHtcbiAgICAgICAgICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICAgICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTI1MjA6IC8vIGphdmFzY3JpcHQgc3RyaW5nc1xuICAgICAgICAgIHZhciBhID0gYS50b1N0cmluZygpO1xuICAgICAgICAgIHZhciBiID0gYi50b1N0cmluZygpO1xuICAgICAgICAgIGlmIChhICE9PSBiKSB7XG4gICAgICAgICAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OiAvLyBMYXp5X3RhZyBvciBCbG9jayB3aXRoIG90aGVyIHRhZ1xuICAgICAgICAgIGlmIChjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodGFnX2EpKSB7XG4gICAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBjb250aW51YXRpb24gdmFsdWVcIik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkgcmV0dXJuIGEubGVuZ3RoIDwgYi5sZW5ndGggPyAtMSA6IDE7XG4gICAgICAgICAgaWYgKGEubGVuZ3RoID4gMSkgc3RhY2sucHVzaChhLCBiLCAxKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHN0YWNrLmxlbmd0aCA9PT0gMCkgcmV0dXJuIDA7XG4gICAgdmFyIGkgPSBzdGFjay5wb3AoKTtcbiAgICBiID0gc3RhY2sucG9wKCk7XG4gICAgYSA9IHN0YWNrLnBvcCgpO1xuICAgIGlmIChpICsgMSA8IGEubGVuZ3RoKSBzdGFjay5wdXNoKGEsIGIsIGkgKyAxKTtcbiAgICBhID0gYVtpXTtcbiAgICBiID0gYltpXTtcbiAgfVxufVxuXG4vLyBNYXkgcmFpc2Vcbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9jb21wYXJlKGEsIGIpIHtcbiAgcmV0dXJuIGNhbWxfY29tcGFyZV92YWwoYSwgYiwgdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50X2NvbXBhcmUgY29uc3Rcbi8vQWxpYXM6IGNhbWxfaW50MzJfY29tcGFyZVxuLy9BbGlhczogY2FtbF9uYXRpdmVpbnRfY29tcGFyZVxuZnVuY3Rpb24gY2FtbF9pbnRfY29tcGFyZShhLCBiKSB7XG4gIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICBpZiAoYSA9PT0gYikgcmV0dXJuIDA7XG4gIHJldHVybiAxO1xufVxuXG4vLyBNYXkgcmFpc2Vcbi8vUHJvdmlkZXM6IGNhbWxfZXF1YWwgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfZXF1YWwoeCwgeSkge1xuICByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgsIHksIGZhbHNlKSA9PT0gMCk7XG59XG5cbi8vIE1heSByYWlzZVxuLy9Qcm92aWRlczogY2FtbF9ub3RlcXVhbCAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9ub3RlcXVhbCh4LCB5KSB7XG4gIHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCwgeSwgZmFsc2UpICE9PSAwKTtcbn1cblxuLy8gTWF5IHJhaXNlXG4vL1Byb3ZpZGVzOiBjYW1sX2dyZWF0ZXJlcXVhbCAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9ncmVhdGVyZXF1YWwoeCwgeSkge1xuICByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgsIHksIGZhbHNlKSA+PSAwKTtcbn1cblxuLy8gTWF5IHJhaXNlXG4vL1Byb3ZpZGVzOiBjYW1sX2dyZWF0ZXJ0aGFuIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2dyZWF0ZXJ0aGFuKHgsIHkpIHtcbiAgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LCB5LCBmYWxzZSkgPiAwKTtcbn1cblxuLy8gTWF5IHJhaXNlXG4vL1Byb3ZpZGVzOiBjYW1sX2xlc3NlcXVhbCAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9sZXNzZXF1YWwoeCwgeSkge1xuICByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgsIHksIGZhbHNlKSA8PSAwKTtcbn1cblxuLy8gTWF5IHJhaXNlXG4vL1Byb3ZpZGVzOiBjYW1sX2xlc3N0aGFuIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2xlc3N0aGFuKHgsIHkpIHtcbiAgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LCB5LCBmYWxzZSkgPCAwKTtcbn1cbiIsIi8vUHJvdmlkZXM6IGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4XG4vL1ZlcnNpb246ID49IDUuMVxudmFyIGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4ID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3JlZ2lzdGVyXG4vL1JlcXVpcmVzOiBjYW1sX2N1c3RvbV9ldmVudF9pbmRleFxuLy9WZXJzaW9uOiA+PSA1LjFcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZWdpc3RlcihldmVudF9uYW1lLCBldmVudF90YWcsIGV2ZW50X3R5cGUpIHtcbiAgY2FtbF9jdXN0b21fZXZlbnRfaW5kZXggKz0gMTtcbiAgcmV0dXJuIFswLCBjYW1sX2N1c3RvbV9ldmVudF9pbmRleCwgZXZlbnRfbmFtZSwgZXZlbnRfdHlwZSwgZXZlbnRfdGFnXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3dyaXRlXG4vL1ZlcnNpb246ID49IDUuMVxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3dyaXRlKF9ldmVudCwgX2V2ZW50X2NvbnRlbnQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZXNvbHZlXG4vL1ZlcnNpb246ID49IDUuMFxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3Jlc29sdmUoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3N0YXJ0XG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX2V2ZW50c19zdGFydCgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfc3RhcnRcbi8vVmVyc2lvbjogPj0gNS4wLCA8IDUuMlxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c19zdGFydCgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcnVudGltZV9ldmVudHNfcGF1c2Vcbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3BhdXNlKCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c19wYXVzZVxuLy9WZXJzaW9uOiA+PSA1LjAsIDwgNS4yXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX3BhdXNlKCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ydW50aW1lX2V2ZW50c19hcmVfYWN0aXZlXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX2V2ZW50c19hcmVfYWN0aXZlKCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c19yZXN1bWVcbi8vVmVyc2lvbjogPj01LjAsIDwgNS4yXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX3Jlc3VtZSgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcnVudGltZV9ldmVudHNfcmVzdW1lXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX2V2ZW50c19yZXN1bWUoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX2NyZWF0ZV9jdXJzb3Jcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX2NyZWF0ZV9jdXJzb3IoX3RhcmdldCkge1xuICByZXR1cm4ge307XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfZnJlZV9jdXJzb3Jcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX2ZyZWVfY3Vyc29yKF9jdXJzb3IpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfcmVhZF9wb2xsXG4vL1ZlcnNpb246ID49IDUuMFxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c19yZWFkX3BvbGwoX2N1cnNvciwgX2NhbGxiYWNrcywgX251bSkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ydW50aW1lX2V2ZW50c19wYXRoIGNvbnN0XG4vL1ZlcnNpb246ID49IDUuM1xuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX2V2ZW50c19wYXRoKF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuIiwiLy9Qcm92aWRlczogenN0ZF9kZWNvbXByZXNzXG4vL1ZlcnNpb246ID49IDUuMVxudmFyIHpzdGRfZGVjb21wcmVzcyA9IChmdW5jdGlvbiAoKSB7XG4gIC8vIGFsaWFzZXMgZm9yIHNob3J0ZXIgY29tcHJlc3NlZCBjb2RlIChtb3N0IG1pbmlmZXJzIGRvbid0IGRvIHRoaXMpXG4gIHZhciBhYiA9IEFycmF5QnVmZmVyLFxuICAgIHU4ID0gVWludDhBcnJheSxcbiAgICB1MTYgPSBVaW50MTZBcnJheSxcbiAgICBpMTYgPSBJbnQxNkFycmF5LFxuICAgIGkzMiA9IEludDMyQXJyYXk7XG4gIHZhciBzbGMgPSBmdW5jdGlvbiAodiwgcywgZSkge1xuICAgIGlmICh1OC5wcm90b3R5cGUuc2xpY2UpIHJldHVybiB1OC5wcm90b3R5cGUuc2xpY2UuY2FsbCh2LCBzLCBlKTtcbiAgICBpZiAocyA9PSBudWxsIHx8IHMgPCAwKSBzID0gMDtcbiAgICBpZiAoZSA9PSBudWxsIHx8IGUgPiB2Lmxlbmd0aCkgZSA9IHYubGVuZ3RoO1xuICAgIHZhciBuID0gbmV3IHU4KGUgLSBzKTtcbiAgICBuLnNldCh2LnN1YmFycmF5KHMsIGUpKTtcbiAgICByZXR1cm4gbjtcbiAgfTtcbiAgdmFyIGZpbGwgPSBmdW5jdGlvbiAodiwgbiwgcywgZSkge1xuICAgIGlmICh1OC5wcm90b3R5cGUuZmlsbCkgcmV0dXJuIHU4LnByb3RvdHlwZS5maWxsLmNhbGwodiwgbiwgcywgZSk7XG4gICAgaWYgKHMgPT0gbnVsbCB8fCBzIDwgMCkgcyA9IDA7XG4gICAgaWYgKGUgPT0gbnVsbCB8fCBlID4gdi5sZW5ndGgpIGUgPSB2Lmxlbmd0aDtcbiAgICBmb3IgKDsgcyA8IGU7ICsrcykgdltzXSA9IG47XG4gICAgcmV0dXJuIHY7XG4gIH07XG4gIHZhciBjcHcgPSBmdW5jdGlvbiAodiwgdCwgcywgZSkge1xuICAgIGlmICh1OC5wcm90b3R5cGUuY29weVdpdGhpbilcbiAgICAgIHJldHVybiB1OC5wcm90b3R5cGUuY29weVdpdGhpbi5jYWxsKHYsIHQsIHMsIGUpO1xuICAgIGlmIChzID09IG51bGwgfHwgcyA8IDApIHMgPSAwO1xuICAgIGlmIChlID09IG51bGwgfHwgZSA+IHYubGVuZ3RoKSBlID0gdi5sZW5ndGg7XG4gICAgd2hpbGUgKHMgPCBlKSB7XG4gICAgICB2W3QrK10gPSB2W3MrK107XG4gICAgfVxuICB9O1xuICAvKipcbiAgICogQ29kZXMgZm9yIGVycm9ycyBnZW5lcmF0ZWQgd2l0aGluIHRoaXMgbGlicmFyeVxuICAgKi9cbiAgLy8gZXJyb3IgY29kZXNcbiAgdmFyIGVjID0gW1xuICAgIFwiaW52YWxpZCB6c3RkIGRhdGFcIixcbiAgICBcIndpbmRvdyBzaXplIHRvbyBsYXJnZSAoPjIwNDZNQilcIixcbiAgICBcImludmFsaWQgYmxvY2sgdHlwZVwiLFxuICAgIFwiRlNFIGFjY3VyYWN5IHRvbyBoaWdoXCIsXG4gICAgXCJtYXRjaCBkaXN0YW5jZSB0b28gZmFyIGJhY2tcIixcbiAgICBcInVuZXhwZWN0ZWQgRU9GXCIsXG4gIF07XG4gIHZhciBlcnIgPSBmdW5jdGlvbiAoaW5kLCBtc2csIG50KSB7XG4gICAgdmFyIGUgPSBuZXcgRXJyb3IobXNnIHx8IGVjW2luZF0pO1xuICAgIGUuY29kZSA9IGluZDtcbiAgICBpZiAoIW50KSB0aHJvdyBlO1xuICAgIHJldHVybiBlO1xuICB9O1xuICB2YXIgcmIgPSBmdW5jdGlvbiAoZCwgYiwgbikge1xuICAgIHZhciBpID0gMCxcbiAgICAgIG8gPSAwO1xuICAgIGZvciAoOyBpIDwgbjsgKytpKSBvIHw9IGRbYisrXSA8PCAoaSA8PCAzKTtcbiAgICByZXR1cm4gbztcbiAgfTtcbiAgdmFyIGI0ID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICByZXR1cm4gKGRbYl0gfCAoZFtiICsgMV0gPDwgOCkgfCAoZFtiICsgMl0gPDwgMTYpIHwgKGRbYiArIDNdIDw8IDI0KSkgPj4+IDA7XG4gIH07XG4gIC8vIHJlYWQgWnN0YW5kYXJkIGZyYW1lIGhlYWRlclxuICB2YXIgcnpmaCA9IGZ1bmN0aW9uIChkYXQsIHcpIHtcbiAgICB2YXIgbjMgPSBkYXRbMF0gfCAoZGF0WzFdIDw8IDgpIHwgKGRhdFsyXSA8PCAxNik7XG4gICAgaWYgKG4zID09PSAweDJmYjUyOCAmJiBkYXRbM10gPT09IDI1Mykge1xuICAgICAgLy8gWnN0YW5kYXJkXG4gICAgICB2YXIgZmxnID0gZGF0WzRdO1xuICAgICAgLy8gICAgc2luZ2xlIHNlZ21lbnQgICAgICAgY2hlY2tzdW0gICAgICAgICAgICAgZGljdCBmbGFnICAgICBmcmFtZSBjb250ZW50IGZsYWdcbiAgICAgIHZhciBzcyA9IChmbGcgPj4gNSkgJiAxLFxuICAgICAgICBjYyA9IChmbGcgPj4gMikgJiAxLFxuICAgICAgICBkZiA9IGZsZyAmIDMsXG4gICAgICAgIGZjZiA9IGZsZyA+PiA2O1xuICAgICAgaWYgKGZsZyAmIDgpIGVycigwKTtcbiAgICAgIC8vIGJ5dGVcbiAgICAgIHZhciBidCA9IDYgLSBzcztcbiAgICAgIC8vIGRpY3QgYnl0ZXNcbiAgICAgIHZhciBkYiA9IGRmID09PSAzID8gNCA6IGRmO1xuICAgICAgLy8gZGljdGlvbmFyeSBpZFxuICAgICAgdmFyIGRpID0gcmIoZGF0LCBidCwgZGIpO1xuICAgICAgYnQgKz0gZGI7XG4gICAgICAvLyBmcmFtZSBzaXplIGJ5dGVzXG4gICAgICB2YXIgZnNiID0gZmNmID8gMSA8PCBmY2YgOiBzcztcbiAgICAgIC8vIGZyYW1lIHNvdXJjZSBzaXplXG4gICAgICB2YXIgZnNzID0gcmIoZGF0LCBidCwgZnNiKSArIChmY2YgPT09IDEgJiYgMjU2KTtcbiAgICAgIC8vIHdpbmRvdyBzaXplXG4gICAgICB2YXIgd3MgPSBmc3M7XG4gICAgICBpZiAoIXNzKSB7XG4gICAgICAgIC8vIHdpbmRvdyBkZXNjcmlwdG9yXG4gICAgICAgIHZhciB3YiA9IDEgPDwgKDEwICsgKGRhdFs1XSA+PiAzKSk7XG4gICAgICAgIHdzID0gd2IgKyAod2IgPj4gMykgKiAoZGF0WzVdICYgNyk7XG4gICAgICB9XG4gICAgICBpZiAod3MgPiAyMTQ1Mzg2NDk2KSBlcnIoMSk7XG4gICAgICB2YXIgYnVmID0gbmV3IHU4KCh3ID09PSAxID8gZnNzIHx8IHdzIDogdyA/IDAgOiB3cykgKyAxMik7XG4gICAgICAoYnVmWzBdID0gMSksIChidWZbNF0gPSA0KSwgKGJ1Zls4XSA9IDgpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYjogYnQgKyBmc2IsXG4gICAgICAgIHk6IDAsXG4gICAgICAgIGw6IDAsXG4gICAgICAgIGQ6IGRpLFxuICAgICAgICB3OiB3ICYmIHcgIT09IDEgPyB3IDogYnVmLnN1YmFycmF5KDEyKSxcbiAgICAgICAgZTogd3MsXG4gICAgICAgIG86IG5ldyBpMzIoYnVmLmJ1ZmZlciwgMCwgMyksXG4gICAgICAgIHU6IGZzcyxcbiAgICAgICAgYzogY2MsXG4gICAgICAgIG06IE1hdGgubWluKDEzMTA3Miwgd3MpLFxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKCgobjMgPj4gNCkgfCAoZGF0WzNdIDw8IDIwKSkgPT09IDB4MTg0ZDJhNSkge1xuICAgICAgLy8gc2tpcHBhYmxlXG4gICAgICByZXR1cm4gYjQoZGF0LCA0KSArIDg7XG4gICAgfVxuICAgIGVycigwKTtcbiAgfTtcbiAgLy8gbW9zdCBzaWduaWZpY2FudCBiaXQgZm9yIG5vbnplcm9cbiAgdmFyIG1zYiA9IGZ1bmN0aW9uICh2YWwpIHtcbiAgICB2YXIgYml0cyA9IDA7XG4gICAgZm9yICg7IDEgPDwgYml0cyA8PSB2YWw7ICsrYml0cyk7XG4gICAgcmV0dXJuIGJpdHMgLSAxO1xuICB9O1xuICAvLyByZWFkIGZpbml0ZSBzdGF0ZSBlbnRyb3B5XG4gIHZhciByZnNlID0gZnVuY3Rpb24gKGRhdCwgYnQsIG1hbCkge1xuICAgIC8vIHRhYmxlIHBvc1xuICAgIHZhciB0cG9zID0gKGJ0IDw8IDMpICsgNDtcbiAgICAvLyBhY2N1cmFjeSBsb2dcbiAgICB2YXIgYWwgPSAoZGF0W2J0XSAmIDE1KSArIDU7XG4gICAgaWYgKGFsID4gbWFsKSBlcnIoMyk7XG4gICAgLy8gc2l6ZVxuICAgIHZhciBzeiA9IDEgPDwgYWw7XG4gICAgLy8gcHJvYmFiaWxpdGllcyBzeW1ib2xzICByZXBlYXQgICBpbmRleCAgIGhpZ2ggdGhyZXNob2xkXG4gICAgdmFyIHByb2JzID0gc3osXG4gICAgICBzeW0gPSAtMSxcbiAgICAgIHJlID0gLTEsXG4gICAgICBpID0gLTEsXG4gICAgICBodCA9IHN6O1xuICAgIC8vIG9wdGltaXphdGlvbjogc2luZ2xlIGFsbG9jYXRpb24gaXMgbXVjaCBmYXN0ZXJcbiAgICB2YXIgYnVmID0gbmV3IGFiKDUxMiArIChzeiA8PCAyKSk7XG4gICAgdmFyIGZyZXEgPSBuZXcgaTE2KGJ1ZiwgMCwgMjU2KTtcbiAgICAvLyBzYW1lIHZpZXcgYXMgZnJlcVxuICAgIHZhciBkc3RhdGUgPSBuZXcgdTE2KGJ1ZiwgMCwgMjU2KTtcbiAgICB2YXIgbnN0YXRlID0gbmV3IHUxNihidWYsIDUxMiwgc3opO1xuICAgIHZhciBiYjEgPSA1MTIgKyAoc3ogPDwgMSk7XG4gICAgdmFyIHN5bXMgPSBuZXcgdTgoYnVmLCBiYjEsIHN6KTtcbiAgICB2YXIgbmJpdHMgPSBuZXcgdTgoYnVmLCBiYjEgKyBzeik7XG4gICAgd2hpbGUgKHN5bSA8IDI1NSAmJiBwcm9icyA+IDApIHtcbiAgICAgIHZhciBiaXRzID0gbXNiKHByb2JzICsgMSk7XG4gICAgICB2YXIgY2J0ID0gdHBvcyA+PiAzO1xuICAgICAgLy8gbWFza1xuICAgICAgdmFyIG1zayA9ICgxIDw8IChiaXRzICsgMSkpIC0gMTtcbiAgICAgIHZhciB2YWwgPVxuICAgICAgICAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpKSA+PlxuICAgICAgICAgICh0cG9zICYgNykpICZcbiAgICAgICAgbXNrO1xuICAgICAgLy8gbWFzayAoMSBmZXdlciBiaXQpXG4gICAgICB2YXIgbXNrMWZiID0gKDEgPDwgYml0cykgLSAxO1xuICAgICAgLy8gbWF4IHNtYWxsIHZhbHVlXG4gICAgICB2YXIgbXN2ID0gbXNrIC0gcHJvYnMgLSAxO1xuICAgICAgLy8gc21hbGwgdmFsdWVcbiAgICAgIHZhciBzdmFsID0gdmFsICYgbXNrMWZiO1xuICAgICAgaWYgKHN2YWwgPCBtc3YpICh0cG9zICs9IGJpdHMpLCAodmFsID0gc3ZhbCk7XG4gICAgICBlbHNlIHtcbiAgICAgICAgdHBvcyArPSBiaXRzICsgMTtcbiAgICAgICAgaWYgKHZhbCA+IG1zazFmYikgdmFsIC09IG1zdjtcbiAgICAgIH1cbiAgICAgIGZyZXFbKytzeW1dID0gLS12YWw7XG4gICAgICBpZiAodmFsID09PSAtMSkge1xuICAgICAgICBwcm9icyArPSB2YWw7XG4gICAgICAgIHN5bXNbLS1odF0gPSBzeW07XG4gICAgICB9IGVsc2UgcHJvYnMgLT0gdmFsO1xuICAgICAgaWYgKCF2YWwpIHtcbiAgICAgICAgZG8ge1xuICAgICAgICAgIC8vIHJlcGVhdCBieXRlXG4gICAgICAgICAgdmFyIHJidCA9IHRwb3MgPj4gMztcbiAgICAgICAgICByZSA9ICgoZGF0W3JidF0gfCAoZGF0W3JidCArIDFdIDw8IDgpKSA+PiAodHBvcyAmIDcpKSAmIDM7XG4gICAgICAgICAgdHBvcyArPSAyO1xuICAgICAgICAgIHN5bSArPSByZTtcbiAgICAgICAgfSB3aGlsZSAocmUgPT09IDMpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoc3ltID4gMjU1IHx8IHByb2JzKSBlcnIoMCk7XG4gICAgdmFyIHN5bXBvcyA9IDA7XG4gICAgLy8gc3ltIHN0ZXAgKGNvcHJpbWUgd2l0aCBzeiAtIGZvcm11bGEgZnJvbSB6c3RkIHNvdXJjZSlcbiAgICB2YXIgc3N0ZXAgPSAoc3ogPj4gMSkgKyAoc3ogPj4gMykgKyAzO1xuICAgIC8vIHN5bSBtYXNrXG4gICAgdmFyIHNtYXNrID0gc3ogLSAxO1xuICAgIGZvciAodmFyIHMgPSAwOyBzIDw9IHN5bTsgKytzKSB7XG4gICAgICB2YXIgc2YgPSBmcmVxW3NdO1xuICAgICAgaWYgKHNmIDwgMSkge1xuICAgICAgICBkc3RhdGVbc10gPSAtc2Y7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgLy8gVGhpcyBpcyBzcGxpdCBpbnRvIHR3byBsb29wcyBpbiB6c3RkIHRvIGF2b2lkIGJyYW5jaGluZywgYnV0IGFzIEpTIGlzIGhpZ2hlci1sZXZlbCB0aGF0IGlzIHVubmVjZXNzYXJ5XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgc2Y7ICsraSkge1xuICAgICAgICBzeW1zW3N5bXBvc10gPSBzO1xuICAgICAgICBkbyB7XG4gICAgICAgICAgc3ltcG9zID0gKHN5bXBvcyArIHNzdGVwKSAmIHNtYXNrO1xuICAgICAgICB9IHdoaWxlIChzeW1wb3MgPj0gaHQpO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBBZnRlciBzcHJlYWRpbmcgc3ltYm9scywgc2hvdWxkIGJlIHplcm8gYWdhaW5cbiAgICBpZiAoc3ltcG9zKSBlcnIoMCk7XG4gICAgZm9yIChpID0gMDsgaSA8IHN6OyArK2kpIHtcbiAgICAgIC8vIG5leHQgc3RhdGVcbiAgICAgIHZhciBucyA9IGRzdGF0ZVtzeW1zW2ldXSsrO1xuICAgICAgLy8gbnVtIGJpdHNcbiAgICAgIHZhciBuYiA9IChuYml0c1tpXSA9IGFsIC0gbXNiKG5zKSk7XG4gICAgICBuc3RhdGVbaV0gPSAobnMgPDwgbmIpIC0gc3o7XG4gICAgfVxuICAgIHJldHVybiBbXG4gICAgICAodHBvcyArIDcpID4+IDMsXG4gICAgICB7XG4gICAgICAgIGI6IGFsLFxuICAgICAgICBzOiBzeW1zLFxuICAgICAgICBuOiBuYml0cyxcbiAgICAgICAgdDogbnN0YXRlLFxuICAgICAgfSxcbiAgICBdO1xuICB9O1xuICAvLyByZWFkIGh1ZmZtYW5cbiAgdmFyIHJodSA9IGZ1bmN0aW9uIChkYXQsIGJ0KSB7XG4gICAgLy8gIGluZGV4ICB3ZWlnaHQgY291bnRcbiAgICB2YXIgaSA9IDAsXG4gICAgICB3YyA9IC0xO1xuICAgIC8vICAgIGJ1ZmZlciAgICAgICAgICAgICBoZWFkZXIgYnl0ZVxuICAgIHZhciBidWYgPSBuZXcgdTgoMjkyKSxcbiAgICAgIGhiID0gZGF0W2J0XTtcbiAgICAvLyBodWZmbWFuIHdlaWdodHNcbiAgICB2YXIgaHcgPSBidWYuc3ViYXJyYXkoMCwgMjU2KTtcbiAgICAvLyByYW5rIGNvdW50XG4gICAgdmFyIHJjID0gYnVmLnN1YmFycmF5KDI1NiwgMjY4KTtcbiAgICAvLyByYW5rIGluZGV4XG4gICAgdmFyIHJpID0gbmV3IHUxNihidWYuYnVmZmVyLCAyNjgpO1xuICAgIC8vIE5PVEU6IGF0IHRoaXMgcG9pbnQgYnQgaXMgMSBsZXNzIHRoYW4gZXhwZWN0ZWRcbiAgICBpZiAoaGIgPCAxMjgpIHtcbiAgICAgIC8vIGVuZCBieXRlLCBmc2UgZGVjb2RlIHRhYmxlXG4gICAgICB2YXIgX2EgPSByZnNlKGRhdCwgYnQgKyAxLCA2KSxcbiAgICAgICAgZWJ0ID0gX2FbMF0sXG4gICAgICAgIGZkdCA9IF9hWzFdO1xuICAgICAgYnQgKz0gaGI7XG4gICAgICB2YXIgZXBvcyA9IGVidCA8PCAzO1xuICAgICAgLy8gbGFzdCBieXRlXG4gICAgICB2YXIgbGIgPSBkYXRbYnRdO1xuICAgICAgaWYgKCFsYikgZXJyKDApO1xuICAgICAgLy8gIHN0YXRlMSAgIHN0YXRlMiAgIHN0YXRlMSBiaXRzICAgc3RhdGUyIGJpdHNcbiAgICAgIHZhciBzdDEgPSAwLFxuICAgICAgICBzdDIgPSAwLFxuICAgICAgICBidHIxID0gZmR0LmIsXG4gICAgICAgIGJ0cjIgPSBidHIxO1xuICAgICAgLy8gZnNlIHBvc1xuICAgICAgLy8gcHJlLWluY3JlbWVudCB0byBhY2NvdW50IGZvciBvcmlnaW5hbCBkZWZpY2l0IG9mIDFcbiAgICAgIHZhciBmcG9zID0gKCsrYnQgPDwgMykgLSA4ICsgbXNiKGxiKTtcbiAgICAgIGZvciAoOzspIHtcbiAgICAgICAgZnBvcyAtPSBidHIxO1xuICAgICAgICBpZiAoZnBvcyA8IGVwb3MpIGJyZWFrO1xuICAgICAgICB2YXIgY2J0ID0gZnBvcyA+PiAzO1xuICAgICAgICBzdDEgKz1cbiAgICAgICAgICAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKGZwb3MgJiA3KSkgJiAoKDEgPDwgYnRyMSkgLSAxKTtcbiAgICAgICAgaHdbKyt3Y10gPSBmZHQuc1tzdDFdO1xuICAgICAgICBmcG9zIC09IGJ0cjI7XG4gICAgICAgIGlmIChmcG9zIDwgZXBvcykgYnJlYWs7XG4gICAgICAgIGNidCA9IGZwb3MgPj4gMztcbiAgICAgICAgc3QyICs9XG4gICAgICAgICAgKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChmcG9zICYgNykpICYgKCgxIDw8IGJ0cjIpIC0gMSk7XG4gICAgICAgIGh3Wysrd2NdID0gZmR0LnNbc3QyXTtcbiAgICAgICAgYnRyMSA9IGZkdC5uW3N0MV07XG4gICAgICAgIHN0MSA9IGZkdC50W3N0MV07XG4gICAgICAgIGJ0cjIgPSBmZHQubltzdDJdO1xuICAgICAgICBzdDIgPSBmZHQudFtzdDJdO1xuICAgICAgfVxuICAgICAgaWYgKCsrd2MgPiAyNTUpIGVycigwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2MgPSBoYiAtIDEyNztcbiAgICAgIGZvciAoOyBpIDwgd2M7IGkgKz0gMikge1xuICAgICAgICB2YXIgYnl0ZSA9IGRhdFsrK2J0XTtcbiAgICAgICAgaHdbaV0gPSBieXRlID4+IDQ7XG4gICAgICAgIGh3W2kgKyAxXSA9IGJ5dGUgJiAxNTtcbiAgICAgIH1cbiAgICAgICsrYnQ7XG4gICAgfVxuICAgIC8vIHdlaWdodCBleHBvbmVudGlhbCBzdW1cbiAgICB2YXIgd2VzID0gMDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgd2M7ICsraSkge1xuICAgICAgdmFyIHd0ID0gaHdbaV07XG4gICAgICAvLyBiaXRzIG11c3QgYmUgYXQgbW9zdCAxMSwgc2FtZSBhcyB3ZWlnaHRcbiAgICAgIGlmICh3dCA+IDExKSBlcnIoMCk7XG4gICAgICB3ZXMgKz0gd3QgJiYgMSA8PCAod3QgLSAxKTtcbiAgICB9XG4gICAgLy8gbWF4IGJpdHNcbiAgICB2YXIgbWIgPSBtc2Iod2VzKSArIDE7XG4gICAgLy8gdGFibGUgc2l6ZVxuICAgIHZhciB0cyA9IDEgPDwgbWI7XG4gICAgLy8gcmVtYWluaW5nIHN1bVxuICAgIHZhciByZW0gPSB0cyAtIHdlcztcbiAgICAvLyBtdXN0IGJlIHBvd2VyIG9mIDJcbiAgICBpZiAocmVtICYgKHJlbSAtIDEpKSBlcnIoMCk7XG4gICAgaHdbd2MrK10gPSBtc2IocmVtKSArIDE7XG4gICAgZm9yIChpID0gMDsgaSA8IHdjOyArK2kpIHtcbiAgICAgIHZhciB3dCA9IGh3W2ldO1xuICAgICAgKytyY1soaHdbaV0gPSB3dCAmJiBtYiArIDEgLSB3dCldO1xuICAgIH1cbiAgICAvLyBodWYgYnVmXG4gICAgdmFyIGhidWYgPSBuZXcgdTgodHMgPDwgMSk7XG4gICAgLy8gICAgc3ltYm9scyAgICAgICAgICAgICAgICAgICAgICBudW0gYml0c1xuICAgIHZhciBzeW1zID0gaGJ1Zi5zdWJhcnJheSgwLCB0cyksXG4gICAgICBuYiA9IGhidWYuc3ViYXJyYXkodHMpO1xuICAgIHJpW21iXSA9IDA7XG4gICAgZm9yIChpID0gbWI7IGkgPiAwOyAtLWkpIHtcbiAgICAgIHZhciBwdiA9IHJpW2ldO1xuICAgICAgZmlsbChuYiwgaSwgcHYsIChyaVtpIC0gMV0gPSBwdiArIHJjW2ldICogKDEgPDwgKG1iIC0gaSkpKSk7XG4gICAgfVxuICAgIGlmIChyaVswXSAhPT0gdHMpIGVycigwKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgd2M7ICsraSkge1xuICAgICAgdmFyIGJpdHMgPSBod1tpXTtcbiAgICAgIGlmIChiaXRzKSB7XG4gICAgICAgIHZhciBjb2RlID0gcmlbYml0c107XG4gICAgICAgIGZpbGwoc3ltcywgaSwgY29kZSwgKHJpW2JpdHNdID0gY29kZSArICgxIDw8IChtYiAtIGJpdHMpKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gW1xuICAgICAgYnQsXG4gICAgICB7XG4gICAgICAgIG46IG5iLFxuICAgICAgICBiOiBtYixcbiAgICAgICAgczogc3ltcyxcbiAgICAgIH0sXG4gICAgXTtcbiAgfTtcbiAgLy8gVGFibGVzIGdlbmVyYXRlZCB1c2luZyB0aGlzOlxuICAvLyBodHRwczovL2dpc3QuZ2l0aHViLmNvbS8xMDFhcnJvd3ovYTk3OTQ1MmQ0MzU1OTkyY2JmOGYyNTdjYmZmYzllZGRcbiAgLy8gZGVmYXVsdCBsaXRlcmFsIGxlbmd0aCB0YWJsZVxuICB2YXIgZGxsdCA9IC8qI19fUFVSRV9fKi8gcmZzZShcbiAgICAvKiNfX1BVUkVfXyovIG5ldyB1OChbXG4gICAgICA4MSwgMTYsIDk5LCAxNDAsIDQ5LCAxOTgsIDI0LCA5OSwgMTIsIDMzLCAxOTYsIDI0LCA5OSwgMTAyLCAxMDIsIDEzNCwgNzAsXG4gICAgICAxNDYsIDQsXG4gICAgXSksXG4gICAgMCxcbiAgICA2LFxuICApWzFdO1xuICAvLyBkZWZhdWx0IG1hdGNoIGxlbmd0aCB0YWJsZVxuICB2YXIgZG1sdCA9IC8qI19fUFVSRV9fKi8gcmZzZShcbiAgICAvKiNfX1BVUkVfXyovIG5ldyB1OChbXG4gICAgICAzMywgMjAsIDE5NiwgMjQsIDk5LCAxNDAsIDMzLCAxMzIsIDE2LCA2NiwgOCwgMzMsIDEzMiwgMTYsIDY2LCA4LCAzMywgNjgsXG4gICAgICA2OCwgNjgsIDY4LCA2OCwgNjgsIDY4LCA2OCwgMzYsIDksXG4gICAgXSksXG4gICAgMCxcbiAgICA2LFxuICApWzFdO1xuICAvLyBkZWZhdWx0IG9mZnNldCBjb2RlIHRhYmxlXG4gIHZhciBkb2N0ID0gLyojX19QVVJFX18gKi8gcmZzZShcbiAgICAvKiNfX1BVUkVfXyovIG5ldyB1OChbMzIsIDEzMiwgMTYsIDY2LCAxMDIsIDcwLCA2OCwgNjgsIDY4LCA2OCwgMzYsIDczLCAyXSksXG4gICAgMCxcbiAgICA1LFxuICApWzFdO1xuICAvLyBiaXRzIHRvIGJhc2VsaW5lXG4gIHZhciBiMmJsID0gZnVuY3Rpb24gKGIsIHMpIHtcbiAgICB2YXIgbGVuID0gYi5sZW5ndGgsXG4gICAgICBibCA9IG5ldyBpMzIobGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICBibFtpXSA9IHM7XG4gICAgICBzICs9IDEgPDwgYltpXTtcbiAgICB9XG4gICAgcmV0dXJuIGJsO1xuICB9O1xuICAvLyBsaXRlcmFsIGxlbmd0aCBiaXRzXG4gIHZhciBsbGIgPSAvKiNfX1BVUkVfXyAqLyBuZXcgdTgoXG4gICAgLyojX19QVVJFX18gKi8gbmV3IGkzMihbXG4gICAgICAwLCAwLCAwLCAwLCAxNjg0MzAwOSwgNTA1Mjg3NzAsIDEzNDY3ODAyMCwgMjAyMDUwMDU3LCAyNjk0MjIwOTMsXG4gICAgXSkuYnVmZmVyLFxuICAgIDAsXG4gICAgMzYsXG4gICk7XG4gIC8vIGxpdGVyYWwgbGVuZ3RoIGJhc2VsaW5lXG4gIHZhciBsbGJsID0gLyojX19QVVJFX18gKi8gYjJibChsbGIsIDApO1xuICAvLyBtYXRjaCBsZW5ndGggYml0c1xuICB2YXIgbWxiID0gLyojX19QVVJFX18gKi8gbmV3IHU4KFxuICAgIC8qI19fUFVSRV9fICovIG5ldyBpMzIoW1xuICAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY4NDMwMDksIDUwNTI4NzcwLCAxMTc3NjkyMjAsIDE4NTIwNzA0OCxcbiAgICAgIDI1MjU3OTA4NCwgMTYsXG4gICAgXSkuYnVmZmVyLFxuICAgIDAsXG4gICAgNTMsXG4gICk7XG4gIC8vIG1hdGNoIGxlbmd0aCBiYXNlbGluZVxuICB2YXIgbWxibCA9IC8qI19fUFVSRV9fICovIGIyYmwobWxiLCAzKTtcbiAgLy8gZGVjb2RlIGh1ZmZtYW4gc3RyZWFtXG4gIHZhciBkaHUgPSBmdW5jdGlvbiAoZGF0LCBvdXQsIGh1KSB7XG4gICAgdmFyIGxlbiA9IGRhdC5sZW5ndGgsXG4gICAgICBzcyA9IG91dC5sZW5ndGgsXG4gICAgICBsYiA9IGRhdFtsZW4gLSAxXSxcbiAgICAgIG1zayA9ICgxIDw8IGh1LmIpIC0gMSxcbiAgICAgIGViID0gLWh1LmI7XG4gICAgaWYgKCFsYikgZXJyKDApO1xuICAgIHZhciBzdCA9IDAsXG4gICAgICBidHIgPSBodS5iLFxuICAgICAgcG9zID0gKGxlbiA8PCAzKSAtIDggKyBtc2IobGIpIC0gYnRyLFxuICAgICAgaSA9IC0xO1xuICAgIHdoaWxlIChwb3MgPiBlYiAmJiBpIDwgc3MpIHtcbiAgICAgIHZhciBjYnQgPSBwb3MgPj4gMztcbiAgICAgIHZhciB2YWwgPVxuICAgICAgICAoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpIHwgKGRhdFtjYnQgKyAyXSA8PCAxNikpID4+IChwb3MgJiA3KTtcbiAgICAgIHN0ID0gKChzdCA8PCBidHIpIHwgdmFsKSAmIG1zaztcbiAgICAgIG91dFsrK2ldID0gaHUuc1tzdF07XG4gICAgICBwb3MgLT0gYnRyID0gaHUubltzdF07XG4gICAgfVxuICAgIGlmIChwb3MgIT09IGViIHx8IGkgKyAxICE9PSBzcykgZXJyKDApO1xuICB9O1xuICAvLyBkZWNvZGUgaHVmZm1hbiBzdHJlYW0gNHhcbiAgLy8gVE9ETzogdXNlIHdvcmtlcnMgdG8gcGFyYWxsZWxpemVcbiAgdmFyIGRodTQgPSBmdW5jdGlvbiAoZGF0LCBvdXQsIGh1KSB7XG4gICAgdmFyIGJ0ID0gNjtcbiAgICB2YXIgc3MgPSBvdXQubGVuZ3RoLFxuICAgICAgc3oxID0gKHNzICsgMykgPj4gMixcbiAgICAgIHN6MiA9IHN6MSA8PCAxLFxuICAgICAgc3ozID0gc3oxICsgc3oyO1xuICAgIGRodShcbiAgICAgIGRhdC5zdWJhcnJheShidCwgKGJ0ICs9IGRhdFswXSB8IChkYXRbMV0gPDwgOCkpKSxcbiAgICAgIG91dC5zdWJhcnJheSgwLCBzejEpLFxuICAgICAgaHUsXG4gICAgKTtcbiAgICBkaHUoXG4gICAgICBkYXQuc3ViYXJyYXkoYnQsIChidCArPSBkYXRbMl0gfCAoZGF0WzNdIDw8IDgpKSksXG4gICAgICBvdXQuc3ViYXJyYXkoc3oxLCBzejIpLFxuICAgICAgaHUsXG4gICAgKTtcbiAgICBkaHUoXG4gICAgICBkYXQuc3ViYXJyYXkoYnQsIChidCArPSBkYXRbNF0gfCAoZGF0WzVdIDw8IDgpKSksXG4gICAgICBvdXQuc3ViYXJyYXkoc3oyLCBzejMpLFxuICAgICAgaHUsXG4gICAgKTtcbiAgICBkaHUoZGF0LnN1YmFycmF5KGJ0KSwgb3V0LnN1YmFycmF5KHN6MyksIGh1KTtcbiAgfTtcbiAgLy8gcmVhZCBac3RhbmRhcmQgYmxvY2tcbiAgdmFyIHJ6YiA9IGZ1bmN0aW9uIChkYXQsIHN0LCBvdXQpIHtcbiAgICB2YXIgX2E7XG4gICAgdmFyIGJ0ID0gc3QuYjtcbiAgICAvLyAgICBieXRlIDAgICAgICAgIGJsb2NrIHR5cGVcbiAgICB2YXIgYjAgPSBkYXRbYnRdLFxuICAgICAgYnR5cGUgPSAoYjAgPj4gMSkgJiAzO1xuICAgIHN0LmwgPSBiMCAmIDE7XG4gICAgdmFyIHN6ID0gKGIwID4+IDMpIHwgKGRhdFtidCArIDFdIDw8IDUpIHwgKGRhdFtidCArIDJdIDw8IDEzKTtcbiAgICAvLyBlbmQgYnl0ZSBmb3IgYmxvY2tcbiAgICB2YXIgZWJ0ID0gKGJ0ICs9IDMpICsgc3o7XG4gICAgaWYgKGJ0eXBlID09PSAxKSB7XG4gICAgICBpZiAoYnQgPj0gZGF0Lmxlbmd0aCkgcmV0dXJuO1xuICAgICAgc3QuYiA9IGJ0ICsgMTtcbiAgICAgIGlmIChvdXQpIHtcbiAgICAgICAgZmlsbChvdXQsIGRhdFtidF0sIHN0LnksIChzdC55ICs9IHN6KSk7XG4gICAgICAgIHJldHVybiBvdXQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmlsbChuZXcgdTgoc3opLCBkYXRbYnRdKTtcbiAgICB9XG4gICAgaWYgKGVidCA+IGRhdC5sZW5ndGgpIHJldHVybjtcbiAgICBpZiAoYnR5cGUgPT09IDApIHtcbiAgICAgIHN0LmIgPSBlYnQ7XG4gICAgICBpZiAob3V0KSB7XG4gICAgICAgIG91dC5zZXQoZGF0LnN1YmFycmF5KGJ0LCBlYnQpLCBzdC55KTtcbiAgICAgICAgc3QueSArPSBzejtcbiAgICAgICAgcmV0dXJuIG91dDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzbGMoZGF0LCBidCwgZWJ0KTtcbiAgICB9XG4gICAgaWYgKGJ0eXBlID09PSAyKSB7XG4gICAgICAvLyAgICBieXRlIDMgICAgICAgIGxpdCBidHlwZSAgICAgc2l6ZSBmb3JtYXRcbiAgICAgIHZhciBiMyA9IGRhdFtidF0sXG4gICAgICAgIGxidCA9IGIzICYgMyxcbiAgICAgICAgc2YgPSAoYjMgPj4gMikgJiAzO1xuICAgICAgLy8gbGl0IHNyYyBzaXplICBsaXQgY21wIHN6IDQgc3RyZWFtc1xuICAgICAgdmFyIGxzcyA9IGIzID4+IDQsXG4gICAgICAgIGxjcyA9IDAsXG4gICAgICAgIHM0ID0gMDtcbiAgICAgIGlmIChsYnQgPCAyKSB7XG4gICAgICAgIGlmIChzZiAmIDEpIGxzcyB8PSAoZGF0WysrYnRdIDw8IDQpIHwgKHNmICYgMiAmJiBkYXRbKytidF0gPDwgMTIpO1xuICAgICAgICBlbHNlIGxzcyA9IGIzID4+IDM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzNCA9IHNmO1xuICAgICAgICBpZiAoc2YgPCAyKVxuICAgICAgICAgIChsc3MgfD0gKGRhdFsrK2J0XSAmIDYzKSA8PCA0KSxcbiAgICAgICAgICAgIChsY3MgPSAoZGF0W2J0XSA+PiA2KSB8IChkYXRbKytidF0gPDwgMikpO1xuICAgICAgICBlbHNlIGlmIChzZiA9PT0gMilcbiAgICAgICAgICAobHNzIHw9IChkYXRbKytidF0gPDwgNCkgfCAoKGRhdFsrK2J0XSAmIDMpIDw8IDEyKSksXG4gICAgICAgICAgICAobGNzID0gKGRhdFtidF0gPj4gMikgfCAoZGF0WysrYnRdIDw8IDYpKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIChsc3MgfD0gKGRhdFsrK2J0XSA8PCA0KSB8ICgoZGF0WysrYnRdICYgNjMpIDw8IDEyKSksXG4gICAgICAgICAgICAobGNzID0gKGRhdFtidF0gPj4gNikgfCAoZGF0WysrYnRdIDw8IDIpIHwgKGRhdFsrK2J0XSA8PCAxMCkpO1xuICAgICAgfVxuICAgICAgKytidDtcbiAgICAgIC8vIGFkZCBsaXRlcmFscyB0byBlbmQgLSBjYW4gbmV2ZXIgb3ZlcmxhcCB3aXRoIGJhY2tyZWZlcmVuY2VzIGJlY2F1c2UgdW51c2VkIGxpdGVyYWxzIGFsd2F5cyBhcHBlbmRlZFxuICAgICAgdmFyIGJ1ZiA9IG91dCA/IG91dC5zdWJhcnJheShzdC55LCBzdC55ICsgc3QubSkgOiBuZXcgdTgoc3QubSk7XG4gICAgICAvLyBzdGFydGluZyBwb2ludCBmb3IgbGl0ZXJhbHNcbiAgICAgIHZhciBzcGwgPSBidWYubGVuZ3RoIC0gbHNzO1xuICAgICAgaWYgKGxidCA9PT0gMCkgYnVmLnNldChkYXQuc3ViYXJyYXkoYnQsIChidCArPSBsc3MpKSwgc3BsKTtcbiAgICAgIGVsc2UgaWYgKGxidCA9PT0gMSkgZmlsbChidWYsIGRhdFtidCsrXSwgc3BsKTtcbiAgICAgIGVsc2Uge1xuICAgICAgICAvLyBodWZmbWFuIHRhYmxlXG4gICAgICAgIHZhciBodSA9IHN0Lmg7XG4gICAgICAgIGlmIChsYnQgPT09IDIpIHtcbiAgICAgICAgICB2YXIgaHVkID0gcmh1KGRhdCwgYnQpO1xuICAgICAgICAgIC8vIHN1YnRyYWN0IGRlc2NyaXB0aW9uIGxlbmd0aFxuICAgICAgICAgIGxjcyArPSBidCAtIChidCA9IGh1ZFswXSk7XG4gICAgICAgICAgc3QuaCA9IGh1ID0gaHVkWzFdO1xuICAgICAgICB9IGVsc2UgaWYgKCFodSkgZXJyKDApO1xuICAgICAgICAoczQgPyBkaHU0IDogZGh1KShkYXQuc3ViYXJyYXkoYnQsIChidCArPSBsY3MpKSwgYnVmLnN1YmFycmF5KHNwbCksIGh1KTtcbiAgICAgIH1cbiAgICAgIC8vIG51bSBzZXF1ZW5jZXNcbiAgICAgIHZhciBucyA9IGRhdFtidCsrXTtcbiAgICAgIGlmIChucykge1xuICAgICAgICBpZiAobnMgPT09IDI1NSkgbnMgPSAoZGF0W2J0KytdIHwgKGRhdFtidCsrXSA8PCA4KSkgKyAweDdmMDA7XG4gICAgICAgIGVsc2UgaWYgKG5zID4gMTI3KSBucyA9ICgobnMgLSAxMjgpIDw8IDgpIHwgZGF0W2J0KytdO1xuICAgICAgICAvLyBzeW1ib2wgY29tcHJlc3Npb24gbW9kZXNcbiAgICAgICAgdmFyIHNjbSA9IGRhdFtidCsrXTtcbiAgICAgICAgaWYgKHNjbSAmIDMpIGVycigwKTtcbiAgICAgICAgdmFyIGR0cyA9IFtkbWx0LCBkb2N0LCBkbGx0XTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDI7IGkgPiAtMTsgLS1pKSB7XG4gICAgICAgICAgdmFyIG1kID0gKHNjbSA+PiAoKGkgPDwgMSkgKyAyKSkgJiAzO1xuICAgICAgICAgIGlmIChtZCA9PT0gMSkge1xuICAgICAgICAgICAgLy8gcmxlIGJ1ZlxuICAgICAgICAgICAgdmFyIHJidWYgPSBuZXcgdTgoWzAsIDAsIGRhdFtidCsrXV0pO1xuICAgICAgICAgICAgZHRzW2ldID0ge1xuICAgICAgICAgICAgICBzOiByYnVmLnN1YmFycmF5KDIsIDMpLFxuICAgICAgICAgICAgICBuOiByYnVmLnN1YmFycmF5KDAsIDEpLFxuICAgICAgICAgICAgICB0OiBuZXcgdTE2KHJidWYuYnVmZmVyLCAwLCAxKSxcbiAgICAgICAgICAgICAgYjogMCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSBlbHNlIGlmIChtZCA9PT0gMikge1xuICAgICAgICAgICAgLy8gYWNjdXJhY3kgbG9nIDggZm9yIG9mZnNldHMsIDkgZm9yIG90aGVyc1xuICAgICAgICAgICAgKF9hID0gcmZzZShkYXQsIGJ0LCA5IC0gKGkgJiAxKSkpLCAoYnQgPSBfYVswXSksIChkdHNbaV0gPSBfYVsxXSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChtZCA9PT0gMykge1xuICAgICAgICAgICAgaWYgKCFzdC50KSBlcnIoMCk7XG4gICAgICAgICAgICBkdHNbaV0gPSBzdC50W2ldO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgX2IgPSAoc3QudCA9IGR0cyksXG4gICAgICAgICAgbWx0ID0gX2JbMF0sXG4gICAgICAgICAgb2N0ID0gX2JbMV0sXG4gICAgICAgICAgbGx0ID0gX2JbMl07XG4gICAgICAgIHZhciBsYiA9IGRhdFtlYnQgLSAxXTtcbiAgICAgICAgaWYgKCFsYikgZXJyKDApO1xuICAgICAgICB2YXIgc3BvcyA9IChlYnQgPDwgMykgLSA4ICsgbXNiKGxiKSAtIGxsdC5iLFxuICAgICAgICAgIGNidCA9IHNwb3MgPj4gMyxcbiAgICAgICAgICBvdWJ0ID0gMDtcbiAgICAgICAgdmFyIGxzdCA9XG4gICAgICAgICAgKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IGxsdC5iKSAtIDEpO1xuICAgICAgICBjYnQgPSAoc3BvcyAtPSBvY3QuYikgPj4gMztcbiAgICAgICAgdmFyIG9zdCA9XG4gICAgICAgICAgKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG9jdC5iKSAtIDEpO1xuICAgICAgICBjYnQgPSAoc3BvcyAtPSBtbHQuYikgPj4gMztcbiAgICAgICAgdmFyIG1zdCA9XG4gICAgICAgICAgKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG1sdC5iKSAtIDEpO1xuICAgICAgICBmb3IgKCsrbnM7IC0tbnM7ICkge1xuICAgICAgICAgIHZhciBsbGMgPSBsbHQuc1tsc3RdO1xuICAgICAgICAgIHZhciBsYnRyID0gbGx0Lm5bbHN0XTtcbiAgICAgICAgICB2YXIgbWxjID0gbWx0LnNbbXN0XTtcbiAgICAgICAgICB2YXIgbWJ0ciA9IG1sdC5uW21zdF07XG4gICAgICAgICAgdmFyIG9mYyA9IG9jdC5zW29zdF07XG4gICAgICAgICAgdmFyIG9idHIgPSBvY3Qubltvc3RdO1xuICAgICAgICAgIGNidCA9IChzcG9zIC09IG9mYykgPj4gMztcbiAgICAgICAgICB2YXIgb2ZwID0gMSA8PCBvZmM7XG4gICAgICAgICAgdmFyIG9mZiA9XG4gICAgICAgICAgICBvZnAgK1xuICAgICAgICAgICAgKCgoZGF0W2NidF0gfFxuICAgICAgICAgICAgICAoZGF0W2NidCArIDFdIDw8IDgpIHxcbiAgICAgICAgICAgICAgKGRhdFtjYnQgKyAyXSA8PCAxNikgfFxuICAgICAgICAgICAgICAoZGF0W2NidCArIDNdIDw8IDI0KSkgPj4+XG4gICAgICAgICAgICAgIChzcG9zICYgNykpICZcbiAgICAgICAgICAgICAgKG9mcCAtIDEpKTtcbiAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBtbGJbbWxjXSkgPj4gMztcbiAgICAgICAgICB2YXIgbWwgPVxuICAgICAgICAgICAgbWxibFttbGNdICtcbiAgICAgICAgICAgICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpKSA+PlxuICAgICAgICAgICAgICAoc3BvcyAmIDcpKSAmXG4gICAgICAgICAgICAgICgoMSA8PCBtbGJbbWxjXSkgLSAxKSk7XG4gICAgICAgICAgY2J0ID0gKHNwb3MgLT0gbGxiW2xsY10pID4+IDM7XG4gICAgICAgICAgdmFyIGxsID1cbiAgICAgICAgICAgIGxsYmxbbGxjXSArXG4gICAgICAgICAgICAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSkgPj5cbiAgICAgICAgICAgICAgKHNwb3MgJiA3KSkgJlxuICAgICAgICAgICAgICAoKDEgPDwgbGxiW2xsY10pIC0gMSkpO1xuICAgICAgICAgIGNidCA9IChzcG9zIC09IGxidHIpID4+IDM7XG4gICAgICAgICAgbHN0ID1cbiAgICAgICAgICAgIGxsdC50W2xzdF0gK1xuICAgICAgICAgICAgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmXG4gICAgICAgICAgICAgICgoMSA8PCBsYnRyKSAtIDEpKTtcbiAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBtYnRyKSA+PiAzO1xuICAgICAgICAgIG1zdCA9XG4gICAgICAgICAgICBtbHQudFttc3RdICtcbiAgICAgICAgICAgICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJlxuICAgICAgICAgICAgICAoKDEgPDwgbWJ0cikgLSAxKSk7XG4gICAgICAgICAgY2J0ID0gKHNwb3MgLT0gb2J0cikgPj4gMztcbiAgICAgICAgICBvc3QgPVxuICAgICAgICAgICAgb2N0LnRbb3N0XSArXG4gICAgICAgICAgICAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICZcbiAgICAgICAgICAgICAgKCgxIDw8IG9idHIpIC0gMSkpO1xuICAgICAgICAgIGlmIChvZmYgPiAzKSB7XG4gICAgICAgICAgICBzdC5vWzJdID0gc3Qub1sxXTtcbiAgICAgICAgICAgIHN0Lm9bMV0gPSBzdC5vWzBdO1xuICAgICAgICAgICAgc3Qub1swXSA9IG9mZiAtPSAzO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgaWR4ID0gb2ZmIC0gKGxsICE9PSAwKTtcbiAgICAgICAgICAgIGlmIChpZHgpIHtcbiAgICAgICAgICAgICAgb2ZmID0gaWR4ID09PSAzID8gc3Qub1swXSAtIDEgOiBzdC5vW2lkeF07XG4gICAgICAgICAgICAgIGlmIChpZHggPiAxKSBzdC5vWzJdID0gc3Qub1sxXTtcbiAgICAgICAgICAgICAgc3Qub1sxXSA9IHN0Lm9bMF07XG4gICAgICAgICAgICAgIHN0Lm9bMF0gPSBvZmY7XG4gICAgICAgICAgICB9IGVsc2Ugb2ZmID0gc3Qub1swXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsbDsgKytpKSB7XG4gICAgICAgICAgICBidWZbb3VidCArIGldID0gYnVmW3NwbCArIGldO1xuICAgICAgICAgIH1cbiAgICAgICAgICAob3VidCArPSBsbCksIChzcGwgKz0gbGwpO1xuICAgICAgICAgIHZhciBzdGluID0gb3VidCAtIG9mZjtcbiAgICAgICAgICBpZiAoc3RpbiA8IDApIHtcbiAgICAgICAgICAgIHZhciBsZW4gPSAtc3RpbjtcbiAgICAgICAgICAgIHZhciBicyA9IHN0LmUgKyBzdGluO1xuICAgICAgICAgICAgaWYgKGxlbiA+IG1sKSBsZW4gPSBtbDtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgICAgICAgICAgYnVmW291YnQgKyBpXSA9IHN0LndbYnMgKyBpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIChvdWJ0ICs9IGxlbiksIChtbCAtPSBsZW4pLCAoc3RpbiA9IDApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1sOyArK2kpIHtcbiAgICAgICAgICAgIGJ1ZltvdWJ0ICsgaV0gPSBidWZbc3RpbiArIGldO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvdWJ0ICs9IG1sO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvdWJ0ICE9PSBzcGwpIHtcbiAgICAgICAgICB3aGlsZSAoc3BsIDwgYnVmLmxlbmd0aCkge1xuICAgICAgICAgICAgYnVmW291YnQrK10gPSBidWZbc3BsKytdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIG91YnQgPSBidWYubGVuZ3RoO1xuICAgICAgICBpZiAob3V0KSBzdC55ICs9IG91YnQ7XG4gICAgICAgIGVsc2UgYnVmID0gc2xjKGJ1ZiwgMCwgb3VidCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAob3V0KSB7XG4gICAgICAgICAgc3QueSArPSBsc3M7XG4gICAgICAgICAgaWYgKHNwbCkge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsc3M7ICsraSkge1xuICAgICAgICAgICAgICBidWZbaV0gPSBidWZbc3BsICsgaV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHNwbCkgYnVmID0gc2xjKGJ1Ziwgc3BsKTtcbiAgICAgIH1cbiAgICAgIHN0LmIgPSBlYnQ7XG4gICAgICByZXR1cm4gYnVmO1xuICAgIH1cbiAgICBlcnIoMik7XG4gIH07XG4gIC8vIGNvbmNhdFxuICB2YXIgY2N0ID0gZnVuY3Rpb24gKGJ1ZnMsIG9sKSB7XG4gICAgaWYgKGJ1ZnMubGVuZ3RoID09PSAxKSByZXR1cm4gYnVmc1swXTtcbiAgICB2YXIgYnVmID0gbmV3IHU4KG9sKTtcbiAgICBmb3IgKHZhciBpID0gMCwgYiA9IDA7IGkgPCBidWZzLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YXIgY2hrID0gYnVmc1tpXTtcbiAgICAgIGJ1Zi5zZXQoY2hrLCBiKTtcbiAgICAgIGIgKz0gY2hrLmxlbmd0aDtcbiAgICB9XG4gICAgcmV0dXJuIGJ1ZjtcbiAgfTtcbiAgLyoqXG4gICAqIERlY29tcHJlc3NlcyBac3RhbmRhcmQgZGF0YVxuICAgKiBAcGFyYW0gZGF0IFRoZSBpbnB1dCBkYXRhXG4gICAqIEBwYXJhbSBidWYgVGhlIG91dHB1dCBidWZmZXIuIElmIHVuc3BlY2lmaWVkLCB0aGUgZnVuY3Rpb24gd2lsbCBhbGxvY2F0ZVxuICAgKiAgICAgICAgICAgIGV4YWN0bHkgZW5vdWdoIG1lbW9yeSB0byBmaXQgdGhlIGRlY29tcHJlc3NlZCBkYXRhLiBJZiB5b3VyXG4gICAqICAgICAgICAgICAgZGF0YSBoYXMgbXVsdGlwbGUgZnJhbWVzIGFuZCB5b3Uga25vdyB0aGUgb3V0cHV0IHNpemUsIHNwZWNpZnlpbmdcbiAgICogICAgICAgICAgICBpdCB3aWxsIHlpZWxkIGJldHRlciBwZXJmb3JtYW5jZS5cbiAgICogQHJldHVybnMgVGhlIGRlY29tcHJlc3NlZCBkYXRhXG4gICAqL1xuICByZXR1cm4gZnVuY3Rpb24gZGVjb21wcmVzcyhkYXQsIGJ1Zikge1xuICAgIHZhciBidCA9IDAsXG4gICAgICBidWZzID0gW10sXG4gICAgICBuYiA9ICshYnVmLFxuICAgICAgb2wgPSAwO1xuICAgIHdoaWxlIChkYXQubGVuZ3RoKSB7XG4gICAgICB2YXIgc3QgPSByemZoKGRhdCwgbmIgfHwgYnVmKTtcbiAgICAgIGlmICh0eXBlb2Ygc3QgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgaWYgKG5iKSB7XG4gICAgICAgICAgYnVmID0gbnVsbDtcbiAgICAgICAgICBpZiAoc3Qudy5sZW5ndGggPT09IHN0LnUpIHtcbiAgICAgICAgICAgIGJ1ZnMucHVzaCgoYnVmID0gc3QudykpO1xuICAgICAgICAgICAgb2wgKz0gc3QudTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYnVmcy5wdXNoKGJ1Zik7XG4gICAgICAgICAgc3QuZSA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKCFzdC5sKSB7XG4gICAgICAgICAgdmFyIGJsayA9IHJ6YihkYXQsIHN0LCBidWYpO1xuICAgICAgICAgIGlmICghYmxrKSBlcnIoNSk7XG4gICAgICAgICAgaWYgKGJ1Zikgc3QuZSA9IHN0Lnk7XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBidWZzLnB1c2goYmxrKTtcbiAgICAgICAgICAgIG9sICs9IGJsay5sZW5ndGg7XG4gICAgICAgICAgICBjcHcoc3QudywgMCwgYmxrLmxlbmd0aCk7XG4gICAgICAgICAgICBzdC53LnNldChibGssIHN0LncubGVuZ3RoIC0gYmxrLmxlbmd0aCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJ0ID0gc3QuYiArIHN0LmMgKiA0O1xuICAgICAgfSBlbHNlIGJ0ID0gc3Q7XG4gICAgICBkYXQgPSBkYXQuc3ViYXJyYXkoYnQpO1xuICAgIH1cbiAgICByZXR1cm4gY2N0KGJ1ZnMsIG9sKTtcbiAgfTtcbn0pKCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuLy9WZXJzaW9uOiA8IDUuMS4wXG52YXIgY2FtbF9kZWNvbXByZXNzX2lucHV0ID0gbnVsbDtcblxuLy9Qcm92aWRlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1ZlcnNpb246ID49IDUuMS4wXG4vL1ZlcnNpb246IDwgNS4xLjFcbi8vUmVxdWlyZXM6IHpzdGRfZGVjb21wcmVzc1xudmFyIGNhbWxfZGVjb21wcmVzc19pbnB1dCA9IHpzdGRfZGVjb21wcmVzcztcblxuLy9Qcm92aWRlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1ZlcnNpb246ID49IDUuMS4xXG4vL1ZlcnNpb246IDwgNS4yLjBcbnZhciBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSBudWxsO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vVmVyc2lvbjogPj0gNS4yXG4vL1JlcXVpcmVzOiB6c3RkX2RlY29tcHJlc3NcbnZhciBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSB6c3RkX2RlY29tcHJlc3M7XG5cbi8vUHJvdmlkZXM6IGNhbWxfenN0ZF9pbml0aWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vUmVxdWlyZXM6IHpzdGRfZGVjb21wcmVzc1xuLy9WZXJzaW9uOiA+PSA1LjEuMVxuZnVuY3Rpb24gY2FtbF96c3RkX2luaXRpYWxpemUoX3VuaXQpIHtcbiAgY2FtbF9kZWNvbXByZXNzX2lucHV0ID0genN0ZF9kZWNvbXByZXNzO1xuICByZXR1cm4gMTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLyBXZWFrIEFQSVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfa2V5X29mZnNldFxudmFyIGNhbWxfZXBoZV9rZXlfb2Zmc2V0ID0gMztcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG52YXIgY2FtbF9lcGhlX2RhdGFfb2Zmc2V0ID0gMjtcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX25vbmVcbnZhciBjYW1sX2VwaGVfbm9uZSA9IHsgY2FtbF9lcGhlX25vbmU6IDAgfTtcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3NldF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZ2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9zZXRfZGF0YV9vcHRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9zZXRfa2V5KHgsIGksIHYpIHtcbiAgdmFyIG9sZCA9IGNhbWxfZXBoZV9nZXRfZGF0YSh4KTtcbiAgaWYgKGdsb2JhbFRoaXMuV2Vha1JlZiAmJiB2IGluc3RhbmNlb2YgT2JqZWN0KSB2ID0gbmV3IGdsb2JhbFRoaXMuV2Vha1JlZih2KTtcbiAgeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldID0gdjtcbiAgY2FtbF9lcGhlX3NldF9kYXRhX29wdCh4LCBvbGQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3Vuc2V0X2tleVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9nZXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX3NldF9kYXRhX29wdFxuLy9SZXF1aXJlczogY2FtbF9lcGhlX25vbmVcbmZ1bmN0aW9uIGNhbWxfZXBoZV91bnNldF9rZXkoeCwgaSkge1xuICB2YXIgb2xkID0gY2FtbF9lcGhlX2dldF9kYXRhKHgpO1xuICB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gPSBjYW1sX2VwaGVfbm9uZTtcbiAgY2FtbF9lcGhlX3NldF9kYXRhX29wdCh4LCBvbGQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF93ZWFrX2NyZWF0ZVxuZnVuY3Rpb24gY2FtbF9lcGhlX2NyZWF0ZShuKSB7XG4gIHJldHVybiBjYW1sX3dlYWtfY3JlYXRlKG4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dlYWtfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldFxuLy9SZXF1aXJlczogY2FtbF9lcGhlX25vbmVcbmZ1bmN0aW9uIGNhbWxfd2Vha19jcmVhdGUobikge1xuICB2YXIgYWxlbiA9IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgbjtcbiAgdmFyIHggPSBuZXcgQXJyYXkoYWxlbik7XG4gIHhbMF0gPSAyNTE7XG4gIHhbMV0gPSBcImNhbWxfZXBoZV9saXN0X2hlYWRcIjtcbiAgZm9yICh2YXIgaSA9IDI7IGkgPCBhbGVuOyBpKyspIHtcbiAgICB4W2ldID0gY2FtbF9lcGhlX25vbmU7XG4gIH1cbiAgcmV0dXJuIHg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfd2Vha19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9zZXRfa2V5LCBjYW1sX2VwaGVfdW5zZXRfa2V5XG5mdW5jdGlvbiBjYW1sX3dlYWtfc2V0KHgsIGksIHYpIHtcbiAgaWYgKHYgPT09IDApIGNhbWxfZXBoZV91bnNldF9rZXkoeCwgaSk7XG4gIGVsc2UgY2FtbF9lcGhlX3NldF9rZXkoeCwgaSwgdlsxXSk7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0LCBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9ub25lXG4vL0FsaWFzOiBjYW1sX3dlYWtfZ2V0XG5cbmZ1bmN0aW9uIGNhbWxfZXBoZV9nZXRfa2V5KHgsIGkpIHtcbiAgdmFyIHdlYWsgPSB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV07XG4gIGlmICh3ZWFrID09PSBjYW1sX2VwaGVfbm9uZSkgcmV0dXJuIDA7XG4gIGlmIChnbG9iYWxUaGlzLldlYWtSZWYgJiYgd2VhayBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgIHdlYWsgPSB3ZWFrLmRlcmVmKCk7XG4gICAgaWYgKHdlYWsgPT09IHVuZGVmaW5lZCkge1xuICAgICAgeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldID0gY2FtbF9lcGhlX25vbmU7XG4gICAgICB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPSBjYW1sX2VwaGVfbm9uZTtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgfVxuICByZXR1cm4gWzAsIHdlYWtdO1xufVxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9rZXlfY29weVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2dldF9rZXksY2FtbF9lcGhlX2tleV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX2R1cFxuLy9BbGlhczogY2FtbF93ZWFrX2dldF9jb3B5XG5mdW5jdGlvbiBjYW1sX2VwaGVfZ2V0X2tleV9jb3B5KHgsIGkpIHtcbiAgdmFyIHkgPSBjYW1sX2VwaGVfZ2V0X2tleSh4LCBpKTtcbiAgaWYgKHkgPT09IDApIHJldHVybiB5O1xuICB2YXIgeiA9IHlbMV07XG4gIGlmIChBcnJheS5pc0FycmF5KHopKSByZXR1cm4gWzAsIGNhbWxfb2JqX2R1cCh6KV07XG4gIHJldHVybiB5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfY2hlY2tfa2V5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0LCBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9ub25lXG4vL0FsaWFzOiBjYW1sX3dlYWtfY2hlY2tcbmZ1bmN0aW9uIGNhbWxfZXBoZV9jaGVja19rZXkoeCwgaSkge1xuICB2YXIgd2VhayA9IHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXTtcbiAgaWYgKHdlYWsgPT09IGNhbWxfZXBoZV9ub25lKSByZXR1cm4gMDtcbiAgaWYgKGdsb2JhbFRoaXMuV2Vha1JlZiAmJiB3ZWFrIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgd2VhayA9IHdlYWsuZGVyZWYoKTtcbiAgICBpZiAod2VhayA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gPSBjYW1sX2VwaGVfbm9uZTtcbiAgICAgIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9IGNhbWxfZXBoZV9ub25lO1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICB9XG4gIHJldHVybiAxO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfYmxpdF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYmxpdFxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9nZXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX3NldF9kYXRhX29wdFxuLy9BbGlhczogY2FtbF93ZWFrX2JsaXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9ibGl0X2tleShhMSwgaTEsIGEyLCBpMiwgbGVuKSB7XG4gIHZhciBvbGQgPSBjYW1sX2VwaGVfZ2V0X2RhdGEoYTEpO1xuICAvLyBtaW51cyBvbmUgYmVjYXVzZSBjYW1sX2FycmF5X2JsaXQgd29ya3Mgb24gb2NhbWwgYXJyYXlcbiAgY2FtbF9hcnJheV9ibGl0KFxuICAgIGExLFxuICAgIGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaTEgLSAxLFxuICAgIGEyLFxuICAgIGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaTIgLSAxLFxuICAgIGxlbixcbiAgKTtcbiAgY2FtbF9lcGhlX3NldF9kYXRhX29wdChhMiwgb2xkKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9ibGl0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9nZXRfZGF0YSwgY2FtbF9lcGhlX3NldF9kYXRhX29wdFxuZnVuY3Rpb24gY2FtbF9lcGhlX2JsaXRfZGF0YShzcmMsIGRzdCkge1xuICB2YXIgb2xkID0gY2FtbF9lcGhlX2dldF9kYXRhKHNyYyk7XG4gIGNhbWxfZXBoZV9zZXRfZGF0YV9vcHQoZHN0LCBvbGQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXQsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfbm9uZVxuZnVuY3Rpb24gY2FtbF9lcGhlX2dldF9kYXRhKHgpIHtcbiAgdmFyIGRhdGEgPSB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF07XG4gIGlmIChkYXRhID09PSBjYW1sX2VwaGVfbm9uZSkgcmV0dXJuIDA7XG4gIGZvciAodmFyIGkgPSBjYW1sX2VwaGVfa2V5X29mZnNldDsgaSA8IHgubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgayA9IHhbaV07XG4gICAgaWYgKGdsb2JhbFRoaXMuV2Vha1JlZiAmJiBrIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgICB2YXIgZCA9IGsuZGVyZWYoKTtcbiAgICAgIGlmIChkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgeFtpXSA9IGNhbWxfZXBoZV9ub25lO1xuICAgICAgICB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPSBjYW1sX2VwaGVfbm9uZTtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgICBpZiAoZ2xvYmFsVGhpcy5XZWFrTWFwKSB7XG4gICAgICAgIGRhdGEgPSBkYXRhLmdldChrKTtcbiAgICAgICAgaWYgKGRhdGEgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9IGNhbWxfZXBoZV9ub25lO1xuICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBbMCwgZGF0YV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZ2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX2R1cFxuZnVuY3Rpb24gY2FtbF9lcGhlX2dldF9kYXRhX2NvcHkoeCkge1xuICB2YXIgciA9IGNhbWxfZXBoZV9nZXRfZGF0YSh4KTtcbiAgaWYgKHIgPT09IDApIHJldHVybiAwO1xuICB2YXIgeiA9IHJbMV07XG4gIGlmIChBcnJheS5pc0FycmF5KHopKSByZXR1cm4gWzAsIGNhbWxfb2JqX2R1cCh6KV07XG4gIHJldHVybiByO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfc2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldCwgY2FtbF9lcGhlX2tleV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9ub25lXG5mdW5jdGlvbiBjYW1sX2VwaGVfc2V0X2RhdGEoeCwgZGF0YSkge1xuICBmb3IgKHZhciBpID0geC5sZW5ndGggLSAxOyBpID49IGNhbWxfZXBoZV9rZXlfb2Zmc2V0OyBpLS0pIHtcbiAgICB2YXIgayA9IHhbaV07XG4gICAgaWYgKGdsb2JhbFRoaXMuV2Vha1JlZiAmJiBrIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgICB2YXIgZCA9IGsuZGVyZWYoKTtcbiAgICAgIGlmIChkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgeFtpXSA9IGNhbWxfZXBoZV9ub25lO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmIChnbG9iYWxUaGlzLldlYWtNYXApIHtcbiAgICAgICAgZGF0YSA9IG5ldyBnbG9iYWxUaGlzLldlYWtNYXAoKS5zZXQoaywgZGF0YSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9IGRhdGE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfc2V0X2RhdGFfb3B0XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfc2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV91bnNldF9kYXRhXG5mdW5jdGlvbiBjYW1sX2VwaGVfc2V0X2RhdGFfb3B0KHgsIGRhdGFfb3B0KSB7XG4gIGlmIChkYXRhX29wdCA9PT0gMCkgY2FtbF9lcGhlX3Vuc2V0X2RhdGEoeCk7XG4gIGVsc2UgY2FtbF9lcGhlX3NldF9kYXRhKHgsIGRhdGFfb3B0WzFdKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV91bnNldF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9ub25lXG5mdW5jdGlvbiBjYW1sX2VwaGVfdW5zZXRfZGF0YSh4KSB7XG4gIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9IGNhbWxfZXBoZV9ub25lO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2NoZWNrX2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9nZXRfZGF0YVxuZnVuY3Rpb24gY2FtbF9lcGhlX2NoZWNrX2RhdGEoeCkge1xuICB2YXIgZGF0YSA9IGNhbWxfZXBoZV9nZXRfZGF0YSh4KTtcbiAgaWYgKGRhdGEgPT09IDApIHJldHVybiAwO1xuICBlbHNlIHJldHVybiAxO1xufVxuIiwiLy9Qcm92aWRlczogY2FtbF9nY19taW5vclxuZnVuY3Rpb24gY2FtbF9nY19taW5vcihfdW5pdCkge1xuICAvL2F2YWlsYWJsZSB3aXRoIFtub2RlIC0tZXhwb3NlLWdjXVxuICBpZiAodHlwZW9mIGdsb2JhbFRoaXMuZ2MgPT09IFwiZnVuY3Rpb25cIikgZ2xvYmFsVGhpcy5nYyh0cnVlKTtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX21ham9yXG5mdW5jdGlvbiBjYW1sX2djX21ham9yKF91bml0KSB7XG4gIC8vYXZhaWxhYmxlIHdpdGggW25vZGUgLS1leHBvc2UtZ2NdXG4gIGlmICh0eXBlb2YgZ2xvYmFsVGhpcy5nYyA9PT0gXCJmdW5jdGlvblwiKSBnbG9iYWxUaGlzLmdjKCk7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9nY19mdWxsX21ham9yXG5mdW5jdGlvbiBjYW1sX2djX2Z1bGxfbWFqb3IoX3VuaXQpIHtcbiAgLy9hdmFpbGFibGUgd2l0aCBbbm9kZSAtLWV4cG9zZS1nY11cbiAgaWYgKHR5cGVvZiBnbG9iYWxUaGlzLmdjID09PSBcImZ1bmN0aW9uXCIpIGdsb2JhbFRoaXMuZ2MoKTtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX2NvbXBhY3Rpb25cbmZ1bmN0aW9uIGNhbWxfZ2NfY29tcGFjdGlvbihfdW5pdCkge1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfY291bnRlcnNcbmZ1bmN0aW9uIGNhbWxfZ2NfY291bnRlcnMoX3VuaXQpIHtcbiAgcmV0dXJuIFsyNTQsIDAsIDAsIDBdO1xufVxuLy9Qcm92aWRlczogY2FtbF9nY19xdWlja19zdGF0XG5mdW5jdGlvbiBjYW1sX2djX3F1aWNrX3N0YXQoX3VuaXQpIHtcbiAgcmV0dXJuIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nY19zdGF0XG4vL1JlcXVpcmVzOiBjYW1sX2djX3F1aWNrX3N0YXRcbmZ1bmN0aW9uIGNhbWxfZ2Nfc3RhdCh1bml0KSB7XG4gIHJldHVybiBjYW1sX2djX3F1aWNrX3N0YXQodW5pdCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2Nfc2V0XG5mdW5jdGlvbiBjYW1sX2djX3NldChfY29udHJvbCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nY19nZXRcbmZ1bmN0aW9uIGNhbWxfZ2NfZ2V0KF91bml0KSB7XG4gIHJldHVybiBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluYWxfcmVnaXN0ZXIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZmluYWxfcmVnaXN0ZXIoX2YsIF94KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlXG52YXIgYWxsX2ZpbmFsaXplcnMgPSBuZXcgZ2xvYmFsVGhpcy5TZXQoKTtcbmZ1bmN0aW9uIGNhbWxfZmluYWxfcmVnaXN0ZXJfY2FsbGVkX3dpdGhvdXRfdmFsdWUoY2IsIGEpIHtcbiAgaWYgKGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkgJiYgYSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgIHZhciB4ID0gbmV3IGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkoZnVuY3Rpb24gKHgpIHtcbiAgICAgIGFsbF9maW5hbGl6ZXJzLmRlbGV0ZSh4KTtcbiAgICAgIGNiKDApO1xuICAgICAgcmV0dXJuO1xuICAgIH0pO1xuICAgIHgucmVnaXN0ZXIoYSwgeCk7XG4gICAgYWxsX2ZpbmFsaXplcnMuYWRkKHgpO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmFsX3JlbGVhc2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZmluYWxfcmVsZWFzZShfdW5pdCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3N0YXJ0XG5mdW5jdGlvbiBjYW1sX21lbXByb2Zfc3RhcnQoX3JhdGUsIF9zdGFja19zaXplLCBfdHJhY2tlcikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3N0b3BcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9zdG9wKF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21lbXByb2ZfZGlzY2FyZFxuLy9WZXJzaW9uOiA+PSA1LjJcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9kaXNjYXJkKF90KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V2ZW50bG9nX3Jlc3VtZVxuLy9WZXJzaW9uOiA8IDUuMFxuZnVuY3Rpb24gY2FtbF9ldmVudGxvZ19yZXN1bWUoX3VuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXZlbnRsb2dfcGF1c2Vcbi8vVmVyc2lvbjogPCA1LjBcbmZ1bmN0aW9uIGNhbWxfZXZlbnRsb2dfcGF1c2UoX3VuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudFxuLy9WZXJzaW9uOiA8IDUuMFxuZnVuY3Rpb24gY2FtbF9nY19odWdlX2ZhbGxiYWNrX2NvdW50KF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX21ham9yX3NsaWNlXG5mdW5jdGlvbiBjYW1sX2djX21ham9yX3NsaWNlKF93b3JrKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX21pbm9yX3dvcmRzXG5mdW5jdGlvbiBjYW1sX2djX21pbm9yX3dvcmRzKF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9taW5vcl9mcmVlXG5mdW5jdGlvbiBjYW1sX2dldF9taW5vcl9mcmVlKF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9tYWpvcl9idWNrZXRcbi8vVmVyc2lvbjogPCA1LjBcbmZ1bmN0aW9uIGNhbWxfZ2V0X21ham9yX2J1Y2tldChfbikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfbWFqb3JfY3JlZGl0XG4vL1ZlcnNpb246IDwgNS4wXG5mdW5jdGlvbiBjYW1sX2dldF9tYWpvcl9jcmVkaXQoX24pIHtcbiAgcmV0dXJuIDA7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEZvcm1hdFxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX2Zvcm1hdFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3BhcnNlX2Zvcm1hdChmbXQpIHtcbiAgZm10ID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhmbXQpO1xuICB2YXIgbGVuID0gZm10Lmxlbmd0aDtcbiAgaWYgKGxlbiA+IDMxKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJmb3JtYXRfaW50OiBmb3JtYXQgdG9vIGxvbmdcIik7XG4gIHZhciBmID0ge1xuICAgIGp1c3RpZnk6IFwiK1wiLFxuICAgIHNpZ25zdHlsZTogXCItXCIsXG4gICAgZmlsbGVyOiBcIiBcIixcbiAgICBhbHRlcm5hdGU6IGZhbHNlLFxuICAgIGJhc2U6IDAsXG4gICAgc2lnbmVkY29udjogZmFsc2UsXG4gICAgd2lkdGg6IDAsXG4gICAgdXBwZXJjYXNlOiBmYWxzZSxcbiAgICBzaWduOiAxLFxuICAgIHByZWM6IC0xLFxuICAgIGNvbnY6IFwiZlwiLFxuICB9O1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGMgPSBmbXQuY2hhckF0KGkpO1xuICAgIHN3aXRjaCAoYykge1xuICAgICAgY2FzZSBcIi1cIjpcbiAgICAgICAgZi5qdXN0aWZ5ID0gXCItXCI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIitcIjpcbiAgICAgIGNhc2UgXCIgXCI6XG4gICAgICAgIGYuc2lnbnN0eWxlID0gYztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiMFwiOlxuICAgICAgICBmLmZpbGxlciA9IFwiMFwiO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCIjXCI6XG4gICAgICAgIGYuYWx0ZXJuYXRlID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiMVwiOlxuICAgICAgY2FzZSBcIjJcIjpcbiAgICAgIGNhc2UgXCIzXCI6XG4gICAgICBjYXNlIFwiNFwiOlxuICAgICAgY2FzZSBcIjVcIjpcbiAgICAgIGNhc2UgXCI2XCI6XG4gICAgICBjYXNlIFwiN1wiOlxuICAgICAgY2FzZSBcIjhcIjpcbiAgICAgIGNhc2UgXCI5XCI6XG4gICAgICAgIGYud2lkdGggPSAwO1xuICAgICAgICB3aGlsZSAoKChjID0gZm10LmNoYXJDb2RlQXQoaSkgLSA0OCksIGMgPj0gMCAmJiBjIDw9IDkpKSB7XG4gICAgICAgICAgZi53aWR0aCA9IGYud2lkdGggKiAxMCArIGM7XG4gICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgICAgIGktLTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiLlwiOlxuICAgICAgICBmLnByZWMgPSAwO1xuICAgICAgICBpKys7XG4gICAgICAgIHdoaWxlICgoKGMgPSBmbXQuY2hhckNvZGVBdChpKSAtIDQ4KSwgYyA+PSAwICYmIGMgPD0gOSkpIHtcbiAgICAgICAgICBmLnByZWMgPSBmLnByZWMgKiAxMCArIGM7XG4gICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgICAgIGktLTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiZFwiOlxuICAgICAgY2FzZSBcImlcIjpcbiAgICAgICAgZi5zaWduZWRjb252ID0gdHJ1ZTtcbiAgICAgICAgZi5iYXNlID0gMTA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInVcIjpcbiAgICAgICAgZi5iYXNlID0gMTA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInhcIjpcbiAgICAgICAgZi5iYXNlID0gMTY7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIlhcIjpcbiAgICAgICAgZi5iYXNlID0gMTY7XG4gICAgICAgIGYudXBwZXJjYXNlID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwib1wiOlxuICAgICAgICBmLmJhc2UgPSA4O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJlXCI6XG4gICAgICBjYXNlIFwiZlwiOlxuICAgICAgY2FzZSBcImdcIjpcbiAgICAgICAgZi5zaWduZWRjb252ID0gdHJ1ZTtcbiAgICAgICAgZi5jb252ID0gYztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiRVwiOlxuICAgICAgY2FzZSBcIkZcIjpcbiAgICAgIGNhc2UgXCJHXCI6XG4gICAgICAgIGYuc2lnbmVkY29udiA9IHRydWU7XG4gICAgICAgIGYudXBwZXJjYXNlID0gdHJ1ZTtcbiAgICAgICAgZi5jb252ID0gYy50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGY7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluaXNoX2Zvcm1hdHRpbmdcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgcmF3YnVmZmVyKSB7XG4gIGlmIChmLnVwcGVyY2FzZSkgcmF3YnVmZmVyID0gcmF3YnVmZmVyLnRvVXBwZXJDYXNlKCk7XG4gIHZhciBsZW4gPSByYXdidWZmZXIubGVuZ3RoO1xuICAvKiBBZGp1c3QgbGVuIHRvIHJlZmxlY3QgYWRkaXRpb25hbCBjaGFycyAoc2lnbiwgZXRjKSAqL1xuICBpZiAoZi5zaWduZWRjb252ICYmIChmLnNpZ24gPCAwIHx8IGYuc2lnbnN0eWxlICE9PSBcIi1cIikpIGxlbisrO1xuICBpZiAoZi5hbHRlcm5hdGUpIHtcbiAgICBpZiAoZi5iYXNlID09PSA4KSBsZW4gKz0gMTtcbiAgICBpZiAoZi5iYXNlID09PSAxNikgbGVuICs9IDI7XG4gIH1cbiAgLyogRG8gdGhlIGZvcm1hdHRpbmcgKi9cbiAgdmFyIGJ1ZmZlciA9IFwiXCI7XG4gIGlmIChmLmp1c3RpZnkgPT09IFwiK1wiICYmIGYuZmlsbGVyID09PSBcIiBcIilcbiAgICBmb3IgKHZhciBpID0gbGVuOyBpIDwgZi53aWR0aDsgaSsrKSBidWZmZXIgKz0gXCIgXCI7XG4gIGlmIChmLnNpZ25lZGNvbnYpIHtcbiAgICBpZiAoZi5zaWduIDwgMCkgYnVmZmVyICs9IFwiLVwiO1xuICAgIGVsc2UgaWYgKGYuc2lnbnN0eWxlICE9PSBcIi1cIikgYnVmZmVyICs9IGYuc2lnbnN0eWxlO1xuICB9XG4gIGlmIChmLmFsdGVybmF0ZSAmJiBmLmJhc2UgPT09IDgpIGJ1ZmZlciArPSBcIjBcIjtcbiAgaWYgKGYuYWx0ZXJuYXRlICYmIGYuYmFzZSA9PT0gMTYpIGJ1ZmZlciArPSBmLnVwcGVyY2FzZSA/IFwiMFhcIiA6IFwiMHhcIjtcbiAgaWYgKGYuanVzdGlmeSA9PT0gXCIrXCIgJiYgZi5maWxsZXIgPT09IFwiMFwiKVxuICAgIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSBcIjBcIjtcbiAgYnVmZmVyICs9IHJhd2J1ZmZlcjtcbiAgaWYgKGYuanVzdGlmeSA9PT0gXCItXCIpIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSBcIiBcIjtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoYnVmZmVyKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcblxuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVcbnZhciBjYW1sX2dyX3N0YXRlO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZVxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX2dldCgpIHtcbiAgaWYgKGNhbWxfZ3Jfc3RhdGUpIHtcbiAgICByZXR1cm4gY2FtbF9ncl9zdGF0ZTtcbiAgfVxuICB0aHJvdyBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UoW1xuICAgIDAsXG4gICAgY2FtbF9uYW1lZF92YWx1ZShcIkdyYXBoaWNzLkdyYXBoaWNfZmFpbHVyZVwiKSxcbiAgICBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiTm90IGluaXRpYWxpemVkXCIpLFxuICBdKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlLGNhbWxfZ3Jfc3RhdGVfaW5pdFxuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9zZXQoY3R4KSB7XG4gIGNhbWxfZ3Jfc3RhdGUgPSBjdHg7XG4gIGNhbWxfZ3Jfc3RhdGVfaW5pdCgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9vcGVuX2dyYXBoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX29wZW5fZ3JhcGgoaW5mbykge1xuICB2YXIgaW5mbyA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKGluZm8pO1xuICBmdW5jdGlvbiBnZXQobmFtZSkge1xuICAgIHZhciByZXMgPSBpbmZvLm1hdGNoKFwiKF58LCkgKlwiICsgbmFtZSArIFwiICo9ICooW2EtekEtWjAtOV9dKykgKigsfCQpXCIpO1xuICAgIGlmIChyZXMpIHJldHVybiByZXNbMl07XG4gIH1cbiAgdmFyIHNwZWNzID0gW107XG4gIGlmICghKGluZm8gPT09IFwiXCIpKSBzcGVjcy5wdXNoKGluZm8pO1xuICB2YXIgdGFyZ2V0ID0gZ2V0KFwidGFyZ2V0XCIpO1xuICBpZiAoIXRhcmdldCkgdGFyZ2V0ID0gXCJcIjtcbiAgdmFyIHN0YXR1cyA9IGdldChcInN0YXR1c1wiKTtcbiAgaWYgKCFzdGF0dXMpIHNwZWNzLnB1c2goXCJzdGF0dXM9MVwiKTtcblxuICB2YXIgdyA9IGdldChcIndpZHRoXCIpO1xuICB3ID0gdyA/IE51bWJlci5wYXJzZUludCh3KSA6IDIwMDtcbiAgc3BlY3MucHVzaChcIndpZHRoPVwiICsgdyk7XG5cbiAgdmFyIGggPSBnZXQoXCJoZWlnaHRcIik7XG4gIGggPSBoID8gTnVtYmVyLnBhcnNlSW50KGgpIDogMjAwO1xuICBzcGVjcy5wdXNoKFwiaGVpZ2h0PVwiICsgaCk7XG5cbiAgdmFyIHdpbiA9IGdsb2JhbFRoaXMub3BlbihcImFib3V0OmJsYW5rXCIsIHRhcmdldCwgc3BlY3Muam9pbihcIixcIikpO1xuICBpZiAoIXdpbikge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJHcmFwaGljcy5vcGVuX2dyYXBoOiBjYW5ub3Qgb3BlbiB0aGUgd2luZG93XCIpO1xuICB9XG4gIHZhciBkb2MgPSB3aW4uZG9jdW1lbnQ7XG4gIHZhciBjYW52YXMgPSBkb2MuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgY2FudmFzLndpZHRoID0gdztcbiAgY2FudmFzLmhlaWdodCA9IGg7XG4gIHZhciBjdHggPSBjYW1sX2dyX3N0YXRlX2NyZWF0ZShjYW52YXMsIHcsIGgpO1xuICBjdHguc2V0X3RpdGxlID0gZnVuY3Rpb24gKHRpdGxlKSB7XG4gICAgZG9jLnRpdGxlID0gdGl0bGU7XG4gIH07XG4gIGNhbWxfZ3Jfc3RhdGVfc2V0KGN0eCk7XG4gIHZhciBib2R5ID0gZG9jLmJvZHk7XG4gIGJvZHkuc3R5bGUubWFyZ2luID0gXCIwcHhcIjtcbiAgYm9keS5hcHBlbmRDaGlsZChjYW52YXMpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9pbml0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3NldF9jb2xvcixjYW1sX2dyX21vdmV0byxjYW1sX2dyX3Jlc2l6ZV93aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgsY2FtbF9ncl9zZXRfdGV4dF9zaXplLGNhbWxfZ3Jfc2V0X2ZvbnRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZVxuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9pbml0KCkge1xuICBjYW1sX2dyX21vdmV0byhjYW1sX2dyX3N0YXRlLngsIGNhbWxfZ3Jfc3RhdGUueSk7XG4gIGNhbWxfZ3JfcmVzaXplX3dpbmRvdyhjYW1sX2dyX3N0YXRlLndpZHRoLCBjYW1sX2dyX3N0YXRlLmhlaWdodCk7XG4gIGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgoY2FtbF9ncl9zdGF0ZS5saW5lX3dpZHRoKTtcbiAgY2FtbF9ncl9zZXRfdGV4dF9zaXplKGNhbWxfZ3Jfc3RhdGUudGV4dF9zaXplKTtcbiAgY2FtbF9ncl9zZXRfZm9udChjYW1sX2dyX3N0YXRlLmZvbnQpO1xuICBjYW1sX2dyX3NldF9jb2xvcihjYW1sX2dyX3N0YXRlLmNvbG9yKTtcbiAgY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlKGNhbWxfZ3Jfc3RhdGUudGl0bGUpO1xuICAvL2NhbWxfZ3JfcmVzaXplX3dpbmRvdyBtaWdodCByZXNldCBzb21lIGNhbnZhcycgcHJvcGVydGllc1xuICBjYW1sX2dyX3N0YXRlLmNvbnRleHQudGV4dEJhc2VsaW5lID0gXCJib3R0b21cIjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfY3JlYXRlKGNhbnZhcywgdywgaCkge1xuICB2YXIgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XG4gIHJldHVybiB7XG4gICAgY29udGV4dDogY29udGV4dCxcbiAgICBjYW52YXM6IGNhbnZhcyxcbiAgICB4OiAwLFxuICAgIHk6IDAsXG4gICAgd2lkdGg6IHcsXG4gICAgaGVpZ2h0OiBoLFxuICAgIGxpbmVfd2lkdGg6IDEsXG4gICAgZm9udDogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcImZpeGVkXCIpLFxuICAgIHRleHRfc2l6ZTogMjYsXG4gICAgY29sb3I6IDB4MDAwMDAwLFxuICAgIHRpdGxlOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpLFxuICB9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RvY19vZl9zdGF0ZVxuZnVuY3Rpb24gY2FtbF9ncl9kb2Nfb2Zfc3RhdGUoc3RhdGUpIHtcbiAgaWYgKHN0YXRlLmNhbnZhcy5vd25lckRvY3VtZW50KSByZXR1cm4gc3RhdGUuY2FudmFzLm93bmVyRG9jdW1lbnQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY2xvc2VfZ3JhcGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2Nsb3NlX2dyYXBoKCkge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY2FudmFzLndpZHRoID0gMDtcbiAgcy5jYW52YXMuaGVpZ2h0ID0gMDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGUobmFtZSkge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMudGl0bGUgPSBuYW1lO1xuICB2YXIganNuYW1lID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZSk7XG4gIGlmIChzLnNldF90aXRsZSkgcy5zZXRfdGl0bGUoanNuYW1lKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcmVzaXplX3dpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcmVzaXplX3dpbmRvdyh3LCBoKSB7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy53aWR0aCA9IHc7XG4gIHMuaGVpZ2h0ID0gaDtcbiAgaWYgKHcgIT09IHMuY2FudmFzLndpZHRoKSBzLmNhbnZhcy53aWR0aCA9IHc7XG4gIGlmIChoICE9PSBzLmNhbnZhcy5oZWlnaHQpIHMuY2FudmFzLmhlaWdodCA9IGg7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2NsZWFyX2dyYXBoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jbGVhcl9ncmFwaCgpIHtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIHMuY2FudmFzLndpZHRoLCBzLmNhbnZhcy5oZWlnaHQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zaXplX3hcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NpemVfeCgpIHtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy53aWR0aDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2l6ZV95XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zaXplX3koKSB7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMuaGVpZ2h0O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF9jb2xvclxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X2NvbG9yKGNvbG9yKSB7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgZnVuY3Rpb24gY29udmVydChudW1iZXIpIHtcbiAgICB2YXIgc3RyID0gXCJcIiArIG51bWJlci50b1N0cmluZygxNik7XG4gICAgd2hpbGUgKHN0ci5sZW5ndGggPCAyKSBzdHIgPSBcIjBcIiArIHN0cjtcbiAgICByZXR1cm4gc3RyO1xuICB9XG4gIHZhciByID0gKGNvbG9yID4+IDE2KSAmIDB4ZmYsXG4gICAgZyA9IChjb2xvciA+PiA4KSAmIDB4ZmYsXG4gICAgYiA9IChjb2xvciA+PiAwKSAmIDB4ZmY7XG4gIHMuY29sb3IgPSBjb2xvcjtcbiAgdmFyIGNfc3RyID0gXCIjXCIgKyBjb252ZXJ0KHIpICsgY29udmVydChnKSArIGNvbnZlcnQoYik7XG4gIHMuY29udGV4dC5maWxsU3R5bGUgPSBjX3N0cjtcbiAgcy5jb250ZXh0LnN0cm9rZVN0eWxlID0gY19zdHI7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9wbG90XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9wbG90KHgsIHkpIHtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaW0gPSBzLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKDEsIDEpO1xuICB2YXIgZCA9IGltLmRhdGE7XG4gIHZhciBjb2xvciA9IHMuY29sb3I7XG4gIGRbMF0gPSAoY29sb3IgPj4gMTYpICYgMHhmZjsgLy9yXG4gIChkWzFdID1cbiAgICAoY29sb3IgPj4gOCkgJlxuICAgIDB4ZmYpLCAvL2dcbiAgICAoZFsyXSA9IChjb2xvciA+PiAwKSAmIDB4ZmYpOyAvL2JcbiAgZFszXSA9IDB4ZmY7IC8vYVxuICBzLnggPSB4O1xuICBzLnkgPSB5O1xuICBzLmNvbnRleHQucHV0SW1hZ2VEYXRhKGltLCB4LCBzLmhlaWdodCAtIHkpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9wb2ludF9jb2xvclxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcG9pbnRfY29sb3IoeCwgeSkge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBpbSA9IHMuY29udGV4dC5nZXRJbWFnZURhdGEoeCwgcy5oZWlnaHQgLSB5LCAxLCAxKTtcbiAgdmFyIGQgPSBpbS5kYXRhO1xuICByZXR1cm4gKGRbMF0gPDwgMTYpICsgKGRbMV0gPDwgOCkgKyBkWzJdO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9tb3ZldG9cbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX21vdmV0byh4LCB5KSB7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy54ID0geDtcbiAgcy55ID0geTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3VycmVudF94XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jdXJyZW50X3goKSB7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMueDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3VycmVudF95XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jdXJyZW50X3koKSB7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMueTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfbGluZXRvXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9saW5ldG8oeCwgeSkge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgcy5jb250ZXh0Lm1vdmVUbyhzLngsIHMuaGVpZ2h0IC0gcy55KTtcbiAgcy5jb250ZXh0LmxpbmVUbyh4LCBzLmhlaWdodCAtIHkpO1xuICBzLmNvbnRleHQuc3Ryb2tlKCk7XG4gIHMueCA9IHg7XG4gIHMueSA9IHk7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X3JlY3Rcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfcmVjdCh4LCB5LCB3LCBoKSB7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LnN0cm9rZVJlY3QoeCwgcy5oZWlnaHQgLSB5LCB3LCAtaCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2FyY19hdXhcbmZ1bmN0aW9uIGNhbWxfZ3JfYXJjX2F1eChjdHgsIGN4LCBjeSwgcnksIHJ4LCBhMSwgYTIpIHtcbiAgd2hpbGUgKGExID4gYTIpIGEyICs9IDM2MDtcbiAgYTEgLz0gMTgwO1xuICBhMiAvPSAxODA7XG4gIHZhciByb3QgPSAwLFxuICAgIHhQb3MsXG4gICAgeVBvcyxcbiAgICB4UG9zX3ByZXYsXG4gICAgeVBvc19wcmV2O1xuICB2YXIgc3BhY2UgPSAyO1xuICB2YXIgbnVtID0gKCgoYTIgLSBhMSkgKiBNYXRoLlBJICogKChyeCArIHJ5KSAvIDIpKSAvIHNwYWNlKSB8IDA7XG4gIHZhciBkZWx0YSA9ICgoYTIgLSBhMSkgKiBNYXRoLlBJKSAvIG51bTtcbiAgdmFyIGkgPSBhMSAqIE1hdGguUEk7XG4gIGZvciAodmFyIGogPSAwOyBqIDw9IG51bTsgaisrKSB7XG4gICAgeFBvcyA9XG4gICAgICBjeCAtXG4gICAgICByeCAqIE1hdGguc2luKGkpICogTWF0aC5zaW4ocm90ICogTWF0aC5QSSkgK1xuICAgICAgcnkgKiBNYXRoLmNvcyhpKSAqIE1hdGguY29zKHJvdCAqIE1hdGguUEkpO1xuICAgIHhQb3MgPSB4UG9zLnRvRml4ZWQoMik7XG4gICAgeVBvcyA9XG4gICAgICBjeSArXG4gICAgICByeSAqIE1hdGguY29zKGkpICogTWF0aC5zaW4ocm90ICogTWF0aC5QSSkgK1xuICAgICAgcnggKiBNYXRoLnNpbihpKSAqIE1hdGguY29zKHJvdCAqIE1hdGguUEkpO1xuICAgIHlQb3MgPSB5UG9zLnRvRml4ZWQoMik7XG4gICAgaWYgKGogPT09IDApIHtcbiAgICAgIGN0eC5tb3ZlVG8oeFBvcywgeVBvcyk7XG4gICAgfSBlbHNlIGlmICh4UG9zX3ByZXYgIT09IHhQb3MgfHwgeVBvc19wcmV2ICE9PSB5UG9zKSB7XG4gICAgICBjdHgubGluZVRvKHhQb3MsIHlQb3MpO1xuICAgIH1cbiAgICB4UG9zX3ByZXYgPSB4UG9zO1xuICAgIHlQb3NfcHJldiA9IHlQb3M7XG4gICAgaSAtPSBkZWx0YTsgLy9jY3dcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2FyY1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXQsIGNhbWxfZ3JfYXJjX2F1eFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X2FyYyh4LCB5LCByeCwgcnksIGExLCBhMikge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgY2FtbF9ncl9hcmNfYXV4KHMuY29udGV4dCwgeCwgcy5oZWlnaHQgLSB5LCByeCwgcnksIGExLCBhMik7XG4gIHMuY29udGV4dC5zdHJva2UoKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NldF9saW5lX3dpZHRoKHcpIHtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmxpbmVfd2lkdGggPSB3O1xuICBzLmNvbnRleHQubGluZVdpZHRoID0gdztcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZmlsbF9yZWN0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9maWxsX3JlY3QoeCwgeSwgdywgaCkge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5maWxsUmVjdCh4LCBzLmhlaWdodCAtIHksIHcsIC1oKTtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfcG9seVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZmlsbF9wb2x5KGFyKSB7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBzLmNvbnRleHQubW92ZVRvKGFyWzFdWzFdLCBzLmhlaWdodCAtIGFyWzFdWzJdKTtcbiAgZm9yICh2YXIgaSA9IDI7IGkgPCBhci5sZW5ndGg7IGkrKylcbiAgICBzLmNvbnRleHQubGluZVRvKGFyW2ldWzFdLCBzLmhlaWdodCAtIGFyW2ldWzJdKTtcbiAgcy5jb250ZXh0LmxpbmVUbyhhclsxXVsxXSwgcy5oZWlnaHQgLSBhclsxXVsyXSk7XG4gIHMuY29udGV4dC5maWxsKCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfYXJjXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldCwgY2FtbF9ncl9hcmNfYXV4XG5mdW5jdGlvbiBjYW1sX2dyX2ZpbGxfYXJjKHgsIHksIHJ4LCByeSwgYTEsIGEyKSB7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBjYW1sX2dyX2FyY19hdXgocy5jb250ZXh0LCB4LCBzLmhlaWdodCAtIHksIHJ4LCByeSwgYTEsIGEyKTtcbiAgcy5jb250ZXh0LmZpbGwoKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19zdHJcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfc3RyKHN0cikge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBtID0gcy5jb250ZXh0Lm1lYXN1cmVUZXh0KHN0cik7XG4gIHZhciBkeCA9IG0ud2lkdGg7XG4gIHMuY29udGV4dC5maWxsVGV4dChzdHIsIHMueCwgcy5oZWlnaHQgLSBzLnkpO1xuICBzLnggKz0gZHggfCAwO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2NoYXJcbi8vUmVxdWlyZXM6IGNhbWxfZ3JfZHJhd19zdHJcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19jaGFyKGMpIHtcbiAgY2FtbF9ncl9kcmF3X3N0cihTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfZ3JfZHJhd19zdHJcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfc3RyaW5nKHN0cikge1xuICBjYW1sX2dyX2RyYXdfc3RyKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHN0cikpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfZm9udFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX3NldF9mb250KGYpIHtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmZvbnQgPSBmO1xuICBzLmNvbnRleHQuZm9udCA9IHMudGV4dF9zaXplICsgXCJweCBcIiArIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMuZm9udCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF90ZXh0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9zZXRfdGV4dF9zaXplKHNpemUpIHtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLnRleHRfc2l6ZSA9IHNpemU7XG4gIHMuY29udGV4dC5mb250ID0gcy50ZXh0X3NpemUgKyBcInB4IFwiICsgY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocy5mb250KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfdGV4dF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3JfdGV4dF9zaXplKHR4dCkge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciB3ID0gcy5jb250ZXh0Lm1lYXN1cmVUZXh0KGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHR4dCkpLndpZHRoO1xuICByZXR1cm4gWzAsIHcsIHMudGV4dF9zaXplXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9tYWtlX2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9tYWtlX2ltYWdlKGFycikge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBoID0gYXJyLmxlbmd0aCAtIDE7XG4gIHZhciB3ID0gYXJyWzFdLmxlbmd0aCAtIDE7XG4gIHZhciBpbSA9IHMuY29udGV4dC5jcmVhdGVJbWFnZURhdGEodywgaCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaDsgaSsrKSB7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCB3OyBqKyspIHtcbiAgICAgIHZhciBjID0gYXJyW2kgKyAxXVtqICsgMV07XG4gICAgICB2YXIgbyA9IGkgKiAodyAqIDQpICsgaiAqIDQ7XG4gICAgICBpZiAoYyA9PT0gLTEpIHtcbiAgICAgICAgaW0uZGF0YVtvICsgMF0gPSAwO1xuICAgICAgICBpbS5kYXRhW28gKyAxXSA9IDA7XG4gICAgICAgIGltLmRhdGFbbyArIDJdID0gMDtcbiAgICAgICAgaW0uZGF0YVtvICsgM10gPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW0uZGF0YVtvICsgMF0gPSAoYyA+PiAxNikgJiAweGZmO1xuICAgICAgICBpbS5kYXRhW28gKyAxXSA9IChjID4+IDgpICYgMHhmZjtcbiAgICAgICAgaW0uZGF0YVtvICsgMl0gPSAoYyA+PiAwKSAmIDB4ZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDNdID0gMHhmZjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGltO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kdW1wX2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kdW1wX2ltYWdlKGltKSB7XG4gIHZhciBkYXRhID0gWzBdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGltLmhlaWdodDsgaSsrKSB7XG4gICAgZGF0YVtpICsgMV0gPSBbMF07XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBpbS53aWR0aDsgaisrKSB7XG4gICAgICB2YXIgbyA9IGkgKiAoaW0ud2lkdGggKiA0KSArIGogKiA0LFxuICAgICAgICByID0gaW0uZGF0YVtvICsgMF0sXG4gICAgICAgIGcgPSBpbS5kYXRhW28gKyAxXSxcbiAgICAgICAgYiA9IGltLmRhdGFbbyArIDJdO1xuICAgICAgZGF0YVtpICsgMV1baiArIDFdID0gKHIgPDwgMTYpICsgKGcgPDwgOCkgKyBiO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZGF0YTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19pbWFnZShpbSwgeCwgeSkge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIGlmICghaW0uaW1hZ2UpIHtcbiAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgICBjYW52YXMud2lkdGggPSBzLndpZHRoO1xuICAgIGNhbnZhcy5oZWlnaHQgPSBzLmhlaWdodDtcbiAgICBjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpLnB1dEltYWdlRGF0YShpbSwgMCwgMCk7XG4gICAgdmFyIGltYWdlID0gbmV3IGdsb2JhbFRoaXMuSW1hZ2UoKTtcbiAgICBpbWFnZS5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBzLmNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCB4LCBzLmhlaWdodCAtIGltLmhlaWdodCAtIHkpO1xuICAgICAgaW0uaW1hZ2UgPSBpbWFnZTtcbiAgICB9O1xuICAgIGltYWdlLnNyYyA9IGNhbnZhcy50b0RhdGFVUkwoXCJpbWFnZS9wbmdcIik7XG4gIH0gZWxzZSB7XG4gICAgcy5jb250ZXh0LmRyYXdJbWFnZShpbS5pbWFnZSwgeCwgcy5oZWlnaHQgLSBpbS5oZWlnaHQgLSB5KTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3JlYXRlX2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jcmVhdGVfaW1hZ2UoeCwgeSkge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKHgsIHkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9ibGl0X2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9ibGl0X2ltYWdlKGltLCB4LCB5KSB7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIGltMiA9IHMuY29udGV4dC5nZXRJbWFnZURhdGEoXG4gICAgeCxcbiAgICBzLmhlaWdodCAtIGltLmhlaWdodCAtIHksXG4gICAgaW0ud2lkdGgsXG4gICAgaW0uaGVpZ2h0LFxuICApO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGltMi5kYXRhLmxlbmd0aDsgaSArPSA0KSB7XG4gICAgaW0uZGF0YVtpXSA9IGltMi5kYXRhW2ldO1xuICAgIGltLmRhdGFbaSArIDFdID0gaW0yLmRhdGFbaSArIDFdO1xuICAgIGltLmRhdGFbaSArIDJdID0gaW0yLmRhdGFbaSArIDJdO1xuICAgIGltLmRhdGFbaSArIDNdID0gaW0yLmRhdGFbaSArIDNdO1xuICB9XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9zaWdpb19oYW5kbGVyXG5mdW5jdGlvbiBjYW1sX2dyX3NpZ2lvX2hhbmRsZXIoKSB7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9zaWdpb19zaWduYWxcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2lnaW9fc2lnbmFsKCkge1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfd2FpdF9ldmVudFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl93YWl0X2V2ZW50KF9ldmwpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3Jfd2FpdF9ldmVudCBub3QgSW1wbGVtZW50ZWQ6IHVzZSBHcmFwaGljc19qcyBpbnN0ZWFkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N5bmNocm9uaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX3N5bmNocm9uaXplKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9zeW5jaHJvbml6ZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3JlbWVtYmVyX21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3JfcmVtZW1iZXJfbW9kZSgpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3JfcmVtZW1iZXJfbW9kZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2Rpc3BsYXlfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9kaXNwbGF5X21vZGUoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX2Rpc3BsYXlfbW9kZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfd2luZG93X2lkXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX3dpbmRvd19pZChfYSkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl93aW5kb3dfaWQgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX29wZW5fc3Vid2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX29wZW5fc3Vid2luZG93KF9hLCBfYiwgX2MsIF9kKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX29wZW5fc3Vid2luZG93IG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9jbG9zZV9zdWJ3aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3JfY2xvc2Vfc3Vid2luZG93KF9hKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBsaWJyYXJ5XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSnNsaWI6IGNvZGUgc3BlY2lmaWMgdG8gSnNfb2Zfb2NhbWxcblxuLy9Qcm92aWRlczogY2FtbF9qc19odG1sX2VzY2FwZSBjb25zdCAoY29uc3QpXG52YXIgY2FtbF9qc19yZWdleHBzID0geyBhbXA6IC8mL2csIGx0OiAvPC9nLCBxdW90OiAvXCIvZywgYWxsOiAvWyY8XCJdLyB9O1xuZnVuY3Rpb24gY2FtbF9qc19odG1sX2VzY2FwZShzKSB7XG4gIGlmICghY2FtbF9qc19yZWdleHBzLmFsbC50ZXN0KHMpKSByZXR1cm4gcztcbiAgcmV0dXJuIHNcbiAgICAucmVwbGFjZShjYW1sX2pzX3JlZ2V4cHMuYW1wLCBcIiZhbXA7XCIpXG4gICAgLnJlcGxhY2UoY2FtbF9qc19yZWdleHBzLmx0LCBcIiZsdDtcIilcbiAgICAucmVwbGFjZShjYW1sX2pzX3JlZ2V4cHMucXVvdCwgXCImcXVvdDtcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfaHRtbF9lbnRpdGllc1xuZnVuY3Rpb24gY2FtbF9qc19odG1sX2VudGl0aWVzKHMpIHtcbiAgdmFyIGVudGl0eSA9IC9eJiM/WzAtOWEtekEtWl0rOyQvO1xuICBpZiAocy5tYXRjaChlbnRpdHkpKSB7XG4gICAgdmFyIHN0cixcbiAgICAgIHRlbXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwicFwiKTtcbiAgICB0ZW1wLmlubmVySFRNTCA9IHM7XG4gICAgc3RyID0gdGVtcC50ZXh0Q29udGVudCB8fCB0ZW1wLmlubmVyVGV4dDtcbiAgICB0ZW1wID0gbnVsbDtcbiAgICByZXR1cm4gc3RyO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZ2V0X2NvbnNvbGUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfanNfZ2V0X2NvbnNvbGUoKSB7XG4gIHZhciBjID0gY29uc29sZTtcbiAgdmFyIG0gPSBbXG4gICAgXCJsb2dcIixcbiAgICBcImRlYnVnXCIsXG4gICAgXCJpbmZvXCIsXG4gICAgXCJ3YXJuXCIsXG4gICAgXCJlcnJvclwiLFxuICAgIFwiYXNzZXJ0XCIsXG4gICAgXCJkaXJcIixcbiAgICBcImRpcnhtbFwiLFxuICAgIFwidHJhY2VcIixcbiAgICBcImdyb3VwXCIsXG4gICAgXCJncm91cENvbGxhcHNlZFwiLFxuICAgIFwiZ3JvdXBFbmRcIixcbiAgICBcInRpbWVcIixcbiAgICBcInRpbWVFbmRcIixcbiAgXTtcbiAgZnVuY3Rpb24gZigpIHt9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbS5sZW5ndGg7IGkrKykgaWYgKCFjW21baV1dKSBjW21baV1dID0gZjtcbiAgcmV0dXJuIGM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL1dlYWtkZWZcbmZ1bmN0aW9uIGNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlKF91bml0KSB7XG4gIGlmICh0eXBlb2YgWE1MSHR0cFJlcXVlc3QgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiWE1MSHR0cFJlcXVlc3QgaXMgbm90IGF2YWlsYWJsZVwiKTtcbiAgfVxuICB0cnkge1xuICAgIHJldHVybiBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgfSBjYXRjaCB7XG4gICAgY2FtbF9mYWlsd2l0aChcIkZhaWxlZCB0byBjcmVhdGUgWE1MSHR0cFJlcXVlc3RcIik7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19lcnJvcl9vZl9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uKGV4bikge1xuICBpZiAoZXhuLmpzX2Vycm9yKSB7XG4gICAgcmV0dXJuIGV4bi5qc19lcnJvcjtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKi9cbi8qICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKi9cbi8qICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgd2l0aCAgICAgKi9cbi8qICB0aGUgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gZmlsZSAuLi9MSUNFTlNFLiAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyogJElkOiBsZXhpbmcuYyA2MDQ1IDIwMDQtMDEtMDEgMTY6NDI6NDNaIGRvbGlnZXogJCAqL1xuXG4vKiBUaGUgdGFibGUtZHJpdmVuIGF1dG9tYXRvbiBmb3IgbGV4ZXJzIGdlbmVyYXRlZCBieSBjYW1sbGV4LiAqL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2xleF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9sZXhfYXJyYXkocykge1xuICBzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKTtcbiAgdmFyIGwgPSBzLmxlbmd0aCAvIDI7XG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKylcbiAgICBhW2ldID0gKChzLmNoYXJDb2RlQXQoMiAqIGkpIHwgKHMuY2hhckNvZGVBdCgyICogaSArIDEpIDw8IDgpKSA8PCAxNikgPj4gMTY7XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xleF9lbmdpbmVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfbGV4X2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbmZ1bmN0aW9uIGNhbWxfbGV4X2VuZ2luZSh0YmwsIHN0YXJ0X3N0YXRlLCBsZXhidWYpIHtcbiAgdmFyIGxleF9idWZmZXIgPSAyO1xuICB2YXIgbGV4X2J1ZmZlcl9sZW4gPSAzO1xuICB2YXIgbGV4X3N0YXJ0X3BvcyA9IDU7XG4gIHZhciBsZXhfY3Vycl9wb3MgPSA2O1xuICB2YXIgbGV4X2xhc3RfcG9zID0gNztcbiAgdmFyIGxleF9sYXN0X2FjdGlvbiA9IDg7XG4gIHZhciBsZXhfZW9mX3JlYWNoZWQgPSA5O1xuICB2YXIgbGV4X2Jhc2UgPSAxO1xuICB2YXIgbGV4X2JhY2t0cmsgPSAyO1xuICB2YXIgbGV4X2RlZmF1bHQgPSAzO1xuICB2YXIgbGV4X3RyYW5zID0gNDtcbiAgdmFyIGxleF9jaGVjayA9IDU7XG5cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHQpIHtcbiAgICB0YmwubGV4X2Jhc2UgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X2Jhc2VdKTtcbiAgICB0YmwubGV4X2JhY2t0cmsgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X2JhY2t0cmtdKTtcbiAgICB0YmwubGV4X2NoZWNrID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF9jaGVja10pO1xuICAgIHRibC5sZXhfdHJhbnMgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X3RyYW5zXSk7XG4gICAgdGJsLmxleF9kZWZhdWx0ID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF9kZWZhdWx0XSk7XG4gIH1cblxuICB2YXIgYyxcbiAgICBzdGF0ZSA9IHN0YXJ0X3N0YXRlO1xuXG4gIHZhciBidWZmZXIgPSBsZXhidWZbbGV4X2J1ZmZlcl07XG5cbiAgaWYgKHN0YXRlID49IDApIHtcbiAgICAvKiBGaXJzdCBlbnRyeSAqL1xuICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9zdGFydF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSAtMTtcbiAgfSBlbHNlIHtcbiAgICAvKiBSZWVudHJ5IGFmdGVyIHJlZmlsbCAqL1xuICAgIHN0YXRlID0gLXN0YXRlIC0gMTtcbiAgfVxuICBmb3IgKDs7KSB7XG4gICAgLyogTG9va3VwIGJhc2UgYWRkcmVzcyBvciBhY3Rpb24gbnVtYmVyIGZvciBjdXJyZW50IHN0YXRlICovXG4gICAgdmFyIGJhc2UgPSB0YmwubGV4X2Jhc2Vbc3RhdGVdO1xuICAgIGlmIChiYXNlIDwgMCkgcmV0dXJuIC1iYXNlIC0gMTtcbiAgICAvKiBTZWUgaWYgaXQncyBhIGJhY2t0cmFjayBwb2ludCAqL1xuICAgIHZhciBiYWNrdHJrID0gdGJsLmxleF9iYWNrdHJrW3N0YXRlXTtcbiAgICBpZiAoYmFja3RyayA+PSAwKSB7XG4gICAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSBiYWNrdHJrO1xuICAgIH1cbiAgICAvKiBTZWUgaWYgd2UgbmVlZCBhIHJlZmlsbCAqL1xuICAgIGlmIChsZXhidWZbbGV4X2N1cnJfcG9zXSA+PSBsZXhidWZbbGV4X2J1ZmZlcl9sZW5dKSB7XG4gICAgICBpZiAobGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPT09IDApIHJldHVybiAtc3RhdGUgLSAxO1xuICAgICAgZWxzZSBjID0gMjU2O1xuICAgIH0gZWxzZSB7XG4gICAgICAvKiBSZWFkIG5leHQgaW5wdXQgY2hhciAqL1xuICAgICAgYyA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldChidWZmZXIsIGxleGJ1ZltsZXhfY3Vycl9wb3NdKTtcbiAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdKys7XG4gICAgfVxuICAgIC8qIERldGVybWluZSBuZXh0IHN0YXRlICovXG4gICAgaWYgKHRibC5sZXhfY2hlY2tbYmFzZSArIGNdID09PSBzdGF0ZSkgc3RhdGUgPSB0YmwubGV4X3RyYW5zW2Jhc2UgKyBjXTtcbiAgICBlbHNlIHN0YXRlID0gdGJsLmxleF9kZWZhdWx0W3N0YXRlXTtcbiAgICAvKiBJZiBubyB0cmFuc2l0aW9uIG9uIHRoaXMgY2hhciwgcmV0dXJuIHRvIGxhc3QgYmFja3RyYWNrIHBvaW50ICovXG4gICAgaWYgKHN0YXRlIDwgMCkge1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gPSBsZXhidWZbbGV4X2xhc3RfcG9zXTtcbiAgICAgIGlmIChsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9PT0gLTEpIGNhbWxfZmFpbHdpdGgoXCJsZXhpbmc6IGVtcHR5IHRva2VuXCIpO1xuICAgICAgZWxzZSByZXR1cm4gbGV4YnVmW2xleF9sYXN0X2FjdGlvbl07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8qIEVyYXNlIHRoZSBFT0YgY29uZGl0aW9uIG9ubHkgaWYgdGhlIEVPRiBwc2V1ZG8tY2hhcmFjdGVyIHdhc1xuICAgICAgICAgY29uc3VtZWQgYnkgdGhlIGF1dG9tYXRvbiAoaS5lLiB0aGVyZSB3YXMgbm8gYmFja3RyYWNrIGFib3ZlKVxuICAgICAgKi9cbiAgICAgIGlmIChjID09PSAyNTYpIGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID0gMDtcbiAgICB9XG4gIH1cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogTmV3IGxleGVyIGVuZ2luZSwgd2l0aCBtZW1vcnkgb2YgcG9zaXRpb25zICAqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX25ld19sZXhfZW5naW5lXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2xleF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0XG5mdW5jdGlvbiBjYW1sX2xleF9ydW5fbWVtKHMsIGksIG1lbSwgY3Vycl9wb3MpIHtcbiAgZm9yICg7Oykge1xuICAgIHZhciBkc3QgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgaSsrO1xuICAgIGlmIChkc3QgPT09IDB4ZmYpIHJldHVybjtcbiAgICB2YXIgc3JjID0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIGkrKztcbiAgICBpZiAoc3JjID09PSAweGZmKSBtZW1bZHN0ICsgMV0gPSBjdXJyX3BvcztcbiAgICBlbHNlIG1lbVtkc3QgKyAxXSA9IG1lbVtzcmMgKyAxXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjYW1sX2xleF9ydW5fdGFnKHMsIGksIG1lbSkge1xuICBmb3IgKDs7KSB7XG4gICAgdmFyIGRzdCA9IHMuY2hhckNvZGVBdChpKTtcbiAgICBpKys7XG4gICAgaWYgKGRzdCA9PT0gMHhmZikgcmV0dXJuO1xuICAgIHZhciBzcmMgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgaSsrO1xuICAgIGlmIChzcmMgPT09IDB4ZmYpIG1lbVtkc3QgKyAxXSA9IC0xO1xuICAgIGVsc2UgbWVtW2RzdCArIDFdID0gbWVtW3NyYyArIDFdO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhbWxfbmV3X2xleF9lbmdpbmUodGJsLCBzdGFydF9zdGF0ZSwgbGV4YnVmKSB7XG4gIHZhciBsZXhfYnVmZmVyID0gMjtcbiAgdmFyIGxleF9idWZmZXJfbGVuID0gMztcbiAgdmFyIGxleF9zdGFydF9wb3MgPSA1O1xuICB2YXIgbGV4X2N1cnJfcG9zID0gNjtcbiAgdmFyIGxleF9sYXN0X3BvcyA9IDc7XG4gIHZhciBsZXhfbGFzdF9hY3Rpb24gPSA4O1xuICB2YXIgbGV4X2VvZl9yZWFjaGVkID0gOTtcbiAgdmFyIGxleF9tZW0gPSAxMDtcbiAgdmFyIGxleF9iYXNlID0gMTtcbiAgdmFyIGxleF9iYWNrdHJrID0gMjtcbiAgdmFyIGxleF9kZWZhdWx0ID0gMztcbiAgdmFyIGxleF90cmFucyA9IDQ7XG4gIHZhciBsZXhfY2hlY2sgPSA1O1xuICB2YXIgbGV4X2Jhc2VfY29kZSA9IDY7XG4gIHZhciBsZXhfYmFja3Rya19jb2RlID0gNztcbiAgdmFyIGxleF9kZWZhdWx0X2NvZGUgPSA4O1xuICB2YXIgbGV4X3RyYW5zX2NvZGUgPSA5O1xuICB2YXIgbGV4X2NoZWNrX2NvZGUgPSAxMDtcbiAgdmFyIGxleF9jb2RlID0gMTE7XG5cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHQpIHtcbiAgICB0YmwubGV4X2Jhc2UgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X2Jhc2VdKTtcbiAgICB0YmwubGV4X2JhY2t0cmsgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X2JhY2t0cmtdKTtcbiAgICB0YmwubGV4X2NoZWNrID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF9jaGVja10pO1xuICAgIHRibC5sZXhfdHJhbnMgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X3RyYW5zXSk7XG4gICAgdGJsLmxleF9kZWZhdWx0ID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF9kZWZhdWx0XSk7XG4gIH1cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHRfY29kZSkge1xuICAgIHRibC5sZXhfYmFzZV9jb2RlID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF9iYXNlX2NvZGVdKTtcbiAgICB0YmwubGV4X2JhY2t0cmtfY29kZSA9IGNhbWxfbGV4X2FycmF5KHRibFtsZXhfYmFja3Rya19jb2RlXSk7XG4gICAgdGJsLmxleF9jaGVja19jb2RlID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF9jaGVja19jb2RlXSk7XG4gICAgdGJsLmxleF90cmFuc19jb2RlID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF90cmFuc19jb2RlXSk7XG4gICAgdGJsLmxleF9kZWZhdWx0X2NvZGUgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X2RlZmF1bHRfY29kZV0pO1xuICB9XG4gIGlmICh0YmwubGV4X2NvZGUgPT0gbnVsbClcbiAgICB0YmwubGV4X2NvZGUgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHRibFtsZXhfY29kZV0pO1xuXG4gIHZhciBjLFxuICAgIHN0YXRlID0gc3RhcnRfc3RhdGU7XG5cbiAgdmFyIGJ1ZmZlciA9IGxleGJ1ZltsZXhfYnVmZmVyXTtcblxuICBpZiAoc3RhdGUgPj0gMCkge1xuICAgIC8qIEZpcnN0IGVudHJ5ICovXG4gICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X3N0YXJ0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IC0xO1xuICB9IGVsc2Uge1xuICAgIC8qIFJlZW50cnkgYWZ0ZXIgcmVmaWxsICovXG4gICAgc3RhdGUgPSAtc3RhdGUgLSAxO1xuICB9XG4gIGZvciAoOzspIHtcbiAgICAvKiBMb29rdXAgYmFzZSBhZGRyZXNzIG9yIGFjdGlvbiBudW1iZXIgZm9yIGN1cnJlbnQgc3RhdGUgKi9cbiAgICB2YXIgYmFzZSA9IHRibC5sZXhfYmFzZVtzdGF0ZV07XG4gICAgaWYgKGJhc2UgPCAwKSB7XG4gICAgICB2YXIgcGNfb2ZmID0gdGJsLmxleF9iYXNlX2NvZGVbc3RhdGVdO1xuICAgICAgY2FtbF9sZXhfcnVuX3RhZyh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dKTtcbiAgICAgIHJldHVybiAtYmFzZSAtIDE7XG4gICAgfVxuICAgIC8qIFNlZSBpZiBpdCdzIGEgYmFja3RyYWNrIHBvaW50ICovXG4gICAgdmFyIGJhY2t0cmsgPSB0YmwubGV4X2JhY2t0cmtbc3RhdGVdO1xuICAgIGlmIChiYWNrdHJrID49IDApIHtcbiAgICAgIHZhciBwY19vZmYgPSB0YmwubGV4X2JhY2t0cmtfY29kZVtzdGF0ZV07XG4gICAgICBjYW1sX2xleF9ydW5fdGFnKHRibC5sZXhfY29kZSwgcGNfb2ZmLCBsZXhidWZbbGV4X21lbV0pO1xuICAgICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gYmFja3RyaztcbiAgICB9XG4gICAgLyogU2VlIGlmIHdlIG5lZWQgYSByZWZpbGwgKi9cbiAgICBpZiAobGV4YnVmW2xleF9jdXJyX3Bvc10gPj0gbGV4YnVmW2xleF9idWZmZXJfbGVuXSkge1xuICAgICAgaWYgKGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID09PSAwKSByZXR1cm4gLXN0YXRlIC0gMTtcbiAgICAgIGVsc2UgYyA9IDI1NjtcbiAgICB9IGVsc2Uge1xuICAgICAgLyogUmVhZCBuZXh0IGlucHV0IGNoYXIgKi9cbiAgICAgIGMgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQoYnVmZmVyLCBsZXhidWZbbGV4X2N1cnJfcG9zXSk7XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSsrO1xuICAgIH1cbiAgICAvKiBEZXRlcm1pbmUgbmV4dCBzdGF0ZSAqL1xuICAgIHZhciBwc3RhdGUgPSBzdGF0ZTtcbiAgICBpZiAodGJsLmxleF9jaGVja1tiYXNlICsgY10gPT09IHN0YXRlKSBzdGF0ZSA9IHRibC5sZXhfdHJhbnNbYmFzZSArIGNdO1xuICAgIGVsc2Ugc3RhdGUgPSB0YmwubGV4X2RlZmF1bHRbc3RhdGVdO1xuICAgIC8qIElmIG5vIHRyYW5zaXRpb24gb24gdGhpcyBjaGFyLCByZXR1cm4gdG8gbGFzdCBiYWNrdHJhY2sgcG9pbnQgKi9cbiAgICBpZiAoc3RhdGUgPCAwKSB7XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSA9IGxleGJ1ZltsZXhfbGFzdF9wb3NdO1xuICAgICAgaWYgKGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID09PSAtMSkgY2FtbF9mYWlsd2l0aChcImxleGluZzogZW1wdHkgdG9rZW5cIik7XG4gICAgICBlbHNlIHJldHVybiBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXTtcbiAgICB9IGVsc2Uge1xuICAgICAgLyogSWYgc29tZSB0cmFuc2l0aW9uLCBnZXQgYW5kIHBlcmZvcm0gbWVtb3J5IG1vdmVzICovXG4gICAgICB2YXIgYmFzZV9jb2RlID0gdGJsLmxleF9iYXNlX2NvZGVbcHN0YXRlXSxcbiAgICAgICAgcGNfb2ZmO1xuICAgICAgaWYgKHRibC5sZXhfY2hlY2tfY29kZVtiYXNlX2NvZGUgKyBjXSA9PT0gcHN0YXRlKVxuICAgICAgICBwY19vZmYgPSB0YmwubGV4X3RyYW5zX2NvZGVbYmFzZV9jb2RlICsgY107XG4gICAgICBlbHNlIHBjX29mZiA9IHRibC5sZXhfZGVmYXVsdF9jb2RlW3BzdGF0ZV07XG4gICAgICBpZiAocGNfb2ZmID4gMClcbiAgICAgICAgY2FtbF9sZXhfcnVuX21lbShcbiAgICAgICAgICB0YmwubGV4X2NvZGUsXG4gICAgICAgICAgcGNfb2ZmLFxuICAgICAgICAgIGxleGJ1ZltsZXhfbWVtXSxcbiAgICAgICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSxcbiAgICAgICAgKTtcbiAgICAgIC8qIEVyYXNlIHRoZSBFT0YgY29uZGl0aW9uIG9ubHkgaWYgdGhlIEVPRiBwc2V1ZG8tY2hhcmFjdGVyIHdhc1xuICAgICAgICAgY29uc3VtZWQgYnkgdGhlIGF1dG9tYXRvbiAoaS5lLiB0aGVyZSB3YXMgbm8gYmFja3RyYWNrIGFib3ZlKVxuICAgICAgKi9cbiAgICAgIGlmIChjID09PSAyNTYpIGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID0gMDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vUHJvdmlkZXM6IGNhbWxfbHhtX01cbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9WZXJzaW9uOiA+PSA1XG52YXIgY2FtbF9seG1fTSA9IGNhbWxfaW50NjRfb2Zfc3RyaW5nKFxuICBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhcIjB4ZDEzNDI1NDNkZTgyZWY5NVwiKSxcbik7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbHhtX2RhYmFcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9WZXJzaW9uOiA+PSA1XG52YXIgY2FtbF9seG1fZGFiYSA9IGNhbWxfaW50NjRfb2Zfc3RyaW5nKFxuICBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhcIjB4ZGFiYTBiNmViMDkzMjJlM1wiKSxcbik7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbHhtX25leHQgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3hvclxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9hZGRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfbXVsXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3NldF8xXG4vL1JlcXVpcmVzOiBjYW1sX2x4bV9NXG4vL1JlcXVpcmVzOiBjYW1sX2x4bV9kYWJhXG4vL1ZlcnNpb246ID49IDVcbmZ1bmN0aW9uIGNhbWxfbHhtX25leHQodikge1xuICBmdW5jdGlvbiBzaGlmdF9sKHgsIGspIHtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0KHgsIGspO1xuICB9XG4gIGZ1bmN0aW9uIHNoaWZ0X3IoeCwgaykge1xuICAgIHJldHVybiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIGspO1xuICB9XG4gIGZ1bmN0aW9uIG9yKGEsIGIpIHtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9vcihhLCBiKTtcbiAgfVxuICBmdW5jdGlvbiB4b3IoYSwgYikge1xuICAgIHJldHVybiBjYW1sX2ludDY0X3hvcihhLCBiKTtcbiAgfVxuICBmdW5jdGlvbiBhZGQoYSwgYikge1xuICAgIHJldHVybiBjYW1sX2ludDY0X2FkZChhLCBiKTtcbiAgfVxuICBmdW5jdGlvbiBtdWwoYSwgYikge1xuICAgIHJldHVybiBjYW1sX2ludDY0X211bChhLCBiKTtcbiAgfVxuICBmdW5jdGlvbiByb3RsKHgsIGspIHtcbiAgICByZXR1cm4gb3Ioc2hpZnRfbCh4LCBrKSwgc2hpZnRfcih4LCA2NCAtIGspKTtcbiAgfVxuICBmdW5jdGlvbiBnZXQoYSwgaSkge1xuICAgIHJldHVybiBjYW1sX2JhX2dldF8xKGEsIGkpO1xuICB9XG4gIGZ1bmN0aW9uIHNldChhLCBpLCB4KSB7XG4gICAgcmV0dXJuIGNhbWxfYmFfc2V0XzEoYSwgaSwgeCk7XG4gIH1cbiAgdmFyIE0gPSBjYW1sX2x4bV9NO1xuICB2YXIgZGFiYSA9IGNhbWxfbHhtX2RhYmE7XG4gIHZhciB6LCBxMCwgcTE7XG4gIHZhciBzdCA9IHY7XG4gIHZhciBhID0gZ2V0KHN0LCAwKTtcbiAgdmFyIHMgPSBnZXQoc3QsIDEpO1xuICB2YXIgeDAgPSBnZXQoc3QsIDIpO1xuICB2YXIgeDEgPSBnZXQoc3QsIDMpO1xuICAvKiBDb21iaW5pbmcgb3BlcmF0aW9uICovXG4gIHogPSBhZGQocywgeDApO1xuICAvKiBNaXhpbmcgZnVuY3Rpb24gKi9cbiAgeiA9IG11bCh4b3Ioeiwgc2hpZnRfcih6LCAzMikpLCBkYWJhKTtcbiAgeiA9IG11bCh4b3Ioeiwgc2hpZnRfcih6LCAzMikpLCBkYWJhKTtcbiAgeiA9IHhvcih6LCBzaGlmdF9yKHosIDMyKSk7XG4gIC8qIExDRyB1cGRhdGUgKi9cbiAgc2V0KHN0LCAxLCBhZGQobXVsKHMsIE0pLCBhKSk7XG4gIC8qIFhCRyB1cGRhdGUgKi9cbiAgdmFyIHEwID0geDA7XG4gIHZhciBxMSA9IHgxO1xuICBxMSA9IHhvcihxMSwgcTApO1xuICBxMCA9IHJvdGwocTAsIDI0KTtcbiAgcTAgPSB4b3IoeG9yKHEwLCBxMSksIHNoaWZ0X2wocTEsIDE2KSk7XG4gIHExID0gcm90bChxMSwgMzcpO1xuICBzZXQoc3QsIDIsIHEwKTtcbiAgc2V0KHN0LCAzLCBxMSk7XG4gIC8qIFJldHVybiByZXN1bHQgKi9cbiAgcmV0dXJuIHo7XG59XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICovXG4vKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICovXG4vKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgICovXG4vKiAgdGhlIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIGZpbGUgLi4vTElDRU5TRS4gICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qICRJZDogcGFyc2luZy5jIDg5ODMgMjAwOC0wOC0wNiAwOTozODoyNVogeGxlcm95ICQgKi9cblxuLyogVGhlIFBEQSBhdXRvbWF0b24gZm9yIHBhcnNlcnMgZ2VuZXJhdGVkIGJ5IGNhbWx5YWNjICovXG5cbi8qIFRoZSBwdXNoZG93biBhdXRvbWF0YSAqL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlcl90cmFjZVxudmFyIGNhbWxfcGFyc2VyX3RyYWNlID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9lbmdpbmVcbi8vUmVxdWlyZXM6IGNhbWxfbGV4X2FycmF5LCBjYW1sX3BhcnNlcl90cmFjZSxjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9tbF9vdXRwdXQsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgTWxCeXRlc1xuLy9SZXF1aXJlczogY2FtbF9zeXNfZmRzXG5mdW5jdGlvbiBjYW1sX3BhcnNlX2VuZ2luZSh0YWJsZXMsIGVudiwgY21kLCBhcmcpIHtcbiAgdmFyIEVSUkNPREUgPSAyNTY7XG5cbiAgLy92YXIgU1RBUlQgPSAwO1xuICAvL3ZhciBUT0tFTl9SRUFEID0gMTtcbiAgLy92YXIgU1RBQ0tTX0dST1dOXzEgPSAyO1xuICAvL3ZhciBTVEFDS1NfR1JPV05fMiA9IDM7XG4gIC8vdmFyIFNFTUFOVElDX0FDVElPTl9DT01QVVRFRCA9IDQ7XG4gIC8vdmFyIEVSUk9SX0RFVEVDVEVEID0gNTtcbiAgdmFyIGxvb3AgPSA2O1xuICB2YXIgdGVzdHNoaWZ0ID0gNztcbiAgdmFyIHNoaWZ0ID0gODtcbiAgdmFyIHNoaWZ0X3JlY292ZXIgPSA5O1xuICB2YXIgcmVkdWNlID0gMTA7XG5cbiAgdmFyIFJFQURfVE9LRU4gPSAwO1xuICB2YXIgUkFJU0VfUEFSU0VfRVJST1IgPSAxO1xuICB2YXIgR1JPV19TVEFDS1NfMSA9IDI7XG4gIHZhciBHUk9XX1NUQUNLU18yID0gMztcbiAgdmFyIENPTVBVVEVfU0VNQU5USUNfQUNUSU9OID0gNDtcbiAgdmFyIENBTExfRVJST1JfRlVOQ1RJT04gPSA1O1xuXG4gIHZhciBlbnZfc19zdGFjayA9IDE7XG4gIHZhciBlbnZfdl9zdGFjayA9IDI7XG4gIHZhciBlbnZfc3ltYl9zdGFydF9zdGFjayA9IDM7XG4gIHZhciBlbnZfc3ltYl9lbmRfc3RhY2sgPSA0O1xuICB2YXIgZW52X3N0YWNrc2l6ZSA9IDU7XG4gIHZhciBlbnZfc3RhY2tiYXNlID0gNjtcbiAgdmFyIGVudl9jdXJyX2NoYXIgPSA3O1xuICB2YXIgZW52X2x2YWwgPSA4O1xuICB2YXIgZW52X3N5bWJfc3RhcnQgPSA5O1xuICB2YXIgZW52X3N5bWJfZW5kID0gMTA7XG4gIHZhciBlbnZfYXNwID0gMTE7XG4gIHZhciBlbnZfcnVsZV9sZW4gPSAxMjtcbiAgdmFyIGVudl9ydWxlX251bWJlciA9IDEzO1xuICB2YXIgZW52X3NwID0gMTQ7XG4gIHZhciBlbnZfc3RhdGUgPSAxNTtcbiAgdmFyIGVudl9lcnJmbGFnID0gMTY7XG5cbiAgLy8gdmFyIF90YmxfYWN0aW9ucyA9IDE7XG4gIHZhciB0YmxfdHJhbnNsX2NvbnN0ID0gMjtcbiAgdmFyIHRibF90cmFuc2xfYmxvY2sgPSAzO1xuICB2YXIgdGJsX2xocyA9IDQ7XG4gIHZhciB0YmxfbGVuID0gNTtcbiAgdmFyIHRibF9kZWZyZWQgPSA2O1xuICB2YXIgdGJsX2Rnb3RvID0gNztcbiAgdmFyIHRibF9zaW5kZXggPSA4O1xuICB2YXIgdGJsX3JpbmRleCA9IDk7XG4gIHZhciB0YmxfZ2luZGV4ID0gMTA7XG4gIHZhciB0YmxfdGFibGVzaXplID0gMTE7XG4gIHZhciB0YmxfdGFibGUgPSAxMjtcbiAgdmFyIHRibF9jaGVjayA9IDEzO1xuICAvLyB2YXIgX3RibF9lcnJvcl9mdW5jdGlvbiA9IDE0O1xuICB2YXIgdGJsX25hbWVzX2NvbnN0ID0gMTU7XG4gIHZhciB0YmxfbmFtZXNfYmxvY2sgPSAxNjtcblxuICBmdW5jdGlvbiBsb2coeCkge1xuICAgIHZhciBzID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh4ICsgXCJcXG5cIik7XG4gICAgY2FtbF9tbF9vdXRwdXQoY2FtbF9zeXNfZmRzWzJdLmNoYW5pZCwgcywgMCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRva2VuX25hbWUobmFtZXMsIG51bWJlcikge1xuICAgIHZhciBzdHIgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhuYW1lcyk7XG4gICAgaWYgKHN0clswXSA9PT0gXCJcXHgwMFwiKSByZXR1cm4gXCI8dW5rbm93biB0b2tlbj5cIjtcbiAgICByZXR1cm4gc3RyLnNwbGl0KFwiXFx4MDBcIilbbnVtYmVyXTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHByaW50X3Rva2VuKHN0YXRlLCB0b2spIHtcbiAgICB2YXIgdG9rZW4sIGtpbmQ7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodG9rKSkge1xuICAgICAgdG9rZW4gPSB0b2tlbl9uYW1lKHRhYmxlc1t0YmxfbmFtZXNfYmxvY2tdLCB0b2tbMF0pO1xuICAgICAgaWYgKHR5cGVvZiB0b2tbMV0gPT09IFwibnVtYmVyXCIpIGtpbmQgPSBcIlwiICsgdG9rWzFdO1xuICAgICAgZWxzZSBpZiAodHlwZW9mIHRva1sxXSA9PT0gXCJzdHJpbmdcIikga2luZCA9IHRva1sxXTtcbiAgICAgIGVsc2UgaWYgKHRva1sxXSBpbnN0YW5jZW9mIE1sQnl0ZXMpIGtpbmQgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHRva1sxXSk7XG4gICAgICBlbHNlIGtpbmQgPSBcIl9cIjtcbiAgICAgIGxvZyhcIlN0YXRlIFwiICsgc3RhdGUgKyBcIjogcmVhZCB0b2tlbiBcIiArIHRva2VuICsgXCIoXCIgKyBraW5kICsgXCIpXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0b2tlbiA9IHRva2VuX25hbWUodGFibGVzW3RibF9uYW1lc19jb25zdF0sIHRvayk7XG4gICAgICBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHJlYWQgdG9rZW4gXCIgKyB0b2tlbik7XG4gICAgfVxuICB9XG5cbiAgaWYgKCF0YWJsZXMuZGdvdG8pIHtcbiAgICB0YWJsZXMuZGVmcmVkID0gY2FtbF9sZXhfYXJyYXkodGFibGVzW3RibF9kZWZyZWRdKTtcbiAgICB0YWJsZXMuc2luZGV4ID0gY2FtbF9sZXhfYXJyYXkodGFibGVzW3RibF9zaW5kZXhdKTtcbiAgICB0YWJsZXMuY2hlY2sgPSBjYW1sX2xleF9hcnJheSh0YWJsZXNbdGJsX2NoZWNrXSk7XG4gICAgdGFibGVzLnJpbmRleCA9IGNhbWxfbGV4X2FycmF5KHRhYmxlc1t0YmxfcmluZGV4XSk7XG4gICAgdGFibGVzLnRhYmxlID0gY2FtbF9sZXhfYXJyYXkodGFibGVzW3RibF90YWJsZV0pO1xuICAgIHRhYmxlcy5sZW4gPSBjYW1sX2xleF9hcnJheSh0YWJsZXNbdGJsX2xlbl0pO1xuICAgIHRhYmxlcy5saHMgPSBjYW1sX2xleF9hcnJheSh0YWJsZXNbdGJsX2xoc10pO1xuICAgIHRhYmxlcy5naW5kZXggPSBjYW1sX2xleF9hcnJheSh0YWJsZXNbdGJsX2dpbmRleF0pO1xuICAgIHRhYmxlcy5kZ290byA9IGNhbWxfbGV4X2FycmF5KHRhYmxlc1t0YmxfZGdvdG9dKTtcbiAgfVxuXG4gIHZhciByZXMgPSAwLFxuICAgIG4sXG4gICAgbjEsXG4gICAgbjIsXG4gICAgc3RhdGUxO1xuXG4gIC8vIFJFU1RPUkVcbiAgdmFyIHNwID0gZW52W2Vudl9zcF07XG4gIHZhciBzdGF0ZSA9IGVudltlbnZfc3RhdGVdO1xuICB2YXIgZXJyZmxhZyA9IGVudltlbnZfZXJyZmxhZ107XG5cbiAgdGhlX2xvb3A6IGZvciAoOzspIHtcbiAgICBzd2l0Y2ggKGNtZCkge1xuICAgICAgY2FzZSAwOiAvL1NUQVJUOlxuICAgICAgICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRmFsbHRocm91Z2hTd2l0Y2hDbGF1c2U6XG4gICAgICAgIHN0YXRlID0gMDtcbiAgICAgICAgZXJyZmxhZyA9IDA7XG4gICAgICAvLyBmYWxsdGhyb3VnaFxuXG4gICAgICBjYXNlIDY6IC8vbG9vcDpcbiAgICAgICAgbiA9IHRhYmxlcy5kZWZyZWRbc3RhdGVdO1xuICAgICAgICBpZiAobiAhPT0gMCkge1xuICAgICAgICAgIGNtZCA9IHJlZHVjZTtcbiAgICAgICAgICBjb250aW51ZSB0aGVfbG9vcDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW52W2Vudl9jdXJyX2NoYXJdID49IDApIHtcbiAgICAgICAgICBjbWQgPSB0ZXN0c2hpZnQ7XG4gICAgICAgICAgY29udGludWUgdGhlX2xvb3A7XG4gICAgICAgIH1cbiAgICAgICAgcmVzID0gUkVBRF9UT0tFTjtcbiAgICAgICAgYnJlYWsgdGhlX2xvb3A7XG4gICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgbGV4ZXIgYW5kIHVwZGF0ZXMgKi9cbiAgICAgIC8qIHN5bWJfc3RhcnQgYW5kIHN5bWJfZW5kICovXG4gICAgICBjYXNlIDE6IC8vVE9LRU5fUkVBRDpcbiAgICAgICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0ZhbGx0aHJvdWdoU3dpdGNoQ2xhdXNlOlxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7XG4gICAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gdGFibGVzW3RibF90cmFuc2xfYmxvY2tdW2FyZ1swXSArIDFdO1xuICAgICAgICAgIGVudltlbnZfbHZhbF0gPSBhcmdbMV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gdGFibGVzW3RibF90cmFuc2xfY29uc3RdW2FyZyArIDFdO1xuICAgICAgICAgIGVudltlbnZfbHZhbF0gPSAwO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSkgcHJpbnRfdG9rZW4oc3RhdGUsIGFyZyk7XG4gICAgICAvLyBmYWxsdGhyb3VnaFxuXG4gICAgICBjYXNlIDc6IC8vdGVzdHNoaWZ0OlxuICAgICAgICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRmFsbHRocm91Z2hTd2l0Y2hDbGF1c2U6XG4gICAgICAgIG4xID0gdGFibGVzLnNpbmRleFtzdGF0ZV07XG4gICAgICAgIG4yID0gbjEgKyBlbnZbZW52X2N1cnJfY2hhcl07XG4gICAgICAgIGlmIChcbiAgICAgICAgICBuMSAhPT0gMCAmJlxuICAgICAgICAgIG4yID49IDAgJiZcbiAgICAgICAgICBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09PSBlbnZbZW52X2N1cnJfY2hhcl1cbiAgICAgICAgKSB7XG4gICAgICAgICAgY21kID0gc2hpZnQ7XG4gICAgICAgICAgY29udGludWUgdGhlX2xvb3A7XG4gICAgICAgIH1cbiAgICAgICAgbjEgPSB0YWJsZXMucmluZGV4W3N0YXRlXTtcbiAgICAgICAgbjIgPSBuMSArIGVudltlbnZfY3Vycl9jaGFyXTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIG4xICE9PSAwICYmXG4gICAgICAgICAgbjIgPj0gMCAmJlxuICAgICAgICAgIG4yIDw9IHRhYmxlc1t0YmxfdGFibGVzaXplXSAmJlxuICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT09IGVudltlbnZfY3Vycl9jaGFyXVxuICAgICAgICApIHtcbiAgICAgICAgICBuID0gdGFibGVzLnRhYmxlW24yXTtcbiAgICAgICAgICBjbWQgPSByZWR1Y2U7XG4gICAgICAgICAgY29udGludWUgdGhlX2xvb3A7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVycmZsYWcgPD0gMCkge1xuICAgICAgICAgIHJlcyA9IENBTExfRVJST1JfRlVOQ1RJT047XG4gICAgICAgICAgYnJlYWsgdGhlX2xvb3A7XG4gICAgICAgIH1cbiAgICAgIC8vIGZhbGx0aHJvdWdoXG4gICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgZXJyb3IgZnVuY3Rpb24gKi9cbiAgICAgIGNhc2UgNTogLy9FUlJPUl9ERVRFQ1RFRDpcbiAgICAgICAgaWYgKGVycmZsYWcgPCAzKSB7XG4gICAgICAgICAgZXJyZmxhZyA9IDM7XG4gICAgICAgICAgZm9yICg7Oykge1xuICAgICAgICAgICAgc3RhdGUxID0gZW52W2Vudl9zX3N0YWNrXVtzcCArIDFdO1xuICAgICAgICAgICAgbjEgPSB0YWJsZXMuc2luZGV4W3N0YXRlMV07XG4gICAgICAgICAgICBuMiA9IG4xICsgRVJSQ09ERTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgbjEgIT09IDAgJiZcbiAgICAgICAgICAgICAgbjIgPj0gMCAmJlxuICAgICAgICAgICAgICBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PT0gRVJSQ09ERVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSkgbG9nKFwiUmVjb3ZlcmluZyBpbiBzdGF0ZSBcIiArIHN0YXRlMSk7XG4gICAgICAgICAgICAgIGNtZCA9IHNoaWZ0X3JlY292ZXI7XG4gICAgICAgICAgICAgIGNvbnRpbnVlIHRoZV9sb29wO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKSBsb2coXCJEaXNjYXJkaW5nIHN0YXRlIFwiICsgc3RhdGUxKTtcbiAgICAgICAgICAgICAgaWYgKHNwIDw9IGVudltlbnZfc3RhY2tiYXNlXSkge1xuICAgICAgICAgICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSkgbG9nKFwiTm8gbW9yZSBzdGF0ZXMgdG8gZGlzY2FyZFwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgLyogVGhlIE1MIGNvZGUgcmFpc2VzIFBhcnNlX2Vycm9yICovXG4gICAgICAgICAgICAgIHNwLS07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChlbnZbZW52X2N1cnJfY2hhcl0gPT09IDApXG4gICAgICAgICAgICByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7IC8qIFRoZSBNTCBjb2RlIHJhaXNlcyBQYXJzZV9lcnJvciAqL1xuICAgICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSkgbG9nKFwiRGlzY2FyZGluZyBsYXN0IHRva2VuIHJlYWRcIik7XG4gICAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gLTE7XG4gICAgICAgICAgY21kID0gbG9vcDtcbiAgICAgICAgICBjb250aW51ZSB0aGVfbG9vcDtcbiAgICAgICAgfVxuICAgICAgLy8gVW5yZWFjaGFibGVcbiAgICAgIGNhc2UgODogLy9zaGlmdDpcbiAgICAgICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0ZhbGx0aHJvdWdoU3dpdGNoQ2xhdXNlOlxuICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSAtMTtcbiAgICAgICAgaWYgKGVycmZsYWcgPiAwKSBlcnJmbGFnLS07XG4gICAgICAvLyBmYWxsdGhyb3VnaFxuICAgICAgY2FzZSA5OiAvL3NoaWZ0X3JlY292ZXI6XG4gICAgICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9GYWxsdGhyb3VnaFN3aXRjaENsYXVzZTpcbiAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICAgIGxvZyhcIlN0YXRlIFwiICsgc3RhdGUgKyBcIjogc2hpZnQgdG8gc3RhdGUgXCIgKyB0YWJsZXMudGFibGVbbjJdKTtcbiAgICAgICAgc3RhdGUgPSB0YWJsZXMudGFibGVbbjJdO1xuICAgICAgICBzcCsrO1xuICAgICAgICBpZiAoc3AgPj0gZW52W2Vudl9zdGFja3NpemVdKSB7XG4gICAgICAgICAgcmVzID0gR1JPV19TVEFDS1NfMTtcbiAgICAgICAgICBicmVhayB0aGVfbG9vcDtcbiAgICAgICAgfVxuICAgICAgLy8gZmFsbHRocm91Z2hcbiAgICAgIC8qIFRoZSBNTCBjb2RlIHJlc2l6ZXMgdGhlIHN0YWNrcyAqL1xuICAgICAgY2FzZSAyOiAvL1NUQUNLU19HUk9XTl8xOlxuICAgICAgICBlbnZbZW52X3Nfc3RhY2tdW3NwICsgMV0gPSBzdGF0ZTtcbiAgICAgICAgZW52W2Vudl92X3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9sdmFsXTtcbiAgICAgICAgZW52W2Vudl9zeW1iX3N0YXJ0X3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9zeW1iX3N0YXJ0XTtcbiAgICAgICAgZW52W2Vudl9zeW1iX2VuZF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9lbmRdO1xuICAgICAgICBjbWQgPSBsb29wO1xuICAgICAgICBjb250aW51ZSB0aGVfbG9vcDtcblxuICAgICAgY2FzZSAxMDogLy9yZWR1Y2U6XG4gICAgICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9GYWxsdGhyb3VnaFN3aXRjaENsYXVzZTpcbiAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKSBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHJlZHVjZSBieSBydWxlIFwiICsgbik7XG4gICAgICAgIHZhciBtID0gdGFibGVzLmxlbltuXTtcbiAgICAgICAgZW52W2Vudl9hc3BdID0gc3A7XG4gICAgICAgIGVudltlbnZfcnVsZV9udW1iZXJdID0gbjtcbiAgICAgICAgZW52W2Vudl9ydWxlX2xlbl0gPSBtO1xuICAgICAgICBzcCA9IHNwIC0gbSArIDE7XG4gICAgICAgIG0gPSB0YWJsZXMubGhzW25dO1xuICAgICAgICBzdGF0ZTEgPSBlbnZbZW52X3Nfc3RhY2tdW3NwXTtcbiAgICAgICAgbjEgPSB0YWJsZXMuZ2luZGV4W21dO1xuICAgICAgICBuMiA9IG4xICsgc3RhdGUxO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgbjEgIT09IDAgJiZcbiAgICAgICAgICBuMiA+PSAwICYmXG4gICAgICAgICAgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PT0gc3RhdGUxXG4gICAgICAgIClcbiAgICAgICAgICBzdGF0ZSA9IHRhYmxlcy50YWJsZVtuMl07XG4gICAgICAgIGVsc2Ugc3RhdGUgPSB0YWJsZXMuZGdvdG9bbV07XG4gICAgICAgIGlmIChzcCA+PSBlbnZbZW52X3N0YWNrc2l6ZV0pIHtcbiAgICAgICAgICByZXMgPSBHUk9XX1NUQUNLU18yO1xuICAgICAgICAgIGJyZWFrIHRoZV9sb29wO1xuICAgICAgICB9XG4gICAgICAvLyBmYWxsdGhyb3VnaFxuICAgICAgLyogVGhlIE1MIGNvZGUgcmVzaXplcyB0aGUgc3RhY2tzICovXG4gICAgICBjYXNlIDM6IC8vU1RBQ0tTX0dST1dOXzI6XG4gICAgICAgIHJlcyA9IENPTVBVVEVfU0VNQU5USUNfQUNUSU9OO1xuICAgICAgICBicmVhayB0aGVfbG9vcDtcbiAgICAgIC8qIFRoZSBNTCBjb2RlIGNhbGxzIHRoZSBzZW1hbnRpYyBhY3Rpb24gKi9cbiAgICAgIGNhc2UgNDogLy9TRU1BTlRJQ19BQ1RJT05fQ09NUFVURUQ6XG4gICAgICAgIGVudltlbnZfc19zdGFja11bc3AgKyAxXSA9IHN0YXRlO1xuICAgICAgICBlbnZbZW52X3Zfc3RhY2tdW3NwICsgMV0gPSBhcmc7XG4gICAgICAgIHZhciBhc3AgPSBlbnZbZW52X2FzcF07XG4gICAgICAgIGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVthc3AgKyAxXTtcbiAgICAgICAgaWYgKHNwID4gYXNwKSB7XG4gICAgICAgICAgLyogVGhpcyBpcyBhbiBlcHNpbG9uIHByb2R1Y3Rpb24uIFRha2Ugc3ltYl9zdGFydCBlcXVhbCB0byBzeW1iX2VuZC4gKi9cbiAgICAgICAgICBlbnZbZW52X3N5bWJfc3RhcnRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVthc3AgKyAxXTtcbiAgICAgICAgfVxuICAgICAgICBjbWQgPSBsb29wO1xuICAgICAgICBjb250aW51ZSB0aGVfbG9vcDtcbiAgICAgIC8qIFNob3VsZCBub3QgaGFwcGVuICovXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7XG4gICAgfVxuICB9XG4gIC8vIFNBVkVcbiAgZW52W2Vudl9zcF0gPSBzcDtcbiAgZW52W2Vudl9zdGF0ZV0gPSBzdGF0ZTtcbiAgZW52W2Vudl9lcnJmbGFnXSA9IGVycmZsYWc7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2V0X3BhcnNlcl90cmFjZVxuLy9SZXF1aXJlczogY2FtbF9wYXJzZXJfdHJhY2VcbmZ1bmN0aW9uIGNhbWxfc2V0X3BhcnNlcl90cmFjZShib29sKSB7XG4gIHZhciBvbGRmbGFnID0gY2FtbF9wYXJzZXJfdHJhY2U7XG4gIGNhbWxfcGFyc2VyX3RyYWNlID0gYm9vbDtcbiAgcmV0dXJuIG9sZGZsYWc7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMjAgLSBIdWdvIEhldXphcmRcbi8vIENvcHlyaWdodCAoQykgMjAyMCAtIFNoYWNoYXIgSXR6aGFreVxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8gQmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL2Jsb2IvNC4wNy9vdGhlcmxpYnMvc3RyL3N0cnN0dWJzLmNcbi8vIENvcGllZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9qc2NvcS9qc2NvcS9ibG9iL3Y4LjExL2NvcS1qcy9qc19zdHViL3N0ci5qc1xuXG4vL1Byb3ZpZGVzOiByZV9tYXRjaFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfZ2V0XG5cbnZhciByZV9tYXRjaCA9IChmdW5jdGlvbiAoKSB7XG4gIHZhciByZV93b3JkX2xldHRlcnMgPSBbXG4gICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCAvKiAweDAwLTB4MUY6IG5vbmUgKi8sIDB4MDAsIDB4MDAsIDB4ZmYsXG4gICAgMHgwMyAvKiAweDIwLTB4M0Y6IGRpZ2l0cyAwLTkgKi8sIDB4ZmUsIDB4ZmYsIDB4ZmYsXG4gICAgMHg4NyAvKiAweDQwLTB4NUY6IEEgdG8gWiwgXyAqLywgMHhmZSwgMHhmZiwgMHhmZixcbiAgICAweDA3IC8qIDB4NjAtMHg3RjogYSB0byB6ICovLCAweDAwLCAweDAwLCAweDAwLCAweDAwIC8qIDB4ODAtMHg5Rjogbm9uZSAqLyxcbiAgICAweDAwLCAweDAwLCAweDAwLCAweDAwIC8qIDB4QTAtMHhCRjogbm9uZSAqLywgMHhmZiwgMHhmZiwgMHg3ZixcbiAgICAweGZmIC8qIDB4QzAtMHhERjogTGF0aW4tMSBhY2NlbnRlZCB1cHBlcmNhc2UgKi8sIDB4ZmYsIDB4ZmYsIDB4N2YsXG4gICAgMHhmZiAvKiAweEUwLTB4RkY6IExhdGluLTEgYWNjZW50ZWQgbG93ZXJjYXNlICovLFxuICBdO1xuXG4gIHZhciBvcGNvZGVzID0ge1xuICAgIENIQVI6IDAsXG4gICAgQ0hBUk5PUk06IDEsXG4gICAgU1RSSU5HOiAyLFxuICAgIFNUUklOR05PUk06IDMsXG4gICAgQ0hBUkNMQVNTOiA0LFxuICAgIEJPTDogNSxcbiAgICBFT0w6IDYsXG4gICAgV09SREJPVU5EQVJZOiA3LFxuICAgIEJFR0dST1VQOiA4LFxuICAgIEVOREdST1VQOiA5LFxuICAgIFJFRkdST1VQOiAxMCxcbiAgICBBQ0NFUFQ6IDExLFxuICAgIFNJTVBMRU9QVDogMTIsXG4gICAgU0lNUExFU1RBUjogMTMsXG4gICAgU0lNUExFUExVUzogMTQsXG4gICAgR09UTzogMTUsXG4gICAgUFVTSEJBQ0s6IDE2LFxuICAgIFNFVE1BUks6IDE3LFxuICAgIENIRUNLUFJPR1JFU1M6IDE4LFxuICB9O1xuXG4gIGZ1bmN0aW9uIGlzX3dvcmRfbGV0dGVyKGMpIHtcbiAgICByZXR1cm4gKHJlX3dvcmRfbGV0dGVyc1tjID4+IDNdID4+IChjICYgNykpICYgMTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluX2JpdHNldChzLCBpKSB7XG4gICAgcmV0dXJuIChjYW1sX3N0cmluZ19nZXQocywgaSA+PiAzKSA+PiAoaSAmIDcpKSAmIDE7XG4gIH1cblxuICBmdW5jdGlvbiByZV9tYXRjaF9pbXBsKHJlLCBzLCBwb3MsIHBhcnRpYWwpIHtcbiAgICB2YXIgcHJvZyA9IGNhbWxfanNfZnJvbV9hcnJheShyZVsxXSksXG4gICAgICBjcG9vbCA9IGNhbWxfanNfZnJvbV9hcnJheShyZVsyXSksXG4gICAgICBub3JtdGFibGUgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHJlWzNdKSxcbiAgICAgIG51bWdyb3VwcyA9IHJlWzRdIHwgMCxcbiAgICAgIG51bXJlZ2lzdGVycyA9IHJlWzVdIHwgMDtcblxuICAgIHZhciBzID0gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcocyk7XG5cbiAgICB2YXIgcGMgPSAwLFxuICAgICAgcXVpdCA9IGZhbHNlLFxuICAgICAgc3RhY2sgPSBbXSxcbiAgICAgIGdyb3VwcyA9IG5ldyBBcnJheShudW1ncm91cHMpLFxuICAgICAgcmVfcmVnaXN0ZXIgPSBuZXcgQXJyYXkobnVtcmVnaXN0ZXJzKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZ3JvdXBzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBncm91cHNbaV0gPSB7IHN0YXJ0OiAtMSwgZW5kOiAtMSB9O1xuICAgIH1cbiAgICBncm91cHNbMF0uc3RhcnQgPSBwb3M7XG5cbiAgICB2YXIgYmFja3RyYWNrID0gZnVuY3Rpb24gKCkge1xuICAgICAgd2hpbGUgKHN0YWNrLmxlbmd0aCkge1xuICAgICAgICB2YXIgaXRlbSA9IHN0YWNrLnBvcCgpO1xuICAgICAgICBpZiAoaXRlbS51bmRvKSB7XG4gICAgICAgICAgaXRlbS51bmRvLm9ialtpdGVtLnVuZG8ucHJvcF0gPSBpdGVtLnVuZG8udmFsdWU7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS5wb3MpIHtcbiAgICAgICAgICBwYyA9IGl0ZW0ucG9zLnBjO1xuICAgICAgICAgIHBvcyA9IGl0ZW0ucG9zLnR4dDtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHF1aXQgPSB0cnVlO1xuICAgIH07XG5cbiAgICB2YXIgcHVzaCA9IGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICBzdGFjay5wdXNoKGl0ZW0pO1xuICAgIH07XG5cbiAgICB2YXIgYWNjZXB0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgZ3JvdXBzWzBdLmVuZCA9IHBvcztcbiAgICAgIHZhciByZXN1bHQgPSBuZXcgQXJyYXkoMSArIGdyb3Vwcy5sZW5ndGggKiAyKTtcbiAgICAgIHJlc3VsdFswXSA9IDA7IC8vIHRhZ1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBncm91cHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGcgPSBncm91cHNbaV07XG4gICAgICAgIGlmIChnLnN0YXJ0IDwgMCB8fCBnLmVuZCA8IDApIHtcbiAgICAgICAgICBnLnN0YXJ0ID0gZy5lbmQgPSAtMTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHRbMiAqIGkgKyAxXSA9IGcuc3RhcnQ7XG4gICAgICAgIHJlc3VsdFsyICogaSArIDEgKyAxXSA9IGcuZW5kO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuXG4gICAgdmFyIHByZWZpeF9tYXRjaCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChwYXJ0aWFsKSByZXR1cm4gYWNjZXB0KCk7XG4gICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgIH07XG5cbiAgICAvKiBNYWluIERGQSBpbnRlcnByZXRlciBsb29wICovXG4gICAgd2hpbGUgKCFxdWl0KSB7XG4gICAgICB2YXIgb3AgPSBwcm9nW3BjXSAmIDB4ZmYsXG4gICAgICAgIHNhcmcgPSBwcm9nW3BjXSA+PiA4LFxuICAgICAgICB1YXJnID0gc2FyZyAmIDB4ZmYsXG4gICAgICAgIGMgPSBzW3Bvc10sXG4gICAgICAgIGdyb3VwO1xuXG4gICAgICBwYysrO1xuXG4gICAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEFSOlxuICAgICAgICAgIGlmIChwb3MgPT09IHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBwcmVmaXhfbWF0Y2goKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoYyA9PT0gdWFyZykgcG9zKys7XG4gICAgICAgICAgZWxzZSBiYWNrdHJhY2soKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBvcGNvZGVzLkNIQVJOT1JNOlxuICAgICAgICAgIGlmIChwb3MgPT09IHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBwcmVmaXhfbWF0Y2goKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobm9ybXRhYmxlLmNoYXJDb2RlQXQoYykgPT09IHVhcmcpIHBvcysrO1xuICAgICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2Ugb3Bjb2Rlcy5TVFJJTkc6XG4gICAgICAgICAgZm9yIChcbiAgICAgICAgICAgIHZhciBhcmcgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGNwb29sW3VhcmddKSwgaSA9IDA7XG4gICAgICAgICAgICBpIDwgYXJnLmxlbmd0aDtcbiAgICAgICAgICAgIGkrK1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgaWYgKHBvcyA9PT0gcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgcHJlZml4X21hdGNoKCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGMgPT09IGFyZy5jaGFyQ29kZUF0KGkpKSBjID0gc1srK3Bvc107XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgYmFja3RyYWNrKCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBvcGNvZGVzLlNUUklOR05PUk06XG4gICAgICAgICAgZm9yIChcbiAgICAgICAgICAgIHZhciBhcmcgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGNwb29sW3VhcmddKSwgaSA9IDA7XG4gICAgICAgICAgICBpIDwgYXJnLmxlbmd0aDtcbiAgICAgICAgICAgIGkrK1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgaWYgKHBvcyA9PT0gcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgcHJlZml4X21hdGNoKCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG5vcm10YWJsZS5jaGFyQ29kZUF0KGMpID09PSBhcmcuY2hhckNvZGVBdChpKSkgYyA9IHNbKytwb3NdO1xuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgIGJhY2t0cmFjaygpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEFSQ0xBU1M6XG4gICAgICAgICAgaWYgKHBvcyA9PT0gcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHByZWZpeF9tYXRjaCgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKSBwb3MrKztcbiAgICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIG9wY29kZXMuQk9MOlxuICAgICAgICAgIGlmIChwb3MgPiAwICYmIHNbcG9zIC0gMV0gIT09IDEwIC8qIFxcbiAqLykge1xuICAgICAgICAgICAgYmFja3RyYWNrKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIG9wY29kZXMuRU9MOlxuICAgICAgICAgIGlmIChwb3MgPCBzLmxlbmd0aCAmJiBzW3Bvc10gIT09IDEwIC8qIFxcbiAqLykge1xuICAgICAgICAgICAgYmFja3RyYWNrKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIG9wY29kZXMuV09SREJPVU5EQVJZOlxuICAgICAgICAgIGlmIChwb3MgPT09IDApIHtcbiAgICAgICAgICAgIGlmIChwb3MgPT09IHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHByZWZpeF9tYXRjaCgpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc193b3JkX2xldHRlcihzWzBdKSkgYnJlYWs7XG4gICAgICAgICAgICBiYWNrdHJhY2soKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHBvcyA9PT0gcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmIChpc193b3JkX2xldHRlcihzW3BvcyAtIDFdKSkgYnJlYWs7XG4gICAgICAgICAgICBiYWNrdHJhY2soKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzX3dvcmRfbGV0dGVyKHNbcG9zIC0gMV0pICE9PSBpc193b3JkX2xldHRlcihzW3Bvc10pKSBicmVhaztcbiAgICAgICAgICAgIGJhY2t0cmFjaygpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBvcGNvZGVzLkJFR0dST1VQOlxuICAgICAgICAgIGdyb3VwID0gZ3JvdXBzW3VhcmddO1xuICAgICAgICAgIHB1c2goeyB1bmRvOiB7IG9iajogZ3JvdXAsIHByb3A6IFwic3RhcnRcIiwgdmFsdWU6IGdyb3VwLnN0YXJ0IH0gfSk7XG4gICAgICAgICAgZ3JvdXAuc3RhcnQgPSBwb3M7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2Ugb3Bjb2Rlcy5FTkRHUk9VUDpcbiAgICAgICAgICBncm91cCA9IGdyb3Vwc1t1YXJnXTtcbiAgICAgICAgICBwdXNoKHsgdW5kbzogeyBvYmo6IGdyb3VwLCBwcm9wOiBcImVuZFwiLCB2YWx1ZTogZ3JvdXAuZW5kIH0gfSk7XG4gICAgICAgICAgZ3JvdXAuZW5kID0gcG9zO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIG9wY29kZXMuUkVGR1JPVVA6XG4gICAgICAgICAgZ3JvdXAgPSBncm91cHNbdWFyZ107XG4gICAgICAgICAgaWYgKGdyb3VwLnN0YXJ0IDwgMCB8fCBncm91cC5lbmQgPCAwKSB7XG4gICAgICAgICAgICBiYWNrdHJhY2soKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmb3IgKHZhciBpID0gZ3JvdXAuc3RhcnQ7IGkgPCBncm91cC5lbmQ7IGkrKykge1xuICAgICAgICAgICAgaWYgKHBvcyA9PT0gcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgcHJlZml4X21hdGNoKCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNbaV0gIT09IHNbcG9zXSkge1xuICAgICAgICAgICAgICBiYWNrdHJhY2soKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwb3MrKztcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2Ugb3Bjb2Rlcy5TSU1QTEVPUFQ6XG4gICAgICAgICAgaWYgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpIHBvcysrO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIG9wY29kZXMuU0lNUExFU1RBUjpcbiAgICAgICAgICB3aGlsZSAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkgYyA9IHNbKytwb3NdO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIG9wY29kZXMuU0lNUExFUExVUzpcbiAgICAgICAgICBpZiAocG9zID09PSBzLmxlbmd0aCkge1xuICAgICAgICAgICAgcHJlZml4X21hdGNoKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpIHtcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgYyA9IHNbKytwb3NdO1xuICAgICAgICAgICAgfSB3aGlsZSAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSk7XG4gICAgICAgICAgfSBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIG9wY29kZXMuQUNDRVBUOlxuICAgICAgICAgIHJldHVybiBhY2NlcHQoKTtcbiAgICAgICAgY2FzZSBvcGNvZGVzLkdPVE86XG4gICAgICAgICAgcGMgPSBwYyArIHNhcmc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2Ugb3Bjb2Rlcy5QVVNIQkFDSzpcbiAgICAgICAgICBwdXNoKHsgcG9zOiB7IHBjOiBwYyArIHNhcmcsIHR4dDogcG9zIH0gfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2Ugb3Bjb2Rlcy5TRVRNQVJLOlxuICAgICAgICAgIHB1c2goe1xuICAgICAgICAgICAgdW5kbzogeyBvYmo6IHJlX3JlZ2lzdGVyLCBwcm9wOiB1YXJnLCB2YWx1ZTogcmVfcmVnaXN0ZXJbdWFyZ10gfSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZV9yZWdpc3Rlclt1YXJnXSA9IHBvcztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBvcGNvZGVzLkNIRUNLUFJPR1JFU1M6XG4gICAgICAgICAgaWYgKHJlX3JlZ2lzdGVyW3VhcmddID09PSBwb3MpIGJhY2t0cmFjaygpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYnl0ZWNvZGVcIik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9XG5cbiAgcmV0dXJuIHJlX21hdGNoX2ltcGw7XG59KSgpO1xuXG4vL1Byb3ZpZGVzOiByZV9zZWFyY2hfZm9yd2FyZFxuLy9SZXF1aXJlczogcmVfbWF0Y2gsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19nZXRcbmZ1bmN0aW9uIHJlX3NlYXJjaF9mb3J3YXJkKHJlLCBzLCBwb3MpIHtcbiAgaWYgKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zZWFyY2hfZm9yd2FyZFwiKTtcbiAgdmFyIHN0YXJ0Y2hhcnMgPSByZVs2XSB8IDA7XG4gIHZhciBsZW4gPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocyk7XG4gIGlmIChzdGFydGNoYXJzID49IDApIHtcbiAgICBzdGFydGNoYXJzID0gcmVbMl1bc3RhcnRjaGFycyArIDFdO1xuICAgIGRvIHtcbiAgICAgIHdoaWxlIChcbiAgICAgICAgcG9zIDwgbGVuICYmXG4gICAgICAgIGNhbWxfc3RyaW5nX2dldChzdGFydGNoYXJzLCBjYW1sX3N0cmluZ19nZXQocywgcG9zKSkgPT09IDBcbiAgICAgIClcbiAgICAgICAgcG9zKys7XG4gICAgICB2YXIgcmVzID0gcmVfbWF0Y2gocmUsIHMsIHBvcywgMCk7XG4gICAgICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICAgICAgcG9zKys7XG4gICAgfSB3aGlsZSAocG9zIDw9IGxlbik7XG4gIH0gZWxzZSB7XG4gICAgZG8ge1xuICAgICAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICAgICAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgICAgIHBvcysrO1xuICAgIH0gd2hpbGUgKHBvcyA8PSBsZW4pO1xuICB9XG4gIHJldHVybiBbMF07IC8qIFt8fF0gOiBpbnQgYXJyYXkgKi9cbn1cblxuLy9Qcm92aWRlczogcmVfc2VhcmNoX2JhY2t3YXJkXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2dldFxuZnVuY3Rpb24gcmVfc2VhcmNoX2JhY2t3YXJkKHJlLCBzLCBwb3MpIHtcbiAgaWYgKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zZWFyY2hfYmFja3dhcmRcIik7XG4gIHZhciBzdGFydGNoYXJzID0gcmVbNl0gfCAwO1xuICBpZiAoc3RhcnRjaGFycyA+PSAwKSB7XG4gICAgc3RhcnRjaGFycyA9IHJlWzJdW3N0YXJ0Y2hhcnMgKyAxXTtcbiAgICB2YXIgbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpO1xuICAgIGRvIHtcbiAgICAgIHdoaWxlIChcbiAgICAgICAgcG9zID4gMCAmJlxuICAgICAgICBwb3MgPCBsZW4gJiZcbiAgICAgICAgY2FtbF9zdHJpbmdfZ2V0KHN0YXJ0Y2hhcnMsIGNhbWxfc3RyaW5nX2dldChzLCBwb3MpKSA9PT0gMFxuICAgICAgKVxuICAgICAgICBwb3MtLTtcbiAgICAgIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAwKTtcbiAgICAgIGlmIChyZXMpIHJldHVybiByZXM7XG4gICAgICBwb3MtLTtcbiAgICB9IHdoaWxlIChwb3MgPj0gMCk7XG4gIH0gZWxzZSB7XG4gICAgZG8ge1xuICAgICAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICAgICAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgICAgIHBvcy0tO1xuICAgIH0gd2hpbGUgKHBvcyA+PSAwKTtcbiAgfVxuICByZXR1cm4gWzBdOyAvKiBbfHxdIDogaW50IGFycmF5ICovXG59XG5cbi8vUHJvdmlkZXM6IHJlX3N0cmluZ19tYXRjaFxuLy9SZXF1aXJlczogcmVfbWF0Y2gsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiByZV9zdHJpbmdfbWF0Y2gocmUsIHMsIHBvcykge1xuICBpZiAocG9zIDwgMCB8fCBwb3MgPiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyLnN0cmluZ19tYXRjaFwiKTtcbiAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICBlbHNlIHJldHVybiBbMF07XG59XG5cbi8vUHJvdmlkZXM6IHJlX3BhcnRpYWxfbWF0Y2hcbi8vUmVxdWlyZXM6IHJlX21hdGNoLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gcmVfcGFydGlhbF9tYXRjaChyZSwgcywgcG9zKSB7XG4gIGlmIChwb3MgPCAwIHx8IHBvcyA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHIucGFydGlhbF9tYXRjaFwiKTtcbiAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDEpO1xuICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICBlbHNlIHJldHVybiBbMF07XG59XG5cbi8vUHJvdmlkZXM6IHJlX3JlcGxhY2VtZW50X3RleHRcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vLyBleHRlcm5hbCByZV9yZXBsYWNlbWVudF90ZXh0OiBzdHJpbmcgLT4gaW50IGFycmF5IC0+IHN0cmluZyAtPiBzdHJpbmdcbmZ1bmN0aW9uIHJlX3JlcGxhY2VtZW50X3RleHQocmVwbCwgZ3JvdXBzLCBvcmlnKSB7XG4gIHZhciByZXBsID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhyZXBsKTtcbiAgdmFyIGxlbiA9IHJlcGwubGVuZ3RoO1xuICB2YXIgb3JpZyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcob3JpZyk7XG4gIHZhciByZXMgPSBcIlwiOyAvL3Jlc3VsdFxuICB2YXIgbiA9IDA7IC8vIGN1cnJlbnQgcG9zaXRpb25cbiAgdmFyIGN1cjsgLy9jdXJyZW50IGNoYXJcbiAgdmFyIHN0YXJ0LCBlbmQsIGM7XG4gIHdoaWxlIChuIDwgbGVuKSB7XG4gICAgY3VyID0gcmVwbC5jaGFyQXQobisrKTtcbiAgICBpZiAoY3VyICE9PSBcIlxcXFxcIikge1xuICAgICAgcmVzICs9IGN1cjtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG4gPT09IGxlbikgY2FtbF9mYWlsd2l0aChcIlN0ci5yZXBsYWNlOiBpbGxlZ2FsIGJhY2tzbGFzaCBzZXF1ZW5jZVwiKTtcbiAgICAgIGN1ciA9IHJlcGwuY2hhckF0KG4rKyk7XG4gICAgICBzd2l0Y2ggKGN1cikge1xuICAgICAgICBjYXNlIFwiXFxcXFwiOlxuICAgICAgICAgIHJlcyArPSBjdXI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCIwXCI6XG4gICAgICAgIGNhc2UgXCIxXCI6XG4gICAgICAgIGNhc2UgXCIyXCI6XG4gICAgICAgIGNhc2UgXCIzXCI6XG4gICAgICAgIGNhc2UgXCI0XCI6XG4gICAgICAgIGNhc2UgXCI1XCI6XG4gICAgICAgIGNhc2UgXCI2XCI6XG4gICAgICAgIGNhc2UgXCI3XCI6XG4gICAgICAgIGNhc2UgXCI4XCI6XG4gICAgICAgIGNhc2UgXCI5XCI6XG4gICAgICAgICAgYyA9ICtjdXI7XG4gICAgICAgICAgaWYgKGMgKiAyID49IGdyb3Vwcy5sZW5ndGggLSAxKVxuICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcIlN0ci5yZXBsYWNlOiByZWZlcmVuY2UgdG8gdW5tYXRjaGVkIGdyb3VwXCIpO1xuICAgICAgICAgIHN0YXJ0ID0gY2FtbF9hcnJheV9nZXQoZ3JvdXBzLCBjICogMik7XG4gICAgICAgICAgZW5kID0gY2FtbF9hcnJheV9nZXQoZ3JvdXBzLCBjICogMiArIDEpO1xuICAgICAgICAgIGlmIChzdGFydCA9PT0gLTEpXG4gICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IHJlZmVyZW5jZSB0byB1bm1hdGNoZWQgZ3JvdXBcIik7XG4gICAgICAgICAgcmVzICs9IG9yaWcuc2xpY2Uoc3RhcnQsIGVuZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmVzICs9IFwiXFxcXFwiICsgY3VyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhyZXMpO1xufVxuIl0sIm5hbWVzIjpbImNzdF9PdXRfb2ZfbWVtb3J5IiwiY3N0X1N5c19lcnJvciIsImNzdF9GYWlsdXJlIiwiY3N0X0ludmFsaWRfYXJndW1lbnQiLCJjc3RfRW5kX29mX2ZpbGUiLCJjc3RfRGl2aXNpb25fYnlfemVybyIsImNzdF9Ob3RfZm91bmQiLCJjc3RfTWF0Y2hfZmFpbHVyZSIsImNzdF9TdGFja19vdmVyZmxvdyIsImNzdF9TeXNfYmxvY2tlZF9pbyIsImNzdF9Bc3NlcnRfZmFpbHVyZSIsImNzdF9VbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZSJdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQTtBQUFBO0FBQUEsR0FBQTtBQUFBO0FBQUE7QUFBQSxRQUFBO0FBQUEsU0FBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGlCQUFBO0FBQUEsSUFBQTtBQUFBLElBQUE7QUFBQSxHQUFBO0FBQUEsRUFB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R3FCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsV0FNUjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtB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SUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBRUosSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBRUosSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBRUosSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBRUosT0FBTztBQUFBLFNBQ1AsT0FBTztBQUFBLFNBQ1AsT0FBTztBQUFBLFNBQ1AsT0FBTyxhQTdFRixDQThFTjtBQUFBLE9BbkdzQjtBQUFBLE9BQUQ7QUFBQTtBQUFBLGlCQWlKWDtBQUFB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QUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEdKemFBO0FBQUEsT0FBQUEsb0JBQUE7QUFBQTtBQUFBLE9BQUFDLGdCQUFBO0FBQUE7QUFBQSxPQUFBQyxjQUFBO0FBQUE7QUFBQSxPQUFBQyx1QkFBQTtBQUFBO0FBQUE7QUFBQSxPQUFBQyxrQkFBQTtBQUFBO0FBQUEsT0FBQUMsdUJBQUE7QUFBQTtBQUFBO0FBQUEsT0FBQUMsZ0JBQUE7QUFBQTtBQUFBLE9BQUFDLG9CQUFBO0FBQUE7QUFBQSxPQUFBQyxxQkFBQTtBQUFBO0FBQUEsT0FBQUMscUJBQUE7QUFBQTtBQUFBLE9BQUFDLHFCQUFBO0FBQUE7QUFBQTtBQUFBLE9BQUFDLGlDQUFBIiwiaWdub3JlTGlzdCI6WzAsMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTIsMTMsMTQsMTUsMTYsMTcsMTgsMTksMjAsMjEsMjIsMjMsMjQsMjUsMjYsMjcsMjgsMjksMzAsMzEsMzIsMzMsMzQsMzUsMzYsMzcsMzhdfX0seyJvZmZzZXQiOnsibGluZSI6OTQ0MCwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL2NhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICBCZW5vaXQgVmF1Z29uLCBFTlNUQSAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogUGFkZGluZyBwb3NpdGlvbi4gKilcbnR5cGUgcGFkdHkgPVxuICB8IExlZnQgICAoKiBUZXh0IGlzIGxlZnQganVzdGlmaWVkICgnLScgb3B0aW9uKS4gICAgICAgICAgICAgICAqKVxuICB8IFJpZ2h0ICAoKiBUZXh0IGlzIHJpZ2h0IGp1c3RpZmllZCAobm8gJy0nIG9wdGlvbikuICAgICAgICAgICAqKVxuICB8IFplcm9zICAoKiBUZXh0IGlzIHJpZ2h0IGp1c3RpZmllZCBieSB6ZXJvcyAoc2VlICcwJyBvcHRpb24pLiAqKVxuXG4oKioqKVxuXG4oKiBJbnRlZ2VyIGNvbnZlcnNpb24uICopXG50eXBlIGludF9jb252ID1cbiAgfCBJbnRfZCB8IEludF9wZCB8IEludF9zZCAgICAgICAgKCogICVkIHwgJStkIHwgJSBkICAqKVxuICB8IEludF9pIHwgSW50X3BpIHwgSW50X3NpICAgICAgICAoKiAgJWkgfCAlK2kgfCAlIGkgICopXG4gIHwgSW50X3ggfCBJbnRfQ3ggICAgICAgICAgICAgICAgICgqICAleCB8ICUjeCAgICAgICAgKilcbiAgfCBJbnRfWCB8IEludF9DWCAgICAgICAgICAgICAgICAgKCogICVYIHwgJSNYICAgICAgICAqKVxuICB8IEludF9vIHwgSW50X0NvICAgICAgICAgICAgICAgICAoKiAgJW8gfCAlI28gICAgICAgICopXG4gIHwgSW50X3UgICAgICAgICAgICAgICAgICAgICAgICAgICgqICAldSAgICAgICAgICAgICAgKilcbiAgfCBJbnRfQ2QgfCBJbnRfQ2kgfCBJbnRfQ3UgICAgICAgKCogICUjZCB8ICUjaSB8ICUjdSAqKVxuXG4oKiBGbG9hdCBjb252ZXJzaW9uLiAqKVxudHlwZSBmbG9hdF9mbGFnX2NvbnYgPVxuICB8IEZsb2F0X2ZsYWdfICAgICAgICAgICAgICAgICAgICAoKiAlW2ZlRWdHRmhIXSAqKVxuICB8IEZsb2F0X2ZsYWdfcCAgICAgICAgICAgICAgICAgICAoKiAlK1tmZUVnR0ZoSF0gKilcbiAgfCBGbG9hdF9mbGFnX3MgICAgICAgICAgICAgICAgICAgKCogJSBbZmVFZ0dGaEhdICopXG50eXBlIGZsb2F0X2tpbmRfY29udiA9XG4gIHwgRmxvYXRfZiAgICAgICAgICAgICAgICAgICAgICAgICgqICAlZiB8ICUrZiB8ICUgZiAgKilcbiAgfCBGbG9hdF9lICAgICAgICAgICAgICAgICAgICAgICAgKCogICVlIHwgJStlIHwgJSBlICAqKVxuICB8IEZsb2F0X0UgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJUUgfCAlK0UgfCAlIEUgICopXG4gIHwgRmxvYXRfZyAgICAgICAgICAgICAgICAgICAgICAgICgqICAlZyB8ICUrZyB8ICUgZyAgKilcbiAgfCBGbG9hdF9HICAgICAgICAgICAgICAgICAgICAgICAgKCogICVHIHwgJStHIHwgJSBHICAqKVxuICB8IEZsb2F0X0YgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJUYgfCAlK0YgfCAlIEYgICopXG4gIHwgRmxvYXRfaCAgICAgICAgICAgICAgICAgICAgICAgICgqICAlaCB8ICUraCB8ICUgaCAgKilcbiAgfCBGbG9hdF9IICAgICAgICAgICAgICAgICAgICAgICAgKCogICVIIHwgJStIIHwgJSBIICAqKVxuICB8IEZsb2F0X0NGICAgICAgICAgICAgICAgICAgICAgICAoKiAgJSNGfCAlKyNGfCAlICNGICopXG50eXBlIGZsb2F0X2NvbnYgPSBmbG9hdF9mbGFnX2NvbnYgKiBmbG9hdF9raW5kX2NvbnZcblxuKCoqKilcblxuKCogQ2hhciBzZXRzIChzZWUgJVsuLi5dKSBhcmUgYml0bWFwcyBpbXBsZW1lbnRlZCBhcyAzMi1jaGFyIHN0cmluZ3MuICopXG50eXBlIGNoYXJfc2V0ID0gc3RyaW5nXG5cbigqKiopXG5cbigqIENvdW50ZXIgdXNlZCBpbiBTY2FuZi4gKilcbnR5cGUgY291bnRlciA9XG4gIHwgTGluZV9jb3VudGVyICAgICAoKiAgJWwgICAgICAqKVxuICB8IENoYXJfY291bnRlciAgICAgKCogICVuICAgICAgKilcbiAgfCBUb2tlbl9jb3VudGVyICAgICgqICAlTiwgJUwgICopXG5cbigqKiopXG5cbigqIFBhZGRpbmcgb2Ygc3RyaW5ncyBhbmQgbnVtYmVycy4gKilcbnR5cGUgKCdhLCAnYikgcGFkZGluZyA9XG4gICgqIE5vIHBhZGRpbmcgKGV4OiBcIiVkXCIpICopXG4gIHwgTm9fcGFkZGluZyAgOiAoJ2EsICdhKSBwYWRkaW5nXG4gICgqIExpdGVyYWwgcGFkZGluZyAoZXg6IFwiJThkXCIpICopXG4gIHwgTGl0X3BhZGRpbmcgOiBwYWR0eSAqIGludCAtPiAoJ2EsICdhKSBwYWRkaW5nXG4gICgqIFBhZGRpbmcgYXMgZXh0cmEgYXJndW1lbnQgKGV4OiBcIiUqZFwiKSAqKVxuICB8IEFyZ19wYWRkaW5nIDogcGFkdHkgLT4gKGludCAtPiAnYSwgJ2EpIHBhZGRpbmdcblxuKCogU29tZSBmb3JtYXRzLCBzdWNoIGFzICVfZCxcbiAgIG9ubHkgYWNjZXB0IGFuIG9wdGlvbmFsIG51bWJlciBhcyBwYWRkaW5nIG9wdGlvbiAobm8gZXh0cmEgYXJndW1lbnQpICopXG50eXBlIHBhZF9vcHRpb24gPSBpbnQgb3B0aW9uXG5cbigqIFByZWNpc2lvbiBvZiBmbG9hdHMgYW5kICcwJy1wYWRkaW5nIG9mIGludGVnZXJzLiAqKVxudHlwZSAoJ2EsICdiKSBwcmVjaXNpb24gPVxuICAoKiBObyBwcmVjaXNpb24gKGV4OiBcIiVmXCIpICopXG4gIHwgTm9fcHJlY2lzaW9uIDogKCdhLCAnYSkgcHJlY2lzaW9uXG4gICgqIExpdGVyYWwgcHJlY2lzaW9uIChleDogXCIlLjNmXCIpICopXG4gIHwgTGl0X3ByZWNpc2lvbiA6IGludCAtPiAoJ2EsICdhKSBwcmVjaXNpb25cbiAgKCogUHJlY2lzaW9uIGFzIGV4dHJhIGFyZ3VtZW50IChleDogXCIlLipmXCIpICopXG4gIHwgQXJnX3ByZWNpc2lvbiA6IChpbnQgLT4gJ2EsICdhKSBwcmVjaXNpb25cblxuKCogU29tZSBmb3JtYXRzLCBzdWNoIGFzICVfZixcbiAgIG9ubHkgYWNjZXB0IGFuIG9wdGlvbmFsIG51bWJlciBhcyBwcmVjaXNpb24gb3B0aW9uIChubyBleHRyYSBhcmd1bWVudCkgKilcbnR5cGUgcHJlY19vcHRpb24gPSBpbnQgb3B0aW9uXG5cbigqIHNlZSB0aGUgQ3VzdG9tIGZvcm1hdCBjb21iaW5hdG9yICopXG50eXBlICgnYSwgJ2IsICdjKSBjdXN0b21fYXJpdHkgPVxuICB8IEN1c3RvbV96ZXJvIDogKCdhLCBzdHJpbmcsICdhKSBjdXN0b21fYXJpdHlcbiAgfCBDdXN0b21fc3VjYyA6ICgnYSwgJ2IsICdjKSBjdXN0b21fYXJpdHkgLT5cbiAgICAoJ2EsICd4IC0+ICdiLCAneCAtPiAnYykgY3VzdG9tX2FyaXR5XG5cbigqKiopXG5cbigqICAgICAgICBSZWxhdGlvbmFsIGZvcm1hdCB0eXBlc1xuXG5JbiB0aGUgZmlyc3QgZm9ybWF0K2dhZHRzIGltcGxlbWVudGF0aW9uLCB0aGUgdHlwZSBmb3IgJSguLiUpIGluIHRoZVxuZm10IEdBRFQgd2FzIGFzIGZvbGxvd3M6XG5cbnwgRm9ybWF0X3N1YnN0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgIHBhZF9vcHRpb24gKiAoJ2QxLCAncTEsICdkMiwgJ3EyKSByZWFkZXJfbmJfdW5pZmllciAqXG4gICAgKCd4LCAnYiwgJ2MsICdkMSwgJ3ExLCAndSkgZm10dHkgKlxuICAgICgndSwgJ2IsICdjLCAncTEsICdlMSwgJ2YpIGZtdCAtPlxuICAgICAgKCgneCwgJ2IsICdjLCAnZDIsICdxMiwgJ3UpIGZvcm1hdDYgLT4gJ3gsICdiLCAnYywgJ2QxLCAnZTEsICdmKSBmbXRcblxuTm90aWNlIHRoYXQgdGhlICd1IHBhcmFtZXRlciBpbiAnZiBwb3NpdGlvbiBpbiB0aGUgZm9ybWF0IGFyZ3VtZW50XG4oKCd4LCAuLiwgJ3UpIGZvcm1hdDYgLT4gLi4pIGlzIGVxdWFsIHRvIHRoZSAndSBwYXJhbWV0ZXIgaW4gJ2FcbnBvc2l0aW9uIGluIHRoZSBmb3JtYXQgdGFpbCAoKCd1LCAuLiwgJ2YpIGZtdCkuIFRoaXMgbWVhbnMgdGhhdCB0aGVcbnR5cGUgb2YgdGhlIGV4cGVjdGVkIGZvcm1hdCBwYXJhbWV0ZXIgZGVwZW5kcyBvZiB3aGVyZSB0aGUgJSguLi4lKVxuYXJlIGluIHRoZSBmb3JtYXQgc3RyaW5nOlxuXG4gICMgUHJpbnRmLnByaW50ZiBcIiUoJSlcIlxuICAtIDogKHVuaXQsIG91dF9jaGFubmVsLCB1bml0LCAnX2EsICdfYSwgdW5pdClcbiAgICAgIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2IC0+IHVuaXRcbiAgPSA8ZnVuPlxuICAjIFByaW50Zi5wcmludGYgXCIlKCUpJWRcIlxuICAtIDogKGludCAtPiB1bml0LCBvdXRfY2hhbm5lbCwgdW5pdCwgJ19hLCAnX2EsIGludCAtPiB1bml0KVxuICAgICAgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDYgLT4gaW50IC0+IHVuaXRcbiAgPSA8ZnVuPlxuXG5PbiB0aGUgY29udHJhcnksIHRoZSBsZWdhY3kgdHlwZXIgZ2l2ZXMgYSBjbGV2ZXIgdHlwZSB0aGF0IGRvZXMgbm90XG5kZXBlbmQgb24gdGhlIHBvc2l0aW9uIG9mICUoLi4lKSBpbiB0aGUgZm9ybWF0IHN0cmluZy4gRm9yIGV4YW1wbGUsXG4lKCUpIHdpbGwgaGF2ZSB0aGUgcG9seW1vcnBoaWMgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSk6IGl0IGNhblxuYmUgY29uY2F0ZW5hdGVkIHRvIGFueSBmb3JtYXQgdHlwZSwgYW5kIG9ubHkgZW5mb3JjZXMgdGhlIGNvbnN0cmFpbnRcbnRoYXQgaXRzICdhIGFuZCAnZiBwYXJhbWV0ZXJzIGFyZSBlcXVhbCAobm8gZm9ybWF0IGFyZ3VtZW50cykgYW5kICdkXG5hbmQgJ2UgYXJlIGVxdWFsIChubyByZWFkZXIgYXJndW1lbnQpLlxuXG5UaGUgd2Vha2VuaW5nIG9mIHRoaXMgcGFyYW1ldGVyIHR5cGUgaW4gdGhlIEdBRFQgdmVyc2lvbiBicm9rZSB1c2VyXG5jb2RlIChpbiBmYWN0IGl0IGVzc2VudGlhbGx5IG1hZGUgJSguLi4lKSB1bnVzYWJsZSBleGNlcHQgYXQgdGhlIGxhc3RcbnBvc2l0aW9uIG9mIGEgZm9ybWF0KS4gSW4gcGFydGljdWxhciwgdGhlIGZvbGxvd2luZyB3b3VsZCBub3Qgd29ya1xuYW55bW9yZTpcblxuICBmdW4gc2VwIC0+XG4gICAgRm9ybWF0LnByaW50ZiBcImZvbyUoJSliYXIlKCUpYmF6XCIgc2VwIHNlcFxuXG5BcyB0aGUgdHlwZS1jaGVja2VyIHdvdWxkIHJlcXVpcmUgdHdvICppbmNvbXBhdGlibGUqIHR5cGVzIGZvciB0aGUgJSglKVxuaW4gZGlmZmVyZW50IHBvc2l0aW9ucy5cblxuVGhlIHNvbHV0aW9uIHRvIHJlZ2FpbiBhIGdlbmVyYWwgdHlwZSBmb3IgJSguLiUpIGlzIHRvIGdlbmVyYWxpemUgdGhpc1xudGVjaG5pcXVlLCBub3Qgb25seSBvbiB0aGUgJ2QsICdlIHBhcmFtZXRlcnMsIGJ1dCBvbiBhbGwgc2l4XG5wYXJhbWV0ZXJzIG9mIGEgZm9ybWF0OiB3ZSBpbnRyb2R1Y2UgYSBcInJlbGF0aW9uYWxcIiB0eXBlXG4gICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG53aG9zZSB2YWx1ZXMgYXJlIHByb29mcyB0aGF0ICgnYTEsIC4uLCAnZjEpIGFuZCAoJ2EyLCAuLiwgJ2YyKSBtb3JhbGx5XG5jb3JyZXNwb25kIHRvIHRoZSBzYW1lIGZvcm1hdCB0eXBlOiAnYTEgaXMgb2J0YWluZWQgZnJvbSAnZjEsJ2IxLCdjMVxuaW4gdGhlIGV4YWN0IHNhbWUgd2F5IHRoYXQgJ2EyIGlzIG9idGFpbmVkIGZyb20gJ2YyLCdiMiwnYzIsIGV0Yy5cblxuRm9yIGV4YW1wbGUsIHRoZSByZWxhdGlvbiBiZXR3ZWVuIHR3byBmb3JtYXQgdHlwZXMgYmVnaW5uaW5nIHdpdGggYSBDaGFyXG5wYXJhbWV0ZXIgaXMgYXMgZm9sbG93czpcblxufCBDaGFyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWMgICopXG4gICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgIChjaGFyIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgIGNoYXIgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbkluIHRoZSBnZW5lcmFsIGNhc2UsIHRoZSB0ZXJtIHN0cnVjdHVyZSBvZiBmbXR0eV9yZWwgaXMgKGFsbW9zdFsxXSlcbmlzb21vcnBoaWMgdG8gdGhlIGZtdHR5IG9mIHRoZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbjogZXZlcnlcbmNvbnN0cnVjdG9yIGlzIHJlLXJlYWQgd2l0aCBhIGJpbmFyeSwgcmVsYXRpb25hbCB0eXBlLCBpbnN0ZWFkIG9mIHRoZVxucHJldmlvdXMgdW5hcnkgdHlwaW5nLiBmbXR0eSBjYW4gdGhlbiBiZSByZS1kZWZpbmVkIGFzIHRoZSBkaWFnb25hbCBvZlxuZm10dHlfcmVsOlxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5ID1cbiAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZixcbiAgICAgICAgJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHlfcmVsXG5cbk9uY2Ugd2UgaGF2ZSB0aGlzIGZtdHR5X3JlbCB0eXBlIGluIHBsYWNlLCB3ZSBjYW4gZ2l2ZSB0aGUgbW9yZVxuZ2VuZXJhbCB0eXBlIHRvICUoLi4uJSk6XG5cbnwgRm9ybWF0X3N1YnN0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgIHBhZF9vcHRpb24gKlxuICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAnZzIsICdiLCAnYywgJ2oyLCAnZCwgJ2EpIGZtdHR5X3JlbCAqXG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiLCAnYywgJ2oyLCAnZSwgJ2YpIGZtdFxuXG5XZSBhY2NlcHQgYW55IGZvcm1hdCAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYpICh0aGlzIGlzXG5jb21wbGV0ZWx5IHVucmVsYXRlZCB0byB0aGUgdHlwZSBvZiB0aGUgY3VycmVudCBmb3JtYXQpLCBidXQgYWxzb1xucmVxdWlyZSBhIHByb29mIHRoYXQgdGhpcyBmb3JtYXQgaXMgaW4gcmVsYXRpb24gdG8gYW5vdGhlciBmb3JtYXQgdGhhdFxuaXMgY29uY2F0ZW5hYmxlIHRvIHRoZSBmb3JtYXQgdGFpbC4gV2hlbiBleGVjdXRpbmcgYSAlKC4uLiUpIGZvcm1hdFxuKGluIGNhbWxpbnRlcm5hbEZvcm1hdC5tbDptYWtlX3ByaW50ZiBvciBzY2FuZi5tbDptYWtlX3NjYW5mKSwgd2VcbnRyYW5zdHlwZSB0aGUgZm9ybWF0IGFsb25nIHRoaXMgcmVsYXRpb24gdXNpbmcgdGhlICdyZWNhc3QnIGZ1bmN0aW9uXG50byB0cmFuc3Bvc2UgYmV0d2VlbiByZWxhdGVkIGZvcm1hdCB0eXBlcy5cblxuICB2YWwgcmVjYXN0IDpcbiAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEpIGZtdFxuICAtPiAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICAtPiAoJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10XG5cbk5PVEUgWzFdOiB0aGUgdHlwaW5nIG9mIEZvcm1hdF9zdWJzdF90eSByZXF1aXJlcyBub3Qgb25lIGZvcm1hdCB0eXBlLCBidXRcbnR3bywgb25lIHRvIGVzdGFibGlzaCB0aGUgbGluayBiZXR3ZWVuIHRoZSBmb3JtYXQgYXJndW1lbnQgYW5kIHRoZVxuZmlyc3Qgc2l4IHBhcmFtZXRlcnMsIGFuZCB0aGUgb3RoZXIgZm9yIHRoZSBsaW5rIGJldHdlZW4gdGhlIGZvcm1hdFxuYXJndW1lbnQgYW5kIHRoZSBsYXN0IHNpeCBwYXJhbWV0ZXJzLlxuXG58IEZvcm1hdF9zdWJzdF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICdnMSwgJ2IxLCAnYzEsICdqMSwgJ2QxLCAnYTEpIGZtdHR5X3JlbCAqXG4gICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICdnMiwgJ2IyLCAnYzIsICdqMiwgJ2QyLCAnYTIpIGZtdHR5X3JlbCAqXG4gICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzEsICdiMSwgJ2MxLCAnajEsICdlMSwgJ2YxLFxuICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiMiwgJ2MyLCAnajIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuV2hlbiB3ZSBnZW5lcmF0ZSBhIGZvcm1hdCBBU1QsIHdlIGdlbmVyYXRlIGV4YWN0bHkgdGhlIHNhbWUgd2l0bmVzc1xuZm9yIGJvdGggcmVsYXRpb25zLCBhbmQgdGhlIHdpdG5lc3MtY29udmVyc2lvbiBmdW5jdGlvbnMgaW5cbmNhbWxpbnRlcm5hbEZvcm1hdCBkbyByZWx5IG9uIHRoaXMgaW52YXJpYW50LiBGb3IgZXhhbXBsZSwgdGhlXG5mdW5jdGlvbiB0aGF0IHByb3ZlcyB0aGF0IHRoZSByZWxhdGlvbiBpcyB0cmFuc2l0aXZlXG5cbiAgdmFsIHRyYW5zIDpcbiAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgLT4gKCdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIsXG4gICAgICAnYTMsICdiMywgJ2MzLCAnZDMsICdlMywgJ2YzKSBmbXR0eV9yZWxcbiAgLT4gKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAnYTMsICdiMywgJ2MzLCAnZDMsICdlMywgJ2YzKSBmbXR0eV9yZWxcblxuZG9lcyBhc3N1bWUgdGhhdCB0aGUgdHdvIGlucHV0cyBoYXZlIGV4YWN0bHkgdGhlIHNhbWUgdGVybSBzdHJ1Y3R1cmVcbihhbmQgaXMgb25seSBldmVyeSB1c2VkIGZvciBhcmd1bWVudCB3aXRuZXNzZXMgb2YgdGhlXG5Gb3JtYXRfc3Vic3RfdHkgY29uc3RydWN0b3IpLlxuKilcblxuKCogVHlwZSBvZiBhIGJsb2NrIHVzZWQgYnkgdGhlIEZvcm1hdCBwcmV0dHktcHJpbnRlci4gKilcbnR5cGUgYmxvY2tfdHlwZSA9XG4gIHwgUHBfaGJveCAgICgqIEhvcml6b250YWwgYmxvY2sgbm8gbGluZSBicmVha2luZyAqKVxuICB8IFBwX3Zib3ggICAoKiBWZXJ0aWNhbCBibG9jayBlYWNoIGJyZWFrIGxlYWRzIHRvIGEgbmV3IGxpbmUgKilcbiAgfCBQcF9odmJveCAgKCogSG9yaXpvbnRhbC12ZXJ0aWNhbCBibG9jazogc2FtZSBhcyB2Ym94LCBleGNlcHQgaWYgdGhpcyBibG9ja1xuICAgICAgICAgICAgICAgICBpcyBzbWFsbCBlbm91Z2ggdG8gZml0IG9uIGEgc2luZ2xlIGxpbmUgKilcbiAgfCBQcF9ob3Zib3ggKCogSG9yaXpvbnRhbCBvciBWZXJ0aWNhbCBibG9jazogYnJlYWtzIGxlYWQgdG8gbmV3IGxpbmVcbiAgICAgICAgICAgICAgICAgb25seSB3aGVuIG5lY2Vzc2FyeSB0byBwcmludCB0aGUgY29udGVudCBvZiB0aGUgYmxvY2sgKilcbiAgfCBQcF9ib3ggICAgKCogSG9yaXpvbnRhbCBvciBJbmRlbnQgYmxvY2s6IGJyZWFrcyBsZWFkIHRvIG5ldyBsaW5lXG4gICAgICAgICAgICAgICAgIG9ubHkgd2hlbiBuZWNlc3NhcnkgdG8gcHJpbnQgdGhlIGNvbnRlbnQgb2YgdGhlIGJsb2NrLCBvclxuICAgICAgICAgICAgICAgICB3aGVuIGl0IGxlYWRzIHRvIGEgbmV3IGluZGVudGF0aW9uIG9mIHRoZSBjdXJyZW50IGxpbmUgKilcbiAgfCBQcF9maXRzICAgKCogSW50ZXJuYWwgdXNhZ2U6IHdoZW4gYSBibG9jayBmaXRzIG9uIGEgc2luZ2xlIGxpbmUgKilcblxuKCogRm9ybWF0dGluZyBlbGVtZW50IHVzZWQgYnkgdGhlIEZvcm1hdCBwcmV0dHktcHJpbnRlci4gKilcbnR5cGUgZm9ybWF0dGluZ19saXQgPVxuICB8IENsb3NlX2JveCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXSAgICopXG4gIHwgQ2xvc2VfdGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEB9ICAgKilcbiAgfCBCcmVhayBvZiBzdHJpbmcgKiBpbnQgKiBpbnQgICAgICAgICAgKCogQCwgfCBAICB8IEA7IHwgQDs8PiAqKVxuICB8IEZGbHVzaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAPyAgICopXG4gIHwgRm9yY2VfbmV3bGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBcXG4gICopXG4gIHwgRmx1c2hfbmV3bGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEAuICAgKilcbiAgfCBNYWdpY19zaXplIG9mIHN0cmluZyAqIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQDxuPiAqKVxuICB8IEVzY2FwZWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAQCAgICopXG4gIHwgRXNjYXBlZF9wZXJjZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEAlJSAgKilcbiAgfCBTY2FuX2luZGljIG9mIGNoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQFggICAqKVxuXG4oKiBGb3JtYXR0aW5nIGVsZW1lbnQgdXNlZCBieSB0aGUgRm9ybWF0IHByZXR0eS1wcmludGVyLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0dGluZ19nZW4gPVxuICB8IE9wZW5fdGFnIDogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT4gICAgICAoKiBAeyAgICopXG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdHRpbmdfZ2VuXG4gIHwgT3Blbl9ib3ggOiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPiAgICAgICgqIEBbICAgKilcbiAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0dGluZ19nZW5cblxuKCoqKilcblxuKCogTGlzdCBvZiBmb3JtYXQgdHlwZSBlbGVtZW50cy4gKilcbigqIEluIHBhcnRpY3VsYXIgdXNlZCB0byByZXByZXNlbnQgJSguLi4lKSBhbmQgJXsuLi4lfSBjb250ZW50cy4gKilcbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgPVxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZixcbiAgICAgICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X3JlbFxuYW5kICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgPVxuICB8IENoYXJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYyAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGNoYXIgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBjaGFyIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IFN0cmluZ190eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlcyAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKHN0cmluZyAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIHN0cmluZyAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBJbnRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWQgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChpbnQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBpbnQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSW50MzJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVsZCAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoaW50MzIgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBpbnQzMiAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBOYXRpdmVpbnRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJW5kICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChuYXRpdmVpbnQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBuYXRpdmVpbnQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSW50NjRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVMZCAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoaW50NjQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBpbnQ2NCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBGbG9hdF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWYgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChmbG9hdCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGZsb2F0IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEJvb2xfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlQiAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGJvb2wgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBib29sIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG4gIHwgRm9ybWF0X2FyZ190eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICV7Li4uJX0gKilcbiAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmbXR0eSAqXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpXG4gICAgICAgICAgIGZtdHR5X3JlbFxuICB8IEZvcm1hdF9zdWJzdF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgICAnZzEsICdiMSwgJ2MxLCAnajEsICdkMSwgJ2ExKSBmbXR0eV9yZWwgKlxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICAgJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZDIsICdhMikgZm10dHlfcmVsICpcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMSwgJ2IxLCAnYzEsICdqMSwgJ2UxLCAnZjEsXG4gICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZTIsICdmMilcbiAgICAgICAgICAgZm10dHlfcmVsXG5cbiAgKCogUHJpbnRmIGFuZCBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3JzLiAqKVxuICB8IEFscGhhX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYSAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCgnYjEgLT4gJ3ggLT4gJ2MxKSAtPiAneCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICgnYjIgLT4gJ3ggLT4gJ2MyKSAtPiAneCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBUaGV0YV90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXQgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2IxIC0+ICdjMSkgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAoJ2IyIC0+ICdjMikgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgQW55X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBVc2VkIGZvciBjdXN0b20gZm9ybWF0cyAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoJ3ggLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAneCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuICAoKiBTY2FuZiBzcGVjaWZpYyBjb25zdHJ1Y3Rvci4gKilcbiAgfCBSZWFkZXJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXIgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgneCAtPiAnYTEsICdiMSwgJ2MxLCAoJ2IxIC0+ICd4KSAtPiAnZDEsICdlMSwgJ2YxLFxuICAgICAgICd4IC0+ICdhMiwgJ2IyLCAnYzIsICgnYjIgLT4gJ3gpIC0+ICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IElnbm9yZWRfcmVhZGVyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3IgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgnYTEsICdiMSwgJ2MxLCAoJ2IxIC0+ICd4KSAtPiAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICgnYjIgLT4gJ3gpIC0+ICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG4gIHwgRW5kX29mX2ZtdHR5IDpcbiAgICAgICgnZjEsICdiMSwgJ2MxLCAnZDEsICdkMSwgJ2YxLFxuICAgICAgICdmMiwgJ2IyLCAnYzIsICdkMiwgJ2QyLCAnZjIpIGZtdHR5X3JlbFxuXG4oKioqKVxuXG4oKiBMaXN0IG9mIGZvcm1hdCBlbGVtZW50cy4gKilcbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10ID1cbiAgfCBDaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoY2hhciAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBDYW1sX2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlQyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoY2hhciAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTdHJpbmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlcyAqKVxuICAgICAgKCd4LCBzdHJpbmcgLT4gJ2EpIHBhZGRpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBDYW1sX3N0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlUyAqKVxuICAgICAgKCd4LCBzdHJpbmcgLT4gJ2EpIHBhZGRpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBJbnQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgaW50IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSW50MzIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWxbZGl4WHVvXSAqKVxuICAgICAgaW50X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBpbnQzMiAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IE5hdGl2ZWludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVuW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgbmF0aXZlaW50IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSW50NjQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJUxbZGl4WHVvXSAqKVxuICAgICAgaW50X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBpbnQ2NCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZsb2F0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbZmVFZ0dGaEhdICopXG4gICAgICBmbG9hdF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgZmxvYXQgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBCb29sIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW2JCXSAqKVxuICAgICAgKCd4LCBib29sIC0+ICdhKSBwYWRkaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgRmx1c2ggOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSEgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogYWJjICopXG4gICAgICBzdHJpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBDaGFyX2xpdGVyYWwgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiB4ICopXG4gICAgICBjaGFyICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgfCBGb3JtYXRfYXJnIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAley4uLiV9ICopXG4gICAgICBwYWRfb3B0aW9uICogKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZtdHR5ICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICAgIHBhZF9vcHRpb24gKlxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICAgJ2cyLCAnYiwgJ2MsICdqMiwgJ2QsICdhKSBmbXR0eV9yZWwgKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMiwgJ2IsICdjLCAnajIsICdlLCAnZikgZm10XG5cbiAgKCogUHJpbnRmIGFuZCBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3IuICopXG4gIHwgQWxwaGEgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWEgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCgnYiAtPiAneCAtPiAnYykgLT4gJ3ggLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgVGhldGEgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXQgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCgnYiAtPiAnYykgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgKCogRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9yOiAqKVxuICB8IEZvcm1hdHRpbmdfbGl0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBfICopXG4gICAgICBmb3JtYXR0aW5nX2xpdCAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZvcm1hdHRpbmdfZ2VuIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXyAqKVxuICAgICAgKCdhMSwgJ2IsICdjLCAnZDEsICdlMSwgJ2YxKSBmb3JtYXR0aW5nX2dlbiAqXG4gICAgICAoJ2YxLCAnYiwgJ2MsICdlMSwgJ2UyLCAnZjIpIGZtdCAtPiAoJ2ExLCAnYiwgJ2MsICdkMSwgJ2UyLCAnZjIpIGZtdFxuXG4gICgqIFNjYW5mIHNwZWNpZmljIGNvbnN0cnVjdG9yczogKilcbiAgfCBSZWFkZXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlciAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3ggLT4gJ2EsICdiLCAnYywgKCdiIC0+ICd4KSAtPiAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTY2FuX2NoYXJfc2V0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlWy4uLl0gKilcbiAgICAgIHBhZF9vcHRpb24gKiBjaGFyX3NldCAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKHN0cmluZyAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTY2FuX2dldF9jb3VudGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW25sTkxdICopXG4gICAgICBjb3VudGVyICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoaW50IC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IFNjYW5fbmV4dF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUwYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgKGNoYXIgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSWdub3JlZF9wYXJhbSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV8gKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ3ksICd4KSBpZ25vcmVkICogKCd4LCAnYiwgJ2MsICd5LCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgKCogQ3VzdG9tIHByaW50aW5nIGZvcm1hdCAoUFIjNjQ1MiwgR1BSIzE0MClcblxuICAgICBXZSBpbmNsdWRlIGEgdHlwZSBDdXN0b20gb2YgXCJjdXN0b20gY29udmVydGVyc1wiLCB3aGVyZSBhblxuICAgICBhcmJpdHJhcnkgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gY29udmVydCBvbmUgb3IgbW9yZVxuICAgICBhcmd1bWVudHMuIFRoZXJlIGlzIG5vIHN5bnRheCBmb3IgY3VzdG9tIGNvbnZlcnRlcnMsIGl0IGlzIG9ubHlcbiAgICAgaW50ZW5kZWQgZm9yIGN1c3RvbSBwcm9jZXNzb3JzIHRoYXQgd2lzaCB0byByZWx5IG9uIHRoZVxuICAgICBzdGRsaWItZGVmaW5lZCBmb3JtYXQgR0FEVHMuXG5cbiAgICAgRm9yIGluc3RhbmNlIGEgcHJlLXByb2Nlc3NvciBjb3VsZCBjaG9vc2UgdG8gaW50ZXJwcmV0IHN0cmluZ3NcbiAgICAgcHJlZml4ZWQgd2l0aCBbXCIhXCJdIGFzIGZvcm1hdCBzdHJpbmdzIHdoZXJlIFsle3sgLi4uIH19XSBpc1xuICAgICBhIHNwZWNpYWwgZm9ybSB0byBwYXNzIGEgdG9fc3RyaW5nIGZ1bmN0aW9uLCBzbyB0aGF0IG9uZSBjb3VsZFxuICAgICB3cml0ZTpcblxuICAgICB7W1xuICAgICAgIHR5cGUgdCA9IHsgeCA6IGludDsgeSA6IGludCB9XG5cbiAgICAgICBsZXQgc3RyaW5nX29mX3QgdCA9IFByaW50Zi5zcHJpbnRmIFwieyB4ID0gJWQ7IHkgPSAlZCB9XCIgdC54IHQueVxuXG4gICAgICAgUHJpbnRmLnByaW50ZiAhXCJ0ID0gJXt7c3RyaW5nX29mX3R9fVwiIHsgeCA9IDQyOyB5ID0gNDIgfVxuICAgICBdfVxuICAqKVxuICB8IEN1c3RvbSA6XG4gICAgICAoJ2EsICd4LCAneSkgY3VzdG9tX2FyaXR5ICogKHVuaXQgLT4gJ3gpICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgKCd5LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gICgqIGVuZCBvZiBhIGZvcm1hdCBzcGVjaWZpY2F0aW9uICopXG4gIHwgRW5kX29mX2Zvcm1hdCA6XG4gICAgICAgICgnZiwgJ2IsICdjLCAnZSwgJ2UsICdmKSBmbXRcblxuKCoqKilcblxuKCogVHlwZSBmb3IgaWdub3JlZCBwYXJhbWV0ZXJzIChzZWUgXCIlX1wiKS4gKilcbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgaWdub3JlZCA9XG4gIHwgSWdub3JlZF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9jICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfY2FtbF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfQyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3N0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3MgKilcbiAgICAgIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX1MgKilcbiAgICAgIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2ludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX2QgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfaW50MzIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfbGQgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfbmF0aXZlaW50IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfbmQgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfaW50NjQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfTGQgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfZmxvYXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfZiAqKVxuICAgICAgcGFkX29wdGlvbiAqIHByZWNfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9ib29sIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9CICopXG4gICAgICBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV97Li4uJX0gKilcbiAgICAgIHBhZF9vcHRpb24gKiAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm10dHkgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlXyguLi4lKSAqKVxuICAgICAgcGFkX29wdGlvbiAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgaWdub3JlZFxuICB8IElnbm9yZWRfcmVhZGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfciAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICgnYiAtPiAneCkgLT4gJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfWy4uLl0gKilcbiAgICAgIHBhZF9vcHRpb24gKiBjaGFyX3NldCAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfW25sTkxdICopXG4gICAgICBjb3VudGVyIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV8wYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcblxuYW5kICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID1cbiAgRm9ybWF0IG9mICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgKiBzdHJpbmdcblxubGV0IHJlYyBlcmFzZV9yZWwgOiB0eXBlIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIC5cbiAgKGEsIGIsIGMsIGQsIGUsIGYsXG4gICBnLCBoLCBpLCBqLCBrLCBsKSBmbXR0eV9yZWwgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5XG49IGZ1bmN0aW9uXG4gIHwgQ2hhcl90eSByZXN0IC0+XG4gICAgQ2hhcl90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgU3RyaW5nX3R5IHJlc3QgLT5cbiAgICBTdHJpbmdfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEludF90eSByZXN0IC0+XG4gICAgSW50X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJbnQzMl90eSByZXN0IC0+XG4gICAgSW50MzJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEludDY0X3R5IHJlc3QgLT5cbiAgICBJbnQ2NF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT5cbiAgICBOYXRpdmVpbnRfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEZsb2F0X3R5IHJlc3QgLT5cbiAgICBGbG9hdF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgQm9vbF90eSByZXN0IC0+XG4gICAgQm9vbF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgRm9ybWF0X2FyZ190eSAodHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIGVyYXNlX3JlbCByZXN0KVxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCBfdHkyLCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTEsIGVyYXNlX3JlbCByZXN0KVxuICB8IEFscGhhX3R5IHJlc3QgLT5cbiAgICBBbHBoYV90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgVGhldGFfdHkgcmVzdCAtPlxuICAgIFRoZXRhX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBBbnlfdHkgcmVzdCAtPlxuICAgIEFueV90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT5cbiAgICBSZWFkZXJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT5cbiAgICBJZ25vcmVkX3JlYWRlcl90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgRW5kX29mX2ZtdHR5IC0+IEVuZF9vZl9mbXR0eVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCB0eXBlIGNvbmNhdGVuYXRpb24gKilcblxuKCogQ29uY2F0ZW5hdGUgdHdvIGZvcm1hdCB0eXBlcy4gKilcbigqIFVzZWQgYnk6XG4gICAqIHJlYWRlcl9uYl91bmlmaWVyX29mX2ZtdHR5IHRvIGNvdW50IHJlYWRlcnMgaW4gYW4gZm10dHksXG4gICAqIFNjYW5mLnRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgdG8gZXh0cmFjdCByZWFkZXJzIGluc2lkZSAlKC4uLiUpLFxuICAgKiBDYW1saW50ZXJuYWxGb3JtYXQuZm10dHlfb2ZfaWdub3JlZF9mb3JtYXQgdG8gZXh0cmFjdCBmb3JtYXQgdHlwZS4gKilcblxuKCpcbmxldCByZWMgY29uY2F0X2ZtdHR5IDogdHlwZSBhIGIgYyBkIGUgZiBnIGggLlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAgIChmLCBiLCBjLCBlLCBnLCBoKSBmbXR0eSAtPlxuICAgIChhLCBiLCBjLCBkLCBnLCBoKSBmbXR0eSA9XG4qKVxubGV0IHJlYyBjb25jYXRfZm10dHkgOlxuICB0eXBlIGExIGIxIGMxIGQxIGUxIGYxXG4gICAgICAgYTIgYjIgYzIgZDIgZTIgZjJcbiAgICAgICBnMSBqMSBnMiBqMlxuICAuXG4gICAgKGcxLCBiMSwgYzEsIGoxLCBkMSwgYTEsXG4gICAgIGcyLCBiMiwgYzIsIGoyLCBkMiwgYTIpIGZtdHR5X3JlbCAtPlxuICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgICBhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWwgLT5cbiAgICAoZzEsIGIxLCBjMSwgajEsIGUxLCBmMSxcbiAgICAgZzIsIGIyLCBjMiwgajIsIGUyLCBmMikgZm10dHlfcmVsID1cbmZ1biBmbXR0eTEgZm10dHkyIC0+IG1hdGNoIGZtdHR5MSB3aXRoXG4gIHwgQ2hhcl90eSByZXN0IC0+XG4gICAgQ2hhcl90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IFN0cmluZ190eSByZXN0IC0+XG4gICAgU3RyaW5nX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSW50X3R5IHJlc3QgLT5cbiAgICBJbnRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBJbnQzMl90eSByZXN0IC0+XG4gICAgSW50MzJfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPlxuICAgIE5hdGl2ZWludF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEludDY0X3R5IHJlc3QgLT5cbiAgICBJbnQ2NF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEZsb2F0X3R5IHJlc3QgLT5cbiAgICBGbG9hdF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEJvb2xfdHkgcmVzdCAtPlxuICAgIEJvb2xfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBBbHBoYV90eSByZXN0IC0+XG4gICAgQWxwaGFfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBUaGV0YV90eSByZXN0IC0+XG4gICAgVGhldGFfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBBbnlfdHkgcmVzdCAtPlxuICAgIEFueV90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IFJlYWRlcl90eSByZXN0IC0+XG4gICAgUmVhZGVyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPlxuICAgIElnbm9yZWRfcmVhZGVyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgRm9ybWF0X2FyZ190eSAodHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBFbmRfb2ZfZm10dHkgLT4gZm10dHkyXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgY29uY2F0ZW5hdGlvbiAqKVxuXG4oKiBDb25jYXRlbmF0ZSB0d28gZm9ybWF0cy4gKilcbmxldCByZWMgY29uY2F0X2ZtdCA6IHR5cGUgYSBiIGMgZCBlIGYgZyBoIC5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgKGYsIGIsIGMsIGUsIGcsIGgpIGZtdCAtPlxuICAgIChhLCBiLCBjLCBkLCBnLCBoKSBmbXQgPVxuZnVuIGZtdDEgZm10MiAtPiBtYXRjaCBmbXQxIHdpdGhcbiAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBTdHJpbmcgKHBhZCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBDYW1sX3N0cmluZyAocGFkLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBJbnQgKGljb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEludDMyIChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgQ2hhciAocmVzdCkgLT5cbiAgICBDaGFyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgIENhbWxfY2hhciAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQm9vbCAocGFkLCByZXN0KSAtPlxuICAgIEJvb2wgKHBhZCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQWxwaGEgcmVzdCAtPlxuICAgIEFscGhhIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBUaGV0YSByZXN0IC0+XG4gICAgVGhldGEgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEN1c3RvbSAoYXJpdHksIGYsIHJlc3QpIC0+XG4gICAgQ3VzdG9tIChhcml0eSwgZiwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgUmVhZGVyIHJlc3QgLT5cbiAgICBSZWFkZXIgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZsdXNoIHJlc3QgLT5cbiAgICBGbHVzaCAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgIFN0cmluZ19saXRlcmFsIChzdHIsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCByZXN0KSAtPlxuICAgIENoYXJfbGl0ZXJhbCAgIChjaHIsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgRm9ybWF0X2FyZyAocGFkLCBmbXR0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnICAgKHBhZCwgZm10dHksIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZvcm1hdF9zdWJzdCAocGFkLCBmbXR0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3QgKHBhZCwgZm10dHksIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgcmVzdCkgLT5cbiAgICBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCByZXN0KSAtPlxuICAgIFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IFNjYW5fbmV4dF9jaGFyIChyZXN0KSAtPlxuICAgIFNjYW5fbmV4dF9jaGFyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgSWdub3JlZF9wYXJhbSAoaWduLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSAtPlxuICAgIEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgcmVzdCkgLT5cbiAgICBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBFbmRfb2ZfZm9ybWF0IC0+XG4gICAgZm10MlxuXG5cbnR5cGUgbmV1dHJhbF9jb25jYXQgPVxuICB7IGY6XG4gICAgICAnYSAnYiAnYyAnZCAnZSAnZi4gW2BTdHJpbmcgb2Ygc3RyaW5nIHwgYENoYXIgb2YgY2hhciBdIC0+XG4gICAgICAoJ2EsJ2IsJ2MsJ2QsJ2UsJ2YpIGZtdCAtPiAoJ2EsJ2IsJ2MsJ2QsJ2UsJ2YpIGZtdFxuICB9XG5cbmxldCByZWMgc3RyaW5nX2NvbmNhdF9tYXA6IHR5cGUgYSBiIGMgZCBlIGYuXG4gICBuZXV0cmFsX2NvbmNhdCAtPiAoYSxiLGMsZCxlLGYpIGZtdCAtPiAoYSxiLGMsZCxlLGYpIGZtdCA9XG4gIGZ1biBmIC0+IGZ1bmN0aW9uXG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+IFN0cmluZyAocGFkLCBzdHJpbmdfY29uY2F0X21hcCBmIHJlc3QpXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT4gQ2FtbF9zdHJpbmcgKHBhZCwgc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuXG4gIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEludCAoaWNvbnYsIHBhZCwgcHJlYywgIHN0cmluZ19jb25jYXRfbWFwIGYgcmVzdClcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgIHN0cmluZ19jb25jYXRfbWFwIGYgcmVzdClcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCAgc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEludDY0IChpY29udiwgcGFkLCBwcmVjLCAgc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCAgc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuXG4gIHwgQ2hhciAocmVzdCkgLT4gQ2hhciAoc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgQ2FtbF9jaGFyICggc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuICB8IEJvb2wgKHBhZCwgcmVzdCkgLT4gQm9vbCAocGFkLCAgc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuICB8IEFscGhhIHJlc3QgLT4gQWxwaGEgKHN0cmluZ19jb25jYXRfbWFwIGYgcmVzdClcbiAgfCBUaGV0YSByZXN0IC0+IFRoZXRhIChzdHJpbmdfY29uY2F0X21hcCBmIHJlc3QpXG4gIHwgQ3VzdG9tIChhcml0eSwgZmMsIHJlc3QpIC0+XG4gICAgQ3VzdG9tIChhcml0eSwgZmMsICBzdHJpbmdfY29uY2F0X21hcCBmIHJlc3QpXG4gIHwgUmVhZGVyIHJlc3QgLT4gUmVhZGVyIChzdHJpbmdfY29uY2F0X21hcCBmIHJlc3QpXG4gIHwgRmx1c2ggcmVzdCAtPiBGbHVzaCAoc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT4gZi5mIChgU3RyaW5nIHN0cikgKHN0cmluZ19jb25jYXRfbWFwIGYgcmVzdClcbiAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICAgIGYuZiAoYENoYXIgY2hyKSAoc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuICB8IEZvcm1hdF9hcmcgKHBhZCwgZm10dHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZyAgIChwYWQsIGZtdHR5LCBzdHJpbmdfY29uY2F0X21hcCBmIHJlc3QpXG4gIHwgRm9ybWF0X3N1YnN0IChwYWQsIGZtdHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdCAocGFkLCBmbXR0eSwgc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgcmVzdCkgLT5cbiAgICBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBzdHJpbmdfY29uY2F0X21hcCBmIHJlc3QpXG4gIHwgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgcmVzdCkgLT5cbiAgICBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLHN0cmluZ19jb25jYXRfbWFwIGYgcmVzdClcbiAgfCBTY2FuX25leHRfY2hhciAocmVzdCkgLT5cbiAgICBTY2FuX25leHRfY2hhciAoc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICBJZ25vcmVkX3BhcmFtIChpZ24sIHN0cmluZ19jb25jYXRfbWFwIGYgcmVzdClcblxuICB8IEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSAtPlxuICAgIEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCBzdHJpbmdfY29uY2F0X21hcCBmIHJlc3QpXG4gIHwgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIHJlc3QpIC0+XG4gICAgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIHN0cmluZ19jb25jYXRfbWFwIGYgcmVzdClcblxuICB8IEVuZF9vZl9mb3JtYXQgLT4gRW5kX29mX2Zvcm1hdFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwyIiwiZiIsImEwIiwiYTEiLCJlcmFzZV9yZWwiLCJwYXJhbSIsInJlc3QiLCJ0eSIsInR5MSIsImNvbmNhdF9mbXR0eSIsImZtdHR5MSIsImZtdHR5MiIsInR5MiIsImNvbmNhdF9mbXQiLCJmbXQxIiwiZm10MiIsInBhZCIsInByZWMiLCJpY29udiIsImZjb252Iiwic3RyIiwiY2hyIiwiZm10dHkiLCJmbXRpbmdfbGl0IiwiZm10aW5nX2dlbiIsImNoYXJfc2V0Iiwid2lkdGhfb3B0IiwiY291bnRlciIsImlnbiIsImFyaXR5Iiwic3RyaW5nX2NvbmNhdF9tYXAiLCJmYyJdLCJtYXBwaW5ncyI6Ik9BQUFBLFVBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQyxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsVUFBQUM7QUFBQUEsSUMrZ0JRLDhCQWtDWTtBQUFBLElBbENaO0FBQUE7QUFBQSxXQUFBQyxPQUFBLFVBS0ksMkJBQWdCO0FBQUE7QUFBQSxXQUFBQSxTQUxwQixVQU9NLDZCQUFnQjtBQUFBO0FBQUEsV0FBQUEsU0FQdEIsVUFTRyw2QkFBZ0I7QUFBQTtBQUFBLFdBQUFBLFNBVG5CLFVBV0ssNkJBQWdCO0FBQUE7QUFB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MERBQXdCO0FBQUE7QUFBQSxXQUFBVixVQWxDOUMsVUFxQmdCLDBDQUEwQjtBQUFBO0FBQUEsV0FBQUEsVUFyQjFDLFVBc0JnQiwwQ0FBMEI7QUFBQTtBQUFBLFdBQUFBLFVBdEIxQyxVQUFBaUIsYUFBQTtBQUFBLE9BOEN3QixzREFBd0I7QUFBQTtBQUFBLFdBQUFqQixVQTlDaEQsVUFBQWtCLGFBQUE7QUFBQSxPQWdEd0Isc0RBQXdCO0FBQUE7QUFBQSxXQUFBbEIsVUFoRGhELFVBeUJrQiwwQ0FBMEI7QUFBQTtBQUFBLFdBQUFBLFVBekI1QyxVQUFBbUIsV0FBQSxVQUFBQyxZQUFBO0FBQUEsT0FxQ2dDLCtEQUF3QjtBQUFBO0FBQUEsV0FBQXBCLFVBckN4RCxVQUFBcUIsVUFBQTtBQUFBLE9BdUNzQixtREFBd0I7QUFBQTtBQUFBLFdBQUFyQixVQXZDOUMsVUF5Q1csMENBQTBCO0FBQUE7QUFBQSxXQUFBQSxVQXpDckMsVUFBQXNCLE1BQUE7QUFBQSxPQTJDZ0IsK0NBQXdCO0FBQUE7QUFBQSxXQUFBdEIsVUEzQ3hDLFVBQUF5QixLQUFBLFVBQUFGLFFBQUE7QUFBQSxPQXdCZ0IscURBQXdCO0FBQUE7QUFBQSxHQTBCZDtBQUFBLEdENXVCbEMiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo5NzIxLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvc3RkbGliLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBFeGNlcHRpb25zICopXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+ICdhIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlXCJcblxubGV0ICgpID1cbiAgKCogZm9yIHJ1bnRpbWUvZmFpbF9uYXQuYyAqKVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBcIlBlcnZhc2l2ZXMuYXJyYXlfYm91bmRfZXJyb3JcIlxuICAgIChJbnZhbGlkX2FyZ3VtZW50IFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKVxuXG5leHRlcm5hbCByYWlzZSA6IGV4biAtPiAnYSA9IFwiJXJhaXNlXCJcbmV4dGVybmFsIHJhaXNlX25vdHJhY2UgOiBleG4gLT4gJ2EgPSBcIiVyYWlzZV9ub3RyYWNlXCJcblxubGV0IGZhaWx3aXRoIHMgPSByYWlzZShGYWlsdXJlIHMpXG5sZXQgaW52YWxpZF9hcmcgcyA9IHJhaXNlKEludmFsaWRfYXJndW1lbnQgcylcblxuZXhjZXB0aW9uIEV4aXRcbmV4Y2VwdGlvbiBNYXRjaF9mYWlsdXJlID0gTWF0Y2hfZmFpbHVyZVxuZXhjZXB0aW9uIEFzc2VydF9mYWlsdXJlID0gQXNzZXJ0X2ZhaWx1cmVcbmV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50ID0gSW52YWxpZF9hcmd1bWVudFxuZXhjZXB0aW9uIEZhaWx1cmUgPSBGYWlsdXJlXG5leGNlcHRpb24gTm90X2ZvdW5kID0gTm90X2ZvdW5kXG5leGNlcHRpb24gT3V0X29mX21lbW9yeSA9IE91dF9vZl9tZW1vcnlcbmV4Y2VwdGlvbiBTdGFja19vdmVyZmxvdyA9IFN0YWNrX292ZXJmbG93XG5leGNlcHRpb24gU3lzX2Vycm9yID0gU3lzX2Vycm9yXG5leGNlcHRpb24gRW5kX29mX2ZpbGUgPSBFbmRfb2ZfZmlsZVxuZXhjZXB0aW9uIERpdmlzaW9uX2J5X3plcm8gPSBEaXZpc2lvbl9ieV96ZXJvXG5leGNlcHRpb24gU3lzX2Jsb2NrZWRfaW8gPSBTeXNfYmxvY2tlZF9pb1xuZXhjZXB0aW9uIFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlID0gVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGVcblxuKCogQ29tcG9zaXRpb24gb3BlcmF0b3JzICopXG5cbmV4dGVybmFsICggfD4gKSA6ICdhIC0+ICgnYSAtPiAnYikgLT4gJ2IgPSBcIiVyZXZhcHBseVwiXG5leHRlcm5hbCAoIEBAICkgOiAoJ2EgLT4gJ2IpIC0+ICdhIC0+ICdiID0gXCIlYXBwbHlcIlxuXG4oKiBEZWJ1Z2dpbmcgKilcblxuZXh0ZXJuYWwgX19MT0NfXyA6IHN0cmluZyA9IFwiJWxvY19MT0NcIlxuZXh0ZXJuYWwgX19GSUxFX18gOiBzdHJpbmcgPSBcIiVsb2NfRklMRVwiXG5leHRlcm5hbCBfX0xJTkVfXyA6IGludCA9IFwiJWxvY19MSU5FXCJcbmV4dGVybmFsIF9fTU9EVUxFX18gOiBzdHJpbmcgPSBcIiVsb2NfTU9EVUxFXCJcbmV4dGVybmFsIF9fUE9TX18gOiBzdHJpbmcgKiBpbnQgKiBpbnQgKiBpbnQgPSBcIiVsb2NfUE9TXCJcbmV4dGVybmFsIF9fRlVOQ1RJT05fXyA6IHN0cmluZyA9IFwiJWxvY19GVU5DVElPTlwiXG5cbmV4dGVybmFsIF9fTE9DX09GX18gOiAnYSAtPiBzdHJpbmcgKiAnYSA9IFwiJWxvY19MT0NcIlxuZXh0ZXJuYWwgX19MSU5FX09GX18gOiAnYSAtPiBpbnQgKiAnYSA9IFwiJWxvY19MSU5FXCJcbmV4dGVybmFsIF9fUE9TX09GX18gOiAnYSAtPiAoc3RyaW5nICogaW50ICogaW50ICogaW50KSAqICdhID0gXCIlbG9jX1BPU1wiXG5cbigqIENvbXBhcmlzb25zICopXG5cbmV4dGVybmFsICggPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbmV4dGVybmFsICggPD4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG5leHRlcm5hbCAoIDwgKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5leHRlcm5hbCAoID4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5leHRlcm5hbCAoIDw9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcbmV4dGVybmFsICggPj0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuZXh0ZXJuYWwgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludCA9IFwiJWNvbXBhcmVcIlxuXG5sZXQgbWluIHggeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbmV4dGVybmFsICggPT0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcVwiXG5leHRlcm5hbCAoICE9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXFcIlxuXG4oKiBCb29sZWFuIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgbm90IDogYm9vbCAtPiBib29sID0gXCIlYm9vbG5vdFwiXG5leHRlcm5hbCAoICYmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuZXh0ZXJuYWwgKCB8fCApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxuXG4oKiBJbnRlZ2VyIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgKCB+LSApIDogaW50IC0+IGludCA9IFwiJW5lZ2ludFwiXG5leHRlcm5hbCAoIH4rICkgOiBpbnQgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgc3VjYyA6IGludCAtPiBpbnQgPSBcIiVzdWNjaW50XCJcbmV4dGVybmFsIHByZWQgOiBpbnQgLT4gaW50ID0gXCIlcHJlZGludFwiXG5leHRlcm5hbCAoICsgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYWRkaW50XCJcbmV4dGVybmFsICggLSApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVzdWJpbnRcIlxuZXh0ZXJuYWwgKCAqICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW11bGludFwiXG5leHRlcm5hbCAoIC8gKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlZGl2aW50XCJcbmV4dGVybmFsICggbW9kICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW1vZGludFwiXG5cbmxldCBhYnMgeCA9IGlmIHggPj0gMCB0aGVuIHggZWxzZSAteFxuXG5leHRlcm5hbCAoIGxhbmQgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYW5kaW50XCJcbmV4dGVybmFsICggbG9yICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW9yaW50XCJcbmV4dGVybmFsICggbHhvciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiV4b3JpbnRcIlxuXG5sZXQgbG5vdCB4ID0geCBseG9yICgtMSlcblxuZXh0ZXJuYWwgKCBsc2wgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNsaW50XCJcbmV4dGVybmFsICggbHNyICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzcmludFwiXG5leHRlcm5hbCAoIGFzciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhc3JpbnRcIlxuXG5sZXQgbWF4X2ludCA9ICgtMSkgbHNyIDFcbmxldCBtaW5faW50ID0gbWF4X2ludCArIDFcblxuKCogRmxvYXRpbmctcG9pbnQgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCAoIH4tLiApIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVuZWdmbG9hdFwiXG5leHRlcm5hbCAoIH4rLiApIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCAoICsuICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFkZGZsb2F0XCJcbmV4dGVybmFsICggLS4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlc3ViZmxvYXRcIlxuZXh0ZXJuYWwgKCAqLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVtdWxmbG9hdFwiXG5leHRlcm5hbCAoIC8uICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWRpdmZsb2F0XCJcbmV4dGVybmFsICggKiogKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Bvd2VyX2Zsb2F0XCIgXCJwb3dcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwX2Zsb2F0XCIgXCJleHBcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwbTEgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBtMV9mbG9hdFwiIFwiY2FtbF9leHBtMVwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc19mbG9hdFwiIFwiYWNvc1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbl9mbG9hdFwiIFwiYXNpblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbl9mbG9hdFwiIFwiYXRhblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuMiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW4yX2Zsb2F0XCIgXCJhdGFuMlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBoeXBvdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICAgICA9IFwiY2FtbF9oeXBvdF9mbG9hdFwiIFwiY2FtbF9oeXBvdFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NfZmxvYXRcIiBcImNvc1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zaF9mbG9hdFwiIFwiY29zaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NoX2Zsb2F0XCIgXCJjYW1sX2Fjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZ19mbG9hdFwiIFwibG9nXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzEwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMTBfZmxvYXRcIiBcImxvZzEwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzFwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMXBfZmxvYXRcIiBcImNhbWxfbG9nMXBcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luX2Zsb2F0XCIgXCJzaW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NpbmhfZmxvYXRcIiBcInNpbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luaF9mbG9hdFwiIFwiY2FtbF9hc2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzcXJ0IDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc3FydF9mbG9hdFwiIFwic3FydFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5fZmxvYXRcIiBcInRhblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuaF9mbG9hdFwiIFwidGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5oX2Zsb2F0XCIgXCJjYW1sX2F0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNlaWwgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jZWlsX2Zsb2F0XCIgXCJjZWlsXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb29yIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZmxvb3JfZmxvYXRcIiBcImZsb29yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFic19mbG9hdCA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWJzZmxvYXRcIlxuZXh0ZXJuYWwgY29weXNpZ24gOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICAgICAgICAgICAgICAgICAgPSBcImNhbWxfY29weXNpZ25fZmxvYXRcIiBcImNhbWxfY29weXNpZ25cIlxuICAgICAgICAgICAgICAgICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG1vZF9mbG9hdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Ztb2RfZmxvYXRcIiBcImZtb2RcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZnJleHAgOiBmbG9hdCAtPiBmbG9hdCAqIGludCA9IFwiY2FtbF9mcmV4cF9mbG9hdFwiXG5leHRlcm5hbCBsZGV4cCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiAoaW50IFtAdW50YWdnZWRdKSAtPiAoZmxvYXQgW0B1bmJveGVkXSkgPVxuICBcImNhbWxfbGRleHBfZmxvYXRcIiBcImNhbWxfbGRleHBfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtb2RmIDogZmxvYXQgLT4gZmxvYXQgKiBmbG9hdCA9IFwiY2FtbF9tb2RmX2Zsb2F0XCJcbmV4dGVybmFsIGZsb2F0IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCBmbG9hdF9vZl9pbnQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIHRydW5jYXRlIDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5leHRlcm5hbCBpbnRfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5sZXQgaW5maW5pdHkgPVxuICBmbG9hdF9vZl9iaXRzIDB4N0ZfRjBfMDBfMDBfMDBfMDBfMDBfMDBMXG5sZXQgbmVnX2luZmluaXR5ID1cbiAgZmxvYXRfb2ZfYml0cyAweEZGX0YwXzAwXzAwXzAwXzAwXzAwXzAwTFxubGV0IG5hbiA9XG4gIGZsb2F0X29mX2JpdHMgMHg3Rl9GOF8wMF8wMF8wMF8wMF8wMF8wMUxcbmxldCBtYXhfZmxvYXQgPVxuICBmbG9hdF9vZl9iaXRzIDB4N0ZfRUZfRkZfRkZfRkZfRkZfRkZfRkZMXG5sZXQgbWluX2Zsb2F0ID1cbiAgZmxvYXRfb2ZfYml0cyAweDAwXzEwXzAwXzAwXzAwXzAwXzAwXzAwTFxubGV0IGVwc2lsb25fZmxvYXQgPVxuICBmbG9hdF9vZl9iaXRzIDB4M0NfQjBfMDBfMDBfMDBfMDBfMDBfMDBMXG5cbnR5cGUgZnBjbGFzcyA9XG4gICAgRlBfbm9ybWFsXG4gIHwgRlBfc3Vibm9ybWFsXG4gIHwgRlBfemVyb1xuICB8IEZQX2luZmluaXRlXG4gIHwgRlBfbmFuXG5leHRlcm5hbCBjbGFzc2lmeV9mbG9hdCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiBmcGNsYXNzID1cbiAgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0XCIgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuXG4oKiBTdHJpbmcgYW5kIGJ5dGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyAtLSBtb3JlIGluIG1vZHVsZXMgU3RyaW5nIGFuZCBCeXRlcyAqKVxuXG5leHRlcm5hbCBzdHJpbmdfbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuZXh0ZXJuYWwgYnl0ZXNfbGVuZ3RoIDogYnl0ZXMgLT4gaW50ID0gXCIlYnl0ZXNfbGVuZ3RoXCJcbmV4dGVybmFsIGJ5dGVzX2NyZWF0ZSA6IGludCAtPiBieXRlcyA9IFwiY2FtbF9jcmVhdGVfYnl0ZXNcIlxuZXh0ZXJuYWwgc3RyaW5nX2JsaXQgOiBzdHJpbmcgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYnl0ZXNfYmxpdCA6IGJ5dGVzIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfYnl0ZXNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyA6IGJ5dGVzIC0+IHN0cmluZyA9IFwiJWJ5dGVzX3RvX3N0cmluZ1wiXG5cbmxldCAoIF4gKSBzMSBzMiA9XG4gIGxldCBsMSA9IHN0cmluZ19sZW5ndGggczEgYW5kIGwyID0gc3RyaW5nX2xlbmd0aCBzMiBpblxuICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSAobDEgKyBsMikgaW5cbiAgc3RyaW5nX2JsaXQgczEgMCBzIDAgbDE7XG4gIHN0cmluZ19ibGl0IHMyIDAgcyBsMSBsMjtcbiAgYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyBzXG5cbigqIENoYXJhY3RlciBvcGVyYXRpb25zIC0tIG1vcmUgaW4gbW9kdWxlIENoYXIgKilcblxuZXh0ZXJuYWwgaW50X29mX2NoYXIgOiBjaGFyIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHVuc2FmZV9jaGFyX29mX2ludCA6IGludCAtPiBjaGFyID0gXCIlaWRlbnRpdHlcIlxubGV0IGNoYXJfb2ZfaW50IG4gPVxuICBpZiBuIDwgMCB8fCBuID4gMjU1IHRoZW4gaW52YWxpZF9hcmcgXCJjaGFyX29mX2ludFwiIGVsc2UgdW5zYWZlX2NoYXJfb2ZfaW50IG5cblxuKCogVW5pdCBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGlnbm9yZSA6ICdhIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG4oKiBQYWlyIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgZnN0IDogJ2EgKiAnYiAtPiAnYSA9IFwiJWZpZWxkMFwiXG5leHRlcm5hbCBzbmQgOiAnYSAqICdiIC0+ICdiID0gXCIlZmllbGQxXCJcblxuKCogUmVmZXJlbmNlcyAqKVxuXG50eXBlICdhIHJlZiA9IHsgbXV0YWJsZSBjb250ZW50cyA6ICdhIH1cbmV4dGVybmFsIHJlZiA6ICdhIC0+ICdhIHJlZiA9IFwiJW1ha2VtdXRhYmxlXCJcbmV4dGVybmFsICggISApIDogJ2EgcmVmIC0+ICdhID0gXCIlZmllbGQwXCJcbmV4dGVybmFsICggOj0gKSA6ICdhIHJlZiAtPiAnYSAtPiB1bml0ID0gXCIlc2V0ZmllbGQwXCJcbmV4dGVybmFsIGluY3IgOiBpbnQgcmVmIC0+IHVuaXQgPSBcIiVpbmNyXCJcbmV4dGVybmFsIGRlY3IgOiBpbnQgcmVmIC0+IHVuaXQgPSBcIiVkZWNyXCJcblxuKCogUmVzdWx0IHR5cGUgKilcblxudHlwZSAoJ2EsJ2IpIHJlc3VsdCA9IE9rIG9mICdhIHwgRXJyb3Igb2YgJ2JcblxuKCogU3RyaW5nIGNvbnZlcnNpb24gZnVuY3Rpb25zICopXG5cbmV4dGVybmFsIGZvcm1hdF9pbnQgOiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfaW50XCJcbmV4dGVybmFsIGZvcm1hdF9mbG9hdCA6IHN0cmluZyAtPiBmbG9hdCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2Zsb2F0XCJcblxubGV0IHN0cmluZ19vZl9ib29sIGIgPVxuICBpZiBiIHRoZW4gXCJ0cnVlXCIgZWxzZSBcImZhbHNlXCJcbmxldCBib29sX29mX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgXCJ0cnVlXCIgLT4gdHJ1ZVxuICB8IFwiZmFsc2VcIiAtPiBmYWxzZVxuICB8IF8gLT4gaW52YWxpZF9hcmcgXCJib29sX29mX3N0cmluZ1wiXG5cbmxldCBib29sX29mX3N0cmluZ19vcHQgPSBmdW5jdGlvblxuICB8IFwidHJ1ZVwiIC0+IFNvbWUgdHJ1ZVxuICB8IFwiZmFsc2VcIiAtPiBTb21lIGZhbHNlXG4gIHwgXyAtPiBOb25lXG5cbmxldCBzdHJpbmdfb2ZfaW50IG4gPVxuICBmb3JtYXRfaW50IFwiJWRcIiBuXG5cbmV4dGVybmFsIGludF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50ID0gXCJjYW1sX2ludF9vZl9zdHJpbmdcIlxuXG5sZXQgaW50X29mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRyYXNoZXMgY3VycmVudCBiYWNrdHJhY2UgKilcbiAgdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5leHRlcm5hbCBzdHJpbmdfZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcblxubGV0IHZhbGlkX2Zsb2F0X2xleGVtIHMgPVxuICBsZXQgbCA9IHN0cmluZ19sZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA+PSBsIHRoZW4gcyBeIFwiLlwiIGVsc2VcbiAgICBtYXRjaCBzdHJpbmdfZ2V0IHMgaSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+IGxvb3AgKGkgKyAxKVxuICAgIHwgXyAtPiBzXG4gIGluXG4gIGxvb3AgMFxuXG5sZXQgc3RyaW5nX29mX2Zsb2F0IGYgPSB2YWxpZF9mbG9hdF9sZXhlbSAoZm9ybWF0X2Zsb2F0IFwiJS4xMmdcIiBmKVxuXG5leHRlcm5hbCBmbG9hdF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gZmxvYXQgPSBcImNhbWxfZmxvYXRfb2Zfc3RyaW5nXCJcblxubGV0IGZsb2F0X29mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRyYXNoZXMgY3VycmVudCBiYWNrdHJhY2UgKilcbiAgdHJ5IFNvbWUgKGZsb2F0X29mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbigqIExpc3Qgb3BlcmF0aW9ucyAtLSBtb3JlIGluIG1vZHVsZSBMaXN0ICopXG5cbmxldFtAdGFpbF9tb2RfY29uc10gcmVjICggQCApIGwxIGwyID1cbiAgbWF0Y2ggbDEgd2l0aFxuICB8IFtdIC0+IGwyXG4gIHwgaDEgOjogW10gLT4gaDEgOjogbDJcbiAgfCBoMSA6OiBoMiA6OiBbXSAtPiBoMSA6OiBoMiA6OiBsMlxuICB8IGgxIDo6IGgyIDo6IGgzIDo6IHRsIC0+IGgxIDo6IGgyIDo6IGgzIDo6ICh0bCBAIGwyKVxuXG4oKiBJL08gb3BlcmF0aW9ucyAqKVxuXG50eXBlIGluX2NoYW5uZWxcbnR5cGUgb3V0X2NoYW5uZWxcblxuZXh0ZXJuYWwgb3Blbl9kZXNjcmlwdG9yX291dCA6IGludCAtPiBvdXRfY2hhbm5lbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0XCJcbmV4dGVybmFsIG9wZW5fZGVzY3JpcHRvcl9pbiA6IGludCAtPiBpbl9jaGFubmVsID0gXCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pblwiXG5cbmxldCBzdGRpbiA9IG9wZW5fZGVzY3JpcHRvcl9pbiAwXG5sZXQgc3Rkb3V0ID0gb3Blbl9kZXNjcmlwdG9yX291dCAxXG5sZXQgc3RkZXJyID0gb3Blbl9kZXNjcmlwdG9yX291dCAyXG5cbigqIEdlbmVyYWwgb3V0cHV0IGZ1bmN0aW9ucyAqKVxuXG50eXBlIG9wZW5fZmxhZyA9XG4gICAgT3Blbl9yZG9ubHkgfCBPcGVuX3dyb25seSB8IE9wZW5fYXBwZW5kXG4gIHwgT3Blbl9jcmVhdCB8IE9wZW5fdHJ1bmMgfCBPcGVuX2V4Y2xcbiAgfCBPcGVuX2JpbmFyeSB8IE9wZW5fdGV4dCB8IE9wZW5fbm9uYmxvY2tcblxuZXh0ZXJuYWwgb3Blbl9kZXNjIDogc3RyaW5nIC0+IG9wZW5fZmxhZyBsaXN0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfc3lzX29wZW5cIlxuXG5leHRlcm5hbCBzZXRfb3V0X2NoYW5uZWxfbmFtZTogb3V0X2NoYW5uZWwgLT4gc3RyaW5nIC0+IHVuaXQgPVxuICBcImNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZVwiXG5cbmxldCBvcGVuX291dF9nZW4gbW9kZSBwZXJtIG5hbWUgPVxuICBsZXQgYyA9IG9wZW5fZGVzY3JpcHRvcl9vdXQob3Blbl9kZXNjIG5hbWUgbW9kZSBwZXJtKSBpblxuICBzZXRfb3V0X2NoYW5uZWxfbmFtZSBjIG5hbWU7XG4gIGNcblxubGV0IG9wZW5fb3V0IG5hbWUgPVxuICBvcGVuX291dF9nZW4gW09wZW5fd3Jvbmx5OyBPcGVuX2NyZWF0OyBPcGVuX3RydW5jOyBPcGVuX3RleHRdIDBvNjY2IG5hbWVcblxubGV0IG9wZW5fb3V0X2JpbiBuYW1lID1cbiAgb3Blbl9vdXRfZ2VuIFtPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgT3Blbl90cnVuYzsgT3Blbl9iaW5hcnldIDBvNjY2IG5hbWVcblxuZXh0ZXJuYWwgZmx1c2ggOiBvdXRfY2hhbm5lbCAtPiB1bml0ID0gXCJjYW1sX21sX2ZsdXNoXCJcblxuZXh0ZXJuYWwgb3V0X2NoYW5uZWxzX2xpc3QgOiB1bml0IC0+IG91dF9jaGFubmVsIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX291dF9jaGFubmVsc19saXN0XCJcblxubGV0IGZsdXNoX2FsbCAoKSA9XG4gIGxldCByZWMgaXRlciA9IGZ1bmN0aW9uXG4gICAgICBbXSAtPiAoKVxuICAgIHwgYTo6bCAtPlxuICAgICAgICBiZWdpbiB0cnlcbiAgICAgICAgICAgIGZsdXNoIGFcbiAgICAgICAgd2l0aCBTeXNfZXJyb3IgXyAtPlxuICAgICAgICAgICgpICgqIGlnbm9yZSBjaGFubmVscyBjbG9zZWQgZHVyaW5nIGEgcHJlY2VkaW5nIGZsdXNoLiAqKVxuICAgICAgICBlbmQ7XG4gICAgICAgIGl0ZXIgbFxuICBpbiBpdGVyIChvdXRfY2hhbm5lbHNfbGlzdCAoKSlcblxuZXh0ZXJuYWwgdW5zYWZlX291dHB1dCA6IG91dF9jaGFubmVsIC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9vdXRwdXRfYnl0ZXNcIlxuZXh0ZXJuYWwgdW5zYWZlX291dHB1dF9zdHJpbmcgOiBvdXRfY2hhbm5lbCAtPiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9vdXRwdXRcIlxuXG5leHRlcm5hbCBvdXRwdXRfY2hhciA6IG91dF9jaGFubmVsIC0+IGNoYXIgLT4gdW5pdCA9IFwiY2FtbF9tbF9vdXRwdXRfY2hhclwiXG5cbmxldCBvdXRwdXRfYnl0ZXMgb2MgcyA9XG4gIHVuc2FmZV9vdXRwdXQgb2MgcyAwIChieXRlc19sZW5ndGggcylcblxubGV0IG91dHB1dF9zdHJpbmcgb2MgcyA9XG4gIHVuc2FmZV9vdXRwdXRfc3RyaW5nIG9jIHMgMCAoc3RyaW5nX2xlbmd0aCBzKVxuXG5sZXQgb3V0cHV0IG9jIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBieXRlc19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwib3V0cHV0XCJcbiAgZWxzZSB1bnNhZmVfb3V0cHV0IG9jIHMgb2ZzIGxlblxuXG5sZXQgb3V0cHV0X3N1YnN0cmluZyBvYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gc3RyaW5nX2xlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJvdXRwdXRfc3Vic3RyaW5nXCJcbiAgZWxzZSB1bnNhZmVfb3V0cHV0X3N0cmluZyBvYyBzIG9mcyBsZW5cblxuZXh0ZXJuYWwgb3V0cHV0X2J5dGUgOiBvdXRfY2hhbm5lbCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9tbF9vdXRwdXRfY2hhclwiXG5leHRlcm5hbCBvdXRwdXRfYmluYXJ5X2ludCA6IG91dF9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX291dHB1dF9pbnRcIlxuXG5leHRlcm5hbCBtYXJzaGFsX3RvX2NoYW5uZWwgOiBvdXRfY2hhbm5lbCAtPiAnYSAtPiB1bml0IGxpc3QgLT4gdW5pdFxuICAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVcIlxubGV0IG91dHB1dF92YWx1ZSBjaGFuIHYgPSBtYXJzaGFsX3RvX2NoYW5uZWwgY2hhbiB2IFtdXG5cbmV4dGVybmFsIHNlZWtfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfbWxfc2Vla19vdXRcIlxuZXh0ZXJuYWwgcG9zX291dCA6IG91dF9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9wb3Nfb3V0XCJcbmV4dGVybmFsIG91dF9jaGFubmVsX2xlbmd0aCA6IG91dF9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9jaGFubmVsX3NpemVcIlxuZXh0ZXJuYWwgY2xvc2Vfb3V0X2NoYW5uZWwgOiBvdXRfY2hhbm5lbCAtPiB1bml0ID0gXCJjYW1sX21sX2Nsb3NlX2NoYW5uZWxcIlxubGV0IGNsb3NlX291dCBvYyA9IGZsdXNoIG9jOyBjbG9zZV9vdXRfY2hhbm5lbCBvY1xubGV0IGNsb3NlX291dF9ub2VyciBvYyA9XG4gICh0cnkgZmx1c2ggb2Mgd2l0aCBfIC0+ICgpKTtcbiAgKHRyeSBjbG9zZV9vdXRfY2hhbm5lbCBvYyB3aXRoIF8gLT4gKCkpXG5leHRlcm5hbCBzZXRfYmluYXJ5X21vZGVfb3V0IDogb3V0X2NoYW5uZWwgLT4gYm9vbCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX3NldF9iaW5hcnlfbW9kZVwiXG5cbigqIEdlbmVyYWwgaW5wdXQgZnVuY3Rpb25zICopXG5cbmV4dGVybmFsIHNldF9pbl9jaGFubmVsX25hbWU6IGluX2NoYW5uZWwgLT4gc3RyaW5nIC0+IHVuaXQgPVxuICBcImNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZVwiXG5cbmxldCBvcGVuX2luX2dlbiBtb2RlIHBlcm0gbmFtZSA9XG4gIGxldCBjID0gb3Blbl9kZXNjcmlwdG9yX2luKG9wZW5fZGVzYyBuYW1lIG1vZGUgcGVybSkgaW5cbiAgc2V0X2luX2NoYW5uZWxfbmFtZSBjIG5hbWU7XG4gIGNcblxubGV0IG9wZW5faW4gbmFtZSA9XG4gIG9wZW5faW5fZ2VuIFtPcGVuX3Jkb25seTsgT3Blbl90ZXh0XSAwIG5hbWVcblxubGV0IG9wZW5faW5fYmluIG5hbWUgPVxuICBvcGVuX2luX2dlbiBbT3Blbl9yZG9ubHk7IE9wZW5fYmluYXJ5XSAwIG5hbWVcblxuZXh0ZXJuYWwgaW5wdXRfY2hhciA6IGluX2NoYW5uZWwgLT4gY2hhciA9IFwiY2FtbF9tbF9pbnB1dF9jaGFyXCJcblxuZXh0ZXJuYWwgdW5zYWZlX2lucHV0IDogaW5fY2hhbm5lbCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IGludFxuICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX2lucHV0XCJcblxubGV0IGlucHV0IGljIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBieXRlc19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiaW5wdXRcIlxuICBlbHNlIHVuc2FmZV9pbnB1dCBpYyBzIG9mcyBsZW5cblxubGV0IHJlYyB1bnNhZmVfcmVhbGx5X2lucHV0IGljIHMgb2ZzIGxlbiA9XG4gIGlmIGxlbiA8PSAwIHRoZW4gKCkgZWxzZSBiZWdpblxuICAgIGxldCByID0gdW5zYWZlX2lucHV0IGljIHMgb2ZzIGxlbiBpblxuICAgIGlmIHIgPSAwXG4gICAgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZVxuICAgIGVsc2UgdW5zYWZlX3JlYWxseV9pbnB1dCBpYyBzIChvZnMgKyByKSAobGVuIC0gcilcbiAgZW5kXG5cbmxldCByZWFsbHlfaW5wdXQgaWMgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGJ5dGVzX2xlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJyZWFsbHlfaW5wdXRcIlxuICBlbHNlIHVuc2FmZV9yZWFsbHlfaW5wdXQgaWMgcyBvZnMgbGVuXG5cbmxldCByZWFsbHlfaW5wdXRfc3RyaW5nIGljIGxlbiA9XG4gIGxldCBzID0gYnl0ZXNfY3JlYXRlIGxlbiBpblxuICByZWFsbHlfaW5wdXQgaWMgcyAwIGxlbjtcbiAgYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyBzXG5cbmV4dGVybmFsIGlucHV0X3NjYW5fbGluZSA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2lucHV0X3NjYW5fbGluZVwiXG5cbmxldCBpbnB1dF9saW5lIGNoYW4gPVxuICBsZXQgcmVjIGJ1aWxkX3Jlc3VsdCBidWYgcG9zID0gZnVuY3Rpb25cbiAgICBbXSAtPiBidWZcbiAgfCBoZCA6OiB0bCAtPlxuICAgICAgbGV0IGxlbiA9IGJ5dGVzX2xlbmd0aCBoZCBpblxuICAgICAgYnl0ZXNfYmxpdCBoZCAwIGJ1ZiAocG9zIC0gbGVuKSBsZW47XG4gICAgICBidWlsZF9yZXN1bHQgYnVmIChwb3MgLSBsZW4pIHRsIGluXG4gIGxldCByZWMgc2NhbiBhY2N1IGxlbiA9XG4gICAgbGV0IG4gPSBpbnB1dF9zY2FuX2xpbmUgY2hhbiBpblxuICAgIGlmIG4gPSAwIHRoZW4gYmVnaW4gICAgICAgICAgICAgICAgICAgKCogbiA9IDA6IHdlIGFyZSBhdCBFT0YgKilcbiAgICAgIG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICBbXSAtPiByYWlzZSBFbmRfb2ZfZmlsZVxuICAgICAgfCBfICAtPiBidWlsZF9yZXN1bHQgKGJ5dGVzX2NyZWF0ZSBsZW4pIGxlbiBhY2N1XG4gICAgZW5kIGVsc2UgaWYgbiA+IDAgdGhlbiBiZWdpbiAgICAgICAgICAoKiBuID4gMDogbmV3bGluZSBmb3VuZCBpbiBidWZmZXIgKilcbiAgICAgIGxldCByZXMgPSBieXRlc19jcmVhdGUgKG4gLSAxKSBpblxuICAgICAgaWdub3JlICh1bnNhZmVfaW5wdXQgY2hhbiByZXMgMCAobiAtIDEpKTtcbiAgICAgIGlnbm9yZSAoaW5wdXRfY2hhciBjaGFuKTsgICAgICAgICAgICgqIHNraXAgdGhlIG5ld2xpbmUgKilcbiAgICAgIG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICBbXSAtPiByZXNcbiAgICAgIHwgIF8gLT4gbGV0IGxlbiA9IGxlbiArIG4gLSAxIGluXG4gICAgICAgICAgICAgIGJ1aWxkX3Jlc3VsdCAoYnl0ZXNfY3JlYXRlIGxlbikgbGVuIChyZXMgOjogYWNjdSlcbiAgICBlbmQgZWxzZSBiZWdpbiAgICAgICAgICAgICAgICAgICAgICAgICgqIG4gPCAwOiBuZXdsaW5lIG5vdCBmb3VuZCAqKVxuICAgICAgbGV0IGJlZyA9IGJ5dGVzX2NyZWF0ZSAoLW4pIGluXG4gICAgICBpZ25vcmUodW5zYWZlX2lucHV0IGNoYW4gYmVnIDAgKC1uKSk7XG4gICAgICBzY2FuIChiZWcgOjogYWNjdSkgKGxlbiAtIG4pXG4gICAgZW5kXG4gIGluIGJ5dGVzX3Vuc2FmZV90b19zdHJpbmcgKHNjYW4gW10gMClcblxuZXh0ZXJuYWwgaW5wdXRfYnl0ZSA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2lucHV0X2NoYXJcIlxuZXh0ZXJuYWwgaW5wdXRfYmluYXJ5X2ludCA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2lucHV0X2ludFwiXG5leHRlcm5hbCBpbnB1dF92YWx1ZSA6IGluX2NoYW5uZWwgLT4gJ2EgPSBcImNhbWxfaW5wdXRfdmFsdWVcIlxuZXh0ZXJuYWwgc2Vla19pbiA6IGluX2NoYW5uZWwgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfbWxfc2Vla19pblwiXG5leHRlcm5hbCBwb3NfaW4gOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9wb3NfaW5cIlxuZXh0ZXJuYWwgaW5fY2hhbm5lbF9sZW5ndGggOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9jaGFubmVsX3NpemVcIlxuZXh0ZXJuYWwgY2xvc2VfaW4gOiBpbl9jaGFubmVsIC0+IHVuaXQgPSBcImNhbWxfbWxfY2xvc2VfY2hhbm5lbFwiXG5sZXQgY2xvc2VfaW5fbm9lcnIgaWMgPSAodHJ5IGNsb3NlX2luIGljIHdpdGggXyAtPiAoKSlcbmV4dGVybmFsIHNldF9iaW5hcnlfbW9kZV9pbiA6IGluX2NoYW5uZWwgLT4gYm9vbCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlXCJcblxuKCogT3V0cHV0IGZ1bmN0aW9ucyBvbiBzdGFuZGFyZCBvdXRwdXQgKilcblxubGV0IHByaW50X2NoYXIgYyA9IG91dHB1dF9jaGFyIHN0ZG91dCBjXG5sZXQgcHJpbnRfc3RyaW5nIHMgPSBvdXRwdXRfc3RyaW5nIHN0ZG91dCBzXG5sZXQgcHJpbnRfYnl0ZXMgcyA9IG91dHB1dF9ieXRlcyBzdGRvdXQgc1xubGV0IHByaW50X2ludCBpID0gb3V0cHV0X3N0cmluZyBzdGRvdXQgKHN0cmluZ19vZl9pbnQgaSlcbmxldCBwcmludF9mbG9hdCBmID0gb3V0cHV0X3N0cmluZyBzdGRvdXQgKHN0cmluZ19vZl9mbG9hdCBmKVxubGV0IHByaW50X2VuZGxpbmUgcyA9XG4gIG91dHB1dF9zdHJpbmcgc3Rkb3V0IHM7IG91dHB1dF9jaGFyIHN0ZG91dCAnXFxuJzsgZmx1c2ggc3Rkb3V0XG5sZXQgcHJpbnRfbmV3bGluZSAoKSA9IG91dHB1dF9jaGFyIHN0ZG91dCAnXFxuJzsgZmx1c2ggc3Rkb3V0XG5cbigqIE91dHB1dCBmdW5jdGlvbnMgb24gc3RhbmRhcmQgZXJyb3IgKilcblxubGV0IHByZXJyX2NoYXIgYyA9IG91dHB1dF9jaGFyIHN0ZGVyciBjXG5sZXQgcHJlcnJfc3RyaW5nIHMgPSBvdXRwdXRfc3RyaW5nIHN0ZGVyciBzXG5sZXQgcHJlcnJfYnl0ZXMgcyA9IG91dHB1dF9ieXRlcyBzdGRlcnIgc1xubGV0IHByZXJyX2ludCBpID0gb3V0cHV0X3N0cmluZyBzdGRlcnIgKHN0cmluZ19vZl9pbnQgaSlcbmxldCBwcmVycl9mbG9hdCBmID0gb3V0cHV0X3N0cmluZyBzdGRlcnIgKHN0cmluZ19vZl9mbG9hdCBmKVxubGV0IHByZXJyX2VuZGxpbmUgcyA9XG4gIG91dHB1dF9zdHJpbmcgc3RkZXJyIHM7IG91dHB1dF9jaGFyIHN0ZGVyciAnXFxuJzsgZmx1c2ggc3RkZXJyXG5sZXQgcHJlcnJfbmV3bGluZSAoKSA9IG91dHB1dF9jaGFyIHN0ZGVyciAnXFxuJzsgZmx1c2ggc3RkZXJyXG5cbigqIElucHV0IGZ1bmN0aW9ucyBvbiBzdGFuZGFyZCBpbnB1dCAqKVxuXG5sZXQgcmVhZF9saW5lICgpID0gZmx1c2ggc3Rkb3V0OyBpbnB1dF9saW5lIHN0ZGluXG5sZXQgcmVhZF9pbnQgKCkgPSBpbnRfb2Zfc3RyaW5nKHJlYWRfbGluZSgpKVxubGV0IHJlYWRfaW50X29wdCAoKSA9IGludF9vZl9zdHJpbmdfb3B0KHJlYWRfbGluZSgpKVxubGV0IHJlYWRfZmxvYXQgKCkgPSBmbG9hdF9vZl9zdHJpbmcocmVhZF9saW5lKCkpXG5sZXQgcmVhZF9mbG9hdF9vcHQgKCkgPSBmbG9hdF9vZl9zdHJpbmdfb3B0KHJlYWRfbGluZSgpKVxuXG4oKiBPcGVyYXRpb25zIG9uIGxhcmdlIGZpbGVzICopXG5cbm1vZHVsZSBMYXJnZUZpbGUgPVxuICBzdHJ1Y3RcbiAgICBleHRlcm5hbCBzZWVrX291dCA6IG91dF9jaGFubmVsIC0+IGludDY0IC0+IHVuaXQgPSBcImNhbWxfbWxfc2Vla19vdXRfNjRcIlxuICAgIGV4dGVybmFsIHBvc19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQ2NCA9IFwiY2FtbF9tbF9wb3Nfb3V0XzY0XCJcbiAgICBleHRlcm5hbCBvdXRfY2hhbm5lbF9sZW5ndGggOiBvdXRfY2hhbm5lbCAtPiBpbnQ2NFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9jaGFubmVsX3NpemVfNjRcIlxuICAgIGV4dGVybmFsIHNlZWtfaW4gOiBpbl9jaGFubmVsIC0+IGludDY0IC0+IHVuaXQgPSBcImNhbWxfbWxfc2Vla19pbl82NFwiXG4gICAgZXh0ZXJuYWwgcG9zX2luIDogaW5fY2hhbm5lbCAtPiBpbnQ2NCA9IFwiY2FtbF9tbF9wb3NfaW5fNjRcIlxuICAgIGV4dGVybmFsIGluX2NoYW5uZWxfbGVuZ3RoIDogaW5fY2hhbm5lbCAtPiBpbnQ2NCA9IFwiY2FtbF9tbF9jaGFubmVsX3NpemVfNjRcIlxuICBlbmRcblxuKCogRm9ybWF0cyAqKVxuXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2XG4gICA9ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NlxuICAgPSBGb3JtYXQgb2YgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mbXRcbiAgICAgICAgICAgICAgICogc3RyaW5nXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0ID0gKCdhLCAnYiwgJ2MsICdjLCAnYywgJ2QpIGZvcm1hdDZcblxudHlwZSAoJ2EsICdiLCAnYykgZm9ybWF0ID0gKCdhLCAnYiwgJ2MsICdjKSBmb3JtYXQ0XG5cbmxldCBzdHJpbmdfb2ZfZm9ybWF0IChGb3JtYXQgKF9mbXQsIHN0cikpID0gc3RyXG5cbmV4dGVybmFsIGZvcm1hdF9vZl9zdHJpbmcgOlxuICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+XG4gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPSBcIiVpZGVudGl0eVwiXG5cbmxldCAoIF5eICkgKEZvcm1hdCAoZm10MSwgc3RyMSkpIChGb3JtYXQgKGZtdDIsIHN0cjIpKSA9XG4gIEZvcm1hdCAoQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmNvbmNhdF9mbXQgZm10MSBmbXQyLFxuICAgICAgICAgIHN0cjEgXiBcIiUsXCIgXiBzdHIyKVxuXG4oKiBNaXNjZWxsYW5lb3VzICopXG5cbmV4dGVybmFsIHN5c19leGl0IDogaW50IC0+ICdhID0gXCJjYW1sX3N5c19leGl0XCJcblxuKCogZm9yIGF0X2V4aXQgKilcbnR5cGUgJ2EgYXRvbWljX3RcbmV4dGVybmFsIGF0b21pY19tYWtlIDogJ2EgLT4gJ2EgYXRvbWljX3QgPSBcIiVtYWtlbXV0YWJsZVwiXG5leHRlcm5hbCBhdG9taWNfZ2V0IDogJ2EgYXRvbWljX3QgLT4gJ2EgPSBcIiVhdG9taWNfbG9hZFwiXG5leHRlcm5hbCBhdG9taWNfY29tcGFyZV9hbmRfc2V0IDogJ2EgYXRvbWljX3QgLT4gJ2EgLT4gJ2EgLT4gYm9vbFxuICA9IFwiJWF0b21pY19jYXNcIlxuXG5sZXQgZXhpdF9mdW5jdGlvbiA9IGF0b21pY19tYWtlIGZsdXNoX2FsbFxuXG5sZXQgcmVjIGF0X2V4aXQgZiA9XG4gICgqIE1QUiM3MjUzLCBNUFIjNzc5NjogbWFrZSBzdXJlIFwiZlwiIGlzIGV4ZWN1dGVkIG9ubHkgb25jZSAqKVxuICBsZXQgZl95ZXRfdG9fcnVuID0gYXRvbWljX21ha2UgdHJ1ZSBpblxuICBsZXQgb2xkX2V4aXQgPSBhdG9taWNfZ2V0IGV4aXRfZnVuY3Rpb24gaW5cbiAgbGV0IG5ld19leGl0ICgpID1cbiAgICBpZiBhdG9taWNfY29tcGFyZV9hbmRfc2V0IGZfeWV0X3RvX3J1biB0cnVlIGZhbHNlIHRoZW4gZiAoKSA7XG4gICAgb2xkX2V4aXQgKClcbiAgaW5cbiAgbGV0IHN1Y2Nlc3MgPSBhdG9taWNfY29tcGFyZV9hbmRfc2V0IGV4aXRfZnVuY3Rpb24gb2xkX2V4aXQgbmV3X2V4aXQgaW5cbiAgaWYgbm90IHN1Y2Nlc3MgdGhlbiBhdF9leGl0IGZcblxubGV0IGRvX2RvbWFpbl9sb2NhbF9hdF9leGl0ID0gcmVmIChmdW4gKCkgLT4gKCkpXG5cbmxldCBkb19hdF9leGl0ICgpID1cbiAgKCFkb19kb21haW5fbG9jYWxfYXRfZXhpdCkgKCk7XG4gIChhdG9taWNfZ2V0IGV4aXRfZnVuY3Rpb24pICgpXG5cbmxldCBleGl0IHJldGNvZGUgPVxuICBkb19hdF9leGl0ICgpO1xuICBzeXNfZXhpdCByZXRjb2RlXG5cbmxldCBfID0gcmVnaXN0ZXJfbmFtZWRfdmFsdWUgXCJQZXJ2YXNpdmVzLmRvX2F0X2V4aXRcIiBkb19hdF9leGl0XG5cbigqTU9EVUxFX0FMSUFTRVMqKVxubW9kdWxlIEFyZyAgICAgICAgICAgID0gQXJnXG5tb2R1bGUgQXJyYXkgICAgICAgICAgPSBBcnJheVxubW9kdWxlIEFycmF5TGFiZWxzICAgID0gQXJyYXlMYWJlbHNcbm1vZHVsZSBBdG9taWMgICAgICAgICA9IEF0b21pY1xubW9kdWxlIEJpZ2FycmF5ICAgICAgID0gQmlnYXJyYXlcbm1vZHVsZSBCb29sICAgICAgICAgICA9IEJvb2xcbm1vZHVsZSBCdWZmZXIgICAgICAgICA9IEJ1ZmZlclxubW9kdWxlIEJ5dGVzICAgICAgICAgID0gQnl0ZXNcbm1vZHVsZSBCeXRlc0xhYmVscyAgICA9IEJ5dGVzTGFiZWxzXG5tb2R1bGUgQ2FsbGJhY2sgICAgICAgPSBDYWxsYmFja1xubW9kdWxlIENoYXIgICAgICAgICAgID0gQ2hhclxubW9kdWxlIENvbXBsZXggICAgICAgID0gQ29tcGxleFxubW9kdWxlIENvbmRpdGlvbiAgICAgID0gQ29uZGl0aW9uXG5tb2R1bGUgRGlnZXN0ICAgICAgICAgPSBEaWdlc3Rcbm1vZHVsZSBEb21haW4gICAgICAgICA9IERvbWFpblxubW9kdWxlIER5bmFycmF5ICAgICAgID0gRHluYXJyYXlcbm1vZHVsZSBQcXVldWUgICAgICAgICA9IFBxdWV1ZVxubW9kdWxlIEVmZmVjdCAgICAgICAgID0gRWZmZWN0XG5tb2R1bGUgRWl0aGVyICAgICAgICAgPSBFaXRoZXJcbm1vZHVsZSBFcGhlbWVyb24gICAgICA9IEVwaGVtZXJvblxubW9kdWxlIEZpbGVuYW1lICAgICAgID0gRmlsZW5hbWVcbm1vZHVsZSBGbG9hdCAgICAgICAgICA9IEZsb2F0XG5tb2R1bGUgRm9ybWF0ICAgICAgICAgPSBGb3JtYXRcbm1vZHVsZSBGdW4gICAgICAgICAgICA9IEZ1blxubW9kdWxlIEdjICAgICAgICAgICAgID0gR2Ncbm1vZHVsZSBIYXNodGJsICAgICAgICA9IEhhc2h0Ymxcbm1vZHVsZSBJYXJyYXkgICAgICAgICA9IElhcnJheVxubW9kdWxlIEluX2NoYW5uZWwgICAgID0gSW5fY2hhbm5lbFxubW9kdWxlIEludCAgICAgICAgICAgID0gSW50XG5tb2R1bGUgSW50MzIgICAgICAgICAgPSBJbnQzMlxubW9kdWxlIEludDY0ICAgICAgICAgID0gSW50NjRcbm1vZHVsZSBMYXp5ICAgICAgICAgICA9IExhenlcbm1vZHVsZSBMZXhpbmcgICAgICAgICA9IExleGluZ1xubW9kdWxlIExpc3QgICAgICAgICAgID0gTGlzdFxubW9kdWxlIExpc3RMYWJlbHMgICAgID0gTGlzdExhYmVsc1xubW9kdWxlIE1hcCAgICAgICAgICAgID0gTWFwXG5tb2R1bGUgTWFyc2hhbCAgICAgICAgPSBNYXJzaGFsXG5tb2R1bGUgTW9yZUxhYmVscyAgICAgPSBNb3JlTGFiZWxzXG5tb2R1bGUgTXV0ZXggICAgICAgICAgPSBNdXRleFxubW9kdWxlIE5hdGl2ZWludCAgICAgID0gTmF0aXZlaW50XG5tb2R1bGUgT2JqICAgICAgICAgICAgPSBPYmpcbm1vZHVsZSBPbyAgICAgICAgICAgICA9IE9vXG5tb2R1bGUgT3B0aW9uICAgICAgICAgPSBPcHRpb25cbm1vZHVsZSBPdXRfY2hhbm5lbCAgICA9IE91dF9jaGFubmVsXG5tb2R1bGUgUGFpciAgICAgICAgICAgPSBQYWlyXG5tb2R1bGUgUGFyc2luZyAgICAgICAgPSBQYXJzaW5nXG5tb2R1bGUgUHJpbnRleGMgICAgICAgPSBQcmludGV4Y1xubW9kdWxlIFByaW50ZiAgICAgICAgID0gUHJpbnRmXG5tb2R1bGUgUXVldWUgICAgICAgICAgPSBRdWV1ZVxubW9kdWxlIFJhbmRvbSAgICAgICAgID0gUmFuZG9tXG5tb2R1bGUgUmVzdWx0ICAgICAgICAgPSBSZXN1bHRcbm1vZHVsZSBSZXByICAgICAgICAgICA9IFJlcHJcbm1vZHVsZSBTY2FuZiAgICAgICAgICA9IFNjYW5mXG5tb2R1bGUgU2VtYXBob3JlICAgICAgPSBTZW1hcGhvcmVcbm1vZHVsZSBTZXEgICAgICAgICAgICA9IFNlcVxubW9kdWxlIFNldCAgICAgICAgICAgID0gU2V0XG5tb2R1bGUgU3RhY2sgICAgICAgICAgPSBTdGFja1xubW9kdWxlIFN0ZExhYmVscyAgICAgID0gU3RkTGFiZWxzXG5tb2R1bGUgU3RyaW5nICAgICAgICAgPSBTdHJpbmdcbm1vZHVsZSBTdHJpbmdMYWJlbHMgICA9IFN0cmluZ0xhYmVsc1xubW9kdWxlIFN5cyAgICAgICAgICAgID0gU3lzXG5tb2R1bGUgVHlwZSAgICAgICAgICAgPSBUeXBlXG5tb2R1bGUgVWNoYXIgICAgICAgICAgPSBVY2hhclxubW9kdWxlIFVuaXQgICAgICAgICAgID0gVW5pdFxubW9kdWxlIFdlYWsgICAgICAgICAgID0gV2Vha1xuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2F0b21pY19jYXNfZmllbGQiLCJjYW1sX2NyZWF0ZV9ieXRlcyIsImNhbWxfZmxvYXRfb2Zfc3RyaW5nIiwiY2FtbF9pbnRfb2Zfc3RyaW5nIiwiY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlIiwiY2FtbF9tbF9ieXRlc19sZW5ndGgiLCJjYW1sX21sX2NoYW5uZWxfc2l6ZSIsImNhbWxfbWxfY2hhbm5lbF9zaXplXzY0IiwiY2FtbF9tbF9jbG9zZV9jaGFubmVsIiwiY2FtbF9tbF9mbHVzaCIsImNhbWxfbWxfaW5wdXQiLCJjYW1sX21sX2lucHV0X2NoYXIiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiIsImNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dCIsImNhbWxfbWxfb3V0cHV0IiwiY2FtbF9tbF9vdXRwdXRfYnl0ZXMiLCJjYW1sX21sX291dHB1dF9jaGFyIiwiY2FtbF9tbF9zZXRfYmluYXJ5X21vZGUiLCJjYW1sX21sX3NldF9jaGFubmVsX25hbWUiLCJjYW1sX21sX3N0cmluZ19sZW5ndGgiLCJjYW1sX3N0cmluZ19jb25jYXQiLCJjYW1sX3N0cmluZ19vZl9ieXRlcyIsImNhbWxfc3lzX29wZW4iLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImdsb2JhbF9kYXRhIiwiQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzIiwiSW52YWxpZF9hcmd1bWVudCIsIkZhaWx1cmUiLCJNYXRjaF9mYWlsdXJlIiwiQXNzZXJ0X2ZhaWx1cmUiLCJOb3RfZm91bmQiLCJPdXRfb2ZfbWVtb3J5IiwiU3RhY2tfb3ZlcmZsb3ciLCJTeXNfZXJyb3IiLCJFbmRfb2ZfZmlsZSIsIkRpdmlzaW9uX2J5X3plcm8iLCJTeXNfYmxvY2tlZF9pbyIsIlVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlIiwiZmFpbHdpdGgiLCJzIiwiaW52YWxpZF9hcmciLCJFeGl0IiwibWluIiwieCIsInkiLCJtYXgiLCJhYnMiLCJsbm90IiwiY2hhcl9vZl9pbnQiLCJuIiwiY3N0X2ZhbHNlIiwiY3N0X3RydWUiLCJzdHJpbmdfb2ZfYm9vbCIsImIiLCJib29sX29mX3N0cmluZyIsInBhcmFtIiwiYm9vbF9vZl9zdHJpbmdfb3B0Iiwic3RyaW5nX29mX2ludCIsImludF9vZl9zdHJpbmdfb3B0IiwiZXhuIiwidmFsaWRfZmxvYXRfbGV4ZW0iLCJzMSIsImwiLCJpIiwibWF0Y2giLCJzdHJpbmdfb2ZfZmxvYXQiLCJmbG9hdF9vZl9zdHJpbmdfb3B0Iiwic3ltYm9sIiwibDEiLCJsMiIsImgxIiwiaDIiLCJ0bCIsImgzIiwiYmxvY2siLCJkc3QiLCJvZmZzZXQiLCJzdGRpbiIsInN0ZG91dCIsInN0ZGVyciIsIm9wZW5fb3V0X2dlbiIsIm1vZGUiLCJwZXJtIiwibmFtZSIsImMiLCJvcGVuX291dCIsIm9wZW5fb3V0X2JpbiIsImZsdXNoX2FsbCIsImEiLCJvdXRwdXRfYnl0ZXMiLCJvYyIsIm91dHB1dF9zdHJpbmciLCJvdXRwdXQiLCJvZnMiLCJsZW4iLCJvdXRwdXRfc3Vic3RyaW5nIiwib3V0cHV0X3ZhbHVlIiwiY2hhbiIsInYiLCJjbG9zZV9vdXQiLCJjbG9zZV9vdXRfbm9lcnIiLCJvcGVuX2luX2dlbiIsIm9wZW5faW4iLCJvcGVuX2luX2JpbiIsImlucHV0IiwiaWMiLCJ1bnNhZmVfcmVhbGx5X2lucHV0IiwiciIsInJlYWxseV9pbnB1dCIsInJlYWxseV9pbnB1dF9zdHJpbmciLCJpbnB1dF9saW5lIiwiYnVpbGRfcmVzdWx0IiwiYnVmIiwicG9zIiwiaGQiLCJhY2N1IiwiYmVnIiwicmVzIiwiY2xvc2VfaW5fbm9lcnIiLCJwcmludF9jaGFyIiwicHJpbnRfc3RyaW5nIiwicHJpbnRfYnl0ZXMiLCJwcmludF9pbnQiLCJwcmludF9mbG9hdCIsInByaW50X2VuZGxpbmUiLCJwcmludF9uZXdsaW5lIiwicHJlcnJfY2hhciIsInByZXJyX3N0cmluZyIsInByZXJyX2J5dGVzIiwicHJlcnJfaW50IiwicHJlcnJfZmxvYXQiLCJwcmVycl9lbmRsaW5lIiwicHJlcnJfbmV3bGluZSIsInJlYWRfbGluZSIsInJlYWRfaW50IiwicmVhZF9pbnRfb3B0IiwicmVhZF9mbG9hdCIsInJlYWRfZmxvYXRfb3B0Iiwic3RyaW5nX29mX2Zvcm1hdCIsInN0ciIsInN0cjIiLCJmbXQyIiwic3RyMSIsImZtdDEiLCJzMiIsImV4aXRfZnVuY3Rpb24iLCJhdF9leGl0Iiwib2xkX2V4aXQiLCJmX3lldF90b19ydW4iLCJuZXdfZXhpdCIsInN1Y2Nlc3MiLCJkb19kb21haW5fbG9jYWxfYXRfZXhpdCIsImRvX2F0X2V4aXQiLCJleGl0IiwicmV0Y29kZSIsIlN0ZGxpYiJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyx3QkFBQTtBQUFBLElBQUFDLG9CQUFBO0FBQUEsSUFBQUMsdUJBQUE7QUFBQSxJQUFBQyxxQkFBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsSUFBQUMsdUJBQUE7QUFBQSxJQUFBQyx1QkFBQTtBQUFBLElBQUFDLDBCQUFBO0FBQUEsSUFBQUMsd0JBQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMscUJBQUE7QUFBQSxJQUFBQyw2QkFBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyx1QkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsSUFBQUMsMEJBQUE7QUFBQSxJQUFBQywyQkFBQTtBQUFBLElBQUFDLHdCQUFBO0FBQUEsSUFBQUMscUJBQUE7QUFBQSxJQUFBQyx1QkFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsc0JBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsMkJBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLFVBQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsWUFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxZQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyw2QkFBQTtBQUFBLFlBQUFDLFNBQUFDO0FBQUFBLElDNEJpQjtBQUFBLEdBQWdC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QkE5UEcsYUFBQWhHLE9BZ1FXLFNBQUU7QUFBQSxZQUFBaUcsV0FBQWpHO0FBQUFBLElBRzdDO0FBQUEsSUFBNkIsc0NBQ0E7QUFBQTtBQUFBLFlBQUFrRyxLQUFBQztBQUFBQSxJQUc3QjtBQUFBLElBQ0EscUNBQWdCO0FBQUE7QUFBQSxHQUVWO0FBQUE7QUFBQSxJQUFBQztBQUFBQSxNQUF1RDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRURya0IvRCIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjEwMTg4LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvc3lzLm1sLmluIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCogQGNvbmZpZ3VyZV9pbnB1dEAgKilcbiMzIFwic3lzLm1sLmluXCJcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBiYWNrZW5kX3R5cGUgPVxuICB8IE5hdGl2ZVxuICB8IEJ5dGVjb2RlXG4gIHwgT3RoZXIgb2Ygc3RyaW5nXG4oKiBTeXN0ZW0gaW50ZXJmYWNlICopXG5cbmV4dGVybmFsIGdldF9jb25maWc6IHVuaXQgLT4gc3RyaW5nICogaW50ICogYm9vbCA9IFwiY2FtbF9zeXNfZ2V0X2NvbmZpZ1wiXG5leHRlcm5hbCBnZXRfZXhlY3V0YWJsZV9uYW1lIDogdW5pdCAtPiBzdHJpbmcgPSBcImNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZVwiXG5leHRlcm5hbCBhcmd2IDogc3RyaW5nIGFycmF5ID0gXCIlc3lzX2FyZ3ZcIlxuZXh0ZXJuYWwgYmlnX2VuZGlhbiA6IHVuaXQgLT4gYm9vbCA9IFwiJWJpZ19lbmRpYW5cIlxuZXh0ZXJuYWwgd29yZF9zaXplIDogdW5pdCAtPiBpbnQgPSBcIiV3b3JkX3NpemVcIlxuZXh0ZXJuYWwgaW50X3NpemUgOiB1bml0IC0+IGludCA9IFwiJWludF9zaXplXCJcbmV4dGVybmFsIG1heF93b3NpemUgOiB1bml0IC0+IGludCA9IFwiJW1heF93b3NpemVcIlxuZXh0ZXJuYWwgdW5peCA6IHVuaXQgLT4gYm9vbCA9IFwiJW9zdHlwZV91bml4XCJcbmV4dGVybmFsIHdpbjMyIDogdW5pdCAtPiBib29sID0gXCIlb3N0eXBlX3dpbjMyXCJcbmV4dGVybmFsIGN5Z3dpbiA6IHVuaXQgLT4gYm9vbCA9IFwiJW9zdHlwZV9jeWd3aW5cIlxuZXh0ZXJuYWwgZ2V0X2JhY2tlbmRfdHlwZSA6IHVuaXQgLT4gYmFja2VuZF90eXBlID0gXCIlYmFja2VuZF90eXBlXCJcblxubGV0IGV4ZWN1dGFibGVfbmFtZSA9IGdldF9leGVjdXRhYmxlX25hbWUoKVxubGV0IChvc190eXBlLCBfLCBfKSA9IGdldF9jb25maWcoKVxubGV0IGJhY2tlbmRfdHlwZSA9IGdldF9iYWNrZW5kX3R5cGUgKClcbmxldCBiaWdfZW5kaWFuID0gYmlnX2VuZGlhbiAoKVxubGV0IHdvcmRfc2l6ZSA9IHdvcmRfc2l6ZSAoKVxubGV0IGludF9zaXplID0gaW50X3NpemUgKClcbmxldCB1bml4ID0gdW5peCAoKVxubGV0IHdpbjMyID0gd2luMzIgKClcbmxldCBjeWd3aW4gPSBjeWd3aW4gKClcbmxldCBtYXhfYXJyYXlfbGVuZ3RoID0gbWF4X3dvc2l6ZSAoKVxubGV0IG1heF9mbG9hdGFycmF5X2xlbmd0aCA9IG1heF9hcnJheV9sZW5ndGggLyAoNjQgLyB3b3JkX3NpemUpXG5sZXQgbWF4X3N0cmluZ19sZW5ndGggPSB3b3JkX3NpemUgLyA4ICogbWF4X2FycmF5X2xlbmd0aCAtIDFcbmV4dGVybmFsIHJ1bnRpbWVfdmFyaWFudCA6IHVuaXQgLT4gc3RyaW5nID0gXCJjYW1sX3J1bnRpbWVfdmFyaWFudFwiXG5leHRlcm5hbCBydW50aW1lX3BhcmFtZXRlcnMgOiB1bml0IC0+IHN0cmluZyA9IFwiY2FtbF9ydW50aW1lX3BhcmFtZXRlcnNcIlxuZXh0ZXJuYWwgcG9sbF9hY3Rpb25zIDogdW5pdCAtPiB1bml0ID0gXCIlcG9sbFwiXG5cbmV4dGVybmFsIGZpbGVfZXhpc3RzOiBzdHJpbmcgLT4gYm9vbCA9IFwiY2FtbF9zeXNfZmlsZV9leGlzdHNcIlxuZXh0ZXJuYWwgaXNfZGlyZWN0b3J5IDogc3RyaW5nIC0+IGJvb2wgPSBcImNhbWxfc3lzX2lzX2RpcmVjdG9yeVwiXG5leHRlcm5hbCBpc19yZWd1bGFyX2ZpbGUgOiBzdHJpbmcgLT4gYm9vbCA9IFwiY2FtbF9zeXNfaXNfcmVndWxhcl9maWxlXCJcbmV4dGVybmFsIHJlbW92ZTogc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfc3lzX3JlbW92ZVwiXG5leHRlcm5hbCByZW5hbWUgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfc3lzX3JlbmFtZVwiXG5leHRlcm5hbCBnZXRlbnY6IHN0cmluZyAtPiBzdHJpbmcgPSBcImNhbWxfc3lzX2dldGVudlwiXG5leHRlcm5hbCBnZXRlbnZfb3B0OiBzdHJpbmcgLT4gc3RyaW5nIG9wdGlvbiA9IFwiY2FtbF9zeXNfZ2V0ZW52X29wdFwiXG5cbmV4dGVybmFsIGNvbW1hbmQ6IHN0cmluZyAtPiBpbnQgPSBcImNhbWxfc3lzX3N5c3RlbV9jb21tYW5kXCJcbmV4dGVybmFsIHRpbWU6IHVuaXQgLT4gKGZsb2F0IFtAdW5ib3hlZF0pID1cbiAgXCJjYW1sX3N5c190aW1lXCIgXCJjYW1sX3N5c190aW1lX3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2hkaXI6IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX3N5c19jaGRpclwiXG5leHRlcm5hbCBta2Rpcjogc3RyaW5nIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX3N5c19ta2RpclwiXG5leHRlcm5hbCBybWRpcjogc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfc3lzX3JtZGlyXCJcbmV4dGVybmFsIGdldGN3ZDogdW5pdCAtPiBzdHJpbmcgPSBcImNhbWxfc3lzX2dldGN3ZFwiXG5leHRlcm5hbCByZWFkZGlyIDogc3RyaW5nIC0+IHN0cmluZyBhcnJheSA9IFwiY2FtbF9zeXNfcmVhZF9kaXJlY3RvcnlcIlxuXG5leHRlcm5hbCBpb19idWZmZXJfc2l6ZTogdW5pdCAtPiBpbnQgPSBcImNhbWxfc3lzX2lvX2J1ZmZlcl9zaXplXCJcbmxldCBpb19idWZmZXJfc2l6ZSA9IGlvX2J1ZmZlcl9zaXplICgpXG5cbmxldCBpbnRlcmFjdGl2ZSA9IHJlZiBmYWxzZVxuXG50eXBlIHNpZ25hbCA9IGludFxuXG50eXBlIHNpZ25hbF9iZWhhdmlvciA9XG4gICAgU2lnbmFsX2RlZmF1bHRcbiAgfCBTaWduYWxfaWdub3JlXG4gIHwgU2lnbmFsX2hhbmRsZSBvZiAoc2lnbmFsIC0+IHVuaXQpXG5cbmV4dGVybmFsIHNpZ25hbCA6IHNpZ25hbCAtPiBzaWduYWxfYmVoYXZpb3IgLT4gc2lnbmFsX2JlaGF2aW9yXG4gICAgICAgICAgICAgICAgPSBcImNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlclwiXG5cbmxldCBzZXRfc2lnbmFsIHNpZ19udW0gc2lnX2JlaCA9IGlnbm9yZShzaWduYWwgc2lnX251bSBzaWdfYmVoKVxuXG5sZXQgc2lnYWJydCA9IC0xXG5sZXQgc2lnYWxybSA9IC0yXG5sZXQgc2lnZnBlID0gLTNcbmxldCBzaWdodXAgPSAtNFxubGV0IHNpZ2lsbCA9IC01XG5sZXQgc2lnaW50ID0gLTZcbmxldCBzaWdraWxsID0gLTdcbmxldCBzaWdwaXBlID0gLThcbmxldCBzaWdxdWl0ID0gLTlcbmxldCBzaWdzZWd2ID0gLTEwXG5sZXQgc2lndGVybSA9IC0xMVxubGV0IHNpZ3VzcjEgPSAtMTJcbmxldCBzaWd1c3IyID0gLTEzXG5sZXQgc2lnY2hsZCA9IC0xNFxubGV0IHNpZ2NvbnQgPSAtMTVcbmxldCBzaWdzdG9wID0gLTE2XG5sZXQgc2lndHN0cCA9IC0xN1xubGV0IHNpZ3R0aW4gPSAtMThcbmxldCBzaWd0dG91ID0gLTE5XG5sZXQgc2lndnRhbHJtID0gLTIwXG5sZXQgc2lncHJvZiA9IC0yMVxubGV0IHNpZ2J1cyA9IC0yMlxubGV0IHNpZ3BvbGwgPSAtMjNcbmxldCBzaWdzeXMgPSAtMjRcbmxldCBzaWd0cmFwID0gLTI1XG5sZXQgc2lndXJnID0gLTI2XG5sZXQgc2lneGNwdSA9IC0yN1xubGV0IHNpZ3hmc3ogPSAtMjhcbmxldCBzaWdpbyA9IC0yOVxubGV0IHNpZ3dpbmNoID0gLTMwXG5cbmxldCBzaWduYWxfdG9fc3RyaW5nIHMgPVxuICBpZiBzID0gc2lnYWJydCB0aGVuIFwiU0lHQUJSVFwiXG4gIGVsc2UgaWYgcyA9IHNpZ2Fscm0gdGhlbiBcIlNJR0FMUk1cIlxuICBlbHNlIGlmIHMgPSBzaWdmcGUgdGhlbiBcIlNJR0ZQRVwiXG4gIGVsc2UgaWYgcyA9IHNpZ2h1cCB0aGVuIFwiU0lHSFVQXCJcbiAgZWxzZSBpZiBzID0gc2lnaWxsIHRoZW4gXCJTSUdJTExcIlxuICBlbHNlIGlmIHMgPSBzaWdpbnQgdGhlbiBcIlNJR0lOVFwiXG4gIGVsc2UgaWYgcyA9IHNpZ2tpbGwgdGhlbiBcIlNJR0tJTExcIlxuICBlbHNlIGlmIHMgPSBzaWdwaXBlIHRoZW4gXCJTSUdQSVBFXCJcbiAgZWxzZSBpZiBzID0gc2lncXVpdCB0aGVuIFwiU0lHUVVJVFwiXG4gIGVsc2UgaWYgcyA9IHNpZ3NlZ3YgdGhlbiBcIlNJR1NFR1ZcIlxuICBlbHNlIGlmIHMgPSBzaWd0ZXJtIHRoZW4gXCJTSUdURVJNXCJcbiAgZWxzZSBpZiBzID0gc2lndXNyMSB0aGVuIFwiU0lHVVNSMVwiXG4gIGVsc2UgaWYgcyA9IHNpZ3VzcjIgdGhlbiBcIlNJR1VTUjJcIlxuICBlbHNlIGlmIHMgPSBzaWdjaGxkIHRoZW4gXCJTSUdDSExEXCJcbiAgZWxzZSBpZiBzID0gc2lnY29udCB0aGVuIFwiU0lHQ09OVFwiXG4gIGVsc2UgaWYgcyA9IHNpZ3N0b3AgdGhlbiBcIlNJR1NUT1BcIlxuICBlbHNlIGlmIHMgPSBzaWd0c3RwIHRoZW4gXCJTSUdUU1RQXCJcbiAgZWxzZSBpZiBzID0gc2lndHRpbiB0aGVuIFwiU0lHVFRJTlwiXG4gIGVsc2UgaWYgcyA9IHNpZ3R0b3UgdGhlbiBcIlNJR1RUT1VcIlxuICBlbHNlIGlmIHMgPSBzaWd2dGFscm0gdGhlbiBcIlNJR1ZUQUxSTVwiXG4gIGVsc2UgaWYgcyA9IHNpZ3Byb2YgdGhlbiBcIlNJR1BST0ZcIlxuICBlbHNlIGlmIHMgPSBzaWdidXMgdGhlbiBcIlNJR0JVU1wiXG4gIGVsc2UgaWYgcyA9IHNpZ3BvbGwgdGhlbiBcIlNJR1BPTExcIlxuICBlbHNlIGlmIHMgPSBzaWdzeXMgdGhlbiBcIlNJR1NZU1wiXG4gIGVsc2UgaWYgcyA9IHNpZ3RyYXAgdGhlbiBcIlNJR1RSQVBcIlxuICBlbHNlIGlmIHMgPSBzaWd1cmcgdGhlbiBcIlNJR1VSR1wiXG4gIGVsc2UgaWYgcyA9IHNpZ3hjcHUgdGhlbiBcIlNJR1hDUFVcIlxuICBlbHNlIGlmIHMgPSBzaWd4ZnN6IHRoZW4gXCJTSUdYRlNaXCJcbiAgZWxzZSBpZiBzID0gc2lnaW8gdGhlbiBcIlNJR0lPXCJcbiAgZWxzZSBpZiBzID0gc2lnd2luY2ggdGhlbiBcIlNJR1dJTkNIXCJcbiAgZWxzZSBpZiBzIDwgc2lnd2luY2ggdGhlbiBpbnZhbGlkX2FyZyBcIlN5cy5zaWduYWxfdG9fc3RyaW5nXCJcbiAgZWxzZSBcIlNJRyhcIiBeIHN0cmluZ19vZl9pbnQgcyBeIFwiKVwiXG5cbmV4dGVybmFsIHJldl9jb252ZXJ0X3NpZ25hbF9udW1iZXI6IGludCAtPiBpbnQgPVxuICBcImNhbWxfc3lzX3Jldl9jb252ZXJ0X3NpZ25hbF9udW1iZXJcIlxuZXh0ZXJuYWwgY29udmVydF9zaWduYWxfbnVtYmVyOiBpbnQgLT4gaW50ID1cbiAgXCJjYW1sX3N5c19jb252ZXJ0X3NpZ25hbF9udW1iZXJcIlxuXG5sZXQgc2lnbmFsX29mX2ludCBpID1cbiAgaWYgaSA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlN5cy5zaWduYWxfb2ZfaW50XCJcbiAgZWxzZSByZXZfY29udmVydF9zaWduYWxfbnVtYmVyIGlcblxubGV0IHNpZ25hbF90b19pbnQgaSA9XG4gIGlmIGkgPCBzaWd3aW5jaCB0aGVuIGludmFsaWRfYXJnIFwiU3lzLnNpZ25hbF90b19pbnRcIlxuICBlbHNlIGNvbnZlcnRfc2lnbmFsX251bWJlciBpXG5cbmV4Y2VwdGlvbiBCcmVha1xuXG5sZXQgY2F0Y2hfYnJlYWsgb24gPVxuICBpZiBvbiB0aGVuXG4gICAgc2V0X3NpZ25hbCBzaWdpbnQgKFNpZ25hbF9oYW5kbGUoZnVuIF8gLT4gcmFpc2UgQnJlYWspKVxuICBlbHNlXG4gICAgc2V0X3NpZ25hbCBzaWdpbnQgU2lnbmFsX2RlZmF1bHRcblxuXG5leHRlcm5hbCBlbmFibGVfcnVudGltZV93YXJuaW5nczogYm9vbCAtPiB1bml0ID1cbiAgXCJjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzXCJcbmV4dGVybmFsIHJ1bnRpbWVfd2FybmluZ3NfZW5hYmxlZDogdW5pdCAtPiBib29sID1cbiAgXCJjYW1sX21sX3J1bnRpbWVfd2FybmluZ3NfZW5hYmxlZFwiXG5cbigqIFRoZSB2ZXJzaW9uIHN0cmluZyBpcyBmb3VuZCBpbiBmaWxlIC4uL1ZFUlNJT04gKilcblxubGV0IG9jYW1sX3ZlcnNpb24gPSBcIkBWRVJTSU9OQFwiXG5cbmxldCBkZXZlbG9wbWVudF92ZXJzaW9uID0gQE9DQU1MX0RFVkVMT1BNRU5UX1ZFUlNJT05AXG5cbnR5cGUgZXh0cmFfcHJlZml4ID0gUGx1cyB8IFRpbGRlXG5cbnR5cGUgZXh0cmFfaW5mbyA9IGV4dHJhX3ByZWZpeCAqIHN0cmluZ1xuXG50eXBlIG9jYW1sX3JlbGVhc2VfaW5mbyA9IHtcbiAgbWFqb3IgOiBpbnQ7XG4gIG1pbm9yIDogaW50O1xuICBwYXRjaGxldmVsIDogaW50O1xuICBleHRyYSA6IGV4dHJhX2luZm8gb3B0aW9uXG59XG5cbmxldCBvY2FtbF9yZWxlYXNlID0ge1xuICBtYWpvciA9IEBPQ0FNTF9WRVJTSU9OX01BSk9SQDtcbiAgbWlub3IgPSBAT0NBTUxfVkVSU0lPTl9NSU5PUkA7XG4gIHBhdGNobGV2ZWwgPSBAT0NBTUxfVkVSU0lPTl9QQVRDSExFVkVMQDtcbiAgZXh0cmEgPSBAT0NBTUxfUkVMRUFTRV9FWFRSQUBcbn1cblxuKCogT3B0aW1pemF0aW9uICopXG5cbmV4dGVybmFsIG9wYXF1ZV9pZGVudGl0eSA6ICdhIC0+ICdhID0gXCIlb3BhcXVlXCJcblxubW9kdWxlIEltbWVkaWF0ZTY0ID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIE5vbl9pbW1lZGlhdGUgPSBzaWdcbiAgICB0eXBlIHRcbiAgZW5kXG4gIG1vZHVsZSB0eXBlIEltbWVkaWF0ZSA9IHNpZ1xuICAgIHR5cGUgdCBbQEBpbW1lZGlhdGVdXG4gIGVuZFxuXG4gIG1vZHVsZSBNYWtlKEltbWVkaWF0ZSA6IEltbWVkaWF0ZSkoTm9uX2ltbWVkaWF0ZSA6IE5vbl9pbW1lZGlhdGUpID0gc3RydWN0XG4gICAgdHlwZSB0IFtAQGltbWVkaWF0ZTY0XVxuICAgIHR5cGUgJ2EgcmVwciA9XG4gICAgICB8IEltbWVkaWF0ZSA6IEltbWVkaWF0ZS50IHJlcHJcbiAgICAgIHwgTm9uX2ltbWVkaWF0ZSA6IE5vbl9pbW1lZGlhdGUudCByZXByXG4gICAgZXh0ZXJuYWwgbWFnaWMgOiBfIHJlcHIgLT4gdCByZXByID0gXCIlaWRlbnRpdHlcIlxuICAgIGxldCByZXByID1cbiAgICAgIGlmIHdvcmRfc2l6ZSA9IDY0IHRoZW5cbiAgICAgICAgbWFnaWMgSW1tZWRpYXRlXG4gICAgICBlbHNlXG4gICAgICAgIG1hZ2ljIE5vbl9pbW1lZGlhdGVcbiAgZW5kXG5lbmRcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiU3RkbGliIiwiZXhlY3V0YWJsZV9uYW1lIiwib3NfdHlwZSIsInVuaXgiLCJ3aW4zMiIsImN5Z3dpbiIsIm1heF9hcnJheV9sZW5ndGgiLCJtYXhfZmxvYXRhcnJheV9sZW5ndGgiLCJtYXhfc3RyaW5nX2xlbmd0aCIsImlvX2J1ZmZlcl9zaXplIiwic2V0X3NpZ25hbCIsInNpZ19udW0iLCJzaWdfYmVoIiwic2lnbmFsX3RvX3N0cmluZyIsInMiLCJzaWduYWxfb2ZfaW50IiwiaSIsInNpZ25hbF90b19pbnQiLCJCcmVhayIsImNhdGNoX2JyZWFrIiwib24iLCJNYWtlIiwiSW1tZWRpYXRlIiwiTm9uX2ltbWVkaWF0ZSIsIlN0ZGxpYl9TeXMiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDLGtCQ21Dc0I7QUFBQSxJQUFBQyxVQUNBO0FBQUEsSUFBQUMsT0FBWTtBQUFBLElBQUFDLFFBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyx3QkFBQTtBQUFBLElBQUFDLG9CQUFBO0FBQUEsSUFBQUMsaUJBaUNiO0FBQUEsWUFBQUMsV0FBQUMsU0FBQUMsU0FjMEM7QUFBQSxZQUFBQyxpQkFBQUM7QUFBQUEsSUFrQzdELGFBQW9CO0FBQUEsSUFDZixhQUFvQjtBQUFBLElBQ3BCLGFBQW1CO0FBQUEsSUFDbkIsYUFBbUI7QUFBQSxJQUNuQixhQUFtQjtBQUFBLElBQ25CLGFBQW1CO0FBQUEsSUFDbkIsYUFBb0I7QUFBQSxJQUNwQixhQUFvQjtBQUFBLElBQ3BCLGFBQW9CO0FBQUEsSUFDcEIsY0FBb0I7QUFBQSxJQUNwQixjQUFvQjtBQUFBLElBQ3BCLGNBQW9CO0FBQUEsSUFDcEIsY0FBb0I7QUFBQSxJQUNwQixjQUFvQjtBQUFBLElBQ3BCLGNBQW9CO0FBQUEsSUFDcEIsY0FBb0I7QUFBQSxJQUNwQixjQUFvQjtBQUFBLElBQ3BCLGNBQW9CO0FBQUEsSUFDcEIsY0FBb0I7QUFBQSxJQUNwQixjQUFzQjtBQUFBLElBQ3RCLGNBQW9CO0FBQUEsSUFDcEIsY0FBbUI7QUFBQSxJQUNuQixjQUFvQjtBQUFBLElBQ3BCLGNBQW1CO0FBQUEsSUFDbkIsY0FBb0I7QUFBQSxJQUNwQixjQUFtQjtBQUFBLElBQ25CLGNBQW9CO0FBQUEsSUFDcEIsY0FBb0I7QUFBQSxJQUNwQixjQUFrQjtBQUFBLElBQ2xCLGNBQXFCO0FBQUEsSUFDckIsWUFBcUIsbURBQ1M7QUFBQSxZQUFyQjtBQUFBLElBQXFCO0FBQUE7QUFBQSxZQUFBQyxjQUFBQztBQUFBQSxJQVFuQztBQUFBLGNBQ0s7QUFBQSxjQURTLHlDQUNrQjtBQUFBO0FBQUEsWUFBQUMsY0FBQUQ7QUFBQUEsSUFHaEM7QUFBQSxjQUFxQjtBQUFBLGNBQ2hCLHlDQUF1QjtBQUFBO0FBQUEsT0FBQUUsUUE1RlE7QUFBQSxZQUFBQyxZQUFBQyxJQWlHcEMsaUJBR2tDO0FBQUEsWUFBQUMsS0FBQUMsV0FBQUMsZUFzRDVCO0FBQUE7QUFBQSxJQUFBQztBQUFBQSxNQTFKOEI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRURyRXRDIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MTAzMTksImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9vYmoubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE9wZXJhdGlvbnMgb24gaW50ZXJuYWwgcmVwcmVzZW50YXRpb25zIG9mIHZhbHVlcyAqKVxuXG50eXBlIHRcblxudHlwZSByYXdfZGF0YSA9IG5hdGl2ZWludFxuXG5leHRlcm5hbCByZXByIDogJ2EgLT4gdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIG9iaiA6IHQgLT4gJ2EgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBtYWdpYyA6ICdhIC0+ICdiID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgaXNfaW50IDogdCAtPiBib29sID0gXCIlb2JqX2lzX2ludFwiXG5sZXQgW0BpbmxpbmUgYWx3YXlzXSBpc19ibG9jayBhID0gbm90IChpc19pbnQgYSlcbmV4dGVybmFsIHRhZyA6IHQgLT4gaW50ID0gXCJjYW1sX29ial90YWdcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2l6ZSA6IHQgLT4gaW50ID0gXCIlb2JqX3NpemVcIlxuZXh0ZXJuYWwgcmVhY2hhYmxlX3dvcmRzIDogdCAtPiBpbnQgPSBcImNhbWxfb2JqX3JlYWNoYWJsZV93b3Jkc1wiXG5leHRlcm5hbCBmaWVsZCA6IHQgLT4gaW50IC0+IHQgPSBcIiVvYmpfZmllbGRcIlxuZXh0ZXJuYWwgc2V0X2ZpZWxkIDogdCAtPiBpbnQgLT4gdCAtPiB1bml0ID0gXCIlb2JqX3NldF9maWVsZFwiXG5leHRlcm5hbCBmbG9hdGFycmF5X2dldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0ID0gXCJjYW1sX2Zsb2F0YXJyYXlfZ2V0XCJcbmV4dGVybmFsIGZsb2F0YXJyYXlfc2V0IDpcbiAgICBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCAtPiB1bml0ID0gXCJjYW1sX2Zsb2F0YXJyYXlfc2V0XCJcbmxldCBbQGlubGluZSBhbHdheXNdIGRvdWJsZV9maWVsZCB4IGkgPSBmbG9hdGFycmF5X2dldCAob2JqIHggOiBmbG9hdGFycmF5KSBpXG5sZXQgW0BpbmxpbmUgYWx3YXlzXSBzZXRfZG91YmxlX2ZpZWxkIHggaSB2ID1cbiAgZmxvYXRhcnJheV9zZXQgKG9iaiB4IDogZmxvYXRhcnJheSkgaSB2XG5leHRlcm5hbCByYXdfZmllbGQgOiB0IC0+IGludCAtPiByYXdfZGF0YSA9IFwiY2FtbF9vYmpfcmF3X2ZpZWxkXCJcbmV4dGVybmFsIHNldF9yYXdfZmllbGQgOiB0IC0+IGludCAtPiByYXdfZGF0YSAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9vYmpfc2V0X3Jhd19maWVsZFwiXG5cbmV4dGVybmFsIG5ld19ibG9jayA6IGludCAtPiBpbnQgLT4gdCA9IFwiY2FtbF9vYmpfYmxvY2tcIlxuZXh0ZXJuYWwgZHVwIDogdCAtPiB0ID0gXCJjYW1sX29ial9kdXBcIlxuZXh0ZXJuYWwgYWRkX29mZnNldCA6IHQgLT4gSW50MzIudCAtPiB0ID0gXCJjYW1sX29ial9hZGRfb2Zmc2V0XCJcbmV4dGVybmFsIHdpdGhfdGFnIDogaW50IC0+IHQgLT4gdCA9IFwiY2FtbF9vYmpfd2l0aF90YWdcIlxuXG5sZXQgZmlyc3Rfbm9uX2NvbnN0YW50X2NvbnN0cnVjdG9yX3RhZyA9IDBcbmxldCBsYXN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3Rvcl90YWcgPSAyNDNcblxubGV0IGZvcmNpbmdfdGFnID0gMjQ0XG5sZXQgY29udF90YWcgPSAyNDVcbmxldCBsYXp5X3RhZyA9IDI0NlxubGV0IGNsb3N1cmVfdGFnID0gMjQ3XG5sZXQgb2JqZWN0X3RhZyA9IDI0OFxubGV0IGluZml4X3RhZyA9IDI0OVxubGV0IGZvcndhcmRfdGFnID0gMjUwXG5cbmxldCBub19zY2FuX3RhZyA9IDI1MVxuXG5sZXQgYWJzdHJhY3RfdGFnID0gMjUxXG5sZXQgc3RyaW5nX3RhZyA9IDI1MlxubGV0IGRvdWJsZV90YWcgPSAyNTNcbmxldCBkb3VibGVfYXJyYXlfdGFnID0gMjU0XG5sZXQgY3VzdG9tX3RhZyA9IDI1NVxuXG5cbmxldCBpbnRfdGFnID0gMTAwMFxubGV0IG91dF9vZl9oZWFwX3RhZyA9IDEwMDFcbmxldCB1bmFsaWduZWRfdGFnID0gMTAwMlxuXG5tb2R1bGUgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbnN0cnVjdFxuICB0eXBlIHQgPSBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgbGV0IG9mX3ZhbCB4ID1cbiAgICBsZXQgeCA9IHJlcHIgeCBpblxuICAgIGxldCBzbG90ID1cbiAgICAgIGlmIChpc19ibG9jayB4KSAmJiAodGFnIHgpIDw+IG9iamVjdF90YWcgJiYgKHNpemUgeCkgPj0gMSB0aGVuIGZpZWxkIHggMFxuICAgICAgZWxzZSB4XG4gICAgaW5cbiAgICBsZXQgbmFtZSA9XG4gICAgICBpZiAoaXNfYmxvY2sgc2xvdCkgJiYgKHRhZyBzbG90KSA9IG9iamVjdF90YWcgdGhlbiBmaWVsZCBzbG90IDBcbiAgICAgIGVsc2UgaW52YWxpZF9hcmcgXCJPYmouZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXCJcbiAgICBpblxuICAgICAgaWYgKHRhZyBuYW1lKSA9IHN0cmluZ190YWcgdGhlbiAob2JqIHNsb3QgOiB0KVxuICAgICAgZWxzZSBpbnZhbGlkX2FyZyBcIk9iai5leHRlbnNpb25fY29uc3RydWN0b3JcIlxuXG4gIGxldCBbQGlubGluZSBhbHdheXNdIG5hbWUgKHNsb3QgOiB0KSA9XG4gICAgKG9iaiAoZmllbGQgKHJlcHIgc2xvdCkgMCkgOiBzdHJpbmcpXG5cbiAgbGV0IFtAaW5saW5lIGFsd2F5c10gaWQgKHNsb3QgOiB0KSA9XG4gICAgKG9iaiAoZmllbGQgKHJlcHIgc2xvdCkgMSkgOiBpbnQpXG5lbmRcblxubW9kdWxlIEVwaGVtZXJvbiA9IHN0cnVjdFxuICB0eXBlIG9ial90ID0gdFxuXG4gIHR5cGUgdCAoKiogZXBoZW1lcm9uICopXG5cbiAgICgqKiBUbyBjaGFuZ2UgaW4gc3luYyB3aXRoIHdlYWsuaCAqKVxuICBsZXQgYWRkaXRpb25hbF92YWx1ZXMgPSAyXG4gIGxldCBtYXhfZXBoZV9sZW5ndGggPSBTeXMubWF4X2FycmF5X2xlbmd0aCAtIGFkZGl0aW9uYWxfdmFsdWVzXG5cbiAgZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IHQgPSBcImNhbWxfZXBoZV9jcmVhdGVcIlxuICBsZXQgY3JlYXRlIGwgPVxuICAgIGlmIG5vdCAoMCA8PSBsICYmIGwgPD0gbWF4X2VwaGVfbGVuZ3RoKSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIk9iai5FcGhlbWVyb24uY3JlYXRlXCI7XG4gICAgY3JlYXRlIGxcblxuICBsZXQgbGVuZ3RoIHggPSBzaXplKHJlcHIgeCkgLSBhZGRpdGlvbmFsX3ZhbHVlc1xuXG4gIGxldCByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gbXNnID1cbiAgICBpZiBub3QgKDAgPD0gbyAmJiBvIDwgbGVuZ3RoIGUpIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIG1zZ1xuXG4gIGV4dGVybmFsIGdldF9rZXk6IHQgLT4gaW50IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9rZXlcIlxuICBsZXQgZ2V0X2tleSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uZ2V0X2tleVwiO1xuICAgIGdldF9rZXkgZSBvXG5cbiAgZXh0ZXJuYWwgZ2V0X2tleV9jb3B5OiB0IC0+IGludCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfa2V5X2NvcHlcIlxuICBsZXQgZ2V0X2tleV9jb3B5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5nZXRfa2V5X2NvcHlcIjtcbiAgICBnZXRfa2V5X2NvcHkgZSBvXG5cbiAgZXh0ZXJuYWwgc2V0X2tleTogdCAtPiBpbnQgLT4gb2JqX3QgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3NldF9rZXlcIlxuICBsZXQgc2V0X2tleSBlIG8geCA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5zZXRfa2V5XCI7XG4gICAgc2V0X2tleSBlIG8geFxuXG4gIGV4dGVybmFsIHVuc2V0X2tleTogdCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3Vuc2V0X2tleVwiXG4gIGxldCB1bnNldF9rZXkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLnVuc2V0X2tleVwiO1xuICAgIHVuc2V0X2tleSBlIG9cblxuICBleHRlcm5hbCBjaGVja19rZXk6IHQgLT4gaW50IC0+IGJvb2wgPSBcImNhbWxfZXBoZV9jaGVja19rZXlcIlxuICBsZXQgY2hlY2tfa2V5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5jaGVja19rZXlcIjtcbiAgICBjaGVja19rZXkgZSBvXG5cbiAgZXh0ZXJuYWwgYmxpdF9rZXkgOiB0IC0+IGludCAtPiB0IC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgID0gXCJjYW1sX2VwaGVfYmxpdF9rZXlcIlxuXG4gIGxldCBibGl0X2tleSBlMSBvMSBlMiBvMiBsID1cbiAgICBpZiBsIDwgMCB8fCBvMSA8IDAgfHwgbzEgPiBsZW5ndGggZTEgLSBsXG4gICAgICAgfHwgbzIgPCAwIHx8IG8yID4gbGVuZ3RoIGUyIC0gbFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJPYmouRXBoZW1lcm9uLmJsaXRfa2V5XCJcbiAgICBlbHNlIGlmIGwgPD4gMCB0aGVuIGJsaXRfa2V5IGUxIG8xIGUyIG8yIGxcblxuICBleHRlcm5hbCBnZXRfZGF0YTogdCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfZGF0YVwiXG4gIGV4dGVybmFsIGdldF9kYXRhX2NvcHk6IHQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2RhdGFfY29weVwiXG4gIGV4dGVybmFsIHNldF9kYXRhOiB0IC0+IG9ial90IC0+IHVuaXQgPSBcImNhbWxfZXBoZV9zZXRfZGF0YVwiXG4gIGV4dGVybmFsIHVuc2V0X2RhdGE6IHQgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3Vuc2V0X2RhdGFcIlxuICBleHRlcm5hbCBjaGVja19kYXRhOiB0IC0+IGJvb2wgPSBcImNhbWxfZXBoZV9jaGVja19kYXRhXCJcbiAgZXh0ZXJuYWwgYmxpdF9kYXRhIDogdCAtPiB0IC0+IHVuaXQgPSBcImNhbWxfZXBoZV9ibGl0X2RhdGFcIlxuXG5lbmRcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jaGVja19ib3VuZCIsImNhbWxfb2JqX3RhZyIsImdsb2JhbF9kYXRhIiwiU3RkbGliIiwiU3RkbGliX1N5cyIsImlzX2Jsb2NrIiwiYSIsImRvdWJsZV9maWVsZCIsIngiLCJpIiwic2V0X2RvdWJsZV9maWVsZCIsInYiLCJvZl92YWwiLCJzbG90IiwiY3N0X09ial9leHRlbnNpb25fY29uc3RydWN0b3IiLCJuYW1lIiwiaWQiLCJtYXhfZXBoZV9sZW5ndGgiLCJjcmVhdGUiLCJsIiwibGVuZ3RoIiwicmFpc2VfaWZfaW52YWxpZF9vZmZzZXQiLCJlIiwibyIsIm1zZyIsImdldF9rZXkiLCJnZXRfa2V5X2NvcHkiLCJzZXRfa2V5IiwidW5zZXRfa2V5IiwiY2hlY2tfa2V5IiwiYmxpdF9rZXkiLCJlMSIsIm8xIiwiZTIiLCJvMiIsIlN0ZGxpYl9PYmoiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsWUFBQUMsU0FBQUMsR0N5QmtDLG1DQUFjO0FBQUEsWUFBQUMsYUFBQUMsR0FBQUMsR0FTUixvQ0FBcUM7QUFBQSxZQUFBQyxpQkFBQUYsR0FBQUMsR0FBQUU7QUFBQUEsSUFFM0U7QUFBQSxJQUF1QztBQUFBO0FBQUEsWUFBQUMsT0FBQUo7QUFBQUE7QUFBQUEsS0FBQUs7QUFBQUEsT0F3Q2hDO0FBQUEsVUFBZ0I7QUFBQTtBQUFBLEtBQUFDLGdDRDVFekI7QUFBQTtBQUFBO0FBQUEsS0NnRlMscUJBQW1CLGdDQUFBQyxPQUF5QztBQUFBLFNBQUFBLE9BQzFEO0FBQUE7QUFBQSxJQUVGO0FBQUE7QUFBQSxjQUNFLG1EQUF1QztBQUFBO0FBQUEsWUFBQUEsS0FBQUYsTUFHcEI7QUFBQSxZQUFBRyxHQUFBSCxNQUdBO0FBQUEsT0FBQUksa0JEMUY5QjtBQUFBLFlBQUFDLE9BQUFDO0FBQUFBLFFBQUEsSUN3R0k7QUFBQSxjQUNFO0FBQUEsSUFDRixrQ0FBUTtBQUFBO0FBQUEsWUFBQUMsT0FBQVosR0FFSyx3QkFBZ0M7QUFBQSxZQUFBYSx3QkFBQUMsR0FBQUMsR0FBQUM7QUFBQUEsUUFBQSxJQUc3QyxvQkFBc0IsbUJBQXRCO0FBQUEsZUFDRSw2QkFBZTtBQUFBO0FBQUEsWUFBQUMsUUFBQUgsR0FBQUM7QUFBQUEsSUFJakI7QUFBQSxJQUNBLHNDQUFXO0FBQUE7QUFBQSxZQUFBRyxhQUFBSixHQUFBQztBQUFBQSxJQUlYO0FBQUEsSUFDQSwyQ0FBZ0I7QUFBQTtBQUFBLFlBQUFJLFFBQUFMLEdBQUFDLEdBQUFmO0FBQUFBLElBSWhCO0FBQUEsSUFDQSx5Q0FBYTtBQUFBO0FBQUEsWUFBQW9CLFVBQUFOLEdBQUFDO0FBQUFBLElBSWI7QUFBQSxJQUNBLHdDQUFhO0FBQUE7QUFBQSxZQUFBTSxVQUFBUCxHQUFBQztBQUFBQSxJQUliO0FBQUEsSUFDQSx3Q0FBYTtBQUFBO0FBQUEsWUFBQU8sU0FBQUMsSUFBQUMsSUFBQUMsSUFBQUMsSUFBQWY7QUFBQUEsSUFNYjtBQUFBO0FBQUE7QUFBQTtBQUFBLFdBQTJCLHlDQUNOO0FBQUE7QUFBQSxVQUVoQjtBQUFBLGNBQWU7QUFBQSxLQUFmO0FBQUE7QUFBQSxJQURBLHFEQUNxQztBQUFBO0FBQUE7QUFBQSxJQUFBZ0I7QUFBQUEsTURsSjlDIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MTA0NDUsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9hdG9taWMubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgU3RlcGhlbiBEb2xhbiwgVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2UgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3LTIwMTggVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2UuICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4dGVybmFsIGlnbm9yZSA6ICdhIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG5tb2R1bGUgTG9jID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIGF0b21pY19sb2NcblxuICBleHRlcm5hbCBnZXQgOiAnYSB0IC0+ICdhID0gXCIlYXRvbWljX2xvYWRfbG9jXCJcbiAgZXh0ZXJuYWwgZXhjaGFuZ2UgOiAnYSB0IC0+ICdhIC0+ICdhID0gXCIlYXRvbWljX2V4Y2hhbmdlX2xvY1wiXG4gIGV4dGVybmFsIGNvbXBhcmVfYW5kX3NldCA6ICdhIHQgLT4gJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWF0b21pY19jYXNfbG9jXCJcbiAgZXh0ZXJuYWwgZmV0Y2hfYW5kX2FkZCA6IGludCB0IC0+IGludCAtPiBpbnQgPSBcIiVhdG9taWNfZmV0Y2hfYWRkX2xvY1wiXG5cbiAgbGV0IHNldCB0IHYgPVxuICAgIGlnbm9yZSAoZXhjaGFuZ2UgdCB2KVxuICBsZXQgaW5jciB0ID1cbiAgICBpZ25vcmUgKGZldGNoX2FuZF9hZGQgdCAxKVxuICBsZXQgZGVjciB0ID1cbiAgICBpZ25vcmUgKGZldGNoX2FuZF9hZGQgdCAoLTEpKVxuZW5kXG5cbnR5cGUgISdhIHQgPVxuICB7IG11dGFibGUgY29udGVudHM6ICdhIFtAYXRvbWljXTtcbiAgfVxuXG5sZXQgbWFrZSB2ID1cbiAgeyBjb250ZW50cyA9IHYgfVxuXG5leHRlcm5hbCBtYWtlX2NvbnRlbmRlZCA6ICdhIC0+ICdhIHQgPSBcImNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkXCJcblxubGV0IGdldCB0ID1cbiAgdC5jb250ZW50c1xubGV0IHNldCB0IHYgPVxuICB0LmNvbnRlbnRzIDwtIHZcblxubGV0IGV4Y2hhbmdlIHQgdiA9XG4gIExvYy5leGNoYW5nZSBbJWF0b21pYy5sb2MgdC5jb250ZW50c10gdlxubGV0IGNvbXBhcmVfYW5kX3NldCB0IG9sZCBuZXdfID1cbiAgTG9jLmNvbXBhcmVfYW5kX3NldCBbJWF0b21pYy5sb2MgdC5jb250ZW50c10gb2xkIG5ld19cbmxldCBmZXRjaF9hbmRfYWRkIHQgaW5jciA9XG4gIExvYy5mZXRjaF9hbmRfYWRkIFslYXRvbWljLmxvYyB0LmNvbnRlbnRzXSBpbmNyXG5sZXQgaW5jciB0ID1cbiAgTG9jLmluY3IgWyVhdG9taWMubG9jIHQuY29udGVudHNdXG5sZXQgZGVjciB0ID1cbiAgTG9jLmRlY3IgWyVhdG9taWMubG9jIHQuY29udGVudHNdXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfYXRvbWljX2V4Y2hhbmdlX2ZpZWxkIiwiY2FtbF9hdG9taWNfZmV0Y2hfYWRkX2ZpZWxkIiwic2V0IiwidCIsInYiLCJpbmNyIiwiZGVjciIsIm1ha2UiLCJnZXQiLCJleGNoYW5nZSIsImNvbXBhcmVfYW5kX3NldCIsIm9sZCIsIm5ldyQiLCJmZXRjaF9hbmRfYWRkIiwiU3RkbGliX0F0b21pYyJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyw2QkFBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsWUFBQUMsSUFBQUMsR0FBQUMsR0N5Qkksb0RBQXFCO0FBQUEsWUFBQUMsS0FBQUYsR0FFckIscURBQTBCO0FBQUEsWUFBQUcsS0FBQUgsR0FFMUIsc0RBQTZCO0FBQUEsWUFBQUksS0FBQUgsR0FRL0IsY0FBZ0I7QUFBQSxZQUFBSSxJQUFBTCxHQUtoQixZQUFVO0FBQUEsWUFBQUQsTUFBQUMsR0FBQUMsR0FFViw4Q0FBZTtBQUFBLFlBQUFLLFNBQUFOLEdBQUFDLEdBR2YsMENBQXVDO0FBQUEsWUFBQU0sZ0JBQUFQLEdBQUFRLEtBQUFDO0FBQUFBLElBRXZDLHFEQUFxRDtBQUFBO0FBQUEsWUFBQUMsY0FBQVYsR0FBQUU7QUFBQUEsSUFFckQsOENBQStDO0FBQUE7QUFBQSxZQUFBQSxPQUFBRixHQUUvQyxzQkFBaUM7QUFBQSxZQUFBRyxPQUFBSCxHQUVqQyxzQkFBaUM7QUFBQTtBQUFBLElBQUFXO0FBQUFBLE1EdkRuQyIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjEwNDg3LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvY2FtbGludGVybmFsTGF6eS5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogSW50ZXJuYWxzIG9mIGZvcmNpbmcgbGF6eSB2YWx1ZXMuICopXG5cbnR5cGUgJ2EgdCA9ICdhIGxhenlfdFxuXG5leGNlcHRpb24gVW5kZWZpbmVkXG5cbigqIFt1cGRhdGVfdG9fZm9yY2luZyBibGtdIHRyaWVzIHRvIHVwZGF0ZSBhIFtibGtdIHdpdGggW2xhenlfdGFnXSB0b1xuICAgW2ZvcmNpbmdfdGFnXSB1c2luZyBjb21wYXJlLWFuZC1zd2FwIChDQVMpLCB0YWtpbmcgY2FyZSB0byBoYW5kbGUgY29uY3VycmVudFxuICAgbWFya2luZyBvZiB0aGUgaGVhZGVyIHdvcmQgYnkgYSBjb25jdXJyZW50IEdDIHRocmVhZC4gUmV0dXJucyBbMF0gaWYgdGhlXG4gICBDQVMgaXMgc3VjY2Vzc2Z1bC4gSWYgdGhlIENBUyBmYWlscywgdGhlbiB0aGUgdGFnIHdhcyBvYnNlcnZlZCB0byBiZVxuICAgc29tZXRoaW5nIG90aGVyIHRoYW4gW2xhenlfdGFnXSBkdWUgdG8gYSBjb25jdXJyZW50IG11dGF0b3IuIEluIHRoaXMgY2FzZSxcbiAgIHRoZSBmdW5jdGlvbiByZXR1cm5zIFsxXS4gKilcbmV4dGVybmFsIHVwZGF0ZV90b19mb3JjaW5nIDogT2JqLnQgLT4gaW50ID1cbiAgXCJjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcmNpbmdcIiBbQEBub2FsbG9jXVxuXG4oKiBbcmVzZXRfdG9fbGF6eSBibGtdIGV4cGVjdHMgW2Jsa10gdG8gYmUgYSBsYXp5IG9iamVjdCB3aXRoIFtPYmouZm9yY2luZ190YWddXG4gICBhbmQgdXBkYXRlcyB0aGUgdGFnIHRvIFtPYmoubGF6eV90YWddLCB0YWtpbmcgY2FyZSB0byBoYW5kbGUgY29uY3VycmVudFxuICAgbWFya2luZyBvZiB0aGlzIG9iamVjdCdzIGhlYWRlciBieSBhIGNvbmN1cnJlbnQgR0MgdGhyZWFkLiAqKVxuZXh0ZXJuYWwgcmVzZXRfdG9fbGF6eSA6IE9iai50IC0+IHVuaXQgPSBcImNhbWxfbGF6eV9yZXNldF90b19sYXp5XCIgW0BAbm9hbGxvY11cblxuKCogW3VwZGF0ZV90b19mb3J3YXJkIGJsa10gZXhwZWN0cyBbYmxrXSB0byBiZSBhIGxhenkgb2JqZWN0IHdpdGhcbiAgIFtPYmouZm9yY2luZ190YWddIGFuZCB1cGRhdGVzIHRoZSB0YWcgdG8gW09iai5mb3J3YXJkX3RhZ10sIHRha2luZyBjYXJlIHRvXG4gICBoYW5kbGUgY29uY3VycmVudCBtYXJraW5nIG9mIHRoaXMgb2JqZWN0J3MgaGVhZGVyIGJ5IGEgY29uY3VycmVudCBHQyB0aHJlYWQuXG4gKilcbmV4dGVybmFsIHVwZGF0ZV90b19mb3J3YXJkIDogT2JqLnQgLT4gdW5pdCA9XG4gIFwiY2FtbF9sYXp5X3VwZGF0ZV90b19mb3J3YXJkXCIgW0BAbm9hbGxvY11cblxuKCogQXNzdW1lcyBbYmxrXSBpcyBhIGJsb2NrIHdpdGggdGFnIGZvcmNpbmcgKilcbmxldCBkb19mb3JjZV9ibG9jayBibGsgPVxuICBsZXQgYiA9IE9iai5yZXByIGJsayBpblxuICBsZXQgY2xvc3VyZSA9IChPYmoub2JqIChPYmouZmllbGQgYiAwKSA6IHVuaXQgLT4gJ2FyZykgaW5cbiAgT2JqLnNldF9maWVsZCBiIDAgKE9iai5yZXByICgpKTsgKCogUmVsZWFzZSB0aGUgY2xvc3VyZSAqKVxuICB0cnlcbiAgICBsZXQgcmVzdWx0ID0gY2xvc3VyZSAoKSBpblxuICAgIE9iai5zZXRfZmllbGQgYiAwIChPYmoucmVwciByZXN1bHQpO1xuICAgIHVwZGF0ZV90b19mb3J3YXJkIGI7XG4gICAgcmVzdWx0XG4gIHdpdGggZSAtPlxuICAgIE9iai5zZXRfZmllbGQgYiAwIChPYmoucmVwciAoZnVuICgpIC0+IHJhaXNlIGUpKTtcbiAgICByZXNldF90b19sYXp5IGI7XG4gICAgcmFpc2UgZVxuXG4oKiBBc3N1bWVzIFtibGtdIGlzIGEgYmxvY2sgd2l0aCB0YWcgZm9yY2luZyAqKVxubGV0IGRvX2ZvcmNlX3ZhbF9ibG9jayBibGsgPVxuICBsZXQgYiA9IE9iai5yZXByIGJsayBpblxuICBsZXQgY2xvc3VyZSA9IChPYmoub2JqIChPYmouZmllbGQgYiAwKSA6IHVuaXQgLT4gJ2FyZykgaW5cbiAgT2JqLnNldF9maWVsZCBiIDAgKE9iai5yZXByICgpKTsgKCogUmVsZWFzZSB0aGUgY2xvc3VyZSAqKVxuICBsZXQgcmVzdWx0ID0gY2xvc3VyZSAoKSBpblxuICBPYmouc2V0X2ZpZWxkIGIgMCAoT2JqLnJlcHIgcmVzdWx0KTtcbiAgdXBkYXRlX3RvX2ZvcndhcmQgYjtcbiAgcmVzdWx0XG5cbigqIENhbGxlZCBieSBbZm9yY2VfZ2VuXSAqKVxubGV0IGZvcmNlX2dlbl9sYXp5X2Jsb2NrIH5vbmx5X3ZhbCAoYmxrIDogJ2FyZyBsYXp5X3QpID1cbiAgKCogV2UgZXhwZWN0IHRoZSB0YWcgdG8gYmUgW2xhenlfdGFnXSwgYnV0IG1heSBiZSBvdGhlciB0YWdzIGR1ZSB0b1xuICAgICBjb25jdXJyZW50IGZvcmNpbmcgb2YgbGF6eSB2YWx1ZXMuICopXG4gIG1hdGNoIHVwZGF0ZV90b19mb3JjaW5nIChPYmoucmVwciBibGspIHdpdGhcbiAgfCAwIHdoZW4gb25seV92YWwgLT4gZG9fZm9yY2VfdmFsX2Jsb2NrIGJsa1xuICB8IDAgLT4gZG9fZm9yY2VfYmxvY2sgYmxrXG4gIHwgXyAtPiByYWlzZSBVbmRlZmluZWRcblxuKCogdXNlZCBpbiB0aGUgJWxhenlfZm9yY2UgcHJpbWl0aXZlICopXG5sZXQgZm9yY2VfbGF6eV9ibG9jayBibGsgPSBmb3JjZV9nZW5fbGF6eV9ibG9jayB+b25seV92YWw6ZmFsc2UgYmxrXG5cbigqIFtmb3JjZV9nZW4gfm9ubHlfdmFsOmZhbHNlXSBpcyBub3QgdXNlZCwgc2luY2UgW0xhenkuZm9yY2VdIGlzXG4gICBkZWNsYXJlZCBhcyBhIHByaW1pdGl2ZSB3aG9zZSBjb2RlIGlubGluZXMgdGhlIHRhZyB0ZXN0cyBvZiBpdHNcbiAgIGFyZ3VtZW50LCBleGNlcHQgd2hlbiBhZmwgaW5zdHJ1bWVudGF0aW9uIGlzIHR1cm5lZCBvbi4gKilcbmxldCBmb3JjZV9nZW4gfm9ubHlfdmFsIChsenYgOiAnYXJnIGxhenlfdCkgPVxuICAoKiBVc2luZyBbU3lzLm9wYXF1ZV9pZGVudGl0eV0gcHJldmVudHMgdHdvIHBvdGVudGlhbCBwcm9ibGVtczpcbiAgICAgLSBJZiB0aGUgdmFsdWUgaXMga25vd24gdG8gaGF2ZSBGb3J3YXJkX3RhZywgdGhlbiBpdCBjb3VsZCBoYXZlIGJlZW5cbiAgICAgICBzaG9ydGN1dCBkdXJpbmcgR0MsIHNvIHRoYXQgaW5mb3JtYXRpb24gbXVzdCBiZSBmb3Jnb3R0ZW4gKHNlZSBHUFIjNzEzXG4gICAgICAgYW5kIGlzc3VlICM3MzAxKS4gVGhpcyBpcyBub3QgYW4gaXNzdWUgaGVyZSBhdCB0aGUgbW9tZW50IHNpbmNlXG4gICAgICAgW09iai50YWddIGlzIG5vdCBzaW1wbGlmaWVkIGJ5IHRoZSBjb21waWxlciwgYW5kIEdQUiM3MTMgYWxzb1xuICAgICAgIGVuc3VyZXMgdGhhdCBubyB2YWx1ZSB3aWxsIGJlIGtub3duIHRvIGhhdmUgRm9yd2FyZF90YWcuXG4gICAgIC0gSWYgdGhlIHZhbHVlIGlzIGtub3duIHRvIGJlIGltbXV0YWJsZSwgdGhlbiBpZiB0aGUgY29tcGlsZXJcbiAgICAgICBjYW5ub3QgcHJvdmUgdGhhdCB0aGUgbGFzdCBicmFuY2ggaXMgbm90IHRha2VuIGl0IHdpbGwgaXNzdWUgYVxuICAgICAgIHdhcm5pbmcgNTkgKG1vZGlmaWNhdGlvbiBvZiBhbiBpbW11dGFibGUgdmFsdWUpICopXG4gIGxldCBsenYgPSBTeXMub3BhcXVlX2lkZW50aXR5IGx6diBpblxuICBsZXQgeCA9IE9iai5yZXByIGx6diBpblxuICAoKiBTVEFSVCBubyBzYWZlIHBvaW50cy4gSWYgYSBHQyBvY2N1cnMgaGVyZSwgdGhlbiB0aGUgb2JqZWN0IFt4XSBtYXkgYmVcbiAgICAgc2hvcnQtY2lyY3VpdGVkLCBhbmQgZ2V0dGluZyB0aGUgZmlyc3QgZmllbGQgb2YgW3hdIHdvdWxkIGdldCB1cyB0aGUgd3JvbmdcbiAgICAgdmFsdWUuIEx1Y2tpbHksIHRoZSBjb21waWxlciBkb2VzIG5vdCBpbnNlcnQgR0Mgc2FmZSBwb2ludHMgYXQgdGhpcyBwbGFjZSxcbiAgICAgc28gaXQgaXMgb2suICopXG4gIGxldCB0ID0gT2JqLnRhZyB4IGluXG4gIGlmIHQgPSBPYmouZm9yd2FyZF90YWcgdGhlblxuICAgIChPYmoub2JqIChPYmouZmllbGQgeCAwKSA6ICdhcmcpXG4gICgqIEVORCBubyBzYWZlIHBvaW50cyAqKVxuICBlbHNlIGlmIHQgPSBPYmouZm9yY2luZ190YWcgdGhlbiByYWlzZSBVbmRlZmluZWRcbiAgZWxzZSBpZiB0IDw+IE9iai5sYXp5X3RhZyB0aGVuIChPYmoub2JqIHggOiAnYXJnKVxuICBlbHNlIGZvcmNlX2dlbl9sYXp5X2Jsb2NrIH5vbmx5X3ZhbCBsenZcblxuKCogSWYgW2x6dl0gaXMgYWxyZWFkeSBmb3JjZWQsIHRoZW4gW2luZGlyZWN0IGx6dl0gaXMgW2x6dl0uXG4gICBPdGhlcndpc2UgaXQgcmV0dXJucyBhIGZyZXNoIHRodW5rIHRoYXQsIHdoZW4gZm9yY2VkLCB3aWxsIGZvcmNlIFtsenZdLlxuXG4gICBUaGlzIHByb3ZpZGVzIGEgd2F5IHRvIGNvcHkvbW92ZSBbbHp2XSB0aGF0IHdvcmtzIGNvcnJlY3RseSBldmVuIGlmXG4gICBbbHp2XSBpcyBiZWluZyBmb3JjZWQgY29uY3VycmVudGx5LlxuKilcbmxldCBpbmRpcmVjdCAobHp2IDogJ2FyZyBsYXp5X3QpID1cbiAgKCogU3lzLm9wYXF1ZV9pZGVudGl0eTogc2VlIFtmb3JjZV9nZW5dIGNvbW1lbnQgYWJvdmUuICopXG4gIGxldCBsenYgPSBTeXMub3BhcXVlX2lkZW50aXR5IGx6diBpblxuICBsZXQgeCA9IE9iai5yZXByIGx6diBpblxuICBsZXQgdCA9IE9iai50YWcgeCBpblxuICBpZiB0ID0gT2JqLmxhenlfdGFnIHx8IHQgPSBPYmouZm9yY2luZ190YWdcbiAgdGhlbiBsYXp5IChmb3JjZV9sYXp5X2Jsb2NrIGx6dilcbiAgZWxzZSBsenZcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9sYXp5X3VwZGF0ZV90b19mb3J3YXJkIiwiY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlIiwiY2FtbF9vYmpfdGFnIiwiY2FtbF93cmFwX2V4Y2VwdGlvbiIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJTdGRsaWJfT2JqIiwiVW5kZWZpbmVkIiwiZm9yY2VfZ2VuX2xhenlfYmxvY2siLCJvbmx5X3ZhbCIsImJsayIsImNsb3N1cmUiLCJyZXN1bHQiLCJlIiwicGFyYW0iLCJmb3JjZV9sYXp5X2Jsb2NrIiwiZm9yY2VfZ2VuIiwibHp2IiwidCIsImluZGlyZWN0Il0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsc0JBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUM7QUFBQUEsTUFBQTtBQUFBLFlBQUFDLHFCQUFBQyxVQUFBQztBQUFBQSxJQ3VFUTtBQUFBLEtBR0M7QUFBQSxJQUZFO0FBQUEsU0FBQUMsWUFaYztBQUFBLEtBQ3ZCO0FBQUEsU0FBQUMsV0FDYTtBQUFBLEtBQ2I7QUFBQSxLQUNBO0FBQUEsS0FBbUI7QUFBQTtBQUFBLFFBQUFELFVBbkJJO0FBQUEsSUFDdkI7QUFBQSxJQUErQjtBQUFBLFNBQUFDLFNBRWhCO0FBQUEsS0FDYjtBQUFBLEtBQ0E7QUFBQTtBQUFBO0FBQUEsVUFBQUM7QUFBQUEsU0FBQUEsSURsREo7QUFBQSxLQ3FESSxrQkFBQUMsT0FBdUMsd0NBQU87QUFBQSxLQUM5QztBQUFBLEtBQWU7QUFBQTtBQUFBLEdBb0JLO0FBQUEsWUFBQUMsaUJBQUFMLEtBR0csbUNBQXdDO0FBQUEsWUFBQU0sVUFBQVAsVUFBQVE7QUFBQUEsUUFBQUMsSUFxQnpEO0FBQUEsSUFDUix5QkFDMEI7QUFBQSxJQUVyQix3QkFBNEI7QUFBQSxJQUM1QixtQ0FDQSxtQ0FBa0M7QUFBQTtBQUFBLFlBQUFDLFNBQUFGO0FBQUFBLFFBQUFDLElBWS9CO0FBQUEsSUFDUiwrQ0FFSztBQUFBLElBREEseUJEdEhQLCtCQ3NITztBQUFBLEdBQ0c7QUFBQSxHRHZIViIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjEwNTUyLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvbGF6eS5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtMYXp5XTogZGVmZXJyZWQgY29tcHV0YXRpb25zICopXG5cblxuKCpcbiAgIFdBUk5JTkc6IHNvbWUgcHVycGxlIG1hZ2ljIGlzIGdvaW5nIG9uIGhlcmUuICBEbyBub3QgdGFrZSB0aGlzIGZpbGVcbiAgIGFzIGFuIGV4YW1wbGUgb2YgaG93IHRvIHByb2dyYW0gaW4gT0NhbWwuXG4qKVxuXG5cbigqIFdlIG1ha2UgdXNlIG9mIHR3byBzcGVjaWFsIHRhZ3MgcHJvdmlkZWQgYnkgdGhlIHJ1bnRpbWU6XG4gICBbbGF6eV90YWddIGFuZCBbZm9yd2FyZF90YWddLlxuXG4gICBBIHZhbHVlIG9mIHR5cGUgWydhIExhenkudF0gY2FuIGJlIG9uZSBvZiB0aHJlZSB0aGluZ3M6XG4gICAxLiBBIGJsb2NrIG9mIHNpemUgMSB3aXRoIHRhZyBbbGF6eV90YWddLiAgSXRzIGZpZWxkIGlzIGEgY2xvc3VyZSBvZlxuICAgICAgdHlwZSBbdW5pdCAtPiAnYV0gdGhhdCBjb21wdXRlcyB0aGUgdmFsdWUuXG4gICAyLiBBIGJsb2NrIG9mIHNpemUgMSB3aXRoIHRhZyBbZm9yd2FyZF90YWddLiAgSXRzIGZpZWxkIGlzIHRoZSB2YWx1ZVxuICAgICAgb2YgdHlwZSBbJ2FdIHRoYXQgd2FzIGNvbXB1dGVkLlxuICAgMy4gQW55dGhpbmcgZWxzZSBleGNlcHQgYSBmbG9hdC4gIFRoaXMgaGFzIHR5cGUgWydhXSBhbmQgaXMgdGhlIHZhbHVlXG4gICAgICB0aGF0IHdhcyBjb21wdXRlZC5cbiAgIEV4Y2VwdGlvbnMgYXJlIHN0b3JlZCBpbiBmb3JtYXQgKDEpLlxuICAgVGhlIEdDIHdpbGwgbWFnaWNhbGx5IGNoYW5nZSB0aGluZ3MgZnJvbSAoMikgdG8gKDMpIGFjY29yZGluZyB0byBpdHNcbiAgIGZhbmN5LlxuXG4gICBJZiBPQ2FtbCB3YXMgY29uZmlndXJlZCB3aXRoIHRoZSAtZmxhdC1mbG9hdC1hcnJheSBvcHRpb24gKHdoaWNoIGlzXG4gICBjdXJyZW50bHkgdGhlIGRlZmF1bHQpLCB0aGUgZm9sbG93aW5nIGlzIGFsc28gdHJ1ZTpcbiAgIFdlIGNhbm5vdCB1c2UgcmVwcmVzZW50YXRpb24gKDMpIGZvciBhIFtmbG9hdCBMYXp5LnRdIGJlY2F1c2VcbiAgIFtjYW1sX2FycmF5X21ha2VdIGFzc3VtZXMgdGhhdCBvbmx5IGEgW2Zsb2F0XSB2YWx1ZSBjYW4gaGF2ZSB0YWdcbiAgIFtEb3VibGVfdGFnXS5cblxuICAgV2UgaGF2ZSB0byB1c2UgdGhlIGJ1aWx0LWluIHR5cGUgY29uc3RydWN0b3IgW2xhenlfdF0gdG9cbiAgIGxldCB0aGUgY29tcGlsZXIgaW1wbGVtZW50IHRoZSBzcGVjaWFsIHR5cGluZyBhbmQgY29tcGlsYXRpb25cbiAgIHJ1bGVzIGZvciB0aGUgW2xhenldIGtleXdvcmQuXG4qKVxuXG50eXBlICdhIHQgPSAnYSBDYW1saW50ZXJuYWxMYXp5LnRcblxuZXhjZXB0aW9uIFVuZGVmaW5lZCA9IENhbWxpbnRlcm5hbExhenkuVW5kZWZpbmVkXG5leHRlcm5hbCBtYWtlX2ZvcndhcmQgOiAnYSAtPiAnYSBsYXp5X3QgPSBcImNhbWxfbGF6eV9tYWtlX2ZvcndhcmRcIlxuZXh0ZXJuYWwgZm9yY2UgOiAnYSB0IC0+ICdhID0gXCIlbGF6eV9mb3JjZVwiXG5cbmxldCBmb3JjZV92YWwgbCA9IENhbWxpbnRlcm5hbExhenkuZm9yY2VfZ2VuIH5vbmx5X3ZhbDp0cnVlIGxcblxubGV0IGZyb21fZnVuIChmIDogdW5pdCAtPiAnYXJnKSA9XG4gIGxldCB4ID0gT2JqLm5ld19ibG9jayBPYmoubGF6eV90YWcgMSBpblxuICBPYmouc2V0X2ZpZWxkIHggMCAoT2JqLnJlcHIgZik7XG4gIChPYmoub2JqIHggOiAnYXJnIHQpXG5cbmxldCBmcm9tX3ZhbCAodiA6ICdhcmcpID1cbiAgbGV0IHQgPSBPYmoudGFnIChPYmoucmVwciB2KSBpblxuICBpZiB0ID0gT2JqLmZvcndhcmRfdGFnIHx8IHQgPSBPYmoubGF6eV90YWcgfHxcbiAgICAgdCA9IE9iai5mb3JjaW5nX3RhZyB8fCB0ID0gT2JqLmRvdWJsZV90YWcgdGhlbiBiZWdpblxuICAgIG1ha2VfZm9yd2FyZCB2XG4gIGVuZCBlbHNlIGJlZ2luXG4gICAgKE9iai5tYWdpYyB2IDogJ2FyZyB0KVxuICBlbmRcblxubGV0IGlzX3ZhbCAobCA6ICdhcmcgdCkgPSBPYmoudGFnIChPYmoucmVwciBsKSA8PiBPYmoubGF6eV90YWdcblxubGV0IG1hcCBmIHggPVxuICBsYXp5IChmIChmb3JjZSB4KSlcblxubGV0IG1hcF92YWwgZiB4ID1cbiAgaWYgaXNfdmFsIHhcbiAgdGhlbiBmcm9tX3ZhbCAoZiAoZm9yY2UgeCkpXG4gIGVsc2UgbGF6eSAoZiAoZm9yY2UgeCkpXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfb2JqX3RhZyIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJnbG9iYWxfZGF0YSIsIkNhbWxpbnRlcm5hbExhenkiLCJTdGRsaWJfT2JqIiwiVW5kZWZpbmVkIiwiZm9yY2VfdmFsIiwibCIsImZyb21fZnVuIiwieCIsImZyb21fdmFsIiwidiIsInQiLCJpc192YWwiLCJtYXAiLCJwYXJhbSIsIm1hcF92YWwiXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBLHlCQUFBQyxlQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLFlBQUE7QUFBQSxZQUFBQyxVQUFBQyxHQ3VEa0IsMkNBQTJDO0FBQUEsWUFBQUMsU0FBQVI7QUFBQUEsUUFBQVMsSUFHbkQ7QUFBQSxJQUNSO0FBQUEsSUFBOEI7QUFBQSxHQUNWO0FBQUEsWUFBQUMsU0FBQUM7QUFBQUEsUUFBQUMsSUFHWjtBQUFBLElBQ1I7QUFBQTtBQUFBO0FBQUEsS0FJRztBQUFBLElBSCtDLHdDQUkvQztBQUFBO0FBQUEsWUFBQUMsT0FBQU47QUFBQUEsUUFBQSxJQUVxQjtBQUFBLHdDQUFvQjtBQUFBLEdBQWdCO0FBQUEsWUFBQU8sSUFBQWQsR0FBQVM7QUFBQUEsSUFHNUQ7QUFBQSxxQkFBQU07QUFBQUEsaUJBQUEsSUQxRUY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsY0MwRUU7QUFBQSxHQUFrQjtBQUFBLFlBQUFDLFFBQUFoQixHQUFBUztBQUFBQSxJQUdmO0FBQUEsS0FFRTtBQUFBLHNCQUFBTTtBQUFBQSxrQkFBQSxJRC9FUDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxlQytFTztBQUFBLFlBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQVMsT0FBYSxTQUFiLGlCQUNTO0FBQUE7QUFBQSxHRC9FekIiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjoxMDYzMywiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL3NlcS5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICBTaW1vbiBDcnVhbmVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtTZXFdOiBmdW5jdGlvbmFsIGl0ZXJhdG9ycyAqKVxuXG50eXBlICsnYSBub2RlID1cbiAgfCBOaWxcbiAgfCBDb25zIG9mICdhICogJ2EgdFxuXG5hbmQgJ2EgdCA9IHVuaXQgLT4gJ2Egbm9kZVxuXG5sZXQgZW1wdHkgKCkgPSBOaWxcblxubGV0IHJldHVybiB4ICgpID0gQ29ucyAoeCwgZW1wdHkpXG5cbmxldCBjb25zIHggbmV4dCAoKSA9IENvbnMgKHgsIG5leHQpXG5cbmxldCBzaW5nbGV0b24geCAoKSA9IENvbnMgKHgsIGVtcHR5KVxuXG5sZXQgcmVjIGFwcGVuZCBzZXExIHNlcTIgKCkgPVxuICBtYXRjaCBzZXExKCkgd2l0aFxuICB8IE5pbCAtPiBzZXEyKClcbiAgfCBDb25zICh4LCBuZXh0KSAtPiBDb25zICh4LCBhcHBlbmQgbmV4dCBzZXEyKVxuXG5sZXQgcmVjIG1hcCBmIHNlcSAoKSA9IG1hdGNoIHNlcSgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gQ29ucyAoZiB4LCBtYXAgZiBuZXh0KVxuXG5sZXQgcmVjIGZpbHRlcl9tYXAgZiBzZXEgKCkgPSBtYXRjaCBzZXEoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcCBmIG5leHQgKClcbiAgICAgICAgfCBTb21lIHkgLT4gQ29ucyAoeSwgZmlsdGVyX21hcCBmIG5leHQpXG5cbmxldCByZWMgZmlsdGVyIGYgc2VxICgpID0gbWF0Y2ggc2VxKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgaWYgZiB4XG4gICAgICB0aGVuIENvbnMgKHgsIGZpbHRlciBmIG5leHQpXG4gICAgICBlbHNlIGZpbHRlciBmIG5leHQgKClcblxubGV0IHJlYyBmaWx0ZXJpX2F1eCBmIGkgc2VxICgpID0gbWF0Y2ggc2VxKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgbGV0IGknID0gaSArIDEgaW5cbiAgICAgIGlmIGYgaSB4XG4gICAgICB0aGVuIENvbnMgKHgsIGZpbHRlcmlfYXV4IGYgaScgbmV4dClcbiAgICAgIGVsc2UgZmlsdGVyaV9hdXggZiBpJyBuZXh0ICgpXG5cbmxldFtAaW5saW5lXSBmaWx0ZXJpIGYgc2VxICgpID1cbiAgZmlsdGVyaV9hdXggZiAwIHNlcSAoKVxuXG5sZXQgcmVjIGNvbmNhdCBzZXEgKCkgPSBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICBhcHBlbmQgeCAoY29uY2F0IG5leHQpICgpXG5cbmxldCByZWMgZmxhdF9tYXAgZiBzZXEgKCkgPSBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgIGFwcGVuZCAoZiB4KSAoZmxhdF9tYXAgZiBuZXh0KSAoKVxuXG5sZXQgY29uY2F0X21hcCA9IGZsYXRfbWFwXG5cbmxldCByZWMgZm9sZF9sZWZ0IGYgYWNjIHNlcSA9XG4gIG1hdGNoIHNlcSAoKSB3aXRoXG4gICAgfCBOaWwgLT4gYWNjXG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBsZXQgYWNjID0gZiBhY2MgeCBpblxuICAgICAgICBmb2xkX2xlZnQgZiBhY2MgbmV4dFxuXG5sZXQgcmVjIGl0ZXIgZiBzZXEgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICAgIHwgTmlsIC0+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+XG4gICAgICAgIHMgOj0geHM7XG4gICAgICAgIFNvbWUgeFxuXG5cblxubGV0IHJlYyBpbnRzIGkgKCkgPVxuICBDb25zIChpLCBpbnRzIChpICsgMSkpXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJjYW1sX2NhbGwzIiwiYTIiLCJnbG9iYWxfZGF0YSIsIkFzc2VydF9mYWlsdXJlIiwiU3RkbGliX0F0b21pYyIsIkNhbWxpbnRlcm5hbExhenkiLCJTdGRsaWIiLCJTdGRsaWJfTGF6eSIsImVtcHR5IiwicGFyYW0iLCJyZXR1cm4kIiwieCIsImNvbnMiLCJuZXh0Iiwic2luZ2xldG9uIiwiYXBwZW5kIiwic2VxMSIsInNlcTIiLCJtYXRjaCIsIm1hcCIsInNlcSIsImZpbHRlcl9tYXAiLCJ5IiwiZmlsdGVyIiwiZmlsdGVyaV9hdXgiLCJpIiwiZmlsdGVyaSIsImNvbmNhdCIsImZsYXRfbWFwIiwiZm9sZF9sZWZ0IiwiYWNjIiwiaXRlciIsInVuZm9sZCIsInUiLCJpc19lbXB0eSIsInhzIiwidW5jb25zIiwibGVuZ3RoIiwiYWNjdSIsIml0ZXJpIiwiZm9sZF9sZWZ0aSIsImZvcl9hbGwiLCJwIiwiZXhpc3RzIiwiZmluZCIsImZpbmRfaW5kZXgiLCJmaW5kX21hcCIsInJlc3VsdCIsImZpbmRfbWFwaSIsIml0ZXIyIiwieXMiLCJmb2xkX2xlZnQyIiwiZm9yX2FsbDIiLCJleGlzdHMyIiwiZXF1YWwiLCJlcSIsImNvbXBhcmUiLCJjbXAiLCJjIiwiaW5pdF9hdXgiLCJqIiwiaW5pdCIsIm4iLCJyZXBlYXQiLCJmb3JldmVyIiwiY3ljbGVfbm9uZW1wdHkiLCJjeWNsZSIsIml0ZXJhdGUxIiwiaXRlcmF0ZSIsIm1hcGlfYXV4IiwibWFwaSIsInRhaWxfc2NhbiIsInMiLCJzY2FuIiwidGFrZV9hdXgiLCJ0YWtlIiwiZHJvcCIsInRha2Vfd2hpbGUiLCJkcm9wX3doaWxlIiwibm9kZSIsImdyb3VwIiwiRm9yY2VkX3R3aWNlIiwidG9fbGF6eSIsImZhaWx1cmUiLCJtZW1vaXplIiwib25jZSIsImFjdGlvbiIsInppcCIsIm1hcDIiLCJpbnRlcmxlYXZlIiwic29ydGVkX21lcmdlMSIsInNvcnRlZF9tZXJnZSIsIm1hcF9mc3QiLCJ4eXMiLCJtYXBfc25kIiwidW56aXAiLCJmaWx0ZXJfbWFwX2ZpbmRfbGVmdF9tYXAiLCJmaWx0ZXJfbWFwX2ZpbmRfcmlnaHRfbWFwIiwieiIsInBhcnRpdGlvbl9tYXAiLCJwYXJ0aXRpb24iLCJwZWVsIiwieHNzIiwidHJhbnNwb3NlIiwidGFpbHMiLCJoZWFkcyIsInJlbWFpbmRlcnMiLCJtYXBfcHJvZHVjdCIsInByb2R1Y3QiLCJvZl9kaXNwZW5zZXIiLCJpdCIsInRvX2Rpc3BlbnNlciIsImludHMiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFKLEdBQUFDLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxpQkFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLFlBQUFDLE1BQUFDLE9DdUJlLFNBQUc7QUFBQSxZQUFBQyxRQUFBQyxHQUFBRixPQUVBLHFCQUFlO0FBQUEsWUFBQUcsS0FBQUQsR0FBQUUsTUFBQUosT0FFWixvQkFBYztBQUFBLFlBQUFLLFVBQUFILEdBQUFGLE9BRWQscUJBQWU7QUFBQSxZQUFBTSxPQUFBQyxNQUFBQyxNQUFBUjtBQUFBQSxRQUFBUyxRQUc1QjtBQUFBLElBQU0sWUFDSCwwQkFDcUM7QUFBQSxRQUFBTCxPQUZsQyxVQUFBRixJQUFBO0FBQUEsSUFFaUMsMEJBQWhCLCtCQUFnQjtBQUFBLEdBQUM7QUFBQSxZQUFBUSxJQUFBdkIsR0FBQXdCLEtBQUFYO0FBQUFBLFFBQUFTLFFBRW5CO0FBQUEsSUFBSyxZQUN2QjtBQUFBLFFBQUFMLE9BRHVCLFVBQUFGLElBQUE7QUFBQSxJQUVOLHlDQUFLLHlCQUFGO0FBQUEsR0FBYTtBQUFBLFlBQUFVLFdBQUF6QixHQUFBd0IsT0FBQVg7QUFBQUEsUUFBQVcsTUFFZDtBQUFBO0FBQUEsU0FBQUYsUUFBTTtBQUFBLEtBQUssWUFDOUI7QUFBQSxTQUFBTCxPQUQ4QixVQUFBRixJQUFBLFVBQUFPLFVBRzdCO0FBQUEsS0FBRztBQUFBO0FBQUE7QUFBQSxRQUFBSSxJQUhlO0FBQUEsSUFLZ0IsMEJBQWpCLGdDQUFpQjtBQUFBLEdBQUM7QUFBQSxZQUFBQyxPQUFBM0IsR0FBQXdCLE9BQUFYO0FBQUFBLFFBQUFXLE1BRXJCO0FBQUE7QUFBQSxTQUFBRixRQUFNO0FBQUEsS0FBSyxZQUMxQjtBQUFBLFNBQUFMLE9BRDBCLFVBQUFGLElBQUE7QUFBQSxLQUc1QjtBQUFBLEtBQUc7QUFBQTtBQUFBLElBQ3FCLDBCQUFiLDRCQUFhO0FBQUEsR0FDTjtBQUFBLFlBQUFhLFlBQUE1QixHQUFBNkIsS0FBQUwsT0FBQVg7QUFBQUEsUUFBQWdCLElBRU0sS0FBQUwsTUFBQTtBQUFBO0FBQUEsU0FBQUYsUUFBTTtBQUFBLEtBQUssWUFDakM7QUFBQSxTQUFBTCxPQURpQyxVQUFBRixJQUFBLFVBQUFjLE1BR3RDO0FBQUEsS0FDRztBQUFBLEtBQUs7QUFBQTtBQUFBO0FBQUEsSUFDMkIsMEJBQXJCLHNDQUFxQjtBQUFBLEdBQ047QUFBQSxZQUFBQyxRQUFBOUIsR0FBQXdCLEtBQUFYLE9BR2pDLGdDQUFzQjtBQUFBLFlBQUFrQixPQUFBUCxLQUFBWDtBQUFBQSxRQUFBUyxRQUVNO0FBQUEsSUFBTSxZQUN6QjtBQUFBLFFBQUFMLE9BRHlCLFVBQUFGLElBQUE7QUFBQSxJQUdULDZCQUFiLDRCQUFnQjtBQUFBO0FBQUEsWUFBQWlCLFNBQUFoQyxHQUFBd0IsS0FBQVg7QUFBQUEsUUFBQVMsUUFFSTtBQUFBLElBQU0sWUFDN0I7QUFBQSxRQUFBTCxPQUQ2QixVQUFBRixJQUFBO0FBQUEsSUFHN0IsT0FBSztBQUFBLGFBQUwsOEJBQU0saUNBQW9CO0FBQUE7QUFBQSxZQUFBa0IsVUFBQWpDLEdBQUFrQyxPQUFBVjtBQUFBQSxRQUFBVSxNQUtuQyxPQUFBVixNQUFBO0FBQUE7QUFBQSxTQUFBRixRQUFNO0FBQUEsS0FBTSxZQUNEO0FBQUEsU0FBQUwsT0FEQyxVQUFBRixJQUFBLFVBQUFtQixRQUdJO0FBQUEsS0FDVjtBQUFBO0FBQUE7QUFBQSxHQUFvQjtBQUFBLFlBQUFDLEtBQUFuQyxHQUFBd0I7QUFBQUEsUUFBQUEsTUFHMUI7QUFBQTtBQUFBLFNBQUFGLFFBQU07QUFBQSxLQUFNLFlBQ0Q7QUFBQSxTQUFBTCxPQURDLFVBQUFGLElBQUE7QUFBQSxLQUdOO0FBQUEsS0FBRztBQUFBO0FBQUEsR0FDUTtBQUFBLFlBQUFxQixPQUFBcEMsR0FBQXFDLEdBQUF4QjtBQUFBQSxRQUFBUyxRQUdYO0FBQUEsSUFBRyxZQUNDO0FBQUEsUUFBQUEsVUFERCxVQUFBZSxNQUFBLFlBQUF0QixJQUFBO0FBQUEsSUFFNkIsMEJBQVgsMkJBQVc7QUFBQSxHQUFDO0FBQUEsWUFBQXVCLFNBQUFDLElBR2pDLGdDQUlHO0FBQUEsWUFBQUMsT0FBQUQ7QUFBQUEsUUFBQWpCLFFBR0g7QUFBQSxJQUFJLFlBSU47QUFBQSxRQUFBaUIsT0FKTSxVQUFBeEIsSUFBQTtBQUFBLElBRU47QUFBQSxHQUVJO0FBQUEsWUFBQTBCLE9BQUFGO0FBQUFBLFFBQUFHLE9BWVIsR0FBQUgsS0FBQTtBQUFBO0FBQUEsU0FBQWpCLFFBUE07QUFBQSxLQUFJLFlBRU47QUFBQSxTQUFBaUIsT0FGTSxVQUFBRyxTQUlOO0FBQUE7QUFBQTtBQUFBO0FBQUEsR0FHVztBQUFBLFlBQUFDLE1BQUEzQyxHQUFBdUM7QUFBQUEsUUFBQVYsSUFXZixHQUFBVSxLQUFBO0FBQUE7QUFBQSxTQUFBakIsUUFSTTtBQUFBLEtBQUksWUFFTjtBQUFBLFNBQUFpQixPQUZNLFVBQUF4QixJQUFBO0FBQUEsS0FJTjtBQUFBLFNBQUFjLE1BQUs7QUFBQTtBQUFBO0FBQUE7QUFBQSxHQUlPO0FBQUEsWUFBQWUsV0FBQTVDLEdBQUEwQyxRQUFBSDtBQUFBQSxRQUFBRyxPQVdoQixRQUFBYixJQUFBLEdBQUFVLEtBQUE7QUFBQTtBQUFBLFNBQUFqQixRQVJNO0FBQUEsS0FBSSxZQUVOO0FBQUE7QUFBQSxNQUFBaUIsT0FGTTtBQUFBLE1BQUF4QixJQUFBO0FBQUEsTUFBQTJCLFNBSUs7QUFBQSxNQUFBYixNQUNYO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxHQUdzQjtBQUFBLFlBQUFnQixRQUFBQyxHQUFBUDtBQUFBQSxRQUFBQSxLQUcxQjtBQUFBO0FBQUEsU0FBQWpCLFFBQU07QUFBQSxLQUFJLFlBRU47QUFBQSxTQUFBaUIsT0FGTSxVQUFBeEIsSUFBQSxjQUlOO0FBQUEsS0FBRztBQUFBO0FBQUE7QUFBQSxHQUFnQjtBQUFBLFlBQUFnQyxPQUFBRCxHQUFBUDtBQUFBQSxRQUFBQSxLQUd2QjtBQUFBO0FBQUEsU0FBQWpCLFFBQU07QUFBQSxLQUFJLFlBRU47QUFBQSxTQUFBaUIsT0FGTSxVQUFBeEIsSUFBQSxjQUlOO0FBQUEsS0FBRztBQUFBO0FBQUE7QUFBQSxHQUFlO0FBQUEsWUFBQWlDLEtBQUFGLEdBQUFQO0FBQUFBLFFBQUFBLEtBR3RCO0FBQUE7QUFBQSxTQUFBakIsUUFBTTtBQUFBLEtBQUksWUFFTjtBQUFBLFNBQUFpQixPQUZNLFVBQUF4QixJQUFBO0FBQUEsS0FJSCxxQkFBUztBQUFBLEtBQU47QUFBQTtBQUFBLEdBQTJCO0FBQUEsWUFBQWtDLFdBQUFILEdBQUFQO0FBQUFBLFFBQUFWLElBUXJDLEdBQUFVLE9BQUE7QUFBQTtBQUFBLFNBQUFqQixRQUx5QjtBQUFBLEtBQUksWUFFdkI7QUFBQSxTQUFBaUIsT0FGdUIsVUFBQXhCLElBQUE7QUFBQSxLQUlwQixxQkFBUztBQUFBLFNBQUFjLE1BQVk7QUFBQTtBQUFBO0FBQUE7QUFBQSxHQUN0QjtBQUFBLFlBQUFxQixTQUFBbEQsR0FBQXVDO0FBQUFBLFFBQUFBLEtBR1I7QUFBQTtBQUFBLFNBQUFqQixRQUFNO0FBQUEsS0FBSSxZQUVOO0FBQUEsU0FBQWlCLE9BRk0sVUFBQXhCLElBQUEsVUFBQW9DLFNBSUE7QUFBQSxLQUFHLFdBSUw7QUFBQSxLQUpLO0FBQUE7QUFBQSxHQUlDO0FBQUEsWUFBQUMsVUFBQXBELEdBQUF1QztBQUFBQSxRQUFBVixJQVlkLEdBQUFVLE9BQUE7QUFBQTtBQUFBLFNBQUFqQixRQVR5QjtBQUFBLEtBQUksWUFFdkI7QUFBQSxTQUFBaUIsT0FGdUIsVUFBQXhCLElBQUEsVUFBQW9DLFNBSWpCO0FBQUEsS0FBSyxXQUlQO0FBQUEsU0FBQXRCLE1BRkE7QUFBQTtBQUFBO0FBQUE7QUFBQSxHQUdGO0FBQUEsWUFBQXdCLE1BQUFyRCxHQUFBdUMsTUFBQWU7QUFBQUEsUUFBQWYsS0FVUixNQUFBZSxLQUFBO0FBQUE7QUFBQSxTQUFBaEMsUUFBTTtBQUFBLEtBQUksWUFFTjtBQUFBLFNBQUFpQixPQUZNLFVBQUF4QixJQUFBLFVBQUFPLFVBSUE7QUFBQSxLQUFJLGNBRU47QUFBQSxTQUFBZ0MsT0FGTSxZQUFBNUIsSUFBQTtBQUFBLEtBSU47QUFBQSxLQUFLO0FBQUE7QUFBQTtBQUFBLEdBQ1E7QUFBQSxZQUFBNkIsV0FBQXZELEdBQUEwQyxRQUFBSCxNQUFBZTtBQUFBQSxRQUFBWixPQUdyQixRQUFBSCxLQUFBLE1BQUFlLEtBQUE7QUFBQTtBQUFBLFNBQUFoQyxRQUFNO0FBQUEsS0FBSSxZQUVOO0FBQUEsU0FBQWlCLE9BRk0sVUFBQXhCLElBQUEsVUFBQU8sVUFJQTtBQUFBLEtBQUksY0FFTjtBQUFBO0FBQUEsTUFBQWdDLE9BRk07QUFBQSxNQUFBNUIsSUFBQTtBQUFBLE1BQUFnQixTQUlLO0FBQUEsS0FDWDtBQUFBO0FBQUE7QUFBQTtBQUFBLEdBQXVCO0FBQUEsWUFBQWMsU0FBQXhELEdBQUF1QyxNQUFBZTtBQUFBQSxRQUFBZixLQUcvQixNQUFBZSxLQUFBO0FBQUE7QUFBQSxTQUFBaEMsUUFBTTtBQUFBLEtBQUksWUFFTjtBQUFBLFNBQUFpQixPQUZNLFVBQUF4QixJQUFBLFVBQUFPLFVBSUE7QUFBQSxLQUFJLGNBRU47QUFBQSxTQUFBZ0MsT0FGTSxZQUFBNUIsSUFBQSxnQkFJTjtBQUFBLEtBQUs7QUFBQTtBQUFBO0FBQUE7QUFBQSxHQUFvQjtBQUFBLFlBQUErQixRQUFBekQsR0FBQXVDLE1BQUFlO0FBQUFBLFFBQUFmLEtBR2pDLE1BQUFlLEtBQUE7QUFBQTtBQUFBLFNBQUFoQyxRQUFNO0FBQUEsS0FBSSxZQUVOO0FBQUEsU0FBQWlCLE9BRk0sVUFBQXhCLElBQUEsVUFBQU8sVUFJQTtBQUFBLEtBQUksY0FFTjtBQUFBLFNBQUFnQyxPQUZNLFlBQUE1QixJQUFBLGdCQUlOO0FBQUEsS0FBSztBQUFBO0FBQUE7QUFBQTtBQUFBLEdBQW1CO0FBQUEsWUFBQWdDLE1BQUFDLElBQUFwQixNQUFBZTtBQUFBQSxRQUFBZixLQUdoQyxNQUFBZSxLQUFBO0FBQUE7QUFBQSxTQUFBaEMsUUFBTSxtQkFBQUEsVUFBTTtBQUFBLEtBQUk7QUFBQTtBQUFBO0FBQUEsUUFBQWdDLE9BQUE7QUFBQSxRQUFBNUIsSUFBQTtBQUFBLFFBQUFhLE9BQUE7QUFBQSxRQUFBeEIsSUFBQTtBQUFBLFlBSVo7QUFBQSxPQUFNO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHdCQUZOO0FBQUEsS0FLQTtBQUFBO0FBQUEsR0FBSztBQUFBLFlBQUE2QyxRQUFBQyxLQUFBdEIsTUFBQWU7QUFBQUEsUUFBQWYsS0FHVCxNQUFBZSxLQUFBO0FBQUE7QUFBQSxTQUFBaEMsUUFBTSxtQkFBQUEsVUFBTTtBQUFBLEtBQUksbUNBU1Y7QUFBQSxTQUFBaUIsT0FUVSxVQUFBeEIsSUFBQTtBQUFBLG1CQVNaO0FBQUEsU0FBQXVDLE9BVFksWUFBQTVCLElBQUEsWUFBQW9DLElBSUo7QUFBQSxLQUNSLFlBQWU7QUFBQSxLQUFmO0FBQUE7QUFBQTtBQUFBLEdBSUU7QUFBQSxZQUFBQyxTQUFBL0QsR0FBQTZCLEdBQUFtQyxHQUFBbkQ7QUFBQUEsSUFPTixXQUlFO0FBQUEsWUFIVztBQUFBLElBQUwseUNBQUssOEJBQUY7QUFBQSxHQUdOO0FBQUEsWUFBQW9ELEtBQUFDLEdBQUFsRTtBQUFBQSxJQUdMLFVBQ0UsdUNBRWM7QUFBQSxJQUFkLG1CRDlSSiw2QkM4Ukk7QUFBQSxHQUFjO0FBQUEsWUFBQW1FLE9BQUFwRCxHQUFBRjtBQUFBQSxJQUdDLDBCQUFSLHNCQUFRO0FBQUEsR0FBQztBQUFBLFlBQUF1RCxRQUFBcEUsR0FBQWE7QUFBQUEsSUFHWix5Q0FBSyx1QkFBRjtBQUFBLEdBQVk7QUFBQSxZQUFBd0QsZUFBQTlCLElBQUExQjtBQUFBQSxJQU9RLDhCQUFuQixrQ0FBc0I7QUFBQTtBQUFBLFlBQUF5RCxNQUFBL0IsSUFBQTFCO0FBQUFBLFFBQUFTLFFBUTFCO0FBQUEsSUFBSSxZQUVOO0FBQUEsUUFBQWlCLE9BRk0sVUFBQXhCLElBQUE7QUFBQSxrQkFJYztBQUFBLElBQW1CLDBCQUE5Qiw0QkFBOEI7QUFBQSxHQUFDO0FBQUEsWUFBQXdELFNBQUF2RSxHQUFBZSxHQUFBRjtBQUFBQSxRQUFBYSxJQU9wQztBQUFBLElBQ2EsMEJBQVosMkJBQVk7QUFBQSxHQUFDO0FBQUEsWUFBQThDLFFBQUF4RSxHQUFBZTtBQUFBQSxhQUFBRSxLQUFBLEdBWWY7QUFBQSxJQUFjLGdCQUFBSixPQWhURixxQkFnVEU7QUFBQTtBQUFBLFlBQUE0RCxTQUFBekUsR0FBQTZCLEdBQUFVLElBQUExQjtBQUFBQSxRQUFBUyxRQUtmO0FBQUEsSUFBSSxZQUVOO0FBQUEsUUFBQWlCLE9BRk0sVUFBQXhCLElBQUEsY0FJTztBQUFBLElBQVA7QUFBQTtBQUFBLHdCQUFPLGlDQUFGO0FBQUEsR0FBc0I7QUFBQSxZQUFBMkQsS0FBQTFFLEdBQUF1QyxJQUdyQyxtQkR2VkYsOEJDdVZFLENBQWU7QUFBQSxZQUFBb0MsVUFBQTNFLEdBQUE0RSxHQUFBckMsSUFBQTFCO0FBQUFBLFFBQUFTLFFBU1Q7QUFBQSxJQUFJLFlBRU47QUFBQSxRQUFBaUIsT0FGTSxVQUFBeEIsSUFBQSxVQUFBNkQsTUFJRTtBQUFBLElBQ2lCLDRCQUFoQixvQ0FBZ0I7QUFBQSxHQUFDO0FBQUEsWUFBQUMsS0FBQTdFLEdBQUE0RSxHQUFBckM7QUFBQUEsYUFBQXRCLEtBQUEsR0FHdkI7QUFBQSxJQUFrQixnQkFBQUosT0E3VU4scUJBNlVNO0FBQUE7QUFBQSxZQUFBaUUsU0FBQVosR0FBQTNCO0FBQUFBLElBTXpCO0FBQUE7QUFBQTtBQUFBLGNBQUExQjtBQUFBQSxrQkFBQVMsUUFJVTtBQUFBLGNBQUksWUFFTjtBQUFBLGtCQUFBaUIsT0FGTSxVQUFBeEIsSUFBQTtBQUFBLGNBSUcsd0NBQWlCO0FBQUEsYUFBQztBQUFBO0FBQUEsWUFBQWdFLEtBQUFiLEdBQUEzQjtBQUFBQSxJQUduQyxVQUFjO0FBQUEsSUFDZCxzQkFBYTtBQUFBO0FBQUEsWUFBQXlDLEtBQUFkLEdBQUEzQjtBQUFBQSxJQXFCYjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsZ0JBQUExQjtBQUFBQSxvQkFBQXFELE1BS0ksR0FBQTNCLE9BQUE7QUFBQTtBQUFBLHFCQUFBakIsUUFuQkU7QUFBQSxpQkFBSSxZQUVOO0FBQUEscUJBQUFpQixPQUZNLFVBQUEyQixNQUlOO0FBQUEsaUJBQ0EsY0FDRSwwQkFhYTtBQUFBLGlCQWRmO0FBQUE7QUFBQTtBQUFBLGVBY2U7QUFBQSxjQUxMLGdDQUtLO0FBQUE7QUFBQSxZQUFBZSxXQUFBbkMsR0FBQVAsSUFBQTFCO0FBQUFBLFFBQUFTLFFBR2I7QUFBQSxJQUFJLFlBRU47QUFBQSxRQUFBaUIsT0FGTSxVQUFBeEIsSUFBQTtBQUFBLElBSUg7QUFBQSxpQ0FBa0I7QUFBQSxlQUF5QjtBQUFBO0FBQUEsWUFBQW1FLFdBQUFwQyxHQUFBUCxNQUFBMUI7QUFBQUEsUUFBQTBCLEtBR2xEO0FBQUE7QUFBQSxTQUFBNEMsT0FBTTtBQUFBLEtBQUksV0FFTjtBQUFBLFNBQUE1QyxPQUZNLFNBQUF4QixJQUFBO0FBQUEsS0FJSCx1QkFBaUM7QUFBQSxLQUE5QjtBQUFBO0FBQUEsR0FBa0M7QUFBQSxZQUFBcUUsTUFBQXpCLElBQUFwQixJQUFBMUI7QUFBQUEsUUFBQVMsUUFHdEM7QUFBQSxJQUFJLFlBRU47QUFBQSxRQUFBaUIsT0FGTSxVQUFBeEIsSUFBQSxjQUlvRDtBQUFBLGtCQUFaO0FBQUEsWUFBckI7QUFBQSxhQUFBRSxLQUFBLEdBQVo7QUFBQSxJQUFzQjtBQUFBLHFCQUFBSixPQTlZcEI7QUFBQSx3QkE4WXNCLHlCQUFGO0FBQUEsR0FBa0M7QUFBQTtBQUFBLElBQUF3RTtBQUFBQSxNRHphM0U7QUFBQSxJQUFBQyxVQUFBO0FBQUEsWUFBQUMsUUFBQTFFO0FBQUFBLElDcWNNO0FBQUEsR0FBa0I7QUFBQSxZQUFBMkUsUUFBQWpEO0FBQUFBLGFBQUFxQyxJQUFBL0Q7QUFBQUEsU0FBQVMsUUFtQmQ7QUFBQSxLQUFJLFlBRU47QUFBQSxTQUFBaUIsT0FGTSxVQUFBeEIsSUFBQTtBQUFBLEtBSUcsNEJBQVU7QUFBQSxJQUFDO0FBQUEsUUFBQTZELElBOUJkO0FBQUEsSUFMVixnQkFBQS9EO0FBQUFBLFNBQUEsSUFBVTtBQUFBO0FBQUE7QUFBQSw2Q0FBWSxFQUF0QjtBQUFBLEdBb0NEO0FBQUEsWUFBQTRFLEtBQUFsRDtBQUFBQSxhQUFBdkMsRUFBQWE7QUFBQUEsU0FBQVMsUUFJTztBQUFBLEtBQUksWUFFTjtBQUFBLFNBQUFpQixPQUZNLFVBQUF4QixJQUFBO0FBQUEsS0FJRyx5QkFBTztBQUFBLElBQUM7QUFBQSxRQUFBMkUsU0F6QlI7QUFBQSxJQUNiLGdCQUFBN0U7QUFBQUEsU0FBQWIsSUFJVTtBQUFBLEtBQ1IsdUJBQUcsRUFMTDtBQUFBLEdBeUJEO0FBQUEsWUFBQTJGLElBQUFwRCxJQUFBZSxJQUFBekM7QUFBQUEsUUFBQVMsUUFJSztBQUFBLElBQUksWUFFTjtBQUFBLFFBQUFpQixPQUZNLFVBQUF4QixJQUFBLFVBQUFPLFVBSUE7QUFBQSxJQUFJLGNBRU47QUFBQSxRQUFBZ0MsT0FGTSxZQUFBNUIsSUFBQTtBQUFBLElBSWlCLGtDQUFULDRCQUFTO0FBQUEsR0FBQztBQUFBLFlBQUFrRSxLQUFBNUYsR0FBQXVDLElBQUFlLElBQUF6QztBQUFBQSxRQUFBUyxRQUcxQjtBQUFBLElBQUksWUFFTjtBQUFBLFFBQUFpQixPQUZNLFVBQUF4QixJQUFBLFVBQUFPLFVBSUE7QUFBQSxJQUFJLGNBRU47QUFBQSxRQUFBZ0MsT0FGTSxZQUFBNUIsSUFBQTtBQUFBLElBSUE7QUFBQTtBQUFBLHdCQUFPLGdDQUFGO0FBQUEsR0FBZTtBQUFBLFlBQUFtRSxXQUFBdEQsSUFBQWUsSUFBQXpDO0FBQUFBLFFBQUFTLFFBRzVCO0FBQUEsSUFBSSxZQUVOLHdCQUUwQjtBQUFBLFFBQUFpQixPQUpwQixVQUFBeEIsSUFBQTtBQUFBLElBSW1CLDBCQUFoQixpQ0FBZ0I7QUFBQSxHQUFDO0FBQUEsWUFBQStFLGNBQUFqQyxLQUFBOUMsR0FBQXdCLElBQUFiLEdBQUE0QjtBQUFBQSxJQTZCM0I7QUFBQTtBQUFBO0FBQUEsdUJBQUF6QztBQUFBQSxtQkFBQVMsUUFkRztBQUFBLGVBQUksWUFFTjtBQUFBLG1CQUFBZ0MsT0FGTSxVQUFBNUIsSUFBQTtBQUFBLGVBSU47QUFBQTtBQUFBO0FBQUE7QUFBQSx1QkFBQWI7QUFBQUEsbUJBQUFTLFFBR0U7QUFBQSxlQUFJLFlBRU47QUFBQSxtQkFBQWlCLE9BRk0sVUFBQXhCLElBQUE7QUFBQSxlQUlOO0FBQUEsZ0JBTWtDO0FBQUE7QUFBQSxZQUFBZ0YsYUFBQWxDLEtBQUF0QixJQUFBZSxJQUFBekM7QUFBQUEsUUFBQVMsUUFHaEMsbUJBQUFBLFVBQU07QUFBQSxJQUFJO0FBQUE7QUFBQSxVQUFBZ0MsT0FBQSxZQUFBNUIsSUFBQSxZQUFBYSxPQUFBLFVBQUF4QixJQUFBO0FBQUEsTUFPViwyQ0FBMkI7QUFBQTtBQUFBLFNBQUErQyxJQVBqQjtBQUFBO0FBQUEsdUJBRVYsY0FBQUEsSUFGVTtBQUFBLElBS1Y7QUFBQSxHQUUyQjtBQUFBLFlBQUFrQyxRQUFBQyxLQUFBcEY7QUFBQUEsUUFBQVMsUUFJM0I7QUFBQSxJQUFLLFlBRVA7QUFBQSxRQUFBMkUsUUFGTyxVQUFBbEYsSUFBQTtBQUFBLElBSWEsMEJBQVgsMkJBQVc7QUFBQSxHQUFDO0FBQUEsWUFBQW1GLFFBQUFELEtBQUFwRjtBQUFBQSxRQUFBUyxRQUduQjtBQUFBLElBQUssWUFFUDtBQUFBLFFBQUEyRSxRQUZPLFVBQUF2RSxJQUFBO0FBQUEsSUFJYSwwQkFBWCwyQkFBVztBQUFBLEdBQUM7QUFBQSxZQUFBeUUsTUFBQUY7QUFBQUEsSUFHZDtBQUFBLHdCQUFYO0FBQUEsd0JBQWEseUJBQUY7QUFBQSxHQUFhO0FBQUEsWUFBQUcseUJBQUFwRyxHQUFBdUMsTUFBQTFCO0FBQUFBLFFBQUEwQixLQVN4QjtBQUFBO0FBQUEsU0FBQWpCLFFBQU07QUFBQSxLQUFJLFlBRU47QUFBQSxTQUFBaUIsT0FGTSxVQUFBeEIsSUFBQSxVQUFBTyxVQUlBO0FBQUEsS0FBRztBQUFBO0FBQUE7QUFBQSxRQUFBSSxJQUpiO0FBQUEsSUFNOEMsMEJBQTdCLDhDQUE2QjtBQUFBLEdBRU47QUFBQSxZQUFBMkUsMEJBQUFyRyxHQUFBdUMsTUFBQTFCO0FBQUFBLFFBQUEwQixLQUd4QztBQUFBO0FBQUEsU0FBQWpCLFFBQU07QUFBQSxLQUFJLFlBRU47QUFBQSxTQUFBaUIsT0FGTSxVQUFBeEIsSUFBQSxVQUFBTyxVQUlBO0FBQUEsS0FBRztBQUFBO0FBQUE7QUFBQSxRQUFBZ0YsSUFKYjtBQUFBLElBUStDLDBCQUE5QiwrQ0FBOEI7QUFBQSxHQUFDO0FBQUEsWUFBQUMsY0FBQXZHLEdBQUF1QztBQUFBQSxJQUduQjtBQUFBLHdCQUE3QjtBQUFBLHdCQUNBLDZDQUQ2QjtBQUFBLEdBQ0M7QUFBQSxZQUFBaUUsVUFBQTFELEdBQUFQO0FBQUFBLGFBQUEsRUFBQXhCLEdBR0ksMkJBQUs7QUFBQSxJQUE1QjtBQUFBLHdCQUFYO0FBQUEsd0JBQWEsMEJBQUY7QUFBQSxHQUFnQztBQUFBLFlBQUEwRixLQUFBQztBQUFBQSxJQVlkLHlCQUF2QixvQ0FBdUI7QUFBQTtBQUFBLFdEL21CL0I7QUFBQSxZQUFBQyxVQUFBRCxLQUFBN0Y7QUFBQUEsUUFBQVMsUUNrbkJxQixXQUFBc0YsUUFBUSxVQUFBQyxRQUFBO0FBQUEsSUFDeEI7QUFBQSxLQUsyQiw4QkFBZiw2QkFBZTtBQUFBLElBSnJCLG9CQUNQO0FBQUEsSUFEdUI7QUFBQSxHQUlNO0FBQUEsY0FBQUMsWUFBQUosS0FBQTdGO0FBQUFBLFFBQUFTLFFBT3pCO0FBQUEsSUFBSyxZQXNCUCwrQkFBdUI7QUFBQSxRQUFBb0YsUUF0QmhCLFVBQUFuRSxLQUFBLFVBQUFqQixVQUVLO0FBQUEsSUFBSTtBQUFBO0FBQUEsTUFBQWlCLE9BQUE7QUFBQSxNQUFBeEIsSUFBQTtBQUFBLE1BQUFPLFVBUU87QUFBQSxNQUFBc0YsUUFBZTtBQUFBLE1BQUFDLFFBQUE7QUFBQSxVQUNKLFNBQUFoRyxPQS9tQm5CO0FBQUEsS0ErbUJPO0FBQUEsc0JBQUFBLE9BL21CUDtBQUFBLHlCQSttQlMsd0JBQUY7QUFBQTtBQUFBO0FBQUEsS0FBQVMsVUFLQztBQUFBLEtBQUFzRixVQUFlO0FBQUEsS0FBQUMsVUFBQTtBQUFBLElBQ0YsZ0NBQW5CLDhCQUFtQjtBQUFBLEdBS2I7QUFBQSxZQUFBRSxZQUFBL0csR0FBQXVDLElBQUFlO0FBQUFBLGFBQUEsRUFBQXZDO0FBQUFBLGNBQUEsRUFBQVcsR0FzQnJCLDBCQUFLO0FBQUEsS0FEUCxtQkQxcUJOLHNCQzBxQk07QUFBQSxJQUVJO0FBQUEsYUFBQWdGLElBQUEsR0FKVTtBQUFBLGtCQUhsQjtBQUFBLElBU0U7QUFBQTtBQUFBLFlBQUFNLFFBQUF6RSxJQUFBZTtBQUFBQSxJQUdGLDRCQUFBdkMsR0FBQVcsR0FBd0IsaUJBQU0sVUFBTztBQUFBO0FBQUEsWUFBQXVGLGFBQUFDO0FBQUFBLGFBQUFwRCxFQUFBakQ7QUFBQUEsU0FBQVMsUUFJN0I7QUFBQSxLQUFJLFlBRU47QUFBQSxTQUFBUCxJQUZNO0FBQUEsS0FJTjtBQUFBLElBQVc7QUFBQSxJQUVqQjtBQUFBLEdBQUM7QUFBQSxZQUFBb0csYUFBQTVFO0FBQUFBLFFBQUFxQyxJQUdEO0FBQUEsSUFDQSxnQkFBQS9EO0FBQUFBLFNBQUFTLFFBQ1E7QUFBQSxLQUFNLFlBRVI7QUFBQSxTQUFBaUIsS0FGUSxVQUFBeEIsSUFBQTtBQUFBLEtBSVI7QUFBQSxLQUNBLGNBQU0sQ0FOWjtBQUFBLEdBTVk7QUFBQSxZQUFBcUcsS0FBQXZGLEdBQUFoQjtBQUFBQSxRQUFBLElBS0g7QUFBQSxJQUFZLDBCQUFaLG9CQUFZO0FBQUEsR0FBQztBQUFBLEdEMXNCeEIiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjoxMTM0MiwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL29wdGlvbi5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnYSB0ID0gJ2Egb3B0aW9uID0gTm9uZSB8IFNvbWUgb2YgJ2FcblxubGV0IG5vbmUgPSBOb25lXG5sZXQgc29tZSB2ID0gU29tZSB2XG5sZXQgdmFsdWUgbyB+ZGVmYXVsdCA9IG1hdGNoIG8gd2l0aCBTb21lIHYgLT4gdiB8IE5vbmUgLT4gZGVmYXVsdFxubGV0IGdldCA9IGZ1bmN0aW9uIFNvbWUgdiAtPiB2IHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBcIm9wdGlvbiBpcyBOb25lXCJcbmxldCBiaW5kIG8gZiA9IG1hdGNoIG8gd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHYgLT4gZiB2XG5sZXQgam9pbiA9IGZ1bmN0aW9uIFNvbWUgbyAtPiBvIHwgTm9uZSAtPiBOb25lXG5sZXQgbWFwIGYgbyA9IG1hdGNoIG8gd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHYgLT4gU29tZSAoZiB2KVxubGV0IGZvbGQgfm5vbmUgfnNvbWUgPSBmdW5jdGlvbiBTb21lIHYgLT4gc29tZSB2IHwgTm9uZSAtPiBub25lXG5sZXQgaXRlciBmID0gZnVuY3Rpb24gU29tZSB2IC0+IGYgdiB8IE5vbmUgLT4gKClcbmxldCBpc19ub25lID0gZnVuY3Rpb24gTm9uZSAtPiB0cnVlIHwgU29tZSBfIC0+IGZhbHNlXG5sZXQgaXNfc29tZSA9IGZ1bmN0aW9uIE5vbmUgLT4gZmFsc2UgfCBTb21lIF8gLT4gdHJ1ZVxuXG5sZXQgZXF1YWwgZXEgbzAgbzEgPSBtYXRjaCBvMCwgbzEgd2l0aFxufCBTb21lIHYwLCBTb21lIHYxIC0+IGVxIHYwIHYxXG58IE5vbmUsIE5vbmUgLT4gdHJ1ZVxufCBfIC0+IGZhbHNlXG5cbmxldCBjb21wYXJlIGNtcCBvMCBvMSA9IG1hdGNoIG8wLCBvMSB3aXRoXG58IFNvbWUgdjAsIFNvbWUgdjEgLT4gY21wIHYwIHYxXG58IE5vbmUsIE5vbmUgLT4gMFxufCBOb25lLCBTb21lIF8gLT4gLTFcbnwgU29tZSBfLCBOb25lIC0+IDFcblxubGV0IHRvX3Jlc3VsdCB+bm9uZSA9IGZ1bmN0aW9uIE5vbmUgLT4gRXJyb3Igbm9uZSB8IFNvbWUgdiAtPiBPayB2XG5sZXQgdG9fbGlzdCA9IGZ1bmN0aW9uIE5vbmUgLT4gW10gfCBTb21lIHYgLT4gW3ZdXG5sZXQgdG9fc2VxID0gZnVuY3Rpb24gTm9uZSAtPiBTZXEuZW1wdHkgfCBTb21lIHYgLT4gU2VxLnJldHVybiB2XG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYl9TZXEiLCJTdGRsaWIiLCJzb21lIiwidiIsInZhbHVlIiwibyIsImRlZmF1bHQkIiwiZ2V0IiwicGFyYW0iLCJiaW5kIiwiam9pbiIsIm1hcCIsImZvbGQiLCJub25lIiwiaXRlciIsImlzX25vbmUiLCJpc19zb21lIiwiZXF1YWwiLCJlcSIsIm8wIiwibzEiLCJ2MSIsInYwIiwiY29tcGFyZSIsImNtcCIsInRvX3Jlc3VsdCIsInRvX2xpc3QiLCJ0b19zZXEiXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLFlBQUFDLEtBQUFDLEdDa0JhLGNBQU07QUFBQSxZQUFBQyxNQUFBQyxHQUFBQztBQUFBQSxJQUNJLFFBQW1DO0FBQUEsUUFBQUgsSUFBbkM7QUFBQSxJQUF1QjtBQUFBLEdBQW1CO0FBQUEsWUFBQUksSUFBQUM7QUFBQUEsSUFDdkQsWUFBK0IsNkNBQTRCO0FBQUEsUUFBQUwsSUFBM0Q7QUFBQSxJQUFtQjtBQUFBLEdBQXdDO0FBQUEsWUFBQU0sS0FBQUosR0FBQVY7QUFBQUEsSUFDdEQsUUFBcUI7QUFBQSxRQUFBUSxJQUFyQjtBQUFBLElBQXNDLHVCQUFHO0FBQUE7QUFBQSxZQUFBTyxLQUFBRixPQUM3QyxZQUErQixjQUFBSCxJQUEvQixVQUFtQixTQUFnQjtBQUFBLFlBQUFNLElBQUFoQixHQUFBVTtBQUFBQSxJQUNoQyxRQUFxQjtBQUFBLFFBQUFGLElBQXJCO0FBQUEsSUFBMkMsNEJBQUs7QUFBQTtBQUFBLFlBQUFTLEtBQUFDLE1BQUFYLE1BQUFNO0FBQUFBLElBQ3JELFlBQWtEO0FBQUEsUUFBQUwsSUFBbEQ7QUFBQSxJQUFpQywwQkFBcUI7QUFBQTtBQUFBLFlBQUFXLEtBQUFuQixHQUFBYTtBQUFBQSxJQUN0RCxZQUFxQztBQUFBLFFBQUFMLElBQXJDO0FBQUEsSUFBdUIsdUJBQWdCO0FBQUE7QUFBQSxZQUFBWSxRQUFBUCxPQUNsQyxvQkFBdUM7QUFBQSxZQUFBUSxRQUFBUixPQUN2QyxvQkFBdUM7QUFBQSxZQUFBUyxNQUFBQyxJQUFBQyxJQUFBQztBQUFBQSxJQUVoQztBQUFBLGdCQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FDQyw2QkFFVjtBQUFBO0FBQUEsa0JBREk7QUFBQSxJQUNUO0FBQUEsR0FBSztBQUFBLFlBQUFDLFFBQUFDLEtBQUFMLElBQUFDO0FBQUFBLElBRVksMkJBSUw7QUFBQSxRQUFBRSxLQUpLO0FBQUEsYUFJTjtBQUFBLFFBQUFELEtBSk07QUFBQSxJQUNGLDhCQUdIO0FBQUE7QUFBQSxZQUFBSSxVQUFBWixNQUFBTDtBQUFBQSxJQUVMLFlBQXlCO0FBQUEsUUFBQUwsSUFBekI7QUFBQSxJQUFnRDtBQUFBLEdBQUk7QUFBQSxZQUFBdUIsUUFBQWxCO0FBQUFBLElBQ3BELFlBQWlCO0FBQUEsUUFBQUwsSUFBakI7QUFBQSxJQUFnQztBQUFBLEdBQUc7QUFBQSxZQUFBd0IsT0FBQW5CO0FBQUFBLElBQ3BDLFlBQWlCO0FBQUEsUUFBQUwsSUFBakIsY0FBdUM7QUFBQSx1QkQxQ3BELGdCQzBDb0Q7QUFBQSxHQUFZO0FBQUEsR0QxQ2hFIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MTE0NDksImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9yZXN1bHQubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgKCdhLCAnZSkgdCA9ICgnYSwgJ2UpIHJlc3VsdCA9IE9rIG9mICdhIHwgRXJyb3Igb2YgJ2VcblxubGV0IG9rIHYgPSBPayB2XG5sZXQgZXJyb3IgZSA9IEVycm9yIGVcbmxldCB2YWx1ZSByIH5kZWZhdWx0ID0gbWF0Y2ggciB3aXRoIE9rIHYgLT4gdiB8IEVycm9yIF8gLT4gZGVmYXVsdFxubGV0IGdldF9vayA9IGZ1bmN0aW9uIE9rIHYgLT4gdiB8IEVycm9yIF8gLT4gaW52YWxpZF9hcmcgXCJyZXN1bHQgaXMgRXJyb3IgX1wiXG5sZXQgZ2V0X29rJyA9IGZ1bmN0aW9uIE9rIHYgLT4gdiB8IEVycm9yIGUgLT4gaW52YWxpZF9hcmcgZVxubGV0IGdldF9lcnJvciA9IGZ1bmN0aW9uIEVycm9yIGUgLT4gZSB8IE9rIF8gLT4gaW52YWxpZF9hcmcgXCJyZXN1bHQgaXMgT2sgX1wiXG5sZXQgZXJyb3JfdG9fZmFpbHVyZSA9IGZ1bmN0aW9uIE9rIHYgLT4gdiB8IEVycm9yIGUgLT4gZmFpbHdpdGggZVxubGV0IGJpbmQgciBmID0gbWF0Y2ggciB3aXRoIE9rIHYgLT4gZiB2IHwgRXJyb3IgXyBhcyBlIC0+IGVcbmxldCBqb2luID0gZnVuY3Rpb24gT2sgciAtPiByIHwgRXJyb3IgXyBhcyBlIC0+IGVcbmxldCBtYXAgZiA9IGZ1bmN0aW9uIE9rIHYgLT4gT2sgKGYgdikgfCBFcnJvciBfIGFzIGUgLT4gZVxubGV0IHByb2R1Y3QgcjAgcjEgPSBtYXRjaCByMCwgcjEgd2l0aFxufCAoRXJyb3IgXyBhcyByKSwgX1xufCBfLCAoRXJyb3IgXyBhcyByKSAtPiByXG58IE9rIHYwLCBPayB2MSAtPiBPayAodjAsIHYxKVxuXG5sZXQgbWFwX2Vycm9yIGYgPSBmdW5jdGlvbiBFcnJvciBlIC0+IEVycm9yIChmIGUpIHwgT2sgXyBhcyB2IC0+IHZcbmxldCBmb2xkIH5vayB+ZXJyb3IgPSBmdW5jdGlvbiBPayB2IC0+IG9rIHYgfCBFcnJvciBlIC0+IGVycm9yIGVcbmxldCByZXRyYWN0ID0gZnVuY3Rpb24gT2sgdiAtPiB2IHwgRXJyb3IgdiAtPiB2XG5sZXQgaXRlciBmID0gZnVuY3Rpb24gT2sgdiAtPiBmIHYgfCBFcnJvciBfIC0+ICgpXG5sZXQgaXRlcl9lcnJvciBmID0gZnVuY3Rpb24gRXJyb3IgZSAtPiBmIGUgfCBPayBfIC0+ICgpXG5sZXQgaXNfb2sgPSBmdW5jdGlvbiBPayBfIC0+IHRydWUgfCBFcnJvciBfIC0+IGZhbHNlXG5sZXQgaXNfZXJyb3IgPSBmdW5jdGlvbiBFcnJvciBfIC0+IHRydWUgfCBPayBfIC0+IGZhbHNlXG5cbmxldCBlcXVhbCB+b2sgfmVycm9yIHIwIHIxID0gbWF0Y2ggcjAsIHIxIHdpdGhcbnwgT2sgdjAsIE9rIHYxIC0+IG9rIHYwIHYxXG58IEVycm9yIGUwLCBFcnJvciBlMSAtPiBlcnJvciBlMCBlMVxufCBfLCBfIC0+IGZhbHNlXG5cbmxldCBjb21wYXJlIH5vayB+ZXJyb3IgcjAgcjEgPSBtYXRjaCByMCwgcjEgd2l0aFxufCBPayB2MCwgT2sgdjEgLT4gb2sgdjAgdjFcbnwgRXJyb3IgZTAsIEVycm9yIGUxIC0+IGVycm9yIGUwIGUxXG58IE9rIF8sIEVycm9yIF8gLT4gLTFcbnwgRXJyb3IgXywgT2sgXyAtPiAxXG5cbmxldCB0b19vcHRpb24gPSBmdW5jdGlvbiBPayB2IC0+IFNvbWUgdiB8IEVycm9yIF8gLT4gTm9uZVxubGV0IHRvX2xpc3QgPSBmdW5jdGlvbiBPayB2IC0+IFt2XSB8IEVycm9yIF8gLT4gW11cbmxldCB0b19zZXEgPSBmdW5jdGlvbiBPayB2IC0+IFNlcS5yZXR1cm4gdiB8IEVycm9yIF8gLT4gU2VxLmVtcHR5XG5cbm1vZHVsZSBTeW50YXggPSBzdHJ1Y3RcbiAgbGV0ICggbGV0KiApID0gYmluZFxuICBsZXQgKCBhbmQqICkgPSBwcm9kdWN0XG4gIGxldCAoIGxldCsgKSByIGYgPSBtYXAgZiByXG4gIGxldCAoIGFuZCsgKSA9IHByb2R1Y3RcbmVuZFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWJfU2VxIiwiU3RkbGliIiwib2siLCJ2IiwiZXJyb3IiLCJlIiwidmFsdWUiLCJyIiwiZGVmYXVsdCQiLCJnZXRfb2siLCJwYXJhbSIsImdldF9lcnJvciIsImVycm9yX3RvX2ZhaWx1cmUiLCJiaW5kIiwiam9pbiIsIm1hcCIsInByb2R1Y3QiLCJyMCIsInIxIiwidjAiLCJ2MSIsIm1hcF9lcnJvciIsImZvbGQiLCJyZXRyYWN0IiwiaXRlciIsIml0ZXJfZXJyb3IiLCJpc19vayIsImlzX2Vycm9yIiwiZXF1YWwiLCJlMCIsImUxIiwiY29tcGFyZSIsInRvX29wdGlvbiIsInRvX2xpc3QiLCJ0b19zZXEiLCJsZXQkIl0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxZQUFBQyxHQUFBQyxHQ2lCVyxjQUFJO0FBQUEsWUFBQUMsTUFBQUMsR0FDRCxjQUFPO0FBQUEsWUFBQUMsTUFBQUMsR0FBQUM7QUFBQUEsSUFDRSxlQUFvQztBQUFBLFFBQUFMLElBQXBDO0FBQUEsSUFBcUI7QUFBQSxHQUFzQjtBQUFBLFlBQUFNLE9BQUFDO0FBQUFBLElBQ3JELG1CQUFnQyxnREFBK0I7QUFBQSxRQUFBUCxJQUEvRDtBQUFBLElBQWlCO0FBQUEsR0FBOEM7QUFBQSxZQUFBTSxTQUFBQztBQUFBQSxJQUM5RCx1QkFBQVAsSUFBQSxVQUFpQjtBQUFBLFFBQUFFLElBQWpCO0FBQUEsSUFBZ0MsOEJBQWE7QUFBQTtBQUFBLFlBQUFNLFVBQUFEO0FBQUFBLElBQzNDLG1CQUFnQyw2Q0FBNEI7QUFBQSxRQUFBTCxJQUE1RDtBQUFBLElBQW9CO0FBQUEsR0FBd0M7QUFBQSxZQUFBTyxpQkFBQUY7QUFBQUEsSUFDckQsdUJBQUFQLElBQUEsVUFBaUI7QUFBQSxRQUFBRSxJQUFqQjtBQUFBLElBQWdDLDhCQUFVO0FBQUE7QUFBQSxZQUFBUSxLQUFBTixHQUFBWjtBQUFBQSxJQUNsRCxlQUEyQztBQUFBLFFBQUFRLElBQTNDO0FBQUEsSUFBcUIsdUJBQXVCO0FBQUE7QUFBQSxZQUFBVyxLQUFBVCxHQUNoRCxlQUFxQyxjQUFBRSxJQUFyQyxNQUFpQixTQUFxQjtBQUFBLFlBQUFRLElBQUFwQixHQUFBVTtBQUFBQSxJQUN6QyxlQUFnRDtBQUFBLFFBQUFGLElBQWhEO0FBQUEsSUFBd0IsNEJBQUs7QUFBQSxHQUFvQjtBQUFBLFlBQUFhLFFBQUFDLElBQUFDO0FBQUFBLElBQ3JDO0FBQUEsU0FBQUMsS0FBQTtBQUFBLHlCQUFBQyxLQUFBLE9BR0Y7QUFBQSxTQUFBYixJQUhFO0FBQUE7QUFBQTtBQUFBLFNBQUFBLElBQUE7QUFBQSxJQUVHO0FBQUEsR0FDTTtBQUFBLFlBQUFjLFVBQUExQixHQUFBUTtBQUFBQSxJQUVmLGVBQW1EO0FBQUEsUUFBQUUsSUFBbkQ7QUFBQSxJQUE4Qiw0QkFBSztBQUFBLEdBQWlCO0FBQUEsWUFBQWlCLEtBQUFwQixJQUFBRSxPQUFBTTtBQUFBQSxJQUN6RCx1QkFBQVAsSUFBQSxVQUE4Qix3QkFBeUI7QUFBQSxRQUFBRSxJQUF2RDtBQUFBLElBQWdELDJCQUFPO0FBQUE7QUFBQSxZQUFBa0IsUUFBQWI7QUFBQUEsSUFDbEQsdUJBQUFQLElBQUEsVUFBaUI7QUFBQSxRQUFBQSxNQUFqQjtBQUFBLElBQWdDO0FBQUEsR0FBQztBQUFBLFlBQUFxQixLQUFBN0IsR0FBQWU7QUFBQUEsSUFDdEMsbUJBQXNDO0FBQUEsUUFBQVAsSUFBdEM7QUFBQSxJQUFxQix1QkFBbUI7QUFBQTtBQUFBLFlBQUFzQixXQUFBOUIsR0FBQWU7QUFBQUEsSUFDbEMsbUJBQXNDO0FBQUEsUUFBQUwsSUFBdEM7QUFBQSxJQUF3Qix1QkFBZ0I7QUFBQTtBQUFBLFlBQUFxQixNQUFBaEIsT0FDM0MsNkJBQXdDO0FBQUEsWUFBQWlCLFNBQUFqQixPQUNyQyw2QkFBd0M7QUFBQSxZQUFBa0IsTUFBQTFCLElBQUFFLE9BQUFhLElBQUFDO0FBQUFBLElBRTFCO0FBQUEsU0FBQUMsS0FBQTtBQUFBLHlCQUFBQyxLQUFBLE9BQ1gsNkJBRUg7QUFBQTtBQUFBO0FBQUEsU0FBQVMsS0FIYztBQUFBLHlCQUFBQyxLQUFBLE9BRUwsZ0NBQ1Q7QUFBQTtBQUFBLElBQUw7QUFBQSxHQUFLO0FBQUEsWUFBQUMsUUFBQTdCLElBQUFFLE9BQUFhLElBQUFDO0FBQUFBLElBRWdCO0FBQUEsU0FBQUMsS0FBQTtBQUFBLHFCQUdaO0FBQUEsU0FBQUMsS0FIWTtBQUFBLEtBQ2IsNkJBR0U7QUFBQTtBQUFBLFFBQUFTLEtBSlc7QUFBQSxvQkFJWjtBQUFBLFFBQUFDLEtBSlk7QUFBQSxJQUVQLGdDQUVKO0FBQUE7QUFBQSxZQUFBRSxVQUFBdEI7QUFBQUEsSUFFSixtQkFBcUM7QUFBQSxRQUFBUCxJQUFyQztBQUFBLElBQWlCO0FBQUEsR0FBd0I7QUFBQSxZQUFBOEIsUUFBQXZCO0FBQUFBLElBQzNDLG1CQUFrQztBQUFBLFFBQUFQLElBQWxDO0FBQUEsSUFBaUI7QUFBQSxHQUFtQjtBQUFBLFlBQUErQixPQUFBeEI7QUFBQUEsSUFDckMsbUJBQTJDO0FBQUEsUUFBQVAsSUFBM0MsY0FBaUI7QUFBQSx1QkRyRDlCLGdCQ3FEOEI7QUFBQSxHQUFtQztBQUFBLFlBQUFnQyxLQUFBNUIsR0FBQVosR0FLNUMsZ0JBQU87QUFBQSxHRDFENUIiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjoxMTYxNiwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL2NoYXIubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIENoYXJhY3RlciBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGNvZGU6IGNoYXIgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgdW5zYWZlX2NocjogaW50IC0+IGNoYXIgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBjaHIgbiA9XG4gIGlmIG4gPCAwIHx8IG4gPiAyNTUgdGhlbiBpbnZhbGlkX2FyZyBcIkNoYXIuY2hyXCIgZWxzZSB1bnNhZmVfY2hyIG5cblxuZXh0ZXJuYWwgYnl0ZXNfY3JlYXRlOiBpbnQgLT4gYnl0ZXMgPSBcImNhbWxfY3JlYXRlX2J5dGVzXCJcbmV4dGVybmFsIGJ5dGVzX3Vuc2FmZV9zZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3RvX3N0cmluZyA6IGJ5dGVzIC0+IHN0cmluZyA9IFwiJWJ5dGVzX3RvX3N0cmluZ1wiXG5cbmxldCBlc2NhcGVkID0gZnVuY3Rpb25cbiAgfCAnXFwnJyAtPiBcIlxcXFwnXCJcbiAgfCAnXFxcXCcgLT4gXCJcXFxcXFxcXFwiXG4gIHwgJ1xcbicgLT4gXCJcXFxcblwiXG4gIHwgJ1xcdCcgLT4gXCJcXFxcdFwiXG4gIHwgJ1xccicgLT4gXCJcXFxcclwiXG4gIHwgJ1xcYicgLT4gXCJcXFxcYlwiXG4gIHwgJyAnIC4uICd+JyBhcyBjIC0+XG4gICAgICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSAxIGluXG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMCBjO1xuICAgICAgdW5zYWZlX3RvX3N0cmluZyBzXG4gIHwgYyAtPlxuICAgICAgbGV0IG4gPSBjb2RlIGMgaW5cbiAgICAgIGxldCBzID0gYnl0ZXNfY3JlYXRlIDQgaW5cbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAwICdcXFxcJztcbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAxICh1bnNhZmVfY2hyICg0OCArIG4gLyAxMDApKTtcbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAyICh1bnNhZmVfY2hyICg0OCArIChuIC8gMTApIG1vZCAxMCkpO1xuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDMgKHVuc2FmZV9jaHIgKDQ4ICsgbiBtb2QgMTApKTtcbiAgICAgIHVuc2FmZV90b19zdHJpbmcgc1xuXG5sZXQgbG93ZXJjYXNlX2FzY2lpID0gZnVuY3Rpb25cbiAgfCAnQScgLi4gJ1onIGFzIGMgLT4gdW5zYWZlX2Nocihjb2RlIGMgKyAzMilcbiAgfCBjIC0+IGNcblxubGV0IHVwcGVyY2FzZV9hc2NpaSA9IGZ1bmN0aW9uXG4gIHwgJ2EnIC4uICd6JyBhcyBjIC0+IHVuc2FmZV9jaHIoY29kZSBjIC0gMzIpXG4gIHwgYyAtPiBjXG5cbnR5cGUgdCA9IGNoYXJcblxubGV0IGNvbXBhcmUgYzEgYzIgPSBjb2RlIGMxIC0gY29kZSBjMlxubGV0IGVxdWFsIChjMTogdCkgKGMyOiB0KSA9IGNvbXBhcmUgYzEgYzIgPSAwXG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoX3BhcmFtIDpcbiAgaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gaW50ID0gXCJjYW1sX2hhc2hcIiBbQEBub2FsbG9jXVxubGV0IHNlZWRlZF9oYXNoIHNlZWQgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBzZWVkIHhcbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgMCB4XG5cbm1vZHVsZSBBc2NpaSA9IHN0cnVjdFxuXG4gICgqIENoYXJhY3RlcnMgKilcblxuICBsZXQgbWluID0gJ1xceDAwJ1xuICBsZXQgbWF4ID0gJ1xceDdGJ1xuXG4gICgqIFByZWRpY2F0ZXMgKilcblxuICBsZXQgaXNfdmFsaWQgPSBmdW5jdGlvbiAnXFx4MDAnIC4uICdcXHg3RicgLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcbiAgbGV0IGlzX3VwcGVyID0gZnVuY3Rpb24gJ0EnIC4uICdaJyAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuICBsZXQgaXNfbG93ZXIgPSBmdW5jdGlvbiAnYScgLi4gJ3onIC0+IHRydWUgfCBfIC0+IGZhbHNlXG4gIGxldCBpc19sZXR0ZXIgPSBmdW5jdGlvbiAnQScgLi4gJ1onIHwgJ2EnIC4uICd6JyAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuICBsZXQgaXNfYWxwaGFudW0gPSBmdW5jdGlvblxuICAgIHwgJzAnIC4uICc5JyB8ICdBJyAuLiAnWicgfCAnYScgLi4gJ3onIC0+IHRydWUgfCBfIC0+IGZhbHNlXG5cbiAgbGV0IGlzX3doaXRlID0gZnVuY3Rpb24gJyAnIHwgJ1xcdCcgLi4gJ1xccicgIC0+IHRydWUgfCBfIC0+IGZhbHNlXG4gIGxldCBpc19ibGFuayA9IGZ1bmN0aW9uICcgJyB8ICdcXHQnIC0+IHRydWUgfCBfIC0+IGZhbHNlXG4gIGxldCBpc19ncmFwaGljID0gZnVuY3Rpb24gJyEnIC4uICd+JyAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuICBsZXQgaXNfcHJpbnQgPSBmdW5jdGlvbiAnICcgLi4gJ34nIC0+IHRydWUgfCBfIC0+IGZhbHNlXG4gIGxldCBpc19jb250cm9sID0gZnVuY3Rpb24gJ1xceDAwJyAuLiAnXFx4MUYnIHwgJ1xceDdGJyAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuXG4gICgqIERlY2ltYWwgZGlnaXRzICopXG5cbiAgbGV0IGlzX2RpZ2l0ID0gZnVuY3Rpb24gJzAnIC4uICc5JyAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuICBsZXQgZGlnaXRfdG9faW50ID0gZnVuY3Rpb25cbiAgICB8ICcwJyAuLiAnOScgYXMgYyAtPiBjb2RlIGMgLSAweDMwXG4gICAgfCBjIC0+IGludmFsaWRfYXJnIChlc2NhcGVkIGMgXiBcIjogbm90IGEgZGVjaW1hbCBkaWdpdFwiKVxuXG4gIGxldCBkaWdpdF9vZl9pbnQgbiA9IHVuc2FmZV9jaHIgKDB4MzAgKyBhYnMgKG4gbW9kIDEwKSlcblxuICAoKiBIZXhhZGVjaW1hbCBkaWdpdHMgKilcblxuICBsZXQgaXNfaGV4X2RpZ2l0ID0gZnVuY3Rpb25cbiAgICB8ICcwJyAuLiAnOScgfCAnQScgLi4gJ0YnIHwgJ2EnIC4uICdmJyAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG5cbiAgbGV0IGhleF9kaWdpdF90b19pbnQgPSBmdW5jdGlvblxuICAgIHwgJzAnIC4uICc5JyBhcyBjIC0+IGNvZGUgYyAtIDB4MzBcbiAgICB8ICdBJyAuLiAnRicgYXMgYyAtPiAxMCArIGNvZGUgYyAtIDB4NDFcbiAgICB8ICdhJyAuLiAnZicgYXMgYyAtPiAxMCArIGNvZGUgYyAtIDB4NjFcbiAgICB8IGMgLT4gaW52YWxpZF9hcmcgKGVzY2FwZWQgYyBeIFwiOiBub3QgYSBoZXhhZGVjaW1hbCBkaWdpdFwiKVxuXG4gIGxldCBsb3dlcl9oZXhfZGlnaXRfb2ZfaW50IG4gPVxuICAgIGxldCBkID0gYWJzIChuIG1vZCAxNikgaW5cbiAgICB1bnNhZmVfY2hyIChpZiBkIDwgMTAgdGhlbiAweDMwICsgZCBlbHNlIDB4NTcgKyBkKVxuXG4gIGxldCB1cHBlcl9oZXhfZGlnaXRfb2ZfaW50IG4gPVxuICAgIGxldCBkID0gYWJzIChuIG1vZCAxNikgaW5cbiAgICB1bnNhZmVfY2hyIChpZiBkIDwgMTAgdGhlbiAweDMwICsgZCBlbHNlIDB4MzcgKyBkKVxuXG4gICgqIENhc2luZyB0cmFuc2Zvcm1zICopXG5cbiAgbGV0IGxvd2VyY2FzZSA9IGxvd2VyY2FzZV9hc2NpaVxuICBsZXQgdXBwZXJjYXNlID0gdXBwZXJjYXNlX2FzY2lpXG5lbmRcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9ieXRlc191bnNhZmVfc2V0IiwiY2FtbF9jcmVhdGVfYnl0ZXMiLCJjYW1sX2hhc2giLCJjYW1sX3N0cmluZ19vZl9ieXRlcyIsIlN0ZGxpYiIsImNociIsIm4iLCJlc2NhcGVkIiwiYyIsInMiLCJsb3dlcmNhc2VfYXNjaWkiLCJ1cHBlcmNhc2VfYXNjaWkiLCJjb21wYXJlIiwiYzEiLCJjMiIsImVxdWFsIiwic2VlZGVkX2hhc2giLCJzZWVkIiwieCIsImhhc2giLCJpc192YWxpZCIsInBhcmFtIiwiaXNfdXBwZXIiLCJpc19sb3dlciIsImlzX2xldHRlciIsImlzX2FscGhhbnVtIiwiaXNfd2hpdGUiLCJpc19ibGFuayIsImlzX2dyYXBoaWMiLCJpc19wcmludCIsImlzX2NvbnRyb2wiLCJpc19kaWdpdCIsImRpZ2l0X3RvX2ludCIsImRpZ2l0X29mX2ludCIsImlzX2hleF9kaWdpdCIsImhleF9kaWdpdF90b19pbnQiLCJsb3dlcl9oZXhfZGlnaXRfb2ZfaW50IiwiZCIsInVwcGVyX2hleF9kaWdpdF9vZl9pbnQiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsd0JBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLFlBQUE7QUFBQSxJQUFBQyx1QkFBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxZQUFBQyxJQUFBQztBQUFBQSxJQ3FCRSx1QkFBcUQ7QUFBQSxJQUE1Qix1Q0FBd0M7QUFBQTtBQUFBLFlBQUFDLFFBQUFDO0FBQUFBO0FBQUFBO0FBQUFBLEtBT3JEO0FBQUEsbUJBRUY7QUFBQSxNQUZFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsVUFNRjtBQUFBO0FBQUEsVUFGQTtBQUFBO0FBQUEsVUFEQTtBQUFBO0FBQUEsVUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BTEUsWUFDRjtBQUFBO0FBQUEsU0FBQUMsTUFPRTtBQUFBLEtBQ1I7QUFBQSxLQUNBLGdDQVFrQjtBQUFBO0FBQUEsUUFBQUEsSUFMVjtBQUFBLElBQ1I7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBLDhCQUFrQjtBQUFBO0FBQUEsWUFBQUMsZ0JBQUFGLEdBRUYseUNBRVo7QUFBQSxZQUFBRyxnQkFBQUgsR0FFWSx5Q0FFWjtBQUFBLFlBQUFJLFFBQUFDLElBQUFDLElBSVUsbUJBQWlCO0FBQUEsWUFBQUMsTUFBQUYsSUFBQUMsSUFDSSxtQ0FBSTtBQUFBLFlBQUFFLFlBQUFDLE1BQUFDLEdBSXBCLGtDQUErQjtBQUFBLFlBQUFDLEtBQUFELEdBQzNDLCtCQUE0QjtBQUFBLFlBQUFFLFNBQUFDLE9BV3hCLDJCQUE4QztBQUFBLFlBQUFDLFNBQUFELE9BQzlDLG9DQUF3QztBQUFBLFlBQUFFLFNBQUFGLE9BQ3hDLG9DQUF3QztBQUFBLFlBQUFHLFVBQUFIO0FBQUFBO0FBQUFBO0FBQUFBLEtBQ3ZDO0FBQUE7QUFBQTtBQUFBO0FBQUEsS0FBb0M7QUFBQTtBQUFBLElBQVk7QUFBQSxHQUFLO0FBQUEsWUFBQUksWUFBQUo7QUFBQUEsUUFBQSxJQUNuRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEtBQzBCO0FBQUE7QUFBQSxJQUFZO0FBQUEsR0FBSztBQUFBLFlBQUFLLFNBQUFMO0FBQUFBO0FBQUFBO0FBQUFBLEtBRTlDO0FBQUEsS0FBZ0M7QUFBQTtBQUFBLElBQVk7QUFBQSxHQUFLO0FBQUEsWUFBQU0sU0FBQU47QUFBQUEsSUFDakQsZ0NBQW1DO0FBQUEsSUFBWjtBQUFBLEdBQWlCO0FBQUEsWUFBQU8sV0FBQVAsT0FDdEMsb0NBQXdDO0FBQUEsWUFBQVEsU0FBQVIsT0FDMUMsb0NBQXdDO0FBQUEsWUFBQVMsV0FBQVQ7QUFBQUEsSUFDdEMsaUNBQWtEO0FBQUEsSUFBWjtBQUFBLEdBQWlCO0FBQUEsWUFBQVUsU0FBQVYsT0FJekQsbUNBQXdDO0FBQUEsWUFBQVcsYUFBQXhCO0FBQUFBLElBQ3BDLHNCQUNJO0FBQUEsWUFDRCxnQkFBRDtBQUFBLElBQXFDO0FBQUE7QUFBQSxZQUFBeUIsYUFBQTNCO0FBQUFBLElBRWxCLGlEQUFjO0FBQUEsR0FBQztBQUFBLFlBQUE0QixhQUFBYjtBQUFBQSxRQUFBLElBSXBDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsS0FDeUI7QUFBQTtBQUFBLElBQ25DO0FBQUEsR0FBSztBQUFBLFlBQUFjLGlCQUFBM0I7QUFBQUEsSUFFUztBQUFBO0FBQUEsa0JBR0E7QUFBQTtBQUFBLHFCQURBO0FBQUE7QUFBQSwrQkFEQTtBQUFBO0FBQUEsU0FHRDtBQUFBLFNBQUQ7QUFBQSxJQUF5QztBQUFBO0FBQUEsWUFBQTRCLHVCQUFBOUI7QUFBQUEsUUFBQStCLElBR3BEO0FBQUEsSUFDUix3Q0FBa0Q7QUFBQTtBQUFBLFlBQUFDLHVCQUFBaEM7QUFBQUEsUUFBQStCLElBRzFDO0FBQUEsSUFDUix3Q0FBa0Q7QUFBQTtBQUFBLEdEbkh0RCIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjExNzk3LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvdWNoYXIubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgIERhbmllbCBDLiBCdWVuemxpICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4dGVybmFsIGZvcm1hdF9pbnQgOiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfaW50XCJcblxubGV0IGVycl9ub19wcmVkID0gXCJVKzAwMDAgaGFzIG5vIHByZWRlY2Vzc29yXCJcbmxldCBlcnJfbm9fc3VjYyA9IFwiVSsxMEZGRkYgaGFzIG5vIHN1Y2Nlc3NvclwiXG5sZXQgZXJyX25vdF9zdiBpID0gZm9ybWF0X2ludCBcIiVYXCIgaSBeIFwiIGlzIG5vdCBhIFVuaWNvZGUgc2NhbGFyIHZhbHVlXCJcbmxldCBlcnJfbm90X2xhdGluMSB1ID0gXCJVK1wiIF4gZm9ybWF0X2ludCBcIiUwNFhcIiB1IF4gXCIgaXMgbm90IGEgbGF0aW4xIGNoYXJhY3RlclwiXG5cbnR5cGUgdCA9IGludFxuXG5sZXQgbWluID0gMHgwMDAwXG5sZXQgbWF4ID0gMHgxMEZGRkZcbmxldCBsb19ib3VuZCA9IDB4RDdGRlxubGV0IGhpX2JvdW5kID0gMHhFMDAwXG5cbmxldCBib20gPSAweEZFRkZcbmxldCByZXAgPSAweEZGRkRcblxubGV0IHN1Y2MgdSA9XG4gIGlmIHUgPSBsb19ib3VuZCB0aGVuIGhpX2JvdW5kIGVsc2VcbiAgaWYgdSA9IG1heCB0aGVuIGludmFsaWRfYXJnIGVycl9ub19zdWNjIGVsc2VcbiAgdSArIDFcblxubGV0IHByZWQgdSA9XG4gIGlmIHUgPSBoaV9ib3VuZCB0aGVuIGxvX2JvdW5kIGVsc2VcbiAgaWYgdSA9IG1pbiB0aGVuIGludmFsaWRfYXJnIGVycl9ub19wcmVkIGVsc2VcbiAgdSAtIDFcblxubGV0IGlzX3ZhbGlkIGkgPSAobWluIDw9IGkgJiYgaSA8PSBsb19ib3VuZCkgfHwgKGhpX2JvdW5kIDw9IGkgJiYgaSA8PSBtYXgpXG5sZXQgb2ZfaW50IGkgPSBpZiBpc192YWxpZCBpIHRoZW4gaSBlbHNlIGludmFsaWRfYXJnIChlcnJfbm90X3N2IGkpXG5leHRlcm5hbCB1bnNhZmVfb2ZfaW50IDogaW50IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB0b19pbnQgOiB0IC0+IGludCA9IFwiJWlkZW50aXR5XCJcblxubGV0IGlzX2NoYXIgdSA9IHUgPCAyNTZcbmxldCBvZl9jaGFyIGMgPSBDaGFyLmNvZGUgY1xubGV0IHRvX2NoYXIgdSA9XG4gIGlmIHUgPiAyNTUgdGhlbiBpbnZhbGlkX2FyZyAoZXJyX25vdF9sYXRpbjEgdSkgZWxzZVxuICBDaGFyLnVuc2FmZV9jaHIgdVxuXG5sZXQgdW5zYWZlX3RvX2NoYXIgPSBDaGFyLnVuc2FmZV9jaHJcblxubGV0IGVxdWFsIDogaW50IC0+IGludCAtPiBib29sID0gKCA9IClcbmxldCBjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQgPSBTdGRsaWIuY29tcGFyZVxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuXG4oKiBVVEYgY29kZWNzIHRvb2xzICopXG5cbnR5cGUgdXRmX2RlY29kZSA9IGludFxuKCogVGhpcyBpcyBhbiBpbnQgWzB4RFVVVVVVVV0gZGVjb21wb3NlZCBhcyBmb2xsb3dzOlxuICAgLSBbRF0gaXMgZm91ciBiaXRzIGZvciBkZWNvZGUgaW5mb3JtYXRpb24sIHRoZSBoaWdoZXN0IGJpdCBpcyBzZXQgaWYgdGhlXG4gICAgIGRlY29kZSBpcyB2YWxpZC4gVGhlIHRocmVlIGxvd2VyIGJpdHMgaW5kaWNhdGUgdGhlIG51bWJlciBvZiBlbGVtZW50c1xuICAgICBmcm9tIHRoZSBzb3VyY2UgdGhhdCB3ZXJlIGNvbnN1bWVkIGJ5IHRoZSBkZWNvZGUuXG4gICAtIFtVVVVVVVVdIGlzIHRoZSBkZWNvZGVkIFVuaWNvZGUgY2hhcmFjdGVyIG9yIHRoZSBVbmljb2RlIHJlcGxhY2VtZW50XG4gICAgIGNoYXJhY3RlciBVK0ZGRkQgaWYgZm9yIGludmFsaWQgZGVjb2Rlcy4gKilcblxubGV0IHZhbGlkX2JpdCA9IDI3XG5sZXQgZGVjb2RlX2JpdHMgPSAyNFxuXG5sZXRbQGlubGluZV0gdXRmX2RlY29kZV9pc192YWxpZCBkID0gKGQgbHNyIHZhbGlkX2JpdCkgPSAxXG5sZXRbQGlubGluZV0gdXRmX2RlY29kZV9sZW5ndGggZCA9IChkIGxzciBkZWNvZGVfYml0cykgbGFuZCAwYjExMVxubGV0W0BpbmxpbmVdIHV0Zl9kZWNvZGVfdWNoYXIgZCA9IHVuc2FmZV9vZl9pbnQgKGQgbGFuZCAweEZGRkZGRilcbmxldFtAaW5saW5lXSB1dGZfZGVjb2RlIG4gdSA9ICgoOCBsb3IgbikgbHNsIGRlY29kZV9iaXRzKSBsb3IgKHRvX2ludCB1KVxubGV0W0BpbmxpbmVdIHV0Zl9kZWNvZGVfaW52YWxpZCBuID0gKG4gbHNsIGRlY29kZV9iaXRzKSBsb3IgcmVwXG5cbmxldCB1dGZfOF9kZWNvZGVfbGVuZ3RoX29mX2J5dGUgPSBmdW5jdGlvblxuICB8ICdcXHgwMCcgLi4gJ1xceDdGJyAtPiAxXG4gIHwgJ1xceDgwJyAuLiAnXFx4QzEnIC0+IDBcbiAgfCAnXFx4QzInIC4uICdcXHhERicgLT4gMlxuICB8ICdcXHhFMCcgLi4gJ1xceEVGJyAtPiAzXG4gIHwgJ1xceEYwJyAuLiAnXFx4RjQnIC0+IDRcbiAgfCBfIC0+IDBcblxubGV0IG1heF91dGZfOF9kZWNvZGVfbGVuZ3RoID0gNFxuXG5sZXQgdXRmXzhfYnl0ZV9sZW5ndGggdSA9IG1hdGNoIHRvX2ludCB1IHdpdGhcbnwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxufCB1IHdoZW4gdSA8PSAweDAwN0YgLT4gMVxufCB1IHdoZW4gdSA8PSAweDA3RkYgLT4gMlxufCB1IHdoZW4gdSA8PSAweEZGRkYgLT4gM1xufCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPiA0XG58IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCB1dGZfMTZfYnl0ZV9sZW5ndGggdSA9IG1hdGNoIHRvX2ludCB1IHdpdGhcbnwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxufCB1IHdoZW4gdSA8PSAweEZGRkYgLT4gMlxufCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPiA0XG58IF8gLT4gYXNzZXJ0IGZhbHNlXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfZm9ybWF0X2ludCIsImNhbWxfaGFzaCIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImdsb2JhbF9kYXRhIiwiQXNzZXJ0X2ZhaWx1cmUiLCJTdGRsaWIiLCJzdWNjIiwidSIsInByZWQiLCJpc192YWxpZCIsImkiLCJvZl9pbnQiLCJpc19jaGFyIiwib2ZfY2hhciIsImMiLCJ0b19jaGFyIiwidW5zYWZlX3RvX2NoYXIiLCJlcXVhbCIsImNvbXBhcmUiLCJzZWVkZWRfaGFzaCIsInNlZWQiLCJ4IiwiaGFzaCIsInV0Zl9kZWNvZGVfaXNfdmFsaWQiLCJkIiwidXRmX2RlY29kZV9sZW5ndGgiLCJ1dGZfZGVjb2RlX3VjaGFyIiwidXRmX2RlY29kZSIsIm4iLCJ1dGZfZGVjb2RlX2ludmFsaWQiLCJ1dGZfOF9kZWNvZGVfbGVuZ3RoX29mX2J5dGUiLCJwYXJhbSIsImNzdF91Y2hhcl9tbCIsInV0Zl84X2J5dGVfbGVuZ3RoIiwidXRmXzE2X2J5dGVfbGVuZ3RoIiwiU3RkbGliX1VjaGFyIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLGtCQUFBO0FBQUEsSUFBQUMsWUFBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLFlBQUFDLEtBQUFDO0FBQUFBLElDaUNFO0FBQUE7QUFBQTtBQUFBO0FBQUEsZ0JBQ2dCO0FBQUEseUJBQ1g7QUFBQTtBQUFBLFlBQUFDLEtBQUFEO0FBQUFBLElBR0w7QUFBQTtBQUFBO0FBQUE7QUFBQSxnQkFDZ0I7QUFBQSx5QkFDWDtBQUFBO0FBQUEsWUFBQUUsU0FBQUM7QUFBQUEsUUFBQSxJQUVVO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEdBQTBEO0FBQUEsWUFBQUMsT0FBQUQ7QUFBQUEsSUFDekQsZ0JBQWdCO0FBQUE7QUFBQTtBQUFBLE9BeEJFO0FBQUEsZUFBakI7QUFBQSxJQXdCZ0Q7QUFBQTtBQUFBLFlBQUFFLFFBQUFMLEdBSW5ELHVCQUFPO0FBQUEsWUFBQU0sUUFBQUMsR0FDUCxTQUFXO0FBQUEsWUFBQUMsUUFBQVI7QUFBQUEsSUFFekIsYUFDQTtBQUFBO0FBQUE7QUFBQSxPQS9CNEI7QUFBQTtBQUFBLFNBQWtEO0FBQUEsSUE4QmhDLDhCQUM3QjtBQUFBO0FBQUEsWUFBQVMsZUFBQSxHRG5EbkI7QUFBQSxZQUFBQyxNQUFBO0FBQUEsT0FBQUMsVUFBQTtBQUFBLFlBQUFDLFlBQUFDLE1BQUFDLEdDNER5QixrQ0FBK0I7QUFBQSxZQUFBQyxLQUFBRCxHQUMzQywrQkFBNEI7QUFBQSxZQUFBRSxvQkFBQUMsR0FlSixvQ0FBcUI7QUFBQSxZQUFBQyxrQkFBQUQsR0FDdkIsMEJBQThCO0FBQUEsWUFBQUUsaUJBQUFGLEdBQy9CLG9CQUErQjtBQUFBLFlBQUFHLFdBQUFDLEdBQUFyQixHQUNuQyx5QkFBMEM7QUFBQSxZQUFBc0IsbUJBQUFELEdBQ3BDLHVCQUEyQjtBQUFBLFlBQUFFLDRCQUFBQztBQUFBQSxJQUU3QjtBQUFBO0FBQUEsa0NBTXhCO0FBQUE7QUFBQTtBQUFBLElBQUFDLGVEeEZWO0FBQUE7QUFBQTtBQUFBLFlBQUFDLGtCQUFBMUI7QUFBQUEsSUM2RlMsVUFBUztBQUFBLElBQ1QsYUFBZTtBQUFBLElBQ2YsY0FBZTtBQUFBLElBQ2YsZUFBZTtBQUFBLElBQ2Y7QUFBQSxLQUNGO0FBQUEsSUFEbUI7QUFBQSxHQUNQO0FBQUEsV0RsR25CO0FBQUEsWUFBQTJCLG1CQUFBM0I7QUFBQUEsSUNxR1MsVUFBUztBQUFBLElBQ1QsZUFBZTtBQUFBLElBQ2Y7QUFBQSxLQUNGO0FBQUEsSUFEbUI7QUFBQSxHQUNQO0FBQUE7QUFBQSxJQUFBNEI7QUFBQUEsTUR4R25CIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MTE5MjQsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9saXN0Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBbiBhbGlhcyBmb3IgdGhlIHR5cGUgb2YgbGlzdHMuICopXG50eXBlICdhIHQgPSAnYSBsaXN0ID0gW10gfCAoOjopIG9mICdhICogJ2EgbGlzdFxuXG4oKiBMaXN0IG9wZXJhdGlvbnMgKilcblxubGV0IHJlYyBsZW5ndGhfYXV4IGxlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gbGVuXG4gIHwgXzo6bCAtPiBsZW5ndGhfYXV4IChsZW4gKyAxKSBsXG5cbmxldCBsZW5ndGggbCA9IGxlbmd0aF9hdXggMCBsXG5cbmxldCBjb25zIGEgbCA9IGE6OmxcblxubGV0IHNpbmdsZXRvbiBhID0gW2FdXG5cbmxldCBoZCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFpbHdpdGggXCJoZFwiXG4gIHwgYTo6XyAtPiBhXG5cbmxldCB0bCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFpbHdpdGggXCJ0bFwiXG4gIHwgXzo6bCAtPiBsXG5cbmxldCBudGggbCBuID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkxpc3QubnRoXCIgZWxzZVxuICBsZXQgcmVjIG50aF9hdXggbCBuID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+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+IFtdXG4gIHwgeDo6eHMgLT4gcHJlcGVuZF9jb25jYXRfbWFwIChmIHgpIGYgeHNcbmFuZFtAdGFpbF9tb2RfY29uc10gcHJlcGVuZF9jb25jYXRfbWFwIHlzIGYgeHMgPVxuICBtYXRjaCB5cyB3aXRoXG4gIHwgW10gLT4gY29uY2F0X21hcCBmIHhzXG4gIHwgeSA6OiB5cyAtPiB5IDo6IHByZXBlbmRfY29uY2F0X21hcCB5cyBmIHhzXG5cbmxldCB0YWtlIG4gbCA9XG4gIGxldFtAdGFpbF9tb2RfY29uc10gcmVjIGF1eCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMCwgXyB8IF8sIFtdIC0+IFtdXG4gICAgfCBuLCB4OjpsIC0+IHg6OmF1eCAobiAtIDEpIGxcbiAgaW5cbiAgaWYgbiA8PSAwIHRoZW4gW10gZWxzZSBhdXggbiBsXG5cbmxldCBkcm9wIG4gbCA9XG4gIGxldCByZWMgYXV4IGkgPSBmdW5jdGlvblxuICAgIHwgX3g6Omwgd2hlbiBpIDwgbiAtPiBhdXggKGkgKyAxKSBsXG4gICAgfCByZXN0IC0+IHJlc3RcbiAgaW5cbiAgaWYgbiA8PSAwIHRoZW4gbCBlbHNlIGF1eCAwIGxcblxubGV0IHRha2Vfd2hpbGUgcCBsID1cbiAgbGV0W0B0YWlsX21vZF9jb25zXSByZWMgYXV4ID0gZnVuY3Rpb25cbiAgICB8IHg6Omwgd2hlbiBwIHggLT4geDo6YXV4IGxcbiAgICB8IF9yZXN0IC0+IFtdXG4gIGluXG4gIGF1eCBsXG5cbmxldCByZWMgZHJvcF93aGlsZSBwID0gZnVuY3Rpb25cbiAgfCB4OjpsIHdoZW4gcCB4IC0+IGRyb3Bfd2hpbGUgcCBsXG4gIHwgcmVzdCAtPiByZXN0XG5cbmxldCBmb2xkX2xlZnRfbWFwIGYgYWNjdSBsID1cbiAgbGV0IHJlYyBhdXggYWNjdSBsX2FjY3UgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjdSwgcmV2IGxfYWNjdVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIGxldCBhY2N1LCB4ID0gZiBhY2N1IHggaW5cbiAgICAgICAgYXV4IGFjY3UgKHggOjogbF9hY2N1KSBsIGluXG4gIGF1eCBhY2N1IFtdIGxcblxubGV0IHBhcnRpdGlvbiBwIGwgPVxuICBsZXQgcmVjIHBhcnQgeWVzIG5vID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAocmV2IHllcywgcmV2IG5vKVxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiBwYXJ0ICh4IDo6IHllcykgbm8gbCBlbHNlIHBhcnQgeWVzICh4IDo6IG5vKSBsIGluXG4gIHBhcnQgW10gW10gbFxuXG5sZXQgcGFydGl0aW9uX21hcCBwIGwgPVxuICBsZXQgcmVjIHBhcnQgbGVmdCByaWdodCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKHJldiBsZWZ0LCByZXYgcmlnaHQpXG4gIHwgeCA6OiBsIC0+XG4gICAgIGJlZ2luIG1hdGNoIHAgeCB3aXRoXG4gICAgICAgfCBFaXRoZXIuTGVmdCB2IC0+IHBhcnQgKHYgOjogbGVmdCkgcmlnaHQgbFxuICAgICAgIHwgRWl0aGVyLlJpZ2h0IHYgLT4gcGFydCBsZWZ0ICh2IDo6IHJpZ2h0KSBsXG4gICAgIGVuZFxuICBpblxuICBwYXJ0IFtdIFtdIGxcblxubGV0IHJlYyBzcGxpdCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKFtdLCBbXSlcbiAgfCAoeCx5KTo6bCAtPlxuICAgICAgbGV0IChyeCwgcnkpID0gc3BsaXQgbCBpbiAoeDo6cngsIHk6OnJ5KVxuXG5sZXQgcmVjIGNvbWJpbmUgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gW11cbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IChhMSwgYTIpIDo6IGNvbWJpbmUgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmNvbWJpbmVcIlxuXG4oKiogc29ydGluZyAqKVxuXG5sZXQgcmVjIG1lcmdlIGNtcCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIGwyIC0+IGwyXG4gIHwgbDEsIFtdIC0+IGwxXG4gIHwgaDEgOjogdDEsIGgyIDo6IHQyIC0+XG4gICAgICBpZiBjbXAgaDEgaDIgPD0gMFxuICAgICAgdGhlbiBoMSA6OiBtZXJnZSBjbXAgdDEgbDJcbiAgICAgIGVsc2UgaDIgOjogbWVyZ2UgY21wIGwxIHQyXG5cblxubGV0IHN0YWJsZV9zb3J0IGNtcCBsID1cbiAgbGV0IHJlYyByZXZfbWVyZ2UgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGlmIGNtcCBoMSBoMiA8PSAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlIHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2UgbDEgdDIgKGgyOjphY2N1KVxuICBpblxuICBsZXQgcmVjIHJldl9tZXJnZV9yZXYgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGlmIGNtcCBoMSBoMiA+IDBcbiAgICAgICAgdGhlbiByZXZfbWVyZ2VfcmV2IHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2VfcmV2IGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyBzb3J0IG4gbCA9XG4gICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgfCAyLCB4MSA6OiB4MiA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9IGlmIGNtcCB4MSB4MiA8PSAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXSBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgaWYgY21wIHgxIHgyIDw9IDAgdGhlblxuICAgICAgICAgICAgaWYgY21wIHgyIHgzIDw9IDAgdGhlbiBbeDE7IHgyOyB4M11cbiAgICAgICAgICAgIGVsc2UgaWYgY21wIHgxIHgzIDw9IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPD0gMCB0aGVuIFt4MjsgeDE7IHgzXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgyIHgzIDw9IDAgdGhlbiBbeDI7IHgzOyB4MV1cbiAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSByZXZfc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSByZXZfc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlX3JldiBzMSBzMiBbXSwgdGwpXG4gIGFuZCByZXZfc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPSBpZiBjbXAgeDEgeDIgPiAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXSBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgaWYgY21wIHgxIHgyID4gMCB0aGVuXG4gICAgICAgICAgICBpZiBjbXAgeDIgeDMgPiAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlIGlmIGNtcCB4MSB4MyA+IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPiAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDIgeDMgPiAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgZWxzZSBbeDM7IHgyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgbiwgbCAtPlxuICAgICAgICBsZXQgbjEgPSBuIGFzciAxIGluXG4gICAgICAgIGxldCBuMiA9IG4gLSBuMSBpblxuICAgICAgICBsZXQgczEsIGwyID0gc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSBzb3J0IG4yIGwyIGluXG4gICAgICAgIChyZXZfbWVyZ2UgczEgczIgW10sIHRsKVxuICBpblxuICBsZXQgbGVuID0gbGVuZ3RoIGwgaW5cbiAgaWYgbGVuIDwgMiB0aGVuIGwgZWxzZSBmc3QgKHNvcnQgbGVuIGwpXG5cblxubGV0IHNvcnQgPSBzdGFibGVfc29ydFxubGV0IGZhc3Rfc29ydCA9IHN0YWJsZV9zb3J0XG5cbigqIE5vdGU6IG9uIGEgdmVyeSBsb25nIGxpc3QgKGxlbmd0aCBvdmVyIGFib3V0IDEwMDAwMCksIGl0IHVzZWQgdG8gYmVcbiAgIGZhc3RlciB0byBjb252ZXJ0IHRoZSBsaXN0IHRvIGFuIGFycmF5LCBzb3J0IHRoZSBhcnJheSwgYW5kIGNvbnZlcnRcbiAgIGJhY2ssIHRydW5jYXRpbmcgdGhlIGFycmF5IG9iamVjdCBhZnRlciBwcmVwZW5kaW5nIGVhY2ggdGhvdXNhbmRcbiAgIGVudHJpZXMgdG8gdGhlIHJlc3VsdGluZyBsaXN0LiBJbXBvc3NpYmxlIG5vdyB0aGF0IE9iai50cnVuY2F0ZSBoYXNcbiAgIGJlZW4gcmVtb3ZlZC4gKilcblxuKCoqIHNvcnRpbmcgKyByZW1vdmluZyBub24tZmlyc3QgZHVwbGljYXRlcyAqKVxuXG5sZXQgc29ydF91bmlxIGNtcCBsID1cbiAgbGV0IHJlYyByZXZfbWVyZ2UgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGxldCBjID0gY21wIGgxIGgyIGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW4gcmV2X21lcmdlIHQxIHQyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIHJldl9tZXJnZSB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlIGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyByZXZfbWVyZ2VfcmV2IGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBsMiBhY2N1XG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBsMSBhY2N1XG4gICAgfCBoMTo6dDEsIGgyOjp0MiAtPlxuICAgICAgICBsZXQgYyA9IGNtcCBoMSBoMiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuIHJldl9tZXJnZV9yZXYgdDEgdDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIGlmIGMgPiAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlX3JldiB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlX3JldiBsMSB0MiAoaDI6OmFjY3UpXG4gIGluXG4gIGxldCByZWMgc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDFdIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MV0gZWxzZSBpZiBjIDwgMCB0aGVuIFt4MTsgeDNdIGVsc2UgW3gzOyB4MV1cbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSByZXZfc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSByZXZfc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlX3JldiBzMSBzMiBbXSwgdGwpXG4gIGFuZCByZXZfc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDFdIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MV0gZWxzZSBpZiBjID4gMCB0aGVuIFt4MTsgeDNdIGVsc2UgW3gzOyB4MV1cbiAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSBzb3J0IG4xIGwgaW5cbiAgICAgICAgbGV0IHMyLCB0bCA9IHNvcnQgbjIgbDIgaW5cbiAgICAgICAgKHJldl9tZXJnZSBzMSBzMiBbXSwgdGwpXG4gIGluXG4gIGxldCBsZW4gPSBsZW5ndGggbCBpblxuICBpZiBsZW4gPCAyIHRoZW4gbCBlbHNlIGZzdCAoc29ydCBsZW4gbClcblxuXG5sZXQgcmVjIGNvbXBhcmVfbGVuZ3RocyBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IDBcbiAgfCBbXSwgXyAtPiAtMVxuICB8IF8sIFtdIC0+IDFcbiAgfCBfIDo6IGwxLCBfIDo6IGwyIC0+IGNvbXBhcmVfbGVuZ3RocyBsMSBsMlxuXG5sZXQgcmVjIGNvbXBhcmVfbGVuZ3RoX3dpdGggbCBuID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT5cbiAgICBpZiBuID0gMCB0aGVuIDAgZWxzZVxuICAgICAgaWYgbiA+IDAgdGhlbiAtMSBlbHNlIDFcbiAgfCBfIDo6IGwgLT5cbiAgICBpZiBuIDw9IDAgdGhlbiAxIGVsc2VcbiAgICAgIGNvbXBhcmVfbGVuZ3RoX3dpdGggbCAobi0xKVxuXG5sZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICB8IFtdIC0+IHRydWVcbiAgfCBfIDo6IF8gLT4gZmFsc2VcblxuKCoqIHsxIENvbXBhcmlzb259ICopXG5cbigqIE5vdGU6IHdlIGFyZSAqbm90KiBzaG9ydGN1dHRpbmcgdGhlIGxpc3QgYnkgdXNpbmdcbiAgIFtMaXN0LmNvbXBhcmVfbGVuZ3Roc10gZmlyc3Q7IHRoaXMgbWF5IGJlIHNsb3dlciBvbiBsb25nIGxpc3RzXG4gICBpbW1lZGlhdGVseSBzdGFydCB3aXRoIGRpc3RpbmN0IGVsZW1lbnRzLiBJdCBpcyBhbHNvIGluY29ycmVjdCBmb3JcbiAgIFtjb21wYXJlXSBiZWxvdywgYW5kIGl0IGlzIGJldHRlciAocHJpbmNpcGxlIG9mIGxlYXN0IHN1cnByaXNlKSB0b1xuICAgdXNlIHRoZSBzYW1lIGFwcHJvYWNoIGZvciBib3RoIGZ1bmN0aW9ucy4gKilcbmxldCByZWMgZXF1YWwgZXEgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiB0cnVlXG4gIHwgW10sIF86Ol8gfCBfOjpfLCBbXSAtPiBmYWxzZVxuICB8IGExOjpsMSwgYTI6OmwyIC0+IGVxIGExIGEyICYmIGVxdWFsIGVxIGwxIGwyXG5cbmxldCByZWMgY29tcGFyZSBjbXAgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiAwXG4gIHwgW10sIF86Ol8gLT4gLTFcbiAgfCBfOjpfLCBbXSAtPiAxXG4gIHwgYTE6OmwxLCBhMjo6bDIgLT5cbiAgICBsZXQgYyA9IGNtcCBhMSBhMiBpblxuICAgIGlmIGMgPD4gMCB0aGVuIGNcbiAgICBlbHNlIGNvbXBhcmUgY21wIGwxIGwyXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgbCA9XG4gIGxldCByZWMgYXV4IGwgKCkgPSBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IFNlcS5OaWxcbiAgICB8IHggOjogdGFpbCAtPiBTZXEuQ29ucyAoeCwgYXV4IHRhaWwpXG4gIGluXG4gIGF1eCBsXG5cbmxldFtAdGFpbF9tb2RfY29uc10gcmVjIG9mX3NlcSBzZXEgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IFNlcS5OaWwgLT4gW11cbiAgfCBTZXEuQ29ucyAoeDEsIHNlcSkgLT5cbiAgICAgIGJlZ2luIG1hdGNoIHNlcSAoKSB3aXRoXG4gICAgICB8IFNlcS5OaWwgLT4gW3gxXVxuICAgICAgfCBTZXEuQ29ucyAoeDIsIHNlcSkgLT4geDEgOjogeDIgOjogb2Zfc2VxIHNlcVxuICAgICAgZW5kXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY29tcGFyZSIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJjYW1sX2NhbGwzIiwiYTIiLCJTdGRsaWIiLCJsZW5ndGgiLCJsIiwibGVuIiwicGFyYW0iLCJjb25zIiwiYSIsInNpbmdsZXRvbiIsImhkIiwidGwiLCJjc3RfTGlzdF9udGgiLCJudGgiLCJuIiwibnRoX29wdCIsImFwcGVuZCIsInJldl9hcHBlbmQiLCJsMSIsImwyIiwicmV2IiwiaW5pdCIsImxhc3QiLCJpIiwicjEiLCJyMiIsImJsb2NrIiwiZHN0Iiwib2Zmc2V0IiwiZmxhdHRlbiIsInIiLCJtYXAiLCJtYXRjaCIsIm1hcGkiLCJyZXZfbWFwIiwiYWNjdSIsIml0ZXIiLCJpdGVyaSIsImZvbGRfbGVmdCIsImZvbGRfcmlnaHQiLCJtYXAyIiwiY3N0X0xpc3RfbWFwMiIsImIyIiwiYjEiLCJyZXZfbWFwMiIsIml0ZXIyIiwiZm9sZF9sZWZ0MiIsImZvbGRfcmlnaHQyIiwiZm9yX2FsbCIsInAiLCJleGlzdHMiLCJmb3JfYWxsMiIsImV4aXN0czIiLCJtZW0iLCJ4IiwibWVtcSIsImFzc29jIiwiYiIsImFzc29jX29wdCIsImFzc3EiLCJhc3NxX29wdCIsIm1lbV9hc3NvYyIsIm1lbV9hc3NxIiwicmVtb3ZlX2Fzc29jIiwicGFpciIsInJlbW92ZV9hc3NxIiwiZmluZCIsImZpbmRfb3B0IiwiZmluZF9pbmRleCIsImZpbmRfbWFwIiwicmVzdWx0IiwiZmluZF9tYXBpIiwiZmluZF9hbGwiLCJmaWx0ZXJpIiwiZmlsdGVyX21hcCIsInYiLCJjb25jYXRfbWFwIiwieHMiLCJ5cyIsInkiLCJ0YWtlIiwiZHJvcCIsInJlc3QiLCJ0YWtlX3doaWxlIiwiZHJvcF93aGlsZSIsImZvbGRfbGVmdF9tYXAiLCJsX2FjY3UiLCJwYXJ0aXRpb24iLCJ5ZXMiLCJubyIsInBhcnRpdGlvbl9tYXAiLCJsZWZ0IiwicmlnaHQiLCJzcGxpdCIsInJ5IiwicngiLCJjb21iaW5lIiwibWVyZ2UiLCJjbXAiLCJ0MiIsImgyIiwidDEiLCJoMSIsInN0YWJsZV9zb3J0Iiwic29ydCIsIngyIiwieDEiLCJzIiwieDMiLCJuMSIsIm4yIiwiczEiLCJzMiIsInJldl9zb3J0Iiwic29ydF91bmlxIiwiYyIsImNvbXBhcmVfbGVuZ3RocyIsImNvbXBhcmVfbGVuZ3RoX3dpdGgiLCJpc19lbXB0eSIsImVxdWFsIiwiZXEiLCJjb21wYXJlIiwidG9fc2VxIiwiYXV4IiwidGFpbCIsIm9mX3NlcSIsInNlcSJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFKLEdBQUFDLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxPQUFBQyxTQUFBO0FBQUEsWUFBQUMsT0FB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MEJBQVIsc0JBQVE7QUFBQSxJQUFDO0FBQUEsSUFFdkM7QUFBQSxHQUFLO0FBQUEsWUFBQXVFLE9BQUFDO0FBQUFBLFFBQUE5RixRQUdDO0FBQUEsSUFBTSxZQUNDO0FBQUEsUUFBQThGLFFBREQsVUFBQXBCLEtBQUEsVUFBQTFFLFVBR0k7QUFBQSxJQUFNLGNBQ0w7QUFBQTtBQUFBLEtBQUE4RixRQURLO0FBQUEsS0FBQXJCLEtBQUE7QUFBQSxLQUFBL0UsUUFFTTtBQUFBLEtBQUFDLE1BQVk7QUFBQSxLQUFBQyxTQUFBO0FBQUEsS0FBQWtHLFFBQUE7QUFBQTtBQUFBLFNBQUE5RixVQUxsQztBQUFBLEtBQU07QUFBQTtBQUFBLE9BQUE4RixRQUFBO0FBQUEsT0FBQXBCLE9BQUE7QUFBQSxPQUFBMUUsVUFHSTtBQUFBLE1BQU07QUFBQSxXQUFBOEYsUUFBQSxZQUFBckIsT0FBQSxZQUFBOUUsUUFFTTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BRFg7QUFBQTtBQUFBO0FBQUEsTUFISjtBQUFBLEtBSXFDO0FBQUE7QUFBQSxHQUMzQztBQUFBLEdEcm1CVCIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjEzMzUwLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvaW50Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSBpbnRcblxubGV0IHplcm8gPSAwXG5sZXQgb25lID0gMVxubGV0IG1pbnVzX29uZSA9IC0xXG5leHRlcm5hbCBuZWcgOiBpbnQgLT4gaW50ID0gXCIlbmVnaW50XCJcbmV4dGVybmFsIGFkZCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYWRkaW50XCJcbmV4dGVybmFsIHN1YiA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlc3ViaW50XCJcbmV4dGVybmFsIG11bCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbXVsaW50XCJcbmV4dGVybmFsIGRpdiA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlZGl2aW50XCJcbmV4dGVybmFsIHJlbSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbW9kaW50XCJcbmV4dGVybmFsIHN1Y2MgOiBpbnQgLT4gaW50ID0gXCIlc3VjY2ludFwiXG5leHRlcm5hbCBwcmVkIDogaW50IC0+IGludCA9IFwiJXByZWRpbnRcIlxubGV0IGFicyB4ID0gaWYgeCA+PSAwIHRoZW4geCBlbHNlIC14XG5sZXQgbWF4X2ludCA9ICgtMSkgbHNyIDFcbmxldCBtaW5faW50ID0gbWF4X2ludCArIDFcbmV4dGVybmFsIGxvZ2FuZCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYW5kaW50XCJcbmV4dGVybmFsIGxvZ29yIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVvcmludFwiXG5leHRlcm5hbCBsb2d4b3IgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXhvcmludFwiXG5sZXQgbG9nbm90IHggPSBsb2d4b3IgeCAoLTEpXG5leHRlcm5hbCBzaGlmdF9sZWZ0IDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc2xpbnRcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFzcmludFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc3JpbnRcIlxubGV0IGVxdWFsIDogaW50IC0+IGludCAtPiBib29sID0gKCA9IClcbmxldCBjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQgPSBTdGRsaWIuY29tcGFyZVxubGV0IG1pbiB4IHkgOiB0ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5IDogdCA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5leHRlcm5hbCB0b19mbG9hdCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcblxuKCpcbmV4dGVybmFsIGludF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50ID0gXCJjYW1sX2ludF9vZl9zdHJpbmdcIlxubGV0IG9mX3N0cmluZyBzID0gdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgcykgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuKilcblxuZXh0ZXJuYWwgZm9ybWF0X2ludCA6IHN0cmluZyAtPiBpbnQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9pbnRcIlxubGV0IHRvX3N0cmluZyB4ID0gZm9ybWF0X2ludCBcIiVkXCIgeFxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2hhc2giLCJhYnMiLCJ4IiwibG9nbm90IiwiZXF1YWwiLCJjb21wYXJlIiwibWluIiwieSIsIm1heCIsInRvX3N0cmluZyIsInNlZWRlZF9oYXNoIiwic2VlZCIsImhhc2giXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBLHlCQUFBQyxZQUFBO0FBQUEsWUFBQUMsSUFBQUMsR0M0QlksMkJBQXdCO0FBQUEsWUFBQUMsT0FBQUQsR0FNckIsY0FBYTtBQUFBLFlBQUFFLE1BQUEsTURsQzVCO0FBQUEsT0FBQUMsVUFBQTtBQUFBLFlBQUFDLElBQUFKLEdBQUFLLEdDd0NrQixxQkFBdUI7QUFBQSxZQUFBQyxJQUFBTixHQUFBSyxHQUN2QixxQkFBdUI7QUFBQSxZQUFBRSxVQUFBUCxHQVVOO0FBQUEsWUFBQVEsWUFBQUMsTUFBQVQsR0FJVixrQ0FBK0I7QUFBQSxZQUFBVSxLQUFBVixHQUMzQywrQkFBNEI7QUFBQSxHRHhEekMiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjoxMzM4OCwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL2FycmF5Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBbiBhbGlhcyBmb3IgdGhlIHR5cGUgb2YgYXJyYXlzLiAqKVxudHlwZSAnYSB0ID0gJ2EgYXJyYXlcblxuKCogQXJyYXkgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBsZW5ndGggOiAnYSBhcnJheSAtPiBpbnQgPSBcIiVhcnJheV9sZW5ndGhcIlxuZXh0ZXJuYWwgZ2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgPSBcIiVhcnJheV9zYWZlX2dldFwiXG5leHRlcm5hbCBzZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlYXJyYXlfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhID0gXCIlYXJyYXlfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWFycmF5X3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgbWFrZTogaW50IC0+ICdhIC0+ICdhIGFycmF5ID0gXCJjYW1sX2FycmF5X21ha2VcIlxuZXh0ZXJuYWwgY3JlYXRlOiBpbnQgLT4gJ2EgLT4gJ2EgYXJyYXkgPSBcImNhbWxfYXJyYXlfbWFrZVwiXG5leHRlcm5hbCB1bnNhZmVfc3ViIDogJ2EgYXJyYXkgLT4gaW50IC0+IGludCAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9zdWJcIlxuZXh0ZXJuYWwgYXBwZW5kX3ByaW0gOiAnYSBhcnJheSAtPiAnYSBhcnJheSAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9hcHBlbmRcIlxuZXh0ZXJuYWwgY29uY2F0IDogJ2EgYXJyYXkgbGlzdCAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9jb25jYXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgOlxuICAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgYXJyYXkgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2FycmF5X2JsaXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2ZpbGwgOlxuICAnYSBhcnJheSAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYXJyYXlfZmlsbFwiXG5leHRlcm5hbCBjcmVhdGVfZmxvYXQ6IGludCAtPiBmbG9hdCBhcnJheSA9IFwiY2FtbF9hcnJheV9jcmVhdGVfZmxvYXRcIlxuXG5tb2R1bGUgRmxvYXRhcnJheSA9IHN0cnVjdFxuICBleHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gZmxvYXRhcnJheSA9IFwiY2FtbF9mbG9hdGFycmF5X2NyZWF0ZVwiXG4gIGV4dGVybmFsIGxlbmd0aCA6IGZsb2F0YXJyYXkgLT4gaW50ID0gXCIlZmxvYXRhcnJheV9sZW5ndGhcIlxuICBleHRlcm5hbCBnZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBzZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCAtPiB1bml0ID0gXCIlZmxvYXRhcnJheV9zYWZlX3NldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCAtPiB1bml0XG4gICAgICA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX3NldFwiXG5lbmRcblxubGV0IGluaXQgbCBmID1cbiAgaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2VcbiAgaWYgbCA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmluaXRcIlxuICAoKiBTZWUgIzY1NzUuIFdlIG11c3Qgbm90IGV2YWx1YXRlIFtmIDBdIHdoZW4gW2wgPD0gMF0uXG4gICAgIFdlIGNvdWxkIGFsc28gY2hlY2sgZm9yIG1heGltdW0gYXJyYXkgc2l6ZSwgYnV0IHRoaXMgZGVwZW5kc1xuICAgICBvbiB3aGV0aGVyIHdlIGNyZWF0ZSBhIGZsb2F0IGFycmF5IG9yIGEgcmVndWxhciBvbmUuLi4gKilcbiAgZWxzZVxuICAgbGV0IHJlcyA9IGNyZWF0ZSBsIChmIDApIGluXG4gICBmb3IgaSA9IDEgdG8gcHJlZCBsIGRvXG4gICAgIHVuc2FmZV9zZXQgcmVzIGkgKGYgaSlcbiAgIGRvbmU7XG4gICByZXNcblxubGV0IG1ha2VfbWF0cml4IHN4IHN5IGluaXQgPVxuICAoKiBXZSByYWlzZSBldmVuIGlmIFtzeCA9IDAgJiYgc3kgPCAwXTogKilcbiAgaWYgc3kgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5tYWtlX21hdHJpeFwiO1xuICBsZXQgcmVzID0gY3JlYXRlIHN4IFt8fF0gaW5cbiAgaWYgc3kgPiAwIHRoZW4gYmVnaW5cbiAgICBmb3IgeCA9IDAgdG8gcHJlZCBzeCBkb1xuICAgICAgdW5zYWZlX3NldCByZXMgeCAoY3JlYXRlIHN5IGluaXQpXG4gICAgZG9uZTtcbiAgZW5kO1xuICByZXNcblxubGV0IGluaXRfbWF0cml4IHN4IHN5IGYgPVxuICAoKiBXZSByYWlzZSBldmVuIGlmIFtzeCA9IDAgJiYgc3kgPCAwXTogKilcbiAgaWYgc3kgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5pbml0X21hdHJpeFwiO1xuICBsZXQgcmVzID0gY3JlYXRlIHN4IFt8fF0gaW5cbiAgKCogV2UgbXVzdCBub3QgZXZhbHVhdGUgW2YgeCAwXSB3aGVuIFtzeSA8PSAwXTogKilcbiAgaWYgc3kgPiAwIHRoZW4gYmVnaW5cbiAgICBmb3IgeCA9IDAgdG8gcHJlZCBzeCBkb1xuICAgICAgbGV0IHJvdyA9IGNyZWF0ZSBzeSAoZiB4IDApIGluXG4gICAgICBmb3IgeSA9IDEgdG8gcHJlZCBzeSBkb1xuICAgICAgICB1bnNhZmVfc2V0IHJvdyB5IChmIHggeSlcbiAgICAgIGRvbmU7XG4gICAgICB1bnNhZmVfc2V0IHJlcyB4IHJvd1xuICAgIGRvbmU7XG4gIGVuZDtcbiAgcmVzXG5cbmxldCBjb3B5IGEgPVxuICBsZXQgbCA9IGxlbmd0aCBhIGluIGlmIGwgPSAwIHRoZW4gW3x8XSBlbHNlIHVuc2FmZV9zdWIgYSAwIGxcblxubGV0IGFwcGVuZCBhMSBhMiA9XG4gIGxldCBsMSA9IGxlbmd0aCBhMSBpblxuICBpZiBsMSA9IDAgdGhlbiBjb3B5IGEyXG4gIGVsc2UgaWYgbGVuZ3RoIGEyID0gMCB0aGVuIHVuc2FmZV9zdWIgYTEgMCBsMVxuICBlbHNlIGFwcGVuZF9wcmltIGExIGEyXG5cbmxldCBzdWIgYSBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBhIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5zdWJcIlxuICBlbHNlIHVuc2FmZV9zdWIgYSBvZnMgbGVuXG5cbmxldCBmaWxsIGEgb2ZzIGxlbiB2ID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBhIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5maWxsXCJcbiAgZWxzZSB1bnNhZmVfZmlsbCBhIG9mcyBsZW4gdlxuXG5sZXQgYmxpdCBhMSBvZnMxIGEyIG9mczIgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gbGVuZ3RoIGExIC0gbGVuXG4gICAgICAgICAgICAgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IGxlbmd0aCBhMiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuYmxpdFwiXG4gIGVsc2UgdW5zYWZlX2JsaXQgYTEgb2ZzMSBhMiBvZnMyIGxlblxuXG5sZXQgaXRlciBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IGl0ZXIyIGYgYSBiID1cbiAgaWYgbGVuZ3RoIGEgPD4gbGVuZ3RoIGIgdGhlblxuICAgIGludmFsaWRfYXJnIFwiQXJyYXkuaXRlcjI6IGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCJcbiAgZWxzZVxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkgZG9uZVxuXG5sZXQgbWFwIGYgYSA9XG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIChmKHVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCBtYXBfaW5wbGFjZSBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgdW5zYWZlX3NldCBhIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSlcbiAgZG9uZVxuXG5sZXQgbWFwaV9pbnBsYWNlIGYgYSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICB1bnNhZmVfc2V0IGEgaSAoZiBpICh1bnNhZmVfZ2V0IGEgaSkpXG4gIGRvbmVcblxubGV0IG1hcDIgZiBhIGIgPVxuICBsZXQgbGEgPSBsZW5ndGggYSBpblxuICBsZXQgbGIgPSBsZW5ndGggYiBpblxuICBpZiBsYSA8PiBsYiB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJBcnJheS5tYXAyOiBhcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiXG4gIGVsc2UgYmVnaW5cbiAgICBpZiBsYSA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gY3JlYXRlIGxhIChmICh1bnNhZmVfZ2V0IGEgMCkgKHVuc2FmZV9nZXQgYiAwKSkgaW5cbiAgICAgIGZvciBpID0gMSB0byBsYSAtIDEgZG9cbiAgICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSAodW5zYWZlX2dldCBiIGkpKVxuICAgICAgZG9uZTtcbiAgICAgIHJcbiAgICBlbmRcbiAgZW5kXG5cbmxldCBpdGVyaSBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IG1hcGkgZiBhID1cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBpZiBsID0gMCB0aGVuIFt8fF0gZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgKGYgMCAodW5zYWZlX2dldCBhIDApKSBpblxuICAgIGZvciBpID0gMSB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgaSAodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IHRvX2xpc3QgYSA9XG4gIGxldCByZWMgdG9saXN0IGkgcmVzID1cbiAgICBpZiBpIDwgMCB0aGVuIHJlcyBlbHNlIHRvbGlzdCAoaSAtIDEpICh1bnNhZmVfZ2V0IGEgaSA6OiByZXMpIGluXG4gIHRvbGlzdCAobGVuZ3RoIGEgLSAxKSBbXVxuXG4oKiBDYW5ub3QgdXNlIExpc3QubGVuZ3RoIGhlcmUgYmVjYXVzZSB0aGUgTGlzdCBtb2R1bGUgZGVwZW5kcyBvbiBBcnJheS4gKilcbmxldCByZWMgbGlzdF9sZW5ndGggYWNjdSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gYWNjdVxuICB8IF86OnQgLT4gbGlzdF9sZW5ndGggKHN1Y2MgYWNjdSkgdFxuXG5sZXQgb2ZfbGlzdCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW3x8XVxuICB8IGhkOjp0bCBhcyBsIC0+XG4gICAgICBsZXQgYSA9IGNyZWF0ZSAobGlzdF9sZW5ndGggMCBsKSBoZCBpblxuICAgICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgICAgIFtdIC0+IGFcbiAgICAgICAgfCBoZDo6dGwgLT4gdW5zYWZlX3NldCBhIGkgaGQ7IGZpbGwgKGkrMSkgdGwgaW5cbiAgICAgIGZpbGwgMSB0bFxuXG5sZXQgZXF1YWwgZXEgYSBiID1cbiAgaWYgbGVuZ3RoIGEgPD4gbGVuZ3RoIGIgdGhlbiBmYWxzZSBlbHNlXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbGV0IGxlbiA9IGxlbmd0aCBhIGluXG4gIHdoaWxlICFpIDwgbGVuICYmIGVxICh1bnNhZmVfZ2V0IGEgIWkpICh1bnNhZmVfZ2V0IGIgIWkpIGRvIGluY3IgaSBkb25lO1xuICAhaSA9IGxlblxuXG5sZXQgc3RkbGliX2NvbXBhcmUgPSBjb21wYXJlXG5sZXQgY29tcGFyZSBjbXAgYSBiID1cbiAgbGV0IGxlbl9hID0gbGVuZ3RoIGEgYW5kIGxlbl9iID0gbGVuZ3RoIGIgaW5cbiAgbGV0IGRpZmYgPSBsZW5fYSAtIGxlbl9iIGluXG4gIGlmIGRpZmYgPD4gMCB0aGVuIChpZiBkaWZmIDwgMCB0aGVuIC0xIGVsc2UgMSkgZWxzZVxuICBsZXQgaSA9IHJlZiAwIGFuZCBjID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW5fYSAmJiAhYyA9IDBcbiAgZG8gYyA6PSBjbXAgKHVuc2FmZV9nZXQgYSAhaSkgKHVuc2FmZV9nZXQgYiAhaSk7IGluY3IgaSBkb25lO1xuICAhY1xuXG5sZXQgZm9sZF9sZWZ0IGYgeCBhID1cbiAgbGV0IHIgPSByZWYgeCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IGEgaSlcbiAgZG9uZTtcbiAgIXJcblxubGV0IGZvbGRfbGVmdF9tYXAgZiBhY2MgaW5wdXRfYXJyYXkgPVxuICBsZXQgbGVuID0gbGVuZ3RoIGlucHV0X2FycmF5IGluXG4gIGlmIGxlbiA9IDAgdGhlbiAoYWNjLCBbfHxdKSBlbHNlIGJlZ2luXG4gICAgbGV0IGFjYywgZWx0ID0gZiBhY2MgKHVuc2FmZV9nZXQgaW5wdXRfYXJyYXkgMCkgaW5cbiAgICBsZXQgb3V0cHV0X2FycmF5ID0gY3JlYXRlIGxlbiBlbHQgaW5cbiAgICBsZXQgYWNjID0gcmVmIGFjYyBpblxuICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICBsZXQgYWNjJywgZWx0ID0gZiAhYWNjICh1bnNhZmVfZ2V0IGlucHV0X2FycmF5IGkpIGluXG4gICAgICBhY2MgOj0gYWNjJztcbiAgICAgIHVuc2FmZV9zZXQgb3V0cHV0X2FycmF5IGkgZWx0O1xuICAgIGRvbmU7XG4gICAgIWFjYywgb3V0cHV0X2FycmF5XG4gIGVuZFxuXG5sZXQgZm9sZF9yaWdodCBmIGEgeCA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDAgZG9cbiAgICByIDo9IGYgKHVuc2FmZV9nZXQgYSBpKSAhclxuICBkb25lO1xuICAhclxuXG5sZXQgZXhpc3RzIHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsIHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsMiBwIGwxIGwyID1cbiAgbGV0IG4xID0gbGVuZ3RoIGwxXG4gIGFuZCBuMiA9IGxlbmd0aCBsMiBpblxuICBpZiBuMSA8PiBuMiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuZm9yX2FsbDJcIlxuICBlbHNlIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbjEgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGwxIGkpICh1bnNhZmVfZ2V0IGwyIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCBleGlzdHMyIHAgbDEgbDIgPVxuICBsZXQgbjEgPSBsZW5ndGggbDFcbiAgYW5kIG4yID0gbGVuZ3RoIGwyIGluXG4gIGlmIG4xIDw+IG4yIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5leGlzdHMyXCJcbiAgZWxzZSBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4xIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgbDEgaSkgKHVuc2FmZV9nZXQgbDIgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgbWVtIHggYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHN0ZGxpYl9jb21wYXJlICh1bnNhZmVfZ2V0IGEgaSkgeCA9IDAgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgbWVtcSB4IGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiB4ID09ICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgZmluZF9vcHQgcCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgaWYgcCB4IHRoZW4gU29tZSB4XG4gICAgICBlbHNlIGxvb3AgKHN1Y2MgaSlcbiAgaW5cbiAgbG9vcCAwXG5cbmxldCBmaW5kX2luZGV4IHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gTm9uZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gU29tZSBpXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgZmluZF9tYXAgZiBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggZiAodW5zYWZlX2dldCBhIGkpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBsb29wIChzdWNjIGkpXG4gICAgICB8IFNvbWUgXyBhcyByIC0+IHJcbiAgaW5cbiAgbG9vcCAwXG5cbmxldCBmaW5kX21hcGkgZiBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggZiBpICh1bnNhZmVfZ2V0IGEgaSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGxvb3AgKHN1Y2MgaSlcbiAgICAgIHwgU29tZSBfIGFzIHIgLT4gclxuICBpblxuICBsb29wIDBcblxubGV0IHNwbGl0IHggPVxuICBpZiB4ID0gW3x8XSB0aGVuIFt8fF0sIFt8fF1cbiAgZWxzZSBiZWdpblxuICAgIGxldCBhMCwgYjAgPSB1bnNhZmVfZ2V0IHggMCBpblxuICAgIGxldCBuID0gbGVuZ3RoIHggaW5cbiAgICBsZXQgYSA9IGNyZWF0ZSBuIGEwIGluXG4gICAgbGV0IGIgPSBjcmVhdGUgbiBiMCBpblxuICAgIGZvciBpID0gMSB0byBuIC0gMSBkb1xuICAgICAgbGV0IGFpLCBiaSA9IHVuc2FmZV9nZXQgeCBpIGluXG4gICAgICB1bnNhZmVfc2V0IGEgaSBhaTtcbiAgICAgIHVuc2FmZV9zZXQgYiBpIGJpXG4gICAgZG9uZTtcbiAgICBhLCBiXG4gIGVuZFxuXG5sZXQgY29tYmluZSBhIGIgPVxuICBsZXQgbmEgPSBsZW5ndGggYSBpblxuICBsZXQgbmIgPSBsZW5ndGggYiBpblxuICBpZiBuYSA8PiBuYiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuY29tYmluZVwiO1xuICBpZiBuYSA9IDAgdGhlbiBbfHxdXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgeCA9IGNyZWF0ZSBuYSAodW5zYWZlX2dldCBhIDAsIHVuc2FmZV9nZXQgYiAwKSBpblxuICAgIGZvciBpID0gMSB0byBuYSAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgeCBpICh1bnNhZmVfZ2V0IGEgaSwgdW5zYWZlX2dldCBiIGkpXG4gICAgZG9uZTtcbiAgICB4XG4gIGVuZFxuXG5leGNlcHRpb24gQm90dG9tIG9mIGludFxubGV0IHNvcnQgY21wIGEgPVxuICBsZXQgbWF4c29uIGwgaSA9XG4gICAgbGV0IGkzMSA9IGkraStpKzEgaW5cbiAgICBsZXQgeCA9IHJlZiBpMzEgaW5cbiAgICBpZiBpMzErMiA8IGwgdGhlbiBiZWdpblxuICAgICAgaWYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDAgdGhlbiB4IDo9IGkzMSsxO1xuICAgICAgaWYgY21wIChnZXQgYSAheCkgKGdldCBhIChpMzErMikpIDwgMCB0aGVuIHggOj0gaTMxKzI7XG4gICAgICAheFxuICAgIGVuZCBlbHNlXG4gICAgICBpZiBpMzErMSA8IGwgJiYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDBcbiAgICAgIHRoZW4gaTMxKzFcbiAgICAgIGVsc2UgaWYgaTMxIDwgbCB0aGVuIGkzMSBlbHNlIHJhaXNlIChCb3R0b20gaSlcbiAgaW5cbiAgbGV0IHJlYyB0cmlja2xlZG93biBsIGkgZSA9XG4gICAgbGV0IGogPSBtYXhzb24gbCBpIGluXG4gICAgaWYgY21wIChnZXQgYSBqKSBlID4gMCB0aGVuIGJlZ2luXG4gICAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgIHRyaWNrbGVkb3duIGwgaiBlO1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBzZXQgYSBpIGU7XG4gICAgZW5kO1xuICBpblxuICBsZXQgdHJpY2tsZSBsIGkgZSA9IHRyeSB0cmlja2xlZG93biBsIGkgZSB3aXRoIEJvdHRvbSBpIC0+IHNldCBhIGkgZSBpblxuICBsZXQgcmVjIGJ1YmJsZWRvd24gbCBpID1cbiAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICBidWJibGVkb3duIGwgalxuICBpblxuICBsZXQgYnViYmxlIGwgaSA9IHRyeSBidWJibGVkb3duIGwgaSB3aXRoIEJvdHRvbSBpIC0+IGkgaW5cbiAgbGV0IHJlYyB0cmlja2xldXAgaSBlID1cbiAgICBsZXQgZmF0aGVyID0gKGkgLSAxKSAvIDMgaW5cbiAgICBhc3NlcnQgKGkgPD4gZmF0aGVyKTtcbiAgICBpZiBjbXAgKGdldCBhIGZhdGhlcikgZSA8IDAgdGhlbiBiZWdpblxuICAgICAgc2V0IGEgaSAoZ2V0IGEgZmF0aGVyKTtcbiAgICAgIGlmIGZhdGhlciA+IDAgdGhlbiB0cmlja2xldXAgZmF0aGVyIGUgZWxzZSBzZXQgYSAwIGU7XG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIHNldCBhIGkgZTtcbiAgICBlbmQ7XG4gIGluXG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgZm9yIGkgPSAobCArIDEpIC8gMyAtIDEgZG93bnRvIDAgZG8gdHJpY2tsZSBsIGkgKGdldCBhIGkpOyBkb25lO1xuICBmb3IgaSA9IGwgLSAxIGRvd250byAyIGRvXG4gICAgbGV0IGUgPSAoZ2V0IGEgaSkgaW5cbiAgICBzZXQgYSBpIChnZXQgYSAwKTtcbiAgICB0cmlja2xldXAgKGJ1YmJsZSBpIDApIGU7XG4gIGRvbmU7XG4gIGlmIGwgPiAxIHRoZW4gKGxldCBlID0gKGdldCBhIDEpIGluIHNldCBhIDEgKGdldCBhIDApOyBzZXQgYSAwIGUpXG5cblxubGV0IGN1dG9mZiA9IDVcbmxldCBzdGFibGVfc29ydCBjbXAgYSA9XG4gIGxldCBtZXJnZSBzcmMxb2ZzIHNyYzFsZW4gc3JjMiBzcmMyb2ZzIHNyYzJsZW4gZHN0IGRzdG9mcyA9XG4gICAgbGV0IHNyYzFyID0gc3JjMW9mcyArIHNyYzFsZW4gYW5kIHNyYzJyID0gc3JjMm9mcyArIHNyYzJsZW4gaW5cbiAgICBsZXQgcmVjIGxvb3AgaTEgczEgaTIgczIgZCA9XG4gICAgICBpZiBjbXAgczEgczIgPD0gMCB0aGVuIGJlZ2luXG4gICAgICAgIHNldCBkc3QgZCBzMTtcbiAgICAgICAgbGV0IGkxID0gaTEgKyAxIGluXG4gICAgICAgIGlmIGkxIDwgc3JjMXIgdGhlblxuICAgICAgICAgIGxvb3AgaTEgKGdldCBhIGkxKSBpMiBzMiAoZCArIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBibGl0IHNyYzIgaTIgZHN0IChkICsgMSkgKHNyYzJyIC0gaTIpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXQgZHN0IGQgczI7XG4gICAgICAgIGxldCBpMiA9IGkyICsgMSBpblxuICAgICAgICBpZiBpMiA8IHNyYzJyIHRoZW5cbiAgICAgICAgICBsb29wIGkxIHMxIGkyIChnZXQgc3JjMiBpMikgKGQgKyAxKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmxpdCBhIGkxIGRzdCAoZCArIDEpIChzcmMxciAtIGkxKVxuICAgICAgZW5kXG4gICAgaW4gbG9vcCBzcmMxb2ZzIChnZXQgYSBzcmMxb2ZzKSBzcmMyb2ZzIChnZXQgc3JjMiBzcmMyb2ZzKSBkc3RvZnM7XG4gIGluXG4gIGxldCBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIGxldCBlID0gKGdldCBhIChzcmNvZnMgKyBpKSkgaW5cbiAgICAgIGxldCBqID0gcmVmIChkc3RvZnMgKyBpIC0gMSkgaW5cbiAgICAgIHdoaWxlICghaiA+PSBkc3RvZnMgJiYgY21wIChnZXQgZHN0ICFqKSBlID4gMCkgZG9cbiAgICAgICAgc2V0IGRzdCAoIWogKyAxKSAoZ2V0IGRzdCAhaik7XG4gICAgICAgIGRlY3IgajtcbiAgICAgIGRvbmU7XG4gICAgICBzZXQgZHN0ICghaiArIDEpIGU7XG4gICAgZG9uZTtcbiAgaW5cbiAgbGV0IHJlYyBzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICBpZiBsZW4gPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gZWxzZSBiZWdpblxuICAgICAgbGV0IGwxID0gbGVuIC8gMiBpblxuICAgICAgbGV0IGwyID0gbGVuIC0gbDEgaW5cbiAgICAgIHNvcnR0byAoc3Jjb2ZzICsgbDEpIGRzdCAoZHN0b2ZzICsgbDEpIGwyO1xuICAgICAgc29ydHRvIHNyY29mcyBhIChzcmNvZnMgKyBsMikgbDE7XG4gICAgICBtZXJnZSAoc3Jjb2ZzICsgbDIpIGwxIGRzdCAoZHN0b2ZzICsgbDEpIGwyIGRzdCBkc3RvZnM7XG4gICAgZW5kO1xuICBpblxuICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gIGlmIGwgPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byAwIGEgMCBsIGVsc2UgYmVnaW5cbiAgICBsZXQgbDEgPSBsIC8gMiBpblxuICAgIGxldCBsMiA9IGwgLSBsMSBpblxuICAgIGxldCB0ID0gbWFrZSBsMiAoZ2V0IGEgMCkgaW5cbiAgICBzb3J0dG8gbDEgdCAwIGwyO1xuICAgIHNvcnR0byAwIGEgbDIgbDE7XG4gICAgbWVyZ2UgbDIgbDEgdCAwIGwyIGEgMDtcbiAgZW5kXG5cblxubGV0IGZhc3Rfc29ydCA9IHN0YWJsZV9zb3J0XG5cbmxldCBzaHVmZmxlX2NvbnRyYWN0X3Zpb2xhdGlvbiBpIGogPVxuICBsZXQgaW50ID0gc3RyaW5nX29mX2ludCBpblxuICBpbnZhbGlkX2FyZ1xuICAgIChcIkFycmF5LnNodWZmbGU6ICdyYW5kIFwiIF4gaW50IChpICsgMSkgXlxuICAgICBcIicgcmV0dXJuZWQgXCIgXiBpbnQgaiBeXG4gICAgIFwiLCBvdXQgb2YgZXhwZWN0ZWQgcmFuZ2UgWzA7IFwiIF4gaW50IGkgXiBcIl1cIilcblxubGV0IHNodWZmbGUgfnJhbmQgYSA9ICgqIEZpc2hlci1ZYXRlcyAqKVxuICBmb3IgaSA9IGxlbmd0aCBhIC0gMSBkb3dudG8gMSBkb1xuICAgIGxldCBqID0gcmFuZCAoaSArIDEpIGluXG4gICAgaWYgbm90ICgwIDw9IGogJiYgaiA8PSBpKSB0aGVuIHNodWZmbGVfY29udHJhY3RfdmlvbGF0aW9uIGkgajtcbiAgICBsZXQgdiA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgdW5zYWZlX3NldCBhIGkgKHVuc2FmZV9nZXQgYSBqKTtcbiAgICB1bnNhZmVfc2V0IGEgaiB2XG4gIGRvbmVcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBhID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgaWYgaSA8IGxlbmd0aCBhXG4gICAgdGhlblxuICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgICBlbHNlIFNlcS5OaWxcbiAgaW5cbiAgYXV4IDBcblxubGV0IHRvX3NlcWkgYSA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPCBsZW5ndGggYVxuICAgIHRoZW5cbiAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICAgIGVsc2UgU2VxLk5pbFxuICBpblxuICBhdXggMFxuXG5sZXQgb2ZfcmV2X2xpc3QgPSBmdW5jdGlvblxuICAgIFtdIC0+IFt8fF1cbiAgfCBoZDo6dGwgYXMgbCAtPlxuICAgICAgbGV0IGxlbiA9IGxpc3RfbGVuZ3RoIDAgbCBpblxuICAgICAgbGV0IGEgPSBjcmVhdGUgbGVuIGhkIGluXG4gICAgICBsZXQgcmVjIGZpbGwgaSA9IGZ1bmN0aW9uXG4gICAgICAgICAgW10gLT4gYVxuICAgICAgICB8IGhkOjp0bCAtPiB1bnNhZmVfc2V0IGEgaSBoZDsgZmlsbCAoaS0xKSB0bFxuICAgICAgaW5cbiAgICAgIGZpbGwgKGxlbi0yKSB0bFxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgbCA9IFNlcS5mb2xkX2xlZnQgKGZ1biBhY2MgeCAtPiB4OjphY2MpIFtdIGkgaW5cbiAgb2ZfcmV2X2xpc3QgbFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2FycmF5X21ha2UiLCJjYW1sX2FycmF5X3N1YiIsImNhbWxfY2hlY2tfYm91bmQiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImdsb2JhbF9kYXRhIiwiU3RkbGliX1NlcSIsIlN0ZGxpYiIsIkFzc2VydF9mYWlsdXJlIiwiaW5pdCIsImwiLCJyZXMiLCJpIiwibWFrZV9tYXRyaXgiLCJzeCIsInN5IiwieCIsImluaXRfbWF0cml4Iiwicm93IiwieSIsImNvcHkiLCJhIiwiYXBwZW5kIiwiYTIiLCJsMSIsInN1YiIsIm9mcyIsImxlbiIsImZpbGwiLCJ2IiwiYmxpdCIsIm9mczEiLCJvZnMyIiwiaXRlciIsIml0ZXIyIiwiYiIsIm1hcCIsInIiLCJtYXBfaW5wbGFjZSIsIm1hcGlfaW5wbGFjZSIsIm1hcDIiLCJsYSIsImxiIiwiaXRlcmkiLCJtYXBpIiwidG9fbGlzdCIsImxpc3RfbGVuZ3RoIiwiYWNjdSIsInBhcmFtIiwidCIsIm9mX2xpc3QiLCJ0bCIsImhkIiwiZXF1YWwiLCJlcSIsImNvbXBhcmUiLCJjbXAiLCJsZW5fYSIsImxlbl9iIiwiZGlmZiIsImMiLCJmb2xkX2xlZnQiLCJmb2xkX2xlZnRfbWFwIiwiYWNjIiwiaW5wdXRfYXJyYXkiLCJtYXRjaCIsImVsdCIsIm91dHB1dF9hcnJheSIsImZvbGRfcmlnaHQiLCJleGlzdHMiLCJwIiwibiIsImZvcl9hbGwiLCJmb3JfYWxsMiIsImwyIiwibjEiLCJuMiIsImV4aXN0czIiLCJtZW0iLCJtZW1xIiwiZmluZF9vcHQiLCJmaW5kX2luZGV4IiwiZmluZF9tYXAiLCJmaW5kX21hcGkiLCJzcGxpdCIsImIwIiwiYmkiLCJhaSIsImNvbWJpbmUiLCJuYSIsIm5iIiwiQm90dG9tIiwic29ydCIsIm1heHNvbiIsImkzMSIsImUiLCJqIiwiZXhuIiwiZmF0aGVyIiwic3RhYmxlX3NvcnQiLCJtZXJnZSIsInNyYzFvZnMiLCJzcmMxbGVuIiwic3JjMiIsInNyYzJvZnMiLCJzcmMybGVuIiwiZHN0IiwiZHN0b2ZzIiwic3JjMXIiLCJzcmMyciIsInMyIiwiczEiLCJpMSIsImkyIiwiZCIsImlzb3J0dG8iLCJzcmNvZnMiLCJzb3J0dG8iLCJzaHVmZmxlIiwicmFuZCIsImludCIsInRvX3NlcSIsImF1eCIsInRvX3NlcWkiLCJvZl9zZXEiLCJTdGRsaWJfQXJyYXkiXSwibWFwcGluZ3MiOiJJQUFBQSxV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O0FBQUEsS0FBQU4sSUFDRjtBQUFBLEtBQUFULE1BS1I7QUFBQSxLQUFBQSxJQUFBO0FBQUEsS0FBQW9DLFFBQUE7QUFBQTtBQUFBLEtBSmEsWUFDSDtBQUFBLFNBQUFHLE9BREcsVUFBQUMsT0FBQTtBQUFBLEtBRUM7QUFBQSxTQUFBeEMsTUFBaUI7QUFBQTtBQUFBO0FBQUE7QUFBQSxHQU10QjtBQUFBO0FBQUEsSUFBQWlIO0FBQUFBLE1EN2ZmIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MTQxODIsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9ieXRlcy5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQnl0ZSBzZXF1ZW5jZSBvcGVyYXRpb25zICopXG5cbigqIFdBUk5JTkc6IFNvbWUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZSBhcmUgZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgZm9yXG4gICBlZmZpY2llbmN5IHJlYXNvbnMuIFdoZW4geW91IG1vZGlmeSB0aGUgb25lIGluIHRoaXMgZmlsZSB5b3UgbmVlZCB0b1xuICAgbW9kaWZ5IGl0cyBkdXBsaWNhdGUgaW4gc3RyaW5nLm1sLlxuICAgVGhlc2UgZnVuY3Rpb25zIGhhdmUgYSBcImR1cGxpY2F0ZWRcIiBjb21tZW50IGFib3ZlIHRoZWlyIGRlZmluaXRpb24uXG4qKVxuXG5leHRlcm5hbCBsZW5ndGggOiBieXRlcyAtPiBpbnQgPSBcIiVieXRlc19sZW5ndGhcIlxuZXh0ZXJuYWwgc3RyaW5nX2xlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbmV4dGVybmFsIGdldCA6IGJ5dGVzIC0+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+IGxvb3AgbWF4IGIgKGkgKyA0KVxuICBpblxuICBsb29wIChsZW5ndGggYiAtIDEpIGIgMFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2JsaXRfYnl0ZXMiLCJjYW1sX2Jzd2FwMTYiLCJjYW1sX2J5dGVzX2dldCIsImNhbWxfYnl0ZXNfZ2V0MTYiLCJjYW1sX2J5dGVzX2dldDMyIiwiY2FtbF9ieXRlc19nZXQ2NCIsImNhbWxfYnl0ZXNfb2Zfc3RyaW5nIiwiY2FtbF9ieXRlc19zZXQiLCJjYW1sX2J5dGVzX3NldDE2IiwiY2FtbF9ieXRlc19zZXQzMiIsImNhbWxfYnl0ZXNfc2V0NjQiLCJjYW1sX2J5dGVzX3Vuc2FmZV9nZXQiLCJjYW1sX2J5dGVzX3Vuc2FmZV9zZXQiLCJjYW1sX2NyZWF0ZV9ieXRlcyIsImNhbWxfZmlsbF9ieXRlcyIsImNhbWxfaW50MzJfYnN3YXAiLCJjYW1sX2ludDY0X2Jzd2FwIiwiY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlIiwiY2FtbF9tbF9ieXRlc19sZW5ndGgiLCJjYW1sX3N0cmluZ19vZl9ieXRlcyIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiZHVtbXkiLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYiIsIlN0ZGxpYl9VY2hhciIsIkFzc2VydF9mYWlsdXJlIiwiU3RkbGliX1N5cyIsIlN0ZGxpYl9JbnQiLCJTdGRsaWJfU2VxIiwiU3RkbGliX0NoYXIiLCJtYWtlIiwibiIsImMiLCJzIiwiaW5pdCIsImkiLCJlbXB0eSIsImNvcHkiLCJsZW4iLCJyIiwidG9fc3RyaW5nIiwiYiIsIm9mX3N0cmluZyIsInN1YiIsIm9mcyIsInN1Yl9zdHJpbmciLCJzeW1ib2wiLCJhIiwibWF0Y2giLCJleHRlbmQiLCJsZWZ0IiwicmlnaHQiLCJkc3RvZmYiLCJzcmNvZmYiLCJjcHlsZW4iLCJmaWxsIiwiYmxpdCIsInMxIiwib2ZzMSIsInMyIiwib2ZzMiIsImJsaXRfc3RyaW5nIiwiaXRlciIsIml0ZXJpIiwiY29uY2F0Iiwic2VwIiwibCIsInNlcGxlbiIsImFjYyIsInBhcmFtIiwicG9zIiwiaGQiLCJ0bCIsIngiLCJkc3QiLCJjYXQiLCJsMSIsImwyIiwiaXNfc3BhY2UiLCJ0cmltIiwiaiIsInVuc2FmZV9lc2NhcGUiLCJlc2NhcGVkIiwibWFwIiwibWFwaSIsImZvbGRfbGVmdCIsImZvbGRfcmlnaHQiLCJleGlzdHMiLCJwIiwiZm9yX2FsbCIsInVwcGVyY2FzZV9hc2NpaSIsImxvd2VyY2FzZV9hc2NpaSIsImFwcGx5MSIsImNhcGl0YWxpemVfYXNjaWkiLCJ1bmNhcGl0YWxpemVfYXNjaWkiLCJzdGFydHNfd2l0aCIsInByZWZpeCIsImxlbl9zIiwibGVuX3ByZSIsImVuZHNfd2l0aCIsInN1ZmZpeCIsImxlbl9zdWYiLCJkaWZmIiwiaW5kZXhfcmVjIiwibGltIiwiaW5kZXgiLCJpbmRleF9yZWNfb3B0IiwiaW5kZXhfb3B0IiwiaW5kZXhfZnJvbSIsImluZGV4X2Zyb21fb3B0IiwicmluZGV4X3JlYyIsInJpbmRleCIsInJpbmRleF9mcm9tIiwicmluZGV4X3JlY19vcHQiLCJyaW5kZXhfb3B0IiwicmluZGV4X2Zyb21fb3B0IiwiY29udGFpbnNfZnJvbSIsImV4biIsImNvbnRhaW5zIiwicmNvbnRhaW5zX2Zyb20iLCJjb21wYXJlIiwic3BsaXRfb25fY2hhciIsInRvX3NlcSIsImF1eCIsInRvX3NlcWkiLCJvZl9zZXEiLCJidWYiLCJuZXdfbGVuIiwibmV3X2J1ZiIsInVuc2FmZV9nZXRfdWludDE2X2xlIiwidW5zYWZlX2dldF91aW50MTZfYmUiLCJnZXRfaW50OCIsImdldF91aW50MTZfbGUiLCJnZXRfdWludDE2X2JlIiwiZ2V0X2ludDE2X25lIiwiZ2V0X2ludDE2X2xlIiwiZ2V0X2ludDE2X2JlIiwiZ2V0X2ludDMyX2xlIiwiZ2V0X2ludDMyX2JlIiwiZ2V0X2ludDY0X2xlIiwiZ2V0X2ludDY0X2JlIiwidW5zYWZlX3NldF91aW50MTZfbGUiLCJ1bnNhZmVfc2V0X3VpbnQxNl9iZSIsInNldF9pbnQxNl9sZSIsInNldF9pbnQxNl9iZSIsInNldF9pbnQzMl9sZSIsInNldF9pbnQzMl9iZSIsInNldF9pbnQ2NF9sZSIsInNldF9pbnQ2NF9iZSIsImRlY19pbnZhbGlkIiwiZGVjX3JldCIsInUiLCJub3RfaW5feDgwX3RvX3hCRiIsIm5vdF9pbl94QTBfdG9feEJGIiwibm90X2luX3g4MF90b194OUYiLCJub3RfaW5feDkwX3RvX3hCRiIsIm5vdF9pbl94ODBfdG9feDhGIiwidXRmXzhfdWNoYXJfMyIsImIwIiwiYjEiLCJiMiIsInV0Zl84X3VjaGFyXzQiLCJiMyIsImdldF91dGZfOF91Y2hhciIsIm1heCIsImNzdF9ieXRlc19tbCIsInNldF91dGZfOF91Y2hhciIsInNldCIsImxhc3QiLCJpc192YWxpZF91dGZfOCIsImNzdF9pbmRleF9vdXRfb2ZfYm91bmRzIiwiZ2V0X3V0Zl8xNmJlX3VjaGFyIiwiaGkiLCJsbyIsInNldF91dGZfMTZiZV91Y2hhciIsImlzX3ZhbGlkX3V0Zl8xNmJlIiwiZ2V0X3V0Zl8xNmxlX3VjaGFyIiwic2V0X3V0Zl8xNmxlX3VjaGFyIiwiaXNfdmFsaWRfdXRmXzE2bGUiLCJTdGRsaWJfQnl0ZXMiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyx1QkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsd0JBQUE7QUFBQSxJQUFBQyx3QkFBQTtB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QUFBQSxLQUNoQixjQUFnQjtBQUFBLFNBQUFvSCxJQUNWO0FBQUEsS0FDRztBQUFBLE1BQ0EsY0FBYztBQUFBLFVBQUFpQixPQUVuQjtBQUFBLE1BQ0EsZUFBbUI7QUFBQSxVQUFBakIsTUFDYjtBQUFBLE1BQ0c7QUFBQSxXQUFBcEgsTUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BRDRCO0FBQUE7QUFBQSxTQUFBQSxNQU5KO0FBQUE7QUFBQTtBQUFBLEdBU2hCO0FBQUE7QUFBQSxJQUFBZ0o7QUFBQUEsTUEzeEJMO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVEcERwQiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjE1MzgwLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvc3RyaW5nLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgR2FsbGl1bSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBTdHJpbmcgb3BlcmF0aW9ucywgYmFzZWQgb24gYnl0ZSBzZXF1ZW5jZSBvcGVyYXRpb25zICopXG5cbigqIFdBUk5JTkc6IFNvbWUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZSBhcmUgZHVwbGljYXRlZCBpbiBieXRlcy5tbCBmb3JcbiAgIGVmZmljaWVuY3kgcmVhc29ucy4gV2hlbiB5b3UgbW9kaWZ5IHRoZSBvbmUgaW4gdGhpcyBmaWxlIHlvdSBuZWVkIHRvXG4gICBtb2RpZnkgaXRzIGR1cGxpY2F0ZSBpbiBieXRlcy5tbC5cbiAgIFRoZXNlIGZ1bmN0aW9ucyBoYXZlIGEgXCJkdXBsaWNhdGVkXCIgY29tbWVudCBhYm92ZSB0aGVpciBkZWZpbml0aW9uLlxuKilcblxuZXh0ZXJuYWwgbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuZXh0ZXJuYWwgZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9nZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6IHN0cmluZyAtPiBpbnQgLT4gIGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuXG5tb2R1bGUgQiA9IEJ5dGVzXG5cbmxldCBidHMgPSBCLnVuc2FmZV90b19zdHJpbmdcbmxldCBib3MgPSBCLnVuc2FmZV9vZl9zdHJpbmdcblxubGV0IG1ha2UgbiBjID1cbiAgQi5tYWtlIG4gYyB8PiBidHNcbmxldCBpbml0IG4gZiA9XG4gIEIuaW5pdCBuIGYgfD4gYnRzXG5sZXQgZW1wdHkgPSBcIlwiXG5sZXQgb2ZfYnl0ZXMgPSBCLnRvX3N0cmluZ1xubGV0IHRvX2J5dGVzID0gQi5vZl9zdHJpbmdcbmxldCBzdWIgcyBvZnMgbGVuID1cbiAgaWYgb2ZzID0gMCAmJiBsZW5ndGggcyA9IGxlbiB0aGVuIHMgZWxzZVxuICBCLnN1YiAoYm9zIHMpIG9mcyBsZW4gfD4gYnRzXG5sZXQgYmxpdCA9XG4gIEIuYmxpdF9zdHJpbmdcblxubGV0IGVuc3VyZV9nZSAoeDppbnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgaW52YWxpZF9hcmcgXCJTdHJpbmcuY29uY2F0XCJcblxubGV0IHJlYyBzdW1fbGVuZ3RocyBhY2Mgc2VwbGVuID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBhY2NcbiAgfCBoZCA6OiBbXSAtPiBsZW5ndGggaGQgKyBhY2NcbiAgfCBoZCA6OiB0bCAtPiBzdW1fbGVuZ3RocyAoZW5zdXJlX2dlIChsZW5ndGggaGQgKyBzZXBsZW4gKyBhY2MpIGFjYykgc2VwbGVuIHRsXG5cbmxldCByZWMgdW5zYWZlX2JsaXRzIGRzdCBwb3Mgc2VwIHNlcGxlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZHN0XG4gIHwgaGQgOjogW10gLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7IGRzdFxuICB8IGhkIDo6IHRsIC0+XG4gICAgdW5zYWZlX2JsaXQgaGQgMCBkc3QgcG9zIChsZW5ndGggaGQpO1xuICAgIHVuc2FmZV9ibGl0IHNlcCAwIGRzdCAocG9zICsgbGVuZ3RoIGhkKSBzZXBsZW47XG4gICAgdW5zYWZlX2JsaXRzIGRzdCAocG9zICsgbGVuZ3RoIGhkICsgc2VwbGVuKSBzZXAgc2VwbGVuIHRsXG5cbmxldCBjb25jYXQgc2VwID0gZnVuY3Rpb25cbiAgICBbXSAtPiBcIlwiXG4gIHwgW3NdIC0+IHNcbiAgfCBsIC0+IGxldCBzZXBsZW4gPSBsZW5ndGggc2VwIGluIGJ0cyBAQFxuICAgICAgICAgIHVuc2FmZV9ibGl0c1xuICAgICAgICAgICAgKEIuY3JlYXRlIChzdW1fbGVuZ3RocyAwIHNlcGxlbiBsKSlcbiAgICAgICAgICAgIDAgc2VwIHNlcGxlbiBsXG5cbmxldCBjYXQgPSAoIF4gKVxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaXRlciBmIHMgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvIGYgKHVuc2FmZV9nZXQgcyBpKSBkb25lXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpdGVyaSBmIHMgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBzIGkpIGRvbmVcblxubGV0IG1hcCBmIHMgPVxuICBCLm1hcCBmIChib3MgcykgfD4gYnRzXG5sZXQgbWFwaSBmIHMgPVxuICBCLm1hcGkgZiAoYm9zIHMpIHw+IGJ0c1xubGV0IGZvbGRfcmlnaHQgZiB4IGEgPVxuICBCLmZvbGRfcmlnaHQgZiAoYm9zIHgpIGFcbmxldCBmb2xkX2xlZnQgZiBhIHggPVxuICBCLmZvbGRfbGVmdCBmIGEgKGJvcyB4KVxubGV0IGV4aXN0cyBmIHMgPVxuICBCLmV4aXN0cyBmIChib3MgcylcbmxldCBmb3JfYWxsIGYgcyA9XG4gIEIuZm9yX2FsbCBmIChib3MgcylcblxuKCogQmV3YXJlOiB3ZSBjYW5ub3QgdXNlIEIudHJpbSBvciBCLmVzY2FwZSBiZWNhdXNlIHRoZXkgYWx3YXlzIG1ha2UgYVxuICAgY29weSwgYnV0IFN0cmluZy5tbGkgc3BlbGxzIG91dCBzb21lIGNhc2VzIHdoZXJlIHdlIGFyZSBub3QgYWxsb3dlZFxuICAgdG8gbWFrZSBhIGNvcHkuICopXG5cbmxldCBpc19zcGFjZSA9IGZ1bmN0aW9uXG4gIHwgJyAnIHwgJ1xcMDEyJyB8ICdcXG4nIHwgJ1xccicgfCAnXFx0JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgdHJpbSBzID1cbiAgaWYgcyA9IFwiXCIgdGhlbiBzXG4gIGVsc2UgaWYgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAwKSB8fCBpc19zcGFjZSAodW5zYWZlX2dldCBzIChsZW5ndGggcyAtIDEpKVxuICAgIHRoZW4gYnRzIChCLnRyaW0gKGJvcyBzKSlcbiAgZWxzZSBzXG5cbmxldCBlc2NhcGVkIHMgPVxuICBsZXQgYiA9IGJvcyBzIGluXG4gICgqIFdlIHNhdGlzZnkgW3Vuc2FmZV9lc2NhcGVdJ3MgcHJlY29uZGl0aW9uIGJ5IHBhc3NpbmcgYW5cbiAgICAgaW1tdXRhYmxlIGJ5dGUgc2VxdWVuY2UgW2JdLiAqKVxuICBsZXQgYicgPSBCLnVuc2FmZV9lc2NhcGUgYiBpblxuICAoKiBXaXRoIGpzX29mX29jYW1sLCBbYm9zXSBhbmQgW2J0c10gYXJlIG5vdCB0aGUgaWRlbnRpdHkuXG4gICAgIFdlIGNhbiBhdm9pZCBhIFtidHNdIGNvbnZlcnNpb24gaWYgW3Vuc2FmZV9lc2NhcGVdIHJldHVybmVkXG4gICAgIGl0cyBhcmd1bWVudC4gKilcbiAgaWYgYiA9PSBiJyB0aGVuIHMgZWxzZSBidHMgYidcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWMgcyBsaW0gaSBjID1cbiAgaWYgaSA+PSBsaW0gdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgaW5kZXhfcmVjIHMgbGltIChpICsgMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaW5kZXggcyBjID0gaW5kZXhfcmVjIHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWNfb3B0IHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIGluZGV4X3JlY19vcHQgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleF9vcHQgcyBjID0gaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcykgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleF9mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb20gLyBCeXRlcy5pbmRleF9mcm9tXCIgZWxzZVxuICAgIGluZGV4X3JlYyBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb21fb3B0IC8gQnl0ZXMuaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgaW5kZXhfcmVjX29wdCBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgcmluZGV4X3JlYyBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIHJpbmRleF9yZWMgcyAoaSAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleCBzIGMgPSByaW5kZXhfcmVjIHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4X2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgLTEgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb20gLyBCeXRlcy5yaW5kZXhfZnJvbVwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjIHMgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgcmluZGV4X3JlY19vcHQgcyBpIGMgPVxuICBpZiBpIDwgMCB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSByaW5kZXhfcmVjX29wdCBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4X29wdCBzIGMgPSByaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5yaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgcmluZGV4X3JlY19vcHQgcyBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5jb250YWluc19mcm9tIC8gQnl0ZXMuY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChpbmRleF9yZWMgcyBsIGkgYyk7IHRydWUgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGNvbnRhaW5zIHMgYyA9IGNvbnRhaW5zX2Zyb20gcyAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJjb250YWluc19mcm9tIHMgaSBjID1cbiAgaWYgaSA8IDAgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5yY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChyaW5kZXhfcmVjIHMgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG5sZXQgdXBwZXJjYXNlX2FzY2lpIHMgPVxuICBCLnVwcGVyY2FzZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xubGV0IGxvd2VyY2FzZV9hc2NpaSBzID1cbiAgQi5sb3dlcmNhc2VfYXNjaWkgKGJvcyBzKSB8PiBidHNcbmxldCBjYXBpdGFsaXplX2FzY2lpIHMgPVxuICBCLmNhcGl0YWxpemVfYXNjaWkgKGJvcyBzKSB8PiBidHNcbmxldCB1bmNhcGl0YWxpemVfYXNjaWkgcyA9XG4gIEIudW5jYXBpdGFsaXplX2FzY2lpIChib3MgcykgfD4gYnRzXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBzdGFydHNfd2l0aCB+cHJlZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3ByZSA9IGxlbmd0aCBwcmVmaXggaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9wcmUgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgaSA8PiB1bnNhZmVfZ2V0IHByZWZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGxlbl9zID49IGxlbl9wcmUgJiYgYXV4IDBcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGVuZHNfd2l0aCB+c3VmZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3N1ZiA9IGxlbmd0aCBzdWZmaXggaW5cbiAgbGV0IGRpZmYgPSBsZW5fcyAtIGxlbl9zdWYgaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9zdWYgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgKGRpZmYgKyBpKSA8PiB1bnNhZmVfZ2V0IHN1ZmZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGRpZmYgPj0gMCAmJiBhdXggMFxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaCA6IGludCAtPiBzdHJpbmcgLT4gaW50ID0gXCJjYW1sX3N0cmluZ19oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaCAwIHhcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHNwbGl0X29uX2NoYXIgc2VwIHMgPVxuICBsZXQgciA9IHJlZiBbXSBpblxuICBsZXQgaiA9IHJlZiAobGVuZ3RoIHMpIGluXG4gIGZvciBpID0gbGVuZ3RoIHMgLSAxIGRvd250byAwIGRvXG4gICAgaWYgdW5zYWZlX2dldCBzIGkgPSBzZXAgdGhlbiBiZWdpblxuICAgICAgciA6PSBzdWIgcyAoaSArIDEpICghaiAtIGkgLSAxKSA6OiAhcjtcbiAgICAgIGogOj0gaVxuICAgIGVuZFxuICBkb25lO1xuICBzdWIgcyAwICFqIDo6ICFyXG5cbnR5cGUgdCA9IHN0cmluZ1xuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5leHRlcm5hbCBlcXVhbCA6IHN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbCA9IFwiY2FtbF9zdHJpbmdfZXF1YWxcIiBbQEBub2FsbG9jXVxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHMgPSBib3MgcyB8PiBCLnRvX3NlcVxuXG5sZXQgdG9fc2VxaSBzID0gYm9zIHMgfD4gQi50b19zZXFpXG5cbmxldCBvZl9zZXEgZyA9IEIub2Zfc2VxIGcgfD4gYnRzXG5cbigqIFVURiBkZWNvZGVycyBhbmQgdmFsaWRhdG9ycyAqKVxuXG5sZXQgZ2V0X3V0Zl84X3VjaGFyIHMgaSA9IEIuZ2V0X3V0Zl84X3VjaGFyIChib3MgcykgaVxubGV0IGlzX3ZhbGlkX3V0Zl84IHMgPSBCLmlzX3ZhbGlkX3V0Zl84IChib3MgcylcblxubGV0IGdldF91dGZfMTZiZV91Y2hhciBzIGkgPSBCLmdldF91dGZfMTZiZV91Y2hhciAoYm9zIHMpIGlcbmxldCBpc192YWxpZF91dGZfMTZiZSBzID0gQi5pc192YWxpZF91dGZfMTZiZSAoYm9zIHMpXG5cbmxldCBnZXRfdXRmXzE2bGVfdWNoYXIgcyBpID0gQi5nZXRfdXRmXzE2bGVfdWNoYXIgKGJvcyBzKSBpXG5sZXQgaXNfdmFsaWRfdXRmXzE2bGUgcyA9IEIuaXNfdmFsaWRfdXRmXzE2bGUgKGJvcyBzKVxuXG4oKiogezYgQmluYXJ5IGVuY29kaW5nL2RlY29kaW5nIG9mIGludGVnZXJzfSAqKVxuXG5leHRlcm5hbCBnZXRfdWludDggOiBzdHJpbmcgLT4gaW50IC0+IGludCA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG5leHRlcm5hbCBnZXRfdWludDE2X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX3N0cmluZ19nZXQxNlwiXG5leHRlcm5hbCBnZXRfaW50MzJfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9zdHJpbmdfZ2V0MzJcIlxuZXh0ZXJuYWwgZ2V0X2ludDY0X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfc3RyaW5nX2dldDY0XCJcblxubGV0IGdldF9pbnQ4IHMgaSA9IEIuZ2V0X2ludDggKGJvcyBzKSBpXG5sZXQgZ2V0X3VpbnQxNl9sZSBzIGkgPSBCLmdldF91aW50MTZfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X3VpbnQxNl9iZSBzIGkgPSBCLmdldF91aW50MTZfYmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDE2X25lIHMgaSA9IEIuZ2V0X2ludDE2X25lIChib3MgcykgaVxubGV0IGdldF9pbnQxNl9sZSBzIGkgPSBCLmdldF9pbnQxNl9sZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MTZfYmUgcyBpID0gQi5nZXRfaW50MTZfYmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDMyX2xlIHMgaSA9IEIuZ2V0X2ludDMyX2xlIChib3MgcykgaVxubGV0IGdldF9pbnQzMl9iZSBzIGkgPSBCLmdldF9pbnQzMl9iZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50NjRfbGUgcyBpID0gQi5nZXRfaW50NjRfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDY0X2JlIHMgaSA9IEIuZ2V0X2ludDY0X2JlIChib3MgcykgaVxuXG4oKiBTcGVsbGNoZWNraW5nICopXG5cbmxldCB1dGZfOF91Y2hhcl9sZW5ndGggcyA9XG4gIGxldCBzbGVuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IGkgPSByZWYgMCBhbmQgdWxlbiA9IHJlZiAwIGluXG4gIHdoaWxlICghaSA8IHNsZW4pIGRvXG4gICAgbGV0IGRlY19sZW4gPSBVY2hhci51dGZfOF9kZWNvZGVfbGVuZ3RoX29mX2J5dGUgKHVuc2FmZV9nZXQgcyAhaSkgaW5cbiAgICBpIDo9ICghaSArIGlmIGRlY19sZW4gPSAwIHRoZW4gMSAoKiBjb3VudCBvbmUgVWNoYXIucmVwICopIGVsc2UgZGVjX2xlbik7XG4gICAgaW5jciB1bGVuO1xuICBkb25lO1xuICAhdWxlblxuXG5sZXQgdWNoYXJfYXJyYXlfb2ZfdXRmXzhfc3RyaW5nIHMgPVxuICBsZXQgc2xlbiA9IGxlbmd0aCBzIGluICgqIGlzIGFuIHVwcGVyIGJvdW5kIG9uIFVjaGFyLnQgY291bnQgKilcbiAgbGV0IHVjaGFycyA9IEFycmF5Lm1ha2Ugc2xlbiBVY2hhci5tYXggaW5cbiAgbGV0IGsgPSByZWYgMCBhbmQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICghaSA8IHNsZW4pIGRvXG4gICAgbGV0IGRlYyA9IGdldF91dGZfOF91Y2hhciBzICFpIGluXG4gICAgaSA6PSAhaSArIFVjaGFyLnV0Zl9kZWNvZGVfbGVuZ3RoIGRlYztcbiAgICB1Y2hhcnMuKCFrKSA8LSBVY2hhci51dGZfZGVjb2RlX3VjaGFyIGRlYztcbiAgICBpbmNyIGs7XG4gIGRvbmU7XG4gIHVjaGFycywgIWtcblxubGV0IGVkaXRfZGlzdGFuY2UnID8obGltaXQgPSBJbnQubWF4X2ludCkgcyAoczAsIGxlbjApIHMxID1cbiAgaWYgbGltaXQgPD0gMSB0aGVuIChpZiBlcXVhbCBzIHMxIHRoZW4gMCBlbHNlIGxpbWl0KSBlbHNlXG4gIGxldFtAaW5saW5lXSBtaW5pbXVtIGEgYiBjID0gSW50Lm1pbiBhIChJbnQubWluIGIgYykgaW5cbiAgbGV0IHMxLCBsZW4xID0gdWNoYXJfYXJyYXlfb2ZfdXRmXzhfc3RyaW5nIHMxIGluXG4gIGxldCBsaW1pdCA9IEludC5taW4gKEludC5tYXggbGVuMCBsZW4xKSBsaW1pdCBpblxuICBpZiBJbnQuYWJzIChsZW4xIC0gbGVuMCkgPj0gbGltaXQgdGhlbiBsaW1pdCBlbHNlXG4gIGxldCBzMCwgczEgPSBpZiBsZW4wID4gbGVuMSB0aGVuIHMwLCBzMSBlbHNlIHMxLCBzMCBpblxuICBsZXQgbGVuMCwgbGVuMSA9IGlmIGxlbjAgPiBsZW4xIHRoZW4gbGVuMCwgbGVuMSBlbHNlIGxlbjEsIGxlbjAgaW5cbiAgbGV0IHJlYyBsb29wIHJvd19taW51czIgcm93X21pbnVzMSByb3cgaSBsZW4wIGxpbWl0IHMwIHMxID1cbiAgICBpZiBpID4gbGVuMCB0aGVuIHJvd19taW51czEuKEFycmF5Lmxlbmd0aCByb3dfbWludXMxIC0gMSkgZWxzZVxuICAgIGxldCBsZW4xID0gQXJyYXkubGVuZ3RoIHJvdyAtIDEgaW5cbiAgICBsZXQgcm93X21pbiA9IHJlZiBJbnQubWF4X2ludCBpblxuICAgIHJvdy4oMCkgPC0gaTtcbiAgICBsZXQgam1heCA9XG4gICAgICBsZXQgam1heCA9IEludC5taW4gbGVuMSAoaSArIGxpbWl0IC0gMSkgaW5cbiAgICAgIGlmIGptYXggPCAwIHRoZW4gKCogb3ZlcmZsb3cgKikgbGVuMSBlbHNlIGptYXhcbiAgICBpblxuICAgIGZvciBqID0gSW50Lm1heCAxIChpIC0gbGltaXQpIHRvIGptYXggZG9cbiAgICAgIGxldCBjb3N0ID0gaWYgVWNoYXIuZXF1YWwgczAuKGktMSkgczEuKGotMSkgdGhlbiAwIGVsc2UgMSBpblxuICAgICAgbGV0IG1pbiA9IG1pbmltdW1cbiAgICAgICAgICAocm93X21pbnVzMS4oai0xKSArIGNvc3QpICgqIHN1YnN0aXR1dGUgKilcbiAgICAgICAgICAocm93X21pbnVzMS4oaikgKyAxKSAgICAgICgqIGRlbGV0ZSAqKVxuICAgICAgICAgIChyb3cuKGotMSkgKyAxKSAgICAgICAgICAgKCogaW5zZXJ0ICopXG4gICAgICAgICAgKCogTm90ZSB3aGVuIGogPSBpIC0gbGltaXQsIHRoZSBsYXR0ZXIgW3Jvd10gcmVhZCBtYWtlcyBhIGJvZ3VzIHJlYWRcbiAgICAgICAgICAgICBvbiB0aGUgdmFsdWUgdGhhdCB3YXMgaW4gdGhlIG1hdHJpeCBhdCBkLihpLTIpLihpIC0gbGltaXQgLSAxKS5cbiAgICAgICAgICAgICBTaW5jZSBieSBpbmR1Y3Rpb24gZm9yIGFsbCBpLGosIGQuKGkpLihqKSA+PSBhYnMgKGkgLSBqKSxcbiAgICAgICAgICAgICAocm93LihqLTEpICsgMSkgaXMgZ3JlYXRlciBvciBlcXVhbCB0byBbbGltaXRdIGFuZCB0aHVzIGRvZXNcbiAgICAgICAgICAgICBub3QgYWZmZWN0IGFkdmVyc2VseSB0aGUgbWluaW11bSBjb21wdXRhdGlvbi4gKilcbiAgICAgIGluXG4gICAgICBsZXQgbWluID1cbiAgICAgICAgaWYgKGkgPiAxICYmIGogPiAxICYmXG4gICAgICAgICAgICBVY2hhci5lcXVhbCBzMC4oaS0xKSBzMS4oai0yKSAmJlxuICAgICAgICAgICAgVWNoYXIuZXF1YWwgczAuKGktMikgczEuKGotMSkpXG4gICAgICAgIHRoZW4gSW50Lm1pbiBtaW4gKHJvd19taW51czIuKGotMikgKyBjb3N0KSAoKiB0cmFuc3Bvc2UgKilcbiAgICAgICAgZWxzZSBtaW5cbiAgICAgIGluXG4gICAgICByb3cuKGopIDwtIG1pbjtcbiAgICAgIHJvd19taW4gOj0gSW50Lm1pbiAhcm93X21pbiBtaW47XG4gICAgZG9uZTtcbiAgICBpZiAhcm93X21pbiA+PSBsaW1pdCB0aGVuICgqIGNhbiBubyBsb25nZXIgZGVjcmVhc2UgKikgbGltaXQgZWxzZVxuICAgIGxvb3Agcm93X21pbnVzMSByb3cgcm93X21pbnVzMiAoaSArIDEpIGxlbjAgbGltaXQgczAgczFcbiAgaW5cbiAgbGV0IGlnbm9yZSA9XG4gICAgKCogVmFsdWUgdXNlZCB0byBtYWtlIHRoZSB2YWx1ZXMgYXJvdW5kIHRoZSBkaWFnb25hbCBzdHJpcGUgaWdub3JlZFxuICAgICAgIGJ5IHRoZSBtaW4gY29tcHV0YXRpb25zIHdoZW4gd2UgaGF2ZSBhIGxpbWl0LiAqKVxuICAgIGxpbWl0ICsgMVxuICBpblxuICBsZXQgcm93X21pbnVzMiA9IEFycmF5Lm1ha2UgKGxlbjEgKyAxKSBpZ25vcmUgaW5cbiAgbGV0IHJvd19taW51czEgPSBBcnJheS5pbml0IChsZW4xICsgMSkgKGZ1biB4IC0+IHgpIGluXG4gIGxldCByb3cgPSBBcnJheS5tYWtlIChsZW4xICsgMSkgaWdub3JlIGluXG4gIGxldCBkID0gbG9vcCByb3dfbWludXMyIHJvd19taW51czEgcm93IDEgbGVuMCBsaW1pdCBzMCBzMSBpblxuICBpZiBkID4gbGltaXQgdGhlbiBsaW1pdCBlbHNlIGRcblxubGV0IGVkaXRfZGlzdGFuY2UgP2xpbWl0IHMwIHMxID1cbiAgbGV0IHVzMCA9IHVjaGFyX2FycmF5X29mX3V0Zl84X3N0cmluZyBzMCBpblxuICBlZGl0X2Rpc3RhbmNlJyA/bGltaXQgczAgdXMwIHMxXG5cbmxldCBkZWZhdWx0X21heF9kaXN0IHMgPSBtYXRjaCB1dGZfOF91Y2hhcl9sZW5ndGggcyB3aXRoXG4gIHwgMCB8IDEgfCAyIC0+IDBcbiAgfCAzIHwgNCAtPiAxXG4gIHwgXyAtPiAyXG5cbmxldCBzcGVsbGNoZWNrID8obWF4X2Rpc3QgPSBkZWZhdWx0X21heF9kaXN0KSBpdGVyX2RpY3QgcyA9XG4gIGxldCBtaW4gPSByZWYgKG1heF9kaXN0IHMpIGluXG4gIGxldCBhY2MgPSByZWYgW10gaW5cbiAgbGV0IHNlbGVjdF93b3JkcyBzIHVzIHdvcmQgPVxuICAgIGxldCBkID0gZWRpdF9kaXN0YW5jZScgfmxpbWl0OighbWluICsgMSkgcyB1cyB3b3JkIGluXG4gICAgaWYgZCA9ICFtaW4gdGhlbiAoYWNjIDo9IHdvcmQgOjogIWFjYykgZWxzZVxuICAgIGlmIGQgPCAhbWluIHRoZW4gKG1pbiA6PSBkOyBhY2MgOj0gW3dvcmRdKSBlbHNlICgpXG4gIGluXG4gIGxldCB1cyA9IHVjaGFyX2FycmF5X29mX3V0Zl84X3N0cmluZyBzIGluXG4gIGl0ZXJfZGljdCAoc2VsZWN0X3dvcmRzIHMgdXMpO1xuICBMaXN0LnJldiAhYWNjXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfYXJyYXlfbWFrZSIsImNhbWxfYmxpdF9zdHJpbmciLCJjYW1sX2NoZWNrX2JvdW5kIiwiY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlIiwiY2FtbF9tbF9zdHJpbmdfbGVuZ3RoIiwiY2FtbF9zdHJpbmdfZXF1YWwiLCJjYW1sX3N0cmluZ19oYXNoIiwiY2FtbF9zdHJpbmdfdW5zYWZlX2dldCIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWIiLCJTdGRsaWJfTGlzdCIsIlN0ZGxpYl9JbnQiLCJTdGRsaWJfVWNoYXIiLCJTdGRsaWJfQXJyYXkiLCJTdGRsaWJfQnl0ZXMiLCJidHMiLCJib3MiLCJtYWtlIiwibiIsImMiLCJpbml0Iiwib2ZfYnl0ZXMiLCJ0b19ieXRlcyIsInN1YiIsInMiLCJvZnMiLCJsZW4iLCJibGl0IiwiY3N0IiwiY29uY2F0Iiwic2VwIiwibCIsInNlcGxlbiIsImFjYyIsInBhcmFtIiwicG9zIiwiaGQiLCJ0bCIsIngiLCJkc3QiLCJjYXQiLCJpdGVyIiwiaSIsIml0ZXJpIiwibWFwIiwibWFwaSIsImZvbGRfcmlnaHQiLCJhIiwiZm9sZF9sZWZ0IiwiZXhpc3RzIiwiZm9yX2FsbCIsImlzX3NwYWNlIiwidHJpbSIsImVzY2FwZWQiLCJiIiwiaW5kZXhfcmVjIiwibGltIiwiaW5kZXgiLCJpbmRleF9yZWNfb3B0IiwiaW5kZXhfb3B0IiwiaW5kZXhfZnJvbSIsImluZGV4X2Zyb21fb3B0IiwicmluZGV4X3JlYyIsInJpbmRleCIsInJpbmRleF9mcm9tIiwicmluZGV4X3JlY19vcHQiLCJyaW5kZXhfb3B0IiwicmluZGV4X2Zyb21fb3B0IiwiY29udGFpbnNfZnJvbSIsImV4biIsImNvbnRhaW5zIiwicmNvbnRhaW5zX2Zyb20iLCJ1cHBlcmNhc2VfYXNjaWkiLCJsb3dlcmNhc2VfYXNjaWkiLCJjYXBpdGFsaXplX2FzY2lpIiwidW5jYXBpdGFsaXplX2FzY2lpIiwic3RhcnRzX3dpdGgiLCJwcmVmaXgiLCJsZW5fcyIsImxlbl9wcmUiLCJlbmRzX3dpdGgiLCJzdWZmaXgiLCJsZW5fc3VmIiwiZGlmZiIsImhhc2giLCJzcGxpdF9vbl9jaGFyIiwiaiIsInIiLCJjb21wYXJlIiwidG9fc2VxIiwidG9fc2VxaSIsIm9mX3NlcSIsImciLCJnZXRfdXRmXzhfdWNoYXIiLCJpc192YWxpZF91dGZfOCIsImdldF91dGZfMTZiZV91Y2hhciIsImlzX3ZhbGlkX3V0Zl8xNmJlIiwiZ2V0X3V0Zl8xNmxlX3VjaGFyIiwiaXNfdmFsaWRfdXRmXzE2bGUiLCJnZXRfaW50OCIsImdldF91aW50MTZfbGUiLCJnZXRfdWludDE2X2JlIiwiZ2V0X2ludDE2X25lIiwiZ2V0X2ludDE2X2xlIiwiZ2V0X2ludDE2X2JlIiwiZ2V0X2ludDMyX2xlIiwiZ2V0X2ludDMyX2JlIiwiZ2V0X2ludDY0X2xlIiwiZ2V0X2ludDY0X2JlIiwidWNoYXJfYXJyYXlfb2ZfdXRmXzhfc3RyaW5nIiwic2xlbiIsInVjaGFycyIsImsiLCJkZWMiLCJlZGl0X2Rpc3RhbmNlIiwib3B0IiwiczEiLCJsaW1pdCIsImxlbjAiLCJzMCIsIm1hdGNoIiwibGVuMSIsImlnbm9yZSIsInJvd19taW51czIiLCJyb3dfbWludXMxIiwicm93IiwiZCIsInJvd19taW4iLCJqbWF4IiwiY29zdCIsIm1pbiIsInVzMCIsImRlZmF1bHRfbWF4X2Rpc3QiLCJ1bGVuIiwiZGVjX2xlbiIsInNwZWxsY2hlY2siLCJpdGVyX2RpY3QiLCJtYXhfZGlzdCIsInVzIiwid29yZCIsIlN0ZGxpYl9TdHJpbmciXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxJQUFBQyx3QkFBQTtBQUFBLElBQUFDLG9CQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyx5QkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGFBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxNQUFBO0FBQUEsSUFBQUMsTUFBQTtBQUFBLFlBQUFDLEtBQUFDLEdBQUFDLEdDbUNFLE9BQVUsSUFBVixpQ0FBaUI7QUFBQSxZQUFBQyxLQUFBRixHQUFBZCxHQUVqQixPQUFVLElBQVYsaUNBQWlCO0FBQUEsT0FBQWlCLFdEckNuQixpQkFBQUMsV0FBQTtBQUFBLFlBQUFDLElBQUFDLEdBQUFDLEtBQUFDO0FBQUFBLElDMENFLGtEQUFrQztBQUFBLFlBQzVCO0FBQUEsSUFBTixPQUFxQixJQUFyQix3Q0FBNEI7QUFBQTtBQUFBLE9BQUFDLE9EM0M5QixrQkFBQUMsTUFBQTtBQUFBLFlBQUFDLE9BQUFDLEtBQUFDO0FBQUFBLElDK0RXLFFBQ0Q7QUFBQSxJQURDLGVBQUFQLElBQUEsTUFFQTtBQUFB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QUFBQTtBQUFBO0FBQUE7QUFBQSxVQUFBb0YsSUFEQTtBQUFBO0FBQUEsS0FZRjtBQUFBO0FBQUE7QUFBQSxZQUFBWixnQkFBQUcsT0FBQUUsSUFBQUg7QUFBQUEsUUFBQWUsTUFHVTtBQUFBLElBQ1Ysd0NBQStCO0FBQUE7QUFBQSxZQUFBQyxpQkFBQTVHO0FBQUFBLFFBQUFzRixPQTVFL0IsMEJBQUF1QixPQUVBLEdBQUEzRixJQUFBO0FBQUE7QUFBQTtBQUFBLE1BNEVpRCwyQkFFdEMsOEJBREk7QUFBQSxNQUVSO0FBQUE7QUFBQTtBQUFBLE1BQUE0RixVQTlFUyw0QkFBZDtBQUFBLFVBQ0E7QUFBQSxNQUFBRCxTQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUEsR0E0RU07QUFBQSxZQUFBRSxXQUFBcEIsS0FBQXFCLFdBQUFoSDtBQUFBQTtBQUFBQSxLQUFBaUgsV0FFSztBQUFBLEtBQUFQLE1BQ0M7QUFBQSxLQUFBUSxLQU9MO0FBQUEsS0FBQXpHLE1BTlQ7QUFBQSxJQU9BO0FBQUE7QUFBQSxlQUFBMEc7QUFBQUEsV0FBQWIsSUFMVTtBQUFBLE9BQ1I7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUkyQix5Q0FDaEI7QUFBQTtBQUFBO0FBQUEsSUFBQWM7QUFBQUEsTUQzWGYiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjoxNjAwMywiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL2Zsb2F0Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICBOaWNvbGFzIE9qZWRhIEJhciwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leHRlcm5hbCBuZWcgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJW5lZ2Zsb2F0XCJcbmV4dGVybmFsIGFkZCA6IGZsb2F0IC0+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+IHQgPSBcImNhbWxfZmxvYXRhcnJheV9jcmVhdGVcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdCA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX3NldFwiXG5cbiAgZXh0ZXJuYWwgbWFrZSA6IChpbnRbQHVudGFnZ2VkXSkgLT4gKGZsb2F0W0B1bmJveGVkXSkgLT4gdCA9XG4gICAgXCJjYW1sX2Zsb2F0YXJyYXlfbWFrZVwiIFwiY2FtbF9mbG9hdGFycmF5X21ha2VfdW5ib3hlZFwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX2ZpbGxcbiAgICA6IHQgLT4gKGludFtAdW50YWdnZWRdKSAtPiAoaW50W0B1bnRhZ2dlZF0pIC0+IChmbG9hdFtAdW5ib3hlZF0pIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9mbG9hdGFycmF5X2ZpbGxcIiBcImNhbWxfZmxvYXRhcnJheV9maWxsX3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIHVuc2FmZV9ibGl0OiB0IC0+IGludCAtPiB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9XG4gICAgXCJjYW1sX2Zsb2F0YXJyYXlfYmxpdFwiIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX3N1YiA6IHQgLT4gaW50IC0+IGludCAtPiB0ID0gXCJjYW1sX2Zsb2F0YXJyYXlfc3ViXCJcbiAgZXh0ZXJuYWwgYXBwZW5kX3ByaW0gOiB0IC0+IHQgLT4gdCA9IFwiY2FtbF9mbG9hdGFycmF5X2FwcGVuZFwiXG4gIGV4dGVybmFsIGNvbmNhdCA6IHQgbGlzdCAtPiB0ID0gXCJjYW1sX2Zsb2F0YXJyYXlfY29uY2F0XCJcblxuICBsZXQgY2hlY2sgYSBvZnMgbGVuIG1zZyA9XG4gICAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyArIGxlbiA8IDAgfHwgb2ZzICsgbGVuID4gbGVuZ3RoIGEgdGhlblxuICAgICAgaW52YWxpZF9hcmcgbXNnXG5cbiAgbGV0IGVtcHR5ID0gY3JlYXRlIDBcblxuICBsZXQgaW5pdCBsIGYgPVxuICAgIGlmIGwgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5pbml0XCJcbiAgICBlbHNlXG4gICAgICBsZXQgcmVzID0gY3JlYXRlIGwgaW5cbiAgICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IHJlcyBpIChmIGkpXG4gICAgICBkb25lO1xuICAgICAgcmVzXG5cbiAgbGV0IG1ha2VfbWF0cml4IHN4IHN5IHYgPVxuICAgICgqIFdlIHJhaXNlIGV2ZW4gaWYgW3N4ID0gMCAmJiBzeSA8IDBdOiAqKVxuICAgIGlmIHN5IDwgMCB0aGVuIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkubWFrZV9tYXRyaXhcIjtcbiAgICBsZXQgcmVzID0gQXJyYXkubWFrZSBzeCAoY3JlYXRlIDApIGluXG4gICAgaWYgc3kgPiAwIHRoZW4gYmVnaW5cbiAgICAgIGZvciB4ID0gMCB0byBzeCAtIDEgZG9cbiAgICAgICAgQXJyYXkudW5zYWZlX3NldCByZXMgeCAobWFrZSBzeSB2KVxuICAgICAgZG9uZTtcbiAgICBlbmQ7XG4gICAgcmVzXG5cbiAgbGV0IGluaXRfbWF0cml4IHN4IHN5IGYgPVxuICAgICgqIFdlIHJhaXNlIGV2ZW4gaWYgW3N4ID0gMCAmJiBzeSA8IDBdOiAqKVxuICAgIGlmIHN5IDwgMCB0aGVuIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkuaW5pdF9tYXRyaXhcIjtcbiAgICBsZXQgcmVzID0gQXJyYXkubWFrZSBzeCAoY3JlYXRlIDApIGluXG4gICAgaWYgc3kgPiAwIHRoZW4gYmVnaW5cbiAgICAgIGZvciB4ID0gMCB0byBzeCAtIDEgZG9cbiAgICAgICAgbGV0IHJvdyA9IGNyZWF0ZSBzeSBpblxuICAgICAgICBmb3IgeSA9IDAgdG8gc3kgLSAxIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCByb3cgeSAoZiB4IHkpXG4gICAgICAgIGRvbmU7XG4gICAgICAgIEFycmF5LnVuc2FmZV9zZXQgcmVzIHggcm93XG4gICAgICBkb25lO1xuICAgIGVuZDtcbiAgICByZXNcblxuICBsZXQgc3ViIGEgb2ZzIGxlbiA9XG4gICAgY2hlY2sgYSBvZnMgbGVuIFwiRmxvYXQuQXJyYXkuc3ViXCI7XG4gICAgdW5zYWZlX3N1YiBhIG9mcyBsZW5cblxuICBsZXQgY29weSBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgaWYgbCA9IDAgdGhlbiBlbXB0eVxuICAgIGVsc2UgdW5zYWZlX3N1YiBhIDAgbFxuXG4gIGxldCBhcHBlbmQgYTEgYTIgPVxuICAgIGxldCBsMSA9IGxlbmd0aCBhMSBpblxuICAgIGlmIGwxID0gMCB0aGVuIGNvcHkgYTJcbiAgICBlbHNlIGlmIGxlbmd0aCBhMiA9IDAgdGhlbiB1bnNhZmVfc3ViIGExIDAgbDFcbiAgICBlbHNlIGFwcGVuZF9wcmltIGExIGEyXG5cbiAgKCogaW5saW5pbmcgZXhwb3NlcyBhIGZsb2F0LXVuYm94aW5nIG9wcG9ydHVuaXR5IGZvciBbdl0gKilcbiAgbGV0W0BpbmxpbmVdIGZpbGwgYSBvZnMgbGVuIHYgPVxuICAgIGNoZWNrIGEgb2ZzIGxlbiBcIkZsb2F0LkFycmF5LmZpbGxcIjtcbiAgICB1bnNhZmVfZmlsbCBhIG9mcyBsZW4gdlxuXG4gIGxldCBibGl0IHNyYyBzb2ZzIGRzdCBkb2ZzIGxlbiA9XG4gICAgY2hlY2sgc3JjIHNvZnMgbGVuIFwiRmxvYXQuYXJyYXkuYmxpdFwiO1xuICAgIGNoZWNrIGRzdCBkb2ZzIGxlbiBcIkZsb2F0LmFycmF5LmJsaXRcIjtcbiAgICB1bnNhZmVfYmxpdCBzcmMgc29mcyBkc3QgZG9mcyBsZW5cblxuICBsZXQgdG9fbGlzdCBhID1cbiAgICBMaXN0LmluaXQgKGxlbmd0aCBhKSAodW5zYWZlX2dldCBhKVxuXG4gIGxldCBvZl9saXN0IGwgPVxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgKExpc3QubGVuZ3RoIGwpIGluXG4gICAgbGV0IHJlYyBmaWxsIGkgbCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gcmVzdWx0XG4gICAgICB8IGggOjogdCAtPiB1bnNhZmVfc2V0IHJlc3VsdCBpIGg7IGZpbGwgKGkgKyAxKSB0XG4gICAgaW5cbiAgICBmaWxsIDAgbFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZXF1YWwgZXEgYSBiID1cbiAgICBpZiBsZW5ndGggYSA8PiBsZW5ndGggYiB0aGVuIGZhbHNlIGVsc2VcbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IGxlbiA9IGxlbmd0aCBhIGluXG4gICAgd2hpbGUgIWkgPCBsZW4gJiYgZXEgKHVuc2FmZV9nZXQgYSAhaSkgKHVuc2FmZV9nZXQgYiAhaSkgZG8gaW5jciBpIGRvbmU7XG4gICAgIWkgPSBsZW5cblxuICBsZXQgZmxvYXRfY29tcGFyZSA9IGNvbXBhcmVcbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBjb21wYXJlIGNtcCBhIGIgPVxuICAgIGxldCBsZW5fYSA9IGxlbmd0aCBhIGFuZCBsZW5fYiA9IGxlbmd0aCBiIGluXG4gICAgbGV0IGRpZmYgPSBsZW5fYSAtIGxlbl9iIGluXG4gICAgaWYgZGlmZiA8PiAwIHRoZW4gKGlmIGRpZmYgPCAwIHRoZW4gLTEgZWxzZSAxKSBlbHNlXG4gICAgbGV0IGkgPSByZWYgMCBhbmQgYyA9IHJlZiAwIGluXG4gICAgd2hpbGUgIWkgPCBsZW5fYSAmJiAhYyA9IDBcbiAgICBkbyBjIDo9IGNtcCAodW5zYWZlX2dldCBhICFpKSAodW5zYWZlX2dldCBiICFpKTsgaW5jciBpIGRvbmU7XG4gICAgIWNcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGl0ZXIgZiBhID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBpdGVyMiBmIGEgYiA9XG4gICAgaWYgbGVuZ3RoIGEgPD4gbGVuZ3RoIGIgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5pdGVyMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICAgIGVsc2VcbiAgICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkgZG9uZVxuXG4gIGxldCBtYXAgZiBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG1hcF9pbnBsYWNlIGYgYSA9XG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCBhIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lXG5cbiAgbGV0IG1hcDIgZiBhIGIgPVxuICAgIGxldCBsYSA9IGxlbmd0aCBhIGluXG4gICAgbGV0IGxiID0gbGVuZ3RoIGIgaW5cbiAgICBpZiBsYSA8PiBsYiB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5Lm1hcDI6IGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCJcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IGNyZWF0ZSBsYSBpblxuICAgICAgZm9yIGkgPSAwIHRvIGxhIC0gMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkpXG4gICAgICBkb25lO1xuICAgICAgclxuICAgIGVuZFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgaXRlcmkgZiBhID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxuICBsZXQgbWFwaSBmIGEgPVxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiBpICh1bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBtYXBpX2lucGxhY2UgZiBhID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IGEgaSAoZiBpICh1bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZVxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZm9sZF9sZWZ0IGYgeCBhID1cbiAgICBsZXQgciA9IHJlZiB4IGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IGEgaSlcbiAgICBkb25lO1xuICAgICFyXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmb2xkX3JpZ2h0IGYgYSB4ID1cbiAgICBsZXQgciA9IHJlZiB4IGluXG4gICAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDAgZG9cbiAgICAgIHIgOj0gZiAodW5zYWZlX2dldCBhIGkpICFyXG4gICAgZG9uZTtcbiAgICAhclxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZXhpc3RzIHAgYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSBsb29wIChpICsgMSkgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZvcl9hbGwgcCBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiB0cnVlXG4gICAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIGxvb3AgKGkgKyAxKVxuICAgICAgZWxzZSBmYWxzZSBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgbWVtIHggYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICAgIGVsc2UgaWYgZmxvYXRfY29tcGFyZSAodW5zYWZlX2dldCBhIGkpIHggPSAwIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG4gICgqIG1vc3RseSBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwsIGJ1dCBzbGlnaHRseSBkaWZmZXJlbnQgKilcbiAgbGV0IG1lbV9pZWVlIHggYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICAgIGVsc2UgaWYgeCA9ICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgICBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmaW5kX29wdCBwIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgICBpZiBwIHggdGhlbiBTb21lIHhcbiAgICAgICAgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZmluZF9pbmRleCBwIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gU29tZSBpXG4gICAgICBlbHNlIGxvb3AgKGkgKyAxKSBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZmluZF9tYXAgZiBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgICBlbHNlXG4gICAgICAgIG1hdGNoIGYgKHVuc2FmZV9nZXQgYSBpKSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSlcbiAgICAgICAgfCBTb21lIF8gYXMgciAtPiByXG4gICAgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZpbmRfbWFwaSBmIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggZiBpICh1bnNhZmVfZ2V0IGEgaSkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpXG4gICAgICAgIHwgU29tZSBfIGFzIHIgLT4gclxuICAgIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGV4Y2VwdGlvbiBCb3R0b20gb2YgaW50XG4gIGxldCBzb3J0IGNtcCBhID1cbiAgICBsZXQgbWF4c29uIGwgaSA9XG4gICAgICBsZXQgaTMxID0gaStpK2krMSBpblxuICAgICAgbGV0IHggPSByZWYgaTMxIGluXG4gICAgICBpZiBpMzErMiA8IGwgdGhlbiBiZWdpblxuICAgICAgICBpZiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMCB0aGVuIHggOj0gaTMxKzE7XG4gICAgICAgIGlmIGNtcCAoZ2V0IGEgIXgpIChnZXQgYSAoaTMxKzIpKSA8IDAgdGhlbiB4IDo9IGkzMSsyO1xuICAgICAgICAheFxuICAgICAgZW5kIGVsc2VcbiAgICAgICAgaWYgaTMxKzEgPCBsICYmIGNtcCAoZ2V0IGEgaTMxKSAoZ2V0IGEgKGkzMSsxKSkgPCAwXG4gICAgICAgIHRoZW4gaTMxKzFcbiAgICAgICAgZWxzZSBpZiBpMzEgPCBsIHRoZW4gaTMxIGVsc2UgcmFpc2UgKEJvdHRvbSBpKVxuICAgIGluXG4gICAgbGV0IHJlYyB0cmlja2xlZG93biBsIGkgZSA9XG4gICAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICAgIGlmIGNtcCAoZ2V0IGEgaikgZSA+IDAgdGhlbiBiZWdpblxuICAgICAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgICAgdHJpY2tsZWRvd24gbCBqIGU7XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXQgYSBpIGU7XG4gICAgICBlbmQ7XG4gICAgaW5cbiAgICBsZXQgdHJpY2tsZSBsIGkgZSA9IHRyeSB0cmlja2xlZG93biBsIGkgZSB3aXRoIEJvdHRvbSBpIC0+IHNldCBhIGkgZSBpblxuICAgIGxldCByZWMgYnViYmxlZG93biBsIGkgPVxuICAgICAgbGV0IGogPSBtYXhzb24gbCBpIGluXG4gICAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgIGJ1YmJsZWRvd24gbCBqXG4gICAgaW5cbiAgICBsZXQgYnViYmxlIGwgaSA9IHRyeSBidWJibGVkb3duIGwgaSB3aXRoIEJvdHRvbSBpIC0+IGkgaW5cbiAgICBsZXQgcmVjIHRyaWNrbGV1cCBpIGUgPVxuICAgICAgbGV0IGZhdGhlciA9IChpIC0gMSkgLyAzIGluXG4gICAgICBhc3NlcnQgKGkgPD4gZmF0aGVyKTtcbiAgICAgIGlmIGNtcCAoZ2V0IGEgZmF0aGVyKSBlIDwgMCB0aGVuIGJlZ2luXG4gICAgICAgIHNldCBhIGkgKGdldCBhIGZhdGhlcik7XG4gICAgICAgIGlmIGZhdGhlciA+IDAgdGhlbiB0cmlja2xldXAgZmF0aGVyIGUgZWxzZSBzZXQgYSAwIGU7XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXQgYSBpIGU7XG4gICAgICBlbmQ7XG4gICAgaW5cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgZm9yIGkgPSAobCArIDEpIC8gMyAtIDEgZG93bnRvIDAgZG8gdHJpY2tsZSBsIGkgKGdldCBhIGkpOyBkb25lO1xuICAgIGZvciBpID0gbCAtIDEgZG93bnRvIDIgZG9cbiAgICAgIGxldCBlID0gKGdldCBhIGkpIGluXG4gICAgICBzZXQgYSBpIChnZXQgYSAwKTtcbiAgICAgIHRyaWNrbGV1cCAoYnViYmxlIGkgMCkgZTtcbiAgICBkb25lO1xuICAgIGlmIGwgPiAxIHRoZW4gKGxldCBlID0gKGdldCBhIDEpIGluIHNldCBhIDEgKGdldCBhIDApOyBzZXQgYSAwIGUpXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sLCBleGNlcHQgZm9yIHRoZSBjYWxsIHRvIFtjcmVhdGVdICopXG4gIGxldCBjdXRvZmYgPSA1XG4gIGxldCBzdGFibGVfc29ydCBjbXAgYSA9XG4gICAgbGV0IG1lcmdlIHNyYzFvZnMgc3JjMWxlbiBzcmMyIHNyYzJvZnMgc3JjMmxlbiBkc3QgZHN0b2ZzID1cbiAgICAgIGxldCBzcmMxciA9IHNyYzFvZnMgKyBzcmMxbGVuIGFuZCBzcmMyciA9IHNyYzJvZnMgKyBzcmMybGVuIGluXG4gICAgICBsZXQgcmVjIGxvb3AgaTEgczEgaTIgczIgZCA9XG4gICAgICAgIGlmIGNtcCBzMSBzMiA8PSAwIHRoZW4gYmVnaW5cbiAgICAgICAgICBzZXQgZHN0IGQgczE7XG4gICAgICAgICAgbGV0IGkxID0gaTEgKyAxIGluXG4gICAgICAgICAgaWYgaTEgPCBzcmMxciB0aGVuXG4gICAgICAgICAgICBsb29wIGkxIChnZXQgYSBpMSkgaTIgczIgKGQgKyAxKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJsaXQgc3JjMiBpMiBkc3QgKGQgKyAxKSAoc3JjMnIgLSBpMilcbiAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICBzZXQgZHN0IGQgczI7XG4gICAgICAgICAgbGV0IGkyID0gaTIgKyAxIGluXG4gICAgICAgICAgaWYgaTIgPCBzcmMyciB0aGVuXG4gICAgICAgICAgICBsb29wIGkxIHMxIGkyIChnZXQgc3JjMiBpMikgKGQgKyAxKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJsaXQgYSBpMSBkc3QgKGQgKyAxKSAoc3JjMXIgLSBpMSlcbiAgICAgICAgZW5kXG4gICAgICBpbiBsb29wIHNyYzFvZnMgKGdldCBhIHNyYzFvZnMpIHNyYzJvZnMgKGdldCBzcmMyIHNyYzJvZnMpIGRzdG9mcztcbiAgICBpblxuICAgIGxldCBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICBsZXQgZSA9IChnZXQgYSAoc3Jjb2ZzICsgaSkpIGluXG4gICAgICAgIGxldCBqID0gcmVmIChkc3RvZnMgKyBpIC0gMSkgaW5cbiAgICAgICAgd2hpbGUgKCFqID49IGRzdG9mcyAmJiBjbXAgKGdldCBkc3QgIWopIGUgPiAwKSBkb1xuICAgICAgICAgIHNldCBkc3QgKCFqICsgMSkgKGdldCBkc3QgIWopO1xuICAgICAgICAgIGRlY3IgajtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgc2V0IGRzdCAoIWogKyAxKSBlO1xuICAgICAgZG9uZTtcbiAgICBpblxuICAgIGxldCByZWMgc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgICBpZiBsZW4gPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gZWxzZSBiZWdpblxuICAgICAgICBsZXQgbDEgPSBsZW4gLyAyIGluXG4gICAgICAgIGxldCBsMiA9IGxlbiAtIGwxIGluXG4gICAgICAgIHNvcnR0byAoc3Jjb2ZzICsgbDEpIGRzdCAoZHN0b2ZzICsgbDEpIGwyO1xuICAgICAgICBzb3J0dG8gc3Jjb2ZzIGEgKHNyY29mcyArIGwyKSBsMTtcbiAgICAgICAgbWVyZ2UgKHNyY29mcyArIGwyKSBsMSBkc3QgKGRzdG9mcyArIGwxKSBsMiBkc3QgZHN0b2ZzO1xuICAgICAgZW5kO1xuICAgIGluXG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGlmIGwgPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byAwIGEgMCBsIGVsc2UgYmVnaW5cbiAgICAgIGxldCBsMSA9IGwgLyAyIGluXG4gICAgICBsZXQgbDIgPSBsIC0gbDEgaW5cbiAgICAgIGxldCB0ID0gY3JlYXRlIGwyIGluXG4gICAgICBzb3J0dG8gbDEgdCAwIGwyO1xuICAgICAgc29ydHRvIDAgYSBsMiBsMTtcbiAgICAgIG1lcmdlIGwyIGwxIHQgMCBsMiBhIDA7XG4gICAgZW5kXG5cbiAgbGV0IGZhc3Rfc29ydCA9IHN0YWJsZV9zb3J0XG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBzaHVmZmxlIH5yYW5kIGEgPSAoKiBGaXNoZXItWWF0ZXMgKilcbiAgICBmb3IgaSA9IGxlbmd0aCBhIC0gMSBkb3dudG8gMSBkb1xuICAgICAgbGV0IGogPSByYW5kIChpICsgMSkgaW5cbiAgICAgIGxldCB2ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgIHVuc2FmZV9zZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgIHVuc2FmZV9zZXQgYSBqIHZcbiAgICBkb25lXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCB0b19zZXEgYSA9XG4gICAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgICBpZiBpIDwgbGVuZ3RoIGFcbiAgICAgIHRoZW5cbiAgICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgICBTZXEuQ29ucyAoeCwgYXV4IChpKzEpKVxuICAgICAgZWxzZSBTZXEuTmlsXG4gICAgaW5cbiAgICBhdXggMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgdG9fc2VxaSBhID1cbiAgICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAgIGlmIGkgPCBsZW5ndGggYVxuICAgICAgdGhlblxuICAgICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICAgICAgZWxzZSBTZXEuTmlsXG4gICAgaW5cbiAgICBhdXggMFxuXG4gICgqIG1vc3RseSBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG9mX3Jldl9saXN0IGwgPVxuICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgbGV0IGEgPSBjcmVhdGUgbGVuIGluXG4gICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgICBbXSAtPiBhXG4gICAgICB8IGhkOjp0bCAtPiB1bnNhZmVfc2V0IGEgaSBoZDsgZmlsbCAoaS0xKSB0bFxuICAgIGluXG4gICAgZmlsbCAobGVuLTEpIGxcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG9mX3NlcSBpID1cbiAgICBsZXQgbCA9IFNlcS5mb2xkX2xlZnQgKGZ1biBhY2MgeCAtPiB4OjphY2MpIFtdIGkgaW5cbiAgICBvZl9yZXZfbGlzdCBsXG5cblxuICBsZXQgbWFwX3RvX2FycmF5IGYgYSA9XG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGlmIGwgPSAwIHRoZW4gW3wgfF0gZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBBcnJheS5tYWtlIGwgKGYgKHVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICAgIGZvciBpID0gMSB0byBsIC0gMSBkb1xuICAgICAgICBBcnJheS51bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBhIGkpKVxuICAgICAgZG9uZTtcbiAgICAgIHJcbiAgICBlbmRcblxuICBsZXQgbWFwX2Zyb21fYXJyYXkgZiBhID1cbiAgICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBhIGluXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgKEFycmF5LnVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcblxuZW5kXG5cbm1vZHVsZSBBcnJheUxhYmVscyA9IEFycmF5XG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfYXJyYXlfbWFrZSIsImNhbWxfY2hlY2tfYm91bmQiLCJjYW1sX2Zsb2F0X2NvbXBhcmUiLCJjYW1sX2Zsb2F0YXJyYXlfY29uY2F0IiwiY2FtbF9mbG9hdGFycmF5X2NyZWF0ZSIsImNhbWxfZmxvYXRhcnJheV9tYWtlIiwiY2FtbF9mbG9hdGFycmF5X3N1YiIsImNhbWxfaGFzaCIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfbmV4dGFmdGVyX2Zsb2F0IiwiY2FtbF9zaWduYml0X2Zsb2F0IiwiY2FtbF93cmFwX2V4Y2VwdGlvbiIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYl9TZXEiLCJTdGRsaWJfTGlzdCIsIkFzc2VydF9mYWlsdXJlIiwiU3RkbGliIiwiaW5maW5pdHkiLCJuZWdfaW5maW5pdHkiLCJuYW4iLCJpc19maW5pdGUiLCJ4IiwiaXNfaW5maW5pdGUiLCJpc19uYW4iLCJtYXhfZmxvYXQiLCJtaW5fZmxvYXQiLCJlcHNpbG9uIiwib2Zfc3RyaW5nX29wdCIsInRvX3N0cmluZyIsImlzX2ludGVnZXIiLCJzdWNjIiwicHJlZCIsImVxdWFsIiwieSIsIm1pbiIsIm1heCIsIm1pbl9tYXgiLCJtaW5fbnVtIiwibWF4X251bSIsIm1pbl9tYXhfbnVtIiwic2VlZGVkX2hhc2giLCJzZWVkIiwiaGFzaCIsImNoZWNrIiwiYSIsIm9mcyIsImxlbiIsIm1zZyIsImVtcHR5IiwiaW5pdCIsImwiLCJyZXMiLCJpIiwibWFrZV9tYXRyaXgiLCJzeCIsInN5IiwidiIsImluaXRfbWF0cml4Iiwicm93Iiwic3ViIiwiY29weSIsImFwcGVuZCIsImEyIiwibDEiLCJmaWxsIiwiYmxpdCIsInNyYyIsInNvZnMiLCJkc3QiLCJkb2ZzIiwiY3N0X0Zsb2F0X2FycmF5X2JsaXQiLCJ0b19saXN0Iiwib2ZfbGlzdCIsInJlc3VsdCIsInQiLCJoIiwiZXEiLCJiIiwiY29tcGFyZSIsImNtcCIsImxlbl9hIiwibGVuX2IiLCJkaWZmIiwiYyIsIml0ZXIiLCJpdGVyMiIsIm1hcCIsInIiLCJtYXBfaW5wbGFjZSIsIm1hcDIiLCJsYSIsImxiIiwiaXRlcmkiLCJtYXBpIiwibWFwaV9pbnBsYWNlIiwiZm9sZF9sZWZ0IiwiZm9sZF9yaWdodCIsImV4aXN0cyIsInAiLCJuIiwiZm9yX2FsbCIsIm1lbSIsIm1lbV9pZWVlIiwiZmluZF9vcHQiLCJmaW5kX2luZGV4IiwiZmluZF9tYXAiLCJmaW5kX21hcGkiLCJCb3R0b20iLCJzb3J0IiwibWF4c29uIiwiaTMxIiwiZSIsImoiLCJleG4iLCJmYXRoZXIiLCJzdGFibGVfc29ydCIsIm1lcmdlIiwic3JjMW9mcyIsInNyYzFsZW4iLCJzcmMyIiwic3JjMm9mcyIsInNyYzJsZW4iLCJkc3RvZnMiLCJzcmMxciIsInNyYzJyIiwiczIiLCJzMSIsImkxIiwiaTIiLCJkIiwiaXNvcnR0byIsInNyY29mcyIsInNvcnR0byIsImwyIiwic2h1ZmZsZSIsInJhbmQiLCJ0b19zZXEiLCJhdXgiLCJwYXJhbSIsInRvX3NlcWkiLCJvZl9zZXEiLCJhY2MiLCJ0bCIsImhkIiwibWFwX3RvX2FycmF5IiwibWFwX2Zyb21fYXJyYXkiLCJTdGRsaWJfRmxvYXQiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLHFCQUFBO0FBQUEsSUFBQUMseUJBQUE7QUFBQSxJQUFBQyx5QkFBQTtBQUFBLElBQUFDLHVCQUFBO0FBQUEsSUFBQUMsc0JBQUE7QUFBQSxJQUFBQyxZQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxJQUFBQyx1QkFBQTtBQUFBLElBQUFDLHFCQUFBO0FB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QTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsb0JEeE10QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEdDd01zQjtBQUFBO0FBQUEsRUR4TXRCIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MTY4NjEsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9pbnQzMi5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtJbnQzMl06IDMyLWJpdCBpbnRlZ2VycyAqKVxuXG5leHRlcm5hbCBuZWcgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX25lZ1wiXG5leHRlcm5hbCBhZGQgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2FkZFwiXG5leHRlcm5hbCBzdWIgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX3N1YlwiXG5leHRlcm5hbCBtdWwgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX211bFwiXG5leHRlcm5hbCBkaXYgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2RpdlwiXG5leHRlcm5hbCByZW0gOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX21vZFwiXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2FuZFwiXG5leHRlcm5hbCBsb2dvciA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfb3JcIlxuZXh0ZXJuYWwgbG9neG9yIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl94b3JcIlxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludDMyIC0+IGludCAtPiBpbnQzMiA9IFwiJWludDMyX2xzbFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodCA6IGludDMyIC0+IGludCAtPiBpbnQzMiA9IFwiJWludDMyX2FzclwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogaW50MzIgLT4gaW50IC0+IGludDMyID0gXCIlaW50MzJfbHNyXCJcbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBpbnQzMiA9IFwiJWludDMyX29mX2ludFwiXG5leHRlcm5hbCB0b19pbnQgOiBpbnQzMiAtPiBpbnQgPSBcIiVpbnQzMl90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQzMlxuICA9IFwiY2FtbF9pbnQzMl9vZl9mbG9hdFwiIFwiY2FtbF9pbnQzMl9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50MzIgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50MzJfdG9fZmxvYXRcIiBcImNhbWxfaW50MzJfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBiaXRzX29mX2Zsb2F0IDogZmxvYXQgLT4gaW50MzJcbiAgPSBcImNhbWxfaW50MzJfYml0c19vZl9mbG9hdFwiIFwiY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDMyIC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50MzJfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IHplcm8gPSAwbFxubGV0IG9uZSA9IDFsXG5sZXQgbWludXNfb25lID0gLTFsXG5sZXQgc3VjYyBuID0gYWRkIG4gMWxcbmxldCBwcmVkIG4gPSBzdWIgbiAxbFxubGV0IGFicyBuID0gaWYgbiA+PSAwbCB0aGVuIG4gZWxzZSBuZWcgblxubGV0IG1pbl9pbnQgPSAweDgwMDAwMDAwbFxubGV0IG1heF9pbnQgPSAweDdGRkZGRkZGbFxubGV0IGxvZ25vdCBuID0gbG9neG9yIG4gKC0xbClcblxubGV0IHVuc2lnbmVkX3RvX2ludCA9XG4gIG1hdGNoIFN5cy53b3JkX3NpemUgd2l0aFxuICB8IDMyIC0+XG4gICAgICBsZXQgbWF4X2ludCA9IG9mX2ludCBTdGRsaWIubWF4X2ludCBpblxuICAgICAgZnVuIG4gLT5cbiAgICAgICAgaWYgbiA+PSAwbCAmJiBuIDw9IG1heF9pbnQgdGhlblxuICAgICAgICAgIFNvbWUgKHRvX2ludCBuKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgTm9uZVxuICB8IDY0IC0+XG4gICAgICAoKiBTbyB0aGF0IGl0IGNvbXBpbGVzIGluIDMyLWJpdCAqKVxuICAgICAgbGV0IG1hc2sgPSAweEZGRkYgbHNsIDE2IGxvciAweEZGRkYgaW5cbiAgICAgIGZ1biBuIC0+IFNvbWUgKHRvX2ludCBuIGxhbmQgbWFzaylcbiAgfCBfIC0+XG4gICAgICBhc3NlcnQgZmFsc2VcblxuZXh0ZXJuYWwgZm9ybWF0IDogc3RyaW5nIC0+IGludDMyIC0+IHN0cmluZyA9IFwiY2FtbF9pbnQzMl9mb3JtYXRcIlxubGV0IHRvX3N0cmluZyBuID0gZm9ybWF0IFwiJWRcIiBuXG5cbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQzMiA9IFwiY2FtbF9pbnQzMl9vZl9zdHJpbmdcIlxuXG5sZXQgb2Zfc3RyaW5nX29wdCBzID1cbiAgdHJ5IFNvbWUgKG9mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbnR5cGUgdCA9IGludDMyXG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmxldCBlcXVhbCAoeDogdCkgKHk6IHQpID0geCA9IHlcblxubGV0IHVuc2lnbmVkX2NvbXBhcmUgbiBtID1cbiAgY29tcGFyZSAoc3ViIG4gbWluX2ludCkgKHN1YiBtIG1pbl9pbnQpXG5cbmxldCB1bnNpZ25lZF9sdCBuIG0gPVxuICBzdWIgbiBtaW5faW50IDwgc3ViIG0gbWluX2ludFxuXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuKCogVW5zaWduZWQgZGl2aXNpb24gZnJvbSBzaWduZWQgZGl2aXNpb24gb2YgdGhlIHNhbWUgYml0bmVzcy5cbiAgIFNlZSBXYXJyZW4gSnIuLCBIZW5yeSBTLiAoMjAxMykuIEhhY2tlcidzIERlbGlnaHQgKDIgZWQuKSwgU2VjIDktMy5cbiopXG5sZXQgdW5zaWduZWRfZGl2IG4gZCA9XG4gIGlmIGQgPCB6ZXJvIHRoZW5cbiAgICBpZiB1bnNpZ25lZF9sdCBuIGQgdGhlbiB6ZXJvIGVsc2Ugb25lXG4gIGVsc2VcbiAgICBsZXQgcSA9IHNoaWZ0X2xlZnQgKGRpdiAoc2hpZnRfcmlnaHRfbG9naWNhbCBuIDEpIGQpIDEgaW5cbiAgICBsZXQgciA9IHN1YiBuIChtdWwgcSBkKSBpblxuICAgIGlmIHVuc2lnbmVkX2x0IHIgZCB0aGVuIHEgZWxzZSBzdWNjIHFcblxubGV0IHVuc2lnbmVkX3JlbSBuIGQgPVxuICBzdWIgbiAobXVsICh1bnNpZ25lZF9kaXYgbiBkKSBkKVxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2dyZWF0ZXJlcXVhbCIsImNhbWxfaGFzaCIsImNhbWxfaW50X2NvbXBhcmUiLCJjYW1sX2xlc3NlcXVhbCIsImNhbWxfbGVzc3RoYW4iLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX211bCIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYiIsIlN0ZGxpYl9TeXMiLCJBc3NlcnRfZmFpbHVyZSIsInN1Y2MiLCJuIiwicHJlZCIsImFicyIsImxvZ25vdCIsIm1hdGNoIiwibWF4X2ludCIsInVuc2lnbmVkX3RvX2ludCIsInRvX3N0cmluZyIsIm9mX3N0cmluZ19vcHQiLCJzIiwiZXhuIiwiZXF1YWwiLCJ1bnNpZ25lZF9jb21wYXJlIiwibSIsInkiLCJ4IiwidW5zaWduZWRfbHQiLCJtaW4iLCJtYXgiLCJ6ZXJvIiwib25lIiwidW5zaWduZWRfZGl2IiwiZCIsInEiLCJyIiwidW5zaWduZWRfcmVtIiwic2VlZGVkX2hhc2giLCJzZWVkIiwiaGFzaCIsIlN0ZGxpYl9JbnQzMiJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLFlBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLElBQUFDLFdBQUE7QUFBQSxJQUFBQyxzQkFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsWUFBQUMsS0FBQUMsR0MrQ3FCO0FBQUEsWUFBQUMsS0FBQUQsR0FDQTtBQUFBLFlBQUFFLElBQUFGLEdBQ04sNENBQXlCO0FBQUEsWUFBQUcsT0FBQUgsR0FHWDtBQUFBLE9BQUFJLFFEcEQ3QjtBQUFBO0FBQUE7QUFBQSxLQUFBQyxVQ3lEb0I7QUFBQSxLQUFBQztBQUFBQSxPQUNkLFNBQUFOO0FBQUFBLFFBQ0ssOEJBQVc7QUFBQSxTQUNaO0FBQUEsUUFFQTtBQUFBLE9BQUk7QUFBQTtBQUFBLElEOURkO0FBQUEsS0NvRU07QUFBQTtBQUFBLFFBQUFNLGtCQUZBLFNBQUFOLEdBQVMsbUJBQXlCO0FBQUE7QUFBQSxZQUFBTyxVQUFBUCxHQUt0Qix1Q0FBYTtBQUFBLFlBQUFRLGNBQUFDO0FBQUFBLElBSzdCLFlBQVM7QUFBQSxVQUFBQztBQUFBQSxTQUFBQSxNRDVFWDtBQUFBLDhCQzZFb0I7QUFBQSxLRDdFcEI7QUFBQTtBQUFBLEdDNkV3QjtBQUFBLE9BQUFDLFFEN0V4QjtBQUFBLFlBQUFDLGlCQUFBWixHQUFBYTtBQUFBQSxRQUFBQyxJQ3FGMEIsb0JBQUFDLElBQWhCO0FBQUEsSUFKa0IsNkJBSWE7QUFBQTtBQUFBLFlBQUFDLFlBQUFoQixHQUFBYTtBQUFBQSxJQUd2Qyw0REFBNkI7QUFBQTtBQUFBLFlBQUFJLElBQUFGLEdBQUFELEdBRVYsbUNBQW9CO0FBQUEsWUFBQUksSUFBQUgsR0FBQUQsR0FDcEIsc0NBQW9CO0FBQUEsT0FBQUssT0QzRnpDLEdBQUFDLE1BQUE7QUFBQSxZQUFBQyxhQUFBckIsR0FBQXNCO0FBQUFBLElDaUdLLHdCQUNFLHFDQUlrQztBQUFBLFFBQUFDLElBRmxCLHVDQUFBQyxJQUNMO0FBQUEsSUFDWCx3Q0FBa0M7QUFBQTtBQUFBLFlBQUFDLGFBQUF6QixHQUFBc0I7QUFBQUEsSUFHNUIsV0FBTCxTQUFLLDBCQUFxQjtBQUFBO0FBQUEsWUFBQUksWUFBQUMsTUFBQVosR0FJVCxrQ0FBK0I7QUFBQSxZQUFBYSxLQUFBYixHQUMzQywrQkFBNEI7QUFBQTtBQUFBLElBQUFjO0FBQUFBLE1EOUd6QyIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjE2OTU5LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvaW50NjQubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbSW50NjRdOiA2NC1iaXQgaW50ZWdlcnMgKilcblxuZXh0ZXJuYWwgbmVnIDogaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9uZWdcIlxuZXh0ZXJuYWwgYWRkIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hZGRcIlxuZXh0ZXJuYWwgc3ViIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9zdWJcIlxuZXh0ZXJuYWwgbXVsIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tdWxcIlxuZXh0ZXJuYWwgZGl2IDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9kaXZcIlxuZXh0ZXJuYWwgcmVtIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tb2RcIlxuZXh0ZXJuYWwgbG9nYW5kIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hbmRcIlxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X29yXCJcbmV4dGVybmFsIGxvZ3hvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfeG9yXCJcbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc2xcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hc3JcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2xzclwiXG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnRcIlxuZXh0ZXJuYWwgdG9faW50IDogaW50NjQgLT4gaW50ID0gXCIlaW50NjRfdG9faW50XCJcbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0b19mbG9hdCA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X3RvX2Zsb2F0XCIgXCJjYW1sX2ludDY0X3RvX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgb2ZfaW50MzIgOiBpbnQzMiAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludDMyXCJcbmV4dGVybmFsIHRvX2ludDMyIDogaW50NjQgLT4gaW50MzIgPSBcIiVpbnQ2NF90b19pbnQzMlwiXG5leHRlcm5hbCBvZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9uYXRpdmVpbnRcIlxuZXh0ZXJuYWwgdG9fbmF0aXZlaW50IDogaW50NjQgLT4gbmF0aXZlaW50ID0gXCIlaW50NjRfdG9fbmF0aXZlaW50XCJcblxubGV0IHplcm8gPSAwTFxubGV0IG9uZSA9IDFMXG5sZXQgbWludXNfb25lID0gLTFMXG5sZXQgc3VjYyBuID0gYWRkIG4gMUxcbmxldCBwcmVkIG4gPSBzdWIgbiAxTFxubGV0IGFicyBuID0gaWYgbiA+PSAwTCB0aGVuIG4gZWxzZSBuZWcgblxubGV0IG1pbl9pbnQgPSAweDgwMDAwMDAwMDAwMDAwMDBMXG5sZXQgbWF4X2ludCA9IDB4N0ZGRkZGRkZGRkZGRkZGRkxcbmxldCBsb2dub3QgbiA9IGxvZ3hvciBuICgtMUwpXG5cbmxldCB1bnNpZ25lZF90b19pbnQgPVxuICBsZXQgbWF4X2ludCA9IG9mX2ludCBTdGRsaWIubWF4X2ludCBpblxuICBmdW4gbiAtPlxuICAgIGlmIG4gPj0gMEwgJiYgbiA8PSBtYXhfaW50IHRoZW5cbiAgICAgIFNvbWUgKHRvX2ludCBuKVxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuZXh0ZXJuYWwgZm9ybWF0IDogc3RyaW5nIC0+IGludDY0IC0+IHN0cmluZyA9IFwiY2FtbF9pbnQ2NF9mb3JtYXRcIlxubGV0IHRvX3N0cmluZyBuID0gZm9ybWF0IFwiJWRcIiBuXG5cbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQ2NCA9IFwiY2FtbF9pbnQ2NF9vZl9zdHJpbmdcIlxuXG5sZXQgb2Zfc3RyaW5nX29wdCBzID1cbiAgdHJ5IFNvbWUgKG9mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmV4dGVybmFsIGJpdHNfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0XCIgXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG50eXBlIHQgPSBpbnQ2NFxuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5sZXQgZXF1YWwgKHg6IHQpICh5OiB0KSA9IHggPSB5XG5cbmxldCB1bnNpZ25lZF9jb21wYXJlIG4gbSA9XG4gIGNvbXBhcmUgKHN1YiBuIG1pbl9pbnQpIChzdWIgbSBtaW5faW50KVxuXG5sZXQgdW5zaWduZWRfbHQgbiBtID1cbiAgc3ViIG4gbWluX2ludCA8IHN1YiBtIG1pbl9pbnRcblxubGV0IG1pbiB4IHkgOiB0ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5IDogdCA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbigqIFVuc2lnbmVkIGRpdmlzaW9uIGZyb20gc2lnbmVkIGRpdmlzaW9uIG9mIHRoZSBzYW1lIGJpdG5lc3MuXG4gICBTZWUgV2FycmVuIEpyLiwgSGVucnkgUy4gKDIwMTMpLiBIYWNrZXIncyBEZWxpZ2h0ICgyIGVkLiksIFNlYyA5LTMuXG4qKVxubGV0IHVuc2lnbmVkX2RpdiBuIGQgPVxuICBpZiBkIDwgemVybyB0aGVuXG4gICAgaWYgdW5zaWduZWRfbHQgbiBkIHRoZW4gemVybyBlbHNlIG9uZVxuICBlbHNlXG4gICAgbGV0IHEgPSBzaGlmdF9sZWZ0IChkaXYgKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgbiAxKSBkKSAxIGluXG4gICAgbGV0IHIgPSBzdWIgbiAobXVsIHEgZCkgaW5cbiAgICBpZiB1bnNpZ25lZF9sdCByIGQgdGhlbiBxIGVsc2Ugc3VjYyBxXG5cbmxldCB1bnNpZ25lZF9yZW0gbiBkID1cbiAgc3ViIG4gKG11bCAodW5zaWduZWRfZGl2IG4gZCkgZClcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2hfcGFyYW0gOlxuICBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiBpbnQgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5sZXQgc2VlZGVkX2hhc2ggc2VlZCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIHNlZWQgeFxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCAwIHhcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9ncmVhdGVyZXF1YWwiLCJjYW1sX2hhc2giLCJjYW1sX2ludDY0X2FkZCIsImNhbWxfaW50NjRfY29tcGFyZSIsImNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpIiwiY2FtbF9pbnQ2NF9tdWwiLCJjYW1sX2ludDY0X3N1YiIsImNhbWxfbGVzc2VxdWFsIiwiY2FtbF9sZXNzdGhhbiIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJ6ZXJvIiwib25lIiwibWludXNfb25lIiwibWluX2ludCIsIm1heF9pbnQiLCJTdGRsaWIiLCJzdWNjIiwibiIsInByZWQiLCJhYnMiLCJsb2dub3QiLCJ1bnNpZ25lZF90b19pbnQiLCJ0b19zdHJpbmciLCJvZl9zdHJpbmdfb3B0IiwicyIsImV4biIsImNvbXBhcmUiLCJ4IiwieSIsImVxdWFsIiwidW5zaWduZWRfY29tcGFyZSIsIm0iLCJ1bnNpZ25lZF9sdCIsIm1pbiIsIm1heCIsInVuc2lnbmVkX2RpdiIsImQiLCJxIiwiciIsInVuc2lnbmVkX3JlbSIsInNlZWRlZF9oYXNoIiwic2VlZCIsImhhc2giXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxJQUFBQyxZQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxxQkFBQTtBQUFBLElBQUFDLDZCQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxpQkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUE7QUFBQSxJQUFBQyxPQUFBO0FBQUEsSUFBQUMsTUFBQTtBQUFBLElBQUFDLFlBQUE7QUFBQSxJQUFBQyxVQUFBO0FBQUEsSUFBQUMsVUFBQTtBQUFBLElBQUFDLFNBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxLQUFBQyxHQzZDYSwyQkFBUTtBQUFBLFlBQUFDLEtBQUFELEdBQ1IsMkJBQVE7QUFBQSxZQUFBRSxJQUFBRjtBQUFBQSxJQUNOLHFDQUFvQix5QkFBSztBQUFBO0FBQUEsWUFBQUcsT0FBQUgsR0FHekIsbUNBQWM7QUFBQTtBQUFBLElBQUFILFlBR2I7QUFBQSxRQUNkO0FBQUEsWUFBQU8sZ0JBQUFKO0FBQUFBLElBQ0ssOEJBQVc7QUFBQSxLQUNaO0FBQUEsSUFFQTtBQUFBLEdBQUk7QUFBQSxZQUFBSyxVQUFBTCxHQUdRLHlDQUFhO0FBQUEsWUFBQU0sY0FBQUM7QUFBQUEsSUFLN0IsWUFBUztBQUFBLFVBQUFDO0FBQUFBLFNBQUFBLE1EbEVYO0FBQUEsOEJDbUVvQjtBQUFBLEtEbkVwQjtBQUFBO0FBQUEsR0NtRXdCO0FBQUEsWUFBQUMsUUFBQUMsR0FBQUMsR0FXSSwrQkFBa0I7QUFBQSxPQUFBQyxRQXhCNUM7QUFBQSxZQUFBQyxpQkFBQWIsR0FBQWM7QUFBQUEsUUFBQUgsSUE0QndCLDRCQUFBRCxJQUFoQjtBQUFBLElBSmtCLCtCQUlhO0FBQUE7QUFBQSxZQUFBSyxZQUFBZixHQUFBYztBQUFBQSxJQUd2QztBQUFBLHlDQUFnQiwyQkFBYTtBQUFBO0FBQUEsWUFBQUUsSUFBQU4sR0FBQUMsR0FFVixtQ0FBb0I7QUFBQSxZQUFBTSxJQUFBUCxHQUFBQyxHQUNwQixzQ0FBb0I7QUFBQSxZQUFBTyxhQUFBbEIsR0FBQW1CO0FBQUFBLElBTXBDLDJCQUNFLHFDQUlrQztBQUFBO0FBQUEsS0FBQUM7QUFBQUEsT0FGN0I7QUFBQSxTQUFXO0FBQUEsV0FBSztBQUFBO0FBQUEsS0FBQUMsSUFDaEIsa0JBQU07QUFBQSxJQUNYLCtCQXRETSxvQkFzRDRCO0FBQUE7QUFBQSxZQUFBQyxhQUFBdEIsR0FBQW1CO0FBQUFBLElBRzVCLE9BQVgsa0JBQU0sZUFBSyx1QkFBcUI7QUFBQTtBQUFBLFlBQUFJLFlBQUFDLE1BQUFkLEdBSVQsa0NBQStCO0FBQUEsWUFBQWUsS0FBQWYsR0FDM0MsK0JBQTRCO0FBQUEsR0FyRHZDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFRHRERiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjE3MDY3LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvbmF0aXZlaW50Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW05hdGl2ZWludF06IHByb2Nlc3Nvci1uYXRpdmUgaW50ZWdlcnMgKilcblxuZXh0ZXJuYWwgbmVnOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X25lZ1wiXG5leHRlcm5hbCBhZGQ6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2FkZFwiXG5leHRlcm5hbCBzdWI6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X3N1YlwiXG5leHRlcm5hbCBtdWw6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X211bFwiXG5leHRlcm5hbCBkaXY6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2RpdlwiXG5leHRlcm5hbCByZW06IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X21vZFwiXG5leHRlcm5hbCBsb2dhbmQ6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2FuZFwiXG5leHRlcm5hbCBsb2dvcjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfb3JcIlxuZXh0ZXJuYWwgbG9neG9yOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF94b3JcIlxuZXh0ZXJuYWwgc2hpZnRfbGVmdDogbmF0aXZlaW50IC0+IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbHNsXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0OiBuYXRpdmVpbnQgLT4gaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9hc3JcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbDogbmF0aXZlaW50IC0+IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbHNyXCJcbmV4dGVybmFsIG9mX2ludDogaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9vZl9pbnRcIlxuZXh0ZXJuYWwgdG9faW50OiBuYXRpdmVpbnQgLT4gaW50ID0gXCIlbmF0aXZlaW50X3RvX2ludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IG5hdGl2ZWludFxuICA9IFwiY2FtbF9uYXRpdmVpbnRfb2ZfZmxvYXRcIiBcImNhbWxfbmF0aXZlaW50X29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBuYXRpdmVpbnQgLT4gZmxvYXRcbiAgPSBcImNhbWxfbmF0aXZlaW50X3RvX2Zsb2F0XCIgXCJjYW1sX25hdGl2ZWludF90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG9mX2ludDMyOiBpbnQzMiAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfb2ZfaW50MzJcIlxuZXh0ZXJuYWwgdG9faW50MzI6IG5hdGl2ZWludCAtPiBpbnQzMiA9IFwiJW5hdGl2ZWludF90b19pbnQzMlwiXG5cbmxldCB6ZXJvID0gMG5cbmxldCBvbmUgPSAxblxubGV0IG1pbnVzX29uZSA9IC0xblxubGV0IHN1Y2MgbiA9IGFkZCBuIDFuXG5sZXQgcHJlZCBuID0gc3ViIG4gMW5cbmxldCBhYnMgbiA9IGlmIG4gPj0gMG4gdGhlbiBuIGVsc2UgbmVnIG5cbmxldCBzaXplID0gU3lzLndvcmRfc2l6ZVxubGV0IG1pbl9pbnQgPSBzaGlmdF9sZWZ0IDFuIChzaXplIC0gMSlcbmxldCBtYXhfaW50ID0gc3ViIG1pbl9pbnQgMW5cbmxldCBsb2dub3QgbiA9IGxvZ3hvciBuICgtMW4pXG5cbmxldCB1bnNpZ25lZF90b19pbnQgPVxuICBsZXQgbWF4X2ludCA9IG9mX2ludCBTdGRsaWIubWF4X2ludCBpblxuICBmdW4gbiAtPlxuICAgIGlmIG4gPj0gMG4gJiYgbiA8PSBtYXhfaW50IHRoZW5cbiAgICAgIFNvbWUgKHRvX2ludCBuKVxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuZXh0ZXJuYWwgZm9ybWF0IDogc3RyaW5nIC0+IG5hdGl2ZWludCAtPiBzdHJpbmcgPSBcImNhbWxfbmF0aXZlaW50X2Zvcm1hdFwiXG5sZXQgdG9fc3RyaW5nIG4gPSBmb3JtYXQgXCIlZFwiIG5cblxuZXh0ZXJuYWwgb2Zfc3RyaW5nOiBzdHJpbmcgLT4gbmF0aXZlaW50ID0gXCJjYW1sX25hdGl2ZWludF9vZl9zdHJpbmdcIlxuXG5sZXQgb2Zfc3RyaW5nX29wdCBzID1cbiAgdHJ5IFNvbWUgKG9mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbnR5cGUgdCA9IG5hdGl2ZWludFxuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5sZXQgZXF1YWwgKHg6IHQpICh5OiB0KSA9IGNvbXBhcmUgeCB5ID0gMFxuXG5sZXQgdW5zaWduZWRfY29tcGFyZSBuIG0gPVxuICBjb21wYXJlIChzdWIgbiBtaW5faW50KSAoc3ViIG0gbWluX2ludClcblxubGV0IHVuc2lnbmVkX2x0IG4gbSA9XG4gIHN1YiBuIG1pbl9pbnQgPCBzdWIgbSBtaW5faW50XG5cbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4oKiBVbnNpZ25lZCBkaXZpc2lvbiBmcm9tIHNpZ25lZCBkaXZpc2lvbiBvZiB0aGUgc2FtZSBiaXRuZXNzLlxuICAgU2VlIFdhcnJlbiBKci4sIEhlbnJ5IFMuICgyMDEzKS4gSGFja2VyJ3MgRGVsaWdodCAoMiBlZC4pLCBTZWMgOS0zLlxuKilcbmxldCB1bnNpZ25lZF9kaXYgbiBkID1cbiAgaWYgZCA8IHplcm8gdGhlblxuICAgIGlmIHVuc2lnbmVkX2x0IG4gZCB0aGVuIHplcm8gZWxzZSBvbmVcbiAgZWxzZVxuICAgIGxldCBxID0gc2hpZnRfbGVmdCAoZGl2IChzaGlmdF9yaWdodF9sb2dpY2FsIG4gMSkgZCkgMSBpblxuICAgIGxldCByID0gc3ViIG4gKG11bCBxIGQpIGluXG4gICAgaWYgdW5zaWduZWRfbHQgciBkIHRoZW4gcSBlbHNlIHN1Y2MgcVxuXG5sZXQgdW5zaWduZWRfcmVtIG4gZCA9XG4gIHN1YiBuIChtdWwgKHVuc2lnbmVkX2RpdiBuIGQpIGQpXG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoX3BhcmFtIDpcbiAgaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gaW50ID0gXCJjYW1sX2hhc2hcIiBbQEBub2FsbG9jXVxubGV0IHNlZWRlZF9oYXNoIHNlZWQgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBzZWVkIHhcbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgMCB4XG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfZ3JlYXRlcmVxdWFsIiwiY2FtbF9oYXNoIiwiY2FtbF9pbnRfY29tcGFyZSIsImNhbWxfbGVzc2VxdWFsIiwiY2FtbF9sZXNzdGhhbiIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfbXVsIiwiY2FtbF93cmFwX2V4Y2VwdGlvbiIsImdsb2JhbF9kYXRhIiwiU3RkbGliIiwiU3RkbGliX1N5cyIsInN1Y2MiLCJuIiwicHJlZCIsImFicyIsInNpemUiLCJtaW5faW50IiwibWF4X2ludCIsImxvZ25vdCIsInVuc2lnbmVkX3RvX2ludCIsInRvX3N0cmluZyIsIm9mX3N0cmluZ19vcHQiLCJzIiwiZXhuIiwiZXF1YWwiLCJ4IiwieSIsInVuc2lnbmVkX2NvbXBhcmUiLCJtIiwidW5zaWduZWRfbHQiLCJtaW4iLCJtYXgiLCJ6ZXJvIiwib25lIiwidW5zaWduZWRfZGl2IiwiZCIsInEiLCJyIiwidW5zaWduZWRfcmVtIiwic2VlZGVkX2hhc2giLCJzZWVkIiwiaGFzaCJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLFlBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLElBQUFDLFdBQUE7QUFBQSxJQUFBQyxzQkFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLFlBQUFDLEtBQUFDLEdDMkNxQjtBQUFBLFlBQUFDLEtBQUFELEdBQ0E7QUFBQSxZQUFBRSxJQUFBRixHQUNOLDRDQUF5QjtBQUFBO0FBQUEsSUFBQUcsT0Q3Q3hDO0FBQUEsSUFBQUMsVUMrQ2M7QUFBQSxJQUFBQyxVQUNBO0FBQUEsWUFBQUMsT0FBQU4sR0FDZTtBQUFBLE9BQUFLLFlBR2I7QUFBQSxZQUFBRSxnQkFBQVA7QUFBQUEsSUFFVCw4QkFBVyw4QkFDWjtBQUFBLElBRUE7QUFBQSxHQUFJO0FBQUEsWUFBQVEsVUFBQVIsR0FHUSx1Q0FBYTtBQUFBLFlBQUFTLGNBQUFDO0FBQUFBLElBSzdCLFlBQVM7QUFBQSxVQUFBQztBQUFBQSxTQUFBQSxNRGpFWDtBQUFBLDhCQ2tFb0I7QUFBQSxLRGxFcEI7QUFBQTtBQUFBLEdDa0V3QjtBQUFBLFlBQUFDLE1BQUFDLEdBQUFDLEdBSUksMkNBQ1MsQ0FBSTtBQUFBLFlBQUFDLGlCQUFBZixHQUFBZ0I7QUFBQUEsUUFBQUYsSUFHZixpQkFBQUQsSUFBaEI7QUFBQSxJQUprQiw2QkFJYTtBQUFBO0FBQUEsWUFBQUksWUFBQWpCLEdBQUFnQjtBQUFBQSxJQUd2QyxzREFBNkI7QUFBQTtBQUFBLFlBQUFFLElBQUFMLEdBQUFDLEdBRVYsbUNBQW9CO0FBQUEsWUFBQUssSUFBQU4sR0FBQUMsR0FDcEIsc0NBQW9CO0FBQUEsT0FBQU0sT0RoRnpDLEdBQUFDLE1BQUE7QUFBQSxZQUFBQyxhQUFBdEIsR0FBQXVCO0FBQUFBLElDc0ZLLHdCQUNFLHFDQUlrQztBQUFBLFFBQUFDLElBRmxCLHVDQUFBQyxJQUNMO0FBQUEsSUFDWCx3Q0FBa0M7QUFBQTtBQUFBLFlBQUFDLGFBQUExQixHQUFBdUI7QUFBQUEsSUFHNUIsV0FBTCxTQUFLLDBCQUFxQjtBQUFBO0FBQUEsWUFBQUksWUFBQUMsTUFBQWYsR0FJVCxrQ0FBK0I7QUFBQSxZQUFBZ0IsS0FBQWhCLEdBQzNDLCtCQUE0QjtBQUFBLEdBOUN2QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFRHJERiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjE3MTU4LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvbWFwLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgdHlwZSBPcmRlcmVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTID1cbiAgc2lnXG4gICAgdHlwZSBrZXlcbiAgICB0eXBlICErJ2EgdFxuICAgIHZhbCBlbXB0eTogJ2EgdFxuICAgIHZhbCBhZGQ6IGtleSAtPiAnYSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgYWRkX3RvX2xpc3Q6IGtleSAtPiAnYSAtPiAnYSBsaXN0IHQgLT4gJ2EgbGlzdCB0XG4gICAgdmFsIHVwZGF0ZToga2V5IC0+ICgnYSBvcHRpb24gLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgc2luZ2xldG9uOiBrZXkgLT4gJ2EgLT4gJ2EgdFxuICAgIHZhbCByZW1vdmU6IGtleSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgbWVyZ2U6XG4gICAgICAoa2V5IC0+ICdhIG9wdGlvbiAtPiAnYiBvcHRpb24gLT4gJ2Mgb3B0aW9uKSAtPlxuICAgICAgJ2EgdCAtPiAnYiB0IC0+ICdjIHRcbiAgICB2YWwgdW5pb246IChrZXkgLT4gJ2EgLT4gJ2EgLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBjYXJkaW5hbDogJ2EgdCAtPiBpbnRcbiAgICB2YWwgYmluZGluZ3M6ICdhIHQgLT4gKGtleSAqICdhKSBsaXN0XG4gICAgdmFsIG1pbl9iaW5kaW5nOiAnYSB0IC0+IChrZXkgKiAnYSlcbiAgICB2YWwgbWluX2JpbmRpbmdfb3B0OiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIG1heF9iaW5kaW5nOiAnYSB0IC0+IChrZXkgKiAnYSlcbiAgICB2YWwgbWF4X2JpbmRpbmdfb3B0OiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIGNob29zZTogJ2EgdCAtPiAoa2V5ICogJ2EpXG4gICAgdmFsIGNob29zZV9vcHQ6ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgZmluZDoga2V5IC0+ICdhIHQgLT4gJ2FcbiAgICB2YWwgZmluZF9vcHQ6IGtleSAtPiAnYSB0IC0+ICdhIG9wdGlvblxuICAgIHZhbCBmaW5kX2ZpcnN0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4ga2V5ICogJ2FcbiAgICB2YWwgZmluZF9maXJzdF9vcHQ6IChrZXkgLT4gYm9vbCkgLT4gJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBmaW5kX2xhc3Q6IChrZXkgLT4gYm9vbCkgLT4gJ2EgdCAtPiBrZXkgKiAnYVxuICAgIHZhbCBmaW5kX2xhc3Rfb3B0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgaXRlcjogKGtleSAtPiAnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZm9sZDogKGtleSAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuICAgIHZhbCBtYXA6ICgnYSAtPiAnYikgLT4gJ2EgdCAtPiAnYiB0XG4gICAgdmFsIG1hcGk6IChrZXkgLT4gJ2EgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgdFxuICAgIHZhbCBmaWx0ZXI6IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGZpbHRlcl9tYXA6IChrZXkgLT4gJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYSB0IC0+ICdiIHRcbiAgICB2YWwgcGFydGl0aW9uOiAoa2V5IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAqICdhIHRcbiAgICB2YWwgc3BsaXQ6IGtleSAtPiAnYSB0IC0+ICdhIHQgKiAnYSBvcHRpb24gKiAnYSB0XG4gICAgdmFsIGlzX2VtcHR5OiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgbWVtOiBrZXkgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIGVxdWFsOiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgY29tcGFyZTogKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludFxuICAgIHZhbCBmb3JfYWxsOiAoa2V5IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBleGlzdHM6IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIHRvX2xpc3QgOiAnYSB0IC0+IChrZXkgKiAnYSkgbGlzdFxuICAgIHZhbCBvZl9saXN0IDogKGtleSAqICdhKSBsaXN0IC0+ICdhIHRcbiAgICB2YWwgdG9fc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3Jldl9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX2Zyb20gOiBrZXkgLT4gJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgZW5kXG5cbm1vZHVsZSBNYWtlKE9yZDogT3JkZXJlZFR5cGUpID0gc3RydWN0XG5cbiAgICB0eXBlIGtleSA9IE9yZC50XG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgICBFbXB0eVxuICAgICAgfCBOb2RlIG9mIHtsOidhIHQ7IHY6a2V5OyBkOidhOyByOidhIHQ7IGg6aW50fVxuXG4gICAgbGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IDBcbiAgICAgIHwgTm9kZSB7aH0gLT4gaFxuXG4gICAgbGV0IGNyZWF0ZSBsIHggZCByID1cbiAgICAgIGxldCBobCA9IGhlaWdodCBsIGFuZCBociA9IGhlaWdodCByIGluXG4gICAgICBOb2Rle2w7IHY9eDsgZDsgcjsgaD0oaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpfVxuXG4gICAgbGV0IHNpbmdsZXRvbiB4IGQgPSBOb2Rle2w9RW1wdHk7IHY9eDsgZDsgcj1FbXB0eTsgaD0xfVxuXG4gICAgbGV0IGJhbCBsIHggZCByID1cbiAgICAgIGxldCBobCA9IG1hdGNoIGwgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgbGV0IGhyID0gbWF0Y2ggciB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBpZiBobCA+IGhyICsgMiB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgIHwgTm9kZXtsPWxsOyB2PWx2OyBkPWxkOyByPWxyfSAtPlxuICAgICAgICAgICAgaWYgaGVpZ2h0IGxsID49IGhlaWdodCBsciB0aGVuXG4gICAgICAgICAgICAgIGNyZWF0ZSBsbCBsdiBsZCAoY3JlYXRlIGxyIHggZCByKVxuICAgICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBtYXRjaCBsciB3aXRoXG4gICAgICAgICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgICAgICAgfCBOb2Rle2w9bHJsOyB2PWxydjsgZD1scmQ7IHI9bHJyfS0+XG4gICAgICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsbCBsdiBsZCBscmwpIGxydiBscmQgKGNyZWF0ZSBscnIgeCBkIHIpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlIGlmIGhyID4gaGwgKyAyIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgfCBOb2Rle2w9cmw7IHY9cnY7IGQ9cmQ7IHI9cnJ9IC0+XG4gICAgICAgICAgICBpZiBoZWlnaHQgcnIgPj0gaGVpZ2h0IHJsIHRoZW5cbiAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB4IGQgcmwpIHJ2IHJkIHJyXG4gICAgICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIG1hdGNoIHJsIHdpdGhcbiAgICAgICAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICAgICAgICB8IE5vZGV7bD1ybGw7IHY9cmx2OyBkPXJsZDsgcj1ybHJ9IC0+XG4gICAgICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHggZCBybGwpIHJsdiBybGQgKGNyZWF0ZSBybHIgcnYgcmQgcnIpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIE5vZGV7bDsgdj14OyBkOyByOyBoPShpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSl9XG5cbiAgICBsZXQgZW1wdHkgPSBFbXB0eVxuXG4gICAgbGV0IGlzX2VtcHR5ID0gZnVuY3Rpb24gRW1wdHkgLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcblxuICAgIGxldCByZWMgYWRkIHggZGF0YSA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9kZXtsPUVtcHR5OyB2PXg7IGQ9ZGF0YTsgcj1FbXB0eTsgaD0xfVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBofSBhcyBtIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgICBpZiBkID09IGRhdGEgdGhlbiBtIGVsc2UgTm9kZXtsOyB2PXg7IGQ9ZGF0YTsgcjsgaH1cbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBsbCA9IGFkZCB4IGRhdGEgbCBpblxuICAgICAgICAgICAgaWYgbCA9PSBsbCB0aGVuIG0gZWxzZSBiYWwgbGwgdiBkIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgcnIgPSBhZGQgeCBkYXRhIHIgaW5cbiAgICAgICAgICAgIGlmIHIgPT0gcnIgdGhlbiBtIGVsc2UgYmFsIGwgdiBkIHJyXG5cbiAgICBsZXQgcmVjIGZpbmQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIGRcbiAgICAgICAgICBlbHNlIGZpbmQgeCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9hdXggdjAgZDAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdiBkIGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYwIGQwIGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9vcHRfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIFNvbWUgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYgZCBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdjAgZDAgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3Rfb3B0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYgZCBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdCBmIHJcblxuICAgIGxldCByZWMgZmluZF9sYXN0X2F1eCB2MCBkMCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAodjAsIGQwKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYgZCBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYwIGQwIGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3QgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0X29wdF9hdXggdjAgZDAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgU29tZSAodjAsIGQwKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2IGQgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdjAgZDAgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2IGQgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X29wdCBmIGxcblxuICAgIGxldCByZWMgZmluZF9vcHQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBTb21lIGRcbiAgICAgICAgICBlbHNlIGZpbmRfb3B0IHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIG1lbSB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBOb2RlIHtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgYyA9IDAgfHwgbWVtIHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIG1pbl9iaW5kaW5nID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge2w9RW1wdHk7IHY7IGR9IC0+ICh2LCBkKVxuICAgICAgfCBOb2RlIHtsfSAtPiBtaW5fYmluZGluZyBsXG5cbiAgICBsZXQgcmVjIG1pbl9iaW5kaW5nX29wdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZSB7bD1FbXB0eTsgdjsgZH0gLT4gU29tZSAodiwgZClcbiAgICAgIHwgTm9kZSB7bH0tPiBtaW5fYmluZGluZ19vcHQgbFxuXG4gICAgbGV0IHJlYyBtYXhfYmluZGluZyA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHt2OyBkOyByPUVtcHR5fSAtPiAodiwgZClcbiAgICAgIHwgTm9kZSB7cn0gLT4gbWF4X2JpbmRpbmcgclxuXG4gICAgbGV0IHJlYyBtYXhfYmluZGluZ19vcHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGUge3Y7IGQ7IHI9RW1wdHl9IC0+IFNvbWUgKHYsIGQpXG4gICAgICB8IE5vZGUge3J9IC0+IG1heF9iaW5kaW5nX29wdCByXG5cbiAgICBsZXQgcmVjIHJlbW92ZV9taW5fYmluZGluZyA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLnJlbW92ZV9taW5fZWx0XCJcbiAgICAgIHwgTm9kZSB7bD1FbXB0eTsgcn0gLT4gclxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBiYWwgKHJlbW92ZV9taW5fYmluZGluZyBsKSB2IGQgclxuXG4gICAgbGV0IG1lcmdlIHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT5cbiAgICAgICAgICBsZXQgKHgsIGQpID0gbWluX2JpbmRpbmcgdDIgaW5cbiAgICAgICAgICBiYWwgdDEgeCBkIChyZW1vdmVfbWluX2JpbmRpbmcgdDIpXG5cbiAgICBsZXQgcmVjIHJlbW92ZSB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBFbXB0eVxuICAgICAgfCAoTm9kZSB7bDsgdjsgZDsgcn0gYXMgbSkgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gbWVyZ2UgbCByXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSByZW1vdmUgeCBsIGluIGlmIGwgPT0gbGwgdGhlbiBtIGVsc2UgYmFsIGxsIHYgZCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gcmVtb3ZlIHggciBpbiBpZiByID09IHJyIHRoZW4gbSBlbHNlIGJhbCBsIHYgZCByclxuXG4gICAgbGV0IHJlYyB1cGRhdGUgeCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBmIE5vbmUgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBFbXB0eVxuICAgICAgICAgIHwgU29tZSBkYXRhIC0+IE5vZGV7bD1FbXB0eTsgdj14OyBkPWRhdGE7IHI9RW1wdHk7IGg9MX1cbiAgICAgICAgICBlbmRcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gYXMgbSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBiZWdpblxuICAgICAgICAgICAgbWF0Y2ggZiAoU29tZSBkKSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gbWVyZ2UgbCByXG4gICAgICAgICAgICB8IFNvbWUgZGF0YSAtPlxuICAgICAgICAgICAgICAgIGlmIGQgPT0gZGF0YSB0aGVuIG0gZWxzZSBOb2Rle2w7IHY9eDsgZD1kYXRhOyByOyBofVxuICAgICAgICAgIGVuZCBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBsbCA9IHVwZGF0ZSB4IGYgbCBpblxuICAgICAgICAgICAgaWYgbCA9PSBsbCB0aGVuIG0gZWxzZSBiYWwgbGwgdiBkIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgcnIgPSB1cGRhdGUgeCBmIHIgaW5cbiAgICAgICAgICAgIGlmIHIgPT0gcnIgdGhlbiBtIGVsc2UgYmFsIGwgdiBkIHJyXG5cbiAgICBsZXQgYWRkX3RvX2xpc3QgeCBkYXRhIG0gPVxuICAgICAgbGV0IGFkZCA9IGZ1bmN0aW9uIE5vbmUgLT4gU29tZSBbZGF0YV0gfCBTb21lIGwgLT4gU29tZSAoZGF0YSA6OiBsKSBpblxuICAgICAgdXBkYXRlIHggYWRkIG1cblxuICAgIGxldCByZWMgaXRlciBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gKClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpdGVyIGYgbDsgZiB2IGQ7IGl0ZXIgZiByXG5cbiAgICBsZXQgcmVjIG1hcCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBFbXB0eVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBofSAtPlxuICAgICAgICAgIGxldCBsJyA9IG1hcCBmIGwgaW5cbiAgICAgICAgICBsZXQgZCcgPSBmIGQgaW5cbiAgICAgICAgICBsZXQgcicgPSBtYXAgZiByIGluXG4gICAgICAgICAgTm9kZXtsPWwnOyB2OyBkPWQnOyByPXInOyBofVxuXG4gICAgbGV0IHJlYyBtYXBpIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIEVtcHR5XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IGh9IC0+XG4gICAgICAgICAgbGV0IGwnID0gbWFwaSBmIGwgaW5cbiAgICAgICAgICBsZXQgZCcgPSBmIHYgZCBpblxuICAgICAgICAgIGxldCByJyA9IG1hcGkgZiByIGluXG4gICAgICAgICAgTm9kZXtsPWwnOyB2OyBkPWQnOyByPXInOyBofVxuXG4gICAgbGV0IHJlYyBmb2xkIGYgbSBhY2N1ID1cbiAgICAgIG1hdGNoIG0gd2l0aFxuICAgICAgICBFbXB0eSAtPiBhY2N1XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgZm9sZCBmIHIgKGYgdiBkIChmb2xkIGYgbCBhY2N1KSlcblxuICAgIGxldCByZWMgZm9yX2FsbCBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gdHJ1ZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBwIHYgZCAmJiBmb3JfYWxsIHAgbCAmJiBmb3JfYWxsIHAgclxuXG4gICAgbGV0IHJlYyBleGlzdHMgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGZhbHNlXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IHAgdiBkIHx8IGV4aXN0cyBwIGwgfHwgZXhpc3RzIHAgclxuXG4gICAgKCogQmV3YXJlOiB0aG9zZSB0d28gZnVuY3Rpb25zIGFzc3VtZSB0aGF0IHRoZSBhZGRlZCBrIGlzICpzdHJpY3RseSpcbiAgICAgICBzbWFsbGVyIChvciBiaWdnZXIpIHRoYW4gYWxsIHRoZSBwcmVzZW50IGtleXMgaW4gdGhlIHRyZWU7IGl0XG4gICAgICAgZG9lcyBub3QgdGVzdCBmb3IgZXF1YWxpdHkgd2l0aCB0aGUgY3VycmVudCBtaW4gKG9yIG1heCkga2V5LlxuXG4gICAgICAgSW5kZWVkLCB0aGV5IGFyZSBvbmx5IHVzZWQgZHVyaW5nIHRoZSBcImpvaW5cIiBvcGVyYXRpb24gd2hpY2hcbiAgICAgICByZXNwZWN0cyB0aGlzIHByZWNvbmRpdGlvbi5cbiAgICAqKVxuXG4gICAgbGV0IHJlYyBhZGRfbWluX2JpbmRpbmcgayB4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gc2luZ2xldG9uIGsgeFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICBiYWwgKGFkZF9taW5fYmluZGluZyBrIHggbCkgdiBkIHJcblxuICAgIGxldCByZWMgYWRkX21heF9iaW5kaW5nIGsgeCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IHNpbmdsZXRvbiBrIHhcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgYmFsIGwgdiBkIChhZGRfbWF4X2JpbmRpbmcgayB4IHIpXG5cbiAgICAoKiBTYW1lIGFzIGNyZWF0ZSBhbmQgYmFsLCBidXQgbm8gYXNzdW1wdGlvbnMgYXJlIG1hZGUgb24gdGhlXG4gICAgICAgcmVsYXRpdmUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuXG4gICAgbGV0IHJlYyBqb2luIGwgdiBkIHIgPVxuICAgICAgbWF0Y2ggKGwsIHIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSAtPiBhZGRfbWluX2JpbmRpbmcgdiBkIHJcbiAgICAgIHwgKF8sIEVtcHR5KSAtPiBhZGRfbWF4X2JpbmRpbmcgdiBkIGxcbiAgICAgIHwgKE5vZGV7bD1sbDsgdj1sdjsgZD1sZDsgcj1scjsgaD1saH0sXG4gICAgICAgICBOb2Rle2w9cmw7IHY9cnY7IGQ9cmQ7IHI9cnI7IGg9cmh9KSAtPlxuICAgICAgICAgIGlmIGxoID4gcmggKyAyIHRoZW4gYmFsIGxsIGx2IGxkIChqb2luIGxyIHYgZCByKSBlbHNlXG4gICAgICAgICAgaWYgcmggPiBsaCArIDIgdGhlbiBiYWwgKGpvaW4gbCB2IGQgcmwpIHJ2IHJkIHJyIGVsc2VcbiAgICAgICAgICBjcmVhdGUgbCB2IGQgclxuXG4gICAgKCogTWVyZ2UgdHdvIHRyZWVzIGwgYW5kIHIgaW50byBvbmUuXG4gICAgICAgQWxsIGVsZW1lbnRzIG9mIGwgbXVzdCBwcmVjZWRlIHRoZSBlbGVtZW50cyBvZiByLlxuICAgICAgIE5vIGFzc3VtcHRpb24gb24gdGhlIGhlaWdodHMgb2YgbCBhbmQgci4gKilcblxuICAgIGxldCBjb25jYXQgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPlxuICAgICAgICAgIGxldCAoeCwgZCkgPSBtaW5fYmluZGluZyB0MiBpblxuICAgICAgICAgIGpvaW4gdDEgeCBkIChyZW1vdmVfbWluX2JpbmRpbmcgdDIpXG5cbiAgICBsZXQgY29uY2F0X29yX2pvaW4gdDEgdiBkIHQyID1cbiAgICAgIG1hdGNoIGQgd2l0aFxuICAgICAgfCBTb21lIGQgLT4gam9pbiB0MSB2IGQgdDJcbiAgICAgIHwgTm9uZSAtPiBjb25jYXQgdDEgdDJcblxuICAgIGxldCByZWMgc3BsaXQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgKEVtcHR5LCBOb25lLCBFbXB0eSlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gKGwsIFNvbWUgZCwgcilcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCAobGwsIHByZXMsIHJsKSA9IHNwbGl0IHggbCBpbiAobGwsIHByZXMsIGpvaW4gcmwgdiBkIHIpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IChsciwgcHJlcywgcnIpID0gc3BsaXQgeCByIGluIChqb2luIGwgdiBkIGxyLCBwcmVzLCBycilcblxuICAgIGxldCByZWMgbWVyZ2UgZiBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgRW1wdHkpIC0+IEVtcHR5XG4gICAgICB8IChOb2RlIHtsPWwxOyB2PXYxOyBkPWQxOyByPXIxOyBoPWgxfSwgXykgd2hlbiBoMSA+PSBoZWlnaHQgczIgLT5cbiAgICAgICAgICBsZXQgKGwyLCBkMiwgcjIpID0gc3BsaXQgdjEgczIgaW5cbiAgICAgICAgICBjb25jYXRfb3Jfam9pbiAobWVyZ2UgZiBsMSBsMikgdjEgKGYgdjEgKFNvbWUgZDEpIGQyKSAobWVyZ2UgZiByMSByMilcbiAgICAgIHwgKF8sIE5vZGUge2w9bDI7IHY9djI7IGQ9ZDI7IHI9cjJ9KSAtPlxuICAgICAgICAgIGxldCAobDEsIGQxLCByMSkgPSBzcGxpdCB2MiBzMSBpblxuICAgICAgICAgIGNvbmNhdF9vcl9qb2luIChtZXJnZSBmIGwxIGwyKSB2MiAoZiB2MiBkMSAoU29tZSBkMikpIChtZXJnZSBmIHIxIHIyKVxuICAgICAgfCBfIC0+XG4gICAgICAgICAgYXNzZXJ0IGZhbHNlXG5cbiAgICBsZXQgcmVjIHVuaW9uIGYgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgfCAoRW1wdHksIHMpIHwgKHMsIEVtcHR5KSAtPiBzXG4gICAgICB8IChOb2RlIHtsPWwxOyB2PXYxOyBkPWQxOyByPXIxOyBoPWgxfSxcbiAgICAgICAgIE5vZGUge2w9bDI7IHY9djI7IGQ9ZDI7IHI9cjI7IGg9aDJ9KSAtPlxuICAgICAgICAgIGlmIGgxID49IGgyIHRoZW5cbiAgICAgICAgICAgIGxldCAobDIsIGQyLCByMikgPSBzcGxpdCB2MSBzMiBpblxuICAgICAgICAgICAgbGV0IGwgPSB1bmlvbiBmIGwxIGwyIGFuZCByID0gdW5pb24gZiByMSByMiBpblxuICAgICAgICAgICAgbWF0Y2ggZDIgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGpvaW4gbCB2MSBkMSByXG4gICAgICAgICAgICB8IFNvbWUgZDIgLT4gY29uY2F0X29yX2pvaW4gbCB2MSAoZiB2MSBkMSBkMikgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCAobDEsIGQxLCByMSkgPSBzcGxpdCB2MiBzMSBpblxuICAgICAgICAgICAgbGV0IGwgPSB1bmlvbiBmIGwxIGwyIGFuZCByID0gdW5pb24gZiByMSByMiBpblxuICAgICAgICAgICAgbWF0Y2ggZDEgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGpvaW4gbCB2MiBkMiByXG4gICAgICAgICAgICB8IFNvbWUgZDEgLT4gY29uY2F0X29yX2pvaW4gbCB2MiAoZiB2MiBkMSBkMikgclxuXG4gICAgbGV0IHJlYyBmaWx0ZXIgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IGFzIG0gLT5cbiAgICAgICAgICAoKiBjYWxsIFtwXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCBsJyA9IGZpbHRlciBwIGwgaW5cbiAgICAgICAgICBsZXQgcHZkID0gcCB2IGQgaW5cbiAgICAgICAgICBsZXQgcicgPSBmaWx0ZXIgcCByIGluXG4gICAgICAgICAgaWYgcHZkIHRoZW4gaWYgbD09bCcgJiYgcj09cicgdGhlbiBtIGVsc2Ugam9pbiBsJyB2IGQgcidcbiAgICAgICAgICBlbHNlIGNvbmNhdCBsJyByJ1xuXG4gICAgbGV0IHJlYyBmaWx0ZXJfbWFwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgICgqIGNhbGwgW2ZdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IGwnID0gZmlsdGVyX21hcCBmIGwgaW5cbiAgICAgICAgICBsZXQgZnZkID0gZiB2IGQgaW5cbiAgICAgICAgICBsZXQgcicgPSBmaWx0ZXJfbWFwIGYgciBpblxuICAgICAgICAgIGJlZ2luIG1hdGNoIGZ2ZCB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgZCcgLT4gam9pbiBsJyB2IGQnIHInXG4gICAgICAgICAgICB8IE5vbmUgLT4gY29uY2F0IGwnIHInXG4gICAgICAgICAgZW5kXG5cbiAgICBsZXQgcmVjIHBhcnRpdGlvbiBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gKEVtcHR5LCBFbXB0eSlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICAoKiBjYWxsIFtwXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCAobHQsIGxmKSA9IHBhcnRpdGlvbiBwIGwgaW5cbiAgICAgICAgICBsZXQgcHZkID0gcCB2IGQgaW5cbiAgICAgICAgICBsZXQgKHJ0LCByZikgPSBwYXJ0aXRpb24gcCByIGluXG4gICAgICAgICAgaWYgcHZkXG4gICAgICAgICAgdGhlbiAoam9pbiBsdCB2IGQgcnQsIGNvbmNhdCBsZiByZilcbiAgICAgICAgICBlbHNlIChjb25jYXQgbHQgcnQsIGpvaW4gbGYgdiBkIHJmKVxuXG4gICAgdHlwZSAnYSBlbnVtZXJhdGlvbiA9IEVuZCB8IE1vcmUgb2Yga2V5ICogJ2EgKiAnYSB0ICogJ2EgZW51bWVyYXRpb25cblxuICAgIGxldCByZWMgY29uc19lbnVtIG0gZSA9XG4gICAgICBtYXRjaCBtIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBjb25zX2VudW0gbCAoTW9yZSh2LCBkLCByLCBlKSlcblxuICAgIGxldCBjb21wYXJlIGNtcCBtMSBtMiA9XG4gICAgICBsZXQgcmVjIGNvbXBhcmVfYXV4IGUxIGUyID1cbiAgICAgICAgICBtYXRjaCAoZTEsIGUyKSB3aXRoXG4gICAgICAgICAgKEVuZCwgRW5kKSAtPiAwXG4gICAgICAgIHwgKEVuZCwgXykgIC0+IC0xXG4gICAgICAgIHwgKF8sIEVuZCkgLT4gMVxuICAgICAgICB8IChNb3JlKHYxLCBkMSwgcjEsIGUxKSwgTW9yZSh2MiwgZDIsIHIyLCBlMikpIC0+XG4gICAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHYxIHYyIGluXG4gICAgICAgICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgICAgICAgIGxldCBjID0gY21wIGQxIGQyIGluXG4gICAgICAgICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgICAgICAgIGNvbXBhcmVfYXV4IChjb25zX2VudW0gcjEgZTEpIChjb25zX2VudW0gcjIgZTIpXG4gICAgICBpbiBjb21wYXJlX2F1eCAoY29uc19lbnVtIG0xIEVuZCkgKGNvbnNfZW51bSBtMiBFbmQpXG5cbiAgICBsZXQgZXF1YWwgY21wIG0xIG0yID1cbiAgICAgIGxldCByZWMgZXF1YWxfYXV4IGUxIGUyID1cbiAgICAgICAgICBtYXRjaCAoZTEsIGUyKSB3aXRoXG4gICAgICAgICAgKEVuZCwgRW5kKSAtPiB0cnVlXG4gICAgICAgIHwgKEVuZCwgXykgIC0+IGZhbHNlXG4gICAgICAgIHwgKF8sIEVuZCkgLT4gZmFsc2VcbiAgICAgICAgfCAoTW9yZSh2MSwgZDEsIHIxLCBlMSksIE1vcmUodjIsIGQyLCByMiwgZTIpKSAtPlxuICAgICAgICAgICAgT3JkLmNvbXBhcmUgdjEgdjIgPSAwICYmIGNtcCBkMSBkMiAmJlxuICAgICAgICAgICAgZXF1YWxfYXV4IChjb25zX2VudW0gcjEgZTEpIChjb25zX2VudW0gcjIgZTIpXG4gICAgICBpbiBlcXVhbF9hdXggKGNvbnNfZW51bSBtMSBFbmQpIChjb25zX2VudW0gbTIgRW5kKVxuXG4gICAgbGV0IHJlYyBjYXJkaW5hbCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IDBcbiAgICAgIHwgTm9kZSB7bDsgcn0gLT4gY2FyZGluYWwgbCArIDEgKyBjYXJkaW5hbCByXG5cbiAgICBsZXQgcmVjIGJpbmRpbmdzX2F1eCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBiaW5kaW5nc19hdXggKCh2LCBkKSA6OiBiaW5kaW5nc19hdXggYWNjdSByKSBsXG5cbiAgICBsZXQgYmluZGluZ3MgcyA9XG4gICAgICBiaW5kaW5nc19hdXggW10gc1xuXG4gICAgbGV0IGNob29zZSA9IG1pbl9iaW5kaW5nXG5cbiAgICBsZXQgY2hvb3NlX29wdCA9IG1pbl9iaW5kaW5nX29wdFxuXG4gICAgbGV0IHRvX2xpc3QgPSBiaW5kaW5nc1xuICAgIGxldCBvZl9saXN0IGJzID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBtIChrLCB2KSAtPiBhZGQgayB2IG0pIGVtcHR5IGJzXG5cbiAgICBsZXQgYWRkX3NlcSBpIG0gPVxuICAgICAgU2VxLmZvbGRfbGVmdCAoZnVuIG0gKGssdikgLT4gYWRkIGsgdiBtKSBtIGlcblxuICAgIGxldCBvZl9zZXEgaSA9IGFkZF9zZXEgaSBlbXB0eVxuXG4gICAgbGV0IHJlYyBzZXFfb2ZfZW51bV8gYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgICAgfCBFbmQgLT4gU2VxLk5pbFxuICAgICAgfCBNb3JlIChrLHYsdCxyZXN0KSAtPiBTZXEuQ29ucyAoKGssdiksIHNlcV9vZl9lbnVtXyAoY29uc19lbnVtIHQgcmVzdCkpXG5cbiAgICBsZXQgdG9fc2VxIG0gPVxuICAgICAgc2VxX29mX2VudW1fIChjb25zX2VudW0gbSBFbmQpXG5cbiAgICBsZXQgcmVjIHNub2NfZW51bSBzIGUgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGVcbiAgICAgIHwgTm9kZXtsOyB2OyBkOyByfSAtPiBzbm9jX2VudW0gciAoTW9yZSh2LCBkLCBsLCBlKSlcblxuICAgIGxldCByZWMgcmV2X3NlcV9vZl9lbnVtXyBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgICB8IEVuZCAtPiBTZXEuTmlsXG4gICAgICB8IE1vcmUgKGssdix0LHJlc3QpIC0+XG4gICAgICAgICAgU2VxLkNvbnMgKChrLHYpLCByZXZfc2VxX29mX2VudW1fIChzbm9jX2VudW0gdCByZXN0KSlcblxuICAgIGxldCB0b19yZXZfc2VxIGMgPVxuICAgICAgcmV2X3NlcV9vZl9lbnVtXyAoc25vY19lbnVtIGMgRW5kKVxuXG4gICAgbGV0IHRvX3NlcV9mcm9tIGxvdyBtID1cbiAgICAgIGxldCByZWMgYXV4IGxvdyBtIGMgPSBtYXRjaCBtIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBjXG4gICAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgX30gLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIE9yZC5jb21wYXJlIHYgbG93IHdpdGhcbiAgICAgICAgICAgICAgfCAwIC0+IE1vcmUgKHYsIGQsIHIsIGMpXG4gICAgICAgICAgICAgIHwgbiB3aGVuIG48MCAtPiBhdXggbG93IHIgY1xuICAgICAgICAgICAgICB8IF8gLT4gYXV4IGxvdyBsIChNb3JlICh2LCBkLCByLCBjKSlcbiAgICAgICAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIHNlcV9vZl9lbnVtXyAoYXV4IGxvdyBtIEVuZClcbmVuZFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWIiLCJBc3NlcnRfZmFpbHVyZSIsIlN0ZGxpYl9TZXEiLCJTdGRsaWJfTGlzdCIsIlN0ZGxpYl9NYXAiLCJPcmQiLCJoZWlnaHQiLCJwYXJhbSIsImgiLCJjcmVhdGUiLCJsIiwieCIsImQiLCJyIiwiaGwiLCJociIsInNpbmdsZXRvbiIsImJhbCIsImNzdF9NYXBfYmFsIiwibHIiLCJsZCIsImx2IiwibGwiLCJscnIiLCJscmQiLCJscnYiLCJscmwiLCJyciIsInJkIiwicnYiLCJybCIsInJsciIsInJsZCIsInJsdiIsInJsbCIsImlzX2VtcHR5IiwiYWRkIiwiZGF0YSIsIm0iLCJ2IiwiYyIsImZpbmQiLCJmaW5kX2ZpcnN0IiwiZDAiLCJ2MCIsImZpbmRfZmlyc3Rfb3B0IiwiZmluZF9sYXN0IiwiZmluZF9sYXN0X29wdCIsImZpbmRfb3B0IiwibWVtIiwibWluX2JpbmRpbmciLCJtaW5fYmluZGluZ19vcHQiLCJtYXhfYmluZGluZyIsIm1heF9iaW5kaW5nX29wdCIsInJlbW92ZV9taW5fYmluZGluZyIsInQxIiwidDIiLCJtYXRjaCIsInJlbW92ZSIsInVwZGF0ZSIsImFkZF90b19saXN0IiwiaXRlciIsIm1hcCIsIm1hcGkiLCJmb2xkIiwiYWNjdSIsImZvcl9hbGwiLCJwIiwiZXhpc3RzIiwiYWRkX21pbl9iaW5kaW5nIiwiayIsImFkZF9tYXhfYmluZGluZyIsImpvaW4iLCJyaCIsImxoIiwiY29uY2F0IiwiY29uY2F0X29yX2pvaW4iLCJzcGxpdCIsInByZXMiLCJtZXJnZSIsInMxIiwiczIiLCJoMSIsInIxIiwiZDEiLCJ2MSIsImwxIiwicjIiLCJkMiIsImwyIiwidjIiLCJ1bmlvbiIsImgyIiwicyIsImZpbHRlciIsInB2ZCIsImZpbHRlcl9tYXAiLCJmdmQiLCJwYXJ0aXRpb24iLCJsZiIsImx0IiwicmYiLCJydCIsImNvbnNfZW51bSIsImUiLCJjb21wYXJlIiwiY21wIiwibTEiLCJtMiIsImUyIiwiZTEiLCJlcXVhbCIsImNhcmRpbmFsIiwiYmluZGluZ3NfYXV4IiwiYmluZGluZ3MiLCJlbXB0eSIsIm9mX2xpc3QiLCJicyIsImFkZF9zZXEiLCJpIiwib2Zfc2VxIiwic2VxX29mX2VudW0iLCJyZXN0IiwidCIsInRvX3NlcSIsInNub2NfZW51bSIsInJldl9zZXFfb2ZfZW51bSIsInRvX3Jldl9zZXEiLCJ0b19zZXFfZnJvbSIsImxvdyIsIm4iXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFKLEdBQUFDLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDO0FBQUFBLE1BQUE7QUFBQSxnQkFBQUM7QUFBQUEsaUJBQUFDLE9BQUFDO0FBQUFBLFNDZ0ZpQixZQUNBO0FBQUEsYUFBQUMsSUFEQTtBQUFBLFNBRUc7QUFBQSxRQUFDO0FBQUEsaUJBQUFDLE9BQUFDLEdBQUFDLEdBQUFDLEdBQUFDO0FBQUFBO0FBQUFBLFVBQUFDLEtBR047QUFBQSxVQUFBQyxLQUFrQjtBQUFBLGNBQzNCO0FBQUE7QUFBQSxRQUEyRDtBQUFBLGlCQUFBQyxVQUFBTCxHQUFBQyxHQUV6QywwQkFBbUM7QUFBQSxpQkFBQUssSUFBQVAsR0FBQUMsR0FBQUMsR0FBQUM7QUFBQUEsU0FH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R0FBQWpDO0FBQUFBLFNBRXRCLFFBQ3JCO0FBQUE7QUFBQSxVQUFBbUgsT0FEcUI7QUFBQSxVQUFBQyxJQUFBO0FBQUEsVUFBQXBGLElBQUE7QUFBQSxVQUFBK0IsSUFBQTtBQUFBLGNBR1E7QUFBQSxTQUFrQixrQ0FBbkMsK0JBQW1DO0FBQUEsUUFBQztBQUFBLGlCQUFBeUQsV0FBQXZGO0FBQUFBLGFBQUEsSUFHeEM7QUFBQSxTQUFpQjtBQUFBO0FBQUEsaUJBQUF3RixZQUFBQyxLQUFBM0Y7QUFBQUE7QUFBQUE7QUFBQUEsY0FBQUEsTUFZckIsR0FBQUUsSUFBQTtBQUFBO0FBQUEsV0FUUztBQUFBO0FBQUEsWUFBQTNCLElBQUE7QUFBQSxZQUFBRCxJQUFBO0FBQUEsWUFBQTJCLElBQUE7QUFBQSxZQUFBN0IsSUFBQTtBQUFBLFlBQUF3SCxJQUdKO0FBQUEsV0FBaUI7QUFBQSxXQUVsQjtBQUFBLGdCQUFBMUYsTUFDRjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFERTtBQUFBO0FBQUEsa0JBREY7QUFBQTtBQUFBLFNBS2E7QUFBQTtBQUFBLFFEamlCbEMiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjoxODAxMCwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL3N0YWNrLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHQgPSB7IG11dGFibGUgYyA6ICdhIGxpc3Q7IG11dGFibGUgbGVuIDogaW50OyB9XG5cbmV4Y2VwdGlvbiBFbXB0eVxuXG5sZXQgY3JlYXRlICgpID0geyBjID0gW107IGxlbiA9IDA7IH1cblxubGV0IGNsZWFyIHMgPSBzLmMgPC0gW107IHMubGVuIDwtIDBcblxubGV0IGNvcHkgcyA9IHsgYyA9IHMuYzsgbGVuID0gcy5sZW47IH1cblxubGV0IHB1c2ggeCBzID0gcy5jIDwtIHggOjogcy5jOyBzLmxlbiA8LSBzLmxlbiArIDFcblxubGV0IHBvcCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6dGwgLT4gcy5jIDwtIHRsOyBzLmxlbiA8LSBzLmxlbiAtIDE7IGhkXG4gIHwgW10gICAgIC0+IHJhaXNlIEVtcHR5XG5cbmxldCBwb3Bfb3B0IHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IGhkOjp0bCAtPiBzLmMgPC0gdGw7IHMubGVuIDwtIHMubGVuIC0gMTsgU29tZSBoZFxuICB8IFtdICAgICAtPiBOb25lXG5cbmxldCBkcm9wIHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IF9oZDo6dGwgLT4gcy5jIDwtIHRsOyBzLmxlbiA8LSBzLmxlbiAtIDFcbiAgfCBbXSAtPiByYWlzZSBFbXB0eVxuXG5sZXQgdG9wIHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IGhkOjpfIC0+IGhkXG4gIHwgW10gICAgLT4gcmFpc2UgRW1wdHlcblxubGV0IHRvcF9vcHQgcyA9XG4gIG1hdGNoIHMuYyB3aXRoXG4gIHwgaGQ6Ol8gLT4gU29tZSBoZFxuICB8IFtdICAgIC0+IE5vbmVcblxubGV0IGlzX2VtcHR5IHMgPSAocy5jID0gW10pXG5cbmxldCBsZW5ndGggcyA9IHMubGVuXG5cbmxldCBpdGVyIGYgcyA9IExpc3QuaXRlciBmIHMuY1xuXG5sZXQgZm9sZCBmIGFjYyBzID0gTGlzdC5mb2xkX2xlZnQgZiBhY2Mgcy5jXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcyA9IExpc3QudG9fc2VxIHMuY1xuXG5sZXQgYWRkX3NlcSBxIGkgPSBTZXEuaXRlciAoZnVuIHggLT4gcHVzaCB4IHEpIGlcblxubGV0IG9mX3NlcSBnID1cbiAgbGV0IHMgPSBjcmVhdGUoKSBpblxuICBhZGRfc2VxIHMgZztcbiAgc1xuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYl9TZXEiLCJTdGRsaWJfTGlzdCIsIkVtcHR5IiwiY3JlYXRlIiwicGFyYW0iLCJjbGVhciIsInMiLCJjb3B5IiwicHVzaCIsIngiLCJwb3AiLCJtYXRjaCIsInRsIiwiaGQiLCJwb3Bfb3B0IiwiZHJvcCIsInRvcCIsInRvcF9vcHQiLCJpc19lbXB0eSIsImxlbmd0aCIsIml0ZXIiLCJmIiwiZm9sZCIsImFjYyIsInRvX3NlcSIsImFkZF9zZXEiLCJxIiwiaSIsIm9mX3NlcSIsImciXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxRQUFBO0FBQUEsWUFBQUMsT0FBQUMsT0NtQmdCLGlCQUFvQjtBQUFBLFlBQUFDLE1BQUFDLEdBRXRCLFVBQVcsbUJBQVU7QUFBQSxZQUFBQyxLQUFBRCxHQUV0Qix1QkFBeUI7QUFBQSxZQUFBRSxLQUFBQyxHQUFBSCxHQUV2QixxQkFBaUIsOEJBQWtCO0FBQUEsWUFBQUksSUFBQUo7QUFBQUEsUUFBQUssUUFHaEQ7QUFBQSxnQkFFWTtBQUFBLFFBQUFDLEtBRlosVUFBQUMsS0FBQTtBQUFBLElBQ1k7QUFBQSxJQUFXO0FBQUEsSUFBb0I7QUFBQSxHQUNwQjtBQUFBLFlBQUFDLFFBQUFSO0FBQUFBLFFBQUFLLFFBR3ZCO0FBQUEsZ0JBRVk7QUFBQSxRQUFBQyxLQUZaLFVBQUFDLEtBQUE7QUFBQSxJQUNZO0FBQUEsSUFBVztBQUFBLElBQW9CO0FBQUEsR0FDM0I7QUFBQSxZQUFBRSxLQUFBVDtBQUFBQSxRQUFBSyxRQUdoQjtBQUFBLGdCQUVRO0FBQUEsUUFBQUMsS0FGUjtBQUFBLElBQ2E7QUFBQSxJQUFXO0FBQUE7QUFBQSxHQUNMO0FBQUEsWUFBQUksSUFBQVY7QUFBQUEsUUFBQUssUUFHbkI7QUFBQSxnQkFFVztBQUFBLFFBQUFFLEtBRlg7QUFBQSxJQUNXO0FBQUEsR0FDVztBQUFBLFlBQUFJLFFBQUFYO0FBQUFBLFFBQUFLLFFBR3RCO0FBQUEsZ0JBRVc7QUFBQSxRQUFBRSxLQUZYO0FBQUEsSUFDVztBQUFBLEdBQ0k7QUFBQSxZQUFBSyxTQUFBWixHQUVBLDBCQUFVO0FBQUEsWUFBQWEsT0FBQWIsR0FFWixZQUFLO0FBQUEsWUFBQWMsS0FBQUMsR0FBQWYsR0FFTCwwQ0FBZTtBQUFBLFlBQUFnQixLQUFBRCxHQUFBRSxLQUFBakIsR0FFWCwrQ0FBd0I7QUFBQSxZQUFBa0IsT0FBQWxCLEdBSTVCLHVDQUFlO0FBQUEsWUFBQW1CLFFBQUFDLEdBQUFDO0FBQUFBLElBRVoseUNBQUFsQixHQUFtQixpQkFBUSxNQUFHO0FBQUE7QUFBQSxZQUFBbUIsT0FBQUMsT0FBQXZCLElBR3RDLFdBQ1IsZUFBVyxTQUNWO0FBQUEsR0RyRUgiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjoxODA5NiwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL3F1ZXVlLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICBGcmFuY29pcyBQb3R0aWVyLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICBKZXJlbWllIERpbWlubywgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leGNlcHRpb24gRW1wdHlcblxudHlwZSAnYSBjZWxsID1cbiAgfCBOaWxcbiAgfCBDb25zIG9mIHsgY29udGVudDogJ2E7IG11dGFibGUgbmV4dDogJ2EgY2VsbCB9XG5cbnR5cGUgJ2EgdCA9IHtcbiAgbXV0YWJsZSBsZW5ndGg6IGludDtcbiAgbXV0YWJsZSBmaXJzdDogJ2EgY2VsbDtcbiAgbXV0YWJsZSBsYXN0OiAnYSBjZWxsXG59XG5cbmxldCBjcmVhdGUgKCkgPSB7XG4gIGxlbmd0aCA9IDA7XG4gIGZpcnN0ID0gTmlsO1xuICBsYXN0ID0gTmlsXG59XG5cbmxldCBjbGVhciBxID1cbiAgcS5sZW5ndGggPC0gMDtcbiAgcS5maXJzdCA8LSBOaWw7XG4gIHEubGFzdCA8LSBOaWxcblxubGV0IGFkZCB4IHEgPVxuICBsZXQgY2VsbCA9IENvbnMge1xuICAgIGNvbnRlbnQgPSB4O1xuICAgIG5leHQgPSBOaWxcbiAgfSBpblxuICBtYXRjaCBxLmxhc3Qgd2l0aFxuICB8IE5pbCAtPlxuICAgIHEubGVuZ3RoIDwtIDE7XG4gICAgcS5maXJzdCA8LSBjZWxsO1xuICAgIHEubGFzdCA8LSBjZWxsXG4gIHwgQ29ucyBsYXN0IC0+XG4gICAgcS5sZW5ndGggPC0gcS5sZW5ndGggKyAxO1xuICAgIGxhc3QubmV4dCA8LSBjZWxsO1xuICAgIHEubGFzdCA8LSBjZWxsXG5cbmxldCBwdXNoID1cbiAgYWRkXG5cbmxldCBwZWVrIHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gcmFpc2UgRW1wdHlcbiAgfCBDb25zIHsgY29udGVudCB9IC0+IGNvbnRlbnRcblxubGV0IHBlZWtfb3B0IHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gTm9uZVxuICB8IENvbnMgeyBjb250ZW50IH0gLT4gU29tZSBjb250ZW50XG5cbmxldCB0b3AgPVxuICBwZWVrXG5cbmxldCB0YWtlIHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gcmFpc2UgRW1wdHlcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCA9IE5pbCB9IC0+XG4gICAgY2xlYXIgcTtcbiAgICBjb250ZW50XG4gIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgIHEubGVuZ3RoIDwtIHEubGVuZ3RoIC0gMTtcbiAgICBxLmZpcnN0IDwtIG5leHQ7XG4gICAgY29udGVudFxuXG5sZXQgdGFrZV9vcHQgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiBOb25lXG4gIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgPSBOaWwgfSAtPlxuICAgIGNsZWFyIHE7XG4gICAgU29tZSBjb250ZW50XG4gIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgIHEubGVuZ3RoIDwtIHEubGVuZ3RoIC0gMTtcbiAgICBxLmZpcnN0IDwtIG5leHQ7XG4gICAgU29tZSBjb250ZW50XG5cbmxldCBwb3AgPVxuICB0YWtlXG5cbmxldCBkcm9wIHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gcmFpc2UgRW1wdHlcbiAgfCBDb25zIHsgY29udGVudCA9IF87IG5leHQgPSBOaWwgfSAtPlxuICAgIGNsZWFyIHFcbiAgfCBDb25zIHsgY29udGVudCA9IF87IG5leHQgfSAtPlxuICAgIHEubGVuZ3RoIDwtIHEubGVuZ3RoIC0gMTtcbiAgICBxLmZpcnN0IDwtIG5leHRcblxubGV0IGNvcHkgPVxuICBsZXQgcmVjIGNvcHkgcV9yZXMgcHJldiBjZWxsID1cbiAgICBtYXRjaCBjZWxsIHdpdGhcbiAgICB8IE5pbCAtPiBxX3Jlcy5sYXN0IDwtIHByZXY7IHFfcmVzXG4gICAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgICBsZXQgcmVzID0gQ29ucyB7IGNvbnRlbnQ7IG5leHQgPSBOaWwgfSBpblxuICAgICAgYmVnaW4gbWF0Y2ggcHJldiB3aXRoXG4gICAgICB8IE5pbCAtPiBxX3Jlcy5maXJzdCA8LSByZXNcbiAgICAgIHwgQ29ucyBwIC0+IHAubmV4dCA8LSByZXNcbiAgICAgIGVuZDtcbiAgICAgIGNvcHkgcV9yZXMgcmVzIG5leHRcbiAgaW5cbiAgZnVuIHEgLT4gY29weSB7IGxlbmd0aCA9IHEubGVuZ3RoOyBmaXJzdCA9IE5pbDsgbGFzdCA9IE5pbCB9IE5pbCBxLmZpcnN0XG5cbmxldCBpc19lbXB0eSBxID1cbiAgcS5sZW5ndGggPSAwXG5cbmxldCBsZW5ndGggcSA9XG4gIHEubGVuZ3RoXG5cbmxldCBpdGVyID1cbiAgbGV0IHJlYyBpdGVyIGYgY2VsbCA9XG4gICAgbWF0Y2ggY2VsbCB3aXRoXG4gICAgfCBOaWwgLT4gKClcbiAgICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICAgIGYgY29udGVudDtcbiAgICAgIGl0ZXIgZiBuZXh0XG4gIGluXG4gIGZ1biBmIHEgLT4gaXRlciBmIHEuZmlyc3RcblxubGV0IGZvbGQgPVxuICBsZXQgcmVjIGZvbGQgZiBhY2N1IGNlbGwgPVxuICAgIG1hdGNoIGNlbGwgd2l0aFxuICAgIHwgTmlsIC0+IGFjY3VcbiAgICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICAgIGxldCBhY2N1ID0gZiBhY2N1IGNvbnRlbnQgaW5cbiAgICAgIGZvbGQgZiBhY2N1IG5leHRcbiAgaW5cbiAgZnVuIGYgYWNjdSBxIC0+IGZvbGQgZiBhY2N1IHEuZmlyc3RcblxubGV0IHRyYW5zZmVyIHExIHEyID1cbiAgaWYgcTEubGVuZ3RoID4gMCB0aGVuXG4gICAgbWF0Y2ggcTIubGFzdCB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgIHEyLmxlbmd0aCA8LSBxMS5sZW5ndGg7XG4gICAgICBxMi5maXJzdCA8LSBxMS5maXJzdDtcbiAgICAgIHEyLmxhc3QgPC0gcTEubGFzdDtcbiAgICAgIGNsZWFyIHExXG4gICAgfCBDb25zIGxhc3QgLT5cbiAgICAgIHEyLmxlbmd0aCA8LSBxMi5sZW5ndGggKyBxMS5sZW5ndGg7XG4gICAgICBsYXN0Lm5leHQgPC0gcTEuZmlyc3Q7XG4gICAgICBxMi5sYXN0IDwtIHExLmxhc3Q7XG4gICAgICBjbGVhciBxMVxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHEgPVxuICBsZXQgcmVjIGF1eCBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgfCBOaWwgLT4gU2VxLk5pbFxuICAgIHwgQ29ucyB7IGNvbnRlbnQ9eDsgbmV4dDsgfSAtPiBTZXEuQ29ucyAoeCwgYXV4IG5leHQpXG4gIGluXG4gIGF1eCBxLmZpcnN0XG5cbmxldCBhZGRfc2VxIHEgaSA9IFNlcS5pdGVyIChmdW4geCAtPiBwdXNoIHggcSkgaVxuXG5sZXQgb2Zfc2VxIGcgPVxuICBsZXQgcSA9IGNyZWF0ZSgpIGluXG4gIGFkZF9zZXEgcSBnO1xuICBxXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJTdGRsaWJfU2VxIiwiRW1wdHkiLCJjcmVhdGUiLCJwYXJhbSIsImNsZWFyIiwicSIsImFkZCIsIngiLCJjZWxsIiwibWF0Y2giLCJwZWVrIiwiY29udGVudCIsInBlZWtfb3B0IiwidGFrZSIsIm5leHQiLCJ0YWtlX29wdCIsImRyb3AiLCJjb3B5IiwicV9yZXMiLCJwcmV2IiwiaXNfZW1wdHkiLCJsZW5ndGgiLCJpdGVyIiwiZm9sZCIsImFjY3UiLCJ0cmFuc2ZlciIsInExIiwicTIiLCJ0b19zZXEiLCJhdXgiLCJjIiwiYWRkX3NlcSIsImkiLCJvZl9zZXEiLCJnIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGFBQUE7QUFBQSxJQUFBQyxRQUFBO0FBQUEsWUFBQUMsT0FBQUMsT0M0QmdCLG9CQUlmO0FBQUEsWUFBQUMsTUFBQUMsR0FHQyxVQUNBLFVBQ0EsbUJBQWE7QUFBQSxZQUFBQyxJQUFBQyxHQUFBRjtBQUFBQSxRQUFBRyxPQUdiLFdBQUFDLFFBSUE7QUFBQTtBQUFBO0FBQUEscURBUWdCO0FBQUE7QUFBQSxZQUFBQyxLQUFBTDtBQUFBQSxRQUFBSSxRQU1oQjtBQUFBLGdCQUNTO0FBQUEsUUFBQUUsVUFEVDtBQUFBLElBRXNCO0FBQUEsR0FBTztBQUFBLFlBQUFDLFNBQUFQO0FBQUFBLFFBQUFJLFFBRzdCO0FBQUEsZ0JBQ1M7QUFBQSxRQUFBRSxVQURUO0FBQUEsSUFFc0I7QUFBQSxHQUFZO0FBQUEsWUFBQUUsS0FBQVI7QUFBQUEsUUFBQUksUUFNbEM7QUFBQSxnQkFDUztBQUFBLFFBQUFFLFVBRFQ7QUFBQTtBQUFBLFNBQUFHLE9BQUE7QUFBQSxLQU1FO0FBQUEsS0FDQTtBQUFBLEtBQ0E7QUFBQTtBQUFBLElBTEE7QUFBQSxJQUFPO0FBQUEsR0FLQTtBQUFBLFlBQUFDLFNBQUFWO0FBQUFBLFFBQUFJLFFBR1Q7QUFBQSxnQkFDUztBQUFBLFFBQUFFLFVBRFQ7QUFBQTtBQUFBLFNBQUFHLE9BQUE7QUFBQSxLQU1FO0FBQUEsS0FDQTtBQUFBLEtBQ0E7QUFBQTtBQUFBLElBTEE7QUFBQSxJQUFPO0FBQUEsR0FLSztBQUFBLFlBQUFFLEtBQUFYO0FBQUFBLFFBQUFJLFFBTWQ7QUFBQSxnQkFDUztBQUFBLElBRFQsZUFHRSxlQUdlO0FBQUEsUUFBQUssT0FOakI7QUFBQSxJQUtFO0FBQUEsSUFDQTtBQUFBO0FBQUEsR0FBZTtBQUFBLFlBQUFHLEtBQUFaO0FBQUFBLFFBQUFHLFNBY1IsTUFBQVUsUUFBQSxpQkFBQUMsT0FBQSxHQUFBWCxPQUFBO0FBQUE7QUFBQSxLQVZQLFdBQ1MsaUJBQW9CO0FBQUEsU0FBQUcsVUFEN0IsU0FBQUcsT0FBQSxTQUFBSyxTQUdFO0FBQUEsS0FDQTtBQUFBLE1BRVk7QUFBQTtBQUFBO0FBQUE7QUFBQSxVQURILG1CQUdUO0FBQUE7QUFBQSxHQUVvRTtBQUFBLFlBQUFDLFNBQUFmLEdBR3hFLDBCQUFZO0FBQUEsWUFBQWdCLE9BQUFoQixHQUdaLFlBQVE7QUFBQSxZQUFBaUIsS0FBQTFCLEdBQUFTO0FBQUFBLFFBQUFHLFNBVUcsTUFBQUEsT0FBQTtBQUFBO0FBQUEsS0FOVCxXQUNTO0FBQUEsU0FBQUcsVUFEVCxTQUFBRyxPQUFBO0FBQUEsS0FHRTtBQUFBLEtBQVM7QUFBQTtBQUFBLEdBR1k7QUFBQSxZQUFBUyxLQUFBM0IsR0FBQTRCLFFBQUFuQjtBQUFBQSxRQUFBRyxTQVVULE1BQUFnQixPQUFBLFFBQUFoQixPQUFBO0FBQUE7QUFBQSxLQU5kLFdBQ1M7QUFBQTtBQUFBLE1BQUFHLFVBRFQ7QUFBQSxNQUFBRyxPQUFBO0FBQUEsTUFBQVUsU0FHYTtBQUFBLEtBQ1g7QUFBQTtBQUFBO0FBQUEsR0FFK0I7QUFBQSxZQUFBQyxTQUFBQyxJQUFBQztBQUFBQSxRQUFBLElBR25DO0FBQUE7QUFBQSxRQUFBbEIsUUFDRTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGNBVUU7QUFBQSw0REFMQSxVQUtRO0FBQUE7QUFBQSxZQUFBbUIsT0FBQXZCO0FBQUFBLGFBQUF3QixJQUFBQyxHQUFBM0I7QUFBQUEsS0FLTyxRQUNSO0FBQUEsU0FBQUksSUFEUSxNQUFBTyxPQUFBO0FBQUEsS0FFbUMsMEJBQVIsc0JBQVE7QUFBQSxJQUFDO0FBQUEsWUFFdkQ7QUFBQSx1QkRyS0Ysa0JDcUtFO0FBQUEsR0FBVztBQUFBLFlBQUFpQixRQUFBMUIsR0FBQTJCO0FBQUFBLElBRUsseUNBQUF6QixHQUFtQixnQkFBUSxNQUFHO0FBQUE7QUFBQSxZQUFBMEIsT0FBQUMsT0FBQTdCLElBR3RDLFdBQ1IsZUFBVyxTQUNWO0FBQUEsR0E5QkQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVEOUlGIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MTgyNjMsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9idWZmZXIubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICBQaWVycmUgV2VpcyBhbmQgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk5IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEV4dGVuc2libGUgYnVmZmVycyAqKVxuXG4oKiBUaGUgW2lubmVyX2J1ZmZlcl0gdHlwZSBlbnN1cmVzIHRoYXQgdGhlIFtsZW5ndGhdIGFuZCBbYnVmZmVyXSBmaWVsZHMgYXJlXG4gICBhbHdheXMgc3luY2hyb25pemVkLCBbbGVuZ3RoID0gQnl0ZXMubGVuZ3RoIGJ1ZmZlcl0sIGV2ZW4gaW4gcHJlc2VuY2VcbiAgIG9mIGRhdGEgcmFjZXMuXG4qKVxudHlwZSBpbm5lcl9idWZmZXIgPSB7XG4gIGJ1ZmZlcjogYnl0ZXM7XG4gIGxlbmd0aDogaW50O1xufVxuXG50eXBlIHQgPVxuIHttdXRhYmxlIGlubmVyIDogaW5uZXJfYnVmZmVyO1xuICBtdXRhYmxlIHBvc2l0aW9uIDogaW50O1xuICBpbml0aWFsX2J1ZmZlciA6IGJ5dGVzfVxuKCogSW52YXJpYW50czogYWxsIHBhcnRzIG9mIHRoZSBjb2RlIHByZXNlcnZlIHRoZSBpbnZhcmlhbnRzIHRoYXQ6XG4gICAtIFtpbm5lci5sZW5ndGggPSBCeXRlcy5sZW5ndGggaW5uZXIuYnVmZmVyXVxuICAgSW4gYWJzZW5jZSBvZiBkYXRhIHJhY2VzLCB3ZSBhbHNvIGhhdmVcbiAgIC0gWzAgPD0gYi5wb3NpdGlvbiA8PSBiLmlubmVyLmxlbmd0aF1cblxuICAgTm90ZSBpbiBwYXJ0aWN1bGFyIHRoYXQgW2IucG9zaXRpb24gPSBiLmlubmVyLmxlbmd0aF0gaXMgbGVnYWwsXG4gICBpdCBtZWFucyB0aGF0IHRoZSBidWZmZXIgaXMgZnVsbCBhbmQgd2lsbCBoYXZlIHRvIGJlIGV4dGVuZGVkXG4gICBiZWZvcmUgYW55IGZ1cnRoZXIgYWRkaXRpb24uICopXG5cbmxldCBjcmVhdGUgbiA9XG4gbGV0IG4gPSBpZiBuIDwgMSB0aGVuIDEgZWxzZSBuIGluXG4gbGV0IG4gPSBpZiBuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIGVsc2UgbiBpblxuIGxldCBzID0gQnl0ZXMuY3JlYXRlIG4gaW5cbiB7IGlubmVyID0geyBidWZmZXIgPSBzOyBsZW5ndGggPSBufTsgcG9zaXRpb24gPSAwOyBpbml0aWFsX2J1ZmZlciA9IHN9XG5cbmxldCBjb250ZW50cyBiID0gQnl0ZXMuc3ViX3N0cmluZyBiLmlubmVyLmJ1ZmZlciAwIGIucG9zaXRpb25cbmxldCB0b19ieXRlcyBiID0gQnl0ZXMuc3ViIGIuaW5uZXIuYnVmZmVyIDAgYi5wb3NpdGlvblxuXG5sZXQgc3ViIGIgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBiLnBvc2l0aW9uIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuc3ViXCJcbiAgZWxzZSBCeXRlcy5zdWJfc3RyaW5nIGIuaW5uZXIuYnVmZmVyIG9mcyBsZW5cblxuXG5sZXQgYmxpdCBzcmMgc3Jjb2ZmIGRzdCBkc3RvZmYgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBzcmNvZmYgPCAwIHx8IHNyY29mZiA+IHNyYy5wb3NpdGlvbiAtIGxlblxuICAgICAgICAgICAgIHx8IGRzdG9mZiA8IDAgfHwgZHN0b2ZmID4gKEJ5dGVzLmxlbmd0aCBkc3QpIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuYmxpdFwiXG4gIGVsc2VcbiAgICBCeXRlcy5ibGl0IHNyYy5pbm5lci5idWZmZXIgc3Jjb2ZmIGRzdCBkc3RvZmYgbGVuXG5cblxubGV0IG50aCBiIG9mcyA9XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtidWZmZXI7bGVuZ3RofSA9IGIuaW5uZXIgaW5cbiAgaWYgb2ZzIDwgMCB8fCBvZnMgPj0gcG9zaXRpb24gfHwgcG9zaXRpb24gPiBsZW5ndGggdGhlblxuICAgaW52YWxpZF9hcmcgXCJCdWZmZXIubnRoXCJcbiAgZWxzZSBCeXRlcy51bnNhZmVfZ2V0IGJ1ZmZlciBvZnNcblxuXG5sZXQgbGVuZ3RoIGIgPSBiLnBvc2l0aW9uXG5cbmxldCBjbGVhciBiID0gYi5wb3NpdGlvbiA8LSAwXG5cbmxldCByZXNldCBiID1cbiAgYi5wb3NpdGlvbiA8LSAwO1xuICBsZXQgaW5uZXIgPVxuICAgIHsgYnVmZmVyID0gYi5pbml0aWFsX2J1ZmZlcjsgbGVuZ3RoID0gQnl0ZXMubGVuZ3RoIGIuaW5pdGlhbF9idWZmZXIgfVxuICBpblxuICBiLmlubmVyIDwtIGlubmVyXG5cbigqIFtyZXNpemUgYiBtb3JlXSBlbnN1cmVzIHRoYXQgW2IucG9zaXRpb24gKyBtb3JlIDw9IGIuaW5uZXIubGVuZ3RoXSBob2xkc1xuICAgYnkgZHluYW1pY2FsbHkgZXh0ZW5kaW5nIFtiLmlubmVyXSBpZiBuZWNlc3NhcnkgLS0gYW5kIHRodXNcbiAgIGluY3JlYXNpbmcgW2IuaW5uZXIubGVuZ3RoXS5cbiopXG5sZXQgcmVzaXplIGIgbW9yZSA9XG4gIGxldCBvbGRfcG9zID0gYi5wb3NpdGlvbiBpblxuICBsZXQgb2xkX2xlbiA9IGIuaW5uZXIubGVuZ3RoIGluXG4gIGxldCBuZXdfbGVuID0gcmVmIG9sZF9sZW4gaW5cbiAgd2hpbGUgb2xkX3BvcyArIG1vcmUgPiAhbmV3X2xlbiBkbyBuZXdfbGVuIDo9IDIgKiAhbmV3X2xlbiBkb25lO1xuICBpZiAhbmV3X2xlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuIGJlZ2luXG4gICAgaWYgb2xkX3BvcyArIG1vcmUgPD0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgdGhlbiBuZXdfbGVuIDo9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgIGVsc2UgZmFpbHdpdGggXCJCdWZmZXIuYWRkOiBjYW5ub3QgZ3JvdyBidWZmZXJcIlxuICBlbmQ7XG4gIGxldCBuZXdfYnVmZmVyID0gQnl0ZXMuY3JlYXRlICFuZXdfbGVuIGluXG4gICgqIFBSIzYxNDg6IGxldCdzIGtlZXAgdXNpbmcgW2JsaXRdIHJhdGhlciB0aGFuIFt1bnNhZmVfYmxpdF0gaW5cbiAgICAgdGhpcyB0cmlja3kgZnVuY3Rpb24gdGhhdCBpcyBzbG93IGFueXdheS4gKilcbiAgQnl0ZXMuYmxpdCBiLmlubmVyLmJ1ZmZlciAwIG5ld19idWZmZXIgMCBiLnBvc2l0aW9uO1xuICBiLmlubmVyIDwtIHsgYnVmZmVyID0gbmV3X2J1ZmZlcjsgbGVuZ3RoID0gIW5ld19sZW4gfVxuXG4oKiBOb3RlOlxuICAgIFNvbWUgb2YgdGhlIGZ1bmN0aW9ucyBiZWxvdyBoYXZlIGEgZmFzdCBwYXRoIHdoZW4gdGhlIGlubmVyXG4gIGJ1ZmZlciBkb2Vzbid0IG5lZWQgdG8gYmUgZXh0ZW5kZWQuXG4gICAgSW4gdGhpcyBjYXNlLCBpdCBpcyBwb3NzaWJsZSB0byB1c2UgdW5zYWZlIGFjY2Vzc2VzIG9uIHRoZVxuICBjb250ZW50cyBvZiB0aGUgW2lubmVyXSBmaWVsZCBzaW5jZSBpdHMgZmllbGRzIGFyZSBpbW11dGFibGUuXG4gIEluIHByZXNlbmNlIG9mIGRhdGEgcmFjZXMsIHdlIG1heSBhY2Nlc3MgdGhlIHdyb25nIGlubmVyIGJ1ZmZlciwgYnV0IHdlXG4gIHdpbGwgdXNlIHRoaXMgYnVmZmVyIHNhZmVseS5cbiAgQXMgc29vbiBhcyB3ZSBuZWVkIHRvIHJlc2l6ZSB0aGUgYnVmZmVyLCB3ZSBmYWxsIGJhY2sgdG8gc2FmZSBhY2Nlc3Nlcy5cbiopXG5cbmxldCBhZGRfY2hhciBiIGMgPVxuICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2J1ZmZlcjtsZW5ndGh9ID0gYi5pbm5lciBpblxuICBpZiBwb3MgPj0gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIDE7XG4gICAgQnl0ZXMuc2V0IGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24gY1xuICApIGVsc2VcbiAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZmZlciBwb3MgYztcbiAgYi5wb3NpdGlvbiA8LSBwb3MgKyAxXG5cbmxldCB1Y2hhcl91dGZfOF9ieXRlX2xlbmd0aF9tYXggPSA0XG5sZXQgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heCA9IDRcblxubGV0IHJlYyBhZGRfdXRmXzhfdWNoYXIgYiB1ID1cbiAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgaWYgcG9zID49IGIuaW5uZXIubGVuZ3RoIHRoZW4gcmVzaXplIGIgdWNoYXJfdXRmXzhfYnl0ZV9sZW5ndGhfbWF4O1xuICBsZXQgbiA9IEJ5dGVzLnNldF91dGZfOF91Y2hhciBiLmlubmVyLmJ1ZmZlciBwb3MgdSBpblxuICBpZiBuID0gMFxuICB0aGVuIChyZXNpemUgYiB1Y2hhcl91dGZfOF9ieXRlX2xlbmd0aF9tYXg7IGFkZF91dGZfOF91Y2hhciBiIHUpXG4gIGVsc2UgKGIucG9zaXRpb24gPC0gcG9zICsgbilcblxubGV0IHJlYyBhZGRfdXRmXzE2YmVfdWNoYXIgYiB1ID1cbiAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgaWYgcG9zID49IGIuaW5uZXIubGVuZ3RoIHRoZW4gcmVzaXplIGIgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heDtcbiAgbGV0IG4gPSBCeXRlcy5zZXRfdXRmXzE2YmVfdWNoYXIgYi5pbm5lci5idWZmZXIgcG9zIHUgaW5cbiAgaWYgbiA9IDBcbiAgdGhlbiAocmVzaXplIGIgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heDsgYWRkX3V0Zl8xNmJlX3VjaGFyIGIgdSlcbiAgZWxzZSAoYi5wb3NpdGlvbiA8LSBwb3MgKyBuKVxuXG5sZXQgcmVjIGFkZF91dGZfMTZsZV91Y2hhciBiIHUgPVxuICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICBpZiBwb3MgPj0gYi5pbm5lci5sZW5ndGggdGhlbiByZXNpemUgYiB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4O1xuICBsZXQgbiA9IEJ5dGVzLnNldF91dGZfMTZsZV91Y2hhciBiLmlubmVyLmJ1ZmZlciBwb3MgdSBpblxuICBpZiBuID0gMFxuICB0aGVuIChyZXNpemUgYiB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4OyBhZGRfdXRmXzE2bGVfdWNoYXIgYiB1KVxuICBlbHNlIChiLnBvc2l0aW9uIDwtIHBvcyArIG4pXG5cbmxldCBhZGRfc3Vic3RyaW5nIGIgcyBvZmZzZXQgbGVuID1cbiAgaWYgb2Zmc2V0IDwgMCB8fCBsZW4gPCAwIHx8IG9mZnNldCA+IFN0cmluZy5sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQnVmZmVyLmFkZF9zdWJzdHJpbmdcIjtcbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2J1ZmZlcjtsZW5ndGh9ID0gYi5pbm5lciBpblxuICBsZXQgbmV3X3Bvc2l0aW9uID0gcG9zaXRpb24gKyBsZW4gaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIGxlbjtcbiAgICBCeXRlcy5ibGl0X3N0cmluZyBzIG9mZnNldCBiLmlubmVyLmJ1ZmZlciBiLnBvc2l0aW9uIGxlblxuICApIGVsc2VcbiAgICBCeXRlcy51bnNhZmVfYmxpdF9zdHJpbmcgcyBvZmZzZXQgYnVmZmVyIHBvc2l0aW9uIGxlbjtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9zdWJieXRlcyBiIGJ5dGVzIG9mZnNldCBsZW4gPVxuICBpZiBvZmZzZXQgPCAwIHx8IGxlbiA8IDAgfHwgb2Zmc2V0ID4gQnl0ZXMubGVuZ3RoIGJ5dGVzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuYWRkX3N1YmJ5dGVzXCI7XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtidWZmZXI7bGVuZ3RofSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgbGVuIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGxlbmd0aCB0aGVuIChcbiAgICByZXNpemUgYiBsZW47XG4gICAgQnl0ZXMuYmxpdCBieXRlcyBvZmZzZXQgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiBsZW5cbiAgKSBlbHNlXG4gICAgQnl0ZXMudW5zYWZlX2JsaXQgYnl0ZXMgb2Zmc2V0IGJ1ZmZlciBwb3NpdGlvbiBsZW47XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfc3RyaW5nIGIgcyA9XG4gIGFkZF9zdWJzdHJpbmcgYiBzIDAgKFN0cmluZy5sZW5ndGggcylcblxubGV0IGFkZF9ieXRlcyBiIGJ5dGVzID1cbiAgYWRkX3N1YmJ5dGVzIGIgYnl0ZXMgMCAoQnl0ZXMubGVuZ3RoIGJ5dGVzKVxuXG5sZXQgYWRkX2J1ZmZlciBiIGJzID1cbiAgYWRkX3N1YmJ5dGVzIGIgYnMuaW5uZXIuYnVmZmVyIDAgYnMucG9zaXRpb25cblxuKCogdGhpcyAocHJpdmF0ZSkgZnVuY3Rpb24gY291bGQgbW92ZSBpbnRvIHRoZSBzdGFuZGFyZCBsaWJyYXJ5ICopXG5sZXQgcmVhbGx5X2lucHV0X3VwX3RvIGljIGJ1ZiBvZnMgbGVuID1cbiAgbGV0IHJlYyBsb29wIGljIGJ1ZiB+YWxyZWFkeV9yZWFkIH5vZnMgfnRvX3JlYWQgPVxuICAgIGlmIHRvX3JlYWQgPSAwIHRoZW4gYWxyZWFkeV9yZWFkXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBpbnB1dCBpYyBidWYgb2ZzIHRvX3JlYWQgaW5cbiAgICAgIGlmIHIgPSAwIHRoZW4gYWxyZWFkeV9yZWFkXG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBhbHJlYWR5X3JlYWQgPSBhbHJlYWR5X3JlYWQgKyByIGluXG4gICAgICAgIGxldCBvZnMgPSBvZnMgKyByIGluXG4gICAgICAgIGxldCB0b19yZWFkID0gdG9fcmVhZCAtIHIgaW5cbiAgICAgICAgbG9vcCBpYyBidWYgfmFscmVhZHlfcmVhZCB+b2ZzIH50b19yZWFkXG4gICAgICBlbmRcbiAgICBlbmRcbiAgaW4gbG9vcCBpYyBidWYgfmFscmVhZHlfcmVhZDowIH5vZnMgfnRvX3JlYWQ6bGVuXG5cblxubGV0IHVuc2FmZV9hZGRfY2hhbm5lbF91cF90byBiIGljIGxlbiA9XG4gIGlmIGIucG9zaXRpb24gKyBsZW4gPiBiLmlubmVyLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIGxlbjtcbiAgbGV0IG4gPSByZWFsbHlfaW5wdXRfdXBfdG8gaWMgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiBsZW4gaW5cbiAgYi5wb3NpdGlvbiA8LSBiLnBvc2l0aW9uICsgbjtcbiAgblxuXG5sZXQgYWRkX2NoYW5uZWwgYiBpYyBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IGxlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuICAgKCogUFIjNTAwNCAqKVxuICAgIGludmFsaWRfYXJnIFwiQnVmZmVyLmFkZF9jaGFubmVsXCI7XG4gIGxldCBuID0gdW5zYWZlX2FkZF9jaGFubmVsX3VwX3RvIGIgaWMgbGVuIGluXG4gICgqIEl0IGlzIGludGVudGlvbmFsIHRoYXQgYSBjb25zdW1lciBjYXRjaGluZyBFbmRfb2ZfZmlsZVxuICAgICB3aWxsIHNlZSB0aGUgZGF0YSB3cml0dGVuIChzZWUgIzY3MTksICM3MTM2KS4gKilcbiAgaWYgbiA8IGxlbiB0aGVuIHJhaXNlIEVuZF9vZl9maWxlO1xuICAoKVxuXG5sZXQgb3V0cHV0X2J1ZmZlciBvYyBiID1cbiAgb3V0cHV0IG9jIGIuaW5uZXIuYnVmZmVyIDAgYi5wb3NpdGlvblxuXG5sZXQgY2xvc2luZyA9IGZ1bmN0aW9uXG4gIHwgJygnIC0+ICcpJ1xuICB8ICd7JyAtPiAnfSdcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4oKiBvcGVuaW5nIGFuZCBjbG9zaW5nOiBvcGVuIGFuZCBjbG9zZSBjaGFyYWN0ZXJzLCB0eXBpY2FsbHkgKCBhbmQgKVxuICAgazogYmFsYW5jZSBvZiBvcGVuaW5nIGFuZCBjbG9zaW5nIGNoYXJzXG4gICBzOiB0aGUgc3RyaW5nIHdoZXJlIHdlIGFyZSBzZWFyY2hpbmdcbiAgIHN0YXJ0OiB0aGUgaW5kZXggd2hlcmUgd2Ugc3RhcnQgdGhlIHNlYXJjaC4gKilcbmxldCBhZHZhbmNlX3RvX2Nsb3Npbmcgb3BlbmluZyBjbG9zaW5nIGsgcyBzdGFydCA9XG4gIGxldCByZWMgYWR2YW5jZSBrIGkgbGltID1cbiAgICBpZiBpID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gICAgaWYgcy5baV0gPSBvcGVuaW5nIHRoZW4gYWR2YW5jZSAoayArIDEpIChpICsgMSkgbGltIGVsc2VcbiAgICBpZiBzLltpXSA9IGNsb3NpbmcgdGhlblxuICAgICAgaWYgayA9IDAgdGhlbiBpIGVsc2UgYWR2YW5jZSAoayAtIDEpIChpICsgMSkgbGltXG4gICAgZWxzZSBhZHZhbmNlIGsgKGkgKyAxKSBsaW0gaW5cbiAgYWR2YW5jZSBrIHN0YXJ0IChTdHJpbmcubGVuZ3RoIHMpXG5cbmxldCBhZHZhbmNlX3RvX25vbl9hbHBoYSBzIHN0YXJ0ID1cbiAgbGV0IHJlYyBhZHZhbmNlIGkgbGltID1cbiAgICBpZiBpID49IGxpbSB0aGVuIGxpbSBlbHNlXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnMCcgLi4gJzknIHwgJ18nIC0+IGFkdmFuY2UgKGkgKyAxKSBsaW1cbiAgICB8IF8gLT4gaSBpblxuICBhZHZhbmNlIHN0YXJ0IChTdHJpbmcubGVuZ3RoIHMpXG5cbigqIFdlIGFyZSBqdXN0IGF0IHRoZSBiZWdpbm5pbmcgb2YgYW4gaWRlbnQgaW4gcywgc3RhcnRpbmcgYXQgc3RhcnQuICopXG5sZXQgZmluZF9pZGVudCBzIHN0YXJ0IGxpbSA9XG4gIGlmIHN0YXJ0ID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIG1hdGNoIHMuW3N0YXJ0XSB3aXRoXG4gICgqIFBhcmVudGhlc2l6ZWQgaWRlbnQgPyAqKVxuICB8ICcoJyB8ICd7JyBhcyBjIC0+XG4gICAgIGxldCBuZXdfc3RhcnQgPSBzdGFydCArIDEgaW5cbiAgICAgbGV0IHN0b3AgPSBhZHZhbmNlX3RvX2Nsb3NpbmcgYyAoY2xvc2luZyBjKSAwIHMgbmV3X3N0YXJ0IGluXG4gICAgIFN0cmluZy5zdWIgcyBuZXdfc3RhcnQgKHN0b3AgLSBzdGFydCAtIDEpLCBzdG9wICsgMVxuICAoKiBSZWd1bGFyIGlkZW50ICopXG4gIHwgXyAtPlxuICAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgc3RhcnQgaW5cbiAgICAgaWYgc3RvcCA9IHN0YXJ0IHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgICAgU3RyaW5nLnN1YiBzIHN0YXJ0IChzdG9wIC0gc3RhcnQpLCBzdG9wXG5cbigqIFN1YnN0aXR1dGUgJGlkZW50LCAkKGlkZW50KSwgb3IgJHtpZGVudH0gaW4gcyxcbiAgICBhY2NvcmRpbmcgdG8gdGhlIGZ1bmN0aW9uIG1hcHBpbmcgZi4gKilcbmxldCBhZGRfc3Vic3RpdHV0ZSBiIGYgcyA9XG4gIGxldCBsaW0gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBzdWJzdCBwcmV2aW91cyBpID1cbiAgICBpZiBpIDwgbGltIHRoZW4gYmVnaW5cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJyQnIGFzIGN1cnJlbnQgd2hlbiBwcmV2aW91cyA9ICdcXFxcJyAtPlxuICAgICAgICAgYWRkX2NoYXIgYiBjdXJyZW50O1xuICAgICAgICAgc3Vic3QgJyAnIChpICsgMSlcbiAgICAgIHwgJyQnIC0+XG4gICAgICAgICBsZXQgaiA9IGkgKyAxIGluXG4gICAgICAgICBiZWdpbiBtYXRjaCBmaW5kX2lkZW50IHMgaiBsaW0gd2l0aFxuICAgICAgICAgfCBpZGVudCwgbmV4dF9pIC0+XG4gICAgICAgICAgIGFkZF9zdHJpbmcgYiAoZiBpZGVudCk7XG4gICAgICAgICAgIHN1YnN0ICcgJyBuZXh0X2lcbiAgICAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICBhZGRfY2hhciBiICckJztcbiAgICAgICAgICAgc3Vic3QgJyAnIGpcbiAgICAgICAgIGVuZFxuICAgICAgfCBjdXJyZW50IC0+XG4gICAgICAgICBpZiBwcmV2aW91cyA9ICdcXFxcJyB0aGVuIGFkZF9jaGFyIGIgcHJldmlvdXM7XG4gICAgICAgICBpZiBjdXJyZW50IDw+ICdcXFxcJyB0aGVuIGFkZF9jaGFyIGIgY3VycmVudDtcbiAgICAgICAgIHN1YnN0IGN1cnJlbnQgKGkgKyAxKVxuICAgIGVuZCBlbHNlXG4gICAgaWYgcHJldmlvdXMgPSAnXFxcXCcgdGhlbiBhZGRfY2hhciBiIHByZXZpb3VzIGluXG4gIHN1YnN0ICcgJyAwXG5cbmxldCB0cnVuY2F0ZSBiIGxlbiA9XG4gICAgaWYgbGVuIDwgMCB8fCBsZW4gPiBsZW5ndGggYiB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIkJ1ZmZlci50cnVuY2F0ZVwiXG4gICAgZWxzZVxuICAgICAgYi5wb3NpdGlvbiA8LSBsZW5cblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBiID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgKCogTm90ZSB0aGF0IGIucG9zaXRpb24gaXMgbm90IGEgY29uc3RhbnQgYW5kIGNhbm5vdCBiZSBsaWZ0ZWQgb3V0IG9mIGF1eCAqKVxuICAgIGlmIGkgPj0gYi5wb3NpdGlvbiB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IEJ5dGVzLmdldCBiLmlubmVyLmJ1ZmZlciBpIGluXG4gICAgICBTZXEuQ29ucyAoeCwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgdG9fc2VxaSBiID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgKCogTm90ZSB0aGF0IGIucG9zaXRpb24gaXMgbm90IGEgY29uc3RhbnQgYW5kIGNhbm5vdCBiZSBsaWZ0ZWQgb3V0IG9mIGF1eCAqKVxuICAgIGlmIGkgPj0gYi5wb3NpdGlvbiB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IEJ5dGVzLmdldCBiLmlubmVyLmJ1ZmZlciBpIGluXG4gICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IGFkZF9zZXEgYiBzZXEgPSBTZXEuaXRlciAoYWRkX2NoYXIgYikgc2VxXG5cbmxldCBvZl9zZXEgaSA9XG4gIGxldCBiID0gY3JlYXRlIDMyIGluXG4gIGFkZF9zZXEgYiBpO1xuICBiXG5cbigqKiB7NiBCaW5hcnkgZW5jb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQxNiA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MTZ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50MzIgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50NjQgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjR1XCJcbmV4dGVybmFsIHNldF9pbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlYnl0ZXNfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgc2V0X2ludDE2IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNlwiXG5leHRlcm5hbCBzZXRfaW50MzIgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJcIlxuZXh0ZXJuYWwgc2V0X2ludDY0IDogYnl0ZXMgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDY0XCJcblxuZXh0ZXJuYWwgc3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgc3dhcDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG5leHRlcm5hbCBzd2FwNjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxuXG5sZXQgYWRkX2ludDggYiB4ID1cbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2xlbmd0aDsgYnVmZmVyfSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgMSBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgMTtcbiAgICBzZXRfaW50OCBiLmlubmVyLmJ1ZmZlciBiLnBvc2l0aW9uIHhcbiAgKSBlbHNlXG4gICAgdW5zYWZlX3NldF9pbnQ4IGJ1ZmZlciBwb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDE2X25lIGIgeCA9XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtsZW5ndGg7IGJ1ZmZlcn0gPSBiLmlubmVyIGluXG4gIGxldCBuZXdfcG9zaXRpb24gPSBwb3NpdGlvbiArIDIgaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIDI7XG4gICAgc2V0X2ludDE2IGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24geFxuICApIGVsc2VcbiAgICB1bnNhZmVfc2V0X2ludDE2IGJ1ZmZlciBwb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDMyX25lIGIgeCA9XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtsZW5ndGg7IGJ1ZmZlcn0gPSBiLmlubmVyIGluXG4gIGxldCBuZXdfcG9zaXRpb24gPSBwb3NpdGlvbiArIDQgaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIDQ7XG4gICAgc2V0X2ludDMyIGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24geFxuICApIGVsc2VcbiAgICB1bnNhZmVfc2V0X2ludDMyIGJ1ZmZlciBwb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDY0X25lIGIgeCA9XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtsZW5ndGg7IGJ1ZmZlcn0gPSBiLmlubmVyIGluXG4gIGxldCBuZXdfcG9zaXRpb24gPSBwb3NpdGlvbiArIDggaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIDg7XG4gICAgc2V0X2ludDY0IGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24geFxuICApIGVsc2VcbiAgICB1bnNhZmVfc2V0X2ludDY0IGJ1ZmZlciBwb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDE2X2xlIGIgeCA9XG4gIGFkZF9pbnQxNl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiB4IGVsc2UgeClcblxubGV0IGFkZF9pbnQxNl9iZSBiIHggPVxuICBhZGRfaW50MTZfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDE2IHgpXG5cbmxldCBhZGRfaW50MzJfbGUgYiB4ID1cbiAgYWRkX2ludDMyX25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIHggZWxzZSB4KVxuXG5sZXQgYWRkX2ludDMyX2JlIGIgeCA9XG4gIGFkZF9pbnQzMl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMzIgeClcblxubGV0IGFkZF9pbnQ2NF9sZSBiIHggPVxuICBhZGRfaW50NjRfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgeCBlbHNlIHgpXG5cbmxldCBhZGRfaW50NjRfYmUgYiB4ID1cbiAgYWRkX2ludDY0X25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXA2NCB4KVxuXG5sZXQgYWRkX3VpbnQ4ID0gYWRkX2ludDhcbmxldCBhZGRfdWludDE2X25lID0gYWRkX2ludDE2X25lXG5sZXQgYWRkX3VpbnQxNl9sZSA9IGFkZF9pbnQxNl9sZVxubGV0IGFkZF91aW50MTZfYmUgPSBhZGRfaW50MTZfYmVcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9ic3dhcDE2IiwiY2FtbF9ieXRlc19nZXQiLCJjYW1sX2J5dGVzX3NldCIsImNhbWxfYnl0ZXNfc2V0MTYiLCJjYW1sX2J5dGVzX3NldDMyIiwiY2FtbF9ieXRlc19zZXQ2NCIsImNhbWxfYnl0ZXNfdW5zYWZlX3NldCIsImNhbWxfY3JlYXRlX2J5dGVzIiwiY2FtbF9pbnQzMl9ic3dhcCIsImNhbWxfaW50NjRfYnN3YXAiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX21sX2J5dGVzX2xlbmd0aCIsImNhbWxfbWxfc3RyaW5nX2xlbmd0aCIsImNhbWxfc3RyaW5nX2dldCIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWJfQnl0ZXMiLCJTdGRsaWJfU3lzIiwiU3RkbGliX1NlcSIsIlN0ZGxpYiIsIlN0ZGxpYl9TdHJpbmciLCJBc3NlcnRfZmFpbHVyZSIsImR1bW15IiwiY3JlYXRlIiwibiIsInMiLCJjb250ZW50cyIsImIiLCJ0b19ieXRlcyIsInN1YiIsIm9mcyIsImxlbiIsImJsaXQiLCJzcmMiLCJzcmNvZmYiLCJkc3QiLCJkc3RvZmYiLCJudGgiLCJwb3NpdGlvbiIsIm1hdGNoIiwibGVuZ3RoIiwiYnVmZmVyIiwiY2xlYXIiLCJyZXNldCIsImlubmVyIiwicmVzaXplIiwibW9yZSIsIm9sZF9wb3MiLCJvbGRfbGVuIiwibmV3X2xlbiIsIm5ld19idWZmZXIiLCJhZGRfY2hhciIsImMiLCJwb3MiLCJhZGRfdXRmXzhfdWNoYXIiLCJ1IiwidWNoYXJfdXRmXzhfYnl0ZV9sZW5ndGhfbWF4IiwidWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heCIsImFkZF91dGZfMTZiZV91Y2hhciIsImFkZF91dGZfMTZsZV91Y2hhciIsImFkZF9zdWJzdHJpbmciLCJvZmZzZXQiLCJuZXdfcG9zaXRpb24iLCJhZGRfc3ViYnl0ZXMiLCJieXRlcyIsImFkZF9zdHJpbmciLCJhZGRfYnl0ZXMiLCJhZGRfYnVmZmVyIiwiYnMiLCJhZGRfY2hhbm5lbCIsImljIiwidG9fcmVhZCIsImJ1ZiIsImFscmVhZHlfcmVhZCIsInIiLCJvdXRwdXRfYnVmZmVyIiwib2MiLCJhZGRfc3Vic3RpdHV0ZSIsImxpbSIsInByZXZpb3VzIiwiaSIsInN0YXJ0Iiwib3BlbmluZyIsInN0b3AiLCJ2YWwiLCJuZXdfc3RhcnQiLCJjbG9zaW5nIiwiayIsImV4biIsIm5leHRfaSIsImlkZW50IiwidHJ1bmNhdGUiLCJ0b19zZXEiLCJhdXgiLCJwYXJhbSIsIngiLCJ0b19zZXFpIiwiYWRkX3NlcSIsInNlcSIsIm9mX3NlcSIsImFkZF9pbnQ4IiwiYWRkX2ludDE2X25lIiwiYWRkX2ludDMyX25lIiwiYWRkX2ludDY0X25lIiwiYWRkX2ludDE2X2xlIiwiYWRkX2ludDE2X2JlIiwiYWRkX2ludDMyX2xlIiwiYWRkX2ludDMyX2JlIiwiYWRkX2ludDY0X2xlIiwiYWRkX2ludDY0X2JlIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxpQkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsd0JBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLElBQUFDLHVCQUFBO0FBQUEsSUFBQUMsd0JBQUE7QUFBQSxJQUFBQyxrQkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsUUFBQTtBQUFBLFlBQUFDLE9BQUFDO0FBQUFBO0FBQUFBLEtBQUFBLE1Dd0NDO0FBQUEsS0FBQUEsTUFDQTtBQUFBLEtBQUFDLElBQ1E7QUFBQSxJQUNSO0FBQUEsR0FBc0U7QUFBQSxZQUFBQyxTQUFBQyxHQUV0RCxtREFBNEM7QUFBQSxZQUFBQyxTQUFBRCxHQUM1QyxtREFBcUM7QUFBQSxZQUFBRSxJQUFBRixHQUFBRyxLQUFBQztBQUFBQSxJQUdwRDtBQUFBLEtBRUssb0RBQXVDO0FBQUEsSUFEdkMseUNBQ3VDO0FBQUE7QUFBQSxZQUFBQyxLQUFBQyxLQUFBQyxRQUFBQyxLQUFBQyxRQUFBTDtBQUFBQSxJQUk1QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEtBSUUsdUVBQWlEO0FBQUEsSUFGOUMsMENBRThDO0FBQUE7QUFBQSxZQUFBTSxJQUFBVixHQUFBRztBQUFBQSxRQUFBUSxXQUluRCxNQUFBQyxRQUNBLE1BQUFDLFNBQUEsVUFBQUMsU0FBQTtBQUFBLElBQ0E7QUFBQSxLQUVLLGlEQUEyQjtBQUFBLElBRC9CLHlDQUMrQjtBQUFBO0FBQUEsWUFBQUQsT0FBQWIsR0FHbkIsWUFBVTtBQUFBLFlBQUFlLE1BQUFmLEdBRVgsbUJBQWU7QUFBQSxZQUFBZ0IsTUFBQWhCO0FBQUFBLElBRzNCO0FBQUEsUUFBQWlCLFFBQ0E7QUFBQSxJQUdBO0FBQUE7QUFBQSxHQUFnQjtBQUFBLFlBQUFDLE9BQUFsQixHQUFBbUI7QUFBQUEsUUFBQUMsVUFPaEIsTUFBQUMsVUFDQSxTQUFBQyxVQUVBO0FBQUE7QUFBQTtBQUFBLEtBQW1DO0FBQUE7QUFBQTtBQUFBLEtBQUFBO0FBQUFBLE9BQ25DO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGFBR087QUFBQTtBQUFBLEtBQUFDLGFBRVU7QUFBQSxJQUdqQjtBQUFBLElBQW1EO0FBQUEsR0FDRTtBQUFBLFlBQUFDLFNBQUF4QixHQUFBeUI7QUFBQUEsUUFBQUMsTUFhckQsTUFBQWQsUUFDQSxNQUFBQyxTQUFBLFVBQUFDLFNBQUE7QUFBQSxJQUNBO0FBQUEsS0FDRTtBQUFBLEtBQ0E7QUFBQTtBQUFBO0FBQUEsS0FFQTtBQUFBLElBQ0Y7QUFBQTtBQUFBLEdBQXFCO0FBQUEsWUFBQWEsZ0JBQUEzQixHQUFBNEI7QUFBQUEsSUFNckI7QUFBQSxTQUFBRixNQUFBLE1BQUFHLDhCRDdIRjtBQUFBLEtDOEhFLG1CQUE4QjtBQUFBLFNBQUFoQyxJQUN0QjtBQUFBLEtBQ1IsWUFFSztBQUFBLEtBREM7QUFBQTtBQUFBLEdBQ3NCO0FBQUEsT0FBQWlDLCtCRGxJOUI7QUFBQSxZQUFBQyxtQkFBQS9CLEdBQUE0QjtBQUFBQSxJQ3FJRTtBQUFBLFNBQUFGLE1BQUE7QUFBQSxLQUNBLG1CQUE4QjtBQUFBLFNBQUE3QixJQUN0QjtBQUFBLEtBQ1IsWUFFSztBQUFBLEtBREM7QUFBQTtBQUFBLEdBQ3NCO0FBQUEsWUFBQW1DLG1CQUFBaEMsR0FBQTRCO0FBQUFBLElBRzVCO0FBQUEsU0FBQUYsTUFBQTtBQUFBLEtBQ0EsbUJBQThCO0FBQUEsU0FBQTdCLElBQ3RCO0FBQUEsS0FDUixZQUVLO0FBQUEsS0FEQztBQUFBO0FBQUEsR0FDc0I7QUFBQSxZQUFBb0MsY0FBQWpDLEdBQUFGLEdBQUFvQyxRQUFBOUI7QUFBQUEsUUFBQSxJQUc1QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsVUFDSztBQUFBO0FBQUEsS0FBQU8sV0FDTDtBQUFBLEtBQUFDLFFBQ0E7QUFBQSxLQUFBQyxTQUFBO0FBQUEsS0FBQUMsU0FBQTtBQUFBLEtBQUFxQixlQUNBO0FBQUEsSUFDQTtBQUFBLEtBQ0U7QUFBQSxLQUNBO0FBQUE7QUFBQTtBQUFBLEtBRUE7QUFBQSxJQUNGO0FBQUE7QUFBQSxHQUEwQjtBQUFBLFlBQUFDLGFBQUFwQyxHQUFBcUMsT0FBQUgsUUFBQTlCO0FBQUFBLFFBQUEsSUFHMUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxVQUNLO0FBQUE7QUFBQSxLQUFBTyxXQUNMO0FBQUEsS0FBQUMsUUFDQTtBQUFBLEtBQUFDLFNBQUE7QUFBQSxLQUFBQyxTQUFBO0FBQUEsS0FBQXFCLGVBQ0E7QUFBQSxJQUNBO0FBQUEsS0FDRTtBQUFBLEtBQ0E7QUFBQTtBQUFBO0FBQUEsS0FFQTtBQUFBLElBQ0Y7QUFBQTtBQUFBLEdBQTBCO0FBQUEsWUFBQUcsV0FBQXRDLEdBQUFGO0FBQUFBLElBRzFCLHVEQUFxQztBQUFBO0FBQUEsWUFBQXlDLFVBQUF2QyxHQUFBcUM7QUFBQUEsSUFHckMsNkRBQTJDO0FBQUE7QUFBQSxZQUFBRyxXQUFBeEMsR0FBQXlDLElBRzNDLDBDQUE0QztBQUFBLFlBQUFDLFlBQUExQyxHQUFBMkMsSUFBQUM7QUFBQUEsUUFBQSxJQTBCNUM7QUFBQSxVQUNFO0FBQUEsSUFQRixxQ0FBMEM7QUFBQTtBQUFBLEtBQUF6QyxRQUMxQztBQUFBLEtBQUEwQyxNQUFBO0FBQUEsS0FBQUMsZUFMRztBQUFBLEtBQUEzQyxNQUFBO0FBQUEsS0FBQXlDLFVBQUE7QUFBQTtBQUFBLEtBWEQ7QUFBQSxVQUFBRyxJQUVVO0FBQUEsTUFDUjtBQUFBO0FBQUEsUUFBQUQsaUJBQ0s7QUFBQSxRQUFBM0MsUUFFSDtBQUFBLFFBQUF5QyxZQUNBO0FBQUEsT0FDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxLQVNOO0FBQUEsS0FTQTtBQUFBLE1BQWdCO0FBQUEsS0FDaEI7QUFBQTtBQUFBLEdBQUU7QUFBQSxZQUFBSSxjQUFBQyxJQUFBakQ7QUFBQUEsSUFHRixrREFBcUM7QUFBQTtBQUFBLFdEeE52QztBQUFBLFlBQUFrRCxlQUFBbEQsR0FBQWQsR0FBQVk7QUFBQUEsUUFBQXFELFFDc1FFLDBCQUFBQyxXQXVCQSxJQUFBQyxNQUFBO0FBQUE7QUFBQSxLQXJCRTtBQUFBLGNBb0JBO0FBQUEsaUJBQXdCLHlCQUNmO0FBQUE7QUFBQSxTQUFBRCxhQXBCRDtBQUFBLEtBQUs7QUFBQSxNQUNXO0FBQUEsT0FDbkI7QUFBQSxXQUFBQyxNQUFrQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsV0FBQUMsUUFHbEI7QUFBQSxPQUNBO0FBQUEsUUF6QlAsbUJBQXFCO0FBQUEsWUFBQUMsVUFDZjtBQUFBO0FBQUE7QUFBQSxTQUFTO0FBQUEsY0FBQUosUUFMZiwwQkFBQUUsTUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBSkU7QUFBQSxpQkFBQXpDLFFBQ007QUFBQSxhQUFLO0FBQUE7QUFBQSxvQ0FBQTRDLFNBQUE7QUFBQTtBQUFBLHdDQUFBQSxTQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsa0NBQUFBLFNBQUE7QUFBQTtBQUFBLHNDQUFBQSxTQUFBO0FBQUEsaUJBQUFILE1BQ3FDO0FBQUE7QUFBQTtBQUFBO0FBQUEsZ0JBQUFHLFNBRmhEO0FBQUE7QUFBQSxXQWtCQztBQUFBLFlBQXFCO0FBQUE7QUFBQSxZQUFBQztBQUFBQSxjQUNZO0FBQUEsZUFBakM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGFBQUFDLFlBUEE7QUFBQSxTQWhDUztBQUFBLGNBQUFDLFVBQ0g7QUFBQTtBQUFBLFVBREc7QUFBQSxXQUdMO0FBQUEsY0FBQUEsVUFERTtBQUFBO0FBQUEsYUFBQVIsTUFjVCwwQkFBQVMsSUFBQSxHQUFBSixPQUFBO0FBQUE7QUFBQSxVQUxFLGdCQUFpQjtBQUFBLFVBQ2Q7QUFBQSxlQUFBSCxJQUFxQixjQUFBTyxNQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsa0JBQ3JCO0FBQUEsV0FDRDtBQUFBO0FBQUEsYUFBQUg7QUFBQUEsZUFvQndDO0FBQUEsZ0JBQXpDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxlQUFBSixNQXBCc0IsY0FBQU8sTUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLG1CQUFBUCxNQUNsQjtBQUFBO0FBQUE7QUFBQTtBQUFBLGFBQUFRO0FBQUFBLFlBQUFBLE1Eek9UO0FBQUE7QUFBQSxRQ29SVztBQUFBLFFBQWM7QUFBQTtBQUFBO0FBQUE7QUFBQSxXQUFBQyxTQUxoQixRQUFBQyxRQUFBO0FBQUEsT0FFRSxjQUFhO0FBQUEsT0FBUztBQUFBO0FBQUE7QUFBQTtBQUFBLE1BT3hCLG9CQUF3QjtBQUFBLE1BQ3hCLHNCQUF3QjtBQUFBLFVBQUFWLE1BQ3hCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxHQUdJO0FBQUEsWUFBQVcsU0FBQWhFLEdBQUFJO0FBQUFBLElBR1QsNEJBR0U7QUFBQSxJQUZBLDhDQUVpQjtBQUFBO0FBQUEsWUFBQTZELE9BQUFqRTtBQUFBQSxhQUFBa0UsSUFBQWIsR0FBQWM7QUFBQUEsS0FPbkIsY0FBd0I7QUFBQSxTQUFBQyxJQUVkLGdDQUNLO0FBQUEsS0FBUywwQkFBVCxtQkFBUztBQUFBLElBQUM7QUFBQSxJQUUzQixtQkQvU0Ysa0JDK1NFO0FBQUEsR0FBSztBQUFBLFlBQUFDLFFBQUFyRTtBQUFBQSxhQUFBa0UsSUFBQWIsR0FBQWM7QUFBQUEsS0FLSCxjQUF3QjtBQUFBLFNBQUFDLElBRWQsZ0NBQ1M7QUFBQSxLQUFTLGtDQUFULG1CQUFTO0FBQUEsSUFBQztBQUFBLElBRS9CLG1CRHpURixrQkN5VEU7QUFBQSxHQUFLO0FBQUEsWUFBQUUsUUFBQXRFLEdBQUF1RTtBQUFBQSxJQUVrQyw0Q0FBWiw2QkFBZ0I7QUFBQTtBQUFBLFlBQUFDLE9BQUFuQixPQUFBckQsSUFHbkMsWUFDUixlQUFXLFNBQ1Y7QUFBQSxZQUFBeUUsU0FBQXpFLEdBQUFvRTtBQUFBQTtBQUFBQSxLQUFBekQsV0FtQkQ7QUFBQSxLQUFBQyxRQUNBO0FBQUEsS0FBQUMsU0FBQTtBQUFBLEtBQUFDLFNBQUE7QUFBQSxLQUFBcUIsZUFDQTtBQUFBLElBQ0E7QUFBQSxLQUNFO0FBQUEsS0FDQTtBQUFBO0FBQUE7QUFBQSxLQUVBO0FBQUEsSUFDRjtBQUFBO0FBQUEsR0FBMEI7QUFBQSxZQUFBdUMsYUFBQTFFLEdBQUFvRTtBQUFBQTtBQUFBQSxLQUFBekQsV0FHMUI7QUFBQSxLQUFBQyxRQUNBO0FBQUEsS0FBQUMsU0FBQTtBQUFBLEtBQUFDLFNBQUE7QUFBQSxLQUFBcUIsZUFDQTtBQUFBLElBQ0E7QUFBQSxLQUNFO0FBQUEsS0FDQTtBQUFBO0FBQUE7QUFBQSxLQUVBO0FBQUEsSUFDRjtBQUFBO0FBQUEsR0FBMEI7QUFBQSxZQUFBd0MsYUFBQTNFLEdBQUFvRTtBQUFBQTtBQUFBQSxLQUFBekQsV0FHMUI7QUFBQSxLQUFBQyxRQUNBO0FBQUEsS0FBQUMsU0FBQTtBQUFBLEtBQUFDLFNBQUE7QUFBQSxLQUFBcUIsZUFDQTtBQUFBLElBQ0E7QUFBQSxLQUNFO0FBQUEsS0FDQTtBQUFBO0FBQUE7QUFBQSxLQUVBO0FBQUEsSUFDRjtBQUFBO0FBQUEsR0FBMEI7QUFBQSxZQUFBeUMsYUFBQTVFLEdBQUFvRTtBQUFBQTtBQUFBQSxLQUFBekQsV0FHMUI7QUFBQSxLQUFBQyxRQUNBO0FBQUEsS0FBQUMsU0FBQTtBQUFBLEtBQUFDLFNBQUE7QUFBQSxLQUFBcUIsZUFDQTtBQUFBLElBQ0E7QUFBQSxLQUNFO0FBQUEsS0FDQTtBQUFBO0FBQUE7QUFBQSxLQUVBO0FBQUEsSUFDRjtBQUFBO0FBQUEsR0FBMEI7QUFBQSxZQUFBMEMsYUFBQTdFLEdBQUFvRTtBQUFBQSxRQUFBLElBRzFCLGlCQUF1QztBQUFBLElBQXZDLHlCQUF1RDtBQUFBO0FBQUEsWUFBQVUsYUFBQTlFLEdBQUFvRTtBQUFBQSxRQUFBQSxNQUd2RCxxQkFBOEM7QUFBQSxJQUE5QywyQkFBdUQ7QUFBQTtBQUFBLFlBQUFXLGFBQUEvRSxHQUFBb0U7QUFBQUEsUUFBQSxJQUd2RCxpQkFBdUM7QUFBQSxJQUF2Qyx5QkFBdUQ7QUFBQTtBQUFBLFlBQUFZLGFBQUFoRixHQUFBb0U7QUFBQUEsUUFBQUEsTUFHdkQscUJBQThDO0FBQUEsSUFBOUMsMkJBQXVEO0FBQUE7QUFBQSxZQUFBYSxhQUFBakYsR0FBQW9FO0FBQUFBLFFBQUEsSUFHdkQsaUJBQXVDO0FBQUEsSUFBdkMseUJBQXVEO0FBQUE7QUFBQSxZQUFBYyxhQUFBbEYsR0FBQW9FO0FBQUFBLFFBQUFBLE1BR3ZELHFCQUE4QztBQUFBLElBQTlDLDJCQUF1RDtBQUFBO0FBQUEsR0Q5WXpEIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MTg3NTYsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9tdXRleC5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBYYXZpZXIgTGVyb3kgYW5kIFBhc2NhbCBDdW9xLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTUgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0XG5leHRlcm5hbCBjcmVhdGU6IHVuaXQgLT4gdCA9IFwiY2FtbF9tbF9tdXRleF9uZXdcIlxuZXh0ZXJuYWwgbG9jazogdCAtPiB1bml0ID0gXCJjYW1sX21sX211dGV4X2xvY2tcIlxuZXh0ZXJuYWwgdHJ5X2xvY2s6IHQgLT4gYm9vbCA9IFwiY2FtbF9tbF9tdXRleF90cnlfbG9ja1wiXG5leHRlcm5hbCB1bmxvY2s6IHQgLT4gdW5pdCA9IFwiY2FtbF9tbF9tdXRleF91bmxvY2tcIlxuXG4oKiBwcml2YXRlIHJlLWV4cG9ydCAqKVxuZXh0ZXJuYWwgcmVyYWlzZSA6IGV4biAtPiAnYSA9IFwiJXJlcmFpc2VcIlxuXG4oKiBjYW5ub3QgaW5saW5lLCBvdGhlcndpc2UgZmxhbWJkYSBtaWdodCBtb3ZlIGNvZGUgYXJvdW5kLiAqKVxubGV0W0BpbmxpbmUgbmV2ZXJdIHByb3RlY3QgbSBmID1cbiAgbG9jayBtO1xuICBtYXRjaCBmKCkgd2l0aFxuICB8IHggLT5cbiAgICB1bmxvY2sgbTsgeFxuICB8IGV4Y2VwdGlvbiBlIC0+XG4gICAgKCogTk9URTogW3VubG9ja10gZG9lcyBub3QgcG9sbCBmb3IgYXN5bmNocm9ub3VzIGV4Y2VwdGlvbnMgKilcbiAgICB1bmxvY2sgbTtcbiAgICByZXJhaXNlIGVcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlIiwiY2FtbF9tbF9tdXRleF9sb2NrIiwiY2FtbF9tbF9tdXRleF91bmxvY2siLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsInByb3RlY3QiLCJtIiwieCIsImUiLCJTdGRsaWJfTXV0ZXgiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxJQUFBQyxxQkFBQTtBQUFBLElBQUFDLHVCQUFBO0FBQUEsSUFBQUMsc0JBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsUUFBQUMsR0FBQUg7QUFBQUEsSUMwQkU7QUFBQSxJQUFNLFFBQUFJLElBQ0E7QUFBQSxVQUFBQztBQUFBQSxTQUFBQSxJRDNCUjtBQUFBLEtDZ0NJO0FBQUEsS0FBUTtBQUFBO0FBQUEsSUFIUjtBQUFBLElBQVE7QUFBQSxHQUlDO0FBQUE7QUFBQSxJQUFBQztBQUFBQSxNRGpDYiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjE4Nzk2LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJTdGRsaWJfQ29uZGl0aW9uIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDO0FBQUFBLE1BQUEiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjoxODgxNCwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL2RvbWFpbi5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgS0MgU2l2YXJhbWFrcmlzaG5hbiwgSW5kaWFuIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBNYWRyYXMgICAgICAgKilcbigqICAgICAgICAgICAgICAgICBTdGVwaGVuIERvbGFuLCBVbml2ZXJzaXR5IG9mIENhbWJyaWRnZSAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgIFRvbSBLZWxseSwgT0NhbWwgTGFicyBDb25zdWx0YW5jeSAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTkgSW5kaWFuIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBNYWRyYXMgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjEgT0NhbWwgTGFicyBDb25zdWx0YW5jeSBMdGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIFJhdyA9IHN0cnVjdFxuICAoKiBMb3ctbGV2ZWwgcHJpbWl0aXZlcyBwcm92aWRlZCBieSB0aGUgcnVudGltZSAqKVxuICB0eXBlIHQgPSBwcml2YXRlIGludFxuXG4gICgqIFRoZSBsYXlvdXRzIG9mIFtzdGF0ZV0gYW5kIFt0ZXJtX3N5bmNdIGFyZSBoYXJkLWNvZGVkIGluXG4gICAgIFtydW50aW1lL2RvbWFpbi5jXSAqKVxuXG4gIHR5cGUgJ2Egc3RhdGUgPVxuICAgIHwgUnVubmluZ1xuICAgIHwgRmluaXNoZWQgb2YgKCdhLCBleG4pIHJlc3VsdCBbQHdhcm5pbmcgXCItdW51c2VkLWNvbnN0cnVjdG9yXCJdXG5cbiAgdHlwZSAnYSB0ZXJtX3N5bmMgPSB7XG4gICAgKCogcHJvdGVjdGVkIGJ5IFttdXRdICopXG4gICAgbXV0YWJsZSBzdGF0ZSA6ICdhIHN0YXRlIFtAd2FybmluZyBcIi11bnVzZWQtZmllbGRcIl0gO1xuICAgIG11dCA6IE11dGV4LnQgO1xuICAgIGNvbmQgOiBDb25kaXRpb24udCA7XG4gIH1cblxuICBleHRlcm5hbCBzcGF3biA6ICh1bml0IC0+ICdhKSAtPiAnYSB0ZXJtX3N5bmMgLT4gdFxuICAgID0gXCJjYW1sX2RvbWFpbl9zcGF3blwiXG4gIGV4dGVybmFsIHNlbGYgOiB1bml0IC0+IHRcbiAgICA9IFwiY2FtbF9tbF9kb21haW5faWRcIiBbQEBub2FsbG9jXVxuICBleHRlcm5hbCBjcHVfcmVsYXggOiB1bml0IC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tbF9kb21haW5fY3B1X3JlbGF4XCJcbiAgZXh0ZXJuYWwgZ2V0X3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudDogdW5pdCAtPiBpbnRcbiAgICA9IFwiY2FtbF9yZWNvbW1lbmRlZF9kb21haW5fY291bnRcIiBbQEBub2FsbG9jXVxuZW5kXG5cbmxldCBjcHVfcmVsYXggKCkgPSBSYXcuY3B1X3JlbGF4ICgpXG5cbnR5cGUgaWQgPSBSYXcudFxuXG50eXBlICdhIHQgPSB7XG4gIGRvbWFpbiA6IFJhdy50O1xuICB0ZXJtX3N5bmMgOiAnYSBSYXcudGVybV9zeW5jO1xufVxuXG5tb2R1bGUgRExTID0gc3RydWN0XG5cbiAgbW9kdWxlIE9ial9vcHQgOiBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgbm9uZSA6IHRcbiAgICB2YWwgc29tZSA6ICdhIC0+IHRcbiAgICB2YWwgaXNfc29tZSA6IHQgLT4gYm9vbFxuXG4gICAgKCoqIFt1bnNhZmVfZ2V0IG9ial0gbWF5IG9ubHkgYmUgY2FsbGVkIHNhZmVseVxuICAgICAgICBpZiBbaXNfc29tZV0gaXMgdHJ1ZS5cblxuICAgICAgICBbdW5zYWZlX2dldCAoc29tZSB2KV0gaXMgZXF1aXZhbGVudCB0b1xuICAgICAgICBbT2JqLm9iaiAoT2JqLnJlcHIgdildLiAqKVxuICAgIHZhbCB1bnNhZmVfZ2V0IDogdCAtPiAnYVxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBPYmoudFxuICAgIGxldCBub25lID0gT2JqLnJlcHIgKHJlZiAwKVxuICAgIGxldCBzb21lIHYgPSBPYmoucmVwciB2XG4gICAgbGV0IGlzX3NvbWUgb2JqID0gKG9iaiAhPSBub25lKVxuICAgIGxldCB1bnNhZmVfZ2V0IG9iaiA9IE9iai5vYmogb2JqXG4gIGVuZFxuXG4gIHR5cGUgZGxzX3N0YXRlID0gT2JqX29wdC50IGFycmF5XG5cbiAgZXh0ZXJuYWwgZ2V0X2Rsc19zdGF0ZSA6IHVuaXQgLT4gZGxzX3N0YXRlID0gXCIlZGxzX2dldFwiXG5cbiAgZXh0ZXJuYWwgc2V0X2Rsc19zdGF0ZSA6IGRsc19zdGF0ZSAtPiB1bml0ID1cbiAgICBcImNhbWxfZG9tYWluX2Rsc19zZXRcIiBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGNvbXBhcmVfYW5kX3NldF9kbHNfc3RhdGUgOiBkbHNfc3RhdGUgLT4gZGxzX3N0YXRlIC0+IGJvb2wgPVxuICAgIFwiY2FtbF9kb21haW5fZGxzX2NvbXBhcmVfYW5kX3NldFwiIFtAQG5vYWxsb2NdXG5cbiAgbGV0IGNyZWF0ZV9kbHMgKCkgPVxuICAgIGxldCBzdCA9IEFycmF5Lm1ha2UgOCBPYmpfb3B0Lm5vbmUgaW5cbiAgICBzZXRfZGxzX3N0YXRlIHN0XG5cbiAgbGV0IF8gPSBjcmVhdGVfZGxzICgpXG5cbiAgdHlwZSAnYSBrZXkgPSBpbnQgKiAodW5pdCAtPiAnYSlcblxuICBsZXQga2V5X2NvdW50ZXIgPSBBdG9taWMubWFrZSAwXG5cbiAgdHlwZSBrZXlfaW5pdGlhbGl6ZXIgPVxuICAgIEtJOiAnYSBrZXkgKiAoJ2EgLT4gJ2EpIC0+IGtleV9pbml0aWFsaXplclxuXG4gIGxldCBwYXJlbnRfa2V5cyA9IEF0b21pYy5tYWtlIChbXSA6IGtleV9pbml0aWFsaXplciBsaXN0KVxuXG4gIGxldCByZWMgYWRkX3BhcmVudF9rZXkga2kgPVxuICAgIGxldCBsID0gQXRvbWljLmdldCBwYXJlbnRfa2V5cyBpblxuICAgIGlmIG5vdCAoQXRvbWljLmNvbXBhcmVfYW5kX3NldCBwYXJlbnRfa2V5cyBsIChraSA6OiBsKSlcbiAgICB0aGVuIGFkZF9wYXJlbnRfa2V5IGtpXG5cbiAgbGV0IG5ld19rZXkgP3NwbGl0X2Zyb21fcGFyZW50IGluaXRfb3JwaGFuID1cbiAgICBsZXQgaWR4ID0gQXRvbWljLmZldGNoX2FuZF9hZGQga2V5X2NvdW50ZXIgMSBpblxuICAgIGxldCBrID0gKGlkeCwgaW5pdF9vcnBoYW4pIGluXG4gICAgYmVnaW4gbWF0Y2ggc3BsaXRfZnJvbV9wYXJlbnQgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBzcGxpdCAtPiBhZGRfcGFyZW50X2tleSAoS0koaywgc3BsaXQpKVxuICAgIGVuZDtcbiAgICBrXG5cbiAgKCogSWYgbmVjZXNzYXJ5LCBncm93IHRoZSBjdXJyZW50IGRvbWFpbidzIGxvY2FsIHN0YXRlIGFycmF5IHN1Y2ggdGhhdCBbaWR4XVxuICAgKiBpcyBhIHZhbGlkIGluZGV4IGluIHRoZSBhcnJheS4gKilcbiAgbGV0IHJlYyBtYXliZV9ncm93IGlkeCA9XG4gICAgbGV0IHN0ID0gZ2V0X2Rsc19zdGF0ZSAoKSBpblxuICAgIGxldCBzeiA9IEFycmF5Lmxlbmd0aCBzdCBpblxuICAgIGlmIGlkeCA8IHN6IHRoZW4gc3RcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgcmVjIGNvbXB1dGVfbmV3X3NpemUgcyA9XG4gICAgICAgIGlmIGlkeCA8IHMgdGhlbiBzIGVsc2UgY29tcHV0ZV9uZXdfc2l6ZSAoMiAqIHMpXG4gICAgICBpblxuICAgICAgbGV0IG5ld19zeiA9IGNvbXB1dGVfbmV3X3NpemUgc3ogaW5cbiAgICAgIGxldCBuZXdfc3QgPSBBcnJheS5tYWtlIG5ld19zeiBPYmpfb3B0Lm5vbmUgaW5cbiAgICAgIEFycmF5LmJsaXQgc3QgMCBuZXdfc3QgMCBzejtcbiAgICAgICgqIFdlIHdhbnQgYSBpbXBsZW1lbnRhdGlvbiB0aGF0IGlzIHNhZmUgd2l0aCByZXNwZWN0IHRvXG4gICAgICAgICBzaW5nbGUtZG9tYWluIG11bHRpLXRocmVhZGluZzogcmV0cnkgaWYgdGhlIERMUyBzdGF0ZSBoYXNcbiAgICAgICAgIGNoYW5nZWQgdW5kZXIgb3VyIGZlZXQuXG4gICAgICAgICBOb3RlIHRoYXQgdGhlIG51bWJlciBvZiByZXRyaWVzIHdpbGwgYmUgdmVyeSBzbWFsbCBpblxuICAgICAgICAgY29udGVuZGVkIHNjZW5hcmlvcywgYXMgdGhlIGFycmF5IG9ubHkgZ3Jvd3MsIHdpdGhcbiAgICAgICAgIGV4cG9uZW50aWFsIHJlc2l6aW5nLiAqKVxuICAgICAgaWYgY29tcGFyZV9hbmRfc2V0X2Rsc19zdGF0ZSBzdCBuZXdfc3RcbiAgICAgIHRoZW4gbmV3X3N0XG4gICAgICBlbHNlIG1heWJlX2dyb3cgaWR4XG4gICAgZW5kXG5cbiAgbGV0IHNldCAodHlwZSBhKSAoaWR4LCBfaW5pdCkgKHggOiBhKSA9XG4gICAgbGV0IHN0ID0gbWF5YmVfZ3JvdyBpZHggaW5cbiAgICAoKiBbU3lzLm9wYXF1ZV9pZGVudGl0eV0gZW5zdXJlcyB0aGF0IGZsYW1iZGEgZG9lcyBub3QgbG9vayBhdCB0aGUgdHlwZSBvZlxuICAgICAqIFt4XSwgd2hpY2ggbWF5IGJlIGEgW2Zsb2F0XSBhbmQgY29uY2x1ZGUgdGhhdCB0aGUgW3N0XSBpcyBhIGZsb2F0IGFycmF5LlxuICAgICAqIFdlIGRvIG5vdCB3YW50IE9DYW1sJ3MgZmxvYXQgYXJyYXkgb3B0aW1pc2F0aW9uIGtpY2tpbmcgaW4gaGVyZS4gKilcbiAgICBzdC4oaWR4KSA8LSBPYmpfb3B0LnNvbWUgKFN5cy5vcGFxdWVfaWRlbnRpdHkgeClcblxuXG4gIGxldFtAaW5saW5lIG5ldmVyXSBhcnJheV9jb21wYXJlX2FuZF9zZXQgYSBpIG9sZHZhbCBuZXd2YWwgPVxuICAgICgqIE5vdGU6IHdlIGNhbm5vdCB1c2UgW0Bwb2xsIGVycm9yXSBkdWUgdG8gdGhlXG4gICAgICAgYWxsb2NhdGlvbnMgb24gYS4oaSkgaW4gdGhlIERvdWJsZV9hcnJheSBjYXNlLiAqKVxuICAgIGxldCBjdXJ2YWwgPSBhLihpKSBpblxuICAgIGlmIGN1cnZhbCA9PSBvbGR2YWwgdGhlbiAoXG4gICAgICBBcnJheS51bnNhZmVfc2V0IGEgaSBuZXd2YWw7XG4gICAgICB0cnVlXG4gICAgKSBlbHNlIGZhbHNlXG5cbiAgbGV0IGdldCAodHlwZSBhKSAoKGlkeCwgaW5pdCkgOiBhIGtleSkgOiBhID1cbiAgICBsZXQgc3QgPSBtYXliZV9ncm93IGlkeCBpblxuICAgIGxldCBvYmogPSBzdC4oaWR4KSBpblxuICAgIGlmIE9ial9vcHQuaXNfc29tZSBvYmpcbiAgICB0aGVuIChPYmpfb3B0LnVuc2FmZV9nZXQgb2JqIDogYSlcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgdiA6IGEgPSBpbml0ICgpIGluXG4gICAgICBsZXQgbmV3X29iaiA9IE9ial9vcHQuc29tZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSB2KSBpblxuICAgICAgKCogQXQgdGhpcyBwb2ludCwgW3N0XSBvciBbc3QuKGlkeCldIG1heSBoYXZlIGJlZW4gY2hhbmdlZFxuICAgICAgICAgYnkgYW5vdGhlciB0aHJlYWQgb24gdGhlIHNhbWUgZG9tYWluLlxuXG4gICAgICAgICBJZiBbc3RdIGNoYW5nZWQsIGl0IHdhcyByZXNpemVkIGludG8gYSBsYXJnZXIgdmFsdWUsXG4gICAgICAgICB3ZSBjYW4ganVzdCByZXVzZSB0aGUgbmV3IHZhbHVlLlxuXG4gICAgICAgICBJZiBbc3QuKGlkeCldIGNoYW5nZWQsIHdlIGRyb3AgdGhlIGN1cnJlbnQgdmFsdWUgdG8gYXZvaWRcbiAgICAgICAgIGxldHRpbmcgb3RoZXIgdGhyZWFkcyBvYnNlcnZlIGEgJ3JldmVydCcgdGhhdCBmb3JnZXRzXG4gICAgICAgICBwcmV2aW91cyBtb2RpZmljYXRpb25zLiAqKVxuICAgICAgbGV0IHN0ID0gZ2V0X2Rsc19zdGF0ZSAoKSBpblxuICAgICAgaWYgYXJyYXlfY29tcGFyZV9hbmRfc2V0IHN0IGlkeCBvYmogbmV3X29ialxuICAgICAgdGhlbiB2XG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgICgqIGlmIHN0LihpZHgpIGNoYW5nZWQsIHNvbWVvbmUgbXVzdCBoYXZlIGluaXRpYWxpemVkXG4gICAgICAgICAgIHRoZSBrZXkgaW4gdGhlIG1lYW50aW1lLiAqKVxuICAgICAgICBsZXQgdXBkYXRlZF9vYmogPSBzdC4oaWR4KSBpblxuICAgICAgICBpZiBPYmpfb3B0LmlzX3NvbWUgdXBkYXRlZF9vYmpcbiAgICAgICAgdGhlbiAoT2JqX29wdC51bnNhZmVfZ2V0IHVwZGF0ZWRfb2JqIDogYSlcbiAgICAgICAgZWxzZSBhc3NlcnQgZmFsc2VcbiAgICAgIGVuZFxuICAgIGVuZFxuXG4gIHR5cGUga2V5X3ZhbHVlID0gS1YgOiAnYSBrZXkgKiAnYSAtPiBrZXlfdmFsdWVcblxuICBsZXQgZ2V0X2luaXRpYWxfa2V5cyAoKSA6IGtleV92YWx1ZSBsaXN0ID1cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biAoS0kgKGssIHNwbGl0KSkgLT4gS1YgKGssIChzcGxpdCAoZ2V0IGspKSkpXG4gICAgICAoQXRvbWljLmdldCBwYXJlbnRfa2V5cylcblxuICBsZXQgc2V0X2luaXRpYWxfa2V5cyAobDoga2V5X3ZhbHVlIGxpc3QpID1cbiAgICBMaXN0Lml0ZXIgKGZ1biAoS1YgKGssIHYpKSAtPiBzZXQgayB2KSBsXG5lbmRcblxuKCoqKioqKioqIElkZW50aXR5ICoqKioqKioqKiopXG5cbmxldCBnZXRfaWQgeyBkb21haW47IF8gfSA9IGRvbWFpblxuXG5sZXQgc2VsZiAoKSA9IFJhdy5zZWxmICgpXG5cbmxldCBpc19tYWluX2RvbWFpbiAoKSA9IChzZWxmICgpIDo+IGludCkgPSAwXG5cbmV4dGVybmFsIHNlbGZfaW5kZXggOiB1bml0IC0+IGludFxuICA9IFwiY2FtbF9tbF9kb21haW5faW5kZXhcIiBbQEBub2FsbG9jXVxuXG4oKioqKioqKiogQ2FsbGJhY2tzICoqKioqKioqKiopXG5cbigqIGZpcnN0IHNwYXduLCBkb21haW4gc3RhcnR1cCBhbmQgYXQgZXhpdCBmdW5jdGlvbmFsaXR5ICopXG5sZXQgZmlyc3RfZG9tYWluX3NwYXduZWQgPSBBdG9taWMubWFrZSBmYWxzZVxuXG5sZXQgZmlyc3Rfc3Bhd25fZnVuY3Rpb24gPSByZWYgKGZ1biAoKSAtPiAoKSlcblxubGV0IGJlZm9yZV9maXJzdF9zcGF3biBmID1cbiAgaWYgQXRvbWljLmdldCBmaXJzdF9kb21haW5fc3Bhd25lZCB0aGVuXG4gICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJmaXJzdCBkb21haW4gYWxyZWFkeSBzcGF3bmVkXCIpXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgb2xkX2YgPSAhZmlyc3Rfc3Bhd25fZnVuY3Rpb24gaW5cbiAgICBsZXQgbmV3X2YgKCkgPSBvbGRfZiAoKTsgZiAoKSBpblxuICAgIGZpcnN0X3NwYXduX2Z1bmN0aW9uIDo9IG5ld19mXG4gIGVuZFxuXG5sZXQgZG9fYmVmb3JlX2ZpcnN0X3NwYXduICgpID1cbiAgaWYgbm90IChBdG9taWMuZ2V0IGZpcnN0X2RvbWFpbl9zcGF3bmVkKSB0aGVuIGJlZ2luXG4gICAgQXRvbWljLnNldCBmaXJzdF9kb21haW5fc3Bhd25lZCB0cnVlO1xuICAgICFmaXJzdF9zcGF3bl9mdW5jdGlvbigpO1xuICAgICgqIFJlbGVhc2UgdGhlIG9sZCBmdW5jdGlvbiAqKVxuICAgIGZpcnN0X3NwYXduX2Z1bmN0aW9uIDo9IChmdW4gKCkgLT4gKCkpXG4gIGVuZFxuXG5sZXQgYXRfZXhpdF9rZXkgPSBETFMubmV3X2tleSAoZnVuICgpIC0+IChmdW4gKCkgLT4gKCkpKVxuXG5sZXQgYXRfZXhpdCBmID1cbiAgbGV0IG9sZF9leGl0IDogdW5pdCAtPiB1bml0ID0gRExTLmdldCBhdF9leGl0X2tleSBpblxuICBsZXQgbmV3X2V4aXQgKCkgPVxuICAgIGYgKCk7IG9sZF9leGl0ICgpXG4gIGluXG4gIERMUy5zZXQgYXRfZXhpdF9rZXkgbmV3X2V4aXRcblxubGV0IGRvX2F0X2V4aXQgKCkgPVxuICBsZXQgZiA6IHVuaXQgLT4gdW5pdCA9IERMUy5nZXQgYXRfZXhpdF9rZXkgaW5cbiAgZiAoKVxuXG5sZXQgXyA9IFN0ZGxpYi5kb19kb21haW5fbG9jYWxfYXRfZXhpdCA6PSBkb19hdF9leGl0XG5cbigqKioqKioqIENyZWF0aW9uIGFuZCBUZXJtaW5hdGlvbiAqKioqKioqKilcblxubGV0IHNwYXduIGYgPVxuICBkb19iZWZvcmVfZmlyc3Rfc3Bhd24gKCk7XG4gIGxldCBwayA9IERMUy5nZXRfaW5pdGlhbF9rZXlzICgpIGluXG5cbiAgKCogW3Rlcm1fc3luY10gaXMgdXNlZCB0byBzeW5jaHJvbml6ZSB3aXRoIHRoZSBqb2luaW5nIGRvbWFpbnMgKilcbiAgbGV0IHRlcm1fc3luYyA9XG4gICAgUmF3Lnsgc3RhdGUgPSBSdW5uaW5nIDtcbiAgICAgICAgICBtdXQgPSBNdXRleC5jcmVhdGUgKCkgO1xuICAgICAgICAgIGNvbmQgPSBDb25kaXRpb24uY3JlYXRlICgpIH1cbiAgaW5cblxuICBsZXQgYm9keSAoKSA9XG4gICAgbWF0Y2hcbiAgICAgIERMUy5jcmVhdGVfZGxzICgpO1xuICAgICAgRExTLnNldF9pbml0aWFsX2tleXMgcGs7XG4gICAgICBsZXQgcmVzID0gZiAoKSBpblxuICAgICAgcmVzXG4gICAgd2l0aFxuICAgICgqIFJ1biB0aGUgW2F0X2V4aXRdIGNhbGxiYWNrcyB3aGVuIHRoZSBkb21haW4gY29tcHV0YXRpb24gZWl0aGVyXG4gICAgICAgdGVybWluYXRlcyBub3JtYWxseSBvciBleGNlcHRpb25hbGx5LiAqKVxuICAgIHwgcmVzIC0+XG4gICAgICAgICgqIElmIHRoZSBkb21haW4gY29tcHV0YXRpb24gdGVybWluYXRlZCBub3JtYWxseSwgYnV0IHRoZVxuICAgICAgICAgICBbYXRfZXhpdF0gY2FsbGJhY2tzIHJhaXNlZCBhbiBleGNlcHRpb24sIHRoZW4gcmV0dXJuIHRoZVxuICAgICAgICAgICBleGNlcHRpb24uICopXG4gICAgICAgIGRvX2F0X2V4aXQgKCk7XG4gICAgICAgIHJlc1xuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAoKiBJZiBib3RoIHRoZSBkb21haW4gY29tcHV0YXRpb24gYW5kIHRoZSBbYXRfZXhpdF0gY2FsbGJhY2tzXG4gICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMsIHRoZW4gaWdub3JlIHRoZSBleGNlcHRpb24gZnJvbSB0aGVcbiAgICAgICAgICAgW2F0X2V4aXRdIGNhbGxiYWNrcyBhbmQgcmV0dXJuIHRoZSBvcmlnaW5hbCBleGNlcHRpb24uICopXG4gICAgICAgICh0cnkgZG9fYXRfZXhpdCAoKSB3aXRoIF8gLT4gKCkpO1xuICAgICAgICByYWlzZSBleG5cbiAgaW5cbiAgbGV0IGRvbWFpbiA9IFJhdy5zcGF3biBib2R5IHRlcm1fc3luYyBpblxuICB7IGRvbWFpbiA7IHRlcm1fc3luYyB9XG5cbmxldCBqb2luIHsgdGVybV9zeW5jIDsgXyB9ID1cbiAgbGV0IG9wZW4gUmF3IGluXG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgbWF0Y2ggdGVybV9zeW5jLnN0YXRlIHdpdGhcbiAgICB8IFJ1bm5pbmcgLT5cbiAgICAgICAgQ29uZGl0aW9uLndhaXQgdGVybV9zeW5jLmNvbmQgdGVybV9zeW5jLm11dDtcbiAgICAgICAgbG9vcCAoKVxuICAgIHwgRmluaXNoZWQgcmVzIC0+XG4gICAgICAgIHJlc1xuICBpblxuICBtYXRjaCBNdXRleC5wcm90ZWN0IHRlcm1fc3luYy5tdXQgbG9vcCB3aXRoXG4gIHwgT2sgeCAtPiB4XG4gIHwgRXJyb3IgZXggLT4gcmFpc2UgZXhcblxubGV0IHJlY29tbWVuZGVkX2RvbWFpbl9jb3VudCA9IFJhdy5nZXRfcmVjb21tZW5kZWRfZG9tYWluX2NvdW50XG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfYXJyYXlfbWFrZSIsImNhbWxfY2hlY2tfYm91bmQiLCJjYW1sX2RvbWFpbl9kbHNfZ2V0IiwiY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlIiwiY2FtbF9tbF9kb21haW5faWQiLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImR1bW15IiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWJfQ29uZGl0aW9uIiwiU3RkbGliX011dGV4IiwiU3RkbGliX0F0b21pYyIsIlN0ZGxpYiIsIlN0ZGxpYl9BcnJheSIsIlN0ZGxpYl9MaXN0IiwiQXNzZXJ0X2ZhaWx1cmUiLCJjcHVfcmVsYXgiLCJwYXJhbSIsIm5vbmUiLCJjcmVhdGVfZGxzIiwic3QiLCJrZXlfY291bnRlciIsInBhcmVudF9rZXlzIiwibmV3X2tleSIsInNwbGl0X2Zyb21fcGFyZW50IiwiaW5pdF9vcnBoYW4iLCJpZHgiLCJrIiwic3BsaXQiLCJraSIsImwiLCJtYXliZV9ncm93Iiwic3oiLCJuZXdfc3oiLCJuZXdfc3QiLCJzIiwic2V0IiwieCIsImdldCIsImluaXQiLCJvbGR2YWwiLCJuZXdfb2JqIiwiY3VydmFsIiwidXBkYXRlZF9vYmoiLCJzZXRfaW5pdGlhbF9rZXlzIiwidiIsImdldF9pZCIsImRvbWFpbiIsInNlbGYiLCJpc19tYWluX2RvbWFpbiIsImZpcnN0X2RvbWFpbl9zcGF3bmVkIiwiZmlyc3Rfc3Bhd25fZnVuY3Rpb24iLCJiZWZvcmVfZmlyc3Rfc3Bhd24iLCJvbGRfZiIsIm5ld19mIiwiYXRfZXhpdF9rZXkiLCJhdF9leGl0Iiwib2xkX2V4aXQiLCJuZXdfZXhpdCIsImRvX2F0X2V4aXQiLCJzcGF3biIsInBrIiwidGVybV9zeW5jIiwiYm9keSIsInJlcyIsImV4biIsImpvaW4iLCJsb29wIiwibWF0Y2giLCJleCIsInJlY29tbWVuZGVkX2RvbWFpbl9jb3VudCIsIlN0ZGxpYl9Eb21haW4iXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsUUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsWUFBQUMsVUFBQUMsT0M4Q21CLDBDQUFnQjtBQUFBLE9BQUFDLE9EOUNuQztBQUFBLFlBQUFDLFdBQUFGO0FBQUFBLFFBQUFHLEtDd0ZhO0FBQUEsSUFDVDtBQUFBLEdBQWdCO0FBQUEsR0FFVjtBQUFBO0FBQUEsSUFBQUMsY0FJVTtBQUFBLElBQUFDLGNBS0E7QUFBQSxZQUFBQyxRQUFBQyxtQkFBQUM7QUFBQUE7QUFBQUEsS0FBQUMsTUFRTjtBQUFBLEtBQUFDLElBQ1Y7QUFBQSxJQUNBO0FBQUEsU0FBQUMsUUFBQSxzQkFBQUMsS0FFZ0I7QUFBQSxLQVRoQjtBQUFBLFVBQUFDLElBQVE7QUFBQSxNQUNEO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFVUDtBQUFBLEdBQUM7QUFBQSxZQUFBQyxXQUFBTDtBQUFBQSxJQUtEO0FBQUEsU0FBQU4sS0FBQSx3QkFBQVksS0FDQTtBQUFBLEtBQ0EsYUFBaUI7QUFBQSxTQUFBQyxTQUFqQjtBQUFBO0FBQUEsTUFHSTtBQUFBLFdBQUFDLFNBR1c7QUFBQSxPQUNiO0FBQUEsT0FPRyx3REFDRTtBQUFBO0FBQUE7QUFBQSxVQUFBQyxJQVpvQjtBQUFBO0FBQUE7QUFBQTtBQUFBLEdBY3hCO0FBQUEsWUFBQUMsSUFBQW5CLE9BQUFvQjtBQUFBQSxRQUFBWCxNQUVHLFVBQUFOLEtBQ0c7QUFBQSxJQUlUO0FBQUEsSUFBZ0Q7QUFBQTtBQUFBLFdBN0NPO0FBQUEsWUFBQWtCLElBQUFyQjtBQUFBQTtBQUFBQSxLQUFBc0IsT0F5RGpEO0FBQUEsS0FBQWIsTUFBQTtBQUFBLEtBQUFOLEtBQ0c7QUFBQSxLQUFBb0IsU0FDQztBQUFBLElBQ1ksb0JBdEZEO0FBQUE7QUFBQSxLQUFBQyxVQXlGUDtBQUFBLEtBQUFyQixPQVdaO0FBQUEsS0FBQXNCLFNBdkJXO0FBQUEsU0FDYjtBQUFBLElBdUI2QyxNQUN0QztBQUFBLFFBQUFDLGNBSWU7QUFBQSxJQUNZLHlCQTNHYjtBQUFBLElBNkdaO0FBQUEsR0FFTjtBQUFBLFlBQUFDLGlCQUFBZDtBQUFBQSxJQVVIO0FBQUE7QUFBQSxzQkFBQWI7QUFBQUEsa0JBQUE0QixJQUFVLFVBQUFsQixJQUFBO0FBQUEsY0FBb0IsZ0JBQVE7QUFBQTtBQUFBLGVBQUU7QUFBQTtBQUFBLFlBQUFtQixPQUFBN0IsV0FBQThCLFNBS2pDLFVBQWdCLGNBQU07QUFBQSxZQUFBQyxLQUFBL0IsT0FFbkIsMkJBQVc7QUFBQSxZQUFBZ0MsZUFBQWhDLE9BQVgseUNBRWtCLENBQVk7QUFBQTtBQUFBLElBQUFpQyx1QkFRakI7QUFBQSxJQUFBQyx1QkFBaUIsYUFBQWxDLE9BRUE7QUFBQSxZQUFBbUMsbUJBQUEvQztBQUFBQSxJQUd2QztBQUFBLEtBQ0Q7QUFBQTtBQUFBLFFBQUFnRCxRQUNHO0FBQUEsYUFBQUMsTUFBQXJDLE9BRVksc0JBQVEsdUJBQU07QUFBQSxJQUM3QjtBQUFBO0FBQUEsR0FDQztBQUFBO0FBQUEsSUFBQXNDO0FBQUFBLE1BVWEsb0JBQUF0QyxPQUF1QixnQkFBQUEsT0FBVyxTQUFFLENBQWIsQ0FBYztBQUFBLFlBQUF1QyxRQUFBbkQ7QUFBQUEsUUFBQW9ELFdBR3ZCO0FBQUEsYUFBQUMsU0FBQXpDO0FBQUFBLEtBRTVCO0FBQUEsS0FBSSw4QkFBYTtBQUFBO0FBQUEsSUFFbkIsaUNBQTRCO0FBQUE7QUFBQSxZQUFBMEMsV0FBQTFDO0FBQUFBLFFBQUFaLElBR0w7QUFBQSxJQUN2Qix1QkFBSTtBQUFBO0FBQUEsR0FYa0Q7QUFBQSxZQUFBdUQsTUFBQXZEO0FBQUFBLElBUC9DO0FBQUEsS0FDTDtBQUFBLEtBQ0E7QUFBQSxLQUF1QixtQ0FBQVksT0FFWSxTQUFFO0FBQUE7QUFBQTtBQUFBLFNBdENuQztBQUFBLEtBQUE0QztBQUFBQSxPQUF3QjtBQUFBO0FBQUEsa0JBQUE1QztBQUFBQSxjQUFBVyxRQUR4QixVQUFBRCxJQUFBO0FBQUEsVUFBc0MsY0FBUCxrQkFBTyxRQUFRO0FBQUEsU0FBRTtBQUFBO0FBQUEsU0FtRXJDO0FBQUEsS0FBQW1DLFlBREQ7QUFBQSxhQUFBQyxLQUFBOUM7QUFBQUEsS0FLWixJQUNFLGVBQ0EsMEJBQUErQyxNQUNVO0FBQUEsV0FBQUM7QUFBQUEsVUFBQUEsTUR6UWhCO0FBQUEsVUN3UmEscUJBQUFBO0FBQUFBLE1BQ0w7QUFBQTtBQUFBLEtBUEE7QUFBQSxLQUFhO0FBQUEsSUFPSjtBQUFBLFFBQUFsQixTQUVGO0FBQUEsSUFDYjtBQUFBLEdBQXNCO0FBQUEsWUFBQW1CLEtBQUFqRDtBQUFBQSxRQUFBNkMsWUFFZjtBQUFBLGFBQUFLLEtBQUFsRDtBQUFBQSxLQUdMO0FBQUEsVUFBQW1ELFFBQUE7QUFBQSxvQkFBQUosTUFBQSxVQUtJO0FBQUEsTUFIQTtBQUFBO0FBQUEsSUFHRztBQUFBLFFBQUFJLFFBRUg7QUFBQSxJQUFnQyx1QkFBQS9CLElBQUEsVUFDNUI7QUFBQSxRQUFBZ0MsS0FENEI7QUFBQTtBQUFBLEdBRWhCO0FBQUE7QUFBQSxJQUFBQywyQkFqRWdDO0FBQUEsSUFBQUM7QUFBQUEsTUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUR6T3hEIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MTkwMTEsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxGb3JtYXQubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgQmVub2l0IFZhdWdvbiwgRU5TVEEgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICgqIFRvb2xzIHRvIG1hbmlwdWxhdGUgc2Nhbm5pbmcgc2V0IG9mIGNoYXJzIChzZWUgJVsuLi5dKSAqKVxuXG50eXBlIG11dGFibGVfY2hhcl9zZXQgPSBieXRlc1xuXG4oKiBDcmVhdGUgYSBmcmVzaCwgZW1wdHksIG11dGFibGUgY2hhciBzZXQuICopXG5sZXQgY3JlYXRlX2NoYXJfc2V0ICgpID0gQnl0ZXMubWFrZSAzMiAnXFwwMDAnXG5cbigqIEFkZCBhIGNoYXIgaW4gYSBtdXRhYmxlIGNoYXIgc2V0LiAqKVxubGV0IGFkZF9pbl9jaGFyX3NldCBjaGFyX3NldCBjID1cbiAgbGV0IGluZCA9IGludF9vZl9jaGFyIGMgaW5cbiAgbGV0IHN0cl9pbmQgPSBpbmQgbHNyIDMgYW5kIG1hc2sgPSAxIGxzbCAoaW5kIGxhbmQgMGIxMTEpIGluXG4gIEJ5dGVzLnNldCBjaGFyX3NldCBzdHJfaW5kXG4gICAgKGNoYXJfb2ZfaW50IChpbnRfb2ZfY2hhciAoQnl0ZXMuZ2V0IGNoYXJfc2V0IHN0cl9pbmQpIGxvciBtYXNrKSlcblxubGV0IGZyZWV6ZV9jaGFyX3NldCBjaGFyX3NldCA9XG4gIEJ5dGVzLnRvX3N0cmluZyBjaGFyX3NldFxuXG4oKiBDb21wdXRlIHRoZSBjb21wbGVtZW50IG9mIGEgY2hhciBzZXQuICopXG5sZXQgcmV2X2NoYXJfc2V0IGNoYXJfc2V0ID1cbiAgbGV0IGNoYXJfc2V0JyA9IGNyZWF0ZV9jaGFyX3NldCAoKSBpblxuICBmb3IgaSA9IDAgdG8gMzEgZG9cbiAgICBCeXRlcy5zZXQgY2hhcl9zZXQnIGlcbiAgICAgIChjaGFyX29mX2ludCAoaW50X29mX2NoYXIgKFN0cmluZy5nZXQgY2hhcl9zZXQgaSkgbHhvciAweEZGKSk7XG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgY2hhcl9zZXQnXG5cbigqIFJldHVybiB0cnVlIGlmIGEgYGMnIGlzIGluIGBjaGFyX3NldCcuICopXG5sZXQgaXNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgYyA9XG4gIGxldCBpbmQgPSBpbnRfb2ZfY2hhciBjIGluXG4gIGxldCBzdHJfaW5kID0gaW5kIGxzciAzIGFuZCBtYXNrID0gMSBsc2wgKGluZCBsYW5kIDBiMTExKSBpblxuICAoaW50X29mX2NoYXIgKFN0cmluZy5nZXQgY2hhcl9zZXQgc3RyX2luZCkgbGFuZCBtYXNrKSA8PiAwXG5cblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAoKiBJZ25vcmVkIHBhcmFtIGNvbnZlcnNpb24gKilcblxuKCogR0FEVCB1c2VkIHRvIGFic3RyYWN0IGFuIGV4aXN0ZW50aWFsIHR5cGUgcGFyYW1ldGVyLiAqKVxuKCogU2VlIHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdC4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhcmFtX2Zvcm1hdF9lYmIgPSBQYXJhbV9mb3JtYXRfRUJCIDpcbiAgICAoJ3ggLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhcmFtX2Zvcm1hdF9lYmJcblxuKCogQ29tcHV0ZSBhIHBhZGRpbmcgYXNzb2NpYXRlZCB0byBhIHBhZF9vcHRpb24gKHNlZSBcIiVfNDJkXCIpLiAqKVxubGV0IHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQgPSBtYXRjaCBwYWRfb3B0IHdpdGhcbiAgfCBOb25lIC0+IE5vX3BhZGRpbmdcbiAgfCBTb21lIHdpZHRoIC0+IExpdF9wYWRkaW5nIChSaWdodCwgd2lkdGgpXG5cbigqIENvbXB1dGUgYSBwcmVjaXNpb24gYXNzb2NpYXRlZCB0byBhIHByZWNfb3B0aW9uIChzZWUgXCIlXy40MmZcIikuICopXG5sZXQgcHJlY19vZl9wcmVjX29wdCBwcmVjX29wdCA9IG1hdGNoIHByZWNfb3B0IHdpdGhcbiAgfCBOb25lIC0+IE5vX3ByZWNpc2lvblxuICB8IFNvbWUgbmRlYyAtPiBMaXRfcHJlY2lzaW9uIG5kZWNcblxuKCogVHVybiBhbiBpZ25vcmVkIHBhcmFtIGludG8gaXRzIGVxdWl2YWxlbnQgbm90LWlnbm9yZWQgZm9ybWF0IG5vZGUuICopXG4oKiBVc2VkIGZvciBmb3JtYXQgcHJldHR5LXByaW50aW5nIGFuZCBTY2FuZi4gKilcbmxldCBwYXJhbV9mb3JtYXRfb2ZfaWdub3JlZF9mb3JtYXQgOiB0eXBlIGEgYiBjIGQgZSBmIHggeSAuXG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGlnbm9yZWQgLT4gKHgsIGIsIGMsIHksIGUsIGYpIGZtdCAtPlxuICAgICAgKGEsIGIsIGMsIGQsIGUsIGYpIHBhcmFtX2Zvcm1hdF9lYmIgPVxuZnVuIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChDaGFyIGZtdClcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKENhbWxfY2hhciBmbXQpXG4gIHwgSWdub3JlZF9zdHJpbmcgcGFkX29wdCAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFN0cmluZyAocGFkX29mX3BhZF9vcHQgcGFkX29wdCwgZm10KSlcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIHBhZF9vcHQgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChDYW1sX3N0cmluZyAocGFkX29mX3BhZF9vcHQgcGFkX29wdCwgZm10KSlcbiAgfCBJZ25vcmVkX2ludCAoaWNvbnYsIHBhZF9vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoSW50IChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfaW50MzIgKGljb252LCBwYWRfb3B0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChJbnQzMiAoaWNvbnYsIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIE5vX3ByZWNpc2lvbiwgZm10KSlcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoaWNvbnYsIHBhZF9vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKE5hdGl2ZWludCAoaWNvbnYsIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIE5vX3ByZWNpc2lvbiwgZm10KSlcbiAgfCBJZ25vcmVkX2ludDY0IChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoSW50NjQgKGljb252LCBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBOb19wcmVjaXNpb24sIGZtdCkpXG4gIHwgSWdub3JlZF9mbG9hdCAocGFkX29wdCwgcHJlY19vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKEZsb2F0ICgoRmxvYXRfZmxhZ18sIEZsb2F0X2YpLFxuICAgICAgICAgICAgICBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBwcmVjX29mX3ByZWNfb3B0IHByZWNfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfYm9vbCBwYWRfb3B0IC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoQm9vbCAocGFkX29mX3BhZF9vcHQgcGFkX29wdCwgZm10KSlcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgKHBhZF9vcHQsIGZtdHR5KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKEZvcm1hdF9hcmcgKHBhZF9vcHQsIGZtdHR5LCBmbXQpKVxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChwYWRfb3B0LCBmbXR0eSkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBmbXR0eSwgZm10KSlcbiAgfCBJZ25vcmVkX3JlYWRlciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFJlYWRlciBmbXQpXG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIGZtdCkpXG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIGNvdW50ZXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXQpKVxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChTY2FuX25leHRfY2hhciBmbXQpXG5cblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFR5cGVzICopXG5cbnR5cGUgKCdiLCAnYykgYWNjX2Zvcm1hdHRpbmdfZ2VuID1cbiAgfCBBY2Nfb3Blbl90YWcgb2YgKCdiLCAnYykgYWNjXG4gIHwgQWNjX29wZW5fYm94IG9mICgnYiwgJ2MpIGFjY1xuXG4oKiBSZXZlcnNlZCBsaXN0IG9mIHByaW50aW5nIGF0b21zLiAqKVxuKCogVXNlZCB0byBhY2N1bXVsYXRlIHByaW50ZiBhcmd1bWVudHMuICopXG5hbmQgKCdiLCAnYykgYWNjID1cbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgb2YgKCdiLCAnYykgYWNjICogZm9ybWF0dGluZ19saXRcbiAgICAgICgqIFNwZWNpYWwgZm10dGluZyAoYm94KSAqKVxuICB8IEFjY19mb3JtYXR0aW5nX2dlbiBvZiAoJ2IsICdjKSBhY2MgKiAoJ2IsICdjKSBhY2NfZm9ybWF0dGluZ19nZW5cbiAgICAgICgqIFNwZWNpYWwgZm10dGluZyAoYm94KSAqKVxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCBvZiAoJ2IsICdjKSBhY2MgKiBzdHJpbmcgICAgICgqIExpdGVyYWwgc3RyaW5nICopXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAgIG9mICgnYiwgJ2MpIGFjYyAqIGNoYXIgICAgICAgKCogTGl0ZXJhbCBjaGFyICopXG4gIHwgQWNjX2RhdGFfc3RyaW5nICAgIG9mICgnYiwgJ2MpIGFjYyAqIHN0cmluZyAgICAgKCogR2VuZXJhdGVkIHN0cmluZyAqKVxuICB8IEFjY19kYXRhX2NoYXIgICAgICBvZiAoJ2IsICdjKSBhY2MgKiBjaGFyICAgICAgICgqIEdlbmVyYXRlZCBjaGFyICopXG4gIHwgQWNjX2RlbGF5ICAgICAgICAgIG9mICgnYiwgJ2MpIGFjYyAqICgnYiAtPiAnYylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIERlbGF5ZWQgcHJpbnRpbmcgKCVhLCAldCkgKilcbiAgfCBBY2NfZmx1c2ggICAgICAgICAgb2YgKCdiLCAnYykgYWNjICAgICAgICAgICAgICAoKiBGbHVzaCAqKVxuICB8IEFjY19pbnZhbGlkX2FyZyAgICBvZiAoJ2IsICdjKSBhY2MgKiBzdHJpbmdcbiAgICAgICgqIFJhaXNlIEludmFsaWRfYXJndW1lbnQgbXNnICopXG4gIHwgRW5kX29mX2FjY1xuXG4oKiBMaXN0IG9mIGhldGVyb2dlbmVvdXMgdmFsdWVzLiAqKVxuKCogVXNlZCB0byBhY2N1bXVsYXRlIHNjYW5mIGNhbGxiYWNrIGFyZ3VtZW50cy4gKilcbnR5cGUgKCdhLCAnYikgaGV0ZXJfbGlzdCA9XG4gIHwgQ29ucyA6ICdjICogKCdhLCAnYikgaGV0ZXJfbGlzdCAtPiAoJ2MgLT4gJ2EsICdiKSBoZXRlcl9saXN0XG4gIHwgTmlsIDogKCdiLCAnYikgaGV0ZXJfbGlzdFxuXG4oKiBFeGlzdGVudGlhbCBCbGFjayBCb3hlcy4gKilcbigqIFVzZWQgdG8gYWJzdHJhY3Qgc29tZSBleGlzdGVudGlhbCB0eXBlIHBhcmFtZXRlcnMuICopXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHBhZGRpbmcgYW5kIGFuIGZtdHR5LiAqKVxuKCogU2VlIHRoZSB0eXBlX3BhZGRpbmcgZnVuY3Rpb24uICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRkaW5nX2ZtdHR5X2ViYiA9IFBhZGRpbmdfZm10dHlfRUJCIDpcbiAgICAgKCd4LCAneSkgcGFkZGluZyAqICgneSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgcGFkZGluZ19mbXR0eV9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZywgYSBwcmVjaXNpb24gYW5kIGFuIGZtdHR5LiAqKVxuKCogU2VlIHRoZSB0eXBlX3BhZHByZWMgZnVuY3Rpb24uICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRwcmVjX2ZtdHR5X2ViYiA9IFBhZHByZWNfZm10dHlfRUJCIDpcbiAgICAgKCd4LCAneSkgcGFkZGluZyAqICgneSwgJ3opIHByZWNpc2lvbiAqICgneiwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgcGFkcHJlY19mbXR0eV9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZyBhbmQgYW4gZm10LiAqKVxuKCogU2VlIG1ha2VfcGFkZGluZ19mbXRfZWJiIGFuZCBwYXJzZV9mb3JtYXQgZnVuY3Rpb25zLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2UsICdmKSBwYWRkaW5nX2ZtdF9lYmIgPSBQYWRkaW5nX2ZtdF9FQkIgOlxuICAgICAoXywgJ3ggLT4gJ2EpIHBhZGRpbmcgKlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZSwgJ2YpIHBhZGRpbmdfZm10X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwcmVjaXNpb24gYW5kIGFuIGZtdC4gKilcbigqIFNlZSBtYWtlX3ByZWNpc2lvbl9mbXRfZWJiIGFuZCBwYXJzZV9mb3JtYXQgZnVuY3Rpb25zLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2UsICdmKSBwcmVjaXNpb25fZm10X2ViYiA9IFByZWNpc2lvbl9mbXRfRUJCIDpcbiAgICAgKF8sICd4IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZSwgJ2YpIHByZWNpc2lvbl9mbXRfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHBhZGRpbmcsIGEgcHJlY2lzaW9uIGFuZCBhbiBmbXQuICopXG4oKiBTZWUgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgYW5kIHBhcnNlX2Zvcm1hdCBmdW5jdGlvbnMuICopXG50eXBlICgncCwgJ2IsICdjLCAnZSwgJ2YpIHBhZHByZWNfZm10X2ViYiA9IFBhZHByZWNfZm10X0VCQiA6XG4gICAgICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksICdwIC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgncCwgJ2IsICdjLCAnZSwgJ2YpIHBhZHByZWNfZm10X2ViYlxuXG4oKiBBYnN0cmFjdCB0aGUgJ2EgYW5kICdkIHBhcmFtZXRlcnMgb2YgYW4gZm10LiAqKVxuKCogT3V0cHV0IHR5cGUgb2YgdGhlIGZvcm1hdCBwYXJzaW5nIGZ1bmN0aW9uLiAqKVxudHlwZSAoJ2IsICdjLCAnZSwgJ2YpIGZtdF9lYmIgPSBGbXRfRUJCIDpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAoJ2IsICdjLCAnZSwgJ2YpIGZtdF9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGFuIGZtdHR5IGFuZCBhbiBmbXQuICopXG4oKiBTZWUgdGhlIHR5cGVfZm9ybWF0X2dlbiBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdF9mbXR0eV9lYmIgPSBGbXRfZm10dHlfRUJCIDpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAneSwgJ3gpIGZtdCAqXG4gICAgICgneCwgJ2IsICdjLCAneSwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10X2ZtdHR5X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYW4gZm10dHkgYW5kIGFuIGZtdC4gKilcbigqIFNlZSB0aGUgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gZnVuY3Rpb24uICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eV9mbXRfZWJiID0gRm10dHlfZm10X0VCQiA6XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ3ksICd4KSBmbXR0eSAqXG4gICAgICgneCwgJ2IsICdjLCAneSwgJ2UsICdmKSBmbXRfZm10dHlfZWJiIC0+XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eV9mbXRfZWJiXG5cbigqIEFic3RyYWN0IGFsbCBmbXR0eSB0eXBlIHBhcmFtZXRlcnMuICopXG4oKiBVc2VkIHRvIGNvbXBhcmUgZm9ybWF0IHR5cGVzLiAqKVxudHlwZSBmbXR0eV9lYmIgPSBGbXR0eV9FQkIgOiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgLT4gZm10dHlfZWJiXG5cbigqIEFic3RyYWN0IGFsbCBwYWRkaW5nIHR5cGUgcGFyYW1ldGVycy4gKilcbigqIFVzZWQgdG8gY29tcGFyZSBwYWRkaW5ncy4gKilcbnR5cGUgcGFkZGluZ19lYmIgPSBQYWRkaW5nX0VCQiA6ICgnYSwgJ2IpIHBhZGRpbmcgLT4gcGFkZGluZ19lYmJcblxuKCogQWJzdHJhY3QgYWxsIHByZWNpc2lvbiB0eXBlIHBhcmFtZXRlcnMuICopXG4oKiBVc2VkIHRvIGNvbXBhcmUgcHJlY2lzaW9ucy4gKilcbnR5cGUgcHJlY2lzaW9uX2ViYiA9IFByZWNpc2lvbl9FQkIgOiAoJ2EsICdiKSBwcmVjaXNpb24gLT4gcHJlY2lzaW9uX2ViYlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIENvbnN0YW50cyAqKVxuXG4oKiBEZWZhdWx0IHByZWNpc2lvbiBmb3IgZmxvYXQgcHJpbnRpbmcuICopXG5sZXQgZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYgPVxuICBtYXRjaCBzbmQgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2YgfCBGbG9hdF9lIHwgRmxvYXRfRSB8IEZsb2F0X2cgfCBGbG9hdF9HIHwgRmxvYXRfaCB8IEZsb2F0X0hcbiAgfCBGbG9hdF9DRiAtPiAtNlxuICAoKiBGb3IgJWggJUggYW5kICUjRiBmb3JtYXRzLCBhIG5lZ2F0aXZlIHByZWNpc2lvbiBtZWFucyBcImFzIG1hbnkgZGlnaXRzIGFzXG4gICAgIG5lY2Vzc2FyeVwiLiAgRm9yIHRoZSBvdGhlciBGUCBmb3JtYXRzLCB3ZSB0YWtlIHRoZSBhYnNvbHV0ZSB2YWx1ZVxuICAgICBvZiB0aGUgcHJlY2lzaW9uLCBoZW5jZSA2IGRpZ2l0cyBieSBkZWZhdWx0LiAqKVxuICB8IEZsb2F0X0YgLT4gMTJcbiAgKCogRGVmYXVsdCBwcmVjaXNpb24gZm9yIE9DYW1sIGZsb2F0IHByaW50aW5nICglRikuICopXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRXh0ZXJuYWxzICopXG5cbmV4dGVybmFsIGZvcm1hdF9mbG9hdDogc3RyaW5nIC0+IGZsb2F0IC0+IHN0cmluZ1xuICA9IFwiY2FtbF9mb3JtYXRfZmxvYXRcIlxuZXh0ZXJuYWwgZm9ybWF0X2ludDogc3RyaW5nIC0+IGludCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfZm9ybWF0X2ludFwiXG5leHRlcm5hbCBmb3JtYXRfaW50MzI6IHN0cmluZyAtPiBpbnQzMiAtPiBzdHJpbmdcbiAgPSBcImNhbWxfaW50MzJfZm9ybWF0XCJcbmV4dGVybmFsIGZvcm1hdF9uYXRpdmVpbnQ6IHN0cmluZyAtPiBuYXRpdmVpbnQgLT4gc3RyaW5nXG4gID0gXCJjYW1sX25hdGl2ZWludF9mb3JtYXRcIlxuZXh0ZXJuYWwgZm9ybWF0X2ludDY0OiBzdHJpbmcgLT4gaW50NjQgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2ludDY0X2Zvcm1hdFwiXG5leHRlcm5hbCBoZXhzdHJpbmdfb2ZfZmxvYXQ6IGZsb2F0IC0+IGludCAtPiBjaGFyIC0+IHN0cmluZ1xuICA9IFwiY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXRcIlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgKCogVG9vbHMgdG8gcHJldHR5LXByaW50IGZvcm1hdHMgKilcblxuKCogVHlwZSBvZiBleHRlbnNpYmxlIGNoYXJhY3RlciBidWZmZXJzLiAqKVxudHlwZSBidWZmZXIgPSB7XG4gIG11dGFibGUgaW5kIDogaW50O1xuICBtdXRhYmxlIGJ5dGVzIDogYnl0ZXM7XG59XG5cbigqIENyZWF0ZSBhIGZyZXNoIGJ1ZmZlci4gKilcbmxldCBidWZmZXJfY3JlYXRlIGluaXRfc2l6ZSA9IHsgaW5kID0gMDsgYnl0ZXMgPSBCeXRlcy5jcmVhdGUgaW5pdF9zaXplIH1cblxuKCogQ2hlY2sgc2l6ZSBvZiB0aGUgYnVmZmVyIGFuZCBncm93IGl0IGlmIG5lZWRlZC4gKilcbmxldCBidWZmZXJfY2hlY2tfc2l6ZSBidWYgb3ZlcmhlYWQgPVxuICBsZXQgbGVuID0gQnl0ZXMubGVuZ3RoIGJ1Zi5ieXRlcyBpblxuICBsZXQgbWluX2xlbiA9IGJ1Zi5pbmQgKyBvdmVyaGVhZCBpblxuICBpZiBtaW5fbGVuID4gbGVuIHRoZW4gKFxuICAgIGxldCBuZXdfbGVuID0gSW50Lm1heCAobGVuICogMikgbWluX2xlbiBpblxuICAgIGxldCBuZXdfc3RyID0gQnl0ZXMuY3JlYXRlIG5ld19sZW4gaW5cbiAgICBCeXRlcy5ibGl0IGJ1Zi5ieXRlcyAwIG5ld19zdHIgMCBsZW47XG4gICAgYnVmLmJ5dGVzIDwtIG5ld19zdHI7XG4gIClcblxuKCogQWRkIHRoZSBjaGFyYWN0ZXIgYGMnIHRvIHRoZSBidWZmZXIgYGJ1ZicuICopXG5sZXQgYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjID1cbiAgYnVmZmVyX2NoZWNrX3NpemUgYnVmIDE7XG4gIEJ5dGVzLnNldCBidWYuYnl0ZXMgYnVmLmluZCBjO1xuICBidWYuaW5kIDwtIGJ1Zi5pbmQgKyAxXG5cbigqIEFkZCB0aGUgc3RyaW5nIGBzJyB0byB0aGUgYnVmZmVyIGBidWYnLiAqKVxubGV0IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBzID1cbiAgbGV0IHN0cl9sZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgYnVmZmVyX2NoZWNrX3NpemUgYnVmIHN0cl9sZW47XG4gIFN0cmluZy5ibGl0IHMgMCBidWYuYnl0ZXMgYnVmLmluZCBzdHJfbGVuO1xuICBidWYuaW5kIDwtIGJ1Zi5pbmQgKyBzdHJfbGVuXG5cbigqIEdldCB0aGUgY29udGVudCBvZiB0aGUgYnVmZmVyLiAqKVxubGV0IGJ1ZmZlcl9jb250ZW50cyBidWYgPVxuICBCeXRlcy5zdWJfc3RyaW5nIGJ1Zi5ieXRlcyAwIGJ1Zi5pbmRcblxuKCoqKilcblxuKCogQ29udmVydCBhbiBpbnRlZ2VyIGNvbnZlcnNpb24gdG8gY2hhci4gKilcbmxldCBjaGFyX29mX2ljb252IGljb252ID0gbWF0Y2ggaWNvbnYgd2l0aFxuICB8IEludF9kIHwgSW50X3BkIHwgSW50X3NkIHwgSW50X0NkIC0+ICdkJyB8IEludF9pIHwgSW50X3BpIHwgSW50X3NpXG4gIHwgSW50X0NpIC0+ICdpJyB8IEludF94IHwgSW50X0N4IC0+ICd4JyB8IEludF9YIHwgSW50X0NYIC0+ICdYJyB8IEludF9vXG4gIHwgSW50X0NvIC0+ICdvJyB8IEludF91IHwgSW50X0N1IC0+ICd1J1xuXG4oKiBDb252ZXJ0IGEgZmxvYXQgY29udmVyc2lvbiB0byBjaGFyLiAqKVxuKCogYGNGJyB3aWxsIGJlICdGJyBmb3IgZGlzcGxheWluZyBmb3JtYXQgYW5kICdnJyB0byBjYWxsIGxpYmMgcHJpbnRmICopXG5sZXQgY2hhcl9vZl9mY29udiA/KGNGPSdGJykgZmNvbnYgPSBtYXRjaCBzbmQgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2YgLT4gJ2YnIHwgRmxvYXRfZSAtPiAnZSdcbiAgfCBGbG9hdF9FIC0+ICdFJyB8IEZsb2F0X2cgLT4gJ2cnXG4gIHwgRmxvYXRfRyAtPiAnRycgfCBGbG9hdF9GIC0+IGNGXG4gIHwgRmxvYXRfaCAtPiAnaCcgfCBGbG9hdF9IIC0+ICdIJ1xuICB8IEZsb2F0X0NGIC0+ICdGJ1xuXG5cbigqIENvbnZlcnQgYSBzY2FubmluZyBjb3VudGVyIHRvIGNoYXIuICopXG5sZXQgY2hhcl9vZl9jb3VudGVyIGNvdW50ZXIgPSBtYXRjaCBjb3VudGVyIHdpdGhcbiAgfCBMaW5lX2NvdW50ZXIgIC0+ICdsJ1xuICB8IENoYXJfY291bnRlciAgLT4gJ24nXG4gIHwgVG9rZW5fY291bnRlciAtPiAnTidcblxuKCoqKilcblxuKCogUHJpbnQgYSBjaGFyX3NldCBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBPQ2FtbCBmb3JtYXQgbGV4aWNhbCBjb252ZW50aW9uLiAqKVxubGV0IGJwcmludF9jaGFyX3NldCBidWYgY2hhcl9zZXQgPVxuICBsZXQgcmVjIHByaW50X3N0YXJ0IHNldCA9XG4gICAgbGV0IGlzX2Fsb25lIGMgPVxuICAgICAgbGV0IGJlZm9yZSwgYWZ0ZXIgPSBDaGFyLihjaHIgKGNvZGUgYyAtIDEpLCBjaHIgKGNvZGUgYyArIDEpKSBpblxuICAgICAgaXNfaW5fY2hhcl9zZXQgc2V0IGNcbiAgICAgICYmIG5vdCAoaXNfaW5fY2hhcl9zZXQgc2V0IGJlZm9yZSAmJiBpc19pbl9jaGFyX3NldCBzZXQgYWZ0ZXIpIGluXG4gICAgaWYgaXNfYWxvbmUgJ10nIHRoZW4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnXSc7XG4gICAgcHJpbnRfb3V0IHNldCAxO1xuICAgIGlmIGlzX2Fsb25lICctJyB0aGVuIGJ1ZmZlcl9hZGRfY2hhciBidWYgJy0nO1xuICBhbmQgcHJpbnRfb3V0IHNldCBpID1cbiAgICBpZiBpIDwgMjU2IHRoZW5cbiAgICAgIGlmIGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgaSkgdGhlbiBwcmludF9maXJzdCBzZXQgaVxuICAgICAgZWxzZSBwcmludF9vdXQgc2V0IChpICsgMSlcbiAgYW5kIHByaW50X2ZpcnN0IHNldCBpID1cbiAgICBtYXRjaCBjaGFyX29mX2ludCBpIHdpdGhcbiAgICB8ICdcXDI1NScgLT4gcHJpbnRfY2hhciBidWYgMjU1O1xuICAgIHwgJ10nIHwgJy0nIC0+IHByaW50X291dCBzZXQgKGkgKyAxKTtcbiAgICB8IF8gLT4gcHJpbnRfc2Vjb25kIHNldCAoaSArIDEpO1xuICBhbmQgcHJpbnRfc2Vjb25kIHNldCBpID1cbiAgICBpZiBpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IGkpIHRoZW5cbiAgICAgIG1hdGNoIGNoYXJfb2ZfaW50IGkgd2l0aFxuICAgICAgfCAnXFwyNTUnIC0+XG4gICAgICAgIHByaW50X2NoYXIgYnVmIDI1NDtcbiAgICAgICAgcHJpbnRfY2hhciBidWYgMjU1O1xuICAgICAgfCAnXScgfCAnLScgd2hlbiBub3QgKGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgKGkgKyAxKSkpIC0+XG4gICAgICAgIHByaW50X2NoYXIgYnVmIChpIC0gMSk7XG4gICAgICAgIHByaW50X291dCBzZXQgKGkgKyAxKTtcbiAgICAgIHwgXyB3aGVuIG5vdCAoaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCAoaSArIDEpKSkgLT5cbiAgICAgICAgcHJpbnRfY2hhciBidWYgKGkgLSAxKTtcbiAgICAgICAgcHJpbnRfY2hhciBidWYgaTtcbiAgICAgICAgcHJpbnRfb3V0IHNldCAoaSArIDIpO1xuICAgICAgfCBfIC0+XG4gICAgICAgIHByaW50X2luIHNldCAoaSAtIDEpIChpICsgMik7XG4gICAgZWxzZSAoXG4gICAgICBwcmludF9jaGFyIGJ1ZiAoaSAtIDEpO1xuICAgICAgcHJpbnRfb3V0IHNldCAoaSArIDEpO1xuICAgIClcbiAgYW5kIHByaW50X2luIHNldCBpIGogPVxuICAgIGlmIGogPSAyNTYgfHwgbm90IChpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IGopKSB0aGVuIChcbiAgICAgIHByaW50X2NoYXIgYnVmIGk7XG4gICAgICBwcmludF9jaGFyIGJ1ZiAoaW50X29mX2NoYXIgJy0nKTtcbiAgICAgIHByaW50X2NoYXIgYnVmIChqIC0gMSk7XG4gICAgICBpZiBqIDwgMjU2IHRoZW4gcHJpbnRfb3V0IHNldCAoaiArIDEpO1xuICAgICkgZWxzZVxuICAgICAgcHJpbnRfaW4gc2V0IGkgKGogKyAxKTtcbiAgYW5kIHByaW50X2NoYXIgYnVmIGkgPSBtYXRjaCBjaGFyX29mX2ludCBpIHdpdGhcbiAgICB8ICclJyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gICAgfCAnQCcgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ0AnO1xuICAgIHwgYyAgIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgYztcbiAgaW5cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnWyc7XG4gIHByaW50X3N0YXJ0IChcbiAgICBpZiBpc19pbl9jaGFyX3NldCBjaGFyX3NldCAnXFwwMDAnXG4gICAgdGhlbiAoIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ14nOyByZXZfY2hhcl9zZXQgY2hhcl9zZXQgKVxuICAgIGVsc2UgY2hhcl9zZXRcbiAgKTtcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnXSdcblxuKCoqKilcblxuKCogUHJpbnQgYSBwYWR0eSBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBmb3JtYXQtbGlrZSBzeW50YXguICopXG5sZXQgYnByaW50X3BhZHR5IGJ1ZiBwYWR0eSA9IG1hdGNoIHBhZHR5IHdpdGhcbiAgfCBMZWZ0ICAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICctJ1xuICB8IFJpZ2h0IC0+ICgpXG4gIHwgWmVyb3MgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnMCdcblxuKCogUHJpbnQgdGhlICdfJyBvZiBhbiBpZ25vcmVkIGZsYWcgaWYgbmVlZGVkLiAqKVxubGV0IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnID1cbiAgaWYgaWduX2ZsYWcgdGhlbiBidWZmZXJfYWRkX2NoYXIgYnVmICdfJ1xuXG4oKioqKVxuXG5sZXQgYnByaW50X3BhZF9vcHQgYnVmIHBhZF9vcHQgPSBtYXRjaCBwYWRfb3B0IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSB3aWR0aCAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgd2lkdGgpXG5cbigqKiopXG5cbigqIFByaW50IHBhZGRpbmcgaW4gYSBidWZmZXIgd2l0aCB0aGUgZm9ybWF0LWxpa2Ugc3ludGF4LiAqKVxubGV0IGJwcmludF9wYWRkaW5nIDogdHlwZSBhIGIgLiBidWZmZXIgLT4gKGEsIGIpIHBhZGRpbmcgLT4gdW5pdCA9XG5mdW4gYnVmIHBhZCAtPiBtYXRjaCBwYWQgd2l0aFxuICB8IE5vX3BhZGRpbmcgLT4gKClcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIG4pIC0+XG4gICAgYnByaW50X3BhZHR5IGJ1ZiBwYWR0eTtcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgbik7XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHkgLT5cbiAgICBicHJpbnRfcGFkdHkgYnVmIHBhZHR5O1xuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyonXG5cbigqIFByaW50IHByZWNpc2lvbiBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBmb3JtYXQtbGlrZSBzeW50YXguICopXG5sZXQgYnByaW50X3ByZWNpc2lvbiA6IHR5cGUgYSBiIC4gYnVmZmVyIC0+IChhLCBiKSBwcmVjaXNpb24gLT4gdW5pdCA9XG4gIGZ1biBidWYgcHJlYyAtPiBtYXRjaCBwcmVjIHdpdGhcbiAgfCBOb19wcmVjaXNpb24gLT4gKClcbiAgfCBMaXRfcHJlY2lzaW9uIG4gLT5cbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmICcuJztcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgbik7XG4gIHwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIi4qXCJcblxuKCoqKilcblxuKCogUHJpbnQgdGhlIG9wdGlvbmFsICcrJywgJyAnIG9yICcjJyBhc3NvY2lhdGVkIHRvIGFuIGludCBjb252ZXJzaW9uLiAqKVxubGV0IGJwcmludF9pY29udl9mbGFnIGJ1ZiBpY29udiA9IG1hdGNoIGljb252IHdpdGhcbiAgfCBJbnRfcGQgfCBJbnRfcGkgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKydcbiAgfCBJbnRfc2QgfCBJbnRfc2kgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnICdcbiAgfCBJbnRfQ3ggfCBJbnRfQ1ggfCBJbnRfQ28gfCBJbnRfQ2QgfCBJbnRfQ2kgfCBJbnRfQ3UgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyMnXG4gIHwgSW50X2QgfCBJbnRfaSB8IEludF94IHwgSW50X1ggfCBJbnRfbyB8IEludF91IC0+ICgpXG5cbigqIFByaW50IGFuIGNvbXBsZXRlIGludCBmb3JtYXQgaW4gYSBidWZmZXIgKGV4OiBcIiUzLipkXCIpLiAqKVxubGV0IGJwcmludF9pbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyA9XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnO1xuICBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgYnByaW50X2ljb252X2ZsYWcgYnVmIGljb252O1xuICBicHJpbnRfcGFkZGluZyBidWYgcGFkO1xuICBicHJpbnRfcHJlY2lzaW9uIGJ1ZiBwcmVjO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2ljb252IGljb252KVxuXG4oKiBQcmludCBhIGNvbXBsZXRlIGludDMyLCBuYXRpdmVpbnQgb3IgaW50NjQgZm9ybWF0IGluIGEgYnVmZmVyLiAqKVxubGV0IGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyBjID1cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gIGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICBicHJpbnRfaWNvbnZfZmxhZyBidWYgaWNvbnY7XG4gIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7XG4gIGJwcmludF9wcmVjaXNpb24gYnVmIHByZWM7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAoY2hhcl9vZl9pY29udiBpY29udilcblxuKCoqKilcblxuKCogUHJpbnQgdGhlIG9wdGlvbmFsICcrJywgJyAnIGFuZC9vciAnIycgYXNzb2NpYXRlZCB0byBhIGZsb2F0IGNvbnZlcnNpb24uICopXG5sZXQgYnByaW50X2Zjb252X2ZsYWcgYnVmIGZjb252ID1cbiAgYmVnaW4gbWF0Y2ggZnN0IGZjb252IHdpdGhcbiAgfCBGbG9hdF9mbGFnX3AgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKydcbiAgfCBGbG9hdF9mbGFnX3MgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnICdcbiAgfCBGbG9hdF9mbGFnXyAtPiAoKSBlbmQ7XG4gIG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfQ0YgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnIydcbiAgfCBGbG9hdF9mIHwgRmxvYXRfZSB8IEZsb2F0X0UgfCBGbG9hdF9nIHwgRmxvYXRfR1xuICB8IEZsb2F0X0YgfCBGbG9hdF9oIHwgRmxvYXRfSCAtPiAoKVxuXG4oKiBQcmludCBhIGNvbXBsZXRlIGZsb2F0IGZvcm1hdCBpbiBhIGJ1ZmZlciAoZXg6IFwiJSsqLjNmXCIpLiAqKVxubGV0IGJwcmludF9mbG9hdF9mbXQgYnVmIGlnbl9mbGFnIGZjb252IHBhZCBwcmVjID1cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gIGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICBicHJpbnRfZmNvbnZfZmxhZyBidWYgZmNvbnY7XG4gIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7XG4gIGJwcmludF9wcmVjaXNpb24gYnVmIHByZWM7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgKGNoYXJfb2ZfZmNvbnYgZmNvbnYpXG5cbigqIENvbXB1dGUgdGhlIGxpdGVyYWwgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgRm9ybWF0dGluZ19saXQuICopXG4oKiBVc2VkIGJ5IFByaW50ZiBhbmQgU2NhbmYgd2hlcmUgZm9ybWF0dGluZyBpcyBub3QgaW50ZXJwcmV0ZWQuICopXG5sZXQgc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZvcm1hdHRpbmdfbGl0ID0gbWF0Y2ggZm9ybWF0dGluZ19saXQgd2l0aFxuICB8IENsb3NlX2JveCAgICAgICAgICAgIC0+IFwiQF1cIlxuICB8IENsb3NlX3RhZyAgICAgICAgICAgIC0+IFwiQH1cIlxuICB8IEJyZWFrIChzdHIsIF8sIF8pICAgIC0+IHN0clxuICB8IEZGbHVzaCAgICAgICAgICAgICAgIC0+IFwiQD9cIlxuICB8IEZvcmNlX25ld2xpbmUgICAgICAgIC0+IFwiQFxcblwiXG4gIHwgRmx1c2hfbmV3bGluZSAgICAgICAgLT4gXCJALlwiXG4gIHwgTWFnaWNfc2l6ZSAoc3RyLCBfKSAgLT4gc3RyXG4gIHwgRXNjYXBlZF9hdCAgICAgICAgICAgLT4gXCJAQFwiXG4gIHwgRXNjYXBlZF9wZXJjZW50ICAgICAgLT4gXCJAJVwiXG4gIHwgU2Nhbl9pbmRpYyBjIC0+IFwiQFwiIF4gKFN0cmluZy5tYWtlIDEgYylcblxuKCoqKilcblxuKCogUHJpbnQgYSBsaXRlcmFsIGNoYXIgaW4gYSBidWZmZXIsIGVzY2FwZSAnJScgYnkgXCIlJVwiLiAqKVxubGV0IGJwcmludF9jaGFyX2xpdGVyYWwgYnVmIGNociA9IG1hdGNoIGNociB3aXRoXG4gIHwgJyUnIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUlXCJcbiAgfCBfIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgY2hyXG5cbigqIFByaW50IGEgbGl0ZXJhbCBzdHJpbmcgaW4gYSBidWZmZXIsIGVzY2FwZSBhbGwgJyUnIGJ5IFwiJSVcIi4gKilcbmxldCBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIHN0ciA9XG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHN0ciAtIDEgZG9cbiAgICBicHJpbnRfY2hhcl9saXRlcmFsIGJ1ZiBzdHIuW2ldXG4gIGRvbmVcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHByZXR0eS1wcmludGluZyAqKVxuXG4oKiBQcmludCBhIGNvbXBsZXRlIGZvcm1hdCB0eXBlIChhbiBmbXR0eSkgaW4gYSBidWZmZXIuICopXG5sZXQgcmVjIGJwcmludF9mbXR0eSA6IHR5cGUgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgLlxuICAgIGJ1ZmZlciAtPiAoYSwgYiwgYywgZCwgZSwgZiwgZywgaCwgaSwgaiwgaywgbCkgZm10dHlfcmVsIC0+IHVuaXQgPVxuZnVuIGJ1ZiBmbXR0eSAtPiBtYXRjaCBmbXR0eSB3aXRoXG4gIHwgQ2hhcl90eSByZXN0ICAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWNcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBTdHJpbmdfdHkgcmVzdCAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlc1wiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEludF90eSByZXN0ICAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVpXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgSW50MzJfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWxpXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlbmlcIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEludDY0X3R5IHJlc3QgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVMaVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgRmxvYXRfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWZcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBCb29sX3R5IHJlc3QgICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlQlwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEFscGhhX3R5IHJlc3QgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVhXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgVGhldGFfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXRcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBBbnlfdHkgcmVzdCAgICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlP1wiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IFJlYWRlcl90eSByZXN0ICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVyXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG5cbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJV9yXCI7XG4gICAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuXG4gIHwgRm9ybWF0X2FyZ190eSAoc3ViX2ZtdHR5LCByZXN0KSAtPlxuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiV7XCI7IGJwcmludF9mbXR0eSBidWYgc3ViX2ZtdHR5O1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiV9XCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHN1Yl9mbXR0eSwgXywgcmVzdCkgLT5cbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlKFwiOyBicHJpbnRfZm10dHkgYnVmIHN1Yl9mbXR0eTtcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlKVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG5cbiAgfCBFbmRfb2ZfZm10dHkgLT4gKClcblxuKCoqKilcblxubGV0IHJlYyBpbnRfb2ZfY3VzdG9tX2FyaXR5IDogdHlwZSBhIGIgYyAuXG4gIChhLCBiLCBjKSBjdXN0b21fYXJpdHkgLT4gaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBDdXN0b21femVybyAtPiAwXG4gIHwgQ3VzdG9tX3N1Y2MgeCAtPiAxICsgaW50X29mX2N1c3RvbV9hcml0eSB4XG5cbigqIFByaW50IGEgY29tcGxldGUgZm9ybWF0IGluIGEgYnVmZmVyLiAqKVxubGV0IGJwcmludF9mbXQgYnVmIGZtdCA9XG4gIGxldCByZWMgZm10aXRlciA6IHR5cGUgYSBiIGMgZCBlIGYgLlxuICAgICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBib29sIC0+IHVuaXQgPVxuICBmdW4gZm10IGlnbl9mbGFnIC0+IG1hdGNoIGZtdCB3aXRoXG4gICAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3MnO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ1MnO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfaW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWM7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyAnbCc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfYWx0aW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWMgJ24nO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfYWx0aW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWMgJ0wnO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfZmxvYXRfZm10IGJ1ZiBpZ25fZmxhZyBmY29udiBwYWQgcHJlYztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcblxuICAgIHwgQ2hhciByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICdjJzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ0MnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBCb29sIChwYWQsIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkZGluZyBidWYgcGFkOyBidWZmZXJfYWRkX2NoYXIgYnVmICdCJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEFscGhhIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ2EnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBUaGV0YSByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICd0JzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQ3VzdG9tIChhcml0eSwgXywgcmVzdCkgLT5cbiAgICAgIGZvciBfaSA9IDEgdG8gaW50X29mX2N1c3RvbV9hcml0eSBhcml0eSBkb1xuICAgICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJz8nO1xuICAgICAgZG9uZTtcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFJlYWRlciByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICdyJzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgRmx1c2ggcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJSFcIjtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcblxuICAgIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT5cbiAgICAgIGJwcmludF9zdHJpbmdfbGl0ZXJhbCBidWYgc3RyO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuICAgIHwgQ2hhcl9saXRlcmFsIChjaHIsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfY2hhcl9saXRlcmFsIGJ1ZiBjaHI7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG5cbiAgICB8IEZvcm1hdF9hcmcgKHBhZF9vcHQsIGZtdHR5LCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZF9vcHQgYnVmIHBhZF9vcHQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3snO1xuICAgICAgYnByaW50X2ZtdHR5IGJ1ZiBmbXR0eTsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ30nO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBmbXR0eSwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRfb3B0IGJ1ZiBwYWRfb3B0OyBidWZmZXJfYWRkX2NoYXIgYnVmICcoJztcbiAgICAgIGJwcmludF9mbXR0eSBidWYgZm10dHk7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBidWZmZXJfYWRkX2NoYXIgYnVmICcpJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcblxuICAgIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRfb3B0IGJ1ZiB3aWR0aF9vcHQ7IGJwcmludF9jaGFyX3NldCBidWYgY2hhcl9zZXQ7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAoY2hhcl9vZl9jb3VudGVyIGNvdW50ZXIpO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3N0cmluZ19saXRlcmFsIGJ1ZiBcIjBjXCI7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcblxuICAgIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgICAgbGV0IFBhcmFtX2Zvcm1hdF9FQkIgZm10JyA9IHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCBpZ24gcmVzdCBpblxuICAgICAgZm10aXRlciBmbXQnIHRydWU7XG5cbiAgICB8IEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSAtPlxuICAgICAgYnByaW50X3N0cmluZ19saXRlcmFsIGJ1ZiAoc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQpO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuICAgIHwgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIHJlc3QpIC0+XG4gICAgICBiZWdpbiBtYXRjaCBmbXRpbmdfZ2VuIHdpdGhcbiAgICAgIHwgT3Blbl90YWcgKEZvcm1hdCAoXywgc3RyKSkgLT5cbiAgICAgICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiQHtcIjsgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIHN0clxuICAgICAgfCBPcGVuX2JveCAoRm9ybWF0IChfLCBzdHIpKSAtPlxuICAgICAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCJAW1wiOyBidWZmZXJfYWRkX3N0cmluZyBidWYgc3RyXG4gICAgICBlbmQ7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG5cbiAgICB8IEVuZF9vZl9mb3JtYXQgLT4gKClcblxuICBpbiBmbXRpdGVyIGZtdCBmYWxzZVxuXG4oKioqKVxuXG4oKiBDb252ZXJ0IGEgZm9ybWF0IHRvIHN0cmluZy4gKilcbmxldCBzdHJpbmdfb2ZfZm10IGZtdCA9XG4gIGxldCBidWYgPSBidWZmZXJfY3JlYXRlIDE2IGluXG4gIGJwcmludF9mbXQgYnVmIGZtdDtcbiAgYnVmZmVyX2NvbnRlbnRzIGJ1ZlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBUeXBlIGV4dHJhY3Rpb24gKilcblxudHlwZSAoXywgXykgZXEgPSBSZWZsIDogKCdhLCAnYSkgZXFcblxuKCogSW52YXJpYW50OiB0aGlzIGZ1bmN0aW9uIGlzIHRoZSBpZGVudGl0eSBvbiB2YWx1ZXMuXG5cbiAgIEluIHBhcnRpY3VsYXIsIGlmICh0eTEsIHR5MikgaGF2ZSBlcXVhbCB2YWx1ZXMsIHRoZW5cbiAgICh0cmFucyAoc3ltbSB0eTEpIHR5MikgcmVzcGVjdHMgdGhlICd0cmFucycgcHJlY29uZGl0aW9uLiAqKVxubGV0IHJlYyBzeW1tIDogdHlwZSBhMSBiMSBjMSBkMSBlMSBmMSBhMiBiMiBjMiBkMiBlMiBmMiAuXG4gICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICBhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWxcbi0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyLFxuICAgIGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdHR5X3JlbFxuPSBmdW5jdGlvblxuICB8IENoYXJfdHkgcmVzdCAtPiBDaGFyX3R5IChzeW1tIHJlc3QpXG4gIHwgSW50X3R5IHJlc3QgLT4gSW50X3R5IChzeW1tIHJlc3QpXG4gIHwgSW50MzJfdHkgcmVzdCAtPiBJbnQzMl90eSAoc3ltbSByZXN0KVxuICB8IEludDY0X3R5IHJlc3QgLT4gSW50NjRfdHkgKHN5bW0gcmVzdClcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPiBOYXRpdmVpbnRfdHkgKHN5bW0gcmVzdClcbiAgfCBGbG9hdF90eSByZXN0IC0+IEZsb2F0X3R5IChzeW1tIHJlc3QpXG4gIHwgQm9vbF90eSByZXN0IC0+IEJvb2xfdHkgKHN5bW0gcmVzdClcbiAgfCBTdHJpbmdfdHkgcmVzdCAtPiBTdHJpbmdfdHkgKHN5bW0gcmVzdClcbiAgfCBUaGV0YV90eSByZXN0IC0+IFRoZXRhX3R5IChzeW1tIHJlc3QpXG4gIHwgQWxwaGFfdHkgcmVzdCAtPiBBbHBoYV90eSAoc3ltbSByZXN0KVxuICB8IEFueV90eSByZXN0IC0+IEFueV90eSAoc3ltbSByZXN0KVxuICB8IFJlYWRlcl90eSByZXN0IC0+IFJlYWRlcl90eSAoc3ltbSByZXN0KVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT4gSWdub3JlZF9yZWFkZXJfdHkgKHN5bW0gcmVzdClcbiAgfCBGb3JtYXRfYXJnX3R5ICh0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnX3R5ICh0eSwgc3ltbSByZXN0KVxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTIsIHR5MSwgc3ltbSByZXN0KVxuICB8IEVuZF9vZl9mbXR0eSAtPiBFbmRfb2ZfZm10dHlcblxubGV0IHJlYyBmbXR0eV9yZWxfZGV0IDogdHlwZSBhMSBiIGMgZDEgZTEgZjEgYTIgZDIgZTIgZjIgLlxuICAoYTEsIGIsIGMsIGQxLCBlMSwgZjEsXG4gICBhMiwgYiwgYywgZDIsIGUyLCBmMikgZm10dHlfcmVsIC0+XG4gICAgKChmMSwgZjIpIGVxIC0+IChhMSwgYTIpIGVxKVxuICAqICgoYTEsIGEyKSBlcSAtPiAoZjEsIGYyKSBlcSlcbiAgKiAoKGUxLCBlMikgZXEgLT4gKGQxLCBkMikgZXEpXG4gICogKChkMSwgZDIpIGVxIC0+IChlMSwgZTIpIGVxKVxuPSBmdW5jdGlvblxuICB8IEVuZF9vZl9mbXR0eSAtPlxuICAgIChmdW4gUmVmbCAtPiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBSZWZsKVxuICB8IENoYXJfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBTdHJpbmdfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBJbnRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBJbnQzMl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEludDY0X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgRmxvYXRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBCb29sX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG5cbiAgfCBUaGV0YV90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEFscGhhX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgQW55X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZWQgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBkZSBSZWZsIGluIFJlZmwpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBlZCBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGRlIFJlZmwgaW4gUmVmbClcbiAgfCBGb3JtYXRfYXJnX3R5IChfdHksIHJlc3QpIC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgbGV0IHR5ID0gdHJhbnMgKHN5bW0gdHkxKSB0eTIgaW5cbiAgICBsZXQgYWcsIGdhLCBkaiwgamQgPSBmbXR0eV9yZWxfZGV0IHR5IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBsZXQgUmVmbCA9IGFnIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZ2EgUmVmbCBpbiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZWQgUmVmbCBpbiBsZXQgUmVmbCA9IGRqIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gamQgUmVmbCBpbiBsZXQgUmVmbCA9IGRlIFJlZmwgaW4gUmVmbClcblxuKCogUHJlY29uZGl0aW9uOiB3ZSBhc3N1bWUgdGhhdCB0aGUgdHdvIGZtdHR5X3JlbCBhcmd1bWVudHMgaGF2ZSBlcXVhbFxuICAgdmFsdWVzIChhdCBwb3NzaWJseSBkaXN0aW5jdCB0eXBlcyk7IHRoaXMgaW52YXJpYW50IGNvbWVzIGZyb20gdGhlIHdheVxuICAgZm10dHlfcmVsIHdpdG5lc3NlcyBhcmUgcHJvZHVjZWQgYnkgdGhlIHR5cGUtY2hlY2tlclxuXG4gICBUaGUgY29kZSBiZWxvdyB1c2VzIChhc3NlcnQgZmFsc2UpIHdoZW4gdGhpcyBhc3N1bXB0aW9uIGlzIGJyb2tlbi4gVGhlXG4gICBjb2RlIHBhdHRlcm4gaXMgdGhlIGZvbGxvd2luZzpcblxuICAgICB8IEZvbyB4LCBGb28geSAtPlxuICAgICAgICgqIGNhc2Ugd2hlcmUgaW5kZWVkIGJvdGggdmFsdWVzXG4gICAgICAgICAgc3RhcnQgd2l0aCBjb25zdHJ1Y3RvciBGb28gKilcbiAgICAgfCBGb28gXywgX1xuICAgICB8IF8sIEZvbyBfIC0+XG4gICAgICAgKCogZGlmZmVyZW50IGhlYWQgY29uc3RydWN0b3JzOiBicm9rZW4gcHJlY29uZGl0aW9uICopXG4gICAgICAgYXNzZXJ0IGZhbHNlXG4qKVxuYW5kIHRyYW5zIDogdHlwZVxuICBhMSBiMSBjMSBkMSBlMSBmMVxuICBhMiBiMiBjMiBkMiBlMiBmMlxuICBhMyBiMyBjMyBkMyBlMyBmM1xuLlxuICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlfcmVsXG4tPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMixcbiAgICBhMywgYjMsIGMzLCBkMywgZTMsIGYzKSBmbXR0eV9yZWxcbi0+IChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgIGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdHR5X3JlbFxuPSBmdW4gdHkxIHR5MiAtPiBtYXRjaCB0eTEsIHR5MiB3aXRoXG4gIHwgQ2hhcl90eSByZXN0MSwgQ2hhcl90eSByZXN0MiAtPiBDaGFyX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBTdHJpbmdfdHkgcmVzdDEsIFN0cmluZ190eSByZXN0MiAtPiBTdHJpbmdfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEJvb2xfdHkgcmVzdDEsIEJvb2xfdHkgcmVzdDIgLT4gQm9vbF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSW50X3R5IHJlc3QxLCBJbnRfdHkgcmVzdDIgLT4gSW50X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBJbnQzMl90eSByZXN0MSwgSW50MzJfdHkgcmVzdDIgLT4gSW50MzJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEludDY0X3R5IHJlc3QxLCBJbnQ2NF90eSByZXN0MiAtPiBJbnQ2NF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QxLCBOYXRpdmVpbnRfdHkgcmVzdDIgLT4gTmF0aXZlaW50X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBGbG9hdF90eSByZXN0MSwgRmxvYXRfdHkgcmVzdDIgLT4gRmxvYXRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuXG4gIHwgQWxwaGFfdHkgcmVzdDEsIEFscGhhX3R5IHJlc3QyIC0+IEFscGhhX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBBbHBoYV90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIEFscGhhX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBUaGV0YV90eSByZXN0MSwgVGhldGFfdHkgcmVzdDIgLT4gVGhldGFfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IFRoZXRhX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgVGhldGFfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEFueV90eSByZXN0MSwgQW55X3R5IHJlc3QyIC0+IEFueV90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgQW55X3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgQW55X3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBSZWFkZXJfdHkgcmVzdDEsIFJlYWRlcl90eSByZXN0MiAtPiBSZWFkZXJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IFJlYWRlcl90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIFJlYWRlcl90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdDEsIElnbm9yZWRfcmVhZGVyX3R5IHJlc3QyIC0+XG4gICAgSWdub3JlZF9yZWFkZXJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgSWdub3JlZF9yZWFkZXJfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEZvcm1hdF9hcmdfdHkgKHR5MSwgcmVzdDEpLCBGb3JtYXRfYXJnX3R5ICh0eTIsIHJlc3QyKSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHRyYW5zIHR5MSB0eTIsIHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEZvcm1hdF9hcmdfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBGb3JtYXRfYXJnX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MTEsIHR5MTIsIHJlc3QxKSxcbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MjEsIHR5MjIsIHJlc3QyKSAtPlxuICAgIGxldCB0eSA9IHRyYW5zIChzeW1tIHR5MTIpIHR5MjEgaW5cbiAgICBsZXQgXywgZjIsIF8sIGY0ID0gZm10dHlfcmVsX2RldCB0eSBpblxuICAgIGxldCBSZWZsID0gZjIgUmVmbCBpblxuICAgIGxldCBSZWZsID0gZjQgUmVmbCBpblxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkxMSwgdHkyMiwgdHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgRm9ybWF0X3N1YnN0X3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgRm9ybWF0X3N1YnN0X3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBFbmRfb2ZfZm10dHksIEVuZF9vZl9mbXR0eSAtPiBFbmRfb2ZfZm10dHlcbiAgfCBFbmRfb2ZfZm10dHksIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgRW5kX29mX2ZtdHR5IC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgcmVjIGZtdHR5X29mX2Zvcm1hdHRpbmdfZ2VuIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gIChhLCBiLCBjLCBkLCBlLCBmKSBmb3JtYXR0aW5nX2dlbiAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG5mdW4gZm9ybWF0dGluZ19nZW4gLT4gbWF0Y2ggZm9ybWF0dGluZ19nZW4gd2l0aFxuICB8IE9wZW5fdGFnIChGb3JtYXQgKGZtdCwgXykpIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBPcGVuX2JveCAoRm9ybWF0IChmbXQsIF8pKSAtPiBmbXR0eV9vZl9mbXQgZm10XG5cbigqIEV4dHJhY3QgdGhlIHR5cGUgcmVwcmVzZW50YXRpb24gKGFuIGZtdHR5KSBvZiBhIGZvcm1hdC4gKilcbmFuZCBmbXR0eV9vZl9mbXQgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGZtdHR5IC0+IG1hdGNoIGZtdHR5IHdpdGhcbiAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCAoU3RyaW5nX3R5IChmbXR0eV9vZl9mbXQgcmVzdCkpXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCAoU3RyaW5nX3R5IChmbXR0eV9vZl9mbXQgcmVzdCkpXG5cbiAgfCBJbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoSW50X3R5IHR5X3Jlc3QpIGluXG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgcHJlY190eVxuICB8IEludDMyIChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IHR5X3Jlc3QgPSBmbXR0eV9vZl9mbXQgcmVzdCBpblxuICAgIGxldCBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IHByZWMgKEludDMyX3R5IHR5X3Jlc3QpIGluXG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgcHJlY190eVxuICB8IE5hdGl2ZWludCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChOYXRpdmVpbnRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgSW50NjQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoSW50NjRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgRmxvYXQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoRmxvYXRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG5cbiAgfCBDaGFyIHJlc3QgICAgICAgICAgICAgICAgICAtPiBDaGFyX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBDYW1sX2NoYXIgcmVzdCAgICAgICAgICAgICAtPiBDaGFyX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBCb29sIChwYWQsIHJlc3QpICAgICAgICAgICAtPlxuICAgICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgKEJvb2xfdHkgKGZtdHR5X29mX2ZtdCByZXN0KSlcbiAgfCBBbHBoYSByZXN0ICAgICAgICAgICAgICAgICAtPiBBbHBoYV90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgVGhldGEgcmVzdCAgICAgICAgICAgICAgICAgLT4gVGhldGFfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IEN1c3RvbSAoYXJpdHksIF8sIHJlc3QpICAgIC0+IGZtdHR5X29mX2N1c3RvbSBhcml0eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgUmVhZGVyIHJlc3QgICAgICAgICAgICAgICAgLT4gUmVhZGVyX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcblxuICB8IEZvcm1hdF9hcmcgKF8sIHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBGb3JtYXRfc3Vic3QgKF8sIHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdF90eSAodHksIHR5LCBmbXR0eV9vZl9mbXQgcmVzdClcblxuICB8IEZsdXNoIHJlc3QgICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCByZXN0XG4gIHwgU3RyaW5nX2xpdGVyYWwgKF8sIHJlc3QpICAgLT4gZm10dHlfb2ZfZm10IHJlc3RcbiAgfCBDaGFyX2xpdGVyYWwgKF8sIHJlc3QpICAgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuXG4gIHwgU2Nhbl9jaGFyX3NldCAoXywgXywgcmVzdCkgLT4gU3RyaW5nX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBTY2FuX2dldF9jb3VudGVyIChfLCByZXN0KSAtPiBJbnRfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgICAgICAgIC0+IENoYXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgIC0+IGZtdHR5X29mX2lnbm9yZWRfZm9ybWF0IGlnbiByZXN0XG4gIHwgRm9ybWF0dGluZ19saXQgKF8sIHJlc3QpICAgLT4gZm10dHlfb2ZfZm10IHJlc3RcbiAgfCBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgcmVzdCkgIC0+XG4gICAgY29uY2F0X2ZtdHR5IChmbXR0eV9vZl9mb3JtYXR0aW5nX2dlbiBmbXRpbmdfZ2VuKSAoZm10dHlfb2ZfZm10IHJlc3QpXG5cbiAgfCBFbmRfb2ZfZm9ybWF0ICAgICAgICAgICAgICAtPiBFbmRfb2ZfZm10dHlcblxuYW5kIGZtdHR5X29mX2N1c3RvbSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgKGEsIHgsIHkpIGN1c3RvbV9hcml0eSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgKHksIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbmZ1biBhcml0eSBmbXR0eSAtPiBtYXRjaCBhcml0eSB3aXRoXG4gIHwgQ3VzdG9tX3plcm8gLT4gZm10dHlcbiAgfCBDdXN0b21fc3VjYyBhcml0eSAtPiBBbnlfdHkgKGZtdHR5X29mX2N1c3RvbSBhcml0eSBmbXR0eSlcblxuKCogRXh0cmFjdCB0aGUgZm10dHkgb2YgYW4gaWdub3JlZCBwYXJhbWV0ZXIgZm9sbG93ZWQgYnkgdGhlIHJlc3Qgb2ZcbiAgIHRoZSBmb3JtYXQuICopXG5hbmQgZm10dHlfb2ZfaWdub3JlZF9mb3JtYXQgOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGlnbm9yZWQgLT5cbiAgICAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbmZ1biBpZ24gZm10IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9zdHJpbmcgXyAgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9pbnQgKF8sIF8pICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9pbnQzMiAoXywgXykgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgKF8sIF8pICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9pbnQ2NCAoXywgXykgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9mbG9hdCAoXywgXykgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIF8gICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKF8sIGZtdHR5KSAtPiBjb25jYXRfZm10dHkgZm10dHkgKGZtdHR5X29mX2ZtdCBmbXQpXG4gIHwgSWdub3JlZF9yZWFkZXIgICAgICAgICAgICAgICAgICAtPiBJZ25vcmVkX3JlYWRlcl90eSAoZm10dHlfb2ZfZm10IGZtdClcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgXyAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcblxuKCogQWRkIGFuIEludF90eSBub2RlIGlmIHBhZGRpbmcgaXMgdGFrZW4gYXMgYW4gZXh0cmEgYXJndW1lbnQgKGV4OiBcIiUqc1wiKS4gKilcbmFuZCBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IDogdHlwZSB4IGEgYiBjIGQgZSBmIC5cbiAgICAoeCwgYSkgcGFkZGluZyAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT4gKHgsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbiAgZnVuIHBhZCBmbXR0eSAtPiBtYXRjaCBwYWQgd2l0aFxuICAgIHwgTm9fcGFkZGluZyAgICAtPiBmbXR0eVxuICAgIHwgTGl0X3BhZGRpbmcgXyAtPiBmbXR0eVxuICAgIHwgQXJnX3BhZGRpbmcgXyAtPiBJbnRfdHkgZm10dHlcblxuKCogQWRkIGFuIEludF90eSBub2RlIGlmIHByZWNpc2lvbiBpcyB0YWtlbiBhcyBhbiBleHRyYSBhcmd1bWVudCAoZXg6IFwiJS4qZlwiKS4qKVxuYW5kIGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSA6IHR5cGUgeCBhIGIgYyBkIGUgZiAuXG4gICAgKHgsIGEpIHByZWNpc2lvbiAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT4gKHgsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbiAgZnVuIHByZWMgZm10dHkgLT4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgfCBOb19wcmVjaXNpb24gICAgLT4gZm10dHlcbiAgICB8IExpdF9wcmVjaXNpb24gXyAtPiBmbXR0eVxuICAgIHwgQXJnX3ByZWNpc2lvbiAgIC0+IEludF90eSBmbXR0eVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCB0eXBpbmcgKilcblxuKCogRXhjZXB0aW9uIHJhaXNlZCB3aGVuIGEgZm9ybWF0IGRvZXMgbm90IG1hdGNoIGEgZ2l2ZW4gZm9ybWF0IHR5cGUuICopXG5leGNlcHRpb24gVHlwZV9taXNtYXRjaFxuXG4oKiBUeXBlIGEgcGFkZGluZy4gKilcbigqIFRha2UgYW4gSW50X3R5IGZyb20gdGhlIGZtdHR5IGlmIHRoZSBpbnRlZ2VyIHNob3VsZCBiZSBrZXB0IGFzIGFyZ3VtZW50LiAqKVxuKCogUmFpc2UgVHlwZV9taXNtYXRjaCBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgdHlwZV9wYWRkaW5nIDogdHlwZSBhIGIgYyBkIGUgZiB4IHkgLlxuICAgICh4LCB5KSBwYWRkaW5nIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAgICAgKGEsIGIsIGMsIGQsIGUsIGYpIHBhZGRpbmdfZm10dHlfZWJiID1cbmZ1biBwYWQgZm10dHkgLT4gbWF0Y2ggcGFkLCBmbXR0eSB3aXRoXG4gIHwgTm9fcGFkZGluZywgXyAtPiBQYWRkaW5nX2ZtdHR5X0VCQiAoTm9fcGFkZGluZywgZm10dHkpXG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgXyAtPiBQYWRkaW5nX2ZtdHR5X0VCQiAoTGl0X3BhZGRpbmcgKHBhZHR5LHcpLGZtdHR5KVxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBJbnRfdHkgcmVzdCAtPiBQYWRkaW5nX2ZtdHR5X0VCQiAoQXJnX3BhZGRpbmcgcGFkdHkscmVzdClcbiAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuKCogQ29udmVydCBhICh1cGFkZGluZywgdXByZWNpc2lvbikgdG8gYSAocGFkZGluZywgcHJlY2lzaW9uKS4gKilcbigqIFRha2Ugb25lIG9yIHR3byBJbnRfdHkgZnJvbSB0aGUgZm10dHkgaWYgbmVlZGVkLiAqKVxuKCogUmFpc2UgVHlwZV9taXNtYXRjaCBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgdHlwZV9wYWRwcmVjIDogdHlwZSBhIGIgYyBkIGUgZiB4IHkgeiAuXG4gICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6KSBwcmVjaXNpb24gLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIHBhZHByZWNfZm10dHlfZWJiID1cbmZ1biBwYWQgcHJlYyBmbXR0eSAtPiBtYXRjaCBwcmVjLCB0eXBlX3BhZGRpbmcgcGFkIGZtdHR5IHdpdGhcbiAgfCBOb19wcmVjaXNpb24sIFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIHJlc3QpIC0+XG4gICAgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgTm9fcHJlY2lzaW9uLCByZXN0KVxuICB8IExpdF9wcmVjaXNpb24gcCwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgcmVzdCkgLT5cbiAgICBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBMaXRfcHJlY2lzaW9uIHAsIHJlc3QpXG4gIHwgQXJnX3ByZWNpc2lvbiwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgSW50X3R5IHJlc3QpIC0+XG4gICAgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgQXJnX3ByZWNpc2lvbiwgcmVzdClcbiAgfCBfLCBQYWRkaW5nX2ZtdHR5X0VCQiAoXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG4oKiBUeXBlIGEgZm9ybWF0IGFjY29yZGluZyB0byBhbiBmbXR0eS4gKilcbigqIElmIHR5cGluZyBzdWNjZWVkLCBnZW5lcmF0ZSBhIGNvcHkgb2YgdGhlIGZvcm1hdCB3aXRoIHRoZSBzYW1lXG4gICAgdHlwZSBwYXJhbWV0ZXJzIGFzIHRoZSBmbXR0eS4gKilcbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IHJlYyB0eXBlX2Zvcm1hdCA6XG4gIHR5cGUgYTEgYjEgYzEgZDEgZTEgZjFcbiAgICAgICBhMiBiMiBjMiBkMiBlMiBmMiAgLlxuICAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eVxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10XG49IGZ1biBmbXQgZm10dHkgLT4gbWF0Y2ggdHlwZV9mb3JtYXRfZ2VuIGZtdCBmbXR0eSB3aXRoXG4gIHwgRm10X2ZtdHR5X0VCQiAoZm10JywgRW5kX29mX2ZtdHR5KSAtPiBmbXQnXG4gIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbmFuZCB0eXBlX2Zvcm1hdF9nZW4gOlxuICB0eXBlIGExIGIxIGMxIGQxIGUxIGYxXG4gICAgICAgYTIgYjIgYzIgZDIgZTIgZjIgIC5cbiAgICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdFxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlcbiAgLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdF9mbXR0eV9lYmJcbj0gZnVuIGZtdCBmbXR0eSAtPiBtYXRjaCBmbXQsIGZtdHR5IHdpdGhcbiAgfCBDaGFyIGZtdF9yZXN0LCBDaGFyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQ2hhciBmbXQnLCBmbXR0eScpXG4gIHwgQ2FtbF9jaGFyIGZtdF9yZXN0LCBDaGFyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQ2FtbF9jaGFyIGZtdCcsIGZtdHR5JylcbiAgfCBTdHJpbmcgKHBhZCwgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZGRpbmcgcGFkIGZtdHR5IHdpdGhcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIFN0cmluZ190eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoU3RyaW5nIChwYWQsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAoXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZGRpbmcgcGFkIGZtdHR5IHdpdGhcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIFN0cmluZ190eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoQ2FtbF9zdHJpbmcgKHBhZCwgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEludF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSW50IChpY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBJbnQzMl90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSW50MzIgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBOYXRpdmVpbnRfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZHByZWMgcGFkIHByZWMgZm10dHkgd2l0aFxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgcHJlYywgSW50NjRfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKEludDY0IChpY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBGbG9hdF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgQm9vbCAocGFkLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgQm9vbF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoQm9vbCAocGFkLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEZsdXNoIGZtdF9yZXN0LCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZsdXNoIGZtdCcsIGZtdHR5JylcblxuICB8IFN0cmluZ19saXRlcmFsIChzdHIsIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChTdHJpbmdfbGl0ZXJhbCAoc3RyLCBmbXQnKSwgZm10dHknKVxuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCBmbXRfcmVzdCksIGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQ2hhcl9saXRlcmFsIChjaHIsIGZtdCcpLCBmbXR0eScpXG5cbiAgfCBGb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHksIGZtdF9yZXN0KSxcbiAgICBGb3JtYXRfYXJnX3R5IChzdWJfZm10dHknLCBmbXR0eV9yZXN0KSAtPlxuICAgIGlmIEZtdHR5X0VCQiBzdWJfZm10dHkgPD4gRm10dHlfRUJCIHN1Yl9mbXR0eScgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHknLCBmbXQnKSwgZm10dHknKVxuICB8IEZvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5LCBmbXRfcmVzdCksXG4gICAgRm9ybWF0X3N1YnN0X3R5IChzdWJfZm10dHkxLCBfc3ViX2ZtdHR5MiwgZm10dHlfcmVzdCkgLT5cbiAgICBpZiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWJfZm10dHkpIDw+IEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1Yl9mbXR0eTEpIHRoZW5cbiAgICAgIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPVxuICAgICAgdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IChlcmFzZV9yZWwgZm10dHlfcmVzdClcbiAgICBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5MSwgZm10JyksIGZtdHR5JylcbiAgKCogUHJpbnRmIGFuZCBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3JzOiAqKVxuICB8IEFscGhhIGZtdF9yZXN0LCBBbHBoYV90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEFscGhhIGZtdCcsIGZtdHR5JylcbiAgfCBUaGV0YSBmbXRfcmVzdCwgVGhldGFfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChUaGV0YSBmbXQnLCBmbXR0eScpXG5cbiAgKCogRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9yczogKilcbiAgfCBGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIGZtdCcpLCBmbXR0eScpXG4gIHwgRm9ybWF0dGluZ19nZW4gKGZvcm1hdHRpbmdfZ2VuLCBmbXRfcmVzdCksIGZtdHR5X3Jlc3QgLT5cbiAgICB0eXBlX2Zvcm1hdHRpbmdfZ2VuIGZvcm1hdHRpbmdfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3RcblxuICAoKiBTY2FuZiBzcGVjaWZpYyBjb25zdHJ1Y3RvcnM6ICopXG4gIHwgUmVhZGVyIGZtdF9yZXN0LCBSZWFkZXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChSZWFkZXIgZm10JywgZm10dHknKVxuICB8IFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIGZtdF9yZXN0KSwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgZm10JyksIGZtdHR5JylcbiAgfCBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXRfcmVzdCksIEludF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdCcpLCBmbXR0eScpXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIHR5cGVfaWdub3JlZF9wYXJhbSBpZ24gcmVzdCBmbXR0eV9yZXN0XG5cbiAgfCBFbmRfb2ZfZm9ybWF0LCBmbXR0eV9yZXN0IC0+IEZtdF9mbXR0eV9FQkIgKEVuZF9vZl9mb3JtYXQsIGZtdHR5X3Jlc3QpXG5cbiAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuYW5kIHR5cGVfZm9ybWF0dGluZ19nZW4gOiB0eXBlIGExIGEzIGIxIGIzIGMxIGMzIGQxIGQzIGUxIGUyIGUzIGYxIGYyIGYzIC5cbiAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm9ybWF0dGluZ19nZW4gLT5cbiAgICAoZjEsIGIxLCBjMSwgZTEsIGUyLCBmMikgZm10IC0+XG4gICAgKGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdHR5IC0+XG4gICAgKGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdF9mbXR0eV9lYmIgPVxuZnVuIGZvcm1hdHRpbmdfZ2VuIGZtdDAgZm10dHkwIC0+IG1hdGNoIGZvcm1hdHRpbmdfZ2VuIHdpdGhcbiAgfCBPcGVuX3RhZyAoRm9ybWF0IChmbXQxLCBzdHIpKSAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQyLCBmbXR0eTIpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdDEgZm10dHkwIGluXG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDMsIGZtdHR5MykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MCBmbXR0eTIgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10Miwgc3RyKSksIGZtdDMpLCBmbXR0eTMpXG4gIHwgT3Blbl9ib3ggKEZvcm1hdCAoZm10MSwgc3RyKSkgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10MiwgZm10dHkyKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQxIGZtdHR5MCBpblxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQzLCBmbXR0eTMpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdDAgZm10dHkyIGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdDIsIHN0cikpLCBmbXQzKSwgZm10dHkzKVxuXG4oKiBUeXBlIGFuIElnbm9yZWRfcGFyYW0gbm9kZSBhY2NvcmRpbmcgdG8gYW4gZm10dHkuICopXG5hbmQgdHlwZV9pZ25vcmVkX3BhcmFtIDogdHlwZSBwIHEgeCB5IHogdCB1IHYgYSBiIGMgZCBlIGYgLlxuICAgICh4LCB5LCB6LCB0LCBxLCBwKSBpZ25vcmVkIC0+XG4gICAgKHAsIHksIHosIHEsIHUsIHYpIGZtdCAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXRfZm10dHlfZWJiID1cbmZ1biBpZ24gZm10IGZtdHR5IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zdHJpbmcgXyAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9pbnQgXyAgICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9pbnQzMiBfICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgXyAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9pbnQ2NCBfICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9mbG9hdCBfICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IF8gICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIF8gYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHkpIC0+XG4gICAgdHlwZV9pZ25vcmVkX3BhcmFtX29uZSAoSWdub3JlZF9mb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHkpKSBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5KSAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHknLCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHkgZm10IGZtdHR5IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9mb3JtYXRfc3Vic3QgKHBhZF9vcHQsIHN1Yl9mbXR0eScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdCcpLFxuICAgICAgICAgICAgICAgICAgIGZtdHR5JylcbiAgfCBJZ25vcmVkX3JlYWRlciAtPiAoXG4gICAgbWF0Y2ggZm10dHkgd2l0aFxuICAgIHwgSWdub3JlZF9yZWFkZXJfdHkgZm10dHlfcmVzdCAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfcmVhZGVyLCBmbXQnKSwgZm10dHknKVxuICAgIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcblxuYW5kIHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgOiB0eXBlIGExIGEyIGIxIGIyIGMxIGMyIGQxIGQyIGUxIGUyIGYxIGYyIC5cbiAgICAoYTIsIGIyLCBjMiwgZDIsIGQyLCBhMikgaWdub3JlZCAtPlxuICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmbXQgLT5cbiAgICAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHkgLT5cbiAgICAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10X2ZtdHR5X2ViYlxuPSBmdW4gaWduIGZtdCBmbXR0eSAtPlxuICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHkgaW5cbiAgRm10X2ZtdHR5X0VCQiAoSWdub3JlZF9wYXJhbSAoaWduLCBmbXQnKSwgZm10dHknKVxuXG4oKiBUeXBpbmcgb2YgdGhlIGNvbXBsZXggY2FzZTogXCIlXyguLi4lKVwiLiAqKVxuYW5kIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIDogdHlwZSB3IHggeSB6IHAgcyB0IHUgYSBiIGMgZCBlIGYgLlxuICAgICh3LCB4LCB5LCB6LCBzLCBwKSBmbXR0eSAtPlxuICAgIChwLCB4LCB5LCBzLCB0LCB1KSBmbXQgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5X2ZtdF9lYmIgPVxuZnVuIHN1Yl9mbXR0eSBmbXQgZm10dHkgLT4gbWF0Y2ggc3ViX2ZtdHR5LCBmbXR0eSB3aXRoXG4gIHwgQ2hhcl90eSBzdWJfZm10dHlfcmVzdCwgQ2hhcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChDaGFyX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBTdHJpbmdfdHkgc3ViX2ZtdHR5X3Jlc3QsIFN0cmluZ190eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChTdHJpbmdfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEludF90eSBzdWJfZm10dHlfcmVzdCwgSW50X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEludF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSW50MzJfdHkgc3ViX2ZtdHR5X3Jlc3QsIEludDMyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEludDMyX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBOYXRpdmVpbnRfdHkgc3ViX2ZtdHR5X3Jlc3QsIE5hdGl2ZWludF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChOYXRpdmVpbnRfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEludDY0X3R5IHN1Yl9mbXR0eV9yZXN0LCBJbnQ2NF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChJbnQ2NF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgRmxvYXRfdHkgc3ViX2ZtdHR5X3Jlc3QsIEZsb2F0X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEZsb2F0X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBCb29sX3R5IHN1Yl9mbXR0eV9yZXN0LCBCb29sX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEJvb2xfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEFscGhhX3R5IHN1Yl9mbXR0eV9yZXN0LCBBbHBoYV90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChBbHBoYV90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgVGhldGFfdHkgc3ViX2ZtdHR5X3Jlc3QsIFRoZXRhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKFRoZXRhX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBSZWFkZXJfdHkgc3ViX2ZtdHR5X3Jlc3QsIFJlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChSZWFkZXJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHN1Yl9mbXR0eV9yZXN0LCBJZ25vcmVkX3JlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChJZ25vcmVkX3JlYWRlcl90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG5cbiAgfCBGb3JtYXRfYXJnX3R5IChzdWIyX2ZtdHR5LCBzdWJfZm10dHlfcmVzdCksXG4gICAgRm9ybWF0X2FyZ190eSAoc3ViMl9mbXR0eScsIGZtdHR5X3Jlc3QpIC0+XG4gICAgaWYgRm10dHlfRUJCIHN1YjJfZm10dHkgPD4gRm10dHlfRUJCIHN1YjJfZm10dHknIHRoZW4gcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEZvcm1hdF9hcmdfdHkgKHN1YjJfZm10dHknLCBzdWJfZm10dHlfcmVzdCcpLCBmbXQnKVxuICB8IEZvcm1hdF9zdWJzdF90eSAoc3ViMV9mbXR0eSwgIHN1YjJfZm10dHksICBzdWJfZm10dHlfcmVzdCksXG4gICAgRm9ybWF0X3N1YnN0X3R5IChzdWIxX2ZtdHR5Jywgc3ViMl9mbXR0eScsIGZtdHR5X3Jlc3QpIC0+XG4gICAgKCogVE9ETyBkZWZpbmUgRm10dHlfcmVsX0VCQiB0byByZW1vdmUgdGhvc2UgZXJhc2VfcmVsICopXG4gICAgaWYgRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMV9mbXR0eSkgPD4gRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMV9mbXR0eScpXG4gICAgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGlmIEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1YjJfZm10dHkpIDw+IEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1YjJfZm10dHknKVxuICAgIHRoZW4gcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBsZXQgc3ViX2ZtdHR5JyA9IHRyYW5zIChzeW1tIHN1YjFfZm10dHknKSBzdWIyX2ZtdHR5JyBpblxuICAgIGxldCBfLCBmMiwgXywgZjQgPSBmbXR0eV9yZWxfZGV0IHN1Yl9mbXR0eScgaW5cbiAgICBsZXQgUmVmbCA9IGYyIFJlZmwgaW5cbiAgICBsZXQgUmVmbCA9IGY0IFJlZmwgaW5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiAoZXJhc2VfcmVsIHN1Yl9mbXR0eV9yZXN0KSBmbXQgZm10dHlfcmVzdFxuICAgIGluXG4gICAgRm10dHlfZm10X0VCQiAoRm9ybWF0X3N1YnN0X3R5IChzdWIxX2ZtdHR5Jywgc3ViMl9mbXR0eScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1tIHN1Yl9mbXR0eV9yZXN0JyksXG4gICAgICAgICAgICAgICAgICAgZm10JylcbiAgfCBFbmRfb2ZfZm10dHksIGZtdHR5IC0+XG4gICAgRm10dHlfZm10X0VCQiAoRW5kX29mX2ZtdHR5LCB0eXBlX2Zvcm1hdF9nZW4gZm10IGZtdHR5KVxuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG4oKiBUaGlzIGltcGxlbWVudGF0aW9uIG9mIGByZWNhc3RgIGlzIGEgYml0IGRpc2FwcG9pbnRpbmcuIFRoZVxuICAgaW52YXJpYW50IHByb3ZpZGVkIGJ5IHRoZSB0eXBlIGFyZSB2ZXJ5IHN0cm9uZzogdGhlIGlucHV0IGZvcm1hdCdzXG4gICB0eXBlIGlzIGluIHJlbGF0aW9uIHRvIHRoZSBvdXRwdXQgdHlwZSdzIGFzIHdpdG5lc3NlZCBieSB0aGVcbiAgIGZtdHR5X3JlbCBhcmd1bWVudC4gT25lIHdvdWxkIGF0IGZpcnN0IGV4cGVjdCB0aGlzIGZ1bmN0aW9uIHRvIGJlXG4gICB0b3RhbCwgYW5kIGltcGxlbWVudGFibGUgYnkgZXhoYXVzdGl2ZSBwYXR0ZXJuIG1hdGNoaW5nLiBJbnN0ZWFkLFxuICAgd2UgcmV1c2UgdGhlIGhpZ2hseSBwYXJ0aWFsIGFuZCBtdWNoIGxlc3Mgd2VsbC1kZWZpbmVkIGZ1bmN0aW9uXG4gICBgdHlwZV9mb3JtYXRgIHRoYXQgaGFzIGxvc3QgYWxsIGtub3dsZWRnZSBvZiB0aGUgY29ycmVzcG9uZGVuY2VcbiAgIGJldHdlZW4gdGhlIGFyZ3VtZW50J3MgdHlwZXMuXG5cbiAgIEJlc2lkZXMgdGhlIGZhY3QgdGhhdCB0aGlzIGZ1bmN0aW9uIHJldXNlcyBhIGxvdCBvZiB0aGVcbiAgIGB0eXBlX2Zvcm1hdGAgbG9naWMgKGVnLjogc2VlaW5nIEludF90eSBpbiB0aGUgZm10dHkgcGFyYW1ldGVyIGRvZXNcbiAgIG5vdCBsZXQgeW91IG1hdGNoIG9uIEludCBvbmx5LCBhcyB5b3UgbWF5IGluIGZhY3QgaGF2ZSBGbG9hdFxuICAgKEFyZ19wYWRkaW5nLCAuLi4pIChcIiUuKmRcIikgYmVnaW5uaW5nIHdpdGggYW4gSW50X3R5KSwgaXQgaXMgYWxzb1xuICAgYSBwYXJ0aWFsIGZ1bmN0aW9uLCBiZWNhdXNlIHRoZSB0eXBpbmcgaW5mb3JtYXRpb24gaW4gYSBmb3JtYXQgaXNcbiAgIG5vdCBxdWl0ZSBlbm91Z2ggdG8gcmVjb25zdHJ1Y3QgaXQgdW5hbWJpZ3VvdXNseS4gRm9yIGV4YW1wbGUsIHRoZVxuICAgZm9ybWF0IHR5cGVzIG9mIFwiJWQlX3JcIiBhbmQgXCIlX3IlZFwiIGhhdmUgdGhlIHNhbWUgZm9ybWF0NlxuICAgcGFyYW1ldGVycywgYnV0IHRoZXkgYXJlIG5vdCBhdCBhbGwgZXhjaGFuZ2VhYmxlLCBhbmQgcHV0dGluZyBvbmVcbiAgIGluIHBsYWNlIG9mIHRoZSBvdGhlciBtdXN0IHJlc3VsdCBpbiBhIGR5bmFtaWMgZmFpbHVyZS5cblxuICAgR2l2ZW4gdGhhdDpcbiAgIC0gd2UnZCBoYXZlIHRvIGR1cGxpY2F0ZSBhIGxvdCBvZiBub24tdHJpdmlhbCB0eXBpbmcgbG9naWMgZnJvbSB0eXBlX2Zvcm1hdFxuICAgLSB0aGlzIHdvdWxkbid0IGV2ZW4gZWxpbWluYXRlIChhbGwpIHRoZSBkeW5hbWljIGZhaWx1cmVzXG4gICB3ZSBkZWNpZGVkIHRvIGp1c3QgcmV1c2UgdHlwZV9mb3JtYXQgZGlyZWN0bHkgZm9yIG5vdy5cbiopXG5sZXQgcmVjYXN0IDpcbiAgdHlwZSBhMSBiMSBjMSBkMSBlMSBmMVxuICAgICAgIGEyIGIyIGMyIGQyIGUyIGYyXG4gIC5cbiAgICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdFxuICAtPiAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICAgIGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbFxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10XG49IGZ1biBmbXQgZm10dHkgLT5cbiAgdHlwZV9mb3JtYXQgZm10IChlcmFzZV9yZWwgKHN5bW0gZm10dHkpKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBQcmludGluZyB0b29scyAqKVxuXG4oKiBBZGQgcGFkZGluZyBzcGFjZXMgYXJvdW5kIGEgc3RyaW5nLiAqKVxubGV0IGZpeF9wYWRkaW5nIHBhZHR5IHdpZHRoIHN0ciA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgd2lkdGgsIHBhZHR5ID1cbiAgICBhYnMgd2lkdGgsXG4gICAgKCogd2hpbGUgbGl0ZXJhbCBwYWRkaW5nIHdpZHRocyBhcmUgYWx3YXlzIG5vbi1uZWdhdGl2ZSxcbiAgICAgICBkeW5hbWljYWxseS1zZXQgd2lkdGhzIChBcmdfcGFkZGluZywgZWcuICUqZCkgbWF5IGJlIG5lZ2F0aXZlO1xuICAgICAgIHdlIGludGVycHJldCB0aG9zZSBhcyBzcGVjaWZ5aW5nIGEgcGFkZGluZy10by10aGUtbGVmdDsgdGhpc1xuICAgICAgIG1lYW5zIHRoYXQgJzAnIG1heSBnZXQgZHJvcHBlZCBldmVuIGlmIGl0IHdhcyBleHBsaWNpdGx5IHNldCxcbiAgICAgICBidXQ6XG4gICAgICAgLSB0aGlzIGlzIHdoYXQgdGhlIGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBkb2VzLCBhbmRcbiAgICAgICAgIHdlIHByZXNlcnZlIGNvbXBhdGliaWxpdHkgaWYgcG9zc2libGVcbiAgICAgICAtIHdlIGNvdWxkIG9ubHkgc2lnbmFsIHRoaXMgaXNzdWUgYnkgZmFpbGluZyBhdCBydW50aW1lLFxuICAgICAgICAgd2hpY2ggaXMgbm90IHZlcnkgbmljZS4uLiAqKVxuICAgIGlmIHdpZHRoIDwgMCB0aGVuIExlZnQgZWxzZSBwYWR0eSBpblxuICBpZiB3aWR0aCA8PSBsZW4gdGhlbiBzdHIgZWxzZVxuICAgIGxldCByZXMgPSBCeXRlcy5tYWtlIHdpZHRoIChpZiBwYWR0eSA9IFplcm9zIHRoZW4gJzAnIGVsc2UgJyAnKSBpblxuICAgIGJlZ2luIG1hdGNoIHBhZHR5IHdpdGhcbiAgICB8IExlZnQgIC0+IFN0cmluZy5ibGl0IHN0ciAwIHJlcyAwIGxlblxuICAgIHwgUmlnaHQgLT4gU3RyaW5nLmJsaXQgc3RyIDAgcmVzICh3aWR0aCAtIGxlbikgbGVuXG4gICAgfCBaZXJvcyB3aGVuIGxlbiA+IDAgJiYgKHN0ci5bMF0gPSAnKycgfHwgc3RyLlswXSA9ICctJyB8fCBzdHIuWzBdID0gJyAnKSAtPlxuICAgICAgQnl0ZXMuc2V0IHJlcyAwIHN0ci5bMF07XG4gICAgICBTdHJpbmcuYmxpdCBzdHIgMSByZXMgKHdpZHRoIC0gbGVuICsgMSkgKGxlbiAtIDEpXG4gICAgfCBaZXJvcyB3aGVuIGxlbiA+IDEgJiYgc3RyLlswXSA9ICcwJyAmJiAoc3RyLlsxXSA9ICd4JyB8fCBzdHIuWzFdID0gJ1gnKSAtPlxuICAgICAgQnl0ZXMuc2V0IHJlcyAxIHN0ci5bMV07XG4gICAgICBTdHJpbmcuYmxpdCBzdHIgMiByZXMgKHdpZHRoIC0gbGVuICsgMikgKGxlbiAtIDIpXG4gICAgfCBaZXJvcyAtPlxuICAgICAgU3RyaW5nLmJsaXQgc3RyIDAgcmVzICh3aWR0aCAtIGxlbikgbGVuXG4gICAgZW5kO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG5cbigqIEFkZCAnMCcgcGFkZGluZyB0byBpbnQsIGludDMyLCBuYXRpdmVpbnQgb3IgaW50NjQgc3RyaW5nIHJlcHJlc2VudGF0aW9uLiAqKVxubGV0IGZpeF9pbnRfcHJlY2lzaW9uIHByZWMgc3RyID1cbiAgbGV0IHByZWMgPSBhYnMgcHJlYyBpblxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbWF0Y2ggc3RyLlswXSB3aXRoXG4gIHwgKCcrJyB8ICctJyB8ICcgJykgYXMgYyB3aGVuIHByZWMgKyAxID4gbGVuIC0+XG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgKHByZWMgKyAxKSAnMCcgaW5cbiAgICBCeXRlcy5zZXQgcmVzIDAgYztcbiAgICBTdHJpbmcuYmxpdCBzdHIgMSByZXMgKHByZWMgLSBsZW4gKyAyKSAobGVuIC0gMSk7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcbiAgfCAnMCcgd2hlbiBwcmVjICsgMiA+IGxlbiAmJiBsZW4gPiAxICYmIChzdHIuWzFdID0gJ3gnIHx8IHN0ci5bMV0gPSAnWCcpIC0+XG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgKHByZWMgKyAyKSAnMCcgaW5cbiAgICBCeXRlcy5zZXQgcmVzIDEgc3RyLlsxXTtcbiAgICBTdHJpbmcuYmxpdCBzdHIgMiByZXMgKHByZWMgLSBsZW4gKyA0KSAobGVuIC0gMik7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcbiAgfCAnMCcgLi4gJzknIHwgJ2EnIC4uICdmJyB8ICdBJyAuLiAnRicgd2hlbiBwcmVjID4gbGVuIC0+XG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgcHJlYyAnMCcgaW5cbiAgICBTdHJpbmcuYmxpdCBzdHIgMCByZXMgKHByZWMgLSBsZW4pIGxlbjtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICB8IF8gLT5cbiAgICBzdHJcblxuKCogRXNjYXBlIGEgc3RyaW5nIGFjY29yZGluZyB0byB0aGUgT0NhbWwgbGV4aW5nIGNvbnZlbnRpb24uICopXG5sZXQgc3RyaW5nX3RvX2NhbWxfc3RyaW5nIHN0ciA9XG4gIGxldCBzdHIgPSBTdHJpbmcuZXNjYXBlZCBzdHIgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgcmVzID0gQnl0ZXMubWFrZSAobCArIDIpICdcXFwiJyBpblxuICBTdHJpbmcudW5zYWZlX2JsaXQgc3RyIDAgcmVzIDEgbDtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxuKCogR2VuZXJhdGUgdGhlIGZvcm1hdF9pbnQvaW50MzIvbmF0aXZlaW50L2ludDY0IGZpcnN0IGFyZ3VtZW50XG4gICBmcm9tIGFuIGludF9jb252LiAqKVxubGV0IGZvcm1hdF9vZl9pY29udiA9IGZ1bmN0aW9uXG4gIHwgSW50X2QgfCBJbnRfQ2QgLT4gXCIlZFwiIHwgSW50X3BkIC0+IFwiJStkXCIgfCBJbnRfc2QgLT4gXCIlIGRcIlxuICB8IEludF9pIHwgSW50X0NpIC0+IFwiJWlcIiB8IEludF9waSAtPiBcIiUraVwiIHwgSW50X3NpIC0+IFwiJSBpXCJcbiAgfCBJbnRfeCAtPiBcIiV4XCIgfCBJbnRfQ3ggLT4gXCIlI3hcIlxuICB8IEludF9YIC0+IFwiJVhcIiB8IEludF9DWCAtPiBcIiUjWFwiXG4gIHwgSW50X28gLT4gXCIlb1wiIHwgSW50X0NvIC0+IFwiJSNvXCJcbiAgfCBJbnRfdSB8IEludF9DdSAtPiBcIiV1XCJcblxubGV0IGZvcm1hdF9vZl9pY29udkwgPSBmdW5jdGlvblxuICB8IEludF9kIHwgSW50X0NkIC0+IFwiJUxkXCIgfCBJbnRfcGQgLT4gXCIlK0xkXCIgfCBJbnRfc2QgLT4gXCIlIExkXCJcbiAgfCBJbnRfaSB8IEludF9DaSAtPiBcIiVMaVwiIHwgSW50X3BpIC0+IFwiJStMaVwiIHwgSW50X3NpIC0+IFwiJSBMaVwiXG4gIHwgSW50X3ggLT4gXCIlTHhcIiB8IEludF9DeCAtPiBcIiUjTHhcIlxuICB8IEludF9YIC0+IFwiJUxYXCIgfCBJbnRfQ1ggLT4gXCIlI0xYXCJcbiAgfCBJbnRfbyAtPiBcIiVMb1wiIHwgSW50X0NvIC0+IFwiJSNMb1wiXG4gIHwgSW50X3UgfCBJbnRfQ3UgLT4gXCIlTHVcIlxuXG5sZXQgZm9ybWF0X29mX2ljb252bCA9IGZ1bmN0aW9uXG4gIHwgSW50X2QgfCBJbnRfQ2QgLT4gXCIlbGRcIiB8IEludF9wZCAtPiBcIiUrbGRcIiB8IEludF9zZCAtPiBcIiUgbGRcIlxuICB8IEludF9pIHwgSW50X0NpIC0+IFwiJWxpXCIgfCBJbnRfcGkgLT4gXCIlK2xpXCIgfCBJbnRfc2kgLT4gXCIlIGxpXCJcbiAgfCBJbnRfeCAtPiBcIiVseFwiIHwgSW50X0N4IC0+IFwiJSNseFwiXG4gIHwgSW50X1ggLT4gXCIlbFhcIiB8IEludF9DWCAtPiBcIiUjbFhcIlxuICB8IEludF9vIC0+IFwiJWxvXCIgfCBJbnRfQ28gLT4gXCIlI2xvXCJcbiAgfCBJbnRfdSB8IEludF9DdSAtPiBcIiVsdVwiXG5cbmxldCBmb3JtYXRfb2ZfaWNvbnZuID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVuZFwiIHwgSW50X3BkIC0+IFwiJStuZFwiIHwgSW50X3NkIC0+IFwiJSBuZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlbmlcIiB8IEludF9waSAtPiBcIiUrbmlcIiB8IEludF9zaSAtPiBcIiUgbmlcIlxuICB8IEludF94IC0+IFwiJW54XCIgfCBJbnRfQ3ggLT4gXCIlI254XCJcbiAgfCBJbnRfWCAtPiBcIiVuWFwiIHwgSW50X0NYIC0+IFwiJSNuWFwiXG4gIHwgSW50X28gLT4gXCIlbm9cIiB8IEludF9DbyAtPiBcIiUjbm9cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJW51XCJcblxuKCogR2VuZXJhdGUgdGhlIGZvcm1hdF9mbG9hdCBmaXJzdCBhcmd1bWVudCBmcm9tIGEgZmxvYXRfY29udi4gKilcbmxldCBmb3JtYXRfb2ZfZmNvbnYgZmNvbnYgcHJlYyA9XG4gICAgbGV0IHByZWMgPSBhYnMgcHJlYyBpblxuICAgIGxldCBzeW1iID0gY2hhcl9vZl9mY29udiB+Y0Y6J2cnIGZjb252IGluXG4gICAgbGV0IGJ1ZiA9IGJ1ZmZlcl9jcmVhdGUgMTYgaW5cbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgICBicHJpbnRfZmNvbnZfZmxhZyBidWYgZmNvbnY7XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnLic7XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIChJbnQudG9fc3RyaW5nIHByZWMpO1xuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgc3ltYjtcbiAgICBidWZmZXJfY29udGVudHMgYnVmXG5cbmxldCB0cmFuc2Zvcm1faW50X2FsdCBpY29udiBzID1cbiAgbWF0Y2ggaWNvbnYgd2l0aFxuICB8IEludF9DZCB8IEludF9DaSB8IEludF9DdSAtPlxuICAgIGxldCBkaWdpdHMgPVxuICAgICAgbGV0IG4gPSByZWYgMCBpblxuICAgICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgICAgfCAnMCcuLic5JyAtPiBpbmNyIG5cbiAgICAgICAgfCBfIC0+ICgpXG4gICAgICBkb25lO1xuICAgICAgIW5cbiAgICBpblxuICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgKFN0cmluZy5sZW5ndGggcyArIChkaWdpdHMgLSAxKSAvIDMpIGluXG4gICAgbGV0IHBvcyA9IHJlZiAwIGluXG4gICAgbGV0IHB1dCBjID0gQnl0ZXMuc2V0IGJ1ZiAhcG9zIGM7IGluY3IgcG9zIGluXG4gICAgbGV0IGxlZnQgPSByZWYgKChkaWdpdHMgLSAxKSBtb2QgMyArIDEpIGluXG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICB8ICcwJy4uJzknIGFzIGMgLT5cbiAgICAgICAgICBpZiAhbGVmdCA9IDAgdGhlbiAocHV0ICdfJzsgbGVmdCA6PSAzKTsgZGVjciBsZWZ0OyBwdXQgY1xuICAgICAgfCBjIC0+IHB1dCBjXG4gICAgZG9uZTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1ZlxuICB8IF8gLT4gc1xuXG4oKiBDb252ZXJ0IGFuIGludGVnZXIgdG8gYSBzdHJpbmcgYWNjb3JkaW5nIHRvIGEgY29udmVyc2lvbi4gKilcbmxldCBjb252ZXJ0X2ludCBpY29udiBuID1cbiAgdHJhbnNmb3JtX2ludF9hbHQgaWNvbnYgKGZvcm1hdF9pbnQgKGZvcm1hdF9vZl9pY29udiBpY29udikgbilcbmxldCBjb252ZXJ0X2ludDMyIGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X2ludDMyIChmb3JtYXRfb2ZfaWNvbnZsIGljb252KSBuKVxubGV0IGNvbnZlcnRfbmF0aXZlaW50IGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X25hdGl2ZWludCAoZm9ybWF0X29mX2ljb252biBpY29udikgbilcbmxldCBjb252ZXJ0X2ludDY0IGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X2ludDY0IChmb3JtYXRfb2ZfaWNvbnZMIGljb252KSBuKVxuXG4oKiBDb252ZXJ0IGEgZmxvYXQgdG8gc3RyaW5nLiAqKVxuKCogRml4IHNwZWNpYWwgY2FzZSBvZiBcIk9DYW1sIGZsb2F0IGZvcm1hdFwiLiAqKVxubGV0IGNvbnZlcnRfZmxvYXQgZmNvbnYgcHJlYyB4ID1cbiAgbGV0IGhleCAoKSA9XG4gICAgbGV0IHNpZ24gPVxuICAgICAgbWF0Y2ggZnN0IGZjb252IHdpdGhcbiAgICAgIHwgRmxvYXRfZmxhZ19wIC0+ICcrJ1xuICAgICAgfCBGbG9hdF9mbGFnX3MgLT4gJyAnXG4gICAgICB8IF8gLT4gJy0nIGluXG4gICAgaGV4c3RyaW5nX29mX2Zsb2F0IHggcHJlYyBzaWduIGluXG4gIGxldCBhZGRfZG90X2lmX25lZWRlZCBzdHIgPVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGxldCByZWMgaXNfdmFsaWQgaSA9XG4gICAgICBpZiBpID0gbGVuIHRoZW4gZmFsc2UgZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2ldIHdpdGhcbiAgICAgICAgfCAnLicgfCAnZScgfCAnRScgLT4gdHJ1ZVxuICAgICAgICB8IF8gLT4gaXNfdmFsaWQgKGkgKyAxKSBpblxuICAgIGlmIGlzX3ZhbGlkIDAgdGhlbiBzdHIgZWxzZSBzdHIgXiBcIi5cIiBpblxuICBsZXQgY2FtbF9zcGVjaWFsX3ZhbCBzdHIgPSBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICB8IEZQX25vcm1hbCB8IEZQX3N1Ym5vcm1hbCB8IEZQX3plcm8gLT4gc3RyXG4gICAgfCBGUF9pbmZpbml0ZSAtPiBpZiB4IDwgMC4wIHRoZW4gXCJuZWdfaW5maW5pdHlcIiBlbHNlIFwiaW5maW5pdHlcIlxuICAgIHwgRlBfbmFuIC0+IFwibmFuXCIgaW5cbiAgbWF0Y2ggc25kIGZjb252IHdpdGhcbiAgfCBGbG9hdF9oIC0+IGhleCAoKVxuICB8IEZsb2F0X0ggLT4gU3RyaW5nLnVwcGVyY2FzZV9hc2NpaSAoaGV4ICgpKVxuICB8IEZsb2F0X0NGIC0+IGNhbWxfc3BlY2lhbF92YWwgKGhleCAoKSlcbiAgfCBGbG9hdF9GIC0+XG4gICAgbGV0IHN0ciA9IGZvcm1hdF9mbG9hdCAoZm9ybWF0X29mX2Zjb252IGZjb252IHByZWMpIHggaW5cbiAgICBjYW1sX3NwZWNpYWxfdmFsIChhZGRfZG90X2lmX25lZWRlZCBzdHIpXG4gIHwgRmxvYXRfZiB8IEZsb2F0X2UgfCBGbG9hdF9FIHwgRmxvYXRfZyB8IEZsb2F0X0cgLT5cbiAgICBmb3JtYXRfZmxvYXQgKGZvcm1hdF9vZl9mY29udiBmY29udiBwcmVjKSB4XG5cbigqIENvbnZlcnQgYSBjaGFyIHRvIGEgc3RyaW5nIGFjY29yZGluZyB0byB0aGUgT0NhbWwgbGV4aWNhbCBjb252ZW50aW9uLiAqKVxubGV0IGZvcm1hdF9jYW1sX2NoYXIgYyA9XG4gIGxldCBzdHIgPSBDaGFyLmVzY2FwZWQgYyBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCByZXMgPSBCeXRlcy5tYWtlIChsICsgMikgJ1xcJycgaW5cbiAgU3RyaW5nLnVuc2FmZV9ibGl0IHN0ciAwIHJlcyAxIGw7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG5cbigqIENvbnZlcnQgYSBmb3JtYXQgdHlwZSB0byBzdHJpbmcgKilcbmxldCBzdHJpbmdfb2ZfZm10dHkgZm10dHkgPVxuICBsZXQgYnVmID0gYnVmZmVyX2NyZWF0ZSAxNiBpblxuICBicHJpbnRfZm10dHkgYnVmIGZtdHR5O1xuICBidWZmZXJfY29udGVudHMgYnVmXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAoKiBHZW5lcmljIHByaW50aW5nIGZ1bmN0aW9uICopXG5cbigqIE1ha2UgYSBnZW5lcmljIHByaW50aW5nIGZ1bmN0aW9uLiAqKVxuKCogVXNlZCB0byBnZW5lcmF0ZSBQcmludGYgYW5kIEZvcm1hdCBwcmludGluZyBmdW5jdGlvbnMuICopXG4oKiBQYXJhbWV0ZXJzOlxuICAgICBrOiBhIGNvbnRpbnVhdGlvbiBmaW5hbGx5IGFwcGxpZWQgdG8gdGhlIG91dHB1dCBzdHJlYW0gYW5kIHRoZSBhY2N1bXVsYXRvci5cbiAgICAgbzogdGhlIG91dHB1dCBzdHJlYW0gKHNlZSBrLCAlYSBhbmQgJXQpLlxuICAgICBhY2M6IHJldiBsaXN0IG9mIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXNoLCBmb3JtYXR0aW5nLCAuLi4pLlxuICAgICBmbXQ6IHRoZSBmb3JtYXQuICopXG5sZXQgcmVjIG1ha2VfcHJpbnRmIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gYSA9XG5mdW4gayBhY2MgZm10IC0+IG1hdGNoIGZtdCB3aXRoXG4gIHwgQ2hhciByZXN0IC0+XG4gICAgZnVuIGMgLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfY2hhciAoYWNjLCBjKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIHJlc3RcbiAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgIGZ1biBjIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX3N0cmluZyAoYWNjLCBmb3JtYXRfY2FtbF9jaGFyIGMpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIG1ha2VfcGFkZGluZyBrIGFjYyByZXN0IHBhZCAoZnVuIHN0ciAtPiBzdHIpXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBtYWtlX3BhZGRpbmcgayBhY2MgcmVzdCBwYWQgc3RyaW5nX3RvX2NhbWxfc3RyaW5nXG4gIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgY29udmVydF9pbnQgaWNvbnZcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGNvbnZlcnRfaW50MzIgaWNvbnZcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X25hdGl2ZWludCBpY29udlxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgY29udmVydF9pbnQ2NCBpY29udlxuICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfZmxvYXRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBmY29udlxuICB8IEJvb2wgKHBhZCwgcmVzdCkgLT5cbiAgICBtYWtlX3BhZGRpbmcgayBhY2MgcmVzdCBwYWQgc3RyaW5nX29mX2Jvb2xcbiAgfCBBbHBoYSByZXN0IC0+XG4gICAgZnVuIGYgeCAtPiBtYWtlX3ByaW50ZiBrIChBY2NfZGVsYXkgKGFjYywgZnVuIG8gLT4gZiBvIHgpKSByZXN0XG4gIHwgVGhldGEgcmVzdCAtPlxuICAgIGZ1biBmIC0+IG1ha2VfcHJpbnRmIGsgKEFjY19kZWxheSAoYWNjLCBmKSkgcmVzdFxuICB8IEN1c3RvbSAoYXJpdHksIGYsIHJlc3QpIC0+XG4gICAgbWFrZV9jdXN0b20gayBhY2MgcmVzdCBhcml0eSAoZiAoKSlcbiAgfCBSZWFkZXIgXyAtPlxuICAgICgqIFRoaXMgY2FzZSBpcyBpbXBvc3NpYmxlLCBieSB0eXBpbmcgb2YgZm9ybWF0cy4gKilcbiAgICAoKiBJbmRlZWQsIHNpbmNlIHByaW50ZiBhbmQgY28uIHRha2UgYSBmb3JtYXQ0IGFzIGFyZ3VtZW50LCB0aGUgJ2QgYW5kICdlXG4gICAgICAgdHlwZSBwYXJhbWV0ZXJzIG9mIGZtdCBhcmUgb2J2aW91c2x5IGVxdWFscy4gVGhlIFJlYWRlciBpcyB0aGVcbiAgICAgICBvbmx5IGNvbnN0cnVjdG9yIHdoaWNoIHRvdWNoICdkIGFuZCAnZSB0eXBlIHBhcmFtZXRlcnMgb2YgdGhlIGZvcm1hdFxuICAgICAgIHR5cGUsIGl0IGFkZHMgYW4gKC0+KSB0byB0aGUgJ2QgcGFyYW1ldGVycy4gQ29uc2VxdWVudGx5LCBhIGZvcm1hdDRcbiAgICAgICBjYW5ub3QgY29udGFpbiBhIFJlYWRlciBub2RlLCBleGNlcHQgaW4gdGhlIHN1Yi1mb3JtYXQgYXNzb2NpYXRlZCB0b1xuICAgICAgIGFuICV7Li4uJX0uIEl0J3Mgbm90IGEgcHJvYmxlbSBiZWNhdXNlIG1ha2VfcHJpbnRmIGRvIG5vdCBjYWxsXG4gICAgICAgaXRzZWxmIHJlY3Vyc2l2ZWx5IG9uIHRoZSBzdWItZm9ybWF0IGFzc29jaWF0ZWQgdG8gJXsuLi4lfS4gKilcbiAgICBhc3NlcnQgZmFsc2VcbiAgfCBGbHVzaCByZXN0IC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX2ZsdXNoIGFjYykgcmVzdFxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT5cbiAgICBtYWtlX3ByaW50ZiBrIChBY2Nfc3RyaW5nX2xpdGVyYWwgKGFjYywgc3RyKSkgcmVzdFxuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCByZXN0KSAtPlxuICAgIG1ha2VfcHJpbnRmIGsgKEFjY19jaGFyX2xpdGVyYWwgKGFjYywgY2hyKSkgcmVzdFxuXG4gIHwgRm9ybWF0X2FyZyAoXywgc3ViX2ZtdHR5LCByZXN0KSAtPlxuICAgIGxldCB0eSA9IHN0cmluZ19vZl9mbXR0eSBzdWJfZm10dHkgaW5cbiAgICAoZnVuIHN0ciAtPlxuICAgICAgaWdub3JlIHN0cjtcbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCB0eSkpIHJlc3QpXG4gIHwgRm9ybWF0X3N1YnN0IChfLCBmbXR0eSwgcmVzdCkgLT5cbiAgICBmdW4gKEZvcm1hdCAoZm10LCBfKSkgLT4gbWFrZV9wcmludGYgayBhY2NcbiAgICAgIChjb25jYXRfZm10IChyZWNhc3QgZm10IGZtdHR5KSByZXN0KVxuXG4gIHwgU2Nhbl9jaGFyX3NldCAoXywgXywgcmVzdCkgLT5cbiAgICBsZXQgbmV3X2FjYyA9IEFjY19pbnZhbGlkX2FyZyAoYWNjLCBcIlByaW50ZjogYmFkIGNvbnZlcnNpb24gJVtcIikgaW5cbiAgICBmdW4gXyAtPiBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpIC0+XG4gICAgKCogVGhpcyBjYXNlIHNob3VsZCBiZSByZWZ1c2VkIGZvciBQcmludGYuICopXG4gICAgKCogQWNjZXB0ZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuICopXG4gICAgKCogSW50ZXJwcmV0ICVsLCAlbiBhbmQgJUwgYXMgJXUuICopXG4gICAgZnVuIG4gLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZvcm1hdF9pbnQgXCIldVwiIG4pIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgLT5cbiAgICBmdW4gYyAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9jaGFyIChhY2MsIGMpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICBtYWtlX2lnbm9yZWRfcGFyYW0gayBhY2MgaWduIHJlc3RcblxuICB8IEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSAtPlxuICAgIG1ha2VfcHJpbnRmIGsgKEFjY19mb3JtYXR0aW5nX2xpdCAoYWNjLCBmbXRpbmdfbGl0KSkgcmVzdFxuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgbGV0IGsnIGthY2MgPVxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2Zvcm1hdHRpbmdfZ2VuIChhY2MsIEFjY19vcGVuX3RhZyBrYWNjKSkgcmVzdCBpblxuICAgIG1ha2VfcHJpbnRmIGsnIEVuZF9vZl9hY2MgZm10J1xuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgbGV0IGsnIGthY2MgPVxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2Zvcm1hdHRpbmdfZ2VuIChhY2MsIEFjY19vcGVuX2JveCBrYWNjKSkgcmVzdCBpblxuICAgIG1ha2VfcHJpbnRmIGsnIEVuZF9vZl9hY2MgZm10J1xuXG4gIHwgRW5kX29mX2Zvcm1hdCAtPlxuICAgIGsgYWNjXG5cbigqIERlbGF5IHRoZSBlcnJvciAoSW52YWxpZF9hcmd1bWVudCBcIlByaW50ZjogYmFkIGNvbnZlcnNpb24gJV9cIikuICopXG4oKiBHZW5lcmF0ZSBmdW5jdGlvbnMgdG8gdGFrZSByZW1haW5pbmcgYXJndW1lbnRzIChhZnRlciB0aGUgXCIlX1wiKS4gKilcbmFuZCBtYWtlX2lnbm9yZWRfcGFyYW0gOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCB5LCB4KSBpZ25vcmVkIC0+XG4gICAgKHgsIGIsIGMsIHksIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBpZ24gZm10IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfY2FtbF9jaGFyICAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfaW50IChfLCBfKSAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2ludDMyIChfLCBfKSAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgKF8sIF8pICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfaW50NjQgKF8sIF8pICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2Zsb2F0IChfLCBfKSAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyBfICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoXywgZm10dHkpIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyBmbXR0eSBmbXRcbiAgfCBJZ25vcmVkX3JlYWRlciAgICAgICAgICAgICAgICAgIC0+IGFzc2VydCBmYWxzZVxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCBfICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuXG5cbigqIFNwZWNpYWwgY2FzZSBvZiBwcmludGYgXCIlXyhcIi4gKilcbmFuZCBtYWtlX2Zyb21fZm10dHkgOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCB5LCB4KSBmbXR0eSAtPlxuICAgICh4LCBiLCBjLCB5LCBlLCBmKSBmbXQgLT4gYSA9XG5mdW4gayBhY2MgZm10dHkgZm10IC0+IG1hdGNoIGZtdHR5IHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QgICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBTdHJpbmdfdHkgcmVzdCAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBJbnRfdHkgcmVzdCAgICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBJbnQzMl90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBJbnQ2NF90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBGbG9hdF90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBCb29sX3R5IHJlc3QgICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBBbHBoYV90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IFRoZXRhX3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEFueV90eSByZXN0ICAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IFJlYWRlcl90eSBfICAgICAgICAgICAgIC0+IGFzc2VydCBmYWxzZVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IF8gICAgIC0+IGFzc2VydCBmYWxzZVxuICB8IEZvcm1hdF9hcmdfdHkgKF8sIHJlc3QpIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEVuZF9vZl9mbXR0eSAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBsZXQgdHkgPSB0cmFucyAoc3ltbSB0eTEpIHR5MiBpblxuICAgIGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyAoY29uY2F0X2ZtdHR5IHR5IHJlc3QpIGZtdFxuXG4oKiBJbnNlcnQgYW4gQWNjX2ludmFsaWRfYXJnIGluIHRoZSBhY2N1bXVsYXRvciBhbmQgY29udGludWUgdG8gZ2VuZXJhdGVcbiAgIGNsb3N1cmVzIHRvIGdldCB0aGUgcmVtYWluaW5nIGFyZ3VtZW50cy4gKilcbmFuZCBtYWtlX2ludmFsaWRfYXJnIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gYSA9XG5mdW4gayBhY2MgZm10IC0+XG4gIG1ha2VfcHJpbnRmIGsgKEFjY19pbnZhbGlkX2FyZyAoYWNjLCBcIlByaW50ZjogYmFkIGNvbnZlcnNpb24gJV9cIikpIGZtdFxuXG4oKiBGaXggcGFkZGluZywgdGFrZSBpdCBhcyBhbiBleHRyYSBpbnRlZ2VyIGFyZ3VtZW50IGlmIG5lZWRlZC4gKilcbmFuZCBtYWtlX3BhZGRpbmcgOiB0eXBlIHggeiBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAoeCwgeiAtPiBhKSBwYWRkaW5nIC0+ICh6IC0+IHN0cmluZykgLT4geCA9XG4gIGZ1biBrIGFjYyBmbXQgcGFkIHRyYW5zIC0+IG1hdGNoIHBhZCB3aXRoXG4gIHwgTm9fcGFkZGluZyAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX3N0cmluZyAoYWNjLCB0cmFucyB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgd2lkdGgpIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZpeF9wYWRkaW5nIHBhZHR5IHdpZHRoICh0cmFucyB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZpeF9wYWRkaW5nIHBhZHR5IHcgKHRyYW5zIHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIGZtdFxuXG4oKiBGaXggcGFkZGluZyBhbmQgcHJlY2lzaW9uIGZvciBpbnQsIGludDMyLCBuYXRpdmVpbnQgb3IgaW50NjQuICopXG4oKiBUYWtlIG9uZSBvciB0d28gZXh0cmEgaW50ZWdlciBhcmd1bWVudHMgaWYgbmVlZGVkLiAqKVxuYW5kIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIDogdHlwZSB4IHkgeiBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAoeCwgeSkgcGFkZGluZyAtPiAoeSwgeiAtPiBhKSBwcmVjaXNpb24gLT4gKGludF9jb252IC0+IHogLT4gc3RyaW5nKSAtPlxuICAgIGludF9jb252IC0+IHggPVxuICBmdW4gayBhY2MgZm10IHBhZCBwcmVjIHRyYW5zIGljb252IC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gIHwgTm9fcGFkZGluZywgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSB0cmFucyBpY29udiB4IGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTm9fcGFkZGluZywgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IE5vX3BhZGRpbmcsIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKHRyYW5zIGljb252IHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAodHJhbnMgaWNvbnYgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHcgcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG5cbigqIENvbnZlcnQgYSBmbG9hdCwgZml4IHBhZGRpbmcgYW5kIHByZWNpc2lvbiBpZiBuZWVkZWQuICopXG4oKiBUYWtlIHRoZSBmbG9hdCBhcmd1bWVudCBhbmQgb25lIG9yIHR3byBleHRyYSBpbnRlZ2VyIGFyZ3VtZW50cyBpZiBuZWVkZWQuICopXG5hbmQgbWFrZV9mbG9hdF9wYWRkaW5nX3ByZWNpc2lvbiA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICh4LCB5KSBwYWRkaW5nIC0+ICh5LCBmbG9hdCAtPiBhKSBwcmVjaXNpb24gLT4gZmxvYXRfY29udiAtPiB4ID1cbiAgZnVuIGsgYWNjIGZtdCBwYWQgcHJlYyBmY29udiAtPiBtYXRjaCBwYWQsIHByZWMgd2l0aFxuICB8IE5vX3BhZGRpbmcsIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiAoZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYpIHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4IGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTm9fcGFkZGluZywgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiAoZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYpIHggaW5cbiAgICAgIGxldCBzdHInID0gZml4X3BhZGRpbmcgcGFkdHkgdyBzdHIgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHInKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiAoZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYpIHggaW5cbiAgICAgIGxldCBzdHInID0gZml4X3BhZGRpbmcgcGFkdHkgdyBzdHIgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHInKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuYW5kIG1ha2VfY3VzdG9tIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgKGEsIHgsIHkpIGN1c3RvbV9hcml0eSAtPiB4IC0+IHkgPVxuICBmdW4gayBhY2MgcmVzdCBhcml0eSBmIC0+IG1hdGNoIGFyaXR5IHdpdGhcbiAgfCBDdXN0b21femVybyAtPiBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgZikpIHJlc3RcbiAgfCBDdXN0b21fc3VjYyBhcml0eSAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBtYWtlX2N1c3RvbSBrIGFjYyByZXN0IGFyaXR5IChmIHgpXG5cbmxldCBjb25zdCB4IF8gPSB4XG5cbmxldCByZWMgbWFrZV9pcHJpbnRmIDogdHlwZSBhIGIgYyBkIGUgZiBzdGF0ZS5cbiAgKHN0YXRlIC0+IGYpIC0+IHN0YXRlIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gYSA9XG4gIGZ1biBrIG8gZm10IC0+IG1hdGNoIGZtdCB3aXRoXG4gICAgfCBDaGFyIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTdHJpbmcgKE5vX3BhZGRpbmcsIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTdHJpbmcgKExpdF9wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTdHJpbmcgKEFyZ19wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KSlcbiAgICB8IENhbWxfc3RyaW5nIChOb19wYWRkaW5nLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQ2FtbF9zdHJpbmcgKExpdF9wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBDYW1sX3N0cmluZyAoQXJnX3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpKVxuICAgIHwgSW50IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBJbnQzMiAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgTmF0aXZlaW50IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBJbnQ2NCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgRmxvYXQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEJvb2wgKE5vX3BhZGRpbmcsIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBCb29sIChMaXRfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQm9vbCAoQXJnX3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpKVxuICAgIHwgQWxwaGEgcmVzdCAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBUaGV0YSByZXN0IC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBDdXN0b20gKGFyaXR5LCBfLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9jdXN0b21fYXJpdHkgayBvIHJlc3QgYXJpdHlcbiAgICB8IFJlYWRlciBfIC0+XG4gICAgICAgICgqIFRoaXMgY2FzZSBpcyBpbXBvc3NpYmxlLCBieSB0eXBpbmcgb2YgZm9ybWF0cy4gIFNlZSB0aGVcbiAgICAgICAgICAgbm90ZSBpbiB0aGUgY29ycmVzcG9uZGluZyBjYXNlIGZvciBtYWtlX3ByaW50Zi4gKilcbiAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgfCBGbHVzaCByZXN0IC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gcmVzdFxuICAgIHwgU3RyaW5nX2xpdGVyYWwgKF8sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gcmVzdFxuICAgIHwgQ2hhcl9saXRlcmFsIChfLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIHJlc3RcbiAgICB8IEZvcm1hdF9hcmcgKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBGb3JtYXRfc3Vic3QgKF8sIGZtdHR5LCByZXN0KSAtPlxuICAgICAgICBmdW4gKEZvcm1hdCAoZm10LCBfKSkgLT5cbiAgICAgICAgICBtYWtlX2lwcmludGYgayBvXG4gICAgICAgICAgICAoY29uY2F0X2ZtdCAocmVjYXN0IGZtdCBmbXR0eSkgcmVzdClcbiAgICB8IFNjYW5fY2hhcl9zZXQgKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTY2FuX2dldF9jb3VudGVyIChfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lnbm9yZWRfcGFyYW0gKGZ1biBfIC0+IGsgbykgKEVuZF9vZl9hY2MpIGlnbiByZXN0XG4gICAgfCBGb3JtYXR0aW5nX2xpdCAoXywgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgKGZ1biBrb2MgLT4gbWFrZV9pcHJpbnRmIGsga29jIHJlc3QpIG8gZm10J1xuICAgIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIChmdW4ga29jIC0+IG1ha2VfaXByaW50ZiBrIGtvYyByZXN0KSBvIGZtdCdcbiAgICB8IEVuZF9vZl9mb3JtYXQgLT5cbiAgICAgICAgayBvXG5hbmQgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gOlxuICB0eXBlIHggeSB6IGEgYiBjIGQgZSBmIHN0YXRlLlxuICAoc3RhdGUgLT4gZikgLT4gc3RhdGUgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAoeCwgeSkgcGFkZGluZyAtPiAoeSwgeiAtPiBhKSBwcmVjaXNpb24gLT4geCA9XG4gIGZ1biBrIG8gZm10IHBhZCBwcmVjIC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gICAgfCBOb19wYWRkaW5nICAgLCBOb19wcmVjaXNpb24gICAgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KVxuICAgIHwgTm9fcGFkZGluZyAgICwgTGl0X3ByZWNpc2lvbiBfIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdClcbiAgICB8IE5vX3BhZGRpbmcgICAsIEFyZ19wcmVjaXNpb24gICAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KSlcbiAgICB8IExpdF9wYWRkaW5nIF8sIE5vX3ByZWNpc2lvbiAgICAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBMaXRfcGFkZGluZyBfLCBMaXRfcHJlY2lzaW9uIF8gLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KVxuICAgIHwgTGl0X3BhZGRpbmcgXywgQXJnX3ByZWNpc2lvbiAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgQXJnX3BhZGRpbmcgXywgTm9fcHJlY2lzaW9uICAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgQXJnX3BhZGRpbmcgXywgTGl0X3ByZWNpc2lvbiBfIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgQXJnX3BhZGRpbmcgXywgQXJnX3ByZWNpc2lvbiAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KSkpXG5hbmQgZm5fb2ZfY3VzdG9tX2FyaXR5IDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgc3RhdGUuXG4gIChzdGF0ZSAtPiBmKSAtPlxuICBzdGF0ZSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IChhLCB4LCB5KSBjdXN0b21fYXJpdHkgLT4geSA9XG4gIGZ1biBrIG8gZm10IC0+IGZ1bmN0aW9uXG4gICAgfCBDdXN0b21femVybyAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIGZtdFxuICAgIHwgQ3VzdG9tX3N1Y2MgYXJpdHkgLT5cbiAgICAgICAgY29uc3QgKGZuX29mX2N1c3RvbV9hcml0eSBrIG8gZm10IGFyaXR5KVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBDb250aW51YXRpb25zIGZvciBtYWtlX3ByaW50ZiAqKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGFuIG91dHB1dF9zdHJlYW0uICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIG1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBvdXRwdXRfYWNjIG8gYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGZtdGluZ19saXQpIC0+XG4gICAgbGV0IHMgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gcztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gXCJAe1wiOyBvdXRwdXRfYWNjIG8gYWNjJztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gXCJAW1wiOyBvdXRwdXRfYWNjIG8gYWNjJztcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gc1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfY2hhciBvIGNcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gb3V0cHV0X2FjYyBvIHA7IGYgb1xuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBvdXRwdXRfYWNjIG8gcDsgZmx1c2ggb1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBvdXRwdXRfYWNjIG8gcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGEgYnVmZmVyLiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBtYWtlX3ByaW50Zi4gKilcbmxldCByZWMgYnVmcHV0X2FjYyBiIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmbXRpbmdfbGl0KSAtPlxuICAgIGxldCBzID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQgaW5cbiAgICBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAe1wiOyBidWZwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIFwiQFtcIjsgYnVmcHV0X2FjYyBiIGFjYyc7XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gYnVmcHV0X2FjYyBiIHA7IGYgYlxuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBidWZwdXRfYWNjIGIgcDtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gYnVmcHV0X2FjYyBiIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhIGJ1ZmZlci4gKilcbigqIERpZmZlciBmcm9tIGJ1ZnB1dF9hY2MgYnkgdGhlIGludGVycHJldGF0aW9uIG9mICVhIGFuZCAldC4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgbWFrZV9wcmludGYuICopXG5sZXQgcmVjIHN0cnB1dF9hY2MgYiBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZm10aW5nX2xpdCkgLT5cbiAgICBsZXQgcyA9IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIFwiQHtcIjsgc3RycHV0X2FjYyBiIGFjYyc7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIkBbXCI7IHN0cnB1dF9hY2MgYiBhY2MnO1xuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgc1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIChmICgpKVxuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBzdHJwdXRfYWNjIGIgcDtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gc3RycHV0X2FjYyBiIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRXJyb3IgbWFuYWdlbWVudCAqKVxuXG4oKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIHByZXR0eS1wcmludGVkIGVycm9yIG1lc3NhZ2UuICopXG5sZXQgZmFpbHdpdGhfbWVzc2FnZSAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDI1NiBpblxuICBsZXQgayBhY2MgPSBzdHJwdXRfYWNjIGJ1ZiBhY2M7IGZhaWx3aXRoIChCdWZmZXIuY29udGVudHMgYnVmKSBpblxuICBtYWtlX3ByaW50ZiBrIEVuZF9vZl9hY2MgZm10XG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0dGluZyB0b29scyAqKVxuXG4oKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGFuIG9wZW4gYmxvY2sgZGVzY3JpcHRpb24gKGluZGVudCwgYmxvY2tfdHlwZSkgKilcbmxldCBvcGVuX2JveF9vZl9zdHJpbmcgc3RyID1cbiAgaWYgc3RyID0gXCJcIiB0aGVuICgwLCBQcF9ib3gpIGVsc2VcbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBsZXQgaW52YWxpZF9ib3ggKCkgPSBmYWlsd2l0aF9tZXNzYWdlIFwiaW52YWxpZCBib3ggZGVzY3JpcHRpb24gJVNcIiBzdHIgaW5cbiAgICBsZXQgcmVjIHBhcnNlX3NwYWNlcyBpID1cbiAgICAgIGlmIGkgPSBsZW4gdGhlbiBpIGVsc2VcbiAgICAgICAgbWF0Y2ggc3RyLltpXSB3aXRoXG4gICAgICAgIHwgJyAnIHwgJ1xcdCcgLT4gcGFyc2Vfc3BhY2VzIChpICsgMSlcbiAgICAgICAgfCBfIC0+IGlcbiAgICBhbmQgcGFyc2VfbHdvcmQgaSBqID1cbiAgICAgIGlmIGogPSBsZW4gdGhlbiBqIGVsc2VcbiAgICAgICAgbWF0Y2ggc3RyLltqXSB3aXRoXG4gICAgICAgIHwgJ2EnIC4uICd6JyAtPiBwYXJzZV9sd29yZCBpIChqICsgMSlcbiAgICAgICAgfCBfIC0+IGpcbiAgICBhbmQgcGFyc2VfaW50IGkgaiA9XG4gICAgICBpZiBqID0gbGVuIHRoZW4gaiBlbHNlXG4gICAgICAgIG1hdGNoIHN0ci5bal0gd2l0aFxuICAgICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT4gcGFyc2VfaW50IGkgKGogKyAxKVxuICAgICAgICB8IF8gLT4gaiBpblxuICAgIGxldCB3c3RhcnQgPSBwYXJzZV9zcGFjZXMgMCBpblxuICAgIGxldCB3ZW5kID0gcGFyc2VfbHdvcmQgd3N0YXJ0IHdzdGFydCBpblxuICAgIGxldCBib3hfbmFtZSA9IFN0cmluZy5zdWIgc3RyIHdzdGFydCAod2VuZCAtIHdzdGFydCkgaW5cbiAgICBsZXQgbnN0YXJ0ID0gcGFyc2Vfc3BhY2VzIHdlbmQgaW5cbiAgICBsZXQgbmVuZCA9IHBhcnNlX2ludCBuc3RhcnQgbnN0YXJ0IGluXG4gICAgbGV0IGluZGVudCA9XG4gICAgICBpZiBuc3RhcnQgPSBuZW5kIHRoZW4gMCBlbHNlXG4gICAgICAgIHRyeSBpbnRfb2Zfc3RyaW5nIChTdHJpbmcuc3ViIHN0ciBuc3RhcnQgKG5lbmQgLSBuc3RhcnQpKVxuICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPiBpbnZhbGlkX2JveCAoKSBpblxuICAgIGxldCBleHBfZW5kID0gcGFyc2Vfc3BhY2VzIG5lbmQgaW5cbiAgICBpZiBleHBfZW5kIDw+IGxlbiB0aGVuIGludmFsaWRfYm94ICgpO1xuICAgIGxldCBib3hfdHlwZSA9IG1hdGNoIGJveF9uYW1lIHdpdGhcbiAgICAgIHwgXCJcIiB8IFwiYlwiIC0+IFBwX2JveFxuICAgICAgfCBcImhcIiAgICAgIC0+IFBwX2hib3hcbiAgICAgIHwgXCJ2XCIgICAgICAtPiBQcF92Ym94XG4gICAgICB8IFwiaHZcIiAgICAgLT4gUHBfaHZib3hcbiAgICAgIHwgXCJob3ZcIiAgICAtPiBQcF9ob3Zib3hcbiAgICAgIHwgXyAgICAgICAgLT4gaW52YWxpZF9ib3ggKCkgaW5cbiAgICAoaW5kZW50LCBib3hfdHlwZSlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBQYXJzaW5nIHRvb2xzICopXG5cbigqIENyZWF0ZSBhIHBhZGRpbmdfZm10X2ViYiBmcm9tIGEgcGFkZGluZyBhbmQgYSBmb3JtYXQuICopXG4oKiBDb3B5IHRoZSBwYWRkaW5nIHRvIGRpc2pvaW4gdGhlIHR5cGUgcGFyYW1ldGVycyBvZiBhcmd1bWVudCBhbmQgcmVzdWx0LiAqKVxubGV0IG1ha2VfcGFkZGluZ19mbXRfZWJiIDogdHlwZSB4IHkgLlxuICAgICh4LCB5KSBwYWRkaW5nIC0+IChfLCBfLCBfLCBfLCBfLCBfKSBmbXQgLT5cbiAgICAgIChfLCBfLCBfLCBfLCBfKSBwYWRkaW5nX2ZtdF9lYmIgPVxuZnVuIHBhZCBmbXQgLT4gbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nICAgICAgICAgLT4gUGFkZGluZ19mbXRfRUJCIChOb19wYWRkaW5nLCBmbXQpXG4gIHwgTGl0X3BhZGRpbmcgKHMsIHcpIC0+IFBhZGRpbmdfZm10X0VCQiAoTGl0X3BhZGRpbmcgKHMsIHcpLCBmbXQpXG4gIHwgQXJnX3BhZGRpbmcgcyAgICAgIC0+IFBhZGRpbmdfZm10X0VCQiAoQXJnX3BhZGRpbmcgcywgZm10KVxuXG4oKiBDcmVhdGUgYSBwcmVjaXNpb25fZm10X2ViYiBmcm9tIGEgcHJlY2lzaW9uIGFuZCBhIGZvcm1hdC4gKilcbigqIENvcHkgdGhlIHByZWNpc2lvbiB0byBkaXNqb2luIHRoZSB0eXBlIHBhcmFtZXRlcnMgb2YgYXJndW1lbnQgYW5kIHJlc3VsdC4gKilcbmxldCBtYWtlX3ByZWNpc2lvbl9mbXRfZWJiIDogdHlwZSB4IHkgLlxuICAgICh4LCB5KSBwcmVjaXNpb24gLT4gKF8sIF8sIF8sIF8sIF8sIF8pIGZtdCAtPlxuICAgICAgKF8sIF8sIF8sIF8sIF8pIHByZWNpc2lvbl9mbXRfZWJiID1cbmZ1biBwcmVjIGZtdCAtPiBtYXRjaCBwcmVjIHdpdGhcbiAgfCBOb19wcmVjaXNpb24gICAgLT4gUHJlY2lzaW9uX2ZtdF9FQkIgKE5vX3ByZWNpc2lvbiwgZm10KVxuICB8IExpdF9wcmVjaXNpb24gcCAtPiBQcmVjaXNpb25fZm10X0VCQiAoTGl0X3ByZWNpc2lvbiBwLCBmbXQpXG4gIHwgQXJnX3ByZWNpc2lvbiAgIC0+IFByZWNpc2lvbl9mbXRfRUJCIChBcmdfcHJlY2lzaW9uLCBmbXQpXG5cbigqIENyZWF0ZSBhIHBhZHByZWNfZm10X2ViYiBmcm9tIGEgcGFkZGluZywgYSBwcmVjaXNpb24gYW5kIGEgZm9ybWF0LiAqKVxuKCogQ29weSB0aGUgcGFkZGluZyBhbmQgdGhlIHByZWNpc2lvbiB0byBkaXNqb2luIHR5cGUgcGFyYW1ldGVycyBvZiBhcmd1bWVudHNcbiAgIGFuZCByZXN1bHQuICopXG5sZXQgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgOiB0eXBlIHggeSB6IHQgLlxuICAgICh4LCB5KSBwYWRkaW5nIC0+ICh6LCB0KSBwcmVjaXNpb24gLT5cbiAgICAoXywgXywgXywgXywgXywgXykgZm10IC0+XG4gICAgKF8sIF8sIF8sIF8sIF8pIHBhZHByZWNfZm10X2ViYiA9XG5mdW4gcGFkIHByZWMgZm10IC0+XG4gIGxldCBQcmVjaXNpb25fZm10X0VCQiAocHJlYywgZm10JykgPSBtYWtlX3ByZWNpc2lvbl9mbXRfZWJiIHByZWMgZm10IGluXG4gIG1hdGNoIHBhZCB3aXRoXG4gIHwgTm9fcGFkZGluZyAgICAgICAgIC0+IFBhZHByZWNfZm10X0VCQiAoTm9fcGFkZGluZywgcHJlYywgZm10JylcbiAgfCBMaXRfcGFkZGluZyAocywgdykgLT4gUGFkcHJlY19mbXRfRUJCIChMaXRfcGFkZGluZyAocywgdyksIHByZWMsIGZtdCcpXG4gIHwgQXJnX3BhZGRpbmcgcyAgICAgIC0+IFBhZHByZWNfZm10X0VCQiAoQXJnX3BhZGRpbmcgcywgcHJlYywgZm10JylcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHBhcnNpbmcgKilcblxuKCogUGFyc2UgYSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgZm9ybWF0IGFuZCBjcmVhdGUgYSBmbXRfZWJiLiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIGluIGNhc2Ugb2YgaW52YWxpZCBmb3JtYXQuICopXG5sZXQgZm10X2ViYl9vZl9zdHJpbmcgP2xlZ2FjeV9iZWhhdmlvciBzdHIgPVxuICAoKiBQYXJhbWV0ZXJzIG5hbWluZyBjb252ZW50aW9uOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBsaXRfc3RhcnQ6IHN0YXJ0IG9mIHRoZSBsaXRlcmFsIHNlcXVlbmNlLiAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHN0cl9pbmQ6IGN1cnJlbnQgaW5kZXggaW4gdGhlIHN0cmluZy4gICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gZW5kX2luZDogZW5kIG9mIHRoZSBjdXJyZW50IChzdWItKWZvcm1hdC4gICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBwY3RfaW5kOiBpbmRleCBvZiB0aGUgJyUnIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICAgICAgKilcbiAgKCogICAtIHplcm86ICBpcyB0aGUgJzAnIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gbWludXM6IGlzIHRoZSAnLScgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBwbHVzOiAgaXMgdGhlICcrJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIGhhc2g6ICBpcyB0aGUgJyMnIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gc3BhY2U6IGlzIHRoZSAnICcgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBpZ246ICAgaXMgdGhlICdfJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIHBhZDogcGFkZGluZyBvZiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gcHJlYzogcHJlY2lzaW9uIG9mIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBzeW1iOiBjaGFyIHJlcHJlc2VudGluZyB0aGUgY29udmVyc2lvbiAoJ2MnLCAncycsICdkJywgLi4uKS4gKilcbiAgKCogICAtIGNoYXJfc2V0OiBzZXQgb2YgY2hhcmFjdGVycyBhcyBiaXRtYXAgKHNlZSBzY2FuZiAlWy4uLl0pLiAgICAqKVxuXG4gIGxldCBsZWdhY3lfYmVoYXZpb3IgPSBtYXRjaCBsZWdhY3lfYmVoYXZpb3Igd2l0aFxuICAgIHwgU29tZSBmbGFnIC0+IGZsYWdcbiAgICB8IE5vbmUgLT4gdHJ1ZVxuICAoKiAgV2hlbiB0aGlzIGZsYWcgaXMgZW5hYmxlZCwgdGhlIGZvcm1hdCBwYXJzZXIgdHJpZXMgdG8gYmVoYXZlIGFzXG4gICAgICB0aGUgPDQuMDIgaW1wbGVtZW50YXRpb25zLCBpbiBwYXJ0aWN1bGFyIGl0IGlnbm9yZXMgbW9zdCBiZW5pZ25cbiAgICAgIG5vbnNlbnNpY2FsIGZvcm1hdHMuIFdoZW4gdGhlIGZsYWcgaXMgZGlzYWJsZWQsIGl0IHdpbGwgcmVqZWN0IGFueVxuICAgICAgZm9ybWF0IHRoYXQgaXMgbm90IGFjY2VwdGVkIGJ5IHRoZSBzcGVjaWZpY2F0aW9uLlxuXG4gICAgICBBIHR5cGljYWwgZXhhbXBsZSB3b3VsZCBiZSBcIiUrIGRcIjogc3BlY2lmeWluZyBib3RoICcrJyAoaWYgdGhlXG4gICAgICBudW1iZXIgaXMgcG9zaXRpdmUsIHBhZCB3aXRoIGEgJysnIHRvIGdldCB0aGUgc2FtZSB3aWR0aCBhc1xuICAgICAgbmVnYXRpdmUgbnVtYmVycykgYW5kICcgJyAoaWYgdGhlIG51bWJlciBpcyBwb3NpdGl2ZSwgcGFkIHdpdGhcbiAgICAgIGEgc3BhY2UpIGRvZXMgbm90IG1ha2Ugc2Vuc2UsIGJ1dCB0aGUgbGVnYWN5ICg8IDQuMDIpXG4gICAgICBpbXBsZW1lbnRhdGlvbiB3YXMgaGFwcHkgdG8ganVzdCBpZ25vcmUgdGhlIHNwYWNlLlxuICAqKVxuICBpblxuXG4gICgqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgZnJpZW5kbHkgZXJyb3IgbWVzc2FnZS4gKilcbiAgbGV0IGludmFsaWRfZm9ybWF0X21lc3NhZ2Ugc3RyX2luZCBtc2cgPVxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsICVzXCJcbiAgICAgIHN0ciBzdHJfaW5kIG1zZ1xuICBpblxuXG4gICgqIFVzZWQgd2hlbiB0aGUgZW5kIG9mIHRoZSBmb3JtYXQgKG9yIHRoZSBjdXJyZW50IHN1Yi1mb3JtYXQpIHdhcyBlbmNvdW50ZXJlZFxuICAgICAgdW5leHBlY3RlZGx5LiAqKVxuICBsZXQgdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQgPVxuICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2UgZW5kX2luZFxuICAgICAgXCJ1bmV4cGVjdGVkIGVuZCBvZiBmb3JtYXRcIlxuICBpblxuXG4gICgqIFVzZWQgZm9yICUwYzogbm8gb3RoZXIgd2lkdGhzIGFyZSBpbXBsZW1lbnRlZCAqKVxuICBsZXQgaW52YWxpZF9ub25udWxsX2NoYXJfd2lkdGggc3RyX2luZCA9XG4gICAgaW52YWxpZF9mb3JtYXRfbWVzc2FnZSBzdHJfaW5kXG4gICAgICBcIm5vbi16ZXJvIHdpZHRocyBhcmUgdW5zdXBwb3J0ZWQgZm9yICVjIGNvbnZlcnNpb25zXCJcbiAgaW5cbiAgKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBmcmllbmRseSBlcnJvciBtZXNzYWdlIGFib3V0IGFuIG9wdGlvbiBkZXBlbmRlbmN5XG4gICAgIHByb2JsZW0uICopXG4gIGxldCBpbnZhbGlkX2Zvcm1hdF93aXRob3V0IHN0cl9pbmQgYyBzID1cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCAnJWMnIHdpdGhvdXQgJXNcIlxuICAgICAgc3RyIHN0cl9pbmQgYyBzXG4gIGluXG5cbiAgKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBmcmllbmRseSBlcnJvciBtZXNzYWdlIGFib3V0IGFuIHVuZXhwZWN0ZWRcbiAgICAgY2hhcmFjdGVyLiAqKVxuICBsZXQgZXhwZWN0ZWRfY2hhcmFjdGVyIHN0cl9pbmQgZXhwZWN0ZWQgcmVhZCA9XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCAlcyBleHBlY3RlZCwgcmVhZCAlQ1wiXG4gICAgICBzdHIgc3RyX2luZCBleHBlY3RlZCByZWFkXG4gIGluXG5cbiAgKCogUGFyc2UgdGhlIHN0cmluZyBmcm9tIGJlZ19pbmQgKGluY2x1ZGVkKSB0byBlbmRfaW5kIChleGNsdWRlZCkuICopXG4gIGxldCByZWMgcGFyc2UgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gYmVnX2luZCBlbmRfaW5kIC0+IHBhcnNlX2xpdGVyYWwgYmVnX2luZCBiZWdfaW5kIGVuZF9pbmRcblxuICAoKiBSZWFkIGxpdGVyYWwgY2hhcmFjdGVycyB1cCB0byAnJScgb3IgJ0AnIHNwZWNpYWwgY2hhcmFjdGVycy4gKilcbiAgYW5kIHBhcnNlX2xpdGVyYWwgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIGxpdF9zdGFydCBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIGFkZF9saXRlcmFsIGxpdF9zdGFydCBzdHJfaW5kIEVuZF9vZl9mb3JtYXQgZWxzZVxuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICclJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlX2Zvcm1hdCBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgICAgYWRkX2xpdGVyYWwgbGl0X3N0YXJ0IHN0cl9pbmQgZm10X3Jlc3RcbiAgICAgIHwgJ0AnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2VfYWZ0ZXJfYXQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIGFkZF9saXRlcmFsIGxpdF9zdGFydCBzdHJfaW5kIGZtdF9yZXN0XG4gICAgICB8IF8gLT5cbiAgICAgICAgcGFyc2VfbGl0ZXJhbCBsaXRfc3RhcnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG5cbiAgKCogUGFyc2UgYSBmb3JtYXQgYWZ0ZXIgJyUnICopXG4gIGFuZCBwYXJzZV9mb3JtYXQgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBlbmRfaW5kIC0+IHBhcnNlX2lnbiBwY3RfaW5kIChwY3RfaW5kICsgMSkgZW5kX2luZFxuXG4gIGFuZCBwYXJzZV9pZ24gOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ18nIC0+IHBhcnNlX2ZsYWdzIHBjdF9pbmQgKHN0cl9pbmQrMSkgZW5kX2luZCB0cnVlXG4gICAgICB8IF8gLT4gcGFyc2VfZmxhZ3MgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgZmFsc2VcblxuICBhbmQgcGFyc2VfZmxhZ3MgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmJcbiAgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgaWduIC0+XG4gICAgbGV0IHplcm8gPSByZWYgZmFsc2UgYW5kIG1pbnVzID0gcmVmIGZhbHNlXG4gICAgYW5kIHBsdXMgPSByZWYgZmFsc2UgYW5kIHNwYWNlID0gcmVmIGZhbHNlXG4gICAgYW5kIGhhc2ggPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgc2V0X2ZsYWcgc3RyX2luZCBmbGFnID1cbiAgICAgICgqIGluIGxlZ2FjeSBtb2RlLCBkdXBsaWNhdGUgZmxhZ3MgYXJlIGFjY2VwdGVkICopXG4gICAgICBpZiAhZmxhZyAmJiBub3QgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIGR1cGxpY2F0ZSBmbGFnICVDXCJcbiAgICAgICAgICBzdHIgc3RyX2luZCBzdHIuW3N0cl9pbmRdO1xuICAgICAgZmxhZyA6PSB0cnVlO1xuICAgIGluXG4gICAgbGV0IHJlYyByZWFkX2ZsYWdzIHN0cl9pbmQgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIGJlZ2luIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnMCcgLT4gc2V0X2ZsYWcgc3RyX2luZCB6ZXJvOyAgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8ICctJyAtPiBzZXRfZmxhZyBzdHJfaW5kIG1pbnVzOyByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgJysnIC0+IHNldF9mbGFnIHN0cl9pbmQgcGx1czsgIHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCAnIycgLT4gc2V0X2ZsYWcgc3RyX2luZCBoYXNoOyByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgJyAnIC0+IHNldF9mbGFnIHN0cl9pbmQgc3BhY2U7IHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCBfIC0+XG4gICAgICAgIHBhcnNlX3BhZGRpbmcgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmRcbiAgICAgICAgICAhemVybyAhbWludXMgIXBsdXMgIWhhc2ggIXNwYWNlIGlnblxuICAgICAgZW5kXG4gICAgaW5cbiAgICByZWFkX2ZsYWdzIHN0cl9pbmRcblxuICAoKiBUcnkgdG8gcmVhZCBhIGRpZ2l0YWwgb3IgYSAnKicgcGFkZGluZy4gKilcbiAgYW5kIHBhcnNlX3BhZGRpbmcgOiB0eXBlIGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCB6ZXJvIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ24gLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIGxldCBwYWR0eSA9IG1hdGNoIHplcm8sIG1pbnVzIHdpdGhcbiAgICAgIHwgZmFsc2UsIGZhbHNlIC0+IFJpZ2h0XG4gICAgICB8IGZhbHNlLCB0cnVlICAtPiBMZWZ0XG4gICAgICB8ICB0cnVlLCBmYWxzZSAtPiBaZXJvc1xuICAgICAgfCAgdHJ1ZSwgdHJ1ZSAgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gTGVmdFxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnLScgXCIwXCIgaW5cbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgLT5cbiAgICAgIGxldCBuZXdfaW5kLCB3aWR0aCA9IHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCAwIGluXG4gICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgbmV3X2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgKExpdF9wYWRkaW5nIChwYWR0eSwgd2lkdGgpKVxuICAgIHwgJyonIC0+XG4gICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZVxuICAgICAgICBpZ24gKEFyZ19wYWRkaW5nIHBhZHR5KVxuICAgIHwgXyAtPlxuICAgICAgYmVnaW4gbWF0Y2ggcGFkdHkgd2l0aFxuICAgICAgfCBMZWZ0ICAtPlxuICAgICAgICBpZiBub3QgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgICBpbnZhbGlkX2Zvcm1hdF93aXRob3V0IChzdHJfaW5kIC0gMSkgJy0nIFwicGFkZGluZ1wiO1xuICAgICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICBOb19wYWRkaW5nXG4gICAgICB8IFplcm9zIC0+XG4gICAgICAgICAoKiBhICcwJyBwYWRkaW5nIGluZGljYXRpb24gbm90IGZvbGxvd2VkIGJ5IGFueXRoaW5nIHNob3VsZFxuICAgICAgICAgICBiZSBpbnRlcnByZXRlZCBhcyBhIFJpZ2h0IHBhZGRpbmcgb2Ygd2lkdGggMC4gVGhpcyBpcyB1c2VkXG4gICAgICAgICAgIGJ5IHNjYW5uaW5nIGNvbnZlcnNpb25zICUwcyBhbmQgJTBjICopXG4gICAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAgIChMaXRfcGFkZGluZyAoUmlnaHQsIDApKVxuICAgICAgfCBSaWdodCAtPlxuICAgICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICBOb19wYWRkaW5nXG4gICAgICBlbmRcblxuICAoKiBJcyBwcmVjaXNpb24gZGVmaW5lZD8gKilcbiAgYW5kIHBhcnNlX2FmdGVyX3BhZGRpbmcgOiB0eXBlIHggZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoeCwgXykgcGFkZGluZyAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnLicgLT5cbiAgICAgIHBhcnNlX3ByZWNpc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgIHBhZFxuICAgIHwgc3ltYiAtPlxuICAgICAgcGFyc2VfY29udmVyc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZFxuICAgICAgICBOb19wcmVjaXNpb24gcGFkIHN5bWJcblxuICAoKiBSZWFkIHRoZSBkaWdpdGFsIG9yICcqJyBwcmVjaXNpb24uICopXG4gIGFuZCBwYXJzZV9wcmVjaXNpb24gOiB0eXBlIHggZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoeCwgXykgcGFkZGluZyAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbGV0IHBhcnNlX2xpdGVyYWwgbWludXMgc3RyX2luZCA9XG4gICAgICBsZXQgbmV3X2luZCwgcHJlYyA9IHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCAwIGluXG4gICAgICBwYXJzZV9hZnRlcl9wcmVjaXNpb24gcGN0X2luZCBuZXdfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICBwYWQgKExpdF9wcmVjaXNpb24gcHJlYykgaW5cbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgLT4gcGFyc2VfbGl0ZXJhbCBtaW51cyBzdHJfaW5kXG4gICAgfCAoJysnIHwgJy0nKSBhcyBzeW1iIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+XG4gICAgICAoKiBMZWdhY3kgbW9kZSB3b3VsZCBhY2NlcHQgYW5kIGlnbm9yZSAnKycgb3IgJy0nIGJlZm9yZSB0aGVcbiAgICAgICAgIGludGVnZXIgZGVzY3JpYmluZyB0aGUgZGVzaXJlZCBwcmVjaXNpb247IG5vdGUgdGhhdCB0aGlzXG4gICAgICAgICBjYW5ub3QgaGFwcGVuIGZvciBwYWRkaW5nIHdpZHRoLCBhcyAnKycgYW5kICctJyBhbHJlYWR5IGhhdmVcbiAgICAgICAgIGEgc2VtYW50aWNzIHRoZXJlLlxuXG4gICAgICAgICBUaGF0IHNhaWQsIHRoZSBpZGVhIChzdXBwb3J0ZWQgYnkgdGhpcyB0d2VhaykgdGhhdCB3aWR0aCBhbmRcbiAgICAgICAgIHByZWNpc2lvbiBsaXRlcmFscyBhcmUgXCJpbnRlZ2VyIGxpdGVyYWxzXCIgaW4gdGhlIE9DYW1sIHNlbnNlIGlzXG4gICAgICAgICBzdGlsbCBibGF0YW50bHkgd3JvbmcsIGFzIDEyM180NTYgb3IgMHhGRiBhcmUgcmVqZWN0ZWQuICopXG4gICAgICBwYXJzZV9saXRlcmFsIChtaW51cyB8fCBzeW1iID0gJy0nKSAoc3RyX2luZCArIDEpXG4gICAgfCAnKicgLT5cbiAgICAgIHBhcnNlX2FmdGVyX3ByZWNpc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2VcbiAgICAgICAgaWduIHBhZCBBcmdfcHJlY2lzaW9uXG4gICAgfCBfIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlblxuICAgICAgICAoKiBub3RlIHRoYXQgbGVnYWN5IGltcGxlbWVudGF0aW9uIGRpZCBub3QgaWdub3JlICcuJyB3aXRob3V0XG4gICAgICAgICAgIGEgbnVtYmVyIChhcyBpdCBkb2VzIGZvciBwYWRkaW5nIGluZGljYXRpb25zKSwgYnV0XG4gICAgICAgICAgIGludGVycHJldHMgaXQgYXMgJy4wJyAqKVxuICAgICAgICBwYXJzZV9hZnRlcl9wcmVjaXNpb24gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAgIHBhZCAoTGl0X3ByZWNpc2lvbiAwKVxuICAgICAgZWxzZVxuICAgICAgICBpbnZhbGlkX2Zvcm1hdF93aXRob3V0IChzdHJfaW5kIC0gMSkgJy4nIFwicHJlY2lzaW9uXCJcblxuICAoKiBUcnkgdG8gcmVhZCB0aGUgY29udmVyc2lvbi4gKilcbiAgYW5kIHBhcnNlX2FmdGVyX3ByZWNpc2lvbiA6IHR5cGUgeCB5IHogdCBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+XG4gICAgICAgICh4LCB5KSBwYWRkaW5nIC0+ICh6LCB0KSBwcmVjaXNpb24gLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWQgcHJlYyAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbGV0IHBhcnNlX2NvbnYgKHR5cGUgdSkgKHR5cGUgdikgKHBhZHByZWMgOiAodSwgdikgcGFkZGluZykgPVxuICAgICAgcGFyc2VfY29udmVyc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZFxuICAgICAgICBwcmVjIHBhZHByZWMgc3RyLltzdHJfaW5kXSBpblxuICAgICgqIGluIGxlZ2FjeSBtb2RlLCBzb21lIGZvcm1hdHMgKCVzIGFuZCAlUykgYWNjZXB0IGEgd2VpcmQgbWl4IG9mXG4gICAgICAgcGFkZGluZyBhbmQgcHJlY2lzaW9uLCB3aGljaCBpcyBtZXJnZWQgYXMgYSBzaW5nbGUgcGFkZGluZ1xuICAgICAgIGluZm9ybWF0aW9uLiBGb3IgZXhhbXBsZSwgaW4gJS4xMHMgdGhlIHByZWNpc2lvbiBpcyBpbXBsaWNpdGx5XG4gICAgICAgdW5kZXJzdG9vZCBhcyBwYWRkaW5nICUxMHMsIGJ1dCB0aGUgbGVmdC1wYWRkaW5nIGNvbXBvbmVudCBtYXlcbiAgICAgICBiZSBzcGVjaWZpZWQgZWl0aGVyIGFzIGEgbGVmdCBwYWRkaW5nIG9yIGEgbmVnYXRpdmUgcHJlY2lzaW9uOlxuICAgICAgICUtLjNzIGFuZCAlLi0zcyBhcmUgZXF1aXZhbGVudCB0byAlLTNzICopXG4gICAgbWF0Y2ggcGFkIHdpdGhcbiAgICB8IE5vX3BhZGRpbmcgLT4gKFxuICAgICAgbWF0Y2ggbWludXMsIHByZWMgd2l0aFxuICAgICAgICB8IF8sIE5vX3ByZWNpc2lvbiAtPiBwYXJzZV9jb252IE5vX3BhZGRpbmdcbiAgICAgICAgfCBmYWxzZSwgTGl0X3ByZWNpc2lvbiBuIC0+IHBhcnNlX2NvbnYgKExpdF9wYWRkaW5nIChSaWdodCwgbikpXG4gICAgICAgIHwgdHJ1ZSwgTGl0X3ByZWNpc2lvbiBuIC0+IHBhcnNlX2NvbnYgKExpdF9wYWRkaW5nIChMZWZ0LCBuKSlcbiAgICAgICAgfCBmYWxzZSwgQXJnX3ByZWNpc2lvbiAtPiBwYXJzZV9jb252IChBcmdfcGFkZGluZyBSaWdodClcbiAgICAgICAgfCB0cnVlLCBBcmdfcHJlY2lzaW9uIC0+IHBhcnNlX2NvbnYgKEFyZ19wYWRkaW5nIExlZnQpXG4gICAgKVxuICAgIHwgcGFkIC0+IHBhcnNlX2NvbnYgcGFkXG5cbiAgKCogQ2FzZSBhbmFseXNpcyBvbiBjb252ZXJzaW9uLiAqKVxuICBhbmQgcGFyc2VfY29udmVyc2lvbiA6IHR5cGUgeCB5IHogdCB1IHYgZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gKHgsIHkpIHBhZGRpbmcgLT5cbiAgICAgICAgKHosIHQpIHByZWNpc2lvbiAtPiAodSwgdikgcGFkZGluZyAtPiBjaGFyIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkIHByZWMgcGFkcHJlYyBzeW1iIC0+XG4gICAgKCogRmxhZ3MgdXNlZCB0byBjaGVjayBvcHRpb24gdXNhZ2VzL2NvbXBhdGliaWxpdGllcy4gKilcbiAgICBsZXQgcGx1c191c2VkICA9IHJlZiBmYWxzZSBhbmQgaGFzaF91c2VkID0gcmVmIGZhbHNlXG4gICAgYW5kIHNwYWNlX3VzZWQgPSByZWYgZmFsc2UgYW5kIGlnbl91c2VkICAgPSByZWYgZmFsc2VcbiAgICBhbmQgcGFkX3VzZWQgICA9IHJlZiBmYWxzZSBhbmQgcHJlY191c2VkICA9IHJlZiBmYWxzZSBpblxuXG4gICAgKCogQWNjZXNzIHRvIG9wdGlvbnMsIHVwZGF0ZSBmbGFncy4gKilcbiAgICBsZXQgZ2V0X3BsdXMgICAgKCkgPSBwbHVzX3VzZWQgIDo9IHRydWU7IHBsdXNcbiAgICBhbmQgZ2V0X2hhc2ggICAoKSA9IGhhc2hfdXNlZCA6PSB0cnVlOyBoYXNoXG4gICAgYW5kIGdldF9zcGFjZSAgICgpID0gc3BhY2VfdXNlZCA6PSB0cnVlOyBzcGFjZVxuICAgIGFuZCBnZXRfaWduICAgICAoKSA9IGlnbl91c2VkICAgOj0gdHJ1ZTsgaWduXG4gICAgYW5kIGdldF9wYWQgICAgICgpID0gcGFkX3VzZWQgICA6PSB0cnVlOyBwYWRcbiAgICBhbmQgZ2V0X3ByZWMgICAgKCkgPSBwcmVjX3VzZWQgIDo9IHRydWU7IHByZWNcbiAgICBhbmQgZ2V0X3BhZHByZWMgKCkgPSBwYWRfdXNlZCAgIDo9IHRydWU7IHBhZHByZWMgaW5cblxuICAgIGxldCBnZXRfaW50X3BhZCAoKSA6ICh4LHkpIHBhZGRpbmcgPVxuICAgICAgKCogJTUuM2QgaXMgYWNjZXB0ZWQgYW5kIG1lYW5pbmdmdWw6IHBhZCB0byBsZW5ndGggNSB3aXRoXG4gICAgICAgICBzcGFjZXMsIGJ1dCBmaXJzdCBwYWQgd2l0aCB6ZXJvcyB1cHRvIGxlbmd0aCAzICgwLXBhZGRpbmdcbiAgICAgICAgIGlzIHRoZSBpbnRlcnByZXRhdGlvbiBvZiBcInByZWNpc2lvblwiIGZvciBpbnRlZ2VyIGZvcm1hdHMpLlxuXG4gICAgICAgICAlMDUuM2QgaXMgcmVkdW5kYW50OiBwYWQgdG8gbGVuZ3RoIDUgKndpdGggemVyb3MqLCBidXRcbiAgICAgICAgIGZpcnN0IHBhZCB3aXRoIHplcm9zLi4uIFRvIGFkZCBpbnN1bHQgdG8gdGhlIGluanVyeSwgdGhlXG4gICAgICAgICBsZWdhY3kgaW1wbGVtZW50YXRpb24gaWdub3JlcyB0aGUgMC1wYWRkaW5nIGluZGljYXRpb24gYW5kXG4gICAgICAgICBkb2VzIHRoZSA1IHBhZGRpbmcgd2l0aCBzcGFjZXMgaW5zdGVhZC4gV2UgcmV1c2UgdGhpc1xuICAgICAgICAgaW50ZXJwcmV0YXRpb24gZm9yIGNvbXBhdGliaWxpdHksIGJ1dCBzdGF0aWNhbGx5IHJlamVjdCB0aGlzXG4gICAgICAgICBmb3JtYXQgd2hlbiB0aGUgbGVnYWN5IG1vZGUgaXMgZGlzYWJsZWQsIHRvIHByb3RlY3Qgc3RyaWN0XG4gICAgICAgICB1c2VycyBmcm9tIHRoaXMgY29ybmVyIGNhc2UuICopXG4gICAgICAgbWF0Y2ggZ2V0X3BhZCAoKSwgZ2V0X3ByZWMgKCkgd2l0aFxuICAgICAgICAgfCBwYWQsIE5vX3ByZWNpc2lvbiAtPiBwYWRcbiAgICAgICAgIHwgTm9fcGFkZGluZywgXyAgICAgLT4gTm9fcGFkZGluZ1xuICAgICAgICAgfCBMaXRfcGFkZGluZyAoWmVyb3MsIG4pLCBfIC0+XG4gICAgICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIExpdF9wYWRkaW5nIChSaWdodCwgbilcbiAgICAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJzAnIFwicHJlY2lzaW9uXCJcbiAgICAgICAgIHwgQXJnX3BhZGRpbmcgWmVyb3MsIF8gLT5cbiAgICAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gQXJnX3BhZGRpbmcgUmlnaHRcbiAgICAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJzAnIFwicHJlY2lzaW9uXCJcbiAgICAgICAgIHwgTGl0X3BhZGRpbmcgXyBhcyBwYWQsIF8gLT4gcGFkXG4gICAgICAgICB8IEFyZ19wYWRkaW5nIF8gYXMgcGFkLCBfIC0+IHBhZCBpblxuXG4gICAgKCogQ2hlY2sgdGhhdCBwYWR0eSA8PiBaZXJvcy4gKilcbiAgICBsZXQgY2hlY2tfbm9fMCBzeW1iICh0eXBlIGEgYikgKHBhZCA6IChhLCBiKSBwYWRkaW5nKSA6IChhLGIpIHBhZGRpbmcgPVxuICAgICAgbWF0Y2ggcGFkIHdpdGhcbiAgICAgIHwgTm9fcGFkZGluZyAtPiBwYWRcbiAgICAgIHwgTGl0X3BhZGRpbmcgKChMZWZ0IHwgUmlnaHQpLCBfKSAtPiBwYWRcbiAgICAgIHwgQXJnX3BhZGRpbmcgKExlZnQgfCBSaWdodCkgLT4gcGFkXG4gICAgICB8IExpdF9wYWRkaW5nIChaZXJvcywgd2lkdGgpIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIExpdF9wYWRkaW5nIChSaWdodCwgd2lkdGgpXG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCIwXCJcbiAgICAgIHwgQXJnX3BhZGRpbmcgWmVyb3MgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gQXJnX3BhZGRpbmcgUmlnaHRcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIjBcIlxuICAgIGluXG5cbiAgICAoKiBHZXQgcGFkZGluZyBhcyBhIHBhZF9vcHRpb24gKHNlZSBcIiVfXCIsIFwiJXtcIiwgXCIlKFwiIGFuZCBcIiVbXCIpLlxuICAgICAgIChubyBuZWVkIGZvciBsZWdhY3kgbW9kZSB0d2Vha2luZywgdGhvc2Ugd2VyZSByZWplY3RlZCBieSB0aGVcbiAgICAgICBsZWdhY3kgcGFyc2VyIGFzIHdlbGwpICopXG4gICAgbGV0IG9wdF9vZl9wYWQgYyAodHlwZSBhKSAodHlwZSBiKSAocGFkIDogKGEsIGIpIHBhZGRpbmcpID0gbWF0Y2ggcGFkIHdpdGhcbiAgICAgIHwgTm9fcGFkZGluZyAtPiBOb25lXG4gICAgICB8IExpdF9wYWRkaW5nIChSaWdodCwgd2lkdGgpIC0+IFNvbWUgd2lkdGhcbiAgICAgIHwgTGl0X3BhZGRpbmcgKFplcm9zLCB3aWR0aCkgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gU29tZSB3aWR0aFxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBjIFwiJzAnXCJcbiAgICAgIHwgTGl0X3BhZGRpbmcgKExlZnQsIHdpZHRoKSAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBTb21lIHdpZHRoXG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIGMgXCInLSdcIlxuICAgICAgfCBBcmdfcGFkZGluZyBfIC0+IGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBjIFwiJyonXCJcbiAgICBpblxuICAgIGxldCBnZXRfcGFkX29wdCBjID0gb3B0X29mX3BhZCBjIChnZXRfcGFkICgpKSBpblxuICAgIGxldCBnZXRfcGFkcHJlY19vcHQgYyA9IG9wdF9vZl9wYWQgYyAoZ2V0X3BhZHByZWMgKCkpIGluXG5cbiAgICAoKiBHZXQgcHJlY2lzaW9uIGFzIGEgcHJlY19vcHRpb24gKHNlZSBcIiVfZlwiKS5cbiAgICAgICAobm8gbmVlZCBmb3IgbGVnYWN5IG1vZGUgdHdlYWtpbmcsIHRob3NlIHdlcmUgcmVqZWN0ZWQgYnkgdGhlXG4gICAgICAgbGVnYWN5IHBhcnNlciBhcyB3ZWxsKSAqKVxuICAgIGxldCBnZXRfcHJlY19vcHQgKCkgPSBtYXRjaCBnZXRfcHJlYyAoKSB3aXRoXG4gICAgICB8IE5vX3ByZWNpc2lvbiAgICAgICAtPiBOb25lXG4gICAgICB8IExpdF9wcmVjaXNpb24gbmRlYyAtPiBTb21lIG5kZWNcbiAgICAgIHwgQXJnX3ByZWNpc2lvbiAgICAgIC0+IGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnXycgXCInKidcIlxuICAgIGluXG5cbiAgICBsZXQgZm10X3Jlc3VsdCA9IG1hdGNoIHN5bWIgd2l0aFxuICAgIHwgJywnIC0+XG4gICAgICBwYXJzZSBzdHJfaW5kIGVuZF9pbmRcbiAgICB8ICdjJyAtPlxuICAgICAgbGV0IGNoYXJfZm9ybWF0IGZtdF9yZXN0ID0gKCogJWMgKilcbiAgICAgICAgaWYgZ2V0X2lnbiAoKVxuICAgICAgICB0aGVuIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfY2hhciwgZm10X3Jlc3QpKVxuICAgICAgICBlbHNlIEZtdF9FQkIgKENoYXIgZm10X3Jlc3QpXG4gICAgICBpblxuICAgICAgbGV0IHNjYW5fZm9ybWF0IGZtdF9yZXN0ID0gKCogJTBjICopXG4gICAgICAgIGlmIGdldF9pZ24gKClcbiAgICAgICAgdGhlbiBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX3NjYW5fbmV4dF9jaGFyLCBmbXRfcmVzdCkpXG4gICAgICAgIGVsc2UgRm10X0VCQiAoU2Nhbl9uZXh0X2NoYXIgZm10X3Jlc3QpXG4gICAgICBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGJlZ2luIG1hdGNoIGdldF9wYWRfb3B0ICdjJyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBjaGFyX2Zvcm1hdCBmbXRfcmVzdFxuICAgICAgICB8IFNvbWUgMCAtPiBzY2FuX2Zvcm1hdCBmbXRfcmVzdFxuICAgICAgICB8IFNvbWUgX24gLT5cbiAgICAgICAgICAgaWYgbm90IGxlZ2FjeV9iZWhhdmlvclxuICAgICAgICAgICB0aGVuIGludmFsaWRfbm9ubnVsbF9jaGFyX3dpZHRoIHN0cl9pbmRcbiAgICAgICAgICAgZWxzZSAoKiBsZWdhY3kgaWdub3JlcyAlYyB3aWR0aHMgKikgY2hhcl9mb3JtYXQgZm10X3Jlc3RcbiAgICAgIGVuZFxuICAgIHwgJ0MnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfY2FtbF9jaGFyLGZtdF9yZXN0KSlcbiAgICAgIGVsc2UgRm10X0VCQiAoQ2FtbF9jaGFyIGZtdF9yZXN0KVxuICAgIHwgJ3MnIC0+XG4gICAgICBsZXQgcGFkID0gY2hlY2tfbm9fMCBzeW1iIChnZXRfcGFkcHJlYyAoKSkgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX3N0cmluZyAoZ2V0X3BhZHByZWNfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkZGluZ19mbXRfRUJCIChwYWQnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZGRpbmdfZm10X2ViYiBwYWQgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoU3RyaW5nIChwYWQnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ1MnIC0+XG4gICAgICBsZXQgcGFkID0gY2hlY2tfbm9fMCBzeW1iIChnZXRfcGFkcHJlYyAoKSkgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2NhbWxfc3RyaW5nIChnZXRfcGFkcHJlY19vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRkaW5nX2ZtdF9FQkIgKHBhZCcsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkZGluZ19mbXRfZWJiIHBhZCBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChDYW1sX3N0cmluZyAocGFkJywgZm10X3Jlc3QnKSlcbiAgICB8ICdkJyB8ICdpJyB8ICd4JyB8ICdYJyB8ICdvJyB8ICd1JyAtPlxuICAgICAgbGV0IGljb252ID0gY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgKGdldF9wbHVzICgpKSAoZ2V0X2hhc2ggKCkpXG4gICAgICAgIChnZXRfc3BhY2UgKCkpIHN5bWIgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2ludCAoaWNvbnYsIGdldF9wYWRfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9pbnRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEludCAoaWNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ04nIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgbGV0IGNvdW50ZXIgPSBUb2tlbl9jb3VudGVyIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgY291bnRlciBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdF9yZXN0KSlcbiAgICB8ICdsJyB8ICduJyB8ICdMJyB3aGVuIHN0cl9pbmQ9ZW5kX2luZCB8fCBub3QgKGlzX2ludF9iYXNlIHN0ci5bc3RyX2luZF0pIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgbGV0IGNvdW50ZXIgPSBjb3VudGVyX29mX2NoYXIgc3ltYiBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIGNvdW50ZXIgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXRfcmVzdCkpXG4gICAgfCAnbCcgLT5cbiAgICAgIGxldCBpY29udiA9XG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCAoc3RyX2luZCArIDEpIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKVxuICAgICAgICAgIChnZXRfc3BhY2UgKCkpIHN0ci5bc3RyX2luZF0gaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2ludDMyIChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoSW50MzIgKGljb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICduJyAtPlxuICAgICAgbGV0IGljb252ID1cbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIChzdHJfaW5kICsgMSkgKGdldF9wbHVzICgpKVxuICAgICAgICAgIChnZXRfaGFzaCAoKSkgKGdldF9zcGFjZSAoKSkgc3RyLltzdHJfaW5kXSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfbmF0aXZlaW50IChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoTmF0aXZlaW50IChpY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnTCcgLT5cbiAgICAgIGxldCBpY29udiA9XG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCAoc3RyX2luZCArIDEpIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKVxuICAgICAgICAgIChnZXRfc3BhY2UgKCkpIHN0ci5bc3RyX2luZF0gaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2ludDY0IChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoSW50NjQgKGljb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICdmJyB8ICdlJyB8ICdFJyB8ICdnJyB8ICdHJyB8ICdGJyB8ICdoJyB8ICdIJyAtPlxuICAgICAgbGV0IGZjb252ID1cbiAgICAgICAgY29tcHV0ZV9mbG9hdF9jb252IHBjdF9pbmQgc3RyX2luZFxuICAgICAgICAgIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKSAoZ2V0X3NwYWNlICgpKSBzeW1iIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9mbG9hdCAoZ2V0X3BhZF9vcHQgJ18nLCBnZXRfcHJlY19vcHQgKCkpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEZsb2F0IChmY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnYicgfCAnQicgLT5cbiAgICAgIGxldCBwYWQgPSBjaGVja19ub18wIHN5bWIgKGdldF9wYWRwcmVjICgpKSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfYm9vbCAoZ2V0X3BhZHByZWNfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkZGluZ19mbXRfRUJCIChwYWQnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZGRpbmdfZm10X2ViYiBwYWQgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoQm9vbCAocGFkJywgZm10X3Jlc3QnKSlcbiAgICB8ICdhJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKEFscGhhIGZtdF9yZXN0KVxuICAgIHwgJ3QnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoVGhldGEgZm10X3Jlc3QpXG4gICAgfCAncicgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW4gRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9yZWFkZXIsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2UgRm10X0VCQiAoUmVhZGVyIGZtdF9yZXN0KVxuICAgIHwgJyEnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoRmx1c2ggZm10X3Jlc3QpXG4gICAgfCAoJyUnIHwgJ0AnKSBhcyBjIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoQ2hhcl9saXRlcmFsIChjLCBmbXRfcmVzdCkpXG4gICAgfCAneycgLT5cbiAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgc3RyX2luZCBlbmRfaW5kICd9JyBpblxuICAgICAgbGV0IEZtdF9FQkIgc3ViX2ZtdCA9IHBhcnNlIHN0cl9pbmQgc3ViX2VuZCBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3ViX2VuZCArIDIpIGVuZF9pbmQgaW5cbiAgICAgIGxldCBzdWJfZm10dHkgPSBmbXR0eV9vZl9mbXQgc3ViX2ZtdCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9mb3JtYXRfYXJnIChnZXRfcGFkX29wdCAnXycsIHN1Yl9mbXR0eSkgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChGb3JtYXRfYXJnIChnZXRfcGFkX29wdCAneycsIHN1Yl9mbXR0eSwgZm10X3Jlc3QpKVxuICAgIHwgJygnIC0+XG4gICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIHN0cl9pbmQgZW5kX2luZCAnKScgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGluXG4gICAgICBsZXQgRm10X0VCQiBzdWJfZm10ID0gcGFyc2Ugc3RyX2luZCBzdWJfZW5kIGluXG4gICAgICBsZXQgc3ViX2ZtdHR5ID0gZm10dHlfb2ZfZm10IHN1Yl9mbXQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfZm9ybWF0X3N1YnN0IChnZXRfcGFkX29wdCAnXycsIHN1Yl9mbXR0eSkgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChGb3JtYXRfc3Vic3QgKGdldF9wYWRfb3B0ICcoJywgc3ViX2ZtdHR5LCBmbXRfcmVzdCkpXG4gICAgfCAnWycgLT5cbiAgICAgIGxldCBuZXh0X2luZCwgY2hhcl9zZXQgPSBwYXJzZV9jaGFyX3NldCBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgbmV4dF9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zY2FuX2NoYXJfc2V0IChnZXRfcGFkX29wdCAnXycsIGNoYXJfc2V0KSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKFNjYW5fY2hhcl9zZXQgKGdldF9wYWRfb3B0ICdbJywgY2hhcl9zZXQsIGZtdF9yZXN0KSlcbiAgICB8ICctJyB8ICcrJyB8ICcjJyB8ICcgJyB8ICdfJyAtPlxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBcXFxuICAgICAgICAgZmxhZyAlQyBpcyBvbmx5IGFsbG93ZWQgYWZ0ZXIgdGhlICclJScsIGJlZm9yZSBwYWRkaW5nIGFuZCBwcmVjaXNpb25cIlxuICAgICAgICBzdHIgcGN0X2luZCBzeW1iXG4gICAgfCBfIC0+XG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIFxcXG4gICAgICAgICBpbnZhbGlkIGNvbnZlcnNpb24gXFxcIiUlJWNcXFwiXCIgc3RyIChzdHJfaW5kIC0gMSkgc3ltYlxuICAgIGluXG4gICAgKCogQ2hlY2sgZm9yIHVudXNlZCBvcHRpb25zLCBhbmQgcmVqZWN0IHRoZW0gYXMgaW5jb21wYXRpYmxlLlxuXG4gICAgICAgU3VjaCBjaGVja3MgbmVlZCB0byBiZSBkaXNhYmxlZCBpbiBsZWdhY3kgbW9kZSwgYXMgdGhlIGxlZ2FjeVxuICAgICAgIHBhcnNlciBzaWxlbnRseSBpZ25vcmVkIGluY29tcGF0aWJsZSBmbGFncy4gKilcbiAgICBpZiBub3QgbGVnYWN5X2JlaGF2aW9yIHRoZW4gYmVnaW5cbiAgICBpZiBub3QgIXBsdXNfdXNlZCAmJiBwbHVzIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJysnXCI7XG4gICAgaWYgbm90ICFoYXNoX3VzZWQgJiYgaGFzaCB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicjJ1wiO1xuICAgIGlmIG5vdCAhc3BhY2VfdXNlZCAmJiBzcGFjZSB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicgJ1wiO1xuICAgIGlmIG5vdCAhcGFkX3VzZWQgICYmIFBhZGRpbmdfRUJCIHBhZCA8PiBQYWRkaW5nX0VCQiBOb19wYWRkaW5nIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiYHBhZGRpbmcnXCI7XG4gICAgaWYgbm90ICFwcmVjX3VzZWQgJiYgUHJlY2lzaW9uX0VCQiBwcmVjIDw+IFByZWNpc2lvbl9FQkIgTm9fcHJlY2lzaW9uIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAoaWYgaWduIHRoZW4gJ18nIGVsc2Ugc3ltYilcbiAgICAgICAgXCJgcHJlY2lzaW9uJ1wiO1xuICAgIGlmIGlnbiAmJiBwbHVzIHRoZW4gaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICdfJyBcIicrJ1wiO1xuICAgIGVuZDtcbiAgICAoKiB0aGlzIGxhc3QgdGVzdCBtdXN0IG5vdCBiZSBkaXNhYmxlZCBpbiBsZWdhY3kgbW9kZSxcbiAgICAgICBhcyBpZ25vcmluZyBpdCB3b3VsZCB0eXBpY2FsbHkgcmVzdWx0IGluIGEgZGlmZmVyZW50IHR5cGluZ1xuICAgICAgIHRoYW4gd2hhdCB0aGUgbGVnYWN5IHBhcnNlciB1c2VkICopXG4gICAgaWYgbm90ICFpZ25fdXNlZCAmJiBpZ24gdGhlblxuICAgICAgYmVnaW4gbWF0Y2ggc3ltYiB3aXRoXG4gICAgICAgICgqIGFyZ3VtZW50LWxlc3MgZm9ybWF0cyBjYW4gc2FmZWx5IGJlIGlnbm9yZWQgaW4gbGVnYWN5IG1vZGUgKilcbiAgICAgICAgfCAoJ0AnIHwgJyUnIHwgJyEnIHwgJywnKSB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPiAoKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIidfJ1wiXG4gICAgICBlbmQ7XG4gICAgZm10X3Jlc3VsdFxuXG4gICgqIFBhcnNlIGZvcm1hdHRpbmcgaW5mb3JtYXRpb24gKGFmdGVyICdAJykuICopXG4gIGFuZCBwYXJzZV9hZnRlcl9hdCA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIEZtdF9FQkIgKENoYXJfbGl0ZXJhbCAoJ0AnLCBFbmRfb2ZfZm9ybWF0KSlcbiAgICBlbHNlXG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ1snIC0+XG4gICAgICAgIHBhcnNlX3RhZyBmYWxzZSAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChDbG9zZV9ib3gsIGZtdF9yZXN0KSlcbiAgICAgIHwgJ3snIC0+XG4gICAgICAgIHBhcnNlX3RhZyB0cnVlIChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCAnfScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKENsb3NlX3RhZywgZm10X3Jlc3QpKVxuICAgICAgfCAnLCcgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEJyZWFrIChcIkAsXCIsIDAsIDApLCBmbXRfcmVzdCkpXG4gICAgICB8ICcgJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoQnJlYWsgKFwiQCBcIiwgMSwgMCksIGZtdF9yZXN0KSlcbiAgICAgIHwgJzsnIC0+XG4gICAgICAgIHBhcnNlX2dvb2RfYnJlYWsgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8ICc/JyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRkZsdXNoLCBmbXRfcmVzdCkpXG4gICAgICB8ICdcXG4nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChGb3JjZV9uZXdsaW5lLCBmbXRfcmVzdCkpXG4gICAgICB8ICcuJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRmx1c2hfbmV3bGluZSwgZm10X3Jlc3QpKVxuICAgICAgfCAnPCcgLT5cbiAgICAgICAgcGFyc2VfbWFnaWNfc2l6ZSAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgJ0AnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChFc2NhcGVkX2F0LCBmbXRfcmVzdCkpXG4gICAgICB8ICclJyB3aGVuIHN0cl9pbmQgKyAxIDwgZW5kX2luZCAmJiBzdHIuW3N0cl9pbmQgKyAxXSA9ICclJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMikgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRXNjYXBlZF9wZXJjZW50LCBmbXRfcmVzdCkpXG4gICAgICB8ICclJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChDaGFyX2xpdGVyYWwgKCdAJywgZm10X3Jlc3QpKVxuICAgICAgfCBjIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChTY2FuX2luZGljIGMsIGZtdF9yZXN0KSlcblxuICAoKiBUcnkgdG8gcmVhZCB0aGUgb3B0aW9uYWwgPG5hbWU+IGFmdGVyIFwiQHtcIiBvciBcIkBbXCIuICopXG4gIGFuZCBwYXJzZV90YWcgOiB0eXBlIGUgZiAuIGJvb2wgLT4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBpc19vcGVuX3RhZyBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICB0cnlcbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICc8JyAtPlxuICAgICAgICBsZXQgaW5kID0gU3RyaW5nLmluZGV4X2Zyb20gc3RyIChzdHJfaW5kICsgMSkgJz4nIGluXG4gICAgICAgIGlmIGluZCA+PSBlbmRfaW5kIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICBsZXQgc3ViX3N0ciA9IFN0cmluZy5zdWIgc3RyIHN0cl9pbmQgKGluZCAtIHN0cl9pbmQgKyAxKSBpblxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChpbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIGxldCBGbXRfRUJCIHN1Yl9mbXQgPSBwYXJzZSBzdHJfaW5kIChpbmQgKyAxKSBpblxuICAgICAgICBsZXQgc3ViX2Zvcm1hdCA9IEZvcm1hdCAoc3ViX2ZtdCwgc3ViX3N0cikgaW5cbiAgICAgICAgbGV0IGZvcm1hdHRpbmcgPVxuICAgICAgICAgIGlmIGlzX29wZW5fdGFnIHRoZW4gT3Blbl90YWcgc3ViX2Zvcm1hdCBlbHNlIE9wZW5fYm94IHN1Yl9mb3JtYXQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19nZW4gKGZvcm1hdHRpbmcsIGZtdF9yZXN0KSlcbiAgICAgIHwgXyAtPlxuICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBzdWJfZm9ybWF0ID0gRm9ybWF0IChFbmRfb2ZfZm9ybWF0LCBcIlwiKSBpblxuICAgICAgbGV0IGZvcm1hdHRpbmcgPVxuICAgICAgICBpZiBpc19vcGVuX3RhZyB0aGVuIE9wZW5fdGFnIHN1Yl9mb3JtYXQgZWxzZSBPcGVuX2JveCBzdWJfZm9ybWF0IGluXG4gICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2dlbiAoZm9ybWF0dGluZywgZm10X3Jlc3QpKVxuXG4gICgqIFRyeSB0byByZWFkIHRoZSBvcHRpb25hbCA8d2lkdGggb2Zmc2V0PiBhZnRlciBcIkA7XCIuICopXG4gIGFuZCBwYXJzZV9nb29kX2JyZWFrIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIGxldCBuZXh0X2luZCwgZm9ybWF0dGluZ19saXQgPVxuICAgICAgdHJ5XG4gICAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHx8IHN0ci5bc3RyX2luZF0gPD4gJzwnIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICBsZXQgc3RyX2luZF8xID0gcGFyc2Vfc3BhY2VzIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBtYXRjaCBzdHIuW3N0cl9pbmRfMV0gd2l0aFxuICAgICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT4gKFxuICAgICAgICAgIGxldCBzdHJfaW5kXzIsIHdpZHRoID0gcGFyc2VfaW50ZWdlciBzdHJfaW5kXzEgZW5kX2luZCBpblxuICAgICAgICAgICAgbGV0IHN0cl9pbmRfMyA9IHBhcnNlX3NwYWNlcyBzdHJfaW5kXzIgZW5kX2luZCBpblxuICAgICAgICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXzNdIHdpdGhcbiAgICAgICAgICAgICAgfCAnPicgLT5cbiAgICAgICAgICAgICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIChzdHJfaW5kLTIpIChzdHJfaW5kXzMtc3RyX2luZCszKSBpblxuICAgICAgICAgICAgICAgIHN0cl9pbmRfMyArIDEsIEJyZWFrIChzLCB3aWR0aCwgMClcbiAgICAgICAgICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+XG4gICAgICAgICAgICAgICAgbGV0IHN0cl9pbmRfNCwgb2Zmc2V0ID0gcGFyc2VfaW50ZWdlciBzdHJfaW5kXzMgZW5kX2luZCBpblxuICAgICAgICAgICAgICAgIGxldCBzdHJfaW5kXzUgPSBwYXJzZV9zcGFjZXMgc3RyX2luZF80IGVuZF9pbmQgaW5cbiAgICAgICAgICAgICAgICBpZiBzdHIuW3N0cl9pbmRfNV0gPD4gJz4nIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICAgICAgICAgIGxldCBzID0gU3RyaW5nLnN1YiBzdHIgKHN0cl9pbmQtMikgKHN0cl9pbmRfNS1zdHJfaW5kKzMpIGluXG4gICAgICAgICAgICAgICAgc3RyX2luZF81ICsgMSwgQnJlYWsgKHMsIHdpZHRoLCBvZmZzZXQpXG4gICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgKVxuICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB3aXRoIE5vdF9mb3VuZCB8IEZhaWx1cmUgXyAtPlxuICAgICAgICBzdHJfaW5kLCBCcmVhayAoXCJAO1wiLCAxLCAwKVxuICAgIGluXG4gICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBuZXh0X2luZCBlbmRfaW5kIGluXG4gICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCBmbXRfcmVzdCkpXG5cbiAgKCogUGFyc2UgdGhlIHNpemUgaW4gYSA8bj4uICopXG4gIGFuZCBwYXJzZV9tYWdpY19zaXplIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIG1hdGNoXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHN0cl9pbmRfMSA9IHBhcnNlX3NwYWNlcyBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXzFdIHdpdGhcbiAgICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+XG4gICAgICAgICAgbGV0IHN0cl9pbmRfMiwgc2l6ZSA9IHBhcnNlX2ludGVnZXIgc3RyX2luZF8xIGVuZF9pbmQgaW5cbiAgICAgICAgICBsZXQgc3RyX2luZF8zID0gcGFyc2Vfc3BhY2VzIHN0cl9pbmRfMiBlbmRfaW5kIGluXG4gICAgICAgICAgaWYgc3RyLltzdHJfaW5kXzNdIDw+ICc+JyB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIChzdHJfaW5kIC0gMikgKHN0cl9pbmRfMyAtIHN0cl9pbmQgKyAzKSBpblxuICAgICAgICAgIFNvbWUgKHN0cl9pbmRfMyArIDEsIE1hZ2ljX3NpemUgKHMsIHNpemUpKVxuICAgICAgICB8IF8gLT4gTm9uZVxuICAgICAgd2l0aCBOb3RfZm91bmQgfCBGYWlsdXJlIF8gLT5cbiAgICAgICAgTm9uZVxuICAgIHdpdGhcbiAgICB8IFNvbWUgKG5leHRfaW5kLCBmb3JtYXR0aW5nX2xpdCkgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgbmV4dF9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCBmbXRfcmVzdCkpXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKFNjYW5faW5kaWMgJzwnLCBmbXRfcmVzdCkpXG5cbiAgKCogUGFyc2UgYW5kIGNvbnN0cnVjdCBhIGNoYXIgc2V0LiAqKVxuICBhbmQgcGFyc2VfY2hhcl9zZXQgc3RyX2luZCBlbmRfaW5kID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuXG4gICAgbGV0IGNoYXJfc2V0ID0gY3JlYXRlX2NoYXJfc2V0ICgpIGluXG4gICAgbGV0IGFkZF9jaGFyIGMgPVxuICAgICAgYWRkX2luX2NoYXJfc2V0IGNoYXJfc2V0IGM7XG4gICAgaW5cbiAgICBsZXQgYWRkX3JhbmdlIGMgYycgPVxuICAgICAgZm9yIGkgPSBpbnRfb2ZfY2hhciBjIHRvIGludF9vZl9jaGFyIGMnIGRvXG4gICAgICAgIGFkZF9pbl9jaGFyX3NldCBjaGFyX3NldCAoY2hhcl9vZl9pbnQgaSk7XG4gICAgICBkb25lO1xuICAgIGluXG5cbiAgICBsZXQgZmFpbF9zaW5nbGVfcGVyY2VudCBzdHJfaW5kID1cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogJyUlJyBhbG9uZSBpcyBub3QgYWNjZXB0ZWQgaW4gY2hhcmFjdGVyIHNldHMsIFxcXG4gICAgICAgICB1c2UgJSUlJSBpbnN0ZWFkIGF0IHBvc2l0aW9uICVkLlwiIHN0ciBzdHJfaW5kXG4gICAgaW5cblxuICAgICgqIFBhcnNlIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgYSBjaGFyIHNldC4gKilcbiAgICBsZXQgcmVjIHBhcnNlX2NoYXJfc2V0X3N0YXJ0IHN0cl9pbmQgZW5kX2luZCA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbGV0IGMgPSBzdHIuW3N0cl9pbmRdIGluXG4gICAgICBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG5cbiAgICAoKiBQYXJzZSB0aGUgY29udGVudCBvZiBhIGNoYXIgc2V0IHVudGlsIHRoZSBmaXJzdCAnXScuICopXG4gICAgYW5kIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgc3RyX2luZCBlbmRfaW5kID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIHN0cl9pbmQgKyAxXG4gICAgICB8ICctJyAtPlxuICAgICAgICBhZGRfY2hhciAnLSc7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8IGMgLT5cbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciAoc3RyX2luZCArIDEpIGVuZF9pbmQgY1xuXG4gICAgKCogVGVzdCBmb3IgcmFuZ2UgaW4gY2hhciBzZXQuICopXG4gICAgYW5kIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgc3RyX2luZCBlbmRfaW5kIGMgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnXScgLT5cbiAgICAgICAgYWRkX2NoYXIgYztcbiAgICAgICAgc3RyX2luZCArIDFcbiAgICAgIHwgJy0nIC0+XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2FmdGVyX21pbnVzIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG4gICAgICB8ICgnJScgfCAnQCcpIGFzIGMnIHdoZW4gYyA9ICclJyAtPlxuICAgICAgICBhZGRfY2hhciBjJztcbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfY29udGVudCAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgYycgLT5cbiAgICAgICAgaWYgYyA9ICclJyB0aGVuIGZhaWxfc2luZ2xlX3BlcmNlbnQgc3RyX2luZDtcbiAgICAgICAgKCogbm90ZSB0aGF0ICdAJyBhbG9uZSBpcyBhY2NlcHRlZCwgYXMgZG9uZSBieSB0aGUgbGVnYWN5XG4gICAgICAgICAgIGltcGxlbWVudGF0aW9uOyB0aGUgZG9jdW1lbnRhdGlvbiBzcGVjaWZpY2FsbHkgcmVxdWlyZXMgJUBcbiAgICAgICAgICAgc28gd2UgY291bGQgd2FybiBvbiB0aGF0ICopXG4gICAgICAgIGFkZF9jaGFyIGM7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGMnXG5cbiAgICAoKiBNYW5hZ2UgcmFuZ2UgaW4gY2hhciBzZXQgKGV4Y2VwdCBpZiB0aGUgJy0nIHRoZSBsYXN0IGNoYXIgYmVmb3JlICddJykgKilcbiAgICBhbmQgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfbWludXMgc3RyX2luZCBlbmRfaW5kIGMgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnXScgLT5cbiAgICAgICAgYWRkX2NoYXIgYztcbiAgICAgICAgYWRkX2NoYXIgJy0nO1xuICAgICAgICBzdHJfaW5kICsgMVxuICAgICAgfCAnJScgLT5cbiAgICAgICAgaWYgc3RyX2luZCArIDEgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICAgIGJlZ2luIG1hdGNoIHN0ci5bc3RyX2luZCArIDFdIHdpdGhcbiAgICAgICAgICB8ICgnJScgfCAnQCcpIGFzIGMnIC0+XG4gICAgICAgICAgICBhZGRfcmFuZ2UgYyBjJztcbiAgICAgICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kXG4gICAgICAgICAgfCBfIC0+IGZhaWxfc2luZ2xlX3BlcmNlbnQgc3RyX2luZFxuICAgICAgICBlbmRcbiAgICAgIHwgYycgLT5cbiAgICAgICAgYWRkX3JhbmdlIGMgYyc7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgaW5cbiAgICBsZXQgc3RyX2luZCwgcmV2ZXJzZSA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICAgIHwgJ14nIC0+IHN0cl9pbmQgKyAxLCB0cnVlXG4gICAgICAgIHwgXyAtPiBzdHJfaW5kLCBmYWxzZSBpblxuICAgIGxldCBuZXh0X2luZCA9IHBhcnNlX2NoYXJfc2V0X3N0YXJ0IHN0cl9pbmQgZW5kX2luZCBpblxuICAgIGxldCBjaGFyX3NldCA9IGZyZWV6ZV9jaGFyX3NldCBjaGFyX3NldCBpblxuICAgIG5leHRfaW5kLCAoaWYgcmV2ZXJzZSB0aGVuIHJldl9jaGFyX3NldCBjaGFyX3NldCBlbHNlIGNoYXJfc2V0KVxuXG4gICgqIENvbnN1bWUgYWxsIG5leHQgc3BhY2VzLCByYWlzZSBhbiBGYWlsdXJlIGlmIGVuZF9pbmQgaXMgcmVhY2hlZC4gKilcbiAgYW5kIHBhcnNlX3NwYWNlcyBzdHJfaW5kIGVuZF9pbmQgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgaWYgc3RyLltzdHJfaW5kXSA9ICcgJyB0aGVuIHBhcnNlX3NwYWNlcyAoc3RyX2luZCArIDEpIGVuZF9pbmQgZWxzZSBzdHJfaW5kXG5cbiAgKCogUmVhZCBhIHBvc2l0aXZlIGludGVnZXIgZnJvbSB0aGUgc3RyaW5nLCByYWlzZSBhIEZhaWx1cmUgaWYgZW5kX2luZCBpc1xuICAgICByZWFjaGVkLiAqKVxuICBhbmQgcGFyc2VfcG9zaXRpdmUgc3RyX2luZCBlbmRfaW5kIGFjYyA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBhY2MgKiAxMCArIChpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJzAnKSBpblxuICAgICAgaWYgbmV3X2FjYyA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBpbnRlZ2VyICVkIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbGltaXQgJWRcIlxuICAgICAgICAgIHN0ciBuZXdfYWNjIFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgICAgZWxzZVxuICAgICAgICBwYXJzZV9wb3NpdGl2ZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgbmV3X2FjY1xuICAgIHwgXyAtPiBzdHJfaW5kLCBhY2NcblxuICAoKiBSZWFkIGEgcG9zaXRpdmUgb3IgbmVnYXRpdmUgaW50ZWdlciBmcm9tIHRoZSBzdHJpbmcsIHJhaXNlIGEgRmFpbHVyZVxuICAgICBpZiBlbmRfaW5kIGlzIHJlYWNoZWQuICopXG4gIGFuZCBwYXJzZV9pbnRlZ2VyIHN0cl9pbmQgZW5kX2luZCA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgLT4gcGFyc2VfcG9zaXRpdmUgc3RyX2luZCBlbmRfaW5kIDBcbiAgICB8ICctJyAtPiAoXG4gICAgICBpZiBzdHJfaW5kICsgMSA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZCArIDFdIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyAtPlxuICAgICAgICBsZXQgbmV4dF9pbmQsIG4gPSBwYXJzZV9wb3NpdGl2ZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgMCBpblxuICAgICAgICBuZXh0X2luZCwgLW5cbiAgICAgIHwgYyAtPlxuICAgICAgICBleHBlY3RlZF9jaGFyYWN0ZXIgKHN0cl9pbmQgKyAxKSBcImRpZ2l0XCIgY1xuICAgIClcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgKCogQWRkIGEgbGl0ZXJhbCB0byBhIGZvcm1hdCBmcm9tIGEgbGl0ZXJhbCBjaGFyYWN0ZXIgc3ViLXNlcXVlbmNlLiAqKVxuICBhbmQgYWRkX2xpdGVyYWwgOiB0eXBlIGEgZCBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiAoYSwgXywgXywgZCwgZSwgZikgZm10IC0+XG4gICAgICAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBsaXRfc3RhcnQgc3RyX2luZCBmbXQgLT4gbWF0Y2ggc3RyX2luZCAtIGxpdF9zdGFydCB3aXRoXG4gICAgfCAwICAgIC0+IEZtdF9FQkIgZm10XG4gICAgfCAxICAgIC0+IEZtdF9FQkIgKENoYXJfbGl0ZXJhbCAoc3RyLltsaXRfc3RhcnRdLCBmbXQpKVxuICAgIHwgc2l6ZSAtPiBGbXRfRUJCIChTdHJpbmdfbGl0ZXJhbCAoU3RyaW5nLnN1YiBzdHIgbGl0X3N0YXJ0IHNpemUsIGZtdCkpXG5cbiAgKCogU2VhcmNoIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgc3ViLWZvcm1hdFxuICAgICAoaS5lLiB0aGUgY29ycmVzcG9uZGluZyBcIiV9XCIgb3IgXCIlKVwiKSAqKVxuICBhbmQgc2VhcmNoX3N1YmZvcm1hdF9lbmQgc3RyX2luZCBlbmRfaW5kIGMgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW5cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogdW5jbG9zZWQgc3ViLWZvcm1hdCwgXFxcbiAgICAgICAgIGV4cGVjdGVkIFxcXCIlJSVjXFxcIiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkXCIgc3RyIGMgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICclJyAtPlxuICAgICAgaWYgc3RyX2luZCArIDEgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBpZiBzdHIuW3N0cl9pbmQgKyAxXSA9IGMgdGhlbiAoKiBFbmQgb2YgZm9ybWF0IGZvdW5kICopIHN0cl9pbmQgZWxzZVxuICAgICAgICBiZWdpbiBtYXRjaCBzdHIuW3N0cl9pbmQgKyAxXSB3aXRoXG4gICAgICAgIHwgJ18nIC0+XG4gICAgICAgICAgKCogU2VhcmNoIGZvciBcIiVfKFwiIG9yIFwiJV97XCIuICopXG4gICAgICAgICAgaWYgc3RyX2luZCArIDIgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggc3RyLltzdHJfaW5kICsgMl0gd2l0aFxuICAgICAgICAgIHwgJ3snIC0+XG4gICAgICAgICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMykgZW5kX2luZCAnfScgaW5cbiAgICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdWJfZW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgICAgfCAnKCcgLT5cbiAgICAgICAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAzKSBlbmRfaW5kICcpJyBpblxuICAgICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgICB8IF8gLT4gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAzKSBlbmRfaW5kIGNcbiAgICAgICAgICBlbmRcbiAgICAgICAgfCAneycgLT5cbiAgICAgICAgICAoKiAley4uLiV9IHN1Yi1mb3JtYXQgZm91bmQuICopXG4gICAgICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDIpIGVuZF9pbmQgJ30nIGluXG4gICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgfCAnKCcgLT5cbiAgICAgICAgICAoKiAlKC4uLiUpIHN1Yi1mb3JtYXQgZm91bmQuICopXG4gICAgICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDIpIGVuZF9pbmQgJyknIGluXG4gICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgfCAnfScgLT5cbiAgICAgICAgICAoKiBFcnJvcjogJSguLi4lfS4gKilcbiAgICAgICAgICBleHBlY3RlZF9jaGFyYWN0ZXIgKHN0cl9pbmQgKyAxKSBcImNoYXJhY3RlciAnKSdcIiAnfSdcbiAgICAgICAgfCAnKScgLT5cbiAgICAgICAgICAoKiBFcnJvcjogJXsuLi4lKS4gKilcbiAgICAgICAgICBleHBlY3RlZF9jaGFyYWN0ZXIgKHN0cl9pbmQgKyAxKSBcImNoYXJhY3RlciAnfSdcIiAnKSdcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgZW5kXG4gICAgfCBfIC0+IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG5cbiAgKCogQ2hlY2sgaWYgc3ltYiBpcyBhIHZhbGlkIGludCBjb252ZXJzaW9uIGFmdGVyIFwiJWxcIiwgXCIlblwiIG9yIFwiJUxcIiAqKVxuICBhbmQgaXNfaW50X2Jhc2Ugc3ltYiA9IG1hdGNoIHN5bWIgd2l0aFxuICAgIHwgJ2QnIHwgJ2knIHwgJ3gnIHwgJ1gnIHwgJ28nIHwgJ3UnIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcblxuICAoKiBDb252ZXJ0IGEgY2hhciAobCwgbiBvciBMKSB0byBpdHMgYXNzb2NpYXRlZCBjb3VudGVyLiAqKVxuICBhbmQgY291bnRlcl9vZl9jaGFyIHN5bWIgPSBtYXRjaCBzeW1iIHdpdGhcbiAgICB8ICdsJyAtPiBMaW5lX2NvdW50ZXIgIHwgJ24nIC0+IENoYXJfY291bnRlclxuICAgIHwgJ0wnIC0+IFRva2VuX2NvdW50ZXIgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gICgqIENvbnZlcnQgKHBsdXMsIHN5bWIpIHRvIGl0cyBhc3NvY2lhdGVkIGludF9jb252LiAqKVxuICBhbmQgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIHNwYWNlIHN5bWIgPVxuICAgIG1hdGNoIHBsdXMsIGhhc2gsIHNwYWNlLCBzeW1iIHdpdGhcbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdkJyAtPiBJbnRfZCAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAnaScgLT4gSW50X2lcbiAgICB8IGZhbHNlLCBmYWxzZSwgIHRydWUsICdkJyAtPiBJbnRfc2QgfCBmYWxzZSwgZmFsc2UsICB0cnVlLCAnaScgLT4gSW50X3NpXG4gICAgfCAgdHJ1ZSwgZmFsc2UsIGZhbHNlLCAnZCcgLT4gSW50X3BkIHwgIHRydWUsIGZhbHNlLCBmYWxzZSwgJ2knIC0+IEludF9waVxuICAgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ3gnIC0+IEludF94ICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdYJyAtPiBJbnRfWFxuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ3gnIC0+IEludF9DeCB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICdYJyAtPiBJbnRfQ1hcbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdvJyAtPiBJbnRfb1xuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ28nIC0+IEludF9Db1xuICAgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ3UnIC0+IEludF91XG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAnZCcgLT4gSW50X0NkXG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAnaScgLT4gSW50X0NpXG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAndScgLT4gSW50X0N1XG4gICAgfCBfLCB0cnVlLCBfLCAneCcgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gSW50X0N4XG4gICAgfCBfLCB0cnVlLCBfLCAnWCcgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gSW50X0NYXG4gICAgfCBfLCB0cnVlLCBfLCAnbycgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gSW50X0NvXG4gICAgfCBfLCB0cnVlLCBfLCAoJ2QnIHwgJ2knIHwgJ3UnKSAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gKCogaWdub3JlICopXG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgZmFsc2Ugc3BhY2Ugc3ltYlxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicjJ1wiXG4gICAgfCB0cnVlLCBfLCB0cnVlLCBfIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlblxuICAgICAgICAoKiBwbHVzIGFuZCBzcGFjZTogbGVnYWN5IGltcGxlbWVudGF0aW9uIHByZWZlcnMgcGx1cyAqKVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGhhc2ggZmFsc2Ugc3ltYlxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJyAnIFwiJysnXCJcbiAgICB8IGZhbHNlLCBfLCB0cnVlLCBfICAgIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiAoKiBpZ25vcmUgKilcbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIGZhbHNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInICdcIlxuICAgIHwgdHJ1ZSwgXywgZmFsc2UsIF8gICAgLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuICgqIGlnbm9yZSAqKVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBmYWxzZSBoYXNoIHNwYWNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInKydcIlxuICAgIHwgZmFsc2UsIF8sIGZhbHNlLCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gICgqIENvbnZlcnQgKHBsdXMsIHNwYWNlLCBzeW1iKSB0byBpdHMgYXNzb2NpYXRlZCBmbG9hdF9jb252LiAqKVxuICBhbmQgY29tcHV0ZV9mbG9hdF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGhhc2ggc3BhY2Ugc3ltYiA9XG4gICAgbGV0IGZsYWcgPSBtYXRjaCBwbHVzLCBzcGFjZSB3aXRoXG4gICAgfCBmYWxzZSwgZmFsc2UgLT4gRmxvYXRfZmxhZ19cbiAgICB8IGZhbHNlLCAgdHJ1ZSAtPiBGbG9hdF9mbGFnX3NcbiAgICB8ICB0cnVlLCBmYWxzZSAtPiBGbG9hdF9mbGFnX3BcbiAgICB8ICB0cnVlLCAgdHJ1ZSAtPlxuICAgICAgKCogcGx1cyBhbmQgc3BhY2U6IGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBwcmVmZXJzIHBsdXMgKilcbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIEZsb2F0X2ZsYWdfcFxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJyAnIFwiJysnXCIgaW5cbiAgICBsZXQga2luZCA9IG1hdGNoIGhhc2gsIHN5bWIgd2l0aFxuICAgIHwgXywgJ2YnIC0+IEZsb2F0X2ZcbiAgICB8IF8sICdlJyAtPiBGbG9hdF9lXG4gICAgfCBfLCAnRScgLT4gRmxvYXRfRVxuICAgIHwgXywgJ2cnIC0+IEZsb2F0X2dcbiAgICB8IF8sICdHJyAtPiBGbG9hdF9HXG4gICAgfCBfLCAnaCcgLT4gRmxvYXRfaFxuICAgIHwgXywgJ0gnIC0+IEZsb2F0X0hcbiAgICB8IGZhbHNlLCAnRicgLT4gRmxvYXRfRlxuICAgIHwgdHJ1ZSwgJ0YnIC0+IEZsb2F0X0NGXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZSBpblxuICAgIGZsYWcsIGtpbmRcblxuICAoKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIGZyaWVuZGx5IGVycm9yIG1lc3NhZ2UgYWJvdXQgaW5jb21wYXRpYmxlIG9wdGlvbnMuKilcbiAgYW5kIGluY29tcGF0aWJsZV9mbGFnIDogdHlwZSBhIC4gaW50IC0+IGludCAtPiBjaGFyIC0+IHN0cmluZyAtPiBhID1cbiAgICBmdW4gcGN0X2luZCBzdHJfaW5kIHN5bWIgb3B0aW9uIC0+XG4gICAgICBsZXQgc3ViZm10ID0gU3RyaW5nLnN1YiBzdHIgcGN0X2luZCAoc3RyX2luZCAtIHBjdF9pbmQpIGluXG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIFxcXG4gICAgICAgICAlcyBpcyBpbmNvbXBhdGlibGUgd2l0aCAnJWMnIGluIHN1Yi1mb3JtYXQgJVNcIlxuICAgICAgICBzdHIgcGN0X2luZCBvcHRpb24gc3ltYiBzdWJmbXRcblxuICBpbiBwYXJzZSAwIChTdHJpbmcubGVuZ3RoIHN0cilcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICgqIEd1YXJkZWQgc3RyaW5nIHRvIGZvcm1hdCBjb252ZXJzaW9ucyAqKVxuXG4oKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGEgZm9ybWF0IGFjY29yZGluZyB0byBhbiBmbXR0eS4gKilcbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IGZvcm1hdF9vZl9zdHJpbmdfZm10dHkgc3RyIGZtdHR5ID1cbiAgbGV0IEZtdF9FQkIgZm10ID0gZm10X2ViYl9vZl9zdHJpbmcgc3RyIGluXG4gIHRyeSBGb3JtYXQgKHR5cGVfZm9ybWF0IGZtdCBmbXR0eSwgc3RyKVxuICB3aXRoIFR5cGVfbWlzbWF0Y2ggLT5cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImJhZCBpbnB1dDogZm9ybWF0IHR5cGUgbWlzbWF0Y2ggYmV0d2VlbiAlUyBhbmQgJVNcIlxuICAgICAgc3RyIChzdHJpbmdfb2ZfZm10dHkgZm10dHkpXG5cbigqIENvbnZlcnQgYSBzdHJpbmcgdG8gYSBmb3JtYXQgY29tcGF0aWJsZSB3aXRoIGFuIG90aGVyIGZvcm1hdC4gKilcbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IGZvcm1hdF9vZl9zdHJpbmdfZm9ybWF0IHN0ciAoRm9ybWF0IChmbXQnLCBzdHInKSkgPVxuICBsZXQgRm10X0VCQiBmbXQgPSBmbXRfZWJiX29mX3N0cmluZyBzdHIgaW5cbiAgdHJ5IEZvcm1hdCAodHlwZV9mb3JtYXQgZm10IChmbXR0eV9vZl9mbXQgZm10JyksIHN0cilcbiAgd2l0aCBUeXBlX21pc21hdGNoIC0+XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgXCJiYWQgaW5wdXQ6IGZvcm1hdCB0eXBlIG1pc21hdGNoIGJldHdlZW4gJVMgYW5kICVTXCIgc3RyIHN0cidcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9ibGl0X3N0cmluZyIsImNhbWxfYnl0ZXNfc2V0IiwiY2FtbF9jcmVhdGVfYnl0ZXMiLCJjYW1sX2Zvcm1hdF9mbG9hdCIsImNhbWxfZm9ybWF0X2ludCIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfbWxfc3RyaW5nX2xlbmd0aCIsImNhbWxfbm90ZXF1YWwiLCJjYW1sX3N0cmluZ19nZXQiLCJjYW1sX3N0cmluZ191bnNhZmVfZ2V0IiwiY2FtbF90cmFtcG9saW5lIiwiY2FtbF90cmFtcG9saW5lX3JldHVybiIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiY2FtbF9jYWxsNCIsImEzIiwiY2FtbF9jYWxsNSIsImE0IiwiZHVtbXkiLCJnbG9iYWxfZGF0YSIsIkFzc2VydF9mYWlsdXJlIiwiQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzIiwiU3RkbGliIiwiU3RkbGliX0J1ZmZlciIsIlN0ZGxpYl9TdHJpbmciLCJTdGRsaWJfU3lzIiwiU3RkbGliX0NoYXIiLCJTdGRsaWJfQnl0ZXMiLCJTdGRsaWJfSW50IiwiY3JlYXRlX2NoYXJfc2V0IiwicGFyYW0iLCJhZGRfaW5fY2hhcl9zZXQiLCJjaGFyX3NldCIsImMiLCJzdHJfaW5kIiwibWFzayIsImZyZWV6ZV9jaGFyX3NldCIsInJldl9jaGFyX3NldCIsImkiLCJpc19pbl9jaGFyX3NldCIsInBhZF9vZl9wYWRfb3B0IiwicGFkX29wdCIsIndpZHRoIiwicGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IiwiaWduIiwiZm10IiwiaWNvbnYiLCJwcmVjX29wdCIsIm5kZWMiLCJmbXR0eSIsIndpZHRoX29wdCIsImNvdW50ZXIiLCJkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiIsImZjb252IiwiYnVmZmVyX2NyZWF0ZSIsImluaXRfc2l6ZSIsImJ1ZmZlcl9jaGVja19zaXplIiwiYnVmIiwib3ZlcmhlYWQiLCJsZW4iLCJtaW5fbGVuIiwibmV3X2xlbiIsIm5ld19zdHIiLCJidWZmZXJfYWRkX2NoYXIiLCJidWZmZXJfYWRkX3N0cmluZyIsInMiLCJzdHJfbGVuIiwiYnVmZmVyX2NvbnRlbnRzIiwiY2hhcl9vZl9pY29udiIsImNoYXJfb2ZfZmNvbnYiLCJvcHQiLCJjRiIsImJwcmludF9jaGFyX3NldCIsInByaW50X2NoYXIiLCJzZXQiLCJpc19hbG9uZSIsImFmdGVyIiwiYmVmb3JlIiwic3dpdGNoZXIiLCJqIiwiYnByaW50X3BhZHR5IiwicGFkdHkiLCJicHJpbnRfaWdub3JlZF9mbGFnIiwiaWduX2ZsYWciLCJicHJpbnRfcGFkX29wdCIsImJwcmludF9wYWRkaW5nIiwicGFkIiwibiIsImJwcmludF9wcmVjaXNpb24iLCJwcmVjIiwiYnByaW50X2ljb252X2ZsYWciLCJicHJpbnRfYWx0aW50X2ZtdCIsImJwcmludF9mY29udl9mbGFnIiwic3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IiwiZm9ybWF0dGluZ19saXQiLCJzdHIiLCJicHJpbnRfY2hhcl9saXRlcmFsIiwiY2hyIiwiYnByaW50X3N0cmluZ19saXRlcmFsIiwiY3N0X0xpIiwiY3N0X2kiLCJjc3RfbGkiLCJjc3RfbmkiLCJicHJpbnRfZm10dHkiLCJzdWJfZm10dHkiLCJpbnRfb2ZfY3VzdG9tX2FyaXR5IiwieCIsImNzdCIsInN0cmluZ19vZl9mbXQiLCJmbXRpdGVyIiwicmVzdCIsImZtdGluZ19saXQiLCJmbXRpbmdfZ2VuIiwiYXJpdHkiLCJzeW1tIiwidHkiLCJ0eTIiLCJ0eTEiLCJmbXR0eV9yZWxfZGV0IiwibWF0Y2giLCJkZSIsImFmIiwiamQiLCJnYSIsImNzdF9jYW1saW50ZXJuYWxGb3JtYXRfbWwiLCJ0cmFucyIsInJlc3QxIiwicmVzdDIiLCJ0eTEyIiwidHkxMSIsInR5MjIiLCJ0eTIxIiwiZjQiLCJmMiIsImZtdHR5X29mX2ZtdCIsInR5X3Jlc3QiLCJwcmVjX3R5IiwiZm9ybWF0dGluZ19nZW4iLCJmbXR0eV9vZl9jdXN0b20iLCJmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IiwiZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IiwiVHlwZV9taXNtYXRjaCIsInR5cGVfcGFkZGluZyIsInciLCJ0eXBlX3BhZHByZWMiLCJwIiwidHlwZV9mb3JtYXQiLCJ0eXBlX2Zvcm1hdF9nZW4iLCJmbXR0eTAiLCJmbXR0eV9yZXN0IiwiZm10X3Jlc3QiLCJzdWJfZm10dHkxIiwiZm10MSIsImZtdHR5MiIsImZtdDIiLCJmbXR0eTMiLCJmbXQzIiwidHlwZV9pZ25vcmVkX3BhcmFtX29uZSIsInR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aSIsInN1Yl9mbXR0eV9yZXN0Iiwic3ViMl9mbXR0eSIsInN1YjFfZm10dHkiLCJyZWNhc3QiLCJmaXhfcGFkZGluZyIsInJlcyIsImZpeF9pbnRfcHJlY2lzaW9uIiwic3RyaW5nX3RvX2NhbWxfc3RyaW5nIiwibCIsImZvcm1hdF9vZl9mY29udiIsInN5bWIiLCJ0cmFuc2Zvcm1faW50X2FsdCIsInBvcyIsInB1dCIsImxlZnQiLCJjc3RfdSIsImNvbnZlcnRfaW50IiwiY29udmVydF9pbnQzMiIsImNvbnZlcnRfbmF0aXZlaW50IiwiY29udmVydF9pbnQ2NCIsImNvbnZlcnRfZmxvYXQiLCJoZXgiLCJzaWduIiwiY2FtbF9zcGVjaWFsX3ZhbCIsInN0cmluZ19vZl9mbXR0eSIsIm1ha2VfcHJpbnRmIiwiayIsImFjYyIsImthY2MiLCJuZXdfYWNjIiwibyIsIm1ha2VfaWdub3JlZF9wYXJhbSIsIm1ha2VfZnJvbV9mbXR0eSIsIm1ha2VfaW52YWxpZF9hcmciLCJtYWtlX3BhZGRpbmciLCJtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiIsIm1ha2VfY3VzdG9tIiwibWFrZV9pcHJpbnRmIiwia29jIiwiZm5fb2ZfY3VzdG9tX2FyaXR5Iiwib3V0cHV0X2FjYyIsIm1zZyIsImJ1ZnB1dF9hY2MiLCJiIiwic3RycHV0X2FjYyIsImZhaWx3aXRoX21lc3NhZ2UiLCJvcGVuX2JveF9vZl9zdHJpbmciLCJpbnZhbGlkX2JveCIsInBhcnNlX3NwYWNlcyIsIndzdGFydCIsIndlbmQiLCJib3hfbmFtZSIsIm5zdGFydCIsIm5lbmQiLCJpbmRlbnQiLCJleG4iLCJleHBfZW5kIiwiYm94X3R5cGUiLCJtYWtlX3BhZGRpbmdfZm10X2ViYiIsIm1ha2VfcGFkcHJlY19mbXRfZWJiIiwiY3N0X2F0X2NoYXJhY3Rlcl9udW1iZXIiLCJjc3RfaW52YWxpZF9mb3JtYXQiLCJzdWJfZm9ybWF0IiwiZm10X2ViYl9vZl9zdHJpbmciLCJsZWdhY3lfYmVoYXZpb3IiLCJmbGFnIiwiaW52YWxpZF9mb3JtYXRfbWVzc2FnZSIsImludmFsaWRfZm9ybWF0X3dpdGhvdXQiLCJleHBlY3RlZF9jaGFyYWN0ZXIiLCJleHBlY3RlZCIsInJlYWQiLCJjc3RfdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IiwicGFyc2UiLCJsaXRfc3RhcnQiLCJlbmRfaW5kIiwiY3N0XzAiLCJwYXJzZV9mbGFncyIsInBjdF9pbmQiLCJzZXRfZmxhZyIsInplcm8iLCJtaW51cyIsInBsdXMiLCJzcGFjZSIsImhhc2giLCJuZXdfaW5kIiwiY3N0X3ByZWNpc2lvbiIsInBhcnNlX2FmdGVyX3BhZGRpbmciLCJwYXJzZV9saXRlcmFsIiwicGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIiwicGFyc2VfY29udiIsInBhZHByZWMiLCJwYXJzZV9jb252ZXJzaW9uIiwicGx1c191c2VkIiwiZ2V0X3BsdXMiLCJoYXNoX3VzZWQiLCJnZXRfaGFzaCIsInNwYWNlX3VzZWQiLCJnZXRfc3BhY2UiLCJpZ25fdXNlZCIsImdldF9pZ24iLCJwYWRfdXNlZCIsImdldF9wYWQiLCJwcmVjX3VzZWQiLCJnZXRfcHJlYyIsImdldF9wYWRwcmVjIiwiZ2V0X2ludF9wYWQiLCJjaGVja19ub18wIiwib3B0X29mX3BhZCIsImdldF9wYWRfb3B0IiwiZ2V0X3BhZHByZWNfb3B0IiwiZm10X3Jlc3VsdCIsInN1Yl9lbmQiLCJzdWJfZm10IiwiaWdub3JlZCIsIm5leHRfaW5kIiwiY2hhcl9mb3JtYXQiLCJraW5kIiwicGFyc2VfYWZ0ZXJfYXQiLCJzdHJfaW5kXzEiLCJzdHJfaW5kXzIiLCJzdHJfaW5kXzMiLCJvZmZzZXQiLCJzdHJfaW5kXzQiLCJzdHJfaW5kXzUiLCJzaXplIiwicGFyc2VfdGFnIiwiaXNfb3Blbl90YWciLCJpbmQiLCJzdWJfc3RyIiwiZm9ybWF0dGluZyIsInBhcnNlX2NoYXJfc2V0IiwiYWRkX3JhbmdlIiwiZmFpbF9zaW5nbGVfcGVyY2VudCIsInBhcnNlX2NoYXJfc2V0X2NvbnRlbnQiLCJwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIiwicmV2ZXJzZSIsInBhcnNlX3Bvc2l0aXZlIiwicGFyc2VfaW50ZWdlciIsImFkZF9saXRlcmFsIiwic2VhcmNoX3N1YmZvcm1hdF9lbmQiLCJjb21wdXRlX2ludF9jb252IiwiaW5jb21wYXRpYmxlX2ZsYWciLCJvcHRpb24iLCJzdWJmbXQiLCJjc3RfYW5kIiwiY3N0X2JhZF9pbnB1dF9mb3JtYXRfdHlwZV9taXNtIiwiZm9ybWF0X29mX3N0cmluZ19mbXR0eSIsImZvcm1hdF9vZl9zdHJpbmdfZm9ybWF0Il0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLG9CQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLElBQUFDLHdCQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyxrQkFBQTtBQUFBLElBQUFDLHlCQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxJQUFBQyx5QkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FB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QU9GO0FBQUEsU0FFSyxxREFDNkI7QUFBQSxRQUZoQztBQUFBO0FBQUE7QUFBQSxPQTlCSjtBQUFBLFFBZ0N3QjtBQUFBLE9BUHRCO0FBQUEsUUFFSyx1REFLNkI7QUFBQSxPQU5oQztBQUFBO0FBQUE7QUFBQSxJQU1nQztBQUFBLGFBQUE4TixrQkFBQWhFLFNBQUExTSxTQUFBdUksTUFBQW9JO0FBQUFBO0FBQUFBLE1BQUFDO0FBQUFBLFFBNEJyQjtBQUFBLEtBQ2I7QUFBQSxzRUFHZ0M7QUFBQTtBQUFBLElBRWpDO0FBQUE7QUFBQTtBQUFBLElBQUFDLFVEeDVGTDtBQUFBLElBQUFDO0FBQUFBLE1BQUE7QUFBQSxJQUFBQTtBQUFBQSxNQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyx1QkFBQWxOLEtBQUE5QztBQUFBQSxRQUFBSixNQ2c2Rm9CO0FBQUEsSUFDbEIsWUFBWTtBQUFBLFVBQUF5SztBQUFBQSxTQUFBQSxNRGo2RmQ7QUFBQTtBQUFBLGFDcTZGVTtBQUFBLEtBQXVCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxNRHI2RmpDO0FBQUE7QUFBQTtBQUFBLFlBQUE0Rix3QkFBQW5OLEtBQUFqRTtBQUFBQTtBQUFBQSxLQUFBaUUsUUN5NkY0QjtBQUFBLEtBQUFsRCxNQUFBO0FBQUEsS0FBQUEsUUFDUjtBQUFBLElBQ2xCLFlBQTRCLElBQWhCLG1CQUFnQjtBQUFBLFVBQUF5SztBQUFBQSxTQUFBQSxNRDM2RjlCO0FBQUE7QUFBQSxNQzY2Rkksa0RBQzhEO0FBQUEsS0Q5NkZsRTtBQUFBO0FBQUEsR0M4NkZrRTtBQUFBLEdEOTZGbEUiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjoyMzg2NSwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL3ByaW50Zi5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgWGF2aWVyIExlcm95IGFuZCBQaWVycmUgV2VpcywgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3Ncbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0XG5cbmxldCBrZnByaW50ZiBrIG8gKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZiAoZnVuIGFjYyAtPiBvdXRwdXRfYWNjIG8gYWNjOyBrIG8pIEVuZF9vZl9hY2MgZm10XG5sZXQga2JwcmludGYgayBiIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGYgKGZ1biBhY2MgLT4gYnVmcHV0X2FjYyBiIGFjYzsgayBiKSBFbmRfb2ZfYWNjIGZtdFxubGV0IGlrZnByaW50ZiBrIG9jIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9pcHJpbnRmIGsgb2MgZm10XG5sZXQgaWticHJpbnRmID0gaWtmcHJpbnRmXG5cbmxldCBmcHJpbnRmIG9jIGZtdCA9IGtmcHJpbnRmIGlnbm9yZSBvYyBmbXRcbmxldCBicHJpbnRmIGIgZm10ID0ga2JwcmludGYgaWdub3JlIGIgZm10XG5sZXQgaWZwcmludGYgb2MgZm10ID0gaWtmcHJpbnRmIGlnbm9yZSBvYyBmbXRcbmxldCBpYnByaW50ZiBiIGZtdCA9IGlrYnByaW50ZiBpZ25vcmUgYiBmbXRcbmxldCBwcmludGYgZm10ID0gZnByaW50ZiBzdGRvdXQgZm10XG5sZXQgZXByaW50ZiBmbXQgPSBmcHJpbnRmIHN0ZGVyciBmbXRcblxubGV0IGtzcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBsZXQgaycgYWNjID1cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICAgIHN0cnB1dF9hY2MgYnVmIGFjYztcbiAgICBrIChCdWZmZXIuY29udGVudHMgYnVmKSBpblxuICBtYWtlX3ByaW50ZiBrJyBFbmRfb2ZfYWNjIGZtdFxuXG5sZXQgc3ByaW50ZiBmbXQgPSBrc3ByaW50ZiAoZnVuIHMgLT4gcykgZm10XG5cbmxldCBrcHJpbnRmID0ga3NwcmludGZcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImdsb2JhbF9kYXRhIiwiU3RkbGliX0J1ZmZlciIsIkNhbWxpbnRlcm5hbEZvcm1hdCIsIlN0ZGxpYiIsImtmcHJpbnRmIiwiayIsIm8iLCJwYXJhbSIsImZtdCIsImFjYyIsImticHJpbnRmIiwiYiIsImlrZnByaW50ZiIsIm9jIiwiZnByaW50ZiIsImJwcmludGYiLCJpZnByaW50ZiIsImlicHJpbnRmIiwicHJpbnRmIiwiZXByaW50ZiIsImtzcHJpbnRmIiwiYnVmIiwic3ByaW50ZiIsInMiXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMscUJBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsWUFBQUMsU0FBQUMsR0FBQUMsR0FBQUM7QUFBQUEsUUFBQUMsTUNrQmE7QUFBQSxJQUNYO0FBQUE7QUFBQSxzQkFBQUM7QUFBQUEsY0FBd0I7QUFBQSxjQUFnQix1QkFBSztBQUFBO0FBQUE7QUFBQSxpQkFBZ0I7QUFBQTtBQUFBLFlBQUFDLFNBQUFMLEdBQUFNLEdBQUFKO0FBQUFBLFFBQUFDLE1BQ2xEO0FBQUEsSUFDWDtBQUFBO0FBQUEsc0JBQUFDO0FBQUFBLGNBQXdCO0FBQUEsY0FBZ0IsdUJBQUs7QUFBQTtBQUFBO0FBQUEsaUJBQWdCO0FBQUE7QUFBQSxZQUFBRyxVQUFBUCxHQUFBUSxJQUFBTjtBQUFBQSxRQUFBQyxNQUNqRDtBQUFBLElBQ1osbURBQXFCO0FBQUE7QUFBQSxZQUFBTSxRQUFBRCxJQUFBTDtBQUFBQSxJQUdGLDRCRDFCckIsb0JDMEIyQztBQUFBO0FBQUEsWUFBQU8sUUFBQUosR0FBQUgsS0FDdkIsNEJEM0JwQixtQkMyQnlDO0FBQUEsWUFBQVEsU0FBQUgsSUFBQUw7QUFBQUEsSUFDbkIsNkJENUJ0QixvQkM0QjZDO0FBQUE7QUFBQSxZQUFBUyxTQUFBTixHQUFBSDtBQUFBQSxJQUN4Qiw2QkQ3QnJCLG1CQzZCMkM7QUFBQTtBQUFBLFlBQUFVLE9BQUFWLEtBQzFCLCtCQUFrQjtBQUFBLFlBQUFXLFFBQUFYLEtBQ2pCLCtCQUFrQjtBQUFBLFlBQUFZLFNBQUFmLEdBQUFFO0FBQUFBLFFBQUFDLE1BRXZCO0FBQUEsYUFBQUgsSUFBQUk7QUFBQUEsU0FBQVksTUFFQztBQUFBLEtBQ1Y7QUFBQSxLQUNFLE9BQXFCLGNBQXJCLGlDQUFxQjtBQUFBO0FBQUEsSUFDekIsb0RBQTZCO0FBQUE7QUFBQSxZQUFBQyxRQUFBZCxLQUViLHlCQUFBZSxHQUFtQixTQUFDLE9BQUs7QUFBQSxHRHhDM0MiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjoyMzk1MSwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL3ByaW50ZXhjLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIFByaW50ZlxuXG50eXBlIHQgPSBleG4gPSAuLlxuXG5sZXQgcHJpbnRlcnMgPSBBdG9taWMubWFrZSBbXVxuXG5sZXQgbG9jZm10ID0gZm9ybWF0X29mX3N0cmluZyBcIkZpbGUgXFxcIiVzXFxcIiwgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZDogJXNcIlxuXG5sZXQgZmllbGQgeCBpID1cbiAgbGV0IGYgPSBPYmouZmllbGQgeCBpIGluXG4gIGlmIG5vdCAoT2JqLmlzX2Jsb2NrIGYpIHRoZW5cbiAgICBzcHJpbnRmIFwiJWRcIiAoT2JqLm1hZ2ljIGYgOiBpbnQpICAgICAgICAgICAoKiBjYW4gYWxzbyBiZSBhIGNoYXIgKilcbiAgZWxzZSBpZiBPYmoudGFnIGYgPSBPYmouc3RyaW5nX3RhZyB0aGVuXG4gICAgc3ByaW50ZiBcIiVTXCIgKE9iai5tYWdpYyBmIDogc3RyaW5nKVxuICBlbHNlIGlmIE9iai50YWcgZiA9IE9iai5kb3VibGVfdGFnIHRoZW5cbiAgICBzdHJpbmdfb2ZfZmxvYXQgKE9iai5tYWdpYyBmIDogZmxvYXQpXG4gIGVsc2VcbiAgICBcIl9cIlxuXG5sZXQgcmVjIG90aGVyX2ZpZWxkcyB4IGkgPVxuICBpZiBpID49IE9iai5zaXplIHggdGhlbiBcIlwiXG4gIGVsc2Ugc3ByaW50ZiBcIiwgJXMlc1wiIChmaWVsZCB4IGkpIChvdGhlcl9maWVsZHMgeCAoaSsxKSlcblxubGV0IGZpZWxkcyB4ID1cbiAgbWF0Y2ggT2JqLnNpemUgeCB3aXRoXG4gIHwgMCAtPiBcIlwiXG4gIHwgMSAtPiBcIlwiXG4gIHwgMiAtPiBzcHJpbnRmIFwiKCVzKVwiIChmaWVsZCB4IDEpXG4gIHwgXyAtPiBzcHJpbnRmIFwiKCVzJXMpXCIgKGZpZWxkIHggMSkgKG90aGVyX2ZpZWxkcyB4IDIpXG5cbmxldCB1c2VfcHJpbnRlcnMgeCA9XG4gIGxldCByZWMgY29udiA9IGZ1bmN0aW9uXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICAobWF0Y2ggaGQgeCB3aXRoXG4gICAgICAgICB8IE5vbmUgfCBleGNlcHRpb24gXyAtPiBjb252IHRsXG4gICAgICAgICB8IFNvbWUgcyAtPiBTb21lIHMpXG4gICAgfCBbXSAtPiBOb25lIGluXG4gIGNvbnYgKEF0b21pYy5nZXQgcHJpbnRlcnMpXG5cbmxldCBkZXN0cnVjdF9leHRfY29uc3RydWN0b3IgeCA9XG4gIGlmIE9iai50YWcgeCA8PiAwIHRoZW5cbiAgICAoKE9iai5tYWdpYyAoT2JqLmZpZWxkIHggMCkgOiBzdHJpbmcpLCBOb25lKVxuICBlbHNlXG4gICAgbGV0IGNvbnN0cnVjdG9yID1cbiAgICAgIChPYmoubWFnaWMgKE9iai5maWVsZCAoT2JqLmZpZWxkIHggMCkgMCkgOiBzdHJpbmcpIGluXG4gICAgKGNvbnN0cnVjdG9yLCBTb21lIChmaWVsZHMgeCkpXG5cbmxldCBzdHJpbmdfb2ZfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHQgPVxuICBsZXQgY29uc3RydWN0b3IsIGZpZWxkc19vcHQgPSBkZXN0cnVjdF9leHRfY29uc3RydWN0b3IgdCBpblxuICBtYXRjaCBmaWVsZHNfb3B0IHdpdGhcbiAgfCBOb25lIC0+IGNvbnN0cnVjdG9yXG4gIHwgU29tZSBmIC0+IGNvbnN0cnVjdG9yIF4gZlxuXG5sZXQgdG9fc3RyaW5nX2RlZmF1bHQgPSBmdW5jdGlvblxuICB8IE91dF9vZl9tZW1vcnkgLT4gXCJPdXQgb2YgbWVtb3J5XCJcbiAgfCBTdGFja19vdmVyZmxvdyAtPiBcIlN0YWNrIG92ZXJmbG93XCJcbiAgfCBNYXRjaF9mYWlsdXJlKGZpbGUsIGxpbmUsIGNoYXIpIC0+XG4gICAgICBzcHJpbnRmIGxvY2ZtdCBmaWxlIGxpbmUgY2hhciAoY2hhcis1KSBcIlBhdHRlcm4gbWF0Y2hpbmcgZmFpbGVkXCJcbiAgfCBBc3NlcnRfZmFpbHVyZShmaWxlLCBsaW5lLCBjaGFyKSAtPlxuICAgICAgc3ByaW50ZiBsb2NmbXQgZmlsZSBsaW5lIGNoYXIgKGNoYXIrNikgXCJBc3NlcnRpb24gZmFpbGVkXCJcbiAgfCBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZShmaWxlLCBsaW5lLCBjaGFyKSAtPlxuICAgICAgc3ByaW50ZiBsb2NmbXQgZmlsZSBsaW5lIGNoYXIgKGNoYXIrNikgXCJVbmRlZmluZWQgcmVjdXJzaXZlIG1vZHVsZVwiXG4gIHwgeCAtPlxuICAgICAgc3RyaW5nX29mX2V4dGVuc2lvbl9jb25zdHJ1Y3RvciAoT2JqLnJlcHIgeClcblxubGV0IHRvX3N0cmluZyBlID1cbiAgbWF0Y2ggdXNlX3ByaW50ZXJzIGUgd2l0aFxuICB8IFNvbWUgcyAtPiBzXG4gIHwgTm9uZSAtPiB0b19zdHJpbmdfZGVmYXVsdCBlXG5cbmxldCBwcmludCBmY3QgYXJnID1cbiAgdHJ5XG4gICAgZmN0IGFyZ1xuICB3aXRoIHggLT5cbiAgICBlcHJpbnRmIFwiVW5jYXVnaHQgZXhjZXB0aW9uOiAlc1xcblwiICh0b19zdHJpbmcgeCk7XG4gICAgZmx1c2ggc3RkZXJyO1xuICAgIHJhaXNlIHhcblxubGV0IGNhdGNoIGZjdCBhcmcgPVxuICB0cnlcbiAgICBmY3QgYXJnXG4gIHdpdGggeCAtPlxuICAgIGZsdXNoIHN0ZG91dDtcbiAgICBlcHJpbnRmIFwiVW5jYXVnaHQgZXhjZXB0aW9uOiAlc1xcblwiICh0b19zdHJpbmcgeCk7XG4gICAgZXhpdCAyXG5cbnR5cGUgcmF3X2JhY2t0cmFjZV9zbG90XG50eXBlIHJhd19iYWNrdHJhY2VfZW50cnkgPSBwcml2YXRlIGludFxudHlwZSByYXdfYmFja3RyYWNlID0gcmF3X2JhY2t0cmFjZV9lbnRyeSBhcnJheVxuXG5sZXQgcmF3X2JhY2t0cmFjZV9lbnRyaWVzIGJ0ID0gYnRcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2U6XG4gIHVuaXQgLT4gcmF3X2JhY2t0cmFjZSA9IFwiY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2VcIlxuXG5leHRlcm5hbCByYWlzZV93aXRoX2JhY2t0cmFjZTogZXhuIC0+IHJhd19iYWNrdHJhY2UgLT4gJ2FcbiAgPSBcIiVyYWlzZV93aXRoX2JhY2t0cmFjZVwiXG5cbigqIERpc2FibGUgd2FybmluZyAzNzogdmFsdWVzIGFyZSBjb25zdHJ1Y3RlZCBpbiB0aGUgcnVudGltZSAqKVxudHlwZVtAd2FybmluZyBcIi0zN1wiXSBiYWNrdHJhY2Vfc2xvdCA9XG4gIHwgS25vd25fbG9jYXRpb24gb2Yge1xuICAgICAgaXNfcmFpc2UgICA6IGJvb2w7XG4gICAgICBmaWxlbmFtZSAgIDogc3RyaW5nO1xuICAgICAgc3RhcnRfbG51bSA6IGludDtcbiAgICAgIHN0YXJ0X2NoYXIgOiBpbnQ7XG4gICAgICBlbmRfb2Zmc2V0IDogaW50OyAoKiBSZWxhdGl2ZSB0byBiZWdpbm5pbmcgb2Ygc3RhcnRfbG51bSAqKVxuICAgICAgZW5kX2xudW0gICA6IGludDtcbiAgICAgIGVuZF9jaGFyICAgOiBpbnQ7ICgqIFJlbGF0aXZlIHRvIGJlZ2lubmluZyBvZiBlbmRfbG51bSBsaW5lICopXG4gICAgICBpc19pbmxpbmUgIDogYm9vbDtcbiAgICAgIGRlZm5hbWUgICAgOiBzdHJpbmc7XG4gICAgfVxuICB8IFVua25vd25fbG9jYXRpb24gb2Yge1xuICAgICAgaXNfcmFpc2UgOiBib29sXG4gICAgfVxuXG5leHRlcm5hbCBjb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdDpcbiAgcmF3X2JhY2t0cmFjZV9zbG90IC0+IGJhY2t0cmFjZV9zbG90ID0gXCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90XCJcblxuZXh0ZXJuYWwgY29udmVydF9yYXdfYmFja3RyYWNlOlxuICByYXdfYmFja3RyYWNlIC0+IGJhY2t0cmFjZV9zbG90IGFycmF5ID0gXCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZVwiXG5cbmxldCBjb252ZXJ0X3Jhd19iYWNrdHJhY2UgYnQgPVxuICB0cnkgU29tZSAoY29udmVydF9yYXdfYmFja3RyYWNlIGJ0KVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmxldCBmb3JtYXRfYmFja3RyYWNlX3Nsb3QgcG9zIHNsb3QgPVxuICBsZXQgaW5mbyBpc19yYWlzZSA9XG4gICAgaWYgaXNfcmFpc2UgdGhlblxuICAgICAgaWYgcG9zID0gMCB0aGVuIFwiUmFpc2VkIGF0XCIgZWxzZSBcIlJlLXJhaXNlZCBhdFwiXG4gICAgZWxzZVxuICAgICAgaWYgcG9zID0gMCB0aGVuIFwiUmFpc2VkIGJ5IHByaW1pdGl2ZSBvcGVyYXRpb24gYXRcIiBlbHNlIFwiQ2FsbGVkIGZyb21cIlxuICBpblxuICBtYXRjaCBzbG90IHdpdGhcbiAgfCBVbmtub3duX2xvY2F0aW9uIGwgLT5cbiAgICAgIGlmIGwuaXNfcmFpc2UgdGhlblxuICAgICAgICAoKiBjb21waWxlci1pbnNlcnRlZCByZS1yYWlzZSwgc2tpcHBlZCAqKSBOb25lXG4gICAgICBlbHNlXG4gICAgICAgIFNvbWUgKHNwcmludGYgXCIlcyB1bmtub3duIGxvY2F0aW9uXCIgKGluZm8gZmFsc2UpKVxuICB8IEtub3duX2xvY2F0aW9uIGwgLT5cbiAgICAgIGxldCBsaW5lcyA9XG4gICAgICAgIGlmIGwuc3RhcnRfbG51bSA9IGwuZW5kX2xudW0gdGhlblxuICAgICAgICAgIFByaW50Zi5zcHJpbnRmIFwiICVkXCIgbC5zdGFydF9sbnVtXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBQcmludGYuc3ByaW50ZiBcInMgJWQtJWRcIiBsLnN0YXJ0X2xudW0gbC5lbmRfbG51bVxuICAgICAgaW5cbiAgICAgIFNvbWUgKHNwcmludGYgXCIlcyAlcyBpbiBmaWxlIFxcXCIlc1xcXCIlcywgbGluZSVzLCBjaGFyYWN0ZXJzICVkLSVkXCJcbiAgICAgICAgICAgICAgKGluZm8gbC5pc19yYWlzZSkgbC5kZWZuYW1lIGwuZmlsZW5hbWVcbiAgICAgICAgICAgICAgKGlmIGwuaXNfaW5saW5lIHRoZW4gXCIgKGlubGluZWQpXCIgZWxzZSBcIlwiKVxuICAgICAgICAgICAgICBsaW5lcyBsLnN0YXJ0X2NoYXIgbC5lbmRfY2hhcilcblxubGV0IHByaW50X2V4Y2VwdGlvbl9iYWNrdHJhY2Ugb3V0Y2hhbiBiYWNrdHJhY2UgPVxuICBtYXRjaCBiYWNrdHJhY2Ugd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgIGZwcmludGYgb3V0Y2hhblxuICAgICAgICBcIihQcm9ncmFtIG5vdCBsaW5rZWQgd2l0aCAtZywgY2Fubm90IHByaW50IHN0YWNrIGJhY2t0cmFjZSlcXG5cIlxuICB8IFNvbWUgYSAtPlxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgICAgICBtYXRjaCBmb3JtYXRfYmFja3RyYWNlX3Nsb3QgaSBhLihpKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHN0ciAtPiBmcHJpbnRmIG91dGNoYW4gXCIlc1xcblwiIHN0clxuICAgICAgZG9uZVxuXG5sZXQgcHJpbnRfcmF3X2JhY2t0cmFjZSBvdXRjaGFuIHJhd19iYWNrdHJhY2UgPVxuICBwcmludF9leGNlcHRpb25fYmFja3RyYWNlIG91dGNoYW4gKGNvbnZlcnRfcmF3X2JhY2t0cmFjZSByYXdfYmFja3RyYWNlKVxuXG4oKiBjb25mdXNpbmdseSBuYW1lZDogcHJpbnRzIHRoZSBnbG9iYWwgY3VycmVudCBiYWNrdHJhY2UgKilcbmxldCBwcmludF9iYWNrdHJhY2Ugb3V0Y2hhbiA9XG4gIHByaW50X3Jhd19iYWNrdHJhY2Ugb3V0Y2hhbiAoZ2V0X3Jhd19iYWNrdHJhY2UgKCkpXG5cbmxldCBiYWNrdHJhY2VfdG9fc3RyaW5nIGJhY2t0cmFjZSA9XG4gIG1hdGNoIGJhY2t0cmFjZSB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICBcIihQcm9ncmFtIG5vdCBsaW5rZWQgd2l0aCAtZywgY2Fubm90IHByaW50IHN0YWNrIGJhY2t0cmFjZSlcXG5cIlxuICB8IFNvbWUgYSAtPlxuICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEwMjQgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICAgICAgbWF0Y2ggZm9ybWF0X2JhY2t0cmFjZV9zbG90IGkgYS4oaSkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBzdHIgLT4gYnByaW50ZiBiIFwiJXNcXG5cIiBzdHJcbiAgICAgIGRvbmU7XG4gICAgICBCdWZmZXIuY29udGVudHMgYlxuXG5sZXQgcmF3X2JhY2t0cmFjZV90b19zdHJpbmcgcmF3X2JhY2t0cmFjZSA9XG4gIGJhY2t0cmFjZV90b19zdHJpbmcgKGNvbnZlcnRfcmF3X2JhY2t0cmFjZSByYXdfYmFja3RyYWNlKVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfaXNfcmFpc2UgPSBmdW5jdGlvblxuICB8IEtub3duX2xvY2F0aW9uIGwgLT4gbC5pc19yYWlzZVxuICB8IFVua25vd25fbG9jYXRpb24gbCAtPiBsLmlzX3JhaXNlXG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9pc19pbmxpbmUgPSBmdW5jdGlvblxuICB8IEtub3duX2xvY2F0aW9uIGwgLT4gbC5pc19pbmxpbmVcbiAgfCBVbmtub3duX2xvY2F0aW9uIF8gLT4gZmFsc2VcblxudHlwZSBsb2NhdGlvbiA9IHtcbiAgZmlsZW5hbWUgOiBzdHJpbmc7XG4gIGxpbmVfbnVtYmVyIDogaW50O1xuICBzdGFydF9jaGFyIDogaW50O1xuICBlbmRfY2hhciA6IGludDtcbiAgZW5kX2xpbmUgOiBpbnQ7XG4gIGVuZF9jb2wgOiBpbnQ7XG59XG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvbiA9IGZ1bmN0aW9uXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBfIC0+IE5vbmVcbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+XG4gICAgU29tZSB7XG4gICAgICBmaWxlbmFtZSAgICA9IGwuZmlsZW5hbWU7XG4gICAgICBsaW5lX251bWJlciA9IGwuc3RhcnRfbG51bTtcbiAgICAgIHN0YXJ0X2NoYXIgID0gbC5zdGFydF9jaGFyO1xuICAgICAgZW5kX2NoYXIgICAgPSBsLmVuZF9vZmZzZXQ7XG4gICAgICBlbmRfbGluZSAgICA9IGwuZW5kX2xudW07XG4gICAgICBlbmRfY29sICAgICA9IGwuZW5kX2NoYXI7XG4gICAgfVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfZGVmbmFtZSA9IGZ1bmN0aW9uXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBfXG4gIHwgS25vd25fbG9jYXRpb24geyBkZWZuYW1lID0gXCJcIiB9IC0+IE5vbmVcbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+IFNvbWUgbC5kZWZuYW1lXG5cbmxldCBiYWNrdHJhY2Vfc2xvdHMgcmF3X2JhY2t0cmFjZSA9XG4gICgqIFRoZSBkb2N1bWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24gZ3VhcmFudGVlcyB0aGF0IFNvbWUgaXNcbiAgICAgcmV0dXJuZWQgb25seSBpZiBhIHBhcnQgb2YgdGhlIHRyYWNlIGlzIHVzYWJsZS4gVGhpcyBnaXZlcyB1c1xuICAgICBhIGJpdCBtb3JlIHdvcmsgdGhhbiBqdXN0IGNvbnZlcnRfcmF3X2JhY2t0cmFjZSwgYnV0IGl0IG1ha2VzIHRoZVxuICAgICBBUEkgbW9yZSB1c2VyLWZyaWVuZGx5IC0tIG90aGVyd2lzZSBtb3N0IHVzZXJzIHdvdWxkIGhhdmUgdG9cbiAgICAgcmVpbXBsZW1lbnQgdGhlIFwiUHJvZ3JhbSBub3QgbGlua2VkIHdpdGggLWcsIHNvcnJ5XCIgbG9naWNcbiAgICAgdGhlbXNlbHZlcy4gKilcbiAgbWF0Y2ggY29udmVydF9yYXdfYmFja3RyYWNlIHJhd19iYWNrdHJhY2Ugd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGJhY2t0cmFjZSAtPlxuICAgICAgbGV0IHVzYWJsZV9zbG90ID0gZnVuY3Rpb25cbiAgICAgICAgfCBVbmtub3duX2xvY2F0aW9uIF8gLT4gZmFsc2VcbiAgICAgICAgfCBLbm93bl9sb2NhdGlvbiBfIC0+IHRydWUgaW5cbiAgICAgIGxldCByZWMgZXhpc3RzX3VzYWJsZSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgKC0xKSAtPiBmYWxzZVxuICAgICAgICB8IGkgLT4gdXNhYmxlX3Nsb3QgYmFja3RyYWNlLihpKSB8fCBleGlzdHNfdXNhYmxlIChpIC0gMSkgaW5cbiAgICAgIGlmIGV4aXN0c191c2FibGUgKEFycmF5Lmxlbmd0aCBiYWNrdHJhY2UgLSAxKVxuICAgICAgdGhlbiBTb21lIGJhY2t0cmFjZVxuICAgICAgZWxzZSBOb25lXG5cbmxldCBiYWNrdHJhY2Vfc2xvdHNfb2ZfcmF3X2VudHJ5IGVudHJ5ID1cbiAgYmFja3RyYWNlX3Nsb3RzIFt8IGVudHJ5IHxdXG5cbm1vZHVsZSBTbG90ID0gc3RydWN0XG4gIHR5cGUgdCA9IGJhY2t0cmFjZV9zbG90XG4gIGxldCBmb3JtYXQgPSBmb3JtYXRfYmFja3RyYWNlX3Nsb3RcbiAgbGV0IGlzX3JhaXNlID0gYmFja3RyYWNlX3Nsb3RfaXNfcmFpc2VcbiAgbGV0IGlzX2lubGluZSA9IGJhY2t0cmFjZV9zbG90X2lzX2lubGluZVxuICBsZXQgbG9jYXRpb24gPSBiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvblxuICBsZXQgbmFtZSA9IGJhY2t0cmFjZV9zbG90X2RlZm5hbWVcbmVuZFxuXG5sZXQgcmF3X2JhY2t0cmFjZV9sZW5ndGggYnQgPSBBcnJheS5sZW5ndGggYnRcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2Vfc2xvdCA6XG4gIHJhd19iYWNrdHJhY2UgLT4gaW50IC0+IHJhd19iYWNrdHJhY2Vfc2xvdCA9IFwiY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3RcIlxuXG5leHRlcm5hbCBnZXRfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QgOlxuICByYXdfYmFja3RyYWNlX3Nsb3QgLT4gcmF3X2JhY2t0cmFjZV9zbG90IG9wdGlvblxuICA9IFwiY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdFwiXG5cbigqIGNvbmZ1c2luZ2x5IG5hbWVkOlxuICAgcmV0dXJucyB0aGUgKnN0cmluZyogY29ycmVzcG9uZGluZyB0byB0aGUgZ2xvYmFsIGN1cnJlbnQgYmFja3RyYWNlICopXG5sZXQgZ2V0X2JhY2t0cmFjZSAoKSA9IHJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIChnZXRfcmF3X2JhY2t0cmFjZSAoKSlcblxuZXh0ZXJuYWwgcmVjb3JkX2JhY2t0cmFjZTogYm9vbCAtPiB1bml0ID0gXCJjYW1sX3JlY29yZF9iYWNrdHJhY2VcIlxuZXh0ZXJuYWwgYmFja3RyYWNlX3N0YXR1czogdW5pdCAtPiBib29sID0gXCJjYW1sX2JhY2t0cmFjZV9zdGF0dXNcIlxuXG5sZXQgcmVjIHJlZ2lzdGVyX3ByaW50ZXIgZm4gPVxuICBsZXQgb2xkX3ByaW50ZXJzID0gQXRvbWljLmdldCBwcmludGVycyBpblxuICBsZXQgbmV3X3ByaW50ZXJzID0gZm4gOjogb2xkX3ByaW50ZXJzIGluXG4gIGxldCBzdWNjZXNzID0gQXRvbWljLmNvbXBhcmVfYW5kX3NldCBwcmludGVycyBvbGRfcHJpbnRlcnMgbmV3X3ByaW50ZXJzIGluXG4gIGlmIG5vdCBzdWNjZXNzIHRoZW4gcmVnaXN0ZXJfcHJpbnRlciBmblxuXG5leHRlcm5hbCBnZXRfY2FsbHN0YWNrOiBpbnQgLT4gcmF3X2JhY2t0cmFjZSA9IFwiY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2tcIlxuXG5sZXQgZXhuX3Nsb3QgeCA9XG4gIGxldCB4ID0gT2JqLnJlcHIgeCBpblxuICBpZiBPYmoudGFnIHggPSAwIHRoZW4gT2JqLmZpZWxkIHggMCBlbHNlIHhcblxubGV0IGV4bl9zbG90X2lkIHggPVxuICBsZXQgc2xvdCA9IGV4bl9zbG90IHggaW5cbiAgKE9iai5vYmogKE9iai5maWVsZCBzbG90IDEpIDogaW50KVxuXG5sZXQgZXhuX3Nsb3RfbmFtZSB4ID1cbiAgbGV0IHNsb3QgPSBleG5fc2xvdCB4IGluXG4gIChPYmoub2JqIChPYmouZmllbGQgc2xvdCAwKSA6IHN0cmluZylcblxuZXh0ZXJuYWwgZ2V0X2RlYnVnX2luZm9fc3RhdHVzIDogdW5pdCAtPiBpbnQgPSBcImNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXNcIlxuXG4oKiBEZXNjcmlwdGlvbnMgZm9yIGVycm9ycyBpbiBzdGFydHVwLmguIFNlZSBhbHNvIGJhY2t0cmFjZS5jICopXG5sZXQgZXJyb3JzID0gW3wgXCJcIjtcbiAgKCogRklMRV9OT1RfRk9VTkQgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIG5vdCBmb3VuZClcIjtcbiAgKCogQkFEX0JZVEVDT0RFICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBhcHBlYXJzIHRvIGJlIGNvcnJ1cHQpXCI7XG4gICgqIFdST05HX01BR0lDICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBoYXMgd3JvbmcgbWFnaWMgbnVtYmVyKVwiO1xuICAoKiBOT19GRFMgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIGNhbm5vdCBiZSBvcGVuZWQ7XFxuIFxcXG4gICAgICAtLSB0b28gbWFueSBvcGVuIGZpbGVzLiBUcnkgcnVubmluZyB3aXRoIE9DQU1MUlVOUEFSQU09Yj0yKVwiXG58XVxuXG5sZXQgZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciBleG4gcmF3X2JhY2t0cmFjZSA9XG4gIGVwcmludGYgXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uICVzXFxuXCIgKHRvX3N0cmluZyBleG4pO1xuICBwcmludF9yYXdfYmFja3RyYWNlIHN0ZGVyciByYXdfYmFja3RyYWNlO1xuICBsZXQgc3RhdHVzID0gZ2V0X2RlYnVnX2luZm9fc3RhdHVzICgpIGluXG4gIGlmIHN0YXR1cyA8IDAgdGhlblxuICAgIHByZXJyX2VuZGxpbmUgZXJyb3JzLihhYnMgc3RhdHVzKTtcbiAgZmx1c2ggc3RkZXJyXG5cbmxldCB1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciA9IHJlZiBkZWZhdWx0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyXG5cbmxldCBzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgZm4gPSB1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciA6PSBmblxuXG5sZXQgZW1wdHlfYmFja3RyYWNlIDogcmF3X2JhY2t0cmFjZSA9IFt8IHxdXG5cbmxldCB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKCkgPVxuICB0cnlcbiAgICBnZXRfcmF3X2JhY2t0cmFjZSAoKVxuICB3aXRoIF8gKCogT3V0X29mX21lbW9yeT8gKikgLT5cbiAgICBlbXB0eV9iYWNrdHJhY2VcblxubGV0IGhhbmRsZV91bmNhdWdodF9leGNlcHRpb24nIGV4biBkZWJ1Z2dlcl9pbl91c2UgPVxuICB0cnlcbiAgICAoKiBHZXQgdGhlIGJhY2t0cmFjZSBub3csIGluIGNhc2Ugb25lIG9mIHRoZSBbYXRfZXhpdF0gZnVuY3Rpb25cbiAgICAgICBkZXN0cm95cyBpdC4gKilcbiAgICBsZXQgcmF3X2JhY2t0cmFjZSA9XG4gICAgICBpZiBkZWJ1Z2dlcl9pbl91c2UgKCogU2FtZSB0ZXN0IGFzIGluIFtydW50aW1lL3ByaW50ZXhjLmNdICopIHRoZW5cbiAgICAgICAgZW1wdHlfYmFja3RyYWNlXG4gICAgICBlbHNlXG4gICAgICAgIHRyeV9nZXRfcmF3X2JhY2t0cmFjZSAoKVxuICAgIGluXG4gICAgKHRyeSBTdGRsaWIuZG9fYXRfZXhpdCAoKSB3aXRoIF8gLT4gKCkpO1xuICAgIHRyeVxuICAgICAgIXVuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIGV4biByYXdfYmFja3RyYWNlXG4gICAgd2l0aCBleG4nIC0+XG4gICAgICBsZXQgcmF3X2JhY2t0cmFjZScgPSB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgIGVwcmludGYgXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uICVzXFxuXCIgKHRvX3N0cmluZyBleG4pO1xuICAgICAgcHJpbnRfcmF3X2JhY2t0cmFjZSBzdGRlcnIgcmF3X2JhY2t0cmFjZTtcbiAgICAgIGVwcmludGYgXCJGYXRhbCBlcnJvciBpbiB1bmNhdWdodCBleGNlcHRpb24gaGFuZGxlcjogZXhjZXB0aW9uICVzXFxuXCJcbiAgICAgICAgKHRvX3N0cmluZyBleG4nKTtcbiAgICAgIHByaW50X3Jhd19iYWNrdHJhY2Ugc3RkZXJyIHJhd19iYWNrdHJhY2UnO1xuICAgICAgZmx1c2ggc3RkZXJyXG4gIHdpdGhcbiAgICB8IE91dF9vZl9tZW1vcnkgLT5cbiAgICAgICAgcHJlcnJfZW5kbGluZVxuICAgICAgICAgIFwiRmF0YWwgZXJyb3I6IG91dCBvZiBtZW1vcnkgaW4gdW5jYXVnaHQgZXhjZXB0aW9uIGhhbmRsZXJcIlxuXG4oKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBbY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25dIGluXG4gICBbcnVudGltZS9wcmludGV4Yy5jXSB3aGljaCBleHBlY3RzIG5vIGV4Y2VwdGlvbiBpcyByYWlzZWQuICopXG5sZXQgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbiBleG4gZGVidWdnZXJfaW5fdXNlID1cbiAgdHJ5XG4gICAgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbicgZXhuIGRlYnVnZ2VyX2luX3VzZVxuICB3aXRoIF8gLT5cbiAgICAoKiBUaGVyZSBpcyBub3QgbXVjaCB3ZSBjYW4gZG8gYXQgdGhpcyBwb2ludCAqKVxuICAgICgpXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+ICdhIC0+IHVuaXRcbiAgPSBcImNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWVcIlxuXG5sZXQgKCkgPVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBcIlByaW50ZXhjLmhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cIlxuICAgIGhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jaGVja19ib3VuZCIsImNhbWxfZ2V0X2V4Y2VwdGlvbl9yYXdfYmFja3RyYSIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfb2JqX3RhZyIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsNSIsImEyIiwiYTMiLCJhNCIsImNhbWxfY2FsbDciLCJhNSIsImE2IiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWJfUHJpbnRmIiwiU3RkbGliX0F0b21pYyIsIlN0ZGxpYiIsIlN0ZGxpYl9CdWZmZXIiLCJTdGRsaWJfT2JqIiwicHJpbnRlcnMiLCJmaWVsZCIsIngiLCJpIiwiY3N0Iiwib3RoZXJfZmllbGRzIiwidXNlX3ByaW50ZXJzIiwicGFyYW0iLCJ0bCIsImhkIiwidmFsIiwicyIsInN0cmluZ19vZl9leHRlbnNpb25fY29uc3RydWN0byIsInQiLCJjb25zdHJ1Y3RvciIsIm1hdGNoIiwiZmllbGRzX29wdCIsImNzdF9jaGFyYWN0ZXJzIiwibG9jZm10IiwidG9fc3RyaW5nX2RlZmF1bHQiLCJjaGFyIiwibGluZSIsImZpbGUiLCJ0b19zdHJpbmciLCJlIiwiY3N0X1VuY2F1Z2h0X2V4Y2VwdGlvbiIsImNzdF9VbmNhdWdodF9leGNlcHRpb25fcyIsInByaW50IiwiZmN0IiwiYXJnIiwiY2F0Y2gkIiwicmF3X2JhY2t0cmFjZV9lbnRyaWVzIiwiYnQiLCJjb252ZXJ0X3Jhd19iYWNrdHJhY2UiLCJmb3JtYXRfYmFja3RyYWNlX3Nsb3QiLCJwb3MiLCJzbG90IiwiaW5mbyIsImlzX3JhaXNlIiwibGluZXMiLCJjc3RfcyIsImNzdF9Qcm9ncmFtX25vdF9saW5rZWRfd2l0aF9nXyIsInByaW50X3Jhd19iYWNrdHJhY2UiLCJvdXRjaGFuIiwicmF3X2JhY2t0cmFjZSIsImJhY2t0cmFjZSIsImEiLCJzdHIiLCJwcmludF9iYWNrdHJhY2UiLCJyYXdfYmFja3RyYWNlX3RvX3N0cmluZyIsImIiLCJiYWNrdHJhY2Vfc2xvdF9pc19yYWlzZSIsImJhY2t0cmFjZV9zbG90X2lzX2lubGluZSIsImJhY2t0cmFjZV9zbG90X2xvY2F0aW9uIiwiYmFja3RyYWNlX3Nsb3RfZGVmbmFtZSIsImJhY2t0cmFjZV9zbG90cyIsImJhY2t0cmFjZV9zbG90c19vZl9yYXdfZW50cnkiLCJlbnRyeSIsInJhd19iYWNrdHJhY2VfbGVuZ3RoIiwiZ2V0X2JhY2t0cmFjZSIsInJlZ2lzdGVyX3ByaW50ZXIiLCJmbiIsIm9sZF9wcmludGVycyIsIm5ld19wcmludGVycyIsInN1Y2Nlc3MiLCJleG5fc2xvdCIsImV4bl9zbG90X2lkIiwiZXhuX3Nsb3RfbmFtZSIsImVycm9ycyIsImNzdF9GYXRhbF9lcnJvcl9leGNlcHRpb24iLCJjc3RfRmF0YWxfZXJyb3JfZXhjZXB0aW9uX3MiLCJkZWZhdWx0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW4iLCJleG4iLCJzdGF0dXMiLCJ1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsInNldF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsImVtcHR5X2JhY2t0cmFjZSIsImhhbmRsZV91bmNhdWdodF9leGNlcHRpb24iLCJkZWJ1Z2dlcl9pbl91c2UiLCJTdGRsaWJfUHJpbnRleGMiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyxpQ0FBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRSxJQUFBQyxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQVIsR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUMsSUFBQUMsSUFBQUUsSUFBQUM7QUFBQUEsSUFBQTtB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eldOO0FBQUE7QUFBQTtBQUFBO0FBQUEsU0M0V1E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFVBQUFBLEtBVUo7QUFBQSxHQUFFO0FBQUEsR0FNSjtBQUFBO0FBQUE7QUFBQSxJQUFBTztBQUFBQSxNQUMyQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVEN1g3QiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjI0NDMzLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvZnVuLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leHRlcm5hbCBpZCA6ICdhIC0+ICdhID0gXCIlaWRlbnRpdHlcIlxubGV0IGNvbnN0IGMgXyA9IGNcbmxldCBjb21wb3NlIGYgZyB4ID0gZiAoZyB4KVxubGV0IGZsaXAgZiB4IHkgPSBmIHkgeFxubGV0IG5lZ2F0ZSBwIHYgPSBub3QgKHAgdilcblxuZXhjZXB0aW9uIEZpbmFsbHlfcmFpc2VkIG9mIGV4blxuXG5sZXQgKCkgPSBQcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIEBAIGZ1bmN0aW9uXG58IEZpbmFsbHlfcmFpc2VkIGV4biAtPiBTb21lIChcIkZ1bi5GaW5hbGx5X3JhaXNlZDogXCIgXiBQcmludGV4Yy50b19zdHJpbmcgZXhuKVxufCBfIC0+IE5vbmVcblxubGV0IHByb3RlY3QgfihmaW5hbGx5IDogdW5pdCAtPiB1bml0KSB3b3JrID1cbiAgbGV0IGZpbmFsbHlfbm9fZXhuICgpID1cbiAgICB0cnkgZmluYWxseSAoKSB3aXRoIGUgLT5cbiAgICAgIGxldCBidCA9IFByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgICBQcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSAoRmluYWxseV9yYWlzZWQgZSkgYnRcbiAgaW5cbiAgbWF0Y2ggd29yayAoKSB3aXRoXG4gIHwgcmVzdWx0IC0+IGZpbmFsbHlfbm9fZXhuICgpIDsgcmVzdWx0XG4gIHwgZXhjZXB0aW9uIHdvcmtfZXhuIC0+XG4gICAgICBsZXQgd29ya19idCA9IFByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgICBmaW5hbGx5X25vX2V4biAoKSA7XG4gICAgICBQcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSB3b3JrX2V4biB3b3JrX2J0XG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlIiwiY2FtbF93cmFwX2V4Y2VwdGlvbiIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYl9QcmludGV4YyIsIlN0ZGxpYiIsImNvbnN0JCIsImMiLCJwYXJhbSIsImNvbXBvc2UiLCJnIiwieCIsImZsaXAiLCJ5IiwibmVnYXRlIiwicCIsInYiLCJGaW5hbGx5X3JhaXNlZCIsImV4biIsImR1bW15IiwicHJvdGVjdCIsImZpbmFsbHkkIiwid29yayIsImZpbmFsbHlfbm9fZXhuIiwiZSIsImJ0IiwicmVzdWx0Iiwid29ya19leG4iLCJ3b3JrX2J0Il0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsSUFBQUMsNkJBQUE7QUFBQSxJQUFBQyxzQkFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsWUFBQUMsT0FBQUMsR0FBQUMsT0NnQmdCLFNBQUM7QUFBQSxZQUFBQyxRQUFBVixHQUFBVyxHQUFBQyxHQUNLLE9BQUssY0FBTCxpQkFBSztBQUFBLFlBQUFDLEtBQUFiLEdBQUFZLEdBQUFFLEdBQ1YsMEJBQUs7QUFBQSxZQUFBQyxPQUFBQyxHQUFBQyxHQUNELDJCQUFLO0FBQUE7QUFBQSxJQUFBQztBQUFBQSxNRG5CMUI7QUFBQSxHQ3VCUztBQUFBO0FBQUEsY0FBQVQ7QUFBQUEsTUFBNkIsZ0NBRS9CO0FBQUEsVUFBQVUsTUFGK0IsY0FDaUI7QUFBQSxNQUExQiw0REFBaUQ7QUFBQSxLQUNuRTtBQUFBLE9BQUFDLFFBQUE7QUFBQSxZQUFBQyxRQUFBQyxVQUFBQztBQUFBQSxhQUFBQyxlQUFBZjtBQUFBQSxLQUlQLElBQUk7QUFBQSxXQUFBZ0I7QUFBQUE7QUFBQUEsT0FBQUEsSUQ3QlI7QUFBQSxPQUFBQyxLQzhCZTtBQUFBLE9BQUFQLE1BQ1Q7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFtRDtBQUFBLElBRXZELFFBQUFRLFNBQU07QUFBQSxVQUFBQztBQUFBQTtBQUFBQSxNQUFBQSxXRGpDUjtBQUFBLE1BQUFDLFVDb0NvQjtBQUFBLEtBQ2Q7QUFBQSxLQUFpQjtBQUFBO0FBQUE7QUFBQSxJQUhUO0FBQUEsSUFBaUI7QUFBQSxHQUlxQjtBQUFBLEdBYnpDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFRHpCWCIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjI0NTA0LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvaW5fY2hhbm5lbC5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjEgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gaW5fY2hhbm5lbFxuXG50eXBlIG9wZW5fZmxhZyA9IFN0ZGxpYi5vcGVuX2ZsYWcgPVxuICB8IE9wZW5fcmRvbmx5XG4gIHwgT3Blbl93cm9ubHlcbiAgfCBPcGVuX2FwcGVuZFxuICB8IE9wZW5fY3JlYXRcbiAgfCBPcGVuX3RydW5jXG4gIHwgT3Blbl9leGNsXG4gIHwgT3Blbl9iaW5hcnlcbiAgfCBPcGVuX3RleHRcbiAgfCBPcGVuX25vbmJsb2NrXG5cbmxldCBzdGRpbiA9IFN0ZGxpYi5zdGRpblxubGV0IG9wZW5fYmluID0gU3RkbGliLm9wZW5faW5fYmluXG5sZXQgb3Blbl90ZXh0ID0gU3RkbGliLm9wZW5faW5cbmxldCBvcGVuX2dlbiA9IFN0ZGxpYi5vcGVuX2luX2dlblxuXG5sZXQgd2l0aF9vcGVuIG9wZW5mdW4gcyBmID1cbiAgbGV0IGljID0gb3BlbmZ1biBzIGluXG4gIEZ1bi5wcm90ZWN0IH5maW5hbGx5OihmdW4gKCkgLT4gU3RkbGliLmNsb3NlX2luX25vZXJyIGljKVxuICAgIChmdW4gKCkgLT4gZiBpYylcblxubGV0IHdpdGhfb3Blbl9iaW4gcyBmID1cbiAgd2l0aF9vcGVuIFN0ZGxpYi5vcGVuX2luX2JpbiBzIGZcblxubGV0IHdpdGhfb3Blbl90ZXh0IHMgZiA9XG4gIHdpdGhfb3BlbiBTdGRsaWIub3Blbl9pbiBzIGZcblxubGV0IHdpdGhfb3Blbl9nZW4gZmxhZ3MgcGVybSBzIGYgPVxuICB3aXRoX29wZW4gKFN0ZGxpYi5vcGVuX2luX2dlbiBmbGFncyBwZXJtKSBzIGZcblxubGV0IHNlZWsgPSBTdGRsaWIuTGFyZ2VGaWxlLnNlZWtfaW5cbmxldCBwb3MgPSBTdGRsaWIuTGFyZ2VGaWxlLnBvc19pblxubGV0IGxlbmd0aCA9IFN0ZGxpYi5MYXJnZUZpbGUuaW5fY2hhbm5lbF9sZW5ndGhcbmxldCBjbG9zZSA9IFN0ZGxpYi5jbG9zZV9pblxubGV0IGNsb3NlX25vZXJyID0gU3RkbGliLmNsb3NlX2luX25vZXJyXG5cbmxldCBpbnB1dF9jaGFyIGljID1cbiAgbWF0Y2ggU3RkbGliLmlucHV0X2NoYXIgaWMgd2l0aFxuICB8IGMgLT4gU29tZSBjXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxubGV0IGlucHV0X2J5dGUgaWMgPVxuICBtYXRjaCBTdGRsaWIuaW5wdXRfYnl0ZSBpYyB3aXRoXG4gIHwgbiAtPiBTb21lIG5cbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gTm9uZVxuXG5sZXQgaW5wdXRfbGluZSBpYyA9XG4gIG1hdGNoIFN0ZGxpYi5pbnB1dF9saW5lIGljIHdpdGhcbiAgfCBzIC0+IFNvbWUgc1xuICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiBOb25lXG5cbmxldCBpbnB1dCA9IFN0ZGxpYi5pbnB1dFxuXG5leHRlcm5hbCB1bnNhZmVfaW5wdXRfYmlnYXJyYXkgOlxuICB0IC0+IF8gQmlnYXJyYXkuQXJyYXkxLnQgLT4gaW50IC0+IGludCAtPiBpbnRcbiAgPSBcImNhbWxfbWxfaW5wdXRfYmlnYXJyYXlcIlxuXG5sZXQgaW5wdXRfYmlnYXJyYXkgaWMgYnVmIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gQmlnYXJyYXkuQXJyYXkxLmRpbSBidWYgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcImlucHV0X2JpZ2FycmF5XCJcbiAgZWxzZSB1bnNhZmVfaW5wdXRfYmlnYXJyYXkgaWMgYnVmIG9mcyBsZW5cblxubGV0IHJlYWxseV9pbnB1dCBpYyBidWYgcG9zIGxlbiA9XG4gIG1hdGNoIFN0ZGxpYi5yZWFsbHlfaW5wdXQgaWMgYnVmIHBvcyBsZW4gd2l0aFxuICB8ICgpIC0+IFNvbWUgKClcbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gTm9uZVxuXG5sZXQgcmVjIHVuc2FmZV9yZWFsbHlfaW5wdXRfYmlnYXJyYXkgaWMgYnVmIG9mcyBsZW4gPVxuICBpZiBsZW4gPD0gMCB0aGVuIFNvbWUgKCkgZWxzZSBiZWdpblxuICAgIGxldCByID0gdW5zYWZlX2lucHV0X2JpZ2FycmF5IGljIGJ1ZiBvZnMgbGVuIGluXG4gICAgaWYgciA9IDBcbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIHVuc2FmZV9yZWFsbHlfaW5wdXRfYmlnYXJyYXkgaWMgYnVmIChvZnMgKyByKSAobGVuIC0gcilcbiAgZW5kXG5cbmxldCByZWFsbHlfaW5wdXRfYmlnYXJyYXkgaWMgYnVmIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gQmlnYXJyYXkuQXJyYXkxLmRpbSBidWYgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcInJlYWxseV9pbnB1dF9iaWdhcnJheVwiXG4gIGVsc2UgdW5zYWZlX3JlYWxseV9pbnB1dF9iaWdhcnJheSBpYyBidWYgb2ZzIGxlblxuXG5sZXQgcmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4gPVxuICBtYXRjaCBTdGRsaWIucmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4gd2l0aFxuICB8IHMgLT4gU29tZSBzXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxuKCogUmVhZCB1cCB0byBbbGVuXSBieXRlcyBpbnRvIFtidWZdLCBzdGFydGluZyBhdCBbb2ZzXS4gUmV0dXJuIHRvdGFsIGJ5dGVzXG4gICByZWFkLiAqKVxubGV0IHJlYWRfdXB0byBpYyBidWYgb2ZzIGxlbiA9XG4gIGxldCByZWMgbG9vcCBvZnMgbGVuID1cbiAgICBpZiBsZW4gPSAwIHRoZW4gb2ZzXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBTdGRsaWIuaW5wdXQgaWMgYnVmIG9mcyBsZW4gaW5cbiAgICAgIGlmIHIgPSAwIHRoZW5cbiAgICAgICAgb2ZzXG4gICAgICBlbHNlXG4gICAgICAgIGxvb3AgKG9mcyArIHIpIChsZW4gLSByKVxuICAgIGVuZFxuICBpblxuICBsb29wIG9mcyBsZW4gLSBvZnNcblxuKCogQmVzdCBlZmZvcnQgYXR0ZW1wdCB0byByZXR1cm4gYSBidWZmZXIgd2l0aCA+PSAob2ZzICsgbikgYnl0ZXMgb2Ygc3RvcmFnZSxcbiAgIGFuZCBzdWNoIHRoYXQgaXQgY29pbmNpZGVzIHdpdGggW2J1Zl0gYXQgaW5kaWNlcyA8IFtvZnNdLlxuXG4gICBUaGUgcmV0dXJuZWQgYnVmZmVyIGlzIGVxdWFsIHRvIFtidWZdIGl0c2VsZiBpZiBpdCBhbHJlYWR5IGhhcyBzdWZmaWNpZW50XG4gICBmcmVlIHNwYWNlLlxuXG4gICBUaGUgcmV0dXJuZWQgYnVmZmVyIG1heSBoYXZlICpmZXdlciogdGhhbiBbb2ZzICsgbl0gYnl0ZXMgb2Ygc3RvcmFnZSBpZiB0aGlzXG4gICBudW1iZXIgaXMgPiBbU3lzLm1heF9zdHJpbmdfbGVuZ3RoXS4gSG93ZXZlciB0aGUgcmV0dXJuZWQgYnVmZmVyIHdpbGxcbiAgICphbHdheXMqIGhhdmUgPiBbb2ZzXSBieXRlcyBvZiBzdG9yYWdlLiBJbiB0aGUgbGltaXRpbmcgY2FzZSB3aGVuIFtvZnMgPSBsZW5cbiAgID0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXSAoc28gdGhhdCBpdCBpcyBub3QgcG9zc2libGUgdG8gcmVzaXplIHRoZSBidWZmZXIgYXRcbiAgIGFsbCksIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQuICopXG5cbmxldCBlbnN1cmUgYnVmIG9mcyBuID1cbiAgbGV0IGxlbiA9IEJ5dGVzLmxlbmd0aCBidWYgaW5cbiAgaWYgbGVuID49IG9mcyArIG4gdGhlbiBidWZcbiAgZWxzZSBiZWdpblxuICAgIGxldCBuZXdfbGVuID0gcmVmIGxlbiBpblxuICAgIHdoaWxlICFuZXdfbGVuIDwgb2ZzICsgbiBkb1xuICAgICAgbmV3X2xlbiA6PSAyICogIW5ld19sZW4gKyAxXG4gICAgZG9uZTtcbiAgICBsZXQgbmV3X2xlbiA9ICFuZXdfbGVuIGluXG4gICAgbGV0IG5ld19sZW4gPVxuICAgICAgaWYgbmV3X2xlbiA8PSBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlblxuICAgICAgICBuZXdfbGVuXG4gICAgICBlbHNlIGlmIG9mcyA8IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICAgIFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgICAgZWxzZVxuICAgICAgICBmYWlsd2l0aCBcIkluX2NoYW5uZWwuaW5wdXRfYWxsOiBjaGFubmVsIGNvbnRlbnQgXFxcbiAgICAgICAgICAgICAgICAgIGlzIGxhcmdlciB0aGFuIG1heGltdW0gc3RyaW5nIGxlbmd0aFwiXG4gICAgaW5cbiAgICBsZXQgbmV3X2J1ZiA9IEJ5dGVzLmNyZWF0ZSBuZXdfbGVuIGluXG4gICAgQnl0ZXMuYmxpdCBidWYgMCBuZXdfYnVmIDAgb2ZzO1xuICAgIG5ld19idWZcbiAgZW5kXG5cbmxldCBpbnB1dF9hbGwgaWMgPVxuICBsZXQgY2h1bmtfc2l6ZSA9IFN5cy5pb19idWZmZXJfc2l6ZSBpblxuICBsZXQgaW5pdGlhbF9zaXplID1cbiAgICB0cnlcbiAgICAgIFN0ZGxpYi5pbl9jaGFubmVsX2xlbmd0aCBpYyAtIFN0ZGxpYi5wb3NfaW4gaWNcbiAgICB3aXRoIFN5c19lcnJvciBfIC0+XG4gICAgICAtMVxuICBpblxuICBsZXQgaW5pdGlhbF9zaXplID0gaWYgaW5pdGlhbF9zaXplIDwgMCB0aGVuIGNodW5rX3NpemUgZWxzZSBpbml0aWFsX3NpemUgaW5cbiAgbGV0IGluaXRpYWxfc2l6ZSA9XG4gICAgaWYgaW5pdGlhbF9zaXplIDw9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICBpbml0aWFsX3NpemVcbiAgICBlbHNlXG4gICAgICBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgaW5cbiAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBpbml0aWFsX3NpemUgaW5cbiAgbGV0IG5yZWFkID0gcmVhZF91cHRvIGljIGJ1ZiAwIGluaXRpYWxfc2l6ZSBpblxuICBpZiBucmVhZCA8IGluaXRpYWxfc2l6ZSB0aGVuICgqIEVPRiByZWFjaGVkLCBidWZmZXIgcGFydGlhbGx5IGZpbGxlZCAqKVxuICAgIEJ5dGVzLnN1Yl9zdHJpbmcgYnVmIDAgbnJlYWRcbiAgZWxzZSBiZWdpbiAoKiBucmVhZCA9IGluaXRpYWxfc2l6ZSwgbWF5YmUgRU9GIHJlYWNoZWQgKilcbiAgICBtYXRjaCBTdGRsaWIuaW5wdXRfY2hhciBpYyB3aXRoXG4gICAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT5cbiAgICAgICAgKCogRU9GIHJlYWNoZWQsIGJ1ZmZlciBpcyBjb21wbGV0ZWx5IGZpbGxlZCAqKVxuICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1ZlxuICAgIHwgYyAtPlxuICAgICAgICAoKiBFT0Ygbm90IHJlYWNoZWQgKilcbiAgICAgICAgbGV0IHJlYyBsb29wIGJ1ZiBvZnMgPVxuICAgICAgICAgIGxldCBidWYgPSBlbnN1cmUgYnVmIG9mcyBjaHVua19zaXplIGluXG4gICAgICAgICAgbGV0IHJlbSA9IEJ5dGVzLmxlbmd0aCBidWYgLSBvZnMgaW5cbiAgICAgICAgICAoKiBbcmVtXSBjYW4gYmUgPCBbY2h1bmtfc2l6ZV0gaWYgYnVmZmVyIHNpemUgY2xvc2UgdG9cbiAgICAgICAgICAgICBbU3lzLm1heF9zdHJpbmdfbGVuZ3RoXSAqKVxuICAgICAgICAgIGxldCByID0gcmVhZF91cHRvIGljIGJ1ZiBvZnMgcmVtIGluXG4gICAgICAgICAgaWYgciA8IHJlbSB0aGVuICgqIEVPRiByZWFjaGVkICopXG4gICAgICAgICAgICBCeXRlcy5zdWJfc3RyaW5nIGJ1ZiAwIChvZnMgKyByKVxuICAgICAgICAgIGVsc2UgKCogciA9IHJlbSAqKVxuICAgICAgICAgICAgbG9vcCBidWYgKG9mcyArIHJlbSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJ1ZiA9IGVuc3VyZSBidWYgbnJlYWQgKGNodW5rX3NpemUgKyAxKSBpblxuICAgICAgICBCeXRlcy5zZXQgYnVmIG5yZWFkIGM7XG4gICAgICAgIGxvb3AgYnVmIChucmVhZCArIDEpXG4gIGVuZFxuXG5sZXQgW0B0YWlsX21vZF9jb25zXSByZWMgaW5wdXRfbGluZXMgaWMgPVxuICBtYXRjaCBTdGRsaWIuaW5wdXRfbGluZSBpYyB3aXRoXG4gIHwgbGluZSAtPiBsaW5lIDo6IGlucHV0X2xpbmVzIGljXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IFtdXG5cbmxldCByZWMgZm9sZF9saW5lcyBmIGFjY3UgaWMgPVxuICBtYXRjaCBTdGRsaWIuaW5wdXRfbGluZSBpYyB3aXRoXG4gIHwgbGluZSAtPiBmb2xkX2xpbmVzIGYgKGYgYWNjdSBsaW5lKSBpY1xuICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiBhY2N1XG5cbmxldCBzZXRfYmluYXJ5X21vZGUgPSBTdGRsaWIuc2V0X2JpbmFyeV9tb2RlX2luXG5cbmV4dGVybmFsIGlzX2JpbmFyeV9tb2RlIDogaW5fY2hhbm5lbCAtPiBib29sID0gXCJjYW1sX21sX2lzX2JpbmFyeV9tb2RlXCJcblxuZXh0ZXJuYWwgaXNhdHR5IDogdCAtPiBib29sID0gXCJjYW1sX3N5c19pc2F0dHlcIlxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2JhX2RpbV8xIiwiY2FtbF9jcmVhdGVfYnl0ZXMiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX21sX2J5dGVzX2xlbmd0aCIsImNhbWxfbWxfaW5wdXRfYmlnYXJyYXkiLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImdsb2JhbF9kYXRhIiwiU3RkbGliIiwiU3RkbGliX0J5dGVzIiwiU3RkbGliX1N5cyIsIlN0ZGxpYl9GdW4iLCJzdGRpbiIsIm9wZW5fYmluIiwib3Blbl90ZXh0Iiwib3Blbl9nZW4iLCJ3aXRoX29wZW4iLCJvcGVuZnVuIiwicyIsImljIiwicGFyYW0iLCJ3aXRoX29wZW5fYmluIiwid2l0aF9vcGVuX3RleHQiLCJ3aXRoX29wZW5fZ2VuIiwiZmxhZ3MiLCJwZXJtIiwic2VlayIsInBvcyIsImxlbmd0aCIsImNsb3NlIiwiY2xvc2Vfbm9lcnIiLCJpbnB1dF9jaGFyIiwiYyIsImV4biIsImlucHV0X2J5dGUiLCJuIiwiaW5wdXRfbGluZSIsImlucHV0IiwiaW5wdXRfYmlnYXJyYXkiLCJidWYiLCJvZnMiLCJsZW4iLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfYmlnYXJyYXkiLCJyIiwicmVhbGx5X2lucHV0X3N0cmluZyIsInJlYWRfdXB0byIsImVuc3VyZSIsIm5ld19sZW4iLCJuZXdfYnVmIiwiaW5wdXRfYWxsIiwiY2h1bmtfc2l6ZSIsImluaXRpYWxfc2l6ZSIsIm5yZWFkIiwicmVtIiwiaW5wdXRfbGluZXMiLCJsaW5lIiwiYmxvY2siLCJkc3QiLCJvZmZzZXQiLCJmb2xkX2xpbmVzIiwiYWNjdSIsInNldF9iaW5hcnlfbW9kZSIsIlN0ZGxpYl9Jbl9jaGFubmVsIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLElBQUFDLHVCQUFBO0FBQUEsSUFBQUMseUJBQUE7QUFBQSxJQUFBQyxzQkFBQTtBQUFBLFlBQUFDLFdBQUFD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QSxVQUFBQSxRRG5NUjtBQUFBO0FBQUEsTUNxTTZCO0FBQUEsTUFESztBQUFBO0FBQUEsU0FBQXlCLFFBQXRCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxHQUNtQjtBQUFBLFlBQUFFLFdBQUF6RCxHQUFBMEQsUUFBQTFDO0FBQUFBLFFBQUEwQyxPQUc3QjtBQUFBO0FBQUEsYUFBQUwsT0FBTTtBQUFBLFdBQUF2QjtBQUFBQSxVQUFBQSxNRHhNUjtBQUFBLDZCQzBNNkI7QUFBQSxNRDFNN0I7QUFBQTtBQUFBLFNBQUE0QixTQ3lNeUI7QUFBQSxLQUFhO0FBQUE7QUFBQSxHQUNMO0FBQUE7QUFBQSxJQUFBQyxrQkQxTWpDO0FBQUEsSUFBQUM7QUFBQUEsTUFBQSIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjI0NzcxLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvZGlnZXN0Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBVdGlsaXR5IGZ1bmN0aW9ucyAqKVxuXG5sZXQgaGV4X29mX3N0cmluZyBkID1cbiAgbGV0IGNoYXJfaGV4IG4gPVxuICAgIENoYXIuY2hyIChpZiBuIDwgMTAgdGhlbiBDaGFyLmNvZGUgJzAnICsgblxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBDaGFyLmNvZGUgJ2EnICsgbiAtIDEwKSBpblxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBkIGluXG4gIGxldCByZXN1bHQgPSBCeXRlcy5jcmVhdGUgKGxlbiAqIDIpIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgbGV0IHggPSBDaGFyLmNvZGUgZC5baV0gaW5cbiAgICBCeXRlcy51bnNhZmVfc2V0IHJlc3VsdCAoaSoyKSAoY2hhcl9oZXggKHggbHNyIDQpKTtcbiAgICBCeXRlcy51bnNhZmVfc2V0IHJlc3VsdCAoaSoyKzEpIChjaGFyX2hleCAoeCBsYW5kIDB4MGYpKTtcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXN1bHRcblxubGV0IHN0cmluZ19vZl9oZXggcyA9XG4gIGxldCBkaWdpdCBjID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICcwJy4uJzknIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICcwJ1xuICAgIHwgJ0EnLi4nRicgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJ0EnICsgMTBcbiAgICB8ICdhJy4uJ2YnIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICdhJyArIDEwXG4gICAgfCBfIC0+IGludmFsaWRfYXJnIFwiRGlnZXN0Lm9mX2hleFwiIGluXG4gIGxldCBieXRlIGkgPSBkaWdpdCBzLltpXSBsc2wgNCArIGRpZ2l0IHMuW2krMV0gaW5cbiAgU3RyaW5nLmluaXQgKFN0cmluZy5sZW5ndGggcyAvIDIpIChmdW4gaSAtPiBDaGFyLmNociAoYnl0ZSAoMiAqIGkpKSlcblxuKCogR2VuZXJpYyBpbnRlcmZhY2UgKilcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIHQgPSBzdHJpbmdcbiAgdmFsIGhhc2hfbGVuZ3RoIDogaW50XG4gIHZhbCBjb21wYXJlIDogdCAtPiB0IC0+IGludFxuICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgdmFsIGJ5dGVzIDogYnl0ZXMgLT4gdFxuICB2YWwgc3Vic3RyaW5nIDogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdFxuICB2YWwgc3ViYnl0ZXMgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHRcbiAgdmFsIGNoYW5uZWwgOiBpbl9jaGFubmVsIC0+IGludCAtPiB0XG4gIHZhbCBmaWxlIDogc3RyaW5nIC0+IHRcbiAgdmFsIG91dHB1dCA6IG91dF9jaGFubmVsIC0+IHQgLT4gdW5pdFxuICB2YWwgaW5wdXQgOiBpbl9jaGFubmVsIC0+IHRcbiAgdmFsIHRvX2hleCA6IHQgLT4gc3RyaW5nXG4gIHZhbCBvZl9oZXggOiBzdHJpbmcgLT4gdFxuZW5kXG5cbigqIEJMQUtFMiBoYXNoaW5nLCBwYXJhbWV0ZXJpemVkIGJ5IGhhc2ggc2l6ZSAqKVxuXG5tb2R1bGUgQkxBS0UyIChYOiBzaWcgdmFsIGhhc2hfbGVuZ3RoIDogaW50IGVuZCkgOiBTID0gc3RydWN0XG5cbiAgdHlwZSB0ID0gc3RyaW5nXG5cbiAgbGV0IGhhc2hfbGVuZ3RoID1cbiAgICBpZiBYLmhhc2hfbGVuZ3RoIDwgMSB8fCBYLmhhc2hfbGVuZ3RoID4gNjRcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LkJMQUtFMjogd3JvbmcgaGFzaCBzaXplXCI7XG4gICAgWC5oYXNoX2xlbmd0aFxuXG4gIGxldCBjb21wYXJlID0gU3RyaW5nLmNvbXBhcmVcbiAgbGV0IGVxdWFsID0gU3RyaW5nLmVxdWFsXG5cbiAgdHlwZSBzdGF0ZVxuXG4gIGV4dGVybmFsIGNyZWF0ZV9nZW46IGludCAtPiBzdHJpbmcgLT4gc3RhdGUgPSBcImNhbWxfYmxha2UyX2NyZWF0ZVwiXG4gIGV4dGVybmFsIHVwZGF0ZTogc3RhdGUgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2JsYWtlMl91cGRhdGVcIlxuICBleHRlcm5hbCBmaW5hbDogc3RhdGUgLT4gaW50IC0+IHQgPSBcImNhbWxfYmxha2UyX2ZpbmFsXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3N0cmluZzogaW50IC0+IHN0cmluZyAtPiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB0XG4gICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGFrZTJfc3RyaW5nXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2J5dGVzOiBpbnQgLT4gc3RyaW5nIC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdFxuICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxha2UyX2J5dGVzXCJcblxuICBsZXQgY3JlYXRlICgpID0gY3JlYXRlX2dlbiBoYXNoX2xlbmd0aCBcIlwiXG5cbiAgbGV0IHN0cmluZyBzdHIgPVxuICAgIHVuc2FmZV9zdHJpbmcgaGFzaF9sZW5ndGggXCJcIiBzdHIgMCAoU3RyaW5nLmxlbmd0aCBzdHIpXG5cbiAgbGV0IGJ5dGVzIGIgPVxuICAgIHVuc2FmZV9ieXRlcyBoYXNoX2xlbmd0aCBcIlwiIGIgMCAoQnl0ZXMubGVuZ3RoIGIpXG5cbiAgbGV0IHN1YnN0cmluZyBzdHIgb2ZzIGxlbiA9XG4gICAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IFN0cmluZy5sZW5ndGggc3RyIC0gbGVuXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC5zdWJzdHJpbmdcIjtcbiAgICB1bnNhZmVfc3RyaW5nIGhhc2hfbGVuZ3RoIFwiXCIgc3RyIG9mcyBsZW5cblxuICBsZXQgc3ViYnl0ZXMgYiBvZnMgbGVuID1cbiAgICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gQnl0ZXMubGVuZ3RoIGIgLSBsZW5cbiAgICB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LnN1YmJ5dGVzXCI7XG4gICAgdW5zYWZlX2J5dGVzIGhhc2hfbGVuZ3RoIFwiXCIgYiBvZnMgbGVuXG5cbiAgbGV0IGNoYW5uZWwgaWMgdG9yZWFkID1cbiAgICBsZXQgYnVmX3NpemUgPSA0MDk2IGluXG4gICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBidWZfc2l6ZSBpblxuICAgIGxldCBjdHggPSBjcmVhdGUgKCkgaW5cbiAgICBpZiB0b3JlYWQgPCAwIHRoZW4gYmVnaW5cbiAgICAgIGxldCByZWMgZG9fcmVhZCAoKSA9XG4gICAgICAgIGxldCBuID0gSW5fY2hhbm5lbC5pbnB1dCBpYyBidWYgMCBidWZfc2l6ZSBpblxuICAgICAgICBpZiBuID0gMFxuICAgICAgICB0aGVuIGZpbmFsIGN0eCBoYXNoX2xlbmd0aFxuICAgICAgICBlbHNlICh1cGRhdGUgY3R4IGJ1ZiAwIG47IGRvX3JlYWQgKCkpXG4gICAgICBpbiBkb19yZWFkICgpXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIGxldCByZWMgZG9fcmVhZCB0b3JlYWQgPVxuICAgICAgICBpZiB0b3JlYWQgPSAwIHRoZW4gZmluYWwgY3R4IGhhc2hfbGVuZ3RoIGVsc2UgYmVnaW5cbiAgICAgICAgICBsZXQgbiA9IEluX2NoYW5uZWwuaW5wdXQgaWMgYnVmIDAgKEludC5taW4gYnVmX3NpemUgdG9yZWFkKSBpblxuICAgICAgICAgIGlmIG4gPSAwXG4gICAgICAgICAgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZVxuICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgIHVwZGF0ZSBjdHggYnVmIDAgbjtcbiAgICAgICAgICAgIGRvX3JlYWQgKHRvcmVhZCAtIG4pXG4gICAgICAgICAgZW5kXG4gICAgICAgIGVuZFxuICAgICAgaW4gZG9fcmVhZCB0b3JlYWRcbiAgICBlbmRcblxuICBsZXQgZmlsZSBmaWxlbmFtZSA9XG4gICAgSW5fY2hhbm5lbC53aXRoX29wZW5fYmluIGZpbGVuYW1lIChmdW4gaWMgLT4gY2hhbm5lbCBpYyAoLTEpKVxuXG4gIGxldCBvdXRwdXQgY2hhbiBkaWdlc3QgPSBvdXRwdXRfc3RyaW5nIGNoYW4gZGlnZXN0XG5cbiAgbGV0IGlucHV0IGNoYW4gPSByZWFsbHlfaW5wdXRfc3RyaW5nIGNoYW4gaGFzaF9sZW5ndGhcblxuICBsZXQgdG9faGV4IGQgPVxuICAgIGlmIFN0cmluZy5sZW5ndGggZCA8PiBoYXNoX2xlbmd0aCB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LnRvX2hleFwiO1xuICAgIGhleF9vZl9zdHJpbmcgZFxuXG4gIGxldCBvZl9oZXggcyA9XG4gICAgaWYgU3RyaW5nLmxlbmd0aCBzIDw+IGhhc2hfbGVuZ3RoICogMiB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0Lm9mX2hleFwiO1xuICAgIHN0cmluZ19vZl9oZXggc1xuXG5lbmRcblxubW9kdWxlIEJMQUtFMTI4ID0gQkxBS0UyKHN0cnVjdCBsZXQgaGFzaF9sZW5ndGggPSAxNiBlbmQpXG5tb2R1bGUgQkxBS0UyNTYgPSBCTEFLRTIoc3RydWN0IGxldCBoYXNoX2xlbmd0aCA9IDMyIGVuZClcbm1vZHVsZSBCTEFLRTUxMiA9IEJMQUtFMihzdHJ1Y3QgbGV0IGhhc2hfbGVuZ3RoID0gNjQgZW5kKVxuXG4oKiBNRDUgaGFzaGluZyAqKVxuXG5tb2R1bGUgTUQ1ID0gc3RydWN0XG5cbiAgdHlwZSB0ID0gc3RyaW5nXG5cbiAgbGV0IGhhc2hfbGVuZ3RoID0gMTZcblxuICBsZXQgY29tcGFyZSA9IFN0cmluZy5jb21wYXJlXG4gIGxldCBlcXVhbCA9IFN0cmluZy5lcXVhbFxuXG4gIGV4dGVybmFsIHVuc2FmZV9zdHJpbmc6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHQgPSBcImNhbWxfbWQ1X3N0cmluZ1wiXG4gIGV4dGVybmFsIHVuc2FmZV9ieXRlczogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB0ID0gXCJjYW1sX21kNV9ieXRlc1wiXG4gIGV4dGVybmFsIGNoYW5uZWw6IGluX2NoYW5uZWwgLT4gaW50IC0+IHQgPSBcImNhbWxfbWQ1X2NoYW5cIlxuXG4gIGxldCBzdHJpbmcgc3RyID1cbiAgICB1bnNhZmVfc3RyaW5nIHN0ciAwIChTdHJpbmcubGVuZ3RoIHN0cilcblxuICBsZXQgYnl0ZXMgYiA9XG4gICAgdW5zYWZlX2J5dGVzIGIgMCAoQnl0ZXMubGVuZ3RoIGIpXG5cbiAgbGV0IHN1YnN0cmluZyBzdHIgb2ZzIGxlbiA9XG4gICAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IFN0cmluZy5sZW5ndGggc3RyIC0gbGVuXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC5zdWJzdHJpbmdcIlxuICAgIGVsc2UgdW5zYWZlX3N0cmluZyBzdHIgb2ZzIGxlblxuXG4gIGxldCBzdWJieXRlcyBiIG9mcyBsZW4gPVxuICAgIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBCeXRlcy5sZW5ndGggYiAtIGxlblxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3Quc3ViYnl0ZXNcIlxuICAgIGVsc2UgdW5zYWZlX2J5dGVzIGIgb2ZzIGxlblxuXG4gIGxldCBmaWxlIGZpbGVuYW1lID1cbiAgICBJbl9jaGFubmVsLndpdGhfb3Blbl9iaW4gZmlsZW5hbWUgKGZ1biBpYyAtPiBjaGFubmVsIGljICgtMSkpXG5cbiAgbGV0IG91dHB1dCBjaGFuIGRpZ2VzdCA9IG91dHB1dF9zdHJpbmcgY2hhbiBkaWdlc3RcblxuICBsZXQgaW5wdXQgY2hhbiA9IHJlYWxseV9pbnB1dF9zdHJpbmcgY2hhbiAxNlxuXG4gIGxldCB0b19oZXggZCA9XG4gICAgaWYgU3RyaW5nLmxlbmd0aCBkIDw+IDE2IHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3QudG9faGV4XCI7XG4gICAgaGV4X29mX3N0cmluZyBkXG5cbiAgbGV0IG9mX2hleCBzID1cbiAgICBpZiBTdHJpbmcubGVuZ3RoIHMgPD4gMzIgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC5mcm9tX2hleFwiO1xuICAgIHN0cmluZ19vZl9oZXggc1xuXG5lbmRcblxuKCogRGVmYXVsdCBleHBvcnRlZCBpbXBsZW1lbnRhdGlvbiBpcyBNRDUgKilcblxuaW5jbHVkZSBNRDVcblxubGV0IGZyb21faGV4ID0gb2ZfaGV4XG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfYmxha2UyX2J5dGVzIiwiY2FtbF9ibGFrZTJfZmluYWwiLCJjYW1sX2JsYWtlMl9zdHJpbmciLCJjYW1sX2JsYWtlMl91cGRhdGUiLCJjYW1sX2J5dGVzX3Vuc2FmZV9zZXQiLCJjYW1sX2NyZWF0ZV9ieXRlcyIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfbWQ1X2J5dGVzIiwiY2FtbF9tZDVfY2hhbiIsImNhbWxfbWQ1X3N0cmluZyIsImNhbWxfbWxfYnl0ZXNfbGVuZ3RoIiwiY2FtbF9tbF9zdHJpbmdfbGVuZ3RoIiwiY2FtbF9zdHJpbmdfZ2V0IiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWIiLCJTdGRsaWJfSW5fY2hhbm5lbCIsIlN0ZGxpYl9JbnQiLCJTdGRsaWJfU3RyaW5nIiwiU3RkbGliX0NoYXIiLCJTdGRsaWJfQnl0ZXMiLCJoZXhfb2Zfc3RyaW5nIiwiZCIsImNoYXJfaGV4IiwibiIsImxlbiIsInJlc3VsdCIsImkiLCJ4IiwiY3N0X0RpZ2VzdF9vZl9oZXgiLCJzdHJpbmdfb2ZfaGV4IiwicyIsImRpZ2l0IiwiYyIsImNzdF9EaWdlc3Rfc3ViYnl0ZXMiLCJjc3RfRGlnZXN0X3N1YnN0cmluZyIsImNzdF9EaWdlc3RfdG9faGV4IiwiQkxBS0UyIiwiWCIsImhhc2hfbGVuZ3RoIiwiY29tcGFyZSIsImVxdWFsIiwiY3N0Iiwic3RyaW5nIiwic3RyIiwiYnl0ZXMiLCJiIiwic3Vic3RyaW5nIiwib2ZzIiwic3ViYnl0ZXMiLCJjaGFubmVsIiwiaWMiLCJ0b3JlYWQiLCJidWYiLCJjdHgiLCJidWZfc2l6ZSIsImZpbGUiLCJmaWxlbmFtZSIsIm91dHB1dCIsImNoYW4iLCJkaWdlc3QiLCJpbnB1dCIsInRvX2hleCIsIm9mX2hleCIsIkJMQUtFMTI4IiwiQkxBS0UyNTYiLCJCTEFLRTUxMiJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLG9CQUFBO0FBQUEsSUFBQUMscUJBQUE7QUFBQSxJQUFBQyxxQkFBQTtBQUFBLElBQUFDLHdCQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFB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V0RwRUo7QUFBQSxJQUFBQyxXQUFBO0FBQUEsSUFBQUMsV0FBQTtBQUFBLElBQUExQixVQUFBO0FBQUEsSUFBQUMsUUFBQTtBQUFBLFlBQUFFLE9BQUFDO0FBQUFBLElDbUtJLDBEQUF1QztBQUFBO0FBQUEsWUFBQUMsTUFBQUMsR0FHdkMsb0RBQWlDO0FBQUEsWUFBQUMsVUFBQUgsS0FBQUksS0FBQXZCO0FBQUFBLElBR2pDO0FBQUEsS0FFSyxxQ0FBeUI7QUFBQSxJQUR6QixpREFDeUI7QUFBQTtBQUFBLFlBQUF3QixTQUFBSCxHQUFBRSxLQUFBdkI7QUFBQUEsSUFHOUI7QUFBQSxLQUVLLGtDQUFzQjtBQUFBLElBRHRCLGdEQUNzQjtBQUFBO0FBQUEsWUFBQStCLEtBQUFDO0FBQUFBLElBRzNCO0FBQUEsc0NBQUFOLElBQTZDLDRCQUFlLEdBQUM7QUFBQTtBQUFBLFlBQUFPLE9BQUFDLE1BQUFDLFFBRXRDLDBDQUF5QjtBQUFBLFlBQUFDLE1BQUFGLE1BRWpDLHNDQUEyQjtBQUFBLFlBQUFHLE9BQUF4QztBQUFBQSxJQUcxQztBQUFBLEtBQThCO0FBQUEsSUFDOUIsdUJBQWU7QUFBQTtBQUFBLFlBQUF5QyxPQUFBaEM7QUFBQUEsSUFHZjtBQUFBLEtBQThCO0FBQUEsSUFDOUIsdUJBQWU7QUFBQTtBQUFBLEdEL0xuQiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjI1MDEwLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvYmlnYXJyYXkubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgTWFudWVsIFNlcnJhbm8gZXQgWGF2aWVyIExlcm95LCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbQmlnYXJyYXldOiBsYXJnZSwgbXVsdGktZGltZW5zaW9uYWwsIG51bWVyaWNhbCBhcnJheXMgKilcblxuKCogVGhlc2UgdHlwZXMgaW4gbXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCB0aGUgdGFibGVzIGluXG4gICAuLi90eXBpbmcvdHlwZW9wdC5tbCAqKVxuXG50eXBlIGZsb2F0MTZfZWx0ID0gRmxvYXQxNl9lbHRcbnR5cGUgZmxvYXQzMl9lbHQgPSBGbG9hdDMyX2VsdFxudHlwZSBmbG9hdDY0X2VsdCA9IEZsb2F0NjRfZWx0XG50eXBlIGludDhfc2lnbmVkX2VsdCA9IEludDhfc2lnbmVkX2VsdFxudHlwZSBpbnQ4X3Vuc2lnbmVkX2VsdCA9IEludDhfdW5zaWduZWRfZWx0XG50eXBlIGludDE2X3NpZ25lZF9lbHQgPSBJbnQxNl9zaWduZWRfZWx0XG50eXBlIGludDE2X3Vuc2lnbmVkX2VsdCA9IEludDE2X3Vuc2lnbmVkX2VsdFxudHlwZSBpbnQzMl9lbHQgPSBJbnQzMl9lbHRcbnR5cGUgaW50NjRfZWx0ID0gSW50NjRfZWx0XG50eXBlIGludF9lbHQgPSBJbnRfZWx0XG50eXBlIG5hdGl2ZWludF9lbHQgPSBOYXRpdmVpbnRfZWx0XG50eXBlIGNvbXBsZXgzMl9lbHQgPSBDb21wbGV4MzJfZWx0XG50eXBlIGNvbXBsZXg2NF9lbHQgPSBDb21wbGV4NjRfZWx0XG5cbigqIEtlZXAgdGhlIG9yZGVyIG9mIHRoZXNlIGNvbnN0cnVjdG9ycyBpbiBzeW5jIHdpdGggdGhlIGNhbWxfYmFfa2luZFxuICAgZW51bWVyYXRpb24gaW4gYmlnYXJyYXkuaCAqKVxuXG50eXBlICgnYSwgJ2IpIGtpbmQgPVxuICB8IEZsb2F0MzIgOiAoZmxvYXQsIGZsb2F0MzJfZWx0KSBraW5kXG4gIHwgRmxvYXQ2NCA6IChmbG9hdCwgZmxvYXQ2NF9lbHQpIGtpbmRcbiAgfCBJbnQ4X3NpZ25lZCA6IChpbnQsIGludDhfc2lnbmVkX2VsdCkga2luZFxuICB8IEludDhfdW5zaWduZWQgOiAoaW50LCBpbnQ4X3Vuc2lnbmVkX2VsdCkga2luZFxuICB8IEludDE2X3NpZ25lZCA6IChpbnQsIGludDE2X3NpZ25lZF9lbHQpIGtpbmRcbiAgfCBJbnQxNl91bnNpZ25lZCA6IChpbnQsIGludDE2X3Vuc2lnbmVkX2VsdCkga2luZFxuICB8IEludDMyIDogKGludDMyLCBpbnQzMl9lbHQpIGtpbmRcbiAgfCBJbnQ2NCA6IChpbnQ2NCwgaW50NjRfZWx0KSBraW5kXG4gIHwgSW50IDogKGludCwgaW50X2VsdCkga2luZFxuICB8IE5hdGl2ZWludCA6IChuYXRpdmVpbnQsIG5hdGl2ZWludF9lbHQpIGtpbmRcbiAgfCBDb21wbGV4MzIgOiAoQ29tcGxleC50LCBjb21wbGV4MzJfZWx0KSBraW5kXG4gIHwgQ29tcGxleDY0IDogKENvbXBsZXgudCwgY29tcGxleDY0X2VsdCkga2luZFxuICB8IENoYXIgOiAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQpIGtpbmRcbiAgfCBGbG9hdDE2IDogKGZsb2F0LCBmbG9hdDE2X2VsdCkga2luZFxuXG50eXBlIGNfbGF5b3V0ID0gQ19sYXlvdXRfdHlwXG50eXBlIGZvcnRyYW5fbGF5b3V0ID0gRm9ydHJhbl9sYXlvdXRfdHlwICgqKilcblxudHlwZSAnYSBsYXlvdXQgPVxuICAgIENfbGF5b3V0OiBjX2xheW91dCBsYXlvdXRcbiAgfCBGb3J0cmFuX2xheW91dDogZm9ydHJhbl9sYXlvdXQgbGF5b3V0XG5cbmxldCBmbG9hdDE2ID0gRmxvYXQxNlxubGV0IGZsb2F0MzIgPSBGbG9hdDMyXG5sZXQgZmxvYXQ2NCA9IEZsb2F0NjRcbmxldCBpbnQ4X3NpZ25lZCA9IEludDhfc2lnbmVkXG5sZXQgaW50OF91bnNpZ25lZCA9IEludDhfdW5zaWduZWRcbmxldCBpbnQxNl9zaWduZWQgPSBJbnQxNl9zaWduZWRcbmxldCBpbnQxNl91bnNpZ25lZCA9IEludDE2X3Vuc2lnbmVkXG5sZXQgaW50MzIgPSBJbnQzMlxubGV0IGludDY0ID0gSW50NjRcbmxldCBpbnQgPSBJbnRcbmxldCBuYXRpdmVpbnQgPSBOYXRpdmVpbnRcbmxldCBjb21wbGV4MzIgPSBDb21wbGV4MzJcbmxldCBjb21wbGV4NjQgPSBDb21wbGV4NjRcbmxldCBjaGFyID0gQ2hhclxuXG5sZXQga2luZF9zaXplX2luX2J5dGVzIDogdHlwZSBhIGIuIChhLCBiKSBraW5kIC0+IGludCA9IGZ1bmN0aW9uXG4gIHwgRmxvYXQxNiAtPiAyXG4gIHwgRmxvYXQzMiAtPiA0XG4gIHwgRmxvYXQ2NCAtPiA4XG4gIHwgSW50OF9zaWduZWQgLT4gMVxuICB8IEludDhfdW5zaWduZWQgLT4gMVxuICB8IEludDE2X3NpZ25lZCAtPiAyXG4gIHwgSW50MTZfdW5zaWduZWQgLT4gMlxuICB8IEludDMyIC0+IDRcbiAgfCBJbnQ2NCAtPiA4XG4gIHwgSW50IC0+IFN5cy53b3JkX3NpemUgLyA4XG4gIHwgTmF0aXZlaW50IC0+IFN5cy53b3JkX3NpemUgLyA4XG4gIHwgQ29tcGxleDMyIC0+IDhcbiAgfCBDb21wbGV4NjQgLT4gMTZcbiAgfCBDaGFyIC0+IDFcblxuKCogS2VlcCB0aG9zZSBjb25zdGFudHMgaW4gc3luYyB3aXRoIHRoZSBjYW1sX2JhX2xheW91dCBlbnVtZXJhdGlvblxuICAgaW4gYmlnYXJyYXkuaCAqKVxuXG5sZXQgY19sYXlvdXQgPSBDX2xheW91dFxubGV0IGZvcnRyYW5fbGF5b3V0ID0gRm9ydHJhbl9sYXlvdXRcblxubW9kdWxlIEdlbmFycmF5ID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHRcbiAgZXh0ZXJuYWwgY3JlYXRlOiAoJ2EsICdiKSBraW5kIC0+ICdjIGxheW91dCAtPiBpbnQgYXJyYXkgLT4gKCdhLCAnYiwgJ2MpIHRcbiAgICAgPSBcImNhbWxfYmFfY3JlYXRlXCJcbiAgZXh0ZXJuYWwgZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgYXJyYXkgLT4gJ2FcbiAgICAgPSBcImNhbWxfYmFfZ2V0X2dlbmVyaWNcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCBhcnJheSAtPiAnYSAtPiB1bml0XG4gICAgID0gXCJjYW1sX2JhX3NldF9nZW5lcmljXCJcblxuICBsZXQgcmVjIGNsb29wIGFyciBpZHggZiBjb2wgbWF4ID1cbiAgICBpZiBjb2wgPSBBcnJheS5sZW5ndGggaWR4IHRoZW4gc2V0IGFyciBpZHggKGYgaWR4KVxuICAgIGVsc2UgZm9yIGogPSAwIHRvIHByZWQgbWF4Lihjb2wpIGRvXG4gICAgICAgICAgIGlkeC4oY29sKSA8LSBqO1xuICAgICAgICAgICBjbG9vcCBhcnIgaWR4IGYgKHN1Y2MgY29sKSBtYXhcbiAgICAgICAgIGRvbmVcbiAgbGV0IHJlYyBmbG9vcCBhcnIgaWR4IGYgY29sIG1heCA9XG4gICAgaWYgY29sIDwgMCB0aGVuIHNldCBhcnIgaWR4IChmIGlkeClcbiAgICBlbHNlIGZvciBqID0gMSB0byBtYXguKGNvbCkgZG9cbiAgICAgICAgICAgaWR4Lihjb2wpIDwtIGo7XG4gICAgICAgICAgIGZsb29wIGFyciBpZHggZiAocHJlZCBjb2wpIG1heFxuICAgICAgICAgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltcyBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbXMgaW5cbiAgICBsZXQgZGxlbiA9IEFycmF5Lmxlbmd0aCBkaW1zIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNsb29wIGFyciAoQXJyYXkubWFrZSBkbGVuIDApIGYgMCBkaW1zOyBhcnJcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IGZsb29wIGFyciAoQXJyYXkubWFrZSBkbGVuIDEpIGYgKHByZWQgZGxlbikgZGltczsgYXJyXG5cbiAgZXh0ZXJuYWwgbnVtX2RpbXM6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiY2FtbF9iYV9udW1fZGltc1wiXG4gIGV4dGVybmFsIG50aF9kaW06ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfYmFfZGltXCJcbiAgbGV0IGRpbXMgYSA9XG4gICAgbGV0IG4gPSBudW1fZGltcyBhIGluXG4gICAgbGV0IGQgPSBBcnJheS5tYWtlIG4gMCBpblxuICAgIGZvciBpID0gMCB0byBuLTEgZG8gZC4oaSkgPC0gbnRoX2RpbSBhIGkgZG9uZTtcbiAgICBkXG5cbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9XG4gICAgKGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpKSAqIChBcnJheS5mb2xkX2xlZnQgKCAqICkgMSAoZGltcyBhcnIpKVxuXG4gIGV4dGVybmFsIHN1Yl9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHN1Yl9yaWdodDogKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBleHRlcm5hbCBzbGljZV9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhLCAnYiwgY19sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc2xpY2VcIlxuICBleHRlcm5hbCBzbGljZV9yaWdodDogKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IGFycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3NsaWNlXCJcbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdFxuICAgICA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcbmVuZFxuXG5tb2R1bGUgQXJyYXkwID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHQgPSAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICBsZXQgY3JlYXRlIGtpbmQgbGF5b3V0ID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3x8XVxuICBsZXQgZ2V0IGFyciA9IEdlbmFycmF5LmdldCBhcnIgW3x8XVxuICBsZXQgc2V0IGFyciA9IEdlbmFycmF5LnNldCBhcnIgW3x8XVxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9IGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpXG5cbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdCA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcblxuICBsZXQgb2ZfdmFsdWUga2luZCBsYXlvdXQgdiA9XG4gICAgbGV0IGEgPSBjcmVhdGUga2luZCBsYXlvdXQgaW5cbiAgICBzZXQgYSB2O1xuICAgIGFcbiAgbGV0IGluaXQgPSBvZl92YWx1ZVxuZW5kXG5cbm1vZHVsZSBBcnJheTEgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgZGltID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3xkaW18XVxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfcmVmXzFcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlY2FtbF9iYV9zZXRfMVwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8xXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMVwiXG4gIGV4dGVybmFsIGRpbTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMVwiXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG5cbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID1cbiAgICAoa2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycikpICogKGRpbSBhcnIpXG5cbiAgZXh0ZXJuYWwgc3ViOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsICdjKSB0ID0gXCJjYW1sX2JhX3N1YlwiXG4gIGxldCBzbGljZSAodHlwZSB0KSAoYSA6IChfLCBfLCB0KSBHZW5hcnJheS50KSBuID1cbiAgICBtYXRjaCBsYXlvdXQgYSB3aXRoXG4gICAgfCBDX2xheW91dCAtPiAoR2VuYXJyYXkuc2xpY2VfbGVmdCBhIFt8bnxdIDogKF8sIF8sIHQpIEdlbmFycmF5LnQpXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiAoR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG58XTogKF8sIF8sIHQpIEdlbmFycmF5LnQpXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXQgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG4gIGxldCBjX2luaXQgYXJyIGRpbSBmID1cbiAgICBmb3IgaSA9IDAgdG8gcHJlZCBkaW0gZG8gdW5zYWZlX3NldCBhcnIgaSAoZiBpKSBkb25lXG4gIGxldCBmb3J0cmFuX2luaXQgYXJyIGRpbSBmID1cbiAgICBmb3IgaSA9IDEgdG8gZGltIGRvIHVuc2FmZV9zZXQgYXJyIGkgKGYgaSkgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNfaW5pdCBhcnIgZGltIGY7IGFyclxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gZm9ydHJhbl9pbml0IGFyciBkaW0gZjsgYXJyXG4gIGxldCBvZl9hcnJheSAodHlwZSB0KSBraW5kIChsYXlvdXQ6IHQgbGF5b3V0KSBkYXRhID1cbiAgICBsZXQgYmEgPSBjcmVhdGUga2luZCBsYXlvdXQgKEFycmF5Lmxlbmd0aCBkYXRhKSBpblxuICAgIGxldCBvZnMgPVxuICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgQ19sYXlvdXQgLT4gMFxuICAgICAgfCBGb3J0cmFuX2xheW91dCAtPiAxXG4gICAgaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGRhdGEgLSAxIGRvIHVuc2FmZV9zZXQgYmEgKGkgKyBvZnMpIGRhdGEuKGkpIGRvbmU7XG4gICAgYmFcbmVuZFxuXG5tb2R1bGUgQXJyYXkyID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHQgPSAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICBsZXQgY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiA9XG4gICAgR2VuYXJyYXkuY3JlYXRlIGtpbmQgbGF5b3V0IFt8ZGltMTsgZGltMnxdXG4gIGV4dGVybmFsIGdldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfcmVmXzJcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWNhbWxfYmFfc2V0XzJcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhXG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzJcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMlwiXG4gIGV4dGVybmFsIGRpbTE6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzFcIlxuICBleHRlcm5hbCBkaW0yOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8yXCJcbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoZGltMSBhcnIpICogKGRpbTIgYXJyKVxuXG4gIGV4dGVybmFsIHN1Yl9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHN1Yl9yaWdodDpcbiAgICAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGxldCBzbGljZV9sZWZ0IGEgbiA9IEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG58XVxuICBsZXQgc2xpY2VfcmlnaHQgYSBuID0gR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG58XVxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuICBsZXQgY19pbml0IGFyciBkaW0xIGRpbTIgZiA9XG4gICAgZm9yIGkgPSAwIHRvIHByZWQgZGltMSBkb1xuICAgICAgZm9yIGogPSAwIHRvIHByZWQgZGltMiBkb1xuICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogKGYgaSBqKVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGYgPVxuICAgIGZvciBqID0gMSB0byBkaW0yIGRvXG4gICAgICBmb3IgaSA9IDEgdG8gZGltMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogKGYgaSBqKVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGluaXQgKHR5cGUgdCkga2luZCAobGF5b3V0IDogdCBsYXlvdXQpIGRpbTEgZGltMiBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBpblxuICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgfCBDX2xheW91dCAtPiBjX2luaXQgYXJyIGRpbTEgZGltMiBmOyBhcnJcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGY7IGFyclxuICBsZXQgb2ZfYXJyYXkgKHR5cGUgdCkga2luZCAobGF5b3V0OiB0IGxheW91dCkgZGF0YSA9XG4gICAgbGV0IGRpbTEgPSBBcnJheS5sZW5ndGggZGF0YSBpblxuICAgIGxldCBkaW0yID0gaWYgZGltMSA9IDAgdGhlbiAwIGVsc2UgQXJyYXkubGVuZ3RoIGRhdGEuKDApIGluXG4gICAgbGV0IGJhID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBpblxuICAgIGxldCBvZnMgPVxuICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgQ19sYXlvdXQgLT4gMFxuICAgICAgfCBGb3J0cmFuX2xheW91dCAtPiAxXG4gICAgaW5cbiAgICBmb3IgaSA9IDAgdG8gZGltMSAtIDEgZG9cbiAgICAgIGxldCByb3cgPSBkYXRhLihpKSBpblxuICAgICAgaWYgQXJyYXkubGVuZ3RoIHJvdyA8PiBkaW0yIHRoZW5cbiAgICAgICAgaW52YWxpZF9hcmcoXCJCaWdhcnJheS5BcnJheTIub2ZfYXJyYXk6IG5vbi1yZWN0YW5ndWxhciBkYXRhXCIpO1xuICAgICAgZm9yIGogPSAwIHRvIGRpbTIgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgYmEgKGkgKyBvZnMpIChqICsgb2ZzKSByb3cuKGopXG4gICAgICBkb25lXG4gICAgZG9uZTtcbiAgICBiYVxuZW5kXG5cbm1vZHVsZSBBcnJheTMgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGRpbTMgPVxuICAgIEdlbmFycmF5LmNyZWF0ZSBraW5kIGxheW91dCBbfGRpbTE7IGRpbTI7IGRpbTN8XVxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV9yZWZfM1wiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfc2V0XzNcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiAnYVxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8zXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8zXCJcbiAgZXh0ZXJuYWwgZGltMTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMVwiXG4gIGV4dGVybmFsIGRpbTI6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzJcIlxuICBleHRlcm5hbCBkaW0zOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8zXCJcbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoZGltMSBhcnIpICogKGRpbTIgYXJyKSAqIChkaW0zIGFycilcblxuICBleHRlcm5hbCBzdWJfbGVmdDogKCdhLCAnYiwgY19sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBjX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBleHRlcm5hbCBzdWJfcmlnaHQ6XG4gICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgbGV0IHNsaWNlX2xlZnRfMSBhIG4gbSA9IEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG47IG18XVxuICBsZXQgc2xpY2VfcmlnaHRfMSBhIG4gbSA9IEdlbmFycmF5LnNsaWNlX3JpZ2h0IGEgW3xuOyBtfF1cbiAgbGV0IHNsaWNlX2xlZnRfMiBhIG4gPSBHZW5hcnJheS5zbGljZV9sZWZ0IGEgW3xufF1cbiAgbGV0IHNsaWNlX3JpZ2h0XzIgYSBuID0gR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG58XVxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuICBsZXQgY19pbml0IGFyciBkaW0xIGRpbTIgZGltMyBmID1cbiAgICBmb3IgaSA9IDAgdG8gcHJlZCBkaW0xIGRvXG4gICAgICBmb3IgaiA9IDAgdG8gcHJlZCBkaW0yIGRvXG4gICAgICAgIGZvciBrID0gMCB0byBwcmVkIGRpbTMgZG9cbiAgICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogayAoZiBpIGogaylcbiAgICAgICAgZG9uZVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZiA9XG4gICAgZm9yIGsgPSAxIHRvIGRpbTMgZG9cbiAgICAgIGZvciBqID0gMSB0byBkaW0yIGRvXG4gICAgICAgIGZvciBpID0gMSB0byBkaW0xIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCBhcnIgaSBqIGsgKGYgaSBqIGspXG4gICAgICAgIGRvbmVcbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW0xIGRpbTIgZGltMyBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBkaW0zIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNfaW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZjsgYXJyXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiBmb3J0cmFuX2luaXQgYXJyIGRpbTEgZGltMiBkaW0zIGY7IGFyclxuICBsZXQgb2ZfYXJyYXkgKHR5cGUgdCkga2luZCAobGF5b3V0OiB0IGxheW91dCkgZGF0YSA9XG4gICAgbGV0IGRpbTEgPSBBcnJheS5sZW5ndGggZGF0YSBpblxuICAgIGxldCBkaW0yID0gaWYgZGltMSA9IDAgdGhlbiAwIGVsc2UgQXJyYXkubGVuZ3RoIGRhdGEuKDApIGluXG4gICAgbGV0IGRpbTMgPSBpZiBkaW0yID0gMCB0aGVuIDAgZWxzZSBBcnJheS5sZW5ndGggZGF0YS4oMCkuKDApIGluXG4gICAgbGV0IGJhID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBkaW0zIGluXG4gICAgbGV0IG9mcyA9XG4gICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICBDX2xheW91dCAtPiAwXG4gICAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IDFcbiAgICBpblxuICAgIGZvciBpID0gMCB0byBkaW0xIC0gMSBkb1xuICAgICAgbGV0IHJvdyA9IGRhdGEuKGkpIGluXG4gICAgICBpZiBBcnJheS5sZW5ndGggcm93IDw+IGRpbTIgdGhlblxuICAgICAgICBpbnZhbGlkX2FyZyhcIkJpZ2FycmF5LkFycmF5My5vZl9hcnJheTogbm9uLWN1YmljIGRhdGFcIik7XG4gICAgICBmb3IgaiA9IDAgdG8gZGltMiAtIDEgZG9cbiAgICAgICAgbGV0IGNvbCA9IHJvdy4oaikgaW5cbiAgICAgICAgaWYgQXJyYXkubGVuZ3RoIGNvbCA8PiBkaW0zIHRoZW5cbiAgICAgICAgICBpbnZhbGlkX2FyZyhcIkJpZ2FycmF5LkFycmF5My5vZl9hcnJheTogbm9uLWN1YmljIGRhdGFcIik7XG4gICAgICAgIGZvciBrID0gMCB0byBkaW0zIC0gMSBkb1xuICAgICAgICAgIHVuc2FmZV9zZXQgYmEgKGkgKyBvZnMpIChqICsgb2ZzKSAoayArIG9mcykgY29sLihrKVxuICAgICAgICBkb25lXG4gICAgICBkb25lXG4gICAgZG9uZTtcbiAgICBiYVxuZW5kXG5cbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MDogKCdhLCAnYiwgJ2MpIEFycmF5MC50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MTogKCdhLCAnYiwgJ2MpIEFycmF5MS50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MjogKCdhLCAnYiwgJ2MpIEFycmF5Mi50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MzogKCdhLCAnYiwgJ2MpIEFycmF5My50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmxldCBhcnJheTBfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAwIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkwX29mX2dlbmFycmF5XCJcbmxldCBhcnJheTFfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAxIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkxX29mX2dlbmFycmF5XCJcbmxldCBhcnJheTJfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAyIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkyX29mX2dlbmFycmF5XCJcbmxldCBhcnJheTNfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAzIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkzX29mX2dlbmFycmF5XCJcblxuZXh0ZXJuYWwgcmVzaGFwZTpcbiAgICgnYSwgJ2IsICdjKSBHZW5hcnJheS50IC0+IGludCBhcnJheSAtPiAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICAgPSBcImNhbWxfYmFfcmVzaGFwZVwiXG5sZXQgcmVzaGFwZV8wIGEgPSByZXNoYXBlIGEgW3x8XVxubGV0IHJlc2hhcGVfMSBhIGRpbTEgPSByZXNoYXBlIGEgW3xkaW0xfF1cbmxldCByZXNoYXBlXzIgYSBkaW0xIGRpbTIgPSByZXNoYXBlIGEgW3xkaW0xO2RpbTJ8XVxubGV0IHJlc2hhcGVfMyBhIGRpbTEgZGltMiBkaW0zID0gcmVzaGFwZSBhIFt8ZGltMTtkaW0yO2RpbTN8XVxuXG4oKiBGb3JjZSBjYW1sX2JhX2dldF97MSwyLDMsTn0gdG8gYmUgbGlua2VkIGluLCBzaW5jZSB3ZSBkb24ndCByZWZlclxuICAgdG8gdGhvc2UgcHJpbWl0aXZlcyBkaXJlY3RseSBpbiB0aGlzIGZpbGUgKilcblxubGV0IF8gPVxuICBsZXQgXyA9IEdlbmFycmF5LmdldCBpblxuICBsZXQgXyA9IEFycmF5MS5nZXQgaW5cbiAgbGV0IF8gPSBBcnJheTIuZ2V0IGluXG4gIGxldCBfID0gQXJyYXkzLmdldCBpblxuICAoKVxuXG5bQEBAb2NhbWwud2FybmluZyBcIi0zMlwiXVxuZXh0ZXJuYWwgZ2V0MTogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX2dldF8xXCJcbmV4dGVybmFsIGdldDI6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9nZXRfMlwiXG5leHRlcm5hbCBnZXQzOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfZ2V0XzNcIlxuZXh0ZXJuYWwgc2V0MTogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX3NldF8xXCJcbmV4dGVybmFsIHNldDI6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9zZXRfMlwiXG5leHRlcm5hbCBzZXQzOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfc2V0XzNcIlxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2FycmF5X21ha2UiLCJjYW1sX2JhX2NoYW5nZV9sYXlvdXQiLCJjYW1sX2JhX2NyZWF0ZSIsImNhbWxfYmFfZGltXzEiLCJjYW1sX2JhX2RpbV8yIiwiY2FtbF9iYV9raW5kIiwiY2FtbF9iYV9udW1fZGltcyIsImNhbWxfYmFfcmVzaGFwZSIsImNhbWxfYmFfc2V0XzEiLCJjYW1sX2JhX3NldF8yIiwiY2FtbF9iYV9zZXRfMyIsImNhbWxfYmFfc2V0X2dlbmVyaWMiLCJjYW1sX2JhX3NsaWNlIiwiY2FtbF9jaGVja19ib3VuZCIsImNhbWxfbXVsIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImNhbWxfY2FsbDMiLCJhMiIsImR1bW15IiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWIiLCJTdGRsaWJfQXJyYXkiLCJTdGRsaWJfU3lzIiwia2luZF9zaXplX2luX2J5dGVzIiwicGFyYW0iLCJjbG9vcCIsImFyciIsImlkeCIsImNvbCIsIm1heCIsImoiLCJmbG9vcCIsImluaXQiLCJraW5kIiwibGF5b3V0IiwiZGltcyIsImRsZW4iLCJhIiwibiIsImQiLCJpIiwic2l6ZV9pbl9ieXRlcyIsImNyZWF0ZSIsImdldCIsInNldCIsIm9mX3ZhbHVlIiwidiIsImRpbSIsInNsaWNlIiwib2ZfYXJyYXkiLCJkYXRhIiwiYmEiLCJvZnMiLCJkaW0xIiwiZGltMiIsInNsaWNlX2xlZnQiLCJzbGljZV9yaWdodCIsInJvdyIsImRpbTMiLCJzbGljZV9sZWZ0XzEiLCJtIiwic2xpY2VfcmlnaHRfMSIsInNsaWNlX2xlZnRfMiIsInNsaWNlX3JpZ2h0XzIiLCJrIiwiY3N0X0JpZ2FycmF5X0FycmF5M19vZl9hcnJheV9uIiwiYXJyYXkwX29mX2dlbmFycmF5IiwiYXJyYXkxX29mX2dlbmFycmF5IiwiYXJyYXkyX29mX2dlbmFycmF5IiwiYXJyYXkzX29mX2dlbmFycmF5IiwicmVzaGFwZV8wIiwicmVzaGFwZV8xIiwicmVzaGFwZV8yIiwicmVzaGFwZV8zIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLGtCQUFBO0FBQUEsSUFBQUMs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ImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9yYW5kb20ubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICopXG4oKiAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDYW1iaXVtLCBDb2xsZWdlIGRlIEZyYW5jZSBhbmQgSW5yaWEgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFBzZXVkby1yYW5kb20gbnVtYmVyIGdlbmVyYXRvciAqKVxuXG5leHRlcm5hbCByYW5kb21fc2VlZDogdW5pdCAtPiBpbnQgYXJyYXkgPSBcImNhbWxfc3lzX3JhbmRvbV9zZWVkXCJcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG5cbiAgb3BlbiBCaWdhcnJheVxuXG4gIHR5cGUgdCA9IChpbnQ2NCwgaW50NjRfZWx0LCBjX2xheW91dCkgQXJyYXkxLnRcblxuICBleHRlcm5hbCBuZXh0OiB0IC0+IChpbnQ2NFtAdW5ib3hlZF0pXG4gICAgICA9IFwiY2FtbF9seG1fbmV4dFwiIFwiY2FtbF9seG1fbmV4dF91bmJveGVkXCIgW0BAbm9hbGxvY11cblxuICBsZXQgY3JlYXRlICgpIDogdCA9XG4gICAgQXJyYXkxLmNyZWF0ZSBJbnQ2NCBDX2xheW91dCA0XG5cbiAgbGV0IHNldCBzIGkxIGkyIGkzIGk0ID1cbiAgICBBcnJheTEudW5zYWZlX3NldCBzIDAgKEludDY0LmxvZ29yIGkxIDFMKTsgKCogbXVzdCBiZSBvZGQgKilcbiAgICBBcnJheTEudW5zYWZlX3NldCBzIDEgaTI7XG4gICAgQXJyYXkxLnVuc2FmZV9zZXQgcyAyIChpZiBpMyA8PiAwTCB0aGVuIGkzIGVsc2UgMUwpOyAoKiBtdXN0IG5vdCBiZSAwICopXG4gICAgQXJyYXkxLnVuc2FmZV9zZXQgcyAzIChpZiBpNCA8PiAwTCB0aGVuIGk0IGVsc2UgMkwpICgqIG11c3Qgbm90IGJlIDAgKilcblxuICBsZXQgbWsgaTEgaTIgaTMgaTQgPVxuICAgIGxldCBzID0gY3JlYXRlICgpIGluXG4gICAgc2V0IHMgaTEgaTIgaTMgaTQ7IHNcblxuICBsZXQgc2VyaWFsaXphdGlvbl9wcmVmaXggPVxuICAgIFwibHhtMTpcIlxuICAgICgqIFwibHhtXCIgZGVub3RlcyB0aGUgYWxnb3JpdGhtIGN1cnJlbnRseSBpbiB1c2UsIGFuZCAnMScgaXNcbiAgICAgICBhIHZlcnNpb24gbnVtYmVyLiBXZSBzaG91bGQgdXBkYXRlIHRoaXMgcHJlZml4IGlmIHdlIGNoYW5nZVxuICAgICAgIHRoZSBSYW5kb20gYWxnb3JpdGhtIG9yIHRoZSBzZXJpYWxpemF0aW9uIGZvcm1hdCwgc28gdGhhdCB1c2Vyc1xuICAgICAgIGdldCBhIGNsZWFuIGVycm9yIGluc3RlYWQgb2YgYmVsaWV2aW5nIHRoYXQgdGhleSBmYWl0aGZ1bGx5XG4gICAgICAgcmVwcm9kdWNlIHRoZWlyIHByZXZpb3VzIHN0YXRlIGFuZCBpbiBmYWN0IGdldCBhIGRpZmZlcmVudFxuICAgICAgIHN0cmVhbS5cblxuICAgICAgIE5vdGUgdGhhdCB0aGVyZSBpcyBubyBjb25zdHJhaW50IHRvIGtlZXAgdGhlIHNhbWVcbiAgICAgICBcIjxuYW1lPjx2ZXI+OjxkYXRhPlwiIGZvcm1hdCBvciBtZXNzYWdlIHNpemUgaW4gZnV0dXJlIHZlcnNpb25zLFxuICAgICAgIHdlIGNvdWxkIGNoYW5nZSB0aGUgZm9ybWF0IGNvbXBsZXRlbHkgaWYgd2Ugd2FudGVkIGFzIGxvbmdcbiAgICAgICBhcyB0aGVyZSBpcyBubyBjb25mdXNpb24gcG9zc2libGUgd2l0aCB0aGUgcHJldmlvdXMgZm9ybWF0cy4gKilcblxuICBsZXQgc2VyaWFsaXphdGlvbl9wcmVmaXhfbGVuID1cbiAgICBTdHJpbmcubGVuZ3RoIHNlcmlhbGl6YXRpb25fcHJlZml4XG5cbiAgbGV0IHRvX2JpbmFyeV9zdHJpbmcgcyA9XG4gICAgbGV0IHByZWZpeCA9IHNlcmlhbGl6YXRpb25fcHJlZml4IGluXG4gICAgbGV0IHByZWZsZW4gPSBzZXJpYWxpemF0aW9uX3ByZWZpeF9sZW4gaW5cbiAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIChwcmVmbGVuICsgNCAqIDgpIGluXG4gICAgQnl0ZXMuYmxpdF9zdHJpbmcgcHJlZml4IDAgYnVmIDAgcHJlZmxlbjtcbiAgICBmb3IgaSA9IDAgdG8gMyBkb1xuICAgICAgQnl0ZXMuc2V0X2ludDY0X2xlIGJ1ZiAocHJlZmxlbiArIGkgKiA4KSAoQXJyYXkxLmdldCBzIGkpXG4gICAgZG9uZTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1ZlxuXG4gIGxldCBvZl9iaW5hcnlfc3RyaW5nIGJ1ZiA9XG4gICAgbGV0IHByZWZpeCA9IHNlcmlhbGl6YXRpb25fcHJlZml4IGluXG4gICAgbGV0IHByZWZsZW4gPSBzZXJpYWxpemF0aW9uX3ByZWZpeF9sZW4gaW5cbiAgICBpZiBTdHJpbmcubGVuZ3RoIGJ1ZiA8PiBwcmVmbGVuICsgNCAqIDhcbiAgICAgICB8fCBub3QgKFN0cmluZy5zdGFydHNfd2l0aCB+cHJlZml4IGJ1ZilcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aFxuICAgICAgICAoXCJSYW5kb20uU3RhdGUub2ZfYmluYXJ5X3N0cmluZzogZXhwZWN0ZWQgYSBmb3JtYXQgXFxcbiAgICAgICAgICBjb21wYXRpYmxlIHdpdGggT0NhbWwgXCIgXiBTeXMub2NhbWxfdmVyc2lvbik7XG4gICAgbGV0IGkxID0gU3RyaW5nLmdldF9pbnQ2NF9sZSBidWYgKHByZWZsZW4gKyAwICogOCkgaW5cbiAgICBsZXQgaTIgPSBTdHJpbmcuZ2V0X2ludDY0X2xlIGJ1ZiAocHJlZmxlbiArIDEgKiA4KSBpblxuICAgIGxldCBpMyA9IFN0cmluZy5nZXRfaW50NjRfbGUgYnVmIChwcmVmbGVuICsgMiAqIDgpIGluXG4gICAgbGV0IGk0ID0gU3RyaW5nLmdldF9pbnQ2NF9sZSBidWYgKHByZWZsZW4gKyAzICogOCkgaW5cbiAgICBtayBpMSBpMiBpMyBpNFxuXG4gIGxldCBhc3NpZ24gKGRzdDogdCkgKHNyYzogdCkgPVxuICAgIEFycmF5MS5ibGl0IHNyYyBkc3RcblxuICBsZXQgY29weSBzID1cbiAgICBsZXQgcycgPSBjcmVhdGUoKSBpbiBhc3NpZ24gcycgczsgcydcblxuICAoKiBUaGUgc2VlZCBpcyBhbiBhcnJheSBvZiBpbnRlZ2Vycy4gIEl0IGNhbiBiZSBqdXN0IG9uZSBpbnRlZ2VyLFxuICAgICBidXQgaXQgY2FuIGFsc28gYmUgMTIgb3IgbW9yZSBieXRlcy4gIFRvIGhpZGUgdGhlIGRpZmZlcmVuY2UsXG4gICAgIHdlIHNlcmlhbGl6ZSB0aGUgYXJyYXkgYXMgYSBzZXF1ZW5jZSBvZiBieXRlcywgdGhlbiBoYXNoIHRoZVxuICAgICBzZXF1ZW5jZSB3aXRoIE1ENSAoRGlnZXN0LmJ5dGVzKS4gIE1ENSBnaXZlcyBvbmx5IDEyOCBiaXRzIHdoaWxlXG4gICAgIHdlIG5lZWQgMjU2IGJpdHMsIHNvIHdlIGhhc2ggdHdpY2Ugd2l0aCBkaWZmZXJlbnQgc3VmZml4ZXMuICopXG4gIGxldCByZWluaXQgcyBzZWVkID1cbiAgICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBzZWVkIGluXG4gICAgbGV0IGIgPSBCeXRlcy5jcmVhdGUgKG4gKiA4ICsgMSkgaW5cbiAgICBmb3IgaSA9IDAgdG8gbi0xIGRvXG4gICAgICBCeXRlcy5zZXRfaW50NjRfbGUgYiAoaSAqIDgpIChJbnQ2NC5vZl9pbnQgc2VlZC4oaSkpXG4gICAgZG9uZTtcbiAgICBCeXRlcy5zZXQgYiAobiAqIDgpICdcXHgwMSc7XG4gICAgbGV0IGQxID0gRGlnZXN0LmJ5dGVzIGIgaW5cbiAgICBCeXRlcy5zZXQgYiAobiAqIDgpICdcXHgwMic7XG4gICAgbGV0IGQyID0gRGlnZXN0LmJ5dGVzIGIgaW5cbiAgICBzZXQgcyAoU3RyaW5nLmdldF9pbnQ2NF9sZSBkMSAwKVxuICAgICAgICAgIChTdHJpbmcuZ2V0X2ludDY0X2xlIGQxIDgpXG4gICAgICAgICAgKFN0cmluZy5nZXRfaW50NjRfbGUgZDIgMClcbiAgICAgICAgICAoU3RyaW5nLmdldF9pbnQ2NF9sZSBkMiA4KVxuXG4gIGxldCBtYWtlIHNlZWQgPVxuICAgIGxldCBzID0gY3JlYXRlKCkgaW4gcmVpbml0IHMgc2VlZDsgc1xuXG4gIGxldCBtYWtlX3NlbGZfaW5pdCAoKSA9XG4gICAgbWFrZSAocmFuZG9tX3NlZWQgKCkpXG5cbiAgbGV0IG1pbl9pbnQzMSA9IC0weDQwMDBfMDAwMFxuICAgICAgKCogPSAtMnteMzB9LCB3aGljaCBpcyBbbWluX2ludF0gZm9yIDMxLWJpdCBpbnRlZ2VycyAqKVxuICBsZXQgbWF4X2ludDMxID0gMHgzRkZGX0ZGRkZcbiAgICAgICgqID0gIDJ7XjMwfS0xLCB3aGljaCBpcyBbbWF4X2ludF0gZm9yIDMxLWJpdCBpbnRlZ2VycyAqKVxuICAoKiBhdm9pZCBpbnRlZ2VyIGxpdGVyYWxzIGZvciB0aGVzZSwgMzItYml0IE9DYW1sIHdvdWxkIHJlamVjdCB0aGVtOiAqKVxuICBsZXQgbWluX2ludDMyID0gLSgxIGxzbCAzMSlcbiAgICAgICgqID0gLTB4ODAwMF8wMDAwIG9uIHBsYXRmb3JtcyB3aGVyZSBbU3lzLmludF9zaXplID49IDMyXSAqKVxuICBsZXQgbWF4X2ludDMyID0gKDEgbHNsIDMxKSAtIDFcbiAgICAgICgqID0gIDB4N0ZGRl9GRkZGIG9uIHBsYXRmb3JtcyB3aGVyZSBbU3lzLmludF9zaXplID49IDMyXSAqKVxuXG4gICgqIFJldHVybiAzMCByYW5kb20gYml0cyBhcyBhbiBpbnRlZ2VyIDAgPD0geCA8IDJeMzAgKilcbiAgbGV0IGJpdHMgcyA9XG4gICAgSW50NjQudG9faW50IChuZXh0IHMpIGxhbmQgbWF4X2ludDMxXG5cbiAgKCogUmV0dXJuIGFuIGludGVnZXIgYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtuXSAoZXhjbHVkZWQpLlxuICAgICBbYm91bmRdIG1heSBiZSBhbnkgcG9zaXRpdmUgW2ludF0uICBbbWFza10gbXVzdCBiZSBvZiB0aGUgZm9ybSBbMnteaX0tMV1cbiAgICAgYW5kIGdyZWF0ZXIgb3IgZXF1YWwgdG8gW25dLiAgTGFyZ2VyIHZhbHVlcyBvZiBbbWFza10gbWFrZSB0aGUgZnVuY3Rpb25cbiAgICAgcnVuIGZhc3RlciAoZmV3ZXIgc2FtcGxlcyBhcmUgcmVqZWN0ZWQpLiAgU21hbGxlciB2YWx1ZXMgb2YgW21hc2tdXG4gICAgIGFyZSB1c2FibGUgb24gYSB3aWRlciByYW5nZSBvZiBPQ2FtbCBpbXBsZW1lbnRhdGlvbnMuICAqKVxuICBsZXQgcmVjIGludF9hdXggcyBuIG1hc2sgPVxuICAgICgqIFdlIHN0YXJ0IGJ5IGRyYXdpbmcgYSBub24tbmVnYXRpdmUgaW50ZWdlciBpbiB0aGUgWyBbMCwgbWFza10gXSByYW5nZSAqKVxuICAgIGxldCByID0gSW50NjQudG9faW50IChuZXh0IHMpIGxhbmQgbWFzayBpblxuICAgIGxldCB2ID0gciBtb2QgbiBpblxuICAgICgqIEZvciB1bmlmb3JtIGRpc3RyaWJ1dGlvbiBvZiB0aGUgcmVzdWx0IGJldHdlZW4gMCBpbmNsdWRlZCBhbmQgW25dXG4gICAgICogZXhjbHVkZWQsIHRoZSByYW5kb20gbnVtYmVyIFtyXSBtdXN0IGhhdmUgYmVlbiBkcmF3biB1bmlmb3JtbHkgaW5cbiAgICAgKiBhbiBpbnRlcnZhbCB3aG9zZSBsZW5ndGggaXMgYSBtdWx0aXBsZSBvZiBbbl0uIFRvIGFjaGlldmUgdGhpcyxcbiAgICAgKiB3ZSB1c2UgcmVqZWN0aW9uIHNhbXBsaW5nIG9uIHRoZSBncmVhdGVzdCBpbnRlcnZhbCBbIFswLCBrKm4tMV0gXVxuICAgICAqIHRoYXQgZml0cyBpbiBbIFswLCBtYXNrXSBdLiAgVGhhdCBpcywgd2UgcmVqZWN0IHRoZVxuICAgICAqIHNhbXBsZSBpZiBpdCBmYWxscyBvdXRzaWRlIG9mIHRoaXMgaW50ZXJ2YWwsIGFuZCBkcmF3IGFnYWluLlxuICAgICAqIFRoaXMgaXMgd2hhdCB0aGUgdGVzdCBiZWxvdyBkb2VzLCB3aGlsZSBjYXJlZnVsbHkgYXZvaWRpbmdcbiAgICAgKiBvdmVyZmxvd3MgYW5kIHNwYXJpbmcgYSBkaXZpc2lvbiBbbWFzayAvIG5dLiAqKVxuICAgIGlmIHIgLSB2ID4gbWFzayAtIG4gKyAxIHRoZW4gaW50X2F1eCBzIG4gbWFzayBlbHNlIHZcblxuICAoKiBSZXR1cm4gYW4gaW50ZWdlciBiZXR3ZWVuIDAgKGluY2x1ZGVkKSBhbmQgW2JvdW5kXSAoZXhjbHVkZWQpLlxuICAgICBUaGUgYm91bmQgbXVzdCBmaXQgaW4gMzEtYml0IHNpZ25lZCBpbnRlZ2Vycy5cbiAgICAgVGhpcyBmdW5jdGlvbiB5aWVsZHMgdGhlIHNhbWUgb3V0cHV0IHJlZ2FyZGxlc3Mgb2YgdGhlIGludGVnZXIgc2l6ZS4gKilcbiAgbGV0IGludCBzIGJvdW5kID1cbiAgICBpZiBib3VuZCA+IG1heF9pbnQzMSB8fCBib3VuZCA8PSAwXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIlJhbmRvbS5pbnRcIlxuICAgIGVsc2UgaW50X2F1eCBzIGJvdW5kIG1heF9pbnQzMVxuXG4gICgqIFJldHVybiBhbiBpbnRlZ2VyIGJldHdlZW4gMCAoaW5jbHVkZWQpIGFuZCBbYm91bmRdIChleGNsdWRlZCkuXG4gICAgIFtib3VuZF0gbWF5IGJlIGFueSBwb3NpdGl2ZSBbaW50XS4gKilcbiAgbGV0IGZ1bGxfaW50IHMgYm91bmQgPVxuICAgIGlmIGJvdW5kIDw9IDAgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJSYW5kb20uZnVsbF9pbnRcIlxuICAgICgqIFdoZW4gdGhlIGJvdW5kIGZpdHMgaW4gMzEtYml0IHNpZ25lZCBpbnRlZ2Vycywgd2UgdXNlIHRoZSBzYW1lIG1hc2tcbiAgICAgICBhcyBpbiBmdW5jdGlvbiBbaW50XSBzbyBhcyB0byB5aWVsZCB0aGUgc2FtZSBvdXRwdXQgb24gYWxsIHBsYXRmb3Jtc1xuICAgICAgIHN1cHBvcnRlZCBieSBPQ2FtbCAoMzItYml0IE9DYW1sLCA2NC1iaXQgT0NhbWwsIGFuZCBKYXZhU2NyaXB0KS5cbiAgICAgICBXaGVuIHRoZSBib3VuZCBmaXRzIGluIDMyLWJpdCBzaWduZWQgaW50ZWdlcnMsIHdlIHVzZSBbbWF4X2ludDMyXVxuICAgICAgIGFzIHRoZSBtYXNrIHNvIGFzIHRvIHlpZWxkIHRoZSBzYW1lIG91dHB1dCBvbiBhbGwgcGxhdGZvcm1zIHdoZXJlXG4gICAgICAgW1N5cy5pbnRfc2l6ZSA+PSAzMl0gKGkuZS4gSmF2YVNjcmlwdCBhbmQgNjQtYml0IE9DYW1sKS4gKilcbiAgICBlbHNlXG4gICAgICBpbnRfYXV4IHMgYm91bmRcbiAgICAgICAgKGlmIGJvdW5kIDw9IG1heF9pbnQzMSB0aGVuIG1heF9pbnQzMVxuICAgICAgICAgZWxzZSBpZiBib3VuZCA8PSBtYXhfaW50MzIgdGhlbiBtYXhfaW50MzJcbiAgICAgICAgIGVsc2UgbWF4X2ludClcblxuICAoKiBSZXR1cm4gYW4gaW50ZWdlciBiZXR3ZWVuIFttaW5dIChpbmNsdWRlZCkgYW5kIFttYXhdIChpbmNsdWRlZCkuXG4gICAgIFRoZSBbbmJpdHNdIHBhcmFtZXRlciBpcyB0aGUgc2l6ZSBpbiBiaXRzIG9mIHRoZSBzaWduZWQgaW50ZWdlcnNcbiAgICAgd2UgZHJhdyBmcm9tIFtzXS5cbiAgICAgV2UgbXVzdCBoYXZlIFstMntebmJpdHMgLSAxfSA8PSBtaW4gPD0gbWF4IDwgMntebmJpdHMgLSAxfV0uXG4gICAgIE1vcmVvdmVyLCBmb3IgdGhlIGl0ZXJhdGlvbiB0byBjb252ZXJnZSBxdWlja2x5LCB0aGUgaW50ZXJ2YWxcbiAgICAgW1ttaW4sIG1heF1dIHNob3VsZCBoYXZlIHdpZHRoIGF0IGxlYXN0IFsye15uYml0cyAtIDF9XS5cbiAgICAgQXMgdGhlIHdpZHRoIGFwcHJvYWNoZXMgdGhpcyBsb3dlciBsaW1pdCwgdGhlIGF2ZXJhZ2UgbnVtYmVyIG9mXG4gICAgIGRyYXdzIGFwcHJvYWNoZXMgMiwgd2l0aCBhIHF1aXRlIGhpZ2ggc3RhbmRhcmQgZGV2aWF0aW9uICgyICsgZXBzaWxvbikuICopXG4gIGxldCByZWMgaW50X2luX2xhcmdlX3JhbmdlIHMgfm1pbiB+bWF4IH5uYml0cyA9XG4gICAgbGV0IGRyb3AgPSBTeXMuaW50X3NpemUgLSBuYml0cyBpblxuICAgICgqIFRoZSBiaXRzaGlmdHMgcmVwbGljYXRlIHRoZSBbbmJpdHNdLXRoIGJpdCAoc2lnbiBiaXQpIHRvIGhpZ2hlciBiaXRzOiAqKVxuICAgIGxldCByID0gKChJbnQ2NC50b19pbnQgKG5leHQgcykpIGxzbCBkcm9wKSBhc3IgZHJvcCBpblxuICAgIGlmIHIgPCBtaW4gfHwgciA+IG1heCB0aGVuIGludF9pbl9sYXJnZV9yYW5nZSBzIH5taW4gfm1heCB+bmJpdHMgZWxzZSByXG5cbiAgKCogUmV0dXJuIGFuIGludGVnZXIgYmV0d2VlbiBbbWluXSAoaW5jbHVkZWQpIGFuZCBbbWF4XSAoaW5jbHVkZWQpLlxuICAgICBbbWFza10gaXMgYXMgZGVzY3JpYmVkIGZvciBbaW50X2F1eF0uXG4gICAgIFtuYml0c10gaXMgYXMgZGVzY3JpYmVkIGZvciBbaW50X2luX2xhcmdlX3JhbmdlXS4gKilcbiAgbGV0IGludF9pbl9yYW5nZV9hdXggcyB+bWluIH5tYXggfm1hc2sgfm5iaXRzID1cbiAgICBsZXQgc3BhbiA9IG1heCAtIG1pbiArIDEgaW5cbiAgICBpZiBzcGFuIDw9IG1hc2sgKCogW3NwYW5dIGlzIHNtYWxsIGVub3VnaCAqKVxuICAgICYmIHNwYW4gPiAwICAgICAoKiBubyBvdmVyZmxvdyBvY2N1cnJlZCB3aGVuIGNvbXB1dGluZyBbc3Bhbl0gKilcbiAgICB0aGVuXG4gICAgICAoKiBKdXN0IGRyYXcgYSBudW1iZXIgaW4gW1swLCBzcGFuKV0gYW5kIHNoaWZ0IGl0IGJ5IFttaW5dLiAqKVxuICAgICAgbWluICsgaW50X2F1eCBzIHNwYW4gbWFza1xuICAgIGVsc2VcbiAgICAgICgqIFNwYW4gdG9vIGxhcmdlLCB1c2UgdGhlIGFsdGVybmF0aXZlIGRyYXdpbmcgbWV0aG9kLiAqKVxuICAgICAgaW50X2luX2xhcmdlX3JhbmdlIHMgfm1pbiB+bWF4IH5uYml0c1xuXG4gICgqIFJldHVybiBhbiBpbnRlZ2VyIGJldHdlZW4gW21pbl0gKGluY2x1ZGVkKSBhbmQgW21heF0gKGluY2x1ZGVkKS5cbiAgICAgV2UgbXVzdCBoYXZlIFttaW4gPD0gbWF4XS4gKilcbiAgbGV0IGludF9pbl9yYW5nZSBzIH5taW4gfm1heCA9XG4gICAgaWYgbWluID4gbWF4IHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiUmFuZG9tLmludF9pbl9yYW5nZVwiO1xuICAgICgqIFdoZW4gYm90aCBib3VuZHMgZml0IGluIDMxLWJpdCBzaWduZWQgaW50ZWdlcnMsIHdlIHVzZSBwYXJhbWV0ZXJzXG4gICAgICAgW21hc2tdIGFuZCBbbmJpdHNdIGFwcHJvcHJpYXRlIGZvciAzMS1iaXQgaW50ZWdlcnMsIHNvIGFzIHRvXG4gICAgICAgeWllbGQgdGhlIHNhbWUgb3V0cHV0IG9uIGFsbCBwbGF0Zm9ybXMgc3VwcG9ydGVkIGJ5IE9DYW1sLlxuICAgICAgIFdoZW4gYm90aCBib3VuZHMgZml0IGluIDMyLWJpdCBzaWduZWQgaW50ZWdlcnMsIHdlIHVzZSBwYXJhbWV0ZXJzXG4gICAgICAgW21hc2tdIGFuZCBbbmJpdHNdIGFwcHJvcHJpYXRlIGZvciAzMi1iaXQgaW50ZWdlcnMsIHNvIGFzIHRvXG4gICAgICAgeWllbGQgdGhlIHNhbWUgb3V0cHV0IG9uIEphdmFTY3JpcHQgYW5kIG9uIDY0LWJpdCBPQ2FtbC4gKilcbiAgICBpZiBtaW4gPj0gbWluX2ludDMxICYmIG1heCA8PSBtYXhfaW50MzEgdGhlblxuICAgICAgaW50X2luX3JhbmdlX2F1eCBzIH5taW4gfm1heCB+bWFzazptYXhfaW50MzEgfm5iaXRzOjMxXG4gICAgZWxzZSBpZiBtaW4gPj0gbWluX2ludDMyICYmIG1heCA8PSBtYXhfaW50MzIgdGhlblxuICAgICAgaW50X2luX3JhbmdlX2F1eCBzIH5taW4gfm1heCB+bWFzazptYXhfaW50MzIgfm5iaXRzOjMyXG4gICAgZWxzZVxuICAgICAgaW50X2luX3JhbmdlX2F1eCBzIH5taW4gfm1heCB+bWFzazptYXhfaW50IH5uYml0czpTeXMuaW50X3NpemVcblxuICAoKiBSZXR1cm4gMzIgcmFuZG9tIGJpdHMgYXMgYW4gW2ludDMyXSAqKVxuICBsZXQgYml0czMyIHMgPVxuICAgIEludDY0LnRvX2ludDMyIChuZXh0IHMpXG5cbiAgKCogUmV0dXJuIGFuIFtpbnQzMl0gYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtib3VuZF0gKGV4Y2x1ZGVkKS4gKilcbiAgbGV0IHJlYyBpbnQzMmF1eCBzIG4gPVxuICAgIGxldCByID0gSW50MzIuc2hpZnRfcmlnaHRfbG9naWNhbCAoYml0czMyIHMpIDEgaW5cbiAgICBsZXQgdiA9IEludDMyLnJlbSByIG4gaW5cbiAgICAoKiBFeHBsYW5hdGlvbiBvZiB0aGlzIHRlc3Q6IHNlZSBjb21tZW50IGluIFtpbnRfYXV4XS4gKilcbiAgICBpZiBJbnQzMi4oc3ViIHIgdiA+IGFkZCAoc3ViIG1heF9pbnQgbikgMWwpXG4gICAgdGhlbiBpbnQzMmF1eCBzIG5cbiAgICBlbHNlIHZcblxuICBsZXQgaW50MzIgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMGxcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludDMyXCJcbiAgICBlbHNlIGludDMyYXV4IHMgYm91bmRcblxuICAoKiBSZXR1cm4gYW4gW2ludDMyXSBiZXR3ZWVuIFttaW5dIChpbmNsdWRlZCkgYW5kIFttYXhdIChpbmNsdWRlZCkuXG4gICAgIFdlIG11c3QgaGF2ZSBbbWluIDw9IG1heF0uICopXG4gIGxldCByZWMgaW50MzJfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4ID1cbiAgICBsZXQgciA9IEludDY0LnRvX2ludDMyIChuZXh0IHMpIGluXG4gICAgaWYgciA8IG1pbiB8fCByID4gbWF4IHRoZW4gaW50MzJfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4IGVsc2UgclxuXG4gIGxldCBpbnQzMl9pbl9yYW5nZSBzIH5taW4gfm1heCA9XG4gICAgaWYgbWluID4gbWF4IHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiUmFuZG9tLmludDMyX2luX3JhbmdlXCJcbiAgICBlbHNlXG4gICAgICBsZXQgc3BhbiA9IEludDMyLnN1Y2MgKEludDMyLnN1YiBtYXggbWluKSBpblxuICAgICAgKCogRXhwbGFuYXRpb24gb2YgdGhpcyB0ZXN0OiBzZWUgY29tbWVudCBpbiBbaW50X2luX3JhbmdlX2F1eF0uICopXG4gICAgICBpZiBzcGFuIDw9IEludDMyLnplcm8gdGhlblxuICAgICAgICBpbnQzMl9pbl9yYW5nZV9hdXggcyB+bWluIH5tYXhcbiAgICAgIGVsc2VcbiAgICAgICAgSW50MzIuYWRkIG1pbiAoaW50MzJhdXggcyBzcGFuKVxuXG4gICgqIFJldHVybiA2NCByYW5kb20gYml0cyBhcyBhbiBbaW50NjRdICopXG4gIGxldCBiaXRzNjQgcyA9XG4gICAgbmV4dCBzXG5cbiAgKCogUmV0dXJuIGFuIFtpbnQ2NF0gYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtib3VuZF0gKGV4Y2x1ZGVkKS4gKilcbiAgbGV0IHJlYyBpbnQ2NGF1eCBzIG4gPVxuICAgIGxldCByID0gSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCAoYml0czY0IHMpIDEgaW5cbiAgICBsZXQgdiA9IEludDY0LnJlbSByIG4gaW5cbiAgICAoKiBFeHBsYW5hdGlvbiBvZiB0aGlzIHRlc3Q6IHNlZSBjb21tZW50IGluIFtpbnRfYXV4XS4gKilcbiAgICBpZiBJbnQ2NC4oc3ViIHIgdiA+IGFkZCAoc3ViIG1heF9pbnQgbikgMUwpXG4gICAgdGhlbiBpbnQ2NGF1eCBzIG5cbiAgICBlbHNlIHZcblxuICBsZXQgaW50NjQgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMExcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludDY0XCJcbiAgICBlbHNlIGludDY0YXV4IHMgYm91bmRcblxuICAoKiBSZXR1cm4gYW4gW2ludDY0XSBiZXR3ZWVuIFttaW5dIChpbmNsdWRlZCkgYW5kIFttYXhdIChpbmNsdWRlZCkuXG4gICAgIFdlIG11c3QgaGF2ZSBbbWluIDw9IG1heF0uICopXG4gIGxldCByZWMgaW50NjRfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4ID1cbiAgICBsZXQgciA9IG5leHQgcyBpblxuICAgIGlmIHIgPCBtaW4gfHwgciA+IG1heCB0aGVuIGludDY0X2luX3JhbmdlX2F1eCBzIH5taW4gfm1heCBlbHNlIHJcblxuICBsZXQgaW50NjRfaW5fcmFuZ2UgcyB+bWluIH5tYXggPVxuICAgIGlmIG1pbiA+IG1heCB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIlJhbmRvbS5pbnQ2NF9pbl9yYW5nZVwiXG4gICAgZWxzZVxuICAgICAgbGV0IHNwYW4gPSBJbnQ2NC5zdWNjIChJbnQ2NC5zdWIgbWF4IG1pbikgaW5cbiAgICAgICgqIEV4cGxhbmF0aW9uIG9mIHRoaXMgdGVzdDogc2VlIGNvbW1lbnQgaW4gW2ludF9pbl9yYW5nZV9hdXhdLiAqKVxuICAgICAgaWYgc3BhbiA8PSBJbnQ2NC56ZXJvIHRoZW5cbiAgICAgICAgaW50NjRfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4XG4gICAgICBlbHNlXG4gICAgICAgIEludDY0LmFkZCBtaW4gKGludDY0YXV4IHMgc3BhbilcblxuICAoKiBSZXR1cm4gMzIgb3IgNjQgcmFuZG9tIGJpdHMgYXMgYSBbbmF0aXZlaW50XSAqKVxuICBsZXQgbmF0aXZlYml0cyA9XG4gICAgaWYgTmF0aXZlaW50LnNpemUgPSAzMlxuICAgIHRoZW4gZnVuIHMgLT4gTmF0aXZlaW50Lm9mX2ludDMyIChiaXRzMzIgcylcbiAgICBlbHNlIGZ1biBzIC0+IEludDY0LnRvX25hdGl2ZWludCAoYml0czY0IHMpXG5cbiAgKCogUmV0dXJuIGEgW25hdGl2ZWludF0gYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtib3VuZF0gKGV4Y2x1ZGVkKS4gKilcbiAgbGV0IG5hdGl2ZWludCA9XG4gICAgaWYgTmF0aXZlaW50LnNpemUgPSAzMlxuICAgIHRoZW4gZnVuIHMgYm91bmQgLT4gTmF0aXZlaW50Lm9mX2ludDMyIChpbnQzMiBzIChOYXRpdmVpbnQudG9faW50MzIgYm91bmQpKVxuICAgIGVsc2UgZnVuIHMgYm91bmQgLT4gSW50NjQudG9fbmF0aXZlaW50IChpbnQ2NCBzIChJbnQ2NC5vZl9uYXRpdmVpbnQgYm91bmQpKVxuXG4gICgqIFJldHVybiBhIFtuYXRpdmVpbnRdIGJldHdlZW4gW21pbl0gKGluY2x1ZGVkKSBhbmQgW21heF0gKGluY2x1ZGVkKS4gKilcbiAgbGV0IG5hdGl2ZWludF9pbl9yYW5nZSA9XG4gICAgaWYgTmF0aXZlaW50LnNpemUgPSAzMlxuICAgIHRoZW4gZnVuIHMgfm1pbiB+bWF4IC0+XG4gICAgICBOYXRpdmVpbnQub2ZfaW50MzIgKGludDMyX2luX3JhbmdlIHNcbiAgICAgICAgfm1pbjooTmF0aXZlaW50LnRvX2ludDMyIG1pbikgfm1heDooTmF0aXZlaW50LnRvX2ludDMyIG1heCkpXG4gICAgZWxzZSBmdW4gcyB+bWluIH5tYXggLT5cbiAgICAgIEludDY0LnRvX25hdGl2ZWludCAoaW50NjRfaW5fcmFuZ2Ugc1xuICAgICAgICB+bWluOihJbnQ2NC5vZl9uYXRpdmVpbnQgbWluKSB+bWF4OihJbnQ2NC5vZl9uYXRpdmVpbnQgbWF4KSlcblxuICAoKiBSZXR1cm4gYSBmbG9hdCAwIDwgeCA8IDEgdW5pZm9ybWx5IGRpc3RyaWJ1dGVkIGFtb25nIHRoZVxuICAgICBtdWx0aXBsZXMgb2YgMl4tNTMgKilcbiAgbGV0IHJlYyByYXdmbG9hdCBzID1cbiAgICBsZXQgYiA9IG5leHQgcyBpblxuICAgIGxldCBuID0gSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCBiIDExIGluXG4gICAgaWYgbiA8PiAwTCB0aGVuIEludDY0LnRvX2Zsb2F0IG4gKi4gMHgxLnAtNTMgZWxzZSByYXdmbG9hdCBzXG5cbiAgKCogUmV0dXJuIGEgZmxvYXQgYmV0d2VlbiAwIGFuZCBbYm91bmRdICopXG4gIGxldCBmbG9hdCBzIGJvdW5kID0gcmF3ZmxvYXQgcyAqLiBib3VuZFxuXG4gICgqIFJldHVybiBhIHJhbmRvbSBCb29sZWFuICopXG4gIGxldCBib29sIHMgPSBuZXh0IHMgPCAwTFxuXG4gICgqIFNwbGl0IGEgbmV3IFBSTkcgb2ZmIHRoZSBnaXZlbiBQUk5HICopXG4gIGxldCBzcGxpdCBzID1cbiAgICBsZXQgaTEgPSBiaXRzNjQgcyBpbiBsZXQgaTIgPSBiaXRzNjQgcyBpblxuICAgIGxldCBpMyA9IGJpdHM2NCBzIGluIGxldCBpNCA9IGJpdHM2NCBzIGluXG4gICAgbWsgaTEgaTIgaTMgaTRcbmVuZFxuXG5sZXQgbWtfZGVmYXVsdCAoKSA9XG4gICgqIFRoaXMgaXMgdGhlIHN0YXRlIG9idGFpbmVkIHdpdGggW1N0YXRlLm1ha2UgW3wgMzE0MTU5MjY1IHxdXS4gKilcbiAgU3RhdGUubWsgKC02MTk2ODc0Mjg5NTY3NzA1MDk3TClcbiAgICAgICAgICAgNTg2NTczMjQ5ODMzNzEzMTg5TFxuICAgICAgICAgICAoLTg1OTEyNjg4MDM4NjUwNDM0MDdMKVxuICAgICAgICAgICA2Mzg4NjEzNTk1ODQ5NzcyMDQ0TFxuXG5sZXQgcmFuZG9tX2tleSA9XG4gIERvbWFpbi5ETFMubmV3X2tleSB+c3BsaXRfZnJvbV9wYXJlbnQ6U3RhdGUuc3BsaXQgbWtfZGVmYXVsdFxuXG5sZXQgYml0cyAoKSA9IFN0YXRlLmJpdHMgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpXG5sZXQgaW50IGJvdW5kID0gU3RhdGUuaW50IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBib3VuZFxubGV0IGZ1bGxfaW50IGJvdW5kID0gU3RhdGUuZnVsbF9pbnQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIGJvdW5kXG5sZXQgaW50X2luX3JhbmdlIH5taW4gfm1heCA9XG4gIFN0YXRlLmludF9pbl9yYW5nZSAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgfm1pbiB+bWF4XG5sZXQgaW50MzIgYm91bmQgPSBTdGF0ZS5pbnQzMiAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgYm91bmRcbmxldCBpbnQzMl9pbl9yYW5nZSB+bWluIH5tYXggPVxuICBTdGF0ZS5pbnQzMl9pbl9yYW5nZSAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgfm1pbiB+bWF4XG5sZXQgbmF0aXZlaW50IGJvdW5kID0gU3RhdGUubmF0aXZlaW50IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBib3VuZFxubGV0IG5hdGl2ZWludF9pbl9yYW5nZSB+bWluIH5tYXggPVxuICBTdGF0ZS5uYXRpdmVpbnRfaW5fcmFuZ2UgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIH5taW4gfm1heFxubGV0IGludDY0IGJvdW5kID0gU3RhdGUuaW50NjQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIGJvdW5kXG5sZXQgaW50NjRfaW5fcmFuZ2Ugfm1pbiB+bWF4ID1cbiAgU3RhdGUuaW50NjRfaW5fcmFuZ2UgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIH5taW4gfm1heFxubGV0IGZsb2F0IHNjYWxlID0gU3RhdGUuZmxvYXQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIHNjYWxlXG5sZXQgYm9vbCAoKSA9IFN0YXRlLmJvb2wgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpXG5sZXQgYml0czMyICgpID0gU3RhdGUuYml0czMyIChEb21haW4uRExTLmdldCByYW5kb21fa2V5KVxubGV0IGJpdHM2NCAoKSA9IFN0YXRlLmJpdHM2NCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcbmxldCBuYXRpdmViaXRzICgpID0gU3RhdGUubmF0aXZlYml0cyAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcblxubGV0IGZ1bGxfaW5pdCBzZWVkID0gU3RhdGUucmVpbml0IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBzZWVkXG5sZXQgaW5pdCBzZWVkID0gZnVsbF9pbml0IFt8IHNlZWQgfF1cbmxldCBzZWxmX2luaXQgKCkgPSBmdWxsX2luaXQgKHJhbmRvbV9zZWVkKCkpXG5cbigqIFNwbGl0dGluZyAqKVxuXG5sZXQgc3BsaXQgKCkgPSBTdGF0ZS5zcGxpdCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcblxuKCogTWFuaXB1bGF0aW5nIHRoZSBjdXJyZW50IHN0YXRlLiAqKVxuXG5sZXQgZ2V0X3N0YXRlICgpID0gU3RhdGUuY29weSAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcbmxldCBzZXRfc3RhdGUgcyA9IFN0YXRlLmFzc2lnbiAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgc1xuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2JhX2JsaXQiLCJjYW1sX2JhX3NldF8xIiwiY2FtbF9ieXRlc19zZXQiLCJjYW1sX2NyZWF0ZV9ieXRlcyIsImNhbWxfZ3JlYXRlcnRoYW4iLCJjYW1sX2ludDY0X2FkZCIsImNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpIiwiY2FtbF9pbnQ2NF9vZl9pbnQzMiIsImNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZSIsImNhbWxfaW50NjRfc3ViIiwiY2FtbF9pbnQ2NF90b19pbnQzMiIsImNhbWxfbGVzc2VxdWFsIiwiY2FtbF9sZXNzdGhhbiIsImNhbWxfbHhtX25leHQiLCJjYW1sX21vZCIsImNhbWxfbm90ZXF1YWwiLCJjYW1sX3N5c19yYW5kb21fc2VlZCIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJjYW1sX2NhbGwzIiwiYTIiLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYl9Eb21haW4iLCJTdGRsaWJfU3lzIiwiU3RkbGliX0ludDMyIiwiU3RkbGliX0ludDY0IiwiU3RkbGliIiwiU3RkbGliX0J5dGVzIiwiU3RkbGliX0RpZ2VzdCIsIlN0ZGxpYl9TdHJpbmciLCJTdGRsaWJfQmlnYXJyYXkiLCJTdGRsaWJfTmF0aXZlaW50IiwiY3JlYXRlIiwicGFyYW0iLCJzZXQiLCJzIiwiaTEiLCJpMiIsImkzIiwiaTQiLCJtayIsInNlcmlhbGl6YXRpb25fcHJlZml4IiwidG9fYmluYXJ5X3N0cmluZyIsImJ1ZiIsImkiLCJvZl9iaW5hcnlfc3RyaW5nIiwiY29weSIsInNyYyIsImRzdCIsInJlaW5pdCIsInNlZWQiLCJuIiwiYiIsImQxIiwiZDIiLCJtYWtlIiwibWFrZV9zZWxmX2luaXQiLCJiaXRzIiwiaW50X2F1eCIsIm1hc2siLCJyIiwidiIsIm1heF9pbnQzMSIsImludCIsImJvdW5kIiwibWF4X2ludDMyIiwiZnVsbF9pbnQiLCJpbnRfaW5fcmFuZ2VfYXV4IiwibWluIiwibWF4IiwibmJpdHMiLCJzcGFuIiwiZHJvcCIsImludF9pbl9yYW5nZSIsImJpdHMzMiIsImludDMyYXV4IiwiaW50MzIiLCJpbnQzMl9pbl9yYW5nZSIsImludDY0YXV4IiwiaW50NjQiLCJpbnQ2NF9pbl9yYW5nZSIsIm5hdGl2ZWJpdHMiLCJuYXRpdmVpbnQiLCJuYXRpdmVpbnRfaW5fcmFuZ2UiLCJmbG9hdCIsImJvb2wiLCJzcGxpdCIsIm1rX2RlZmF1bHQiLCJyYW5kb21fa2V5Iiwic2NhbGUiLCJiaXRzNjQiLCJmdWxsX2luaXQiLCJpbml0Iiwic2VsZl9pbml0IiwiZ2V0X3N0YXRlIiwic2V0X3N0YXRlIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsNkJBQUE7QUFBQSxJQUFBQyxzQkFBQTtBQUFBLElBQUFDLGlDQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxzQkFBQTtBQUFBLElB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O0FBQUEsSUF0R3pCLHVCQXNHb0Q7QUFBQTtBQUFBLFlBQUE4QyxhQUFBaEQ7QUFBQUEsSUFDbkIsT0FBMkIsV0FBM0IsNkNBQTJCO0FBQUE7QUFBQSxZQUFBMEQsVUFBQXpDO0FBQUFBLElBRTlCLE9BQTJCLE9BQTNCLG1EQUFnQztBQUFBO0FBQUEsWUFBQTBDLEtBQUExQyxNQUNsRCwyQkFBb0I7QUFBQSxZQUFBMkMsVUFBQTVELE9BQ1AsT0FBZSxVQUFmLHdCQUFlO0FBQUEsWUFBQXFELFFBQUFyRDtBQUFBQSxJQUlqQixPQUEyQixNQUEzQiw2Q0FBMkI7QUFBQTtBQUFBLFlBQUE2RCxVQUFBN0Q7QUFBQUEsSUFJeEIsT0FBMkIsS0FBM0IsNkNBQTJCO0FBQUE7QUFBQSxZQUFBOEQsVUFBQWhEO0FBQUFBLFFBQUFDLE1BQzFCO0FBQUEsSUFoUzNCLDZCQWdTd0Q7QUFBQTtBQUFBLEdBakNFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVEcFY5RCIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjI1OTAyLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvaGFzaHRibC5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogSGFzaCB0YWJsZXMgKilcblxuKCogV2UgZG8gZHluYW1pYyBoYXNoaW5nLCBhbmQgcmVzaXplIHRoZSB0YWJsZSBhbmQgcmVoYXNoIHRoZSBlbGVtZW50c1xuICAgd2hlbiB0aGUgbG9hZCBmYWN0b3IgYmVjb21lcyB0b28gaGlnaC4gKilcblxudHlwZSAoJ2EsICdiKSB0ID1cbiAgeyBtdXRhYmxlIHNpemU6IGludDsgICAgICAgICAgICAgICAgICAgICAgICAoKiBudW1iZXIgb2YgZW50cmllcyAqKVxuICAgIG11dGFibGUgZGF0YTogKCdhLCAnYikgYnVja2V0bGlzdCBhcnJheTsgICgqIHRoZSBidWNrZXRzICopXG4gICAgc2VlZDogaW50OyAgICAgICAgICAgICAgICAgICAgICAgICgqIGZvciByYW5kb21pemF0aW9uICopXG4gICAgbXV0YWJsZSBpbml0aWFsX3NpemU6IGludDsgICAgICAgICAgICAgICAgKCogaW5pdGlhbCBhcnJheSBzaXplICopXG4gIH1cblxuYW5kICgnYSwgJ2IpIGJ1Y2tldGxpc3QgPVxuICAgIEVtcHR5XG4gIHwgQ29ucyBvZiB7IG11dGFibGUga2V5OiAnYTtcbiAgICAgICAgICAgICAgbXV0YWJsZSBkYXRhOiAnYjtcbiAgICAgICAgICAgICAgbXV0YWJsZSBuZXh0OiAoJ2EsICdiKSBidWNrZXRsaXN0IH1cblxuKCogVGhlIHNpZ24gb2YgaW5pdGlhbF9zaXplIGVuY29kZXMgdGhlIGZhY3QgdGhhdCBhIHRyYXZlcnNhbCBpc1xuICAgb25nb2luZyBvciBub3QuXG5cbiAgIFRoaXMgZGlzYWJsZXMgdGhlIGVmZmljaWVudCBpbiBwbGFjZSBpbXBsZW1lbnRhdGlvbiBvZiByZXNpemluZy5cbiopXG5cbmxldCBvbmdvaW5nX3RyYXZlcnNhbCBoID1cbiAgT2JqLnNpemUgKE9iai5yZXByIGgpIDwgNCAoKiBjb21wYXRpYmlsaXR5IHdpdGggb2xkIGhhc2ggdGFibGVzICopXG4gIHx8IGguaW5pdGlhbF9zaXplIDwgMFxuXG5sZXQgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoID1cbiAgaC5pbml0aWFsX3NpemUgPC0gLSBoLmluaXRpYWxfc2l6ZVxuXG4oKiBUbyBwaWNrIHJhbmRvbSBzZWVkcyBpZiByZXF1ZXN0ZWQgKilcblxubGV0IHJhbmRvbWl6ZWRfZGVmYXVsdCA9XG4gIGxldCBwYXJhbXMgPVxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiT0NBTUxSVU5QQVJBTVwiIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJDQU1MUlVOUEFSQU1cIiB3aXRoIE5vdF9mb3VuZCAtPiBcIlwiIGluXG4gIFN0cmluZy5jb250YWlucyBwYXJhbXMgJ1InXG5cbmxldCByYW5kb21pemVkID0gQXRvbWljLm1ha2UgcmFuZG9taXplZF9kZWZhdWx0XG5cbmxldCByYW5kb21pemUgKCkgPSBBdG9taWMuc2V0IHJhbmRvbWl6ZWQgdHJ1ZVxubGV0IGlzX3JhbmRvbWl6ZWQgKCkgPSBBdG9taWMuZ2V0IHJhbmRvbWl6ZWRcblxubGV0IHBybmdfa2V5ID0gRG9tYWluLkRMUy5uZXdfa2V5IFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdFxuXG4oKiBGdW5jdGlvbnMgd2hpY2ggYXBwZWFyIGJlZm9yZSB0aGUgZnVuY3RvcmlhbCBpbnRlcmZhY2UgbXVzdCBlaXRoZXIgYmVcbiAgIGluZGVwZW5kZW50IG9mIHRoZSBoYXNoIGZ1bmN0aW9uIG9yIHRha2UgaXQgYXMgYSBwYXJhbWV0ZXIgKHNlZSAjMjIwMiBhbmRcbiAgIGNvZGUgYmVsb3cgdGhlIGZ1bmN0b3IgZGVmaW5pdGlvbnMuICopXG5cbigqIENyZWF0aW5nIGEgZnJlc2gsIGVtcHR5IHRhYmxlICopXG5cbmxldCByZWMgcG93ZXJfMl9hYm92ZSB4IG4gPVxuICBpZiB4ID49IG4gdGhlbiB4XG4gIGVsc2UgaWYgeCAqIDIgPiBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuIHhcbiAgZWxzZSBwb3dlcl8yX2Fib3ZlICh4ICogMikgblxuXG5sZXQgY3JlYXRlID8ocmFuZG9tID0gQXRvbWljLmdldCByYW5kb21pemVkKSBpbml0aWFsX3NpemUgPVxuICBsZXQgcyA9IHBvd2VyXzJfYWJvdmUgMTYgaW5pdGlhbF9zaXplIGluXG4gIGxldCBzZWVkID1cbiAgICBpZiByYW5kb20gdGhlbiBSYW5kb20uU3RhdGUuYml0cyAoRG9tYWluLkRMUy5nZXQgcHJuZ19rZXkpIGVsc2UgMFxuICBpblxuICB7IGluaXRpYWxfc2l6ZSA9IHM7IHNpemUgPSAwOyBzZWVkID0gc2VlZDsgZGF0YSA9IEFycmF5Lm1ha2UgcyBFbXB0eSB9XG5cbmxldCBjbGVhciBoID1cbiAgaWYgaC5zaXplID4gMCB0aGVuIGJlZ2luXG4gICAgaC5zaXplIDwtIDA7XG4gICAgQXJyYXkuZmlsbCBoLmRhdGEgMCAoQXJyYXkubGVuZ3RoIGguZGF0YSkgRW1wdHlcbiAgZW5kXG5cbmxldCByZXNldCBoID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBoLmRhdGEgaW5cbiAgaWYgT2JqLnNpemUgKE9iai5yZXByIGgpIDwgNCAoKiBjb21wYXRpYmlsaXR5IHdpdGggb2xkIGhhc2ggdGFibGVzICopXG4gICAgfHwgbGVuID0gYWJzIGguaW5pdGlhbF9zaXplIHRoZW5cbiAgICBjbGVhciBoXG4gIGVsc2UgYmVnaW5cbiAgICBoLnNpemUgPC0gMDtcbiAgICBoLmRhdGEgPC0gQXJyYXkubWFrZSAoYWJzIGguaW5pdGlhbF9zaXplKSBFbXB0eVxuICBlbmRcblxubGV0IGNvcHlfYnVja2V0bGlzdCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gRW1wdHlcbiAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgcHJlYyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gKClcbiAgICAgICAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgICAgICBsZXQgciA9IENvbnMge2tleTsgZGF0YTsgbmV4dH0gaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgIHwgQ29ucyBwcmVjIC0+ICBwcmVjLm5leHQgPC0gclxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgbG9vcCByIG5leHRcbiAgICAgIGluXG4gICAgICBsZXQgciA9IENvbnMge2tleTsgZGF0YTsgbmV4dH0gaW5cbiAgICAgIGxvb3AgciBuZXh0O1xuICAgICAgclxuXG5sZXQgY29weSBoID0geyBoIHdpdGggZGF0YSA9IEFycmF5Lm1hcCBjb3B5X2J1Y2tldGxpc3QgaC5kYXRhIH1cblxubGV0IGxlbmd0aCBoID0gaC5zaXplXG5cbmxldCBpbnNlcnRfYWxsX2J1Y2tldHMgaW5kZXhmdW4gaW5wbGFjZSBvZGF0YSBuZGF0YSA9XG4gIGxldCBuc2l6ZSA9IEFycmF5Lmxlbmd0aCBuZGF0YSBpblxuICBsZXQgbmRhdGFfdGFpbCA9IEFycmF5Lm1ha2UgbnNpemUgRW1wdHkgaW5cbiAgbGV0IHJlYyBpbnNlcnRfYnVja2V0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+ICgpXG4gICAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IGFzIGNlbGwgLT5cbiAgICAgICAgbGV0IGNlbGwgPVxuICAgICAgICAgIGlmIGlucGxhY2UgdGhlbiBjZWxsXG4gICAgICAgICAgZWxzZSBDb25zIHtrZXk7IGRhdGE7IG5leHQgPSBFbXB0eX1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5pZHggPSBpbmRleGZ1biBrZXkgaW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggbmRhdGFfdGFpbC4obmlkeCkgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IG5kYXRhLihuaWR4KSA8LSBjZWxsO1xuICAgICAgICB8IENvbnMgdGFpbCAtPiB0YWlsLm5leHQgPC0gY2VsbDtcbiAgICAgICAgZW5kO1xuICAgICAgICBuZGF0YV90YWlsLihuaWR4KSA8LSBjZWxsO1xuICAgICAgICBpbnNlcnRfYnVja2V0IG5leHRcbiAgaW5cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBvZGF0YSAtIDEgZG9cbiAgICBpbnNlcnRfYnVja2V0IG9kYXRhLihpKVxuICBkb25lO1xuICBpZiBpbnBsYWNlIHRoZW5cbiAgICBmb3IgaSA9IDAgdG8gbnNpemUgLSAxIGRvXG4gICAgICBtYXRjaCBuZGF0YV90YWlsLihpKSB3aXRoXG4gICAgICB8IEVtcHR5IC0+ICgpXG4gICAgICB8IENvbnMgdGFpbCAtPiB0YWlsLm5leHQgPC0gRW1wdHlcbiAgICBkb25lXG5cbmxldCByZXNpemUgaW5kZXhmdW4gaCA9XG4gIGxldCBvZGF0YSA9IGguZGF0YSBpblxuICBsZXQgb3NpemUgPSBBcnJheS5sZW5ndGggb2RhdGEgaW5cbiAgbGV0IG5zaXplID0gb3NpemUgKiAyIGluXG4gIGlmIG5zaXplIDwgU3lzLm1heF9hcnJheV9sZW5ndGggdGhlbiBiZWdpblxuICAgIGxldCBuZGF0YSA9IEFycmF5Lm1ha2UgbnNpemUgRW1wdHkgaW5cbiAgICBsZXQgaW5wbGFjZSA9IG5vdCAob25nb2luZ190cmF2ZXJzYWwgaCkgaW5cbiAgICBoLmRhdGEgPC0gbmRhdGE7ICAgICAgICAgICgqIHNvIHRoYXQgaW5kZXhmdW4gc2VlcyB0aGUgbmV3IGJ1Y2tldCBjb3VudCAqKVxuICAgIGluc2VydF9hbGxfYnVja2V0cyAoaW5kZXhmdW4gaCkgaW5wbGFjZSBvZGF0YSBuZGF0YVxuICBlbmRcblxubGV0IGl0ZXIgZiBoID1cbiAgbGV0IHJlYyBkb19idWNrZXQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT5cbiAgICAgICAgKClcbiAgICB8IENvbnN7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICBmIGtleSBkYXRhOyBkb19idWNrZXQgbmV4dCBpblxuICBsZXQgb2xkX3RyYXYgPSBvbmdvaW5nX3RyYXZlcnNhbCBoIGluXG4gIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgdHJ5XG4gICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICBkb19idWNrZXQgZC4oaSlcbiAgICBkb25lO1xuICAgIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgd2l0aCBleG4gd2hlbiBub3Qgb2xkX3RyYXYgLT5cbiAgICBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgcmFpc2UgZXhuXG5cbmxldCByZWMgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBwcmVjID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gRW1wdHlcbiAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBFbXB0eVxuICAgICAgZW5kXG4gIHwgKENvbnMgKHtrZXk7IGRhdGE7IG5leHR9IGFzIGMpKSBhcyBzbG90IC0+XG4gICAgICBiZWdpbiBtYXRjaCBmIGtleSBkYXRhIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICAgIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgcHJlYyBuZXh0XG4gICAgICB8IFNvbWUgZGF0YSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBzbG90XG4gICAgICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIHNsb3RcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICAgYy5kYXRhIDwtIGRhdGE7XG4gICAgICAgICAgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBzbG90IG5leHRcbiAgICAgIGVuZFxuXG5sZXQgZmlsdGVyX21hcF9pbnBsYWNlIGYgaCA9XG4gIGxldCBkID0gaC5kYXRhIGluXG4gIGxldCBvbGRfdHJhdiA9IG9uZ29pbmdfdHJhdmVyc2FsIGggaW5cbiAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB0cnlcbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIEVtcHR5IGguZGF0YS4oaSlcbiAgICBkb25lO1xuICAgIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaFxuICB3aXRoIGV4biB3aGVuIG5vdCBvbGRfdHJhdiAtPlxuICAgIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICByYWlzZSBleG5cblxubGV0IGZvbGQgZiBoIGluaXQgPVxuICBsZXQgcmVjIGRvX2J1Y2tldCBiIGFjY3UgPVxuICAgIG1hdGNoIGIgd2l0aFxuICAgICAgRW1wdHkgLT5cbiAgICAgICAgYWNjdVxuICAgIHwgQ29uc3trZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgIGRvX2J1Y2tldCBuZXh0IChmIGtleSBkYXRhIGFjY3UpIGluXG4gIGxldCBvbGRfdHJhdiA9IG9uZ29pbmdfdHJhdmVyc2FsIGggaW5cbiAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB0cnlcbiAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgIGxldCBhY2N1ID0gcmVmIGluaXQgaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICBhY2N1IDo9IGRvX2J1Y2tldCBkLihpKSAhYWNjdVxuICAgIGRvbmU7XG4gICAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgICFhY2N1XG4gIHdpdGggZXhuIHdoZW4gbm90IG9sZF90cmF2IC0+XG4gICAgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgIHJhaXNlIGV4blxuXG50eXBlIHN0YXRpc3RpY3MgPSB7XG4gIG51bV9iaW5kaW5nczogaW50O1xuICBudW1fYnVja2V0czogaW50O1xuICBtYXhfYnVja2V0X2xlbmd0aDogaW50O1xuICBidWNrZXRfaGlzdG9ncmFtOiBpbnQgYXJyYXlcbn1cblxubGV0IHJlYyBidWNrZXRfbGVuZ3RoIGFjY3UgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFjY3VcbiAgfCBDb25ze25leHR9IC0+IGJ1Y2tldF9sZW5ndGggKGFjY3UgKyAxKSBuZXh0XG5cbmxldCBzdGF0cyBoID1cbiAgbGV0IG1ibCA9XG4gICAgQXJyYXkuZm9sZF9sZWZ0IChmdW4gbSBiIC0+IEludC5tYXggbSAoYnVja2V0X2xlbmd0aCAwIGIpKSAwIGguZGF0YSBpblxuICBsZXQgaGlzdG8gPSBBcnJheS5tYWtlIChtYmwgKyAxKSAwIGluXG4gIEFycmF5Lml0ZXJcbiAgICAoZnVuIGIgLT5cbiAgICAgIGxldCBsID0gYnVja2V0X2xlbmd0aCAwIGIgaW5cbiAgICAgIGhpc3RvLihsKSA8LSBoaXN0by4obCkgKyAxKVxuICAgIGguZGF0YTtcbiAgeyBudW1fYmluZGluZ3MgPSBoLnNpemU7XG4gICAgbnVtX2J1Y2tldHMgPSBBcnJheS5sZW5ndGggaC5kYXRhO1xuICAgIG1heF9idWNrZXRfbGVuZ3RoID0gbWJsO1xuICAgIGJ1Y2tldF9oaXN0b2dyYW0gPSBoaXN0byB9XG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgdGJsID1cbiAgKCogY2FwdHVyZSBjdXJyZW50IGFycmF5LCBzbyB0aGF0IGV2ZW4gaWYgdGhlIHRhYmxlIGlzIHJlc2l6ZWQgd2VcbiAgICAga2VlcCBpdGVyYXRpbmcgb24gdGhlIHNhbWUgYXJyYXkgKilcbiAgbGV0IHRibF9kYXRhID0gdGJsLmRhdGEgaW5cbiAgKCogc3RhdGU6IGluZGV4ICogbmV4dCBidWNrZXQgdG8gdHJhdmVyc2UgKilcbiAgbGV0IHJlYyBhdXggaSBidWNrICgpID0gbWF0Y2ggYnVjayB3aXRoXG4gICAgfCBFbXB0eSAtPlxuICAgICAgICBpZiBpID0gQXJyYXkubGVuZ3RoIHRibF9kYXRhXG4gICAgICAgIHRoZW4gU2VxLk5pbFxuICAgICAgICBlbHNlIGF1eChpKzEpIHRibF9kYXRhLihpKSAoKVxuICAgIHwgQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICBTZXEuQ29ucyAoKGtleSwgZGF0YSksIGF1eCBpIG5leHQpXG4gIGluXG4gIGF1eCAwIEVtcHR5XG5cbmxldCB0b19zZXFfa2V5cyBtID0gU2VxLm1hcCBmc3QgKHRvX3NlcSBtKVxuXG5sZXQgdG9fc2VxX3ZhbHVlcyBtID0gU2VxLm1hcCBzbmQgKHRvX3NlcSBtKVxuXG4oKiBGdW5jdG9yaWFsIGludGVyZmFjZSAqKVxuXG5tb2R1bGUgdHlwZSBIYXNoZWRUeXBlID1cbiAgc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBoYXNoOiB0IC0+IGludFxuICBlbmRcblxubW9kdWxlIHR5cGUgU2VlZGVkSGFzaGVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgc2VlZGVkX2hhc2g6IGludCAtPiB0IC0+IGludFxuICBlbmRcblxubW9kdWxlIHR5cGUgUyA9XG4gIHNpZ1xuICAgIHR5cGUga2V5XG4gICAgdHlwZSAhJ2EgdFxuICAgIHZhbCBjcmVhdGU6IGludCAtPiAnYSB0XG4gICAgdmFsIGNsZWFyIDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIHJlc2V0IDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIGNvcHk6ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBhZGQ6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgcmVtb3ZlOiAnYSB0IC0+IGtleSAtPiB1bml0XG4gICAgdmFsIGZpbmQ6ICdhIHQgLT4ga2V5IC0+ICdhXG4gICAgdmFsIGZpbmRfb3B0OiAnYSB0IC0+IGtleSAtPiAnYSBvcHRpb25cbiAgICB2YWwgZmluZF9hbGw6ICdhIHQgLT4ga2V5IC0+ICdhIGxpc3RcbiAgICB2YWwgcmVwbGFjZSA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgbWVtIDogJ2EgdCAtPiBrZXkgLT4gYm9vbFxuICAgIHZhbCBpdGVyOiAoa2V5IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmaWx0ZXJfbWFwX2lucGxhY2U6IChrZXkgLT4gJ2EgLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZm9sZDogKGtleSAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuICAgIHZhbCBsZW5ndGg6ICdhIHQgLT4gaW50XG4gICAgdmFsIHN0YXRzOiAnYSB0IC0+IHN0YXRpc3RpY3NcbiAgICB2YWwgdG9fc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3NlcV9rZXlzIDogXyB0IC0+IGtleSBTZXEudFxuICAgIHZhbCB0b19zZXFfdmFsdWVzIDogJ2EgdCAtPiAnYSBTZXEudFxuICAgIHZhbCBhZGRfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgICB2YWwgcmVwbGFjZV9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFNlZWRlZFMgPVxuICBzaWdcbiAgICB0eXBlIGtleVxuICAgIHR5cGUgISdhIHRcbiAgICB2YWwgY3JlYXRlIDogP3JhbmRvbTpib29sIC0+IGludCAtPiAnYSB0XG4gICAgdmFsIGNsZWFyIDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIHJlc2V0IDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIGNvcHkgOiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgYWRkIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCByZW1vdmUgOiAnYSB0IC0+IGtleSAtPiB1bml0XG4gICAgdmFsIGZpbmQgOiAnYSB0IC0+IGtleSAtPiAnYVxuICAgIHZhbCBmaW5kX29wdDogJ2EgdCAtPiBrZXkgLT4gJ2Egb3B0aW9uXG4gICAgdmFsIGZpbmRfYWxsIDogJ2EgdCAtPiBrZXkgLT4gJ2EgbGlzdFxuICAgIHZhbCByZXBsYWNlIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCBtZW0gOiAnYSB0IC0+IGtleSAtPiBib29sXG4gICAgdmFsIGl0ZXIgOiAoa2V5IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmaWx0ZXJfbWFwX2lucGxhY2U6IChrZXkgLT4gJ2EgLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZm9sZCA6IChrZXkgLT4gJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgLT4gJ2JcbiAgICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcbiAgICB2YWwgc3RhdHM6ICdhIHQgLT4gc3RhdGlzdGljc1xuICAgIHZhbCB0b19zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX2tleXMgOiBfIHQgLT4ga2V5IFNlcS50XG4gICAgdmFsIHRvX3NlcV92YWx1ZXMgOiAnYSB0IC0+ICdhIFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCByZXBsYWNlX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIG9mX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdFxuICBlbmRcblxubW9kdWxlIE1ha2VTZWVkZWQoSDogU2VlZGVkSGFzaGVkVHlwZSk6IChTZWVkZWRTIHdpdGggdHlwZSBrZXkgPSBILnQpID1cbiAgc3RydWN0XG4gICAgdHlwZSBrZXkgPSBILnRcbiAgICB0eXBlICdhIGhhc2h0YmwgPSAoa2V5LCAnYSkgdFxuICAgIHR5cGUgJ2EgdCA9ICdhIGhhc2h0YmxcbiAgICBsZXQgY3JlYXRlID0gY3JlYXRlXG4gICAgbGV0IGNsZWFyID0gY2xlYXJcbiAgICBsZXQgcmVzZXQgPSByZXNldFxuICAgIGxldCBjb3B5ID0gY29weVxuXG4gICAgbGV0IGtleV9pbmRleCBoIGtleSA9XG4gICAgICAoSC5zZWVkZWRfaGFzaCBoLnNlZWQga2V5KSBsYW5kIChBcnJheS5sZW5ndGggaC5kYXRhIC0gMSlcblxuICAgIGxldCBhZGQgaCBrZXkgZGF0YSA9XG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICAgICAgbGV0IGJ1Y2tldCA9IENvbnN7a2V5OyBkYXRhOyBuZXh0PWguZGF0YS4oaSl9IGluXG4gICAgICBoLmRhdGEuKGkpIDwtIGJ1Y2tldDtcbiAgICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuXG4gICAgbGV0IHJlYyByZW1vdmVfYnVja2V0IGggaSBrZXkgcHJlYyA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgKClcbiAgICAgIHwgKENvbnMge2tleT1rOyBuZXh0fSkgYXMgYyAtPlxuICAgICAgICAgIGlmIEguZXF1YWwgayBrZXlcbiAgICAgICAgICB0aGVuIGJlZ2luXG4gICAgICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgICAgIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIG5leHRcbiAgICAgICAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBuZXh0XG4gICAgICAgICAgZW5kXG4gICAgICAgICAgZWxzZSByZW1vdmVfYnVja2V0IGggaSBrZXkgYyBuZXh0XG5cbiAgICBsZXQgcmVtb3ZlIGgga2V5ID1cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gICAgICByZW1vdmVfYnVja2V0IGggaSBrZXkgRW1wdHkgaC5kYXRhLihpKVxuXG4gICAgbGV0IHJlYyBmaW5kX3JlYyBrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsgdGhlbiBkYXRhIGVsc2UgZmluZF9yZWMga2V5IG5leHRcblxuICAgIGxldCBmaW5kIGgga2V5ID1cbiAgICAgIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMSB0aGVuIGQxIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMiB0aGVuIGQyIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazMgdGhlbiBkMyBlbHNlIGZpbmRfcmVjIGtleSBuZXh0M1xuXG4gICAgbGV0IHJlYyBmaW5kX3JlY19vcHQga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgayB0aGVuIFNvbWUgZGF0YSBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dFxuXG4gICAgbGV0IGZpbmRfb3B0IGgga2V5ID1cbiAgICAgIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazEgdGhlbiBTb21lIGQxIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazIgdGhlbiBTb21lIGQyIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGszIHRoZW4gU29tZSBkMyBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dDNcblxuICAgIGxldCBmaW5kX2FsbCBoIGtleSA9XG4gICAgICBsZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBmaW5kX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgW11cbiAgICAgIHwgQ29uc3trZXk9azsgZGF0YT1kOyBuZXh0fSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwgayBrZXlcbiAgICAgICAgICB0aGVuIGQgOjogZmluZF9pbl9idWNrZXQgbmV4dFxuICAgICAgICAgIGVsc2UgZmluZF9pbl9idWNrZXQgbmV4dCBpblxuICAgICAgZmluZF9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpXG5cbiAgICBsZXQgcmVjIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICB0cnVlXG4gICAgICB8IENvbnMgKHtrZXk9azsgbmV4dH0gYXMgc2xvdCkgLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGsga2V5XG4gICAgICAgICAgdGhlbiAoc2xvdC5rZXkgPC0ga2V5OyBzbG90LmRhdGEgPC0gZGF0YTsgZmFsc2UpXG4gICAgICAgICAgZWxzZSByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBuZXh0XG5cbiAgICBsZXQgcmVwbGFjZSBoIGtleSBkYXRhID1cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gICAgICBsZXQgbCA9IGguZGF0YS4oaSkgaW5cbiAgICAgIGlmIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIGwgdGhlbiBiZWdpblxuICAgICAgICBoLmRhdGEuKGkpIDwtIENvbnN7a2V5OyBkYXRhOyBuZXh0PWx9O1xuICAgICAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICAgICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuICAgICAgZW5kXG5cbiAgICBsZXQgcmVjIG1lbV9pbl9idWNrZXQga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBDb25ze2tleT1rOyBuZXh0fSAtPlxuICAgICAgICAgIEguZXF1YWwgayBrZXkgfHwgbWVtX2luX2J1Y2tldCBrZXkgbmV4dFxuXG4gICAgbGV0IG1lbSBoIGtleSA9XG4gICAgICBtZW1faW5fYnVja2V0IGtleSBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxuICAgIGxldCBhZGRfc2VxIHRibCBpID1cbiAgICAgIFNlcS5pdGVyIChmdW4gKGssdikgLT4gYWRkIHRibCBrIHYpIGlcblxuICAgIGxldCByZXBsYWNlX3NlcSB0YmwgaSA9XG4gICAgICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IHJlcGxhY2UgdGJsIGsgdikgaVxuXG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG5cbiAgICBsZXQgaXRlciA9IGl0ZXJcbiAgICBsZXQgZmlsdGVyX21hcF9pbnBsYWNlID0gZmlsdGVyX21hcF9pbnBsYWNlXG4gICAgbGV0IGZvbGQgPSBmb2xkXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBzdGF0cyA9IHN0YXRzXG4gICAgbGV0IHRvX3NlcSA9IHRvX3NlcVxuICAgIGxldCB0b19zZXFfa2V5cyA9IHRvX3NlcV9rZXlzXG4gICAgbGV0IHRvX3NlcV92YWx1ZXMgPSB0b19zZXFfdmFsdWVzXG4gIGVuZFxuXG5tb2R1bGUgTWFrZShIOiBIYXNoZWRUeXBlKTogKFMgd2l0aCB0eXBlIGtleSA9IEgudCkgPVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VTZWVkZWQoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEgudFxuICAgICAgICBsZXQgZXF1YWwgPSBILmVxdWFsXG4gICAgICAgIGxldCBzZWVkZWRfaGFzaCAoX3NlZWQ6IGludCkgeCA9IEguaGFzaCB4XG4gICAgICBlbmQpXG4gICAgbGV0IGNyZWF0ZSBzeiA9IGNyZWF0ZSB+cmFuZG9tOmZhbHNlIHN6XG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG4gIGVuZFxuXG4oKiBQb2x5bW9ycGhpYyBoYXNoIGZ1bmN0aW9uLWJhc2VkIHRhYmxlcyAqKVxuKCogQ29kZSBpbmNsdWRlZCBiZWxvdyB0aGUgZnVuY3RvcmlhbCBpbnRlcmZhY2UgdG8gZ3VhcmQgYWdhaW5zdCBhY2NpZGVudGFsXG4gICB1c2UgLSBzZWUgIzIyMDIgKilcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2hfcGFyYW0gOlxuICBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiBpbnQgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5cbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgMCB4XG5sZXQgaGFzaF9wYXJhbSBuMSBuMiB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gbjEgbjIgMCB4XG5sZXQgc2VlZGVkX2hhc2ggc2VlZCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIHNlZWQgeFxuXG5sZXQga2V5X2luZGV4IGgga2V5ID1cbiAgaWYgT2JqLnNpemUgKE9iai5yZXByIGgpID49IDRcbiAgdGhlbiAoc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIGguc2VlZCBrZXkpIGxhbmQgKEFycmF5Lmxlbmd0aCBoLmRhdGEgLSAxKVxuICBlbHNlIGludmFsaWRfYXJnIFwiSGFzaHRibDogdW5zdXBwb3J0ZWQgaGFzaCB0YWJsZSBmb3JtYXRcIlxuXG5sZXQgYWRkIGgga2V5IGRhdGEgPVxuICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICBsZXQgYnVja2V0ID0gQ29uc3trZXk7IGRhdGE7IG5leHQ9aC5kYXRhLihpKX0gaW5cbiAgaC5kYXRhLihpKSA8LSBidWNrZXQ7XG4gIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGtleV9pbmRleCBoXG5cbmxldCByZWMgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IHByZWMgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICAoKVxuICB8IChDb25zIHtrZXk9azsgbmV4dH0pIGFzIGMgLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrZXkgPSAwXG4gICAgICB0aGVuIGJlZ2luXG4gICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIG5leHRcbiAgICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIG5leHRcbiAgICAgIGVuZFxuICAgICAgZWxzZSByZW1vdmVfYnVja2V0IGggaSBrZXkgYyBuZXh0XG5cbmxldCByZW1vdmUgaCBrZXkgPVxuICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICByZW1vdmVfYnVja2V0IGggaSBrZXkgRW1wdHkgaC5kYXRhLihpKVxuXG5sZXQgcmVjIGZpbmRfcmVjIGtleSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrID0gMCB0aGVuIGRhdGEgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dFxuXG5sZXQgZmluZCBoIGtleSA9XG4gIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrMSA9IDAgdGhlbiBkMSBlbHNlXG4gICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMiA9IDAgdGhlbiBkMiBlbHNlXG4gICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgaWYgY29tcGFyZSBrZXkgazMgPSAwIHRoZW4gZDMgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dDNcblxubGV0IHJlYyBmaW5kX3JlY19vcHQga2V5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgTm9uZVxuICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrID0gMCB0aGVuIFNvbWUgZGF0YSBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dFxuXG5sZXQgZmluZF9vcHQgaCBrZXkgPVxuICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgIGlmIGNvbXBhcmUga2V5IGsxID0gMCB0aGVuIFNvbWUgZDEgZWxzZVxuICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGsyID0gMCB0aGVuIFNvbWUgZDIgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMyA9IDAgdGhlbiBTb21lIGQzIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0M1xuXG5sZXQgZmluZF9hbGwgaCBrZXkgPVxuICBsZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBmaW5kX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIFtdXG4gIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrZXkgPSAwXG4gICAgICB0aGVuIGRhdGEgOjogZmluZF9pbl9idWNrZXQgbmV4dFxuICAgICAgZWxzZSBmaW5kX2luX2J1Y2tldCBuZXh0IGluXG4gIGZpbmRfaW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG5sZXQgcmVjIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKHtrZXk9azsgbmV4dH0gYXMgc2xvdCkgLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrZXkgPSAwXG4gICAgICB0aGVuIChzbG90LmtleSA8LSBrZXk7IHNsb3QuZGF0YSA8LSBkYXRhOyBmYWxzZSlcbiAgICAgIGVsc2UgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbmV4dFxuXG5sZXQgcmVwbGFjZSBoIGtleSBkYXRhID1cbiAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgbGV0IGwgPSBoLmRhdGEuKGkpIGluXG4gIGlmIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIGwgdGhlbiBiZWdpblxuICAgIGguZGF0YS4oaSkgPC0gQ29uc3trZXk7IGRhdGE7IG5leHQ9bH07XG4gICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuICBlbmRcblxubGV0IHJlYyBtZW1faW5fYnVja2V0IGtleSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIGZhbHNlXG4gIHwgQ29uc3trZXk9azsgbmV4dH0gLT5cbiAgICAgIGNvbXBhcmUgayBrZXkgPSAwIHx8IG1lbV9pbl9idWNrZXQga2V5IG5leHRcblxubGV0IG1lbSBoIGtleSA9XG4gIG1lbV9pbl9idWNrZXQga2V5IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG5sZXQgYWRkX3NlcSB0YmwgaSA9XG4gIFNlcS5pdGVyIChmdW4gKGssdikgLT4gYWRkIHRibCBrIHYpIGlcblxubGV0IHJlcGxhY2Vfc2VxIHRibCBpID1cbiAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiByZXBsYWNlIHRibCBrIHYpIGlcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgdGJsXG5cbmxldCByZWJ1aWxkID8ocmFuZG9tID0gQXRvbWljLmdldCByYW5kb21pemVkKSBoID1cbiAgbGV0IHMgPSBwb3dlcl8yX2Fib3ZlIDE2IChBcnJheS5sZW5ndGggaC5kYXRhKSBpblxuICBsZXQgc2VlZCA9XG4gICAgaWYgcmFuZG9tIHRoZW4gUmFuZG9tLlN0YXRlLmJpdHMgKERvbWFpbi5ETFMuZ2V0IHBybmdfa2V5KVxuICAgIGVsc2UgaWYgT2JqLnNpemUgKE9iai5yZXByIGgpID49IDQgdGhlbiBoLnNlZWRcbiAgICBlbHNlIDAgaW5cbiAgbGV0IGgnID0ge1xuICAgIHNpemUgPSBoLnNpemU7XG4gICAgZGF0YSA9IEFycmF5Lm1ha2UgcyBFbXB0eTtcbiAgICBzZWVkID0gc2VlZDtcbiAgICBpbml0aWFsX3NpemUgPSBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPj0gNCB0aGVuIGguaW5pdGlhbF9zaXplIGVsc2Ugc1xuICB9IGluXG4gIGluc2VydF9hbGxfYnVja2V0cyAoa2V5X2luZGV4IGgnKSBmYWxzZSBoLmRhdGEgaCcuZGF0YTtcbiAgaCdcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9hcnJheV9tYWtlIiwiY2FtbF9jaGVja19ib3VuZCIsImNhbWxfY29tcGFyZSIsImNhbWxfaGFzaCIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfc3lzX2dldGVudiIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWJfU3lzIiwiU3RkbGliIiwiU3RkbGliX0F0b21pYyIsIlN0ZGxpYl9Eb21haW4iLCJTdGRsaWJfUmFuZG9tIiwiU3RkbGliX1NlcSIsIlN0ZGxpYl9JbnQiLCJTdGRsaWJfQXJyYXkiLCJTdGRsaWJfU3RyaW5nIiwib25nb2luZ190cmF2ZXJzYWwiLCJoIiwiZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCIsInBhcmFtcyIsImV4biIsInJhbmRvbWl6ZWRfZGVmYXVsdCIsInJhbmRvbWl6ZWQiLCJyYW5kb21pemUiLCJwYXJhbSIsImlzX3JhbmRvbWl6ZWQiLCJwcm5nX2tleSIsInBvd2VyXzJfYWJvdmUiLCJ4IiwibiIsImNyZWF0ZSIsIm9wdCIsImluaXRpYWxfc2l6ZSIsInJhbmRvbSIsInMiLCJzZWVkIiwiY2xlYXIiLCJyZXNldCIsImxlbiIsImNvcHlfYnVja2V0bGlzdCIsImtleSIsImRhdGEiLCJuZXh0IiwicHJlYyIsImNvcHkiLCJsZW5ndGgiLCJpbnNlcnRfYWxsX2J1Y2tldHMiLCJpbmRleGZ1biIsImlucGxhY2UiLCJvZGF0YSIsIm5kYXRhIiwibnNpemUiLCJuZGF0YV90YWlsIiwiaSIsImNlbGwiLCJuaWR4IiwibWF0Y2giLCJyZXNpemUiLCJvc2l6ZSIsIml0ZXIiLCJvbGRfdHJhdiIsImQiLCJmaWx0ZXJfbWFwX2lucGxhY2UiLCJzbG90IiwiZm9sZCIsImluaXQiLCJhY2N1IiwiYiIsImJ1Y2tldF9sZW5ndGgiLCJzdGF0cyIsIm1ibCIsIm0iLCJoaXN0byIsImwiLCJ0b19zZXEiLCJ0YmwiLCJ0YmxfZGF0YSIsImF1eCIsImJ1Y2siLCJ0b19zZXFfa2V5cyIsInRvX3NlcV92YWx1ZXMiLCJNYWtlU2VlZGVkIiwiSCIsImtleV9pbmRleCIsImFkZCIsImJ1Y2tldCIsInJlbW92ZSIsImsiLCJmaW5kIiwiazEiLCJkMSIsIm5leHQxIiwiazIiLCJkMiIsIm5leHQyIiwiazMiLCJkMyIsIm5leHQzIiwiZmluZF9vcHQiLCJmaW5kX2FsbCIsImJsb2NrIiwiZHN0Iiwib2Zmc2V0IiwicmVwbGFjZSIsIm1lbSIsImFkZF9zZXEiLCJ2IiwicmVwbGFjZV9zZXEiLCJvZl9zZXEiLCJNYWtlIiwiZXF1YWwiLCJzZWVkZWRfaGFzaCIsImluY2x1ZGUiLCJzeiIsImhhc2giLCJoYXNoX3BhcmFtIiwibjEiLCJuMiIsInJlYnVpbGQiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxZQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxJQUFBQyxrQkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQTtBQUFBLE9BQUFDLGdCQUFBO0FBQUEsWUFBQUMsa0JBQUFDO0FBQUFBLFFBQUEsSUN3Q0U7QUFBQTtBQUFBLEdBQ3FCO0FBQUEsWUFBQUMsdUJBQUFELEdBR3JCLDRCQUFrQztBQUFBLEdENUNwQyxZQ2tEUSxrQ0FBQUUsU0FBQTtBQUFBLFNBQUFDO0FBQUFBLFFBQUFBLE1EbERSO0FBQUE7QUFBQSxnQkNtRFEsaUNBQUFELFNBQUE7QUFBQSxVQUFBQztBQUFBQSxTQUFBQSxRRG5EUjtBQUFBO0FBQUEsU0FBQUQsU0FBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFFLHFCQ29ERTtBQUFBLElBQUFDLGFBRWU7QUFBQSxZQUFBQyxVQUFBQztBQUFBQSxJQUVFLGlEQUEwQjtBQUFBO0FBQUEsWUFBQUMsY0FBQUQ7QUFBQUEsSUFDdEIsOENBQXFCO0FBQUE7QUFBQSxPQUFBRSxXQUU3QjtBQUFBLFlBQUFDLGNBQUFDLEtBQUFDO0FBQUFBLFFBQUFELElBU2I7QUFBQTtBQUFBLGdCQUFlO0FBQUEsS0FDVixpQ0FBcUM7QUFBQSxTQUFBQSxNQUNyQztBQUFBO0FBQUE7QUFBQSxHQUF1QjtBQUFBLFlBQUFFLE9BQUFDLEtBQUFDO0FBQUFBO0FBQUFBLEtBQUFDLFNBRW5CLGVBQVc7QUFBQSxLQUFBQyxJQUNaO0FBQUEsSUFDUjtBQUFBO0FBQUEsVUFDbUM7QUFBQSxNQUFBQyxPQUFsQjtBQUFBO0FBQUEsU0FBQUEsT0FBaUQ7QUFBQSxJQUVoQiw2Q0FBa0I7QUFBQSxHQUFFO0FBQUEsWUFBQUMsTUFBQW5CO0FBQUFBLFFBQUEsSUFHdEU7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGNBRUU7QUFBQSxlQUNDO0FBQUE7QUFBQSxZQUFBb0IsTUFBQXBCO0FBQUFBLFFBQUFxQixNQUdIO0FBQUEsSUFDQSxnQ0FDVztBQUFBLEtBRU47QUFBQSxLQUVrQixPQUFYLGdCQUFXO0FBQUEsS0FBMEI7QUFBQTtBQUFBLElBSC9DLGVBSUM7QUFBQTtBQUFBLFlBQUFDLGdCQUFBZjtBQUFBQSxJQUVpQixZQUNUO0FBQUE7QUFBQSxLQUFBZ0IsTUFEUztBQUFBLEtBQUFDLE9BQUE7QUFBQSxLQUFBQyxPQUFBO0FBQUEsS0FBQUMsU0FhaEI7QUFBQSxLQUFBQSxPQUNBO0FBQUEsS0FBQW5CLFVBQUE7QUFBQTtBQUFBLEtBWGEsY0FXRjtBQUFBO0FBQUEsTUFBQWdCLFFBWEU7QUFBQSxNQUFBQyxTQUFBO0FBQUEsTUFBQUMsU0FBQTtBQUFBLE1BQUFDLFNBR1A7QUFBQSxLQUdnQjtBQUFBO0FBQUE7QUFBQTtBQUFBLEdBTXJCO0FBQUEsWUFBQUMsS0FBQTNCO0FBQUFBO0FBQUFBLEtBQUEsSUFFc0I7QUFBQTtBQUFBO0FBQUEsSUFBZ0M7QUFBQSxHQUFFO0FBQUEsWUFBQTRCLE9BQUE1QixHQUVoRCxZQUFNO0FBQUEsWUFBQTZCLG1CQUFBQyxVQUFBQyxTQUFBQyxPQUFBQztBQUFBQTtBQUFBQSxLQUFBQyxRQUduQjtBQUFBLEtBQUFDLGFBQ2lCO0FBQUEsU0FnQmpCO0FBQUE7QUFBQSxTQUFBQyxNQUFBO0FBQUE7QUFBQTtBQUFBLFVBQUFDLFNBQ2dCLHVDQUFBQSxPQUFkO0FBQUE7QUFBQSxPQWhCc0IsbUJBZ0JDO0FBQUE7QUFBQSxRQUFBZCxNQWhCRDtBQUFBLFFBQUFDLE9BQUE7QUFBQSxRQUFBQyxPQUFBO0FBQUEsUUFBQVksU0FHbEI7QUFBQSxRQUFBQyxPQUlXO0FBQUEsUUFBQUMsUUFDQztBQUFBLE9BQWlCO0FBQUEsUUFFZDtBQUFBO0FBQUEsUUFESjtBQUFBLE9BR1g7QUFBQSxPQUF5QjtBQUFBO0FBQUE7QUFBQTtBQUFBLElBTS9CO0FBQUEsYUFDRTtBQUFBO0FBQUEsVUFBQUgsSUFBQTtBQUFBO0FBQUEsV0FBQUcsVUFDUTtBQUFBLE9BQWMsWUFFTDtBQUFBLGVBRks7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGFBRHRCO0FBQUE7QUFBQTtBQUFBLGFBREY7QUFBQTtBQUFBLEdBS007QUFBQSxZQUFBQyxPQUFBVixVQUFBOUI7QUFBQUE7QUFBQUEsS0FBQWdDLFFBR047QUFBQSxLQUFBUyxRQUNBO0FBQUEsS0FBQVAsUUFDQTtBQUFBLFNBQ0E7QUFBQTtBQUFBLFFBQUFELFFBQ2MsMkJBQUFGLFVBQ007QUFBQSxJQUNsQjtBQUFBLElBQ21CLE9BQVksbUJBQVosK0NBQ2xCO0FBQUE7QUFBQSxZQUFBVyxLQUFBM0QsR0FBQWlCO0FBQUFBLFFBQUEyQyxXQVFZO0FBQUEsSUFDZixpQkFBcUI7QUFBQSxJQUFyQjtBQUFBLFNBQUFDLElBQUEsVUFHRTtBQUFBO0FBQUEsVUFBQVIsSUFBQTtBQUFBO0FBQUE7QUFBQSxXQUFBN0IsUUFDWTtBQUFBLE9BQVY7QUFBQSxRQVZnQixvQkFVRDtBQUFBLFlBQUFnQixNQVZDLFVBQUFDLE9BQUEsVUFBQUMsT0FBQTtBQUFBLFFBSWQ7QUFBQSxRQUFVO0FBQUE7QUFBQTtBQUFBO0FBQUEsYUFRZCxzQkFBcUI7QUFBQTtBQUFBO0FBQUEsVUFBQXRCO0FBQUFBLFNBQUFBLE1EeEt6QjtBQUFBLEtDeUtnQjtBQUFBLEtBQ1o7QUFBQSxLQUF3QjtBQUFBO0FBQUEsR0FDZjtBQUFBLFlBQUEwQyxtQkFBQTlELEdBQUFpQjtBQUFBQSxRQUFBNEMsSUF1QlgsTUFBQUQsV0FDZTtBQUFBLElBQ2YsaUJBQXFCO0FBQUEsSUFDckI7QUFBQTtBQUFBO0FBQUEsVUFBQVAsSUFBQTtBQUFBO0FBQUE7QUFBQSxXQUFBVSxTQUUwQyxrQ0FBQXBCLE9BQXRDLEdBQUFvQixPQUFBO0FBQUE7QUFBQSxRQTFCNEI7QUFBQSxTQUU1QixTQUVZLGtCQUREO0FBQUEsaUJBdUJxQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxTQUFBdkIsTUExQnBCO0FBQUEsU0FBQUMsT0FBQTtBQUFBLFNBQUFDLE9BQUE7QUFBQSxTQUFBYyxRQU9oQjtBQUFBLFFBQVU7QUFBQSxhQUFBZixTQUFBO0FBQUEsU0FLbEI7QUFBQSxVQUVZO0FBQUE7QUFBQSxVQUREO0FBQUEsU0FHWDtBQUFBLFNBQ0E7QUFBQTtBQUFBO0FBQUEsYUFSQSxxQkFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGFBa0JOLHNCQUFxQjtBQUFBO0FBQUE7QUFBQSxVQUFBckI7QUFBQUEsU0FBQUEsTUR6TXpCO0FBQUEsS0MwTWdCO0FBQUEsS0FDWjtBQUFBLEtBQXdCO0FBQUE7QUFBQSxHQUNmO0FBQUEsWUFBQTRDLEtBQUFoRSxHQUFBaUIsR0FBQWdEO0FBQUFBLFFBQUFMLFdBU0k7QUFBQSxJQUNmLGlCQUFxQjtBQUFBLElBQXJCO0FBQUEsU0FBQUMsSUFBQSxVQUlFO0FBQUE7QUFBQSxVQUFBSyxTQUFBO0FBQUE7QUFBQSxVQUFBQSxTQUFBLE1BQUFiLElBQUE7QUFBQTtBQUFBO0FBQUEsV0FBQWMsTUFDb0IsK0JBQUFBLElBQVYsS0FBQUQsT0FBQTtBQUFBO0FBQUEsUUFYVjtBQUFBLGlCQVcrQjtBQUFBO0FBQUEsYUFBQUEsU0FBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFNBQUExQixNQVgvQjtBQUFBLFNBQUFDLE9BQUE7QUFBQSxTQUFBQyxPQUFBO0FBQUEsU0FBQXdCLFNBSW1CO0FBQUEsUUFBaUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEtBU3BDLGlCQUFxQjtBQUFBO0FBQUE7QUFBQSxVQUFBOUM7QUFBQUEsU0FBQUEsTUQ3TnpCO0FBQUEsS0MrTmdCO0FBQUEsS0FDWjtBQUFBLEtBQXdCO0FBQUE7QUFBQSxHQUNmO0FBQUEsWUFBQWdELGNBQUFGLFFBQUExQztBQUFBQSxRQUFBMEMsT0FTUyxRQUFBMUMsUUFBQTtBQUFBO0FBQUEsaUJBQ1Q7QUFBQSxTQUFBa0IsT0FEUyxVQUFBd0IsU0FFSjtBQUFBO0FBQUE7QUFBQTtBQUFBLEdBQTZCO0FBQUEsWUFBQUcsTUFBQXBEO0FBQUFBO0FBQUFBLEtBQUFxRDtBQUFBQSxPQUkzQztBQUFBO0FBQUEsa0JBQUFDLEdBQUFKO0FBQUFBLGNBQUEsSUFBc0M7QUFBQSxVQUFtQjtBQUFBO0FBQUE7QUFBQTtBQUFBLEtBQUFLLFFBQy9DO0FBQUEsSUFDWjtBQUFBO0FBQUEsZUFBQUw7QUFBQUEsV0FBQU0sSUFFWTtBQUFBLE9BQ0s7QUFBQSxPQUFhO0FBQUE7QUFBQTtBQUFBLElBQ3RCO0FBQUEsR0FJb0I7QUFBQSxZQUFBQyxPQUFBQztBQUFBQSxRQUFBQyxXQU81QjtBQUFBLGFBQUFDLElBQUF4QixLQUFBeUIsUUFBQXREO0FBQUFBLFNBQUE2QixJQUV3QixLQUFBeUIsT0FBQTtBQUFBO0FBQUE7QUFBQSxNQUVsQiw4QkFDSztBQUFBLFVBQUFBLFNBQ1Msc0NBQUF6QixNQUFZO0FBQUE7QUFBQTtBQUFBO0FBQUEsU0FBQWIsTUFKUixTQUFBQyxPQUFBLFNBQUFDLE9BQUE7QUFBQSxLQU1lLHVDQUFWLHlCQUFVO0FBQUEsSUFBQztBQUFBLElBRXhDLG1CRDNRRixxQkMyUUU7QUFBQSxHQUFXO0FBQUEsWUFBQXFDLFlBQUFSO0FBQUFBLFFBQUEsSUFFbUI7QUFBQSxrQkQ3UWhDO0FBQUEsWUM2UTBDO0FBQUEsdUJEN1ExQyxtQkM2UTBDO0FBQUE7QUFBQSxZQUFBUyxjQUFBVDtBQUFBQSxRQUFBLElBRVI7QUFBQSxrQkQvUWxDO0FBQUEsWUMrUTRDO0FBQUEsdUJEL1E1QyxtQkMrUTRDO0FBQUE7QUFBQSxZQUFBVSxXQUFBQztBQUFBQSxhQUFBQyxVQUFBbEUsR0FBQXVCO0FBQUFBLFNBQUEsSUFxRnRDO0FBQUEsMkNBQTBCO0FBQUEsSUFBK0I7QUFBQSxhQUFBNEMsSUFBQW5FLEdBQUF1QixLQUFBQztBQUFBQTtBQUFBQSxNQUFBWSxJQUdqRDtBQUFBLE1BQUFnQyxTQUMwQjtBQUFBLEtBQ2xDO0FBQUEsS0FBb0I7QUFBQSxhQUVwQjtBQUFBLGdCQUEyQyx3QkFBa0I7QUFBQTtBQUFBLGFBQUFDLE9BQUFyRSxHQUFBdUI7QUFBQUE7QUFBQUEsTUFBQWEsSUFnQnJEO0FBQUEsTUFBQVYsU0FDb0I7QUFBQSxNQUFBQSxTQUFVO0FBQUEsTUFBQUEsT0FBQTtBQUFBO0FBQUEsTUFmbEIsV0FFaEI7QUFBQSxVQUFBNEMsSUFGZ0IsU0FBQTdDLE9BQUE7QUFBQSxNQUliO0FBQUEsT0FDRTtBQUFBLE9BRUg7QUFBQTtBQUFBLGtCQUNXLDJDQU9xQjtBQUFBO0FBQUEsTUFYbEI7QUFBQTtBQUFBO0FBQUEsSUFXa0I7QUFBQSxhQUFBOEMsS0FBQXZFLEdBQUF1QjtBQUFBQSxTQUFBLElBU3hCLG1CQUFBZ0IsUUFBUjtBQUFBLEtBQXdCLFlBQ25CO0FBQUEsU0FBQWlDLEtBRG1CLFVBQUFDLEtBQUEsVUFBQUMsUUFBQTtBQUFBLEtBR3ZCLDhCQUFvQjtBQUFBLEtBQ3ZCLFlBQ1c7QUFBQSxTQUFBQyxLQURYLFVBQUFDLEtBQUEsVUFBQUMsUUFBQTtBQUFBLEtBR08sOEJBQW9CO0FBQUEsS0FDdkIsWUFDVztBQUFBLFNBQUFDLEtBRFgsVUFBQUMsS0FBQSxVQUFBQyxRQUFBO0FBQUEsS0FHTyw4QkFBb0I7QUFBQSxTQUFBekUsUUFBTjtBQUFBO0FBQUEsTUFsQmQsWUFFWDtBQUFBLFVBQUErRCxJQUZXLFVBQUE5QyxPQUFBLFVBQUFDLE9BQUE7QUFBQSxNQUlSLDZCQUFtQjtBQUFBLE1BQU47QUFBQTtBQUFBLElBY3lDO0FBQUEsYUFBQXdELFNBQUFqRixHQUFBdUI7QUFBQUEsU0FBQSxJQVMvQyxtQkFBQWdCLFFBQVI7QUFBQSxLQUF3QixZQUNuQjtBQUFBLFNBQUFpQyxLQURtQixVQUFBQyxLQUFBLFVBQUFDLFFBQUE7QUFBQSxLQUd2Qiw4QkFBb0I7QUFBQSxLQUN2QixZQUNXO0FBQUEsU0FBQUMsS0FEWCxVQUFBQyxLQUFBLFVBQUFDLFFBQUE7QUFBQSxLQUdPLDhCQUFvQjtBQUFBLEtBQ3ZCLFlBQ1c7QUFBQSxTQUFBQyxLQURYLFVBQUFDLEtBQUEsVUFBQUMsUUFBQTtBQUFBLEtBR08sOEJBQW9CO0FBQUEsU0FBQXpFLFFBQU47QUFBQTtBQUFBLE1BbEJWLFlBRWY7QUFBQSxVQUFBK0QsSUFGZSxVQUFBOUMsT0FBQSxVQUFBQyxPQUFBO0FBQUEsTUFJWiw2QkFBbUI7QUFBQSxNQUFOO0FBQUE7QUFBQSxJQWNrRDtBQUFBLGFBQUF5RCxTQUFBbEYsR0FBQXVCO0FBQUFBLFNBQUEsSUFVL0MsbUJBQUFoQixRQUFSO0FBQUEsS0FBd0I7QUFBQSxNQVBFLFlBRXJDO0FBQUEsVUFBQStELElBRnFDLFVBQUExQixJQUFBLFVBQUFuQixPQUFBO0FBQUEsTUFJbEM7QUFBQSxNQUFhO0FBQUE7QUFBQSxTQUFBMEQsUUFDWCxlQUFBQyxNQUFLLE9BQUFDLFNBQUEsR0FBQTlFLFVBQUE7QUFBQTtBQUFBLE1BTDJCLGNBRXJDLHFCQUc2QjtBQUFBLFVBQUErRCxNQUxRLFlBQUExQixNQUFBLFlBQUFuQixTQUFBO0FBQUEsTUFJbEM7QUFBQSxXQUFBMkQsUUFDRTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE9BRFc7QUFBQTtBQUFBLElBR21CO0FBQUEsYUFBQUUsUUFBQXRGLEdBQUF1QixLQUFBQztBQUFBQTtBQUFBQSxNQUFBWSxJQVcvQjtBQUFBLE1BQUFvQixJQUNBO0FBQUEsTUFBQWpELFFBQ0w7QUFBQTtBQUFBLE1BWGtCO0FBQUEsV0FBQStELElBQUEsVUFBQTdDLE9BQUE7QUFBQSxPQUlkLCtCQUFhO0FBQUEsT0FDWDtBQUFBLE9BQWtCO0FBQUEsZUFBbUI7QUFBQTtBQUFBO0FBQUEsZUFIMUM7QUFBQSxNQVN3QjtBQUFBLE9BQzFCO0FBQUEsT0FBcUM7QUFBQSxlQUVyQztBQUFBLGFBQTJDLDJCQUMxQztBQUFBLGVBREQ7QUFBQTtBQUFBO0FBQUEsZUFIMEI7QUFBQTtBQUFBO0FBQUEsSUFJekI7QUFBQSxhQUFBOEQsSUFBQXZGLEdBQUF1QjtBQUFBQSxTQUFBLElBU3VCLG1CQUFBaEIsUUFBUjtBQUFBLEtBQXdCO0FBQUEsTUFQdEIsWUFFaEI7QUFBQSxVQUFBK0QsSUFGZ0IsVUFBQTdDLE9BQUEsY0FJaEI7QUFBQSxNQUFhO0FBQUE7QUFBQTtBQUFBLElBR3lCO0FBQUEsYUFBQStELFFBQUE5QixLQUFBdEI7QUFBQUEsS0FHMUM7QUFBQTtBQUFBLHVCQUFBN0I7QUFBQUEsbUJBQUFrRixJQUFTLFVBQUFuQixJQUFBO0FBQUEsZUFBYyxxQkFBWTtBQUFBO0FBQUEsZ0JBQUU7QUFBQTtBQUFBLGFBQUFvQixZQUFBaEMsS0FBQXRCO0FBQUFBLEtBR3JDO0FBQUE7QUFBQSx1QkFBQTdCO0FBQUFBLG1CQUFBa0YsSUFBUyxVQUFBbkIsSUFBQTtBQUFBLGVBQWMseUJBQWdCO0FBQUE7QUFBQSxnQkFBRTtBQUFBO0FBQUEsYUFBQXFCLE9BQUF2RDtBQUFBQSxTQUFBc0IsTUFHL0I7QUFBQSxLQUNWO0FBQUEsS0FBaUI7QUFBQSxJQUNkO0FBQUEsSURuZFQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBa0MsS0FBQTNCO0FBQUFBLFFBQUE0QixRQUFBO0FBQUEsYUFBQUMsWUFBQTVFLE1BQUFQLEdDb2V5QywwQkFBUTtBQUFBO0FBQUEsS0FBQW9GLFVEcGVqRDtBQUFBO0FBQUEsS0FBQTVFLFFBQUE7QUFBQSxLQUFBQyxRQUFBO0FBQUEsS0FBQU8sT0FBQTtBQUFBLEtBQUF3QyxNQUFBO0FBQUEsS0FBQUUsU0FBQTtBQUFBLEtBQUFFLE9BQUE7QUFBQSxLQUFBVSxXQUFBO0FBQUEsS0FBQUMsV0FBQTtBQUFBLEtBQUFJLFVBQUE7QUFBQSxLQUFBQyxNQUFBO0FBQUEsS0FBQTdDLE9BQUE7QUFBQSxLQUFBRyxxQkFBQTtBQUFBLEtBQUFFLE9BQUE7QUFBQSxLQUFBbkIsU0FBQTtBQUFBLEtBQUF3QixRQUFBO0FBQUEsS0FBQUssU0FBQTtBQUFBLEtBQUFLLGNBQUE7QUFBQSxLQUFBQyxnQkFBQTtBQUFBLEtBQUF5QixVQUFBO0FBQUEsS0FBQUUsY0FBQTtBQUFBLGFBQUE3RSxPQUFBbUYsSUNzZW9CLDJCQUF1QjtBQUFBLGFBQUFMLE9BQUF2RDtBQUFBQSxTQUFBc0IsTUFBdkI7QUFBQSxLQUdkO0FBQUEsS0FBaUI7QUFBQSxJQUNkO0FBQUEsSUQxZVQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQXVDLEtBQUF0RixHQ29mYSwrQkFBNEI7QUFBQSxZQUFBdUYsV0FBQUMsSUFBQUMsSUFBQXpGLEdBQ2hCLDhCQUEyQjtBQUFBLFlBQUFtRixZQUFBNUUsTUFBQVAsR0FDM0Isa0NBQStCO0FBQUEsWUFBQXVELFVBQUFsRSxHQUFBdUI7QUFBQUEsSUFHdEQ7QUFBQSxjQUNLO0FBQUEsY0FDQSw4REFBb0Q7QUFBQTtBQUFBLFlBQUE0QyxJQUFBbkUsR0FBQXVCLEtBQUFDO0FBQUFBO0FBQUFBLEtBQUFZLElBR2pEO0FBQUEsS0FBQWdDLFNBQzBCO0FBQUEsSUFDbEM7QUFBQSxJQUFvQjtBQUFBLFlBRXBCO0FBQUEsZUFBMkMsd0JBQWtCO0FBQUE7QUFBQSxZQUFBQyxPQUFBckUsR0FBQXVCO0FBQUFBO0FBQUFBLEtBQUFhLElBZ0JyRDtBQUFBLEtBQUFWLFNBQ29CO0FBQUEsS0FBQUEsU0FBVTtBQUFBLEtBQUFBLE9BQUE7QUFBQTtBQUFBLEtBZmxCLFdBRWhCO0FBQUEsU0FBQTRDLElBRmdCLFNBQUE3QyxPQUFBO0FBQUEsS0FJYjtBQUFBLE1BQ0U7QUFBQSxNQUVIO0FBQUE7QUFBQSxpQkFDVywyQ0FPcUI7QUFBQTtBQUFBLEtBWGxCO0FBQUE7QUFBQTtBQUFBLEdBV2tCO0FBQUEsWUFBQThDLEtBQUF2RSxHQUFBdUI7QUFBQUEsUUFBQSxJQVN4QixtQkFBQWdCLFFBQVI7QUFBQSxJQUF3QixZQUNuQjtBQUFBLFFBQUFpQyxLQURtQixVQUFBQyxLQUFBLFVBQUFDLFFBQUE7QUFBQSxJQUd2QixnQ0FBd0I7QUFBQSxJQUMzQixZQUNXO0FBQUEsUUFBQUMsS0FEWCxVQUFBQyxLQUFBLFVBQUFDLFFBQUE7QUFBQSxJQUdPLGdDQUF3QjtBQUFBLElBQzNCLFlBQ1c7QUFBQSxRQUFBQyxLQURYLFVBQUFDLEtBQUEsVUFBQUMsUUFBQTtBQUFBLElBR08sZ0NBQXdCO0FBQUEsUUFBQXpFLFFBQVY7QUFBQTtBQUFBLEtBbEJkLFlBRVg7QUFBQSxTQUFBK0QsSUFGVyxVQUFBOUMsT0FBQSxVQUFBQyxPQUFBO0FBQUEsS0FJUiwrQkFBdUI7QUFBQSxLQUFWO0FBQUE7QUFBQSxHQWM2QztBQUFBLFlBQUF3RCxTQUFBakYsR0FBQXVCO0FBQUFBLFFBQUEsSUFTbkQsbUJBQUFnQixRQUFSO0FBQUEsSUFBd0IsWUFDbkI7QUFBQSxRQUFBaUMsS0FEbUIsVUFBQUMsS0FBQSxVQUFBQyxRQUFBO0FBQUEsSUFHdkIsZ0NBQXdCO0FBQUEsSUFDM0IsWUFDVztBQUFBLFFBQUFDLEtBRFgsVUFBQUMsS0FBQSxVQUFBQyxRQUFBO0FBQUEsSUFHTyxnQ0FBd0I7QUFBQSxJQUMzQixZQUNXO0FBQUEsUUFBQUMsS0FEWCxVQUFBQyxLQUFBLFVBQUFDLFFBQUE7QUFBQSxJQUdPLGdDQUF3QjtBQUFBLFFBQUF6RSxRQUFWO0FBQUE7QUFBQSxLQWxCVixZQUVmO0FBQUEsU0FBQStELElBRmUsVUFBQTlDLE9BQUEsVUFBQUMsT0FBQTtBQUFBLEtBSVosK0JBQXVCO0FBQUEsS0FBVjtBQUFBO0FBQUEsR0Fjc0Q7QUFBQSxZQUFBeUQsU0FBQWxGLEdBQUF1QjtBQUFBQSxRQUFBLElBVW5ELG1CQUFBaEIsUUFBUjtBQUFBLElBQXdCO0FBQUEsS0FQRSxZQUVyQztBQUFBLFNBQUErRCxJQUZxQyxVQUFBOUMsT0FBQSxVQUFBQyxPQUFBO0FBQUEsS0FJbEM7QUFBQSxLQUFhO0FBQUE7QUFBQSxRQUFBMEQsUUFDWCxrQkFBQUMsTUFBUSxPQUFBQyxTQUFBLEdBQUE5RSxVQUFBO0FBQUE7QUFBQSxLQUx3QixjQUVyQyxxQkFHZ0M7QUFBQSxTQUFBK0QsTUFMSyxZQUFBOUMsU0FBQSxZQUFBQyxTQUFBO0FBQUEsS0FJbEM7QUFBQSxVQUFBMkQsUUFDRTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BRFc7QUFBQTtBQUFBLEdBR21CO0FBQUEsWUFBQUUsUUFBQXRGLEdBQUF1QixLQUFBQztBQUFBQTtBQUFBQSxLQUFBWSxJQVcvQjtBQUFBLEtBQUFvQixJQUNBO0FBQUEsS0FBQWpELFFBQ0w7QUFBQTtBQUFBLEtBWGtCO0FBQUEsVUFBQStELElBQUEsVUFBQTdDLE9BQUE7QUFBQSxNQUlkLCtCQUFhO0FBQUEsTUFDWDtBQUFBLE1BQWtCO0FBQUEsY0FBbUI7QUFBQTtBQUFBO0FBQUEsY0FIMUM7QUFBQSxLQVN3QjtBQUFBLE1BQzFCO0FBQUEsTUFBcUM7QUFBQSxjQUVyQztBQUFBLFlBQTJDLDJCQUMxQztBQUFBLGNBREQ7QUFBQTtBQUFBO0FBQUEsY0FIMEI7QUFBQTtBQUFBO0FBQUEsR0FJekI7QUFBQSxZQUFBOEQsSUFBQXZGLEdBQUF1QjtBQUFBQSxRQUFBLElBU3VCLG1CQUFBaEIsUUFBUjtBQUFBLElBQXdCO0FBQUEsS0FQdEIsWUFFaEI7QUFBQTtBQUFBLE1BQUErRCxJQUZnQjtBQUFBLE1BQUE3QyxPQUFBO0FBQUEsVUFJaEI7QUFBQSxLQUFhO0FBQUE7QUFBQTtBQUFBLEdBR3lCO0FBQUEsWUFBQStELFFBQUE5QixLQUFBdEI7QUFBQUEsSUFHMUM7QUFBQTtBQUFBLHNCQUFBN0I7QUFBQUEsa0JBQUFrRixJQUFTLFVBQUFuQixJQUFBO0FBQUEsY0FBYyxxQkFBWTtBQUFBO0FBQUEsZUFBRTtBQUFBO0FBQUEsWUFBQW9CLFlBQUFoQyxLQUFBdEI7QUFBQUEsSUFHckM7QUFBQTtBQUFBLHNCQUFBN0I7QUFBQUEsa0JBQUFrRixJQUFTLFVBQUFuQixJQUFBO0FBQUEsY0FBYyx5QkFBZ0I7QUFBQTtBQUFBLGVBQUU7QUFBQTtBQUFBLFlBQUFxQixPQUFBdkQ7QUFBQUEsUUFBQXNCLE1BRy9CO0FBQUEsSUFDVjtBQUFBLElBQWlCO0FBQUEsR0FDZDtBQUFBLFlBQUEyQyxRQUFBdkYsS0FBQWQ7QUFBQUE7QUFBQUEsS0FBQWdCLFNBRU8sZUFBVztBQUFBLEtBQUFDLElBQ2I7QUFBQSxJQUNSO0FBQUE7QUFBQSxVQUNtQztBQUFBLE1BQUFDLE9BQWxCO0FBQUE7QUFBQSxTQUFBQSxPQUNWO0FBQUE7QUFBQSxTQUVQO0FBQUEsS0FBQWxCLE1BRVM7QUFBQSxJQUlUO0FBQUEsa0JBQW1CO0FBQUEsSUFBbUM7QUFBQSxHQUNwRDtBQUFBLEdBOWpCeUQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUQzRDdEIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MjY3MTYsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9mb3JtYXQubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBQaWVycmUgV2VpcywgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEEgcHJldHR5LXByaW50aW5nIGZhY2lsaXR5IGFuZCBkZWZpbml0aW9uIG9mIGZvcm1hdHRlcnMgZm9yICdwYXJhbGxlbCdcbiAgIChpLmUuIHVucmVsYXRlZCBvciBpbmRlcGVuZGVudCkgcHJldHR5LXByaW50aW5nIG9uIG11bHRpcGxlIG91dCBjaGFubmVscy4gKilcblxuKCpcbiAgIFRoZSBwcmV0dHktcHJpbnRpbmcgZW5naW5lIGludGVybmFsIGRhdGEgc3RydWN0dXJlcy5cbiopXG5cbmxldCBpZCB4ID0geFxuXG4oKiBBIGRldm90ZWQgdHlwZSBmb3Igc2l6ZXMgdG8gYXZvaWQgY29uZnVzaW9uXG4gICBiZXR3ZWVuIHNpemVzIGFuZCBtZXJlIGludGVnZXJzLiAqKVxubW9kdWxlIFNpemUgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIHRvX2ludCA6IHQgLT4gaW50XG4gIHZhbCBvZl9pbnQgOiBpbnQgLT4gdFxuICB2YWwgemVybyA6IHRcbiAgdmFsIHVua25vd24gOiB0XG4gIHZhbCBpc19rbm93biA6IHQgLT4gYm9vbFxuZW5kICA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnRcblxuICBsZXQgdG9faW50ID0gaWRcbiAgbGV0IG9mX2ludCA9IGlkXG4gIGxldCB6ZXJvID0gMFxuICBsZXQgdW5rbm93biA9IC0xXG4gIGxldCBpc19rbm93biBuID0gbiA+PSAwXG5lbmRcblxuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRpbmcgYm94ZXMgZGVmaW5pdGlvbjpcbiAgIGEgcHJldHR5LXByaW50aW5nIGJveCBpcyBlaXRoZXJcbiAgIC0gaGJveDogaG9yaXpvbnRhbCBib3ggKG5vIGxpbmUgc3BsaXR0aW5nKVxuICAgLSB2Ym94OiB2ZXJ0aWNhbCBib3ggKGV2ZXJ5IGJyZWFrIGhpbnQgc3BsaXRzIHRoZSBsaW5lKVxuICAgLSBodmJveDogaG9yaXpvbnRhbC92ZXJ0aWNhbCBib3hcbiAgICAgKHRoZSBib3ggYmVoYXZlcyBhcyBhbiBob3Jpem9udGFsIGJveCBpZiBpdCBmaXRzIG9uXG4gICAgICB0aGUgY3VycmVudCBsaW5lLCBvdGhlcndpc2UgdGhlIGJveCBiZWhhdmVzIGFzIGEgdmVydGljYWwgYm94KVxuICAgLSBob3Zib3g6IGhvcml6b250YWwgb3IgdmVydGljYWwgY29tcGFjdGluZyBib3hcbiAgICAgKHRoZSBib3ggaXMgY29tcGFjdGluZyBtYXRlcmlhbCwgcHJpbnRpbmcgYXMgbXVjaCBtYXRlcmlhbCBhcyBwb3NzaWJsZVxuICAgICAgb24gZXZlcnkgbGluZXMpXG4gICAtIGJveDogaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBjb21wYWN0aW5nIGJveCB3aXRoIGVuaGFuY2VkIGJveCBzdHJ1Y3R1cmVcbiAgICAgKHRoZSBib3ggYmVoYXZlcyBhcyBhbiBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGJveCBidXQgYnJlYWsgaGludHMgc3BsaXRcbiAgICAgIHRoZSBsaW5lIGlmIHNwbGl0dGluZyB3b3VsZCBtb3ZlIHRvIHRoZSBsZWZ0KVxuKilcbnR5cGUgYm94X3R5cGUgPSBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuYmxvY2tfdHlwZSA9XG4gIHwgUHBfaGJveCB8IFBwX3Zib3ggfCBQcF9odmJveCB8IFBwX2hvdmJveCB8IFBwX2JveCB8IFBwX2ZpdHNcblxuXG4oKiBUaGUgcHJldHR5LXByaW50aW5nIHRva2VucyBkZWZpbml0aW9uOlxuICAgYXJlIGVpdGhlciB0ZXh0IHRvIHByaW50IG9yIHByZXR0eSBwcmludGluZ1xuICAgZWxlbWVudHMgdGhhdCBkcml2ZSBpbmRlbnRhdGlvbiBhbmQgbGluZSBzcGxpdHRpbmcuICopXG50eXBlIHBwX3Rva2VuID1cbiAgfCBQcF90ZXh0IG9mIHN0cmluZyAgICAgICAgICAoKiBub3JtYWwgdGV4dCAqKVxuICB8IFBwX3N1YnN0cmluZyBvZiB7IHNvdXJjZTpzdHJpbmc7IHBvczppbnQ7IGxlbjppbnR9ICgqIHNsaWNlIG9mIHRleHQgKilcbiAgfCBQcF9icmVhayBvZiB7ICAgICAgICAgICAgICAoKiBjb21wbGV0ZSBicmVhayAqKVxuICAgICAgZml0czogc3RyaW5nICogaW50ICogc3RyaW5nOyAgICgqIGxpbmUgaXMgbm90IHNwbGl0ICopXG4gICAgICBicmVha3M6IHN0cmluZyAqIGludCAqIHN0cmluZzsgKCogbGluZSBpcyBzcGxpdCAqKVxuICAgIH1cbiAgfCBQcF90YnJlYWsgb2YgaW50ICogaW50ICAgICAoKiBnbyB0byBuZXh0IHRhYnVsYXRpb24gKilcbiAgfCBQcF9zdGFiICAgICAgICAgICAgICAgICAgICAoKiBzZXQgYSB0YWJ1bGF0aW9uICopXG4gIHwgUHBfYmVnaW4gb2YgaW50ICogYm94X3R5cGUgKCogYmVnaW5uaW5nIG9mIGEgYm94ICopXG4gIHwgUHBfZW5kICAgICAgICAgICAgICAgICAgICAgKCogZW5kIG9mIGEgYm94ICopXG4gIHwgUHBfdGJlZ2luIG9mIHRib3ggICAgICAgICAgKCogYmVnaW5uaW5nIG9mIGEgdGFidWxhdGlvbiBib3ggKilcbiAgfCBQcF90ZW5kICAgICAgICAgICAgICAgICAgICAoKiBlbmQgb2YgYSB0YWJ1bGF0aW9uIGJveCAqKVxuICB8IFBwX25ld2xpbmUgICAgICAgICAgICAgICAgICgqIHRvIGZvcmNlIGEgbmV3bGluZSBpbnNpZGUgYSBib3ggKilcbiAgfCBQcF9pZl9uZXdsaW5lICAgICAgICAgICAgICAoKiB0byBkbyBzb21ldGhpbmcgb25seSBpZiB0aGlzIHZlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lIGhhcyBiZWVuIGJyb2tlbiAqKVxuICB8IFBwX29wZW5fdGFnIG9mIHN0YWcgICAgICAgICAoKiBvcGVuaW5nIGEgdGFnIG5hbWUgKilcbiAgfCBQcF9jbG9zZV90YWcgICAgICAgICAgICAgICAoKiBjbG9zaW5nIHRoZSBtb3N0IHJlY2VudGx5IG9wZW4gdGFnICopXG5cbmFuZCBzdGFnID0gLi5cblxuYW5kIHRib3ggPSBQcF90Ym94IG9mIGludCBsaXN0IHJlZiAgKCogVGFidWxhdGlvbiBib3ggKilcblxudHlwZSB0YWcgPSBzdHJpbmdcbnR5cGUgc3RhZyArPSBTdHJpbmdfdGFnIG9mIHRhZ1xuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZTpcbiAgIHByZXR0eS1wcmludGluZyBtYXRlcmlhbCBpcyBub3Qgd3JpdHRlbiBpbiB0aGUgb3V0cHV0IGFzIHNvb24gYXMgZW1pdHRlZDtcbiAgIGluc3RlYWQsIHRoZSBtYXRlcmlhbCBpcyBzaW1wbHkgcmVjb3JkZWQgaW4gdGhlIHByZXR0eS1wcmludGVyIHF1ZXVlLFxuICAgdW50aWwgdGhlIGVuY2xvc2luZyBib3ggaGFzIGEga25vd24gY29tcHV0ZWQgc2l6ZSBhbmQgcHJvcGVyIHNwbGl0dGluZ1xuICAgZGVjaXNpb25zIGNhbiBiZSBtYWRlLlxuXG4gICBUaGUgcHJldHR5LXByaW50ZXIgcXVldWUgY29udGFpbnMgZm9ybWF0dGluZyBlbGVtZW50cyB0byBiZSBwcmludGVkLlxuICAgRWFjaCBmb3JtYXR0aW5nIGVsZW1lbnQgaXMgYSB0dXBsZSAoc2l6ZSwgdG9rZW4sIGxlbmd0aCksIHdoZXJlXG4gICAtIGxlbmd0aCBpcyB0aGUgZGVjbGFyZWQgbGVuZ3RoIG9mIHRoZSB0b2tlbixcbiAgIC0gc2l6ZSBpcyBlZmZlY3RpdmUgc2l6ZSBvZiB0aGUgdG9rZW4gd2hlbiBpdCBpcyBwcmludGVkXG4gICAgIChzaXplIGlzIHNldCB3aGVuIHRoZSBzaXplIG9mIHRoZSBib3ggaXMga25vd24sIHNvIHRoYXQgc2l6ZSBvZiBicmVha1xuICAgICAgaGludHMgYXJlIGRlZmluaXRpdmUpLiAqKVxudHlwZSBwcF9xdWV1ZV9lbGVtID0ge1xuICBtdXRhYmxlIHNpemUgOiBTaXplLnQ7XG4gIHRva2VuIDogcHBfdG9rZW47XG4gIGxlbmd0aCA6IGludDtcbn1cblxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgcXVldWUgZGVmaW5pdGlvbi4gKilcbnR5cGUgcHBfcXVldWUgPSBwcF9xdWV1ZV9lbGVtIFF1ZXVlLnRcblxuKCogVGhlIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrLiAqKVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2s6IHNjYW5uaW5nIGVsZW1lbnQgZGVmaW5pdGlvbi4gKilcbnR5cGUgcHBfc2Nhbl9lbGVtID0ge1xuICBsZWZ0X3RvdGFsIDogaW50OyAoKiBWYWx1ZSBvZiBwcF9sZWZ0X3RvdGFsIHdoZW4gdGhlIGVsZW1lbnQgd2FzIGVucXVldWVkLiAqKVxuICBxdWV1ZV9lbGVtIDogcHBfcXVldWVfZWxlbVxufVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjazpcbiAgIHRoZSBmb3JtYXR0aW5nIHN0YWNrIGNvbnRhaW5zIHRoZSBkZXNjcmlwdGlvbiBvZiBhbGwgdGhlIGN1cnJlbnRseSBhY3RpdmVcbiAgIGJveGVzOyB0aGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjayBpcyB1c2VkIHRvIHNwbGl0IHRoZSBsaW5lc1xuICAgd2hpbGUgcHJpbnRpbmcgdG9rZW5zLiAqKVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjazogZm9ybWF0dGluZyBzdGFjayBlbGVtZW50IGRlZmluaXRpb24uXG4gICBFYWNoIHN0YWNrIGVsZW1lbnQgZGVzY3JpYmVzIGEgcHJldHR5LXByaW50aW5nIGJveC4gKilcbnR5cGUgcHBfZm9ybWF0X2VsZW0gPSB7IGJveF90eXBlIDogYm94X3R5cGU7IHdpZHRoIDogaW50IH1cblxuKCogVGhlIGZvcm1hdHRlciBkZWZpbml0aW9uLlxuICAgRWFjaCBmb3JtYXR0ZXIgdmFsdWUgaXMgYSBwcmV0dHktcHJpbnRlciBpbnN0YW5jZSB3aXRoIGFsbCBpdHNcbiAgIG1hY2hpbmVyeS4gKilcbnR5cGUgZm9ybWF0dGVyID0ge1xuICAoKiBUaGUgcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2suICopXG4gIHBwX3NjYW5fc3RhY2sgOiBwcF9zY2FuX2VsZW0gU3RhY2sudDtcbiAgKCogVGhlIHByZXR0eS1wcmludGVyIGZvcm1hdHRpbmcgc3RhY2suICopXG4gIHBwX2Zvcm1hdF9zdGFjayA6IHBwX2Zvcm1hdF9lbGVtIFN0YWNrLnQ7XG4gIHBwX3Rib3hfc3RhY2sgOiB0Ym94IFN0YWNrLnQ7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBzZW1hbnRpY3MgdGFnIHN0YWNrLiAqKVxuICBwcF90YWdfc3RhY2sgOiBzdGFnIFN0YWNrLnQ7XG4gIHBwX21hcmtfc3RhY2sgOiBzdGFnIFN0YWNrLnQ7XG4gICgqIFZhbHVlIG9mIHJpZ2h0IG1hcmdpbi4gKilcbiAgbXV0YWJsZSBwcF9tYXJnaW4gOiBpbnQ7XG4gICgqIE1pbmltYWwgc3BhY2UgbGVmdCBiZWZvcmUgbWFyZ2luLCB3aGVuIG9wZW5pbmcgYSBib3guICopXG4gIG11dGFibGUgcHBfbWluX3NwYWNlX2xlZnQgOiBpbnQ7XG4gICgqIE1heGltdW0gdmFsdWUgb2YgaW5kZW50YXRpb246XG4gICAgIG5vIGJveCBjYW4gYmUgb3BlbmVkIGZ1cnRoZXIuICopXG4gIG11dGFibGUgcHBfbWF4X2luZGVudCA6IGludDtcbiAgKCogU3BhY2UgcmVtYWluaW5nIG9uIHRoZSBjdXJyZW50IGxpbmUuICopXG4gIG11dGFibGUgcHBfc3BhY2VfbGVmdCA6IGludDtcbiAgKCogQ3VycmVudCB2YWx1ZSBvZiBpbmRlbnRhdGlvbi4gKilcbiAgbXV0YWJsZSBwcF9jdXJyZW50X2luZGVudCA6IGludDtcbiAgKCogVHJ1ZSB3aGVuIHRoZSBsaW5lIGhhcyBiZWVuIGJyb2tlbiBieSB0aGUgcHJldHR5LXByaW50ZXIuICopXG4gIG11dGFibGUgcHBfaXNfbmV3X2xpbmUgOiBib29sO1xuICAoKiBUb3RhbCB3aWR0aCBvZiB0b2tlbnMgYWxyZWFkeSBwcmludGVkLiAqKVxuICBtdXRhYmxlIHBwX2xlZnRfdG90YWwgOiBpbnQ7XG4gICgqIFRvdGFsIHdpZHRoIG9mIHRva2VucyBldmVyIHB1dCBpbiBxdWV1ZS4gKilcbiAgbXV0YWJsZSBwcF9yaWdodF90b3RhbCA6IGludDtcbiAgKCogQ3VycmVudCBudW1iZXIgb2Ygb3BlbiBib3hlcy4gKilcbiAgbXV0YWJsZSBwcF9jdXJyX2RlcHRoIDogaW50O1xuICAoKiBNYXhpbXVtIG51bWJlciBvZiBib3hlcyB3aGljaCBjYW4gYmUgc2ltdWx0YW5lb3VzbHkgb3Blbi4gKilcbiAgbXV0YWJsZSBwcF9tYXhfYm94ZXMgOiBpbnQ7XG4gICgqIEVsbGlwc2lzIHN0cmluZy4gKilcbiAgbXV0YWJsZSBwcF9lbGxpcHNpcyA6IHN0cmluZztcbiAgKCogT3V0cHV0IGZ1bmN0aW9uLiAqKVxuICBtdXRhYmxlIHBwX291dF9zdHJpbmcgOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0O1xuICBtdXRhYmxlIHBwX291dF93aWR0aCA6IHN0cmluZyAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gaW50O1xuICAoKiBGbHVzaGluZyBmdW5jdGlvbi4gKilcbiAgbXV0YWJsZSBwcF9vdXRfZmx1c2ggOiB1bml0IC0+IHVuaXQ7XG4gICgqIE91dHB1dCBvZiBuZXcgbGluZXMuICopXG4gIG11dGFibGUgcHBfb3V0X25ld2xpbmUgOiB1bml0IC0+IHVuaXQ7XG4gICgqIE91dHB1dCBvZiBicmVhayBoaW50cyBzcGFjZXMuICopXG4gIG11dGFibGUgcHBfb3V0X3NwYWNlcyA6IGludCAtPiB1bml0O1xuICAoKiBPdXRwdXQgb2YgaW5kZW50YXRpb24gb2YgbmV3IGxpbmVzLiAqKVxuICBtdXRhYmxlIHBwX291dF9pbmRlbnQgOiBpbnQgLT4gdW5pdDtcbiAgKCogQXJlIHRhZ3MgcHJpbnRlZCA/ICopXG4gIG11dGFibGUgcHBfcHJpbnRfdGFncyA6IGJvb2w7XG4gICgqIEFyZSB0YWdzIG1hcmtlZCA/ICopXG4gIG11dGFibGUgcHBfbWFya190YWdzIDogYm9vbDtcbiAgKCogRmluZCBvcGVuaW5nIGFuZCBjbG9zaW5nIG1hcmtlcnMgb2YgdGFncy4gKilcbiAgbXV0YWJsZSBwcF9tYXJrX29wZW5fdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIG11dGFibGUgcHBfbWFya19jbG9zZV90YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgbXV0YWJsZSBwcF9wcmludF9vcGVuX3RhZyA6IHN0YWcgLT4gdW5pdDtcbiAgbXV0YWJsZSBwcF9wcmludF9jbG9zZV90YWcgOiBzdGFnIC0+IHVuaXQ7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbiAgcHBfcXVldWUgOiBwcF9xdWV1ZTtcbn1cblxuXG4oKiBUaGUgZm9ybWF0dGVyIHNwZWNpZmljIHRhZyBoYW5kbGluZyBmdW5jdGlvbnMuICopXG50eXBlIGZvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyA9IHtcbiAgbWFya19vcGVuX3N0YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgbWFya19jbG9zZV9zdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIHByaW50X29wZW5fc3RhZyA6IHN0YWcgLT4gdW5pdDtcbiAgcHJpbnRfY2xvc2Vfc3RhZyA6IHN0YWcgLT4gdW5pdDtcbn1cblxuXG4oKiBUaGUgZm9ybWF0dGVyIGZ1bmN0aW9ucyB0byBvdXRwdXQgbWF0ZXJpYWwuICopXG50eXBlIGZvcm1hdHRlcl9vdXRfZnVuY3Rpb25zID0ge1xuICBvdXRfc3RyaW5nIDogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdDtcbiAgb3V0X3dpZHRoOiBzdHJpbmcgLT4gcG9zOmludCAtPiBsZW46aW50IC0+IGludDtcbiAgb3V0X2ZsdXNoIDogdW5pdCAtPiB1bml0O1xuICBvdXRfbmV3bGluZSA6IHVuaXQgLT4gdW5pdDtcbiAgb3V0X3NwYWNlcyA6IGludCAtPiB1bml0O1xuICBvdXRfaW5kZW50IDogaW50IC0+IHVuaXQ7XG59XG5cblxuKCpcblxuICBBdXhpbGlhcmllcyBhbmQgYmFzaWMgZnVuY3Rpb25zLlxuXG4qKVxuXG4oKiBFbnRlciBhIHRva2VuIGluIHRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbmxldCBwcF9lbnF1ZXVlIHN0YXRlIHRva2VuID1cbiAgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gc3RhdGUucHBfcmlnaHRfdG90YWwgKyB0b2tlbi5sZW5ndGg7XG4gIFF1ZXVlLmFkZCB0b2tlbiBzdGF0ZS5wcF9xdWV1ZVxuXG5cbmxldCBwcF9jbGVhcl9xdWV1ZSBzdGF0ZSA9XG4gIHN0YXRlLnBwX2xlZnRfdG90YWwgPC0gMTsgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gMTtcbiAgUXVldWUuY2xlYXIgc3RhdGUucHBfcXVldWVcblxuXG4oKiBQcF9pbmZpbml0eTogbGFyZ2UgdmFsdWUgZm9yIGRlZmF1bHQgdG9rZW5zIHNpemUuXG5cbiAgIFBwX2luZmluaXR5IGlzIGRvY3VtZW50ZWQgYXMgYmVpbmcgZ3JlYXRlciB0aGFuIDFlMTA7IHRvIGF2b2lkXG4gICBjb25mdXNpb24gYWJvdXQgdGhlIHdvcmQgJ2dyZWF0ZXInLCB3ZSBjaG9vc2UgcHBfaW5maW5pdHkgZ3JlYXRlclxuICAgdGhhbiAxZTEwICsgMTsgZm9yIGNvcnJlY3QgaGFuZGxpbmcgb2YgdGVzdHMgaW4gdGhlIGFsZ29yaXRobSxcbiAgIHBwX2luZmluaXR5IG11c3QgYmUgZXZlbiBvbmUgbW9yZSB0aGFuIDFlMTAgKyAxOyBsZXQncyBzdGFuZCBvbiB0aGVcbiAgIHNhZmUgc2lkZSBieSBjaG9vc2luZyAxLmUxMCsxMC5cblxuICAgUHBfaW5maW5pdHkgY291bGQgcHJvYmFibHkgYmUgMTA3Mzc0MTgyMyB0aGF0IGlzIDJeMzAgLSAxLCB0aGF0IGlzXG4gICB0aGUgbWluaW1hbCB1cHBlciBib3VuZCBmb3IgaW50ZWdlcnM7IG5vdyB0aGF0IG1heF9pbnQgaXMgZGVmaW5lZCxcbiAgIHRoaXMgbGltaXQgY291bGQgYWxzbyBiZSBkZWZpbmVkIGFzIG1heF9pbnQgLSAxLlxuXG4gICBIb3dldmVyLCBiZWZvcmUgc2V0dGluZyBwcF9pbmZpbml0eSB0byBzb21ldGhpbmcgYXJvdW5kIG1heF9pbnQsIHdlXG4gICBtdXN0IGNhcmVmdWxseSBkb3VibGUtY2hlY2sgYWxsIHRoZSBpbnRlZ2VyIGFyaXRobWV0aWMgb3BlcmF0aW9uc1xuICAgdGhhdCBpbnZvbHZlIHBwX2luZmluaXR5LCBzaW5jZSBhbnkgb3ZlcmZsb3cgd291bGQgd3JlY2sgaGF2b2MgdGhlXG4gICBwcmV0dHktcHJpbnRpbmcgYWxnb3JpdGhtJ3MgaW52YXJpYW50cy4gR2l2ZW4gdGhhdCB0aGlzIGFyaXRobWV0aWNcbiAgIGNvcnJlY3RuZXNzIGNoZWNrIGlzIGRpZmZpY3VsdCBhbmQgZXJyb3IgcHJvbmUgYW5kIGdpdmVuIHRoYXQgMWUxMFxuICAgKyAxIGlzIGluIHByYWN0aWNlIGxhcmdlIGVub3VnaCwgdGhlcmUgaXMgbm8gbmVlZCB0byBhdHRlbXB0IHRvIHNldFxuICAgcHBfaW5maW5pdHkgdG8gdGhlIHRoZW9yZXRpY2FsbHkgbWF4aW11bSBsaW1pdC4gSXQgaXMgbm90IHdvcnRoIHRoZVxuICAgYnVyZGVuICEgKilcbmxldCBwcF9pbmZpbml0eSA9IDEwMDAwMDAwMTBcblxuKCogT3V0cHV0IGZ1bmN0aW9ucyBmb3IgdGhlIGZvcm1hdHRlci4gKilcbmxldCBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIHMgPSBzdGF0ZS5wcF9vdXRfc3RyaW5nIHMgMCAoU3RyaW5nLmxlbmd0aCBzKVxubGV0IHBwX3N0cmluZ193aWR0aCBzdGF0ZSBzID0gc3RhdGUucHBfb3V0X3dpZHRoIHMgfnBvczowIH5sZW46KFN0cmluZy5sZW5ndGggcylcbmFuZCBwcF9vdXRwdXRfc3Vic3RyaW5nIHN0YXRlIH5wb3MgfmxlbiBzID1cbiAgc3RhdGUucHBfb3V0X3N0cmluZyBzIHBvcyBsZW5cbmFuZCBwcF9zdWJzdHJpbmdfd2lkdGggc3RhdGUgfnBvcyB+bGVuIHMgPSBzdGF0ZS5wcF9vdXRfd2lkdGggcyB+cG9zIH5sZW5cbmFuZCBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZSA9IHN0YXRlLnBwX291dF9uZXdsaW5lICgpXG5hbmQgcHBfb3V0cHV0X3NwYWNlcyBzdGF0ZSBuID0gc3RhdGUucHBfb3V0X3NwYWNlcyBuXG5hbmQgcHBfb3V0cHV0X2luZGVudCBzdGF0ZSBuID0gc3RhdGUucHBfb3V0X2luZGVudCBuXG5cbigqIEZvcm1hdCBhIHRleHR1YWwgdG9rZW4gKilcbmxldCBmb3JtYXRfcHBfdGV4dCBzdGF0ZSBzaXplIHRleHQgPVxuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX3NwYWNlX2xlZnQgLSBzaXplO1xuICBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIHRleHQ7XG4gIHN0YXRlLnBwX2lzX25ld19saW5lIDwtIGZhbHNlXG5cbigqIEZvcm1hdCBhIHNsaWNlICopXG5sZXQgZm9ybWF0X3BwX3N1YnN0cmluZyBzdGF0ZSBzaXplIH5wb3MgfmxlbiBzb3VyY2UgPVxuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX3NwYWNlX2xlZnQgLSBzaXplO1xuICBwcF9vdXRwdXRfc3Vic3RyaW5nIHN0YXRlIH5wb3MgfmxlbiBzb3VyY2U7XG4gIHN0YXRlLnBwX2lzX25ld19saW5lIDwtIGZhbHNlXG5cbigqIEZvcm1hdCBhIHN0cmluZyBieSBpdHMgbGVuZ3RoLCBpZiBub3QgZW1wdHkgKilcbmxldCBmb3JtYXRfc3RyaW5nIHN0YXRlIHMgPVxuICBpZiBzIDw+IFwiXCIgdGhlbiBmb3JtYXRfcHBfdGV4dCBzdGF0ZSAocHBfc3RyaW5nX3dpZHRoIHN0YXRlIHMpIHNcblxuKCogVG8gZm9ybWF0IGEgYnJlYWssIGluZGVudGluZyBhIG5ldyBsaW5lLiAqKVxubGV0IGJyZWFrX25ld19saW5lIHN0YXRlIChiZWZvcmUsIG9mZnNldCwgYWZ0ZXIpIHdpZHRoID1cbiAgZm9ybWF0X3N0cmluZyBzdGF0ZSBiZWZvcmU7XG4gIHBwX291dHB1dF9uZXdsaW5lIHN0YXRlO1xuICBzdGF0ZS5wcF9pc19uZXdfbGluZSA8LSB0cnVlO1xuICBsZXQgaW5kZW50ID0gc3RhdGUucHBfbWFyZ2luIC0gd2lkdGggKyBvZmZzZXQgaW5cbiAgKCogRG9uJ3QgaW5kZW50IG1vcmUgdGhhbiBwcF9tYXhfaW5kZW50LiAqKVxuICBsZXQgcmVhbF9pbmRlbnQgPSBJbnQubWluIHN0YXRlLnBwX21heF9pbmRlbnQgaW5kZW50IGluXG4gIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50IDwtIHJlYWxfaW5kZW50O1xuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50O1xuICBwcF9vdXRwdXRfaW5kZW50IHN0YXRlIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50O1xuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGFmdGVyXG5cblxuKCogVG8gZm9yY2UgYSBsaW5lIGJyZWFrIGluc2lkZSBhIGJveDogbm8gb2Zmc2V0IGlzIGFkZGVkLiAqKVxubGV0IGJyZWFrX2xpbmUgc3RhdGUgd2lkdGggPSBicmVha19uZXdfbGluZSBzdGF0ZSAoXCJcIiwgMCwgXCJcIikgd2lkdGhcblxuKCogVG8gZm9ybWF0IGEgYnJlYWsgdGhhdCBmaXRzIG9uIHRoZSBjdXJyZW50IGxpbmUuICopXG5sZXQgYnJlYWtfc2FtZV9saW5lIHN0YXRlIChiZWZvcmUsIHdpZHRoLCBhZnRlcikgPVxuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGJlZm9yZTtcbiAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IC0gd2lkdGg7XG4gIHBwX291dHB1dF9zcGFjZXMgc3RhdGUgd2lkdGg7XG4gIGZvcm1hdF9zdHJpbmcgc3RhdGUgYWZ0ZXJcblxuXG4oKiBUbyBpbmRlbnQgbm8gbW9yZSB0aGFuIHBwX21heF9pbmRlbnQsIGlmIG9uZSB0cmllcyB0byBvcGVuIGEgYm94XG4gICBiZXlvbmQgcHBfbWF4X2luZGVudCwgdGhlbiB0aGUgYm94IGlzIHJlamVjdGVkIG9uIHRoZSBsZWZ0XG4gICBieSBzaW11bGF0aW5nIGEgYnJlYWsuICopXG5sZXQgcHBfZm9yY2VfYnJlYWtfbGluZSBzdGF0ZSA9XG4gIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfZm9ybWF0X3N0YWNrIHdpdGhcbiAgfCBOb25lIC0+IHBwX291dHB1dF9uZXdsaW5lIHN0YXRlXG4gIHwgU29tZSB7IGJveF90eXBlOyB3aWR0aCB9IC0+XG4gICAgaWYgd2lkdGggPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0IHRoZW5cbiAgICAgIG1hdGNoIGJveF90eXBlIHdpdGhcbiAgICAgIHwgUHBfZml0cyB8IFBwX2hib3ggLT4gKClcbiAgICAgIHwgUHBfdmJveCB8IFBwX2h2Ym94IHwgUHBfaG92Ym94IHwgUHBfYm94IC0+IGJyZWFrX2xpbmUgc3RhdGUgd2lkdGhcblxuXG4oKiBUbyBza2lwIGEgdG9rZW4sIGlmIHRoZSBwcmV2aW91cyBsaW5lIGhhcyBiZWVuIGJyb2tlbi4gKilcbmxldCBwcF9za2lwX3Rva2VuIHN0YXRlID1cbiAgbWF0Y2ggUXVldWUudGFrZV9vcHQgc3RhdGUucHBfcXVldWUgd2l0aFxuICB8IE5vbmUgLT4gKCkgKCogcHJpbnRfaWZfbmV3bGluZSBtdXN0IGhhdmUgYmVlbiB0aGUgbGFzdCBwcmludGluZyBjb21tYW5kICopXG4gIHwgU29tZSB7IHNpemU7IGxlbmd0aDsgXyB9IC0+XG4gICAgc3RhdGUucHBfbGVmdF90b3RhbCA8LSBzdGF0ZS5wcF9sZWZ0X3RvdGFsIC0gbGVuZ3RoO1xuICAgIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfc3BhY2VfbGVmdCArIFNpemUudG9faW50IHNpemVcblxuXG4oKlxuXG4gIFRoZSBtYWluIHByZXR0eSBwcmludGluZyBmdW5jdGlvbnMuXG5cbiopXG5cbigqIEZvcm1hdHRpbmcgYSB0b2tlbiB3aXRoIGEgZ2l2ZW4gc2l6ZS4gKilcbmxldCBmb3JtYXRfcHBfdG9rZW4gc3RhdGUgc2l6ZSA9IGZ1bmN0aW9uXG4gIHwgUHBfdGV4dCBzIC0+XG4gICAgZm9ybWF0X3BwX3RleHQgc3RhdGUgc2l6ZSBzXG4gIHwgUHBfc3Vic3RyaW5nIHtzb3VyY2U7cG9zO2xlbn0gLT5cbiAgICBmb3JtYXRfcHBfc3Vic3RyaW5nIHN0YXRlIHNpemUgfnBvcyB+bGVuIHNvdXJjZVxuICB8IFBwX2JlZ2luIChvZmYsIHR5KSAtPlxuICAgIGxldCBpbnNlcnRpb25fcG9pbnQgPSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IGluXG4gICAgaWYgaW5zZXJ0aW9uX3BvaW50ID4gc3RhdGUucHBfbWF4X2luZGVudCB0aGVuXG4gICAgICAoKiBjYW4gbm90IG9wZW4gYSBib3ggcmlnaHQgdGhlcmUuICopXG4gICAgICBiZWdpbiBwcF9mb3JjZV9icmVha19saW5lIHN0YXRlIGVuZDtcbiAgICBsZXQgd2lkdGggPSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IC0gb2ZmIGluXG4gICAgbGV0IGJveF90eXBlID1cbiAgICAgIG1hdGNoIHR5IHdpdGhcbiAgICAgIHwgUHBfdmJveCAtPiBQcF92Ym94XG4gICAgICB8IFBwX2hib3ggfCBQcF9odmJveCB8IFBwX2hvdmJveCB8IFBwX2JveCB8IFBwX2ZpdHMgLT5cbiAgICAgICAgaWYgc2l6ZSA+IHN0YXRlLnBwX3NwYWNlX2xlZnQgdGhlbiB0eSBlbHNlIFBwX2ZpdHMgaW5cbiAgICBTdGFjay5wdXNoIHsgYm94X3R5cGU7IHdpZHRoIH0gc3RhdGUucHBfZm9ybWF0X3N0YWNrXG5cbiAgfCBQcF9lbmQgLT5cbiAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB8PiBpZ25vcmVcblxuICB8IFBwX3RiZWdpbiAoUHBfdGJveCBfIGFzIHRib3gpIC0+XG4gICAgU3RhY2sucHVzaCB0Ym94IHN0YXRlLnBwX3Rib3hfc3RhY2tcblxuICB8IFBwX3RlbmQgLT5cbiAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3Rib3hfc3RhY2sgfD4gaWdub3JlXG5cbiAgfCBQcF9zdGFiIC0+XG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF90Ym94X3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gb3BlbiB0YWJ1bGF0aW9uIGJveC4gKilcbiAgICB8IFNvbWUgKFBwX3Rib3ggdGFicykgLT5cbiAgICAgIGxldCByZWMgYWRkX3RhYiBuID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPiBbbl1cbiAgICAgICAgfCB4IDo6IGwgYXMgbHMgLT4gaWYgbiA8IHggdGhlbiBuIDo6IGxzIGVsc2UgeCA6OiBhZGRfdGFiIG4gbCBpblxuICAgICAgdGFicyA6PSBhZGRfdGFiIChzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0KSAhdGFic1xuICAgIGVuZFxuXG4gIHwgUHBfdGJyZWFrIChuLCBvZmYpIC0+XG4gICAgbGV0IGluc2VydGlvbl9wb2ludCA9IHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnQgaW5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX3Rib3hfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBvcGVuIHRhYnVsYXRpb24gYm94LiAqKVxuICAgIHwgU29tZSAoUHBfdGJveCB0YWJzKSAtPlxuICAgICAgbGV0IHRhYiA9XG4gICAgICAgIG1hdGNoICF0YWJzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBpbnNlcnRpb25fcG9pbnRcbiAgICAgICAgfCBmaXJzdCA6OiBfIC0+XG4gICAgICAgICAgbGV0IHJlYyBmaW5kID0gZnVuY3Rpb25cbiAgICAgICAgICAgIHwgaGVhZCA6OiB0YWlsIC0+XG4gICAgICAgICAgICAgIGlmIGhlYWQgPj0gaW5zZXJ0aW9uX3BvaW50IHRoZW4gaGVhZCBlbHNlIGZpbmQgdGFpbFxuICAgICAgICAgICAgfCBbXSAtPiBmaXJzdCBpblxuICAgICAgICAgIGZpbmQgIXRhYnMgaW5cbiAgICAgIGxldCBvZmZzZXQgPSB0YWIgLSBpbnNlcnRpb25fcG9pbnQgaW5cbiAgICAgIGlmIG9mZnNldCA+PSAwXG4gICAgICB0aGVuIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSAoXCJcIiwgb2Zmc2V0ICsgbiwgXCJcIilcbiAgICAgIGVsc2UgYnJlYWtfbmV3X2xpbmUgc3RhdGUgKFwiXCIsIHRhYiArIG9mZiwgXCJcIikgc3RhdGUucHBfbWFyZ2luXG4gICAgZW5kXG5cbiAgfCBQcF9uZXdsaW5lIC0+XG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9mb3JtYXRfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZSAoKiBObyBvcGVuIGJveC4gKilcbiAgICB8IFNvbWUgeyB3aWR0aDsgX30gLT4gYnJlYWtfbGluZSBzdGF0ZSB3aWR0aFxuICAgIGVuZFxuXG4gIHwgUHBfaWZfbmV3bGluZSAtPlxuICAgIGlmIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50IDw+IHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnRcbiAgICB0aGVuIHBwX3NraXBfdG9rZW4gc3RhdGVcblxuICB8IFBwX2JyZWFrIHsgZml0czsgYnJlYWtzIH0gLT5cbiAgICBsZXQgYmVmb3JlLCBvZmYsIF8gPSBicmVha3MgaW5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+ICgpICgqIE5vIG9wZW4gYm94LiAqKVxuICAgIHwgU29tZSB7IGJveF90eXBlOyB3aWR0aCB9IC0+XG4gICAgICBiZWdpbiBtYXRjaCBib3hfdHlwZSB3aXRoXG4gICAgICB8IFBwX2hvdmJveCAtPlxuICAgICAgICBpZiBzaXplICsgcHBfc3RyaW5nX3dpZHRoIHN0YXRlIGJlZm9yZSA+IHN0YXRlLnBwX3NwYWNlX2xlZnRcbiAgICAgICAgdGhlbiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgICAgZWxzZSBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgfCBQcF9ib3ggLT5cbiAgICAgICAgKCogSGF2ZSB0aGUgbGluZSBqdXN0IGJlZW4gYnJva2VuIGhlcmUgPyAqKVxuICAgICAgICBpZiBzdGF0ZS5wcF9pc19uZXdfbGluZSB0aGVuIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzIGVsc2VcbiAgICAgICAgaWYgc2l6ZSArIHBwX3N0cmluZ193aWR0aCBzdGF0ZSBiZWZvcmUgPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0XG4gICAgICAgICAgdGhlbiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGggZWxzZVxuICAgICAgICAoKiBicmVhayB0aGUgbGluZSBoZXJlIGxlYWRzIHRvIG5ldyBpbmRlbnRhdGlvbiA/ICopXG4gICAgICAgIGlmIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50ID4gc3RhdGUucHBfbWFyZ2luIC0gd2lkdGggKyBvZmZcbiAgICAgICAgdGhlbiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgICAgZWxzZSBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgfCBQcF9odmJveCAtPiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgIHwgUHBfZml0cyAtPiBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgfCBQcF92Ym94IC0+IGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgfCBQcF9oYm94IC0+IGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICBlbmRcbiAgICBlbmRcblxuICAgfCBQcF9vcGVuX3RhZyB0YWdfbmFtZSAtPlxuICAgICBsZXQgbWFya2VyID0gc3RhdGUucHBfbWFya19vcGVuX3RhZyB0YWdfbmFtZSBpblxuICAgICBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIG1hcmtlcjtcbiAgICAgU3RhY2sucHVzaCB0YWdfbmFtZSBzdGF0ZS5wcF9tYXJrX3N0YWNrXG5cbiAgIHwgUHBfY2xvc2VfdGFnIC0+XG4gICAgIGJlZ2luIG1hdGNoIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfbWFya19zdGFjayB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKSAoKiBObyBtb3JlIHRhZyB0byBjbG9zZS4gKilcbiAgICAgfCBTb21lIHRhZ19uYW1lIC0+XG4gICAgICAgbGV0IG1hcmtlciA9IHN0YXRlLnBwX21hcmtfY2xvc2VfdGFnIHRhZ19uYW1lIGluXG4gICAgICAgcHBfb3V0cHV0X3N0cmluZyBzdGF0ZSBtYXJrZXJcbiAgICAgZW5kXG5cblxuKCogUHJpbnQgaWYgdG9rZW4gc2l6ZSBpcyBrbm93biBlbHNlIHByaW50aW5nIGlzIGRlbGF5ZWQuXG4gICBQcmludGluZyBpcyBkZWxheWVkIHdoZW4gdGhlIHRleHQgd2FpdGluZyBpbiB0aGUgcXVldWUgcmVxdWlyZXNcbiAgIG1vcmUgcm9vbSB0byBmb3JtYXQgdGhhbiBleGlzdHMgb24gdGhlIGN1cnJlbnQgbGluZS4gKilcbmxldCByZWMgYWR2YW5jZV9sZWZ0IHN0YXRlID1cbiAgbWF0Y2ggUXVldWUucGVla19vcHQgc3RhdGUucHBfcXVldWUgd2l0aFxuICB8IE5vbmUgLT4gKCkgKCogTm8gdG9rZW5zIHRvIHByaW50ICopXG4gIHwgU29tZSB7IHNpemU7IHRva2VuOyBsZW5ndGggfSAtPlxuICAgIGxldCBwZW5kaW5nX2NvdW50ID0gc3RhdGUucHBfcmlnaHRfdG90YWwgLSBzdGF0ZS5wcF9sZWZ0X3RvdGFsIGluXG4gICAgaWYgU2l6ZS5pc19rbm93biBzaXplIHx8IHBlbmRpbmdfY291bnQgPj0gc3RhdGUucHBfc3BhY2VfbGVmdCB0aGVuIGJlZ2luXG4gICAgICBtYXRjaCBRdWV1ZS50YWtlX29wdCBzdGF0ZS5wcF9xdWV1ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJGb3JtYXQ6IFVuc3luY2hyb25pemVkIGFjY2VzcyB0byBmb3JtYXR0ZXJcIlxuICAgICAgfCBTb21lIF8gLT4gICgqIE5vdCBlbXB0eTogd2UgcGVlayBpbnRvIGl0ICopXG4gICAgICAgIGxldCBzaXplID1cbiAgICAgICAgICBpZiBTaXplLmlzX2tub3duIHNpemUgdGhlbiBTaXplLnRvX2ludCBzaXplIGVsc2UgcHBfaW5maW5pdHlcbiAgICAgICAgaW5cbiAgICAgICAgZm9ybWF0X3BwX3Rva2VuIHN0YXRlIHNpemUgdG9rZW47XG4gICAgICAgIHN0YXRlLnBwX2xlZnRfdG90YWwgPC0gbGVuZ3RoICsgc3RhdGUucHBfbGVmdF90b3RhbDtcbiAgICAgICAgKGFkdmFuY2VfbGVmdCBbQHRhaWxjYWxsXSkgc3RhdGVcbiAgICBlbmRcblxuXG4oKiBUbyBlbnF1ZXVlIGEgdG9rZW4gOiB0cnkgdG8gYWR2YW5jZS4gKilcbmxldCBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgdG9rID0gcHBfZW5xdWV1ZSBzdGF0ZSB0b2s7IGFkdmFuY2VfbGVmdCBzdGF0ZVxuXG5cbigqIFRvIGVucXVldWUgc3RyaW5ncy4gKilcbmxldCBlbnF1ZXVlX3N0cmluZ19hcyBzdGF0ZSBzaXplIHMgPVxuICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgeyBzaXplOyB0b2tlbiA9IFBwX3RleHQgczsgbGVuZ3RoID0gU2l6ZS50b19pbnQgc2l6ZSB9XG5cbigqIFRvIGVucXVldWUgc3Vic3RyaW5ncy4gKilcbmxldCBlbnF1ZXVlX3N1YnN0cmluZ19hcyB+cG9zIH5sZW4gc3RhdGUgc2l6ZSBzb3VyY2UgPVxuICBsZXQgdG9rZW4gPSBQcF9zdWJzdHJpbmcge3NvdXJjZTtwb3M7bGVufSBpblxuICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgeyBzaXplOyB0b2tlbjsgbGVuZ3RoID0gU2l6ZS50b19pbnQgc2l6ZSB9XG5cbmxldCBlbnF1ZXVlX3N0cmluZyBzdGF0ZSBzID1cbiAgbGV0IHNpemUgPSBwcF9zdHJpbmdfd2lkdGggc3RhdGUgcyBpblxuICBlbnF1ZXVlX3N0cmluZ19hcyBzdGF0ZSAoU2l6ZS5vZl9pbnQgc2l6ZSkgc1xuXG5cbigqIFJvdXRpbmVzIGZvciBzY2FuIHN0YWNrXG4gICBkZXRlcm1pbmUgc2l6ZSBvZiBib3hlcy4gKilcblxuKCogVGhlIHNjYW5fc3RhY2sgaXMgbmV2ZXIgZW1wdHkuICopXG5sZXQgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHN0YWNrID1cbiAgU3RhY2suY2xlYXIgc3RhY2s7XG4gIGxldCBxdWV1ZV9lbGVtID0geyBzaXplID0gU2l6ZS51bmtub3duOyB0b2tlbiA9IFBwX3RleHQgXCJcIjsgbGVuZ3RoID0gMCB9IGluXG4gIFN0YWNrLnB1c2ggeyBsZWZ0X3RvdGFsID0gLTE7IHF1ZXVlX2VsZW0gfSBzdGFja1xuXG4oKiBTZXR0aW5nIHRoZSBzaXplIG9mIGJveGVzIG9uIHNjYW4gc3RhY2s6XG4gICBpZiB0eSA9IHRydWUgdGhlbiBzaXplIG9mIGJyZWFrIGlzIHNldCBlbHNlIHNpemUgb2YgYm94IGlzIHNldDtcbiAgIGluIGVhY2ggY2FzZSBwcF9zY2FuX3N0YWNrIGlzIHBvcHBlZC5cblxuICAgTm90ZTpcbiAgIFBhdHRlcm4gbWF0Y2hpbmcgb24gc2NhbiBzdGFjayBpcyBleGhhdXN0aXZlLCBzaW5jZSBzY2FuX3N0YWNrIGlzIG5ldmVyXG4gICBlbXB0eS5cbiAgIFBhdHRlcm4gbWF0Y2hpbmcgb24gdG9rZW4gaW4gc2NhbiBzdGFjayBpcyBhbHNvIGV4aGF1c3RpdmUsXG4gICBzaW5jZSBzY2FuX3B1c2ggaXMgdXNlZCBvbiBicmVha3MgYW5kIG9wZW5pbmcgb2YgYm94ZXMuICopXG5sZXQgc2V0X3NpemUgc3RhdGUgdHkgPVxuICBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX3NjYW5fc3RhY2sgd2l0aFxuICB8IE5vbmUgLT4gKCkgKCogc2Nhbl9zdGFjayBpcyBuZXZlciBlbXB0eS4gKilcbiAgfCBTb21lIHsgbGVmdF90b3RhbDsgcXVldWVfZWxlbSB9IC0+XG4gICAgbGV0IHNpemUgPSBTaXplLnRvX2ludCBxdWV1ZV9lbGVtLnNpemUgaW5cbiAgICAoKiB0ZXN0IGlmIHNjYW4gc3RhY2sgY29udGFpbnMgYW55IGRhdGEgdGhhdCBpcyBub3Qgb2Jzb2xldGUuICopXG4gICAgaWYgbGVmdF90b3RhbCA8IHN0YXRlLnBwX2xlZnRfdG90YWwgdGhlblxuICAgICAgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHN0YXRlLnBwX3NjYW5fc3RhY2tcbiAgICBlbHNlXG4gICAgICBtYXRjaCBxdWV1ZV9lbGVtLnRva2VuIHdpdGhcbiAgICAgIHwgUHBfYnJlYWsgXyB8IFBwX3RicmVhayAoXywgXykgLT5cbiAgICAgICAgaWYgdHkgdGhlbiBiZWdpblxuICAgICAgICAgIHF1ZXVlX2VsZW0uc2l6ZSA8LSBTaXplLm9mX2ludCAoc3RhdGUucHBfcmlnaHRfdG90YWwgKyBzaXplKTtcbiAgICAgICAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3NjYW5fc3RhY2sgfD4gaWdub3JlXG4gICAgICAgIGVuZFxuICAgICAgfCBQcF9iZWdpbiAoXywgXykgLT5cbiAgICAgICAgaWYgbm90IHR5IHRoZW4gYmVnaW5cbiAgICAgICAgICBxdWV1ZV9lbGVtLnNpemUgPC0gU2l6ZS5vZl9pbnQgKHN0YXRlLnBwX3JpZ2h0X3RvdGFsICsgc2l6ZSk7XG4gICAgICAgICAgU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9zY2FuX3N0YWNrIHw+IGlnbm9yZVxuICAgICAgICBlbmRcbiAgICAgIHwgUHBfdGV4dCBfIHwgUHBfc3Vic3RyaW5nIF8gfCBQcF9zdGFiIHwgUHBfdGJlZ2luIF8gfCBQcF90ZW5kIHwgUHBfZW5kXG4gICAgICB8IFBwX25ld2xpbmUgfCBQcF9pZl9uZXdsaW5lIHwgUHBfb3Blbl90YWcgXyB8IFBwX2Nsb3NlX3RhZyAtPlxuICAgICAgICAoKSAoKiBzY2FuX3B1c2ggaXMgb25seSB1c2VkIGZvciBicmVha3MgYW5kIGJveGVzLiAqKVxuXG5cbigqIFB1c2ggYSB0b2tlbiBvbiBwcmV0dHktcHJpbnRlciBzY2FubmluZyBzdGFjay5cbiAgIElmIGIgaXMgdHJ1ZSBzZXRfc2l6ZSBpcyBjYWxsZWQuICopXG5sZXQgc2Nhbl9wdXNoIHN0YXRlIGIgdG9rZW4gPVxuICBwcF9lbnF1ZXVlIHN0YXRlIHRva2VuO1xuICBpZiBiIHRoZW4gc2V0X3NpemUgc3RhdGUgdHJ1ZTtcbiAgbGV0IGVsZW0gPSB7IGxlZnRfdG90YWwgPSBzdGF0ZS5wcF9yaWdodF90b3RhbDsgcXVldWVfZWxlbSA9IHRva2VuIH0gaW5cbiAgU3RhY2sucHVzaCBlbGVtIHN0YXRlLnBwX3NjYW5fc3RhY2tcblxuXG4oKiBUbyBvcGVuIGEgbmV3IGJveCA6XG4gICB0aGUgdXNlciBtYXkgc2V0IHRoZSBkZXB0aCBib3VuZCBwcF9tYXhfYm94ZXNcbiAgIGFueSB0ZXh0IG5lc3RlZCBkZWVwZXIgaXMgcHJpbnRlZCBhcyB0aGUgZWxsaXBzaXMgc3RyaW5nLiAqKVxubGV0IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgYnJfdHkgPVxuICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggKyAxO1xuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUub2ZfaW50ICgtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsKSBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbiA9IFBwX2JlZ2luIChpbmRlbnQsIGJyX3R5KTsgbGVuZ3RoID0gMCB9IGluXG4gICAgc2Nhbl9wdXNoIHN0YXRlIGZhbHNlIGVsZW0gZWxzZVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoID0gc3RhdGUucHBfbWF4X2JveGVzXG4gIHRoZW4gZW5xdWV1ZV9zdHJpbmcgc3RhdGUgc3RhdGUucHBfZWxsaXBzaXNcblxuXG4oKiBUaGUgYm94IHdoaWNoIGlzIGFsd2F5cyBvcGVuLiAqKVxubGV0IHBwX29wZW5fc3lzX2JveCBzdGF0ZSA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSAwIFBwX2hvdmJveFxuXG4oKiBDbG9zZSBhIGJveCwgc2V0dGluZyBzaXplcyBvZiBpdHMgc3ViIGJveGVzLiAqKVxubGV0IHBwX2Nsb3NlX2JveCBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPiAxIHRoZW5cbiAgYmVnaW5cbiAgICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBiZWdpblxuICAgICAgcHBfZW5xdWV1ZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfZW5kOyBsZW5ndGggPSAwIH07XG4gICAgICBzZXRfc2l6ZSBzdGF0ZSB0cnVlOyBzZXRfc2l6ZSBzdGF0ZSBmYWxzZVxuICAgIGVuZDtcbiAgICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggLSAxO1xuICBlbmRcblxuXG4oKiBPcGVuIGEgdGFnLCBwdXNoaW5nIGl0IG9uIHRoZSB0YWcgc3RhY2suICopXG5sZXQgcHBfb3Blbl9zdGFnIHN0YXRlIHRhZ19uYW1lID1cbiAgaWYgc3RhdGUucHBfcHJpbnRfdGFncyB0aGVuXG4gIGJlZ2luXG4gICAgU3RhY2sucHVzaCB0YWdfbmFtZSBzdGF0ZS5wcF90YWdfc3RhY2s7XG4gICAgc3RhdGUucHBfcHJpbnRfb3Blbl90YWcgdGFnX25hbWVcbiAgZW5kO1xuICBpZiBzdGF0ZS5wcF9tYXJrX3RhZ3MgdGhlblxuICAgIGxldCB0b2tlbiA9IFBwX29wZW5fdGFnIHRhZ19uYW1lIGluXG4gICAgcHBfZW5xdWV1ZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuOyBsZW5ndGggPSAwIH1cblxuXG4oKiBDbG9zZSBhIHRhZywgcG9wcGluZyBpdCBmcm9tIHRoZSB0YWcgc3RhY2suICopXG5sZXQgcHBfY2xvc2Vfc3RhZyBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX21hcmtfdGFncyB0aGVuXG4gICAgcHBfZW5xdWV1ZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfY2xvc2VfdGFnOyBsZW5ndGggPSAwIH07XG4gIGlmIHN0YXRlLnBwX3ByaW50X3RhZ3MgdGhlblxuICAgIG1hdGNoIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfdGFnX3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gbW9yZSB0YWcgdG8gY2xvc2UuICopXG4gICAgfCBTb21lIHRhZ19uYW1lIC0+XG4gICAgICBzdGF0ZS5wcF9wcmludF9jbG9zZV90YWcgdGFnX25hbWVcblxubGV0IHBwX3NldF9wcmludF90YWdzIHN0YXRlIGIgPSBzdGF0ZS5wcF9wcmludF90YWdzIDwtIGJcbmxldCBwcF9zZXRfbWFya190YWdzIHN0YXRlIGIgPSBzdGF0ZS5wcF9tYXJrX3RhZ3MgPC0gYlxubGV0IHBwX2dldF9wcmludF90YWdzIHN0YXRlICgpID0gc3RhdGUucHBfcHJpbnRfdGFnc1xubGV0IHBwX2dldF9tYXJrX3RhZ3Mgc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXJrX3RhZ3NcbmxldCBwcF9zZXRfdGFncyBzdGF0ZSBiID1cbiAgcHBfc2V0X3ByaW50X3RhZ3Mgc3RhdGUgYjsgcHBfc2V0X21hcmtfdGFncyBzdGF0ZSBiXG5cblxuKCogSGFuZGxpbmcgdGFnIGhhbmRsaW5nIGZ1bmN0aW9uczogZ2V0L3NldCBmdW5jdGlvbnMuICopXG5sZXQgcHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBzdGF0ZSAoKSA9IHtcbiAgbWFya19vcGVuX3N0YWcgPSBzdGF0ZS5wcF9tYXJrX29wZW5fdGFnO1xuICBtYXJrX2Nsb3NlX3N0YWcgPSBzdGF0ZS5wcF9tYXJrX2Nsb3NlX3RhZztcbiAgcHJpbnRfb3Blbl9zdGFnID0gc3RhdGUucHBfcHJpbnRfb3Blbl90YWc7XG4gIHByaW50X2Nsb3NlX3N0YWcgPSBzdGF0ZS5wcF9wcmludF9jbG9zZV90YWc7XG59XG5cblxubGV0IHBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgc3RhdGUge1xuICAgICBtYXJrX29wZW5fc3RhZyA9IG1vdDtcbiAgICAgbWFya19jbG9zZV9zdGFnID0gbWN0O1xuICAgICBwcmludF9vcGVuX3N0YWcgPSBwb3Q7XG4gICAgIHByaW50X2Nsb3NlX3N0YWcgPSBwY3Q7XG4gIH0gPVxuICBzdGF0ZS5wcF9tYXJrX29wZW5fdGFnIDwtIG1vdDtcbiAgc3RhdGUucHBfbWFya19jbG9zZV90YWcgPC0gbWN0O1xuICBzdGF0ZS5wcF9wcmludF9vcGVuX3RhZyA8LSBwb3Q7XG4gIHN0YXRlLnBwX3ByaW50X2Nsb3NlX3RhZyA8LSBwY3RcblxuXG4oKiBJbml0aWFsaXplIHByZXR0eS1wcmludGVyLiAqKVxubGV0IHBwX3Jpbml0IHN0YXRlID1cbiAgcHBfY2xlYXJfcXVldWUgc3RhdGU7XG4gIGluaXRpYWxpemVfc2Nhbl9zdGFjayBzdGF0ZS5wcF9zY2FuX3N0YWNrO1xuICBTdGFjay5jbGVhciBzdGF0ZS5wcF9mb3JtYXRfc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX3Rib3hfc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX3RhZ19zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfbWFya19zdGFjaztcbiAgc3RhdGUucHBfY3VycmVudF9pbmRlbnQgPC0gMDtcbiAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSAwO1xuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX21hcmdpbjtcbiAgcHBfb3Blbl9zeXNfYm94IHN0YXRlXG5cbmxldCBjbGVhcl90YWdfc3RhY2sgc3RhdGUgPVxuICBTdGFjay5pdGVyIChmdW4gXyAtPiBwcF9jbG9zZV9zdGFnIHN0YXRlICgpKSBzdGF0ZS5wcF90YWdfc3RhY2tcblxuXG4oKiBGbHVzaGluZyBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbmxldCBwcF9mbHVzaF9xdWV1ZSBzdGF0ZSB+ZW5kX3dpdGhfbmV3bGluZSA9XG4gIGNsZWFyX3RhZ19zdGFjayBzdGF0ZTtcbiAgd2hpbGUgc3RhdGUucHBfY3Vycl9kZXB0aCA+IDEgZG9cbiAgICBwcF9jbG9zZV9ib3ggc3RhdGUgKClcbiAgZG9uZTtcbiAgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gcHBfaW5maW5pdHk7XG4gIGFkdmFuY2VfbGVmdCBzdGF0ZTtcbiAgaWYgZW5kX3dpdGhfbmV3bGluZSB0aGVuIHBwX291dHB1dF9uZXdsaW5lIHN0YXRlO1xuICBwcF9yaW5pdCBzdGF0ZVxuXG4oKlxuXG4gIFByb2NlZHVyZXMgdG8gZm9ybWF0IHZhbHVlcyBhbmQgdXNlIGJveGVzLlxuXG4qKVxuXG4oKiBUbyBmb3JtYXQgYSBzdHJpbmcuICopXG5sZXQgcHBfcHJpbnRfYXNfc2l6ZSBzdGF0ZSBzaXplIHMgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzXG4gIHRoZW4gZW5xdWV1ZV9zdHJpbmdfYXMgc3RhdGUgc2l6ZSBzXG5cblxubGV0IHBwX3ByaW50X2FzIHN0YXRlIGlzaXplIHMgPVxuICBwcF9wcmludF9hc19zaXplIHN0YXRlIChTaXplLm9mX2ludCBpc2l6ZSkgc1xuXG5cbmxldCBwcF9wcmludF9zdHJpbmcgc3RhdGUgcyA9XG4gIHBwX3ByaW50X2FzIHN0YXRlIChwcF9zdHJpbmdfd2lkdGggc3RhdGUgcykgc1xuXG5sZXQgcHBfcHJpbnRfc3Vic3RyaW5nX2FzIH5wb3MgfmxlbiBzdGF0ZSBzaXplIHMgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzXG4gIHRoZW4gZW5xdWV1ZV9zdWJzdHJpbmdfYXMgfnBvcyB+bGVuIHN0YXRlIChTaXplLm9mX2ludCBzaXplKSBzXG5cbmxldCBwcF9wcmludF9zdWJzdHJpbmcgfnBvcyB+bGVuIHN0YXRlIHMgPVxuICBsZXQgd2lkdGggPSBwcF9zdWJzdHJpbmdfd2lkdGggc3RhdGUgfnBvcyB+bGVuIHMgaW5cbiAgcHBfcHJpbnRfc3Vic3RyaW5nX2FzIH5wb3MgfmxlbiBzdGF0ZSB3aWR0aCBzXG5cbmxldCBwcF9wcmludF9ieXRlcyBzdGF0ZSBzID1cbiAgcHBfcHJpbnRfYXMgc3RhdGUgKEJ5dGVzLmxlbmd0aCBzKSAoQnl0ZXMudG9fc3RyaW5nIHMpXG5cbigqIFRvIGZvcm1hdCBhbiBpbnRlZ2VyLiAqKVxubGV0IHBwX3ByaW50X2ludCBzdGF0ZSBpID0gcHBfcHJpbnRfc3RyaW5nIHN0YXRlIChJbnQudG9fc3RyaW5nIGkpXG5cbigqIFRvIGZvcm1hdCBhIGZsb2F0LiAqKVxubGV0IHBwX3ByaW50X2Zsb2F0IHN0YXRlIGYgPSBwcF9wcmludF9zdHJpbmcgc3RhdGUgKHN0cmluZ19vZl9mbG9hdCBmKVxuXG4oKiBUbyBmb3JtYXQgYSBib29sZWFuLiAqKVxubGV0IHBwX3ByaW50X2Jvb2wgc3RhdGUgYiA9IHBwX3ByaW50X3N0cmluZyBzdGF0ZSAoc3RyaW5nX29mX2Jvb2wgYilcblxuKCogVG8gZm9ybWF0IGEgY2hhci4gKilcbmxldCBwcF9wcmludF9jaGFyIHN0YXRlIGMgPVxuICBwcF9wcmludF9hcyBzdGF0ZSAxIChTdHJpbmcubWFrZSAxIGMpXG5cbmxldCBwcF9wcmludF9ub3RoaW5nIF9zdGF0ZSAoKSA9ICgpXG5cblxuKCogT3BlbmluZyBib3hlcy4gKilcbmxldCBwcF9vcGVuX2hib3ggc3RhdGUgKCkgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgMCBQcF9oYm94XG5hbmQgcHBfb3Blbl92Ym94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfdmJveFxuXG5hbmQgcHBfb3Blbl9odmJveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX2h2Ym94XG5hbmQgcHBfb3Blbl9ob3Zib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF9ob3Zib3hcbmFuZCBwcF9vcGVuX2JveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX2JveFxuXG5cbigqIFByaW50aW5nIHF1ZXVlZCB0ZXh0LlxuXG4gICBbcHBfcHJpbnRfZmx1c2hdIHByaW50cyBhbGwgcGVuZGluZyBpdGVtcyBpbiB0aGUgcHJldHR5LXByaW50ZXIgcXVldWUgYW5kXG4gICB0aGVuIGZsdXNoZXMgdGhlIGxvdyBsZXZlbCBvdXRwdXQgZGV2aWNlIG9mIHRoZSBmb3JtYXR0ZXIgdG8gYWN0dWFsbHlcbiAgIGRpc3BsYXkgcHJpbnRpbmcgbWF0ZXJpYWwuXG5cbiAgIFtwcF9wcmludF9uZXdsaW5lXSBiZWhhdmVzIGFzIFtwcF9wcmludF9mbHVzaF0gYWZ0ZXIgcHJpbnRpbmcgYW4gYWRkaXRpb25hbFxuICAgbmV3IGxpbmUuICopXG5sZXQgcHBfcHJpbnRfbmV3bGluZSBzdGF0ZSAoKSA9XG4gIHBwX2ZsdXNoX3F1ZXVlIHN0YXRlIH5lbmRfd2l0aF9uZXdsaW5lOnRydWU7IHN0YXRlLnBwX291dF9mbHVzaCAoKVxuYW5kIHBwX3ByaW50X2ZsdXNoIHN0YXRlICgpID1cbiAgcHBfZmx1c2hfcXVldWUgc3RhdGUgfmVuZF93aXRoX25ld2xpbmU6ZmFsc2U7IHN0YXRlLnBwX291dF9mbHVzaCAoKVxuXG5cbigqIFRvIGdldCBhIG5ld2xpbmUgd2hlbiBvbmUgZG9lcyBub3Qgd2FudCB0byBjbG9zZSB0aGUgY3VycmVudCBib3guICopXG5sZXQgcHBfZm9yY2VfbmV3bGluZSBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfbmV3bGluZTsgbGVuZ3RoID0gMCB9XG5cblxuKCogVG8gZm9ybWF0IHNvbWV0aGluZywgb25seSBpbiBjYXNlIHRoZSBsaW5lIGhhcyBqdXN0IGJlZW4gYnJva2VuLiAqKVxubGV0IHBwX3ByaW50X2lmX25ld2xpbmUgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGVcbiAgICAgIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9pZl9uZXdsaW5lOyBsZW5ndGggPSAwIH1cblxuXG4oKiBHZW5lcmFsaXplZCBicmVhayBoaW50IHRoYXQgYWxsb3dzIHByaW50aW5nIHN0cmluZ3MgYmVmb3JlL2FmdGVyXG4gICBzYW1lLWxpbmUgb2Zmc2V0ICh3aWR0aCkgb3IgbmV3LWxpbmUgb2Zmc2V0ICopXG5sZXQgcHBfcHJpbnRfY3VzdG9tX2JyZWFrIHN0YXRlIH5maXRzIH5icmVha3MgPVxuICBsZXQgYmVmb3JlLCB3aWR0aCwgYWZ0ZXIgPSBmaXRzIGluXG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS5vZl9pbnQgKC0gc3RhdGUucHBfcmlnaHRfdG90YWwpIGluXG4gICAgbGV0IHRva2VuID0gUHBfYnJlYWsgeyBmaXRzOyBicmVha3MgfSBpblxuICAgIGxldCBsZW5ndGggPVxuICAgICAgcHBfc3RyaW5nX3dpZHRoIHN0YXRlIGJlZm9yZVxuICAgICAgKyB3aWR0aFxuICAgICAgKyBwcF9zdHJpbmdfd2lkdGggc3RhdGUgYWZ0ZXJcbiAgICBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbjsgbGVuZ3RoIH0gaW5cbiAgICBzY2FuX3B1c2ggc3RhdGUgdHJ1ZSBlbGVtXG5cbigqIFByaW50aW5nIGJyZWFrIGhpbnRzOlxuICAgQSBicmVhayBoaW50IGluZGljYXRlcyB3aGVyZSBhIGJveCBtYXkgYmUgYnJva2VuLlxuICAgSWYgbGluZSBpcyBicm9rZW4gdGhlbiBvZmZzZXQgaXMgYWRkZWQgdG8gdGhlIGluZGVudGF0aW9uIG9mIHRoZSBjdXJyZW50XG4gICBib3ggZWxzZSAodGhlIHZhbHVlIG9mKSB3aWR0aCBibGFua3MgYXJlIHByaW50ZWQuICopXG5sZXQgcHBfcHJpbnRfYnJlYWsgc3RhdGUgd2lkdGggb2Zmc2V0ID1cbiAgcHBfcHJpbnRfY3VzdG9tX2JyZWFrIHN0YXRlXG4gICAgfmZpdHM6KFwiXCIsIHdpZHRoLCBcIlwiKSB+YnJlYWtzOihcIlwiLCBvZmZzZXQsIFwiXCIpXG5cblxuKCogUHJpbnQgYSBzcGFjZSA6XG4gICBhIHNwYWNlIGlzIGEgYnJlYWsgaGludCB0aGF0IHByaW50cyBhIHNpbmdsZSBzcGFjZSBpZiB0aGUgYnJlYWsgZG9lcyBub3RcbiAgIHNwbGl0IHRoZSBsaW5lO1xuICAgYSBjdXQgaXMgYSBicmVhayBoaW50IHRoYXQgcHJpbnRzIG5vdGhpbmcgaWYgdGhlIGJyZWFrIGRvZXMgbm90IHNwbGl0IHRoZVxuICAgbGluZS4gKilcbmxldCBwcF9wcmludF9zcGFjZSBzdGF0ZSAoKSA9IHBwX3ByaW50X2JyZWFrIHN0YXRlIDEgMFxuYW5kIHBwX3ByaW50X2N1dCBzdGF0ZSAoKSA9IHBwX3ByaW50X2JyZWFrIHN0YXRlIDAgMFxuXG5cbigqIFRhYnVsYXRpb24gYm94ZXMuICopXG5sZXQgcHBfb3Blbl90Ym94IHN0YXRlICgpID1cbiAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSBzdGF0ZS5wcF9jdXJyX2RlcHRoICsgMTtcbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IHNpemUgPSBTaXplLnplcm8gaW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZTsgdG9rZW4gPSBQcF90YmVnaW4gKFBwX3Rib3ggKHJlZiBbXSkpOyBsZW5ndGggPSAwIH0gaW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgZWxlbVxuXG5cbigqIENsb3NlIGEgdGFidWxhdGlvbiBib3guICopXG5sZXQgcHBfY2xvc2VfdGJveCBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPiAxIHRoZW5cbiAgYmVnaW5cbiAgIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgICBsZXQgZWxlbSA9IHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF90ZW5kOyBsZW5ndGggPSAwIH0gaW5cbiAgICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIGVsZW07XG4gICAgIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCAtIDFcbiAgZW5kXG5cblxuKCogUHJpbnQgYSB0YWJ1bGF0aW9uIGJyZWFrLiAqKVxubGV0IHBwX3ByaW50X3RicmVhayBzdGF0ZSB3aWR0aCBvZmZzZXQgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUub2ZfaW50ICgtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsKSBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbiA9IFBwX3RicmVhayAod2lkdGgsIG9mZnNldCk7IGxlbmd0aCA9IHdpZHRoIH0gaW5cbiAgICBzY2FuX3B1c2ggc3RhdGUgdHJ1ZSBlbGVtXG5cblxubGV0IHBwX3ByaW50X3RhYiBzdGF0ZSAoKSA9IHBwX3ByaW50X3RicmVhayBzdGF0ZSAwIDBcblxubGV0IHBwX3NldF90YWIgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9zdGFiOyBsZW5ndGggPSAwIH0gaW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgZWxlbVxuXG5cbigqXG5cbiAgUHJvY2VkdXJlcyB0byBjb250cm9sIHRoZSBwcmV0dHktcHJpbnRlcnNcblxuKilcblxuKCogU2V0X21heF9ib3hlcy4gKilcbmxldCBwcF9zZXRfbWF4X2JveGVzIHN0YXRlIG4gPSBpZiBuID4gMSB0aGVuIHN0YXRlLnBwX21heF9ib3hlcyA8LSBuXG5cbigqIFRvIGtub3cgdGhlIGN1cnJlbnQgbWF4aW11bSBudW1iZXIgb2YgYm94ZXMgYWxsb3dlZC4gKilcbmxldCBwcF9nZXRfbWF4X2JveGVzIHN0YXRlICgpID0gc3RhdGUucHBfbWF4X2JveGVzXG5cbmxldCBwcF9vdmVyX21heF9ib3hlcyBzdGF0ZSAoKSA9IHN0YXRlLnBwX2N1cnJfZGVwdGggPSBzdGF0ZS5wcF9tYXhfYm94ZXNcblxuKCogRWxsaXBzaXMuICopXG5sZXQgcHBfc2V0X2VsbGlwc2lzX3RleHQgc3RhdGUgcyA9IHN0YXRlLnBwX2VsbGlwc2lzIDwtIHNcbmFuZCBwcF9nZXRfZWxsaXBzaXNfdGV4dCBzdGF0ZSAoKSA9IHN0YXRlLnBwX2VsbGlwc2lzXG5cblxuKCogVG8gc2V0IHRoZSBtYXJnaW4gb2YgcHJldHR5LXByaW50ZXIuICopXG5sZXQgcHBfbGltaXQgbiA9XG4gIGlmIG4gPCBwcF9pbmZpbml0eSB0aGVuIG4gZWxzZSBwcmVkIHBwX2luZmluaXR5XG5cblxuKCogSW50ZXJuYWwgcHJldHR5LXByaW50ZXIgZnVuY3Rpb25zLiAqKVxubGV0IHBwX3NldF9taW5fc3BhY2VfbGVmdCBzdGF0ZSBuID1cbiAgaWYgbiA+PSAxIHRoZW5cbiAgICBsZXQgbiA9IHBwX2xpbWl0IG4gaW5cbiAgICBzdGF0ZS5wcF9taW5fc3BhY2VfbGVmdCA8LSBuO1xuICAgIHN0YXRlLnBwX21heF9pbmRlbnQgPC0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfbWluX3NwYWNlX2xlZnQ7XG4gICAgcHBfcmluaXQgc3RhdGVcblxuXG4oKiBJbml0aWFsbHksIHdlIGhhdmUgOlxuICAgcHBfbWF4X2luZGVudCA9IHBwX21hcmdpbiAtIHBwX21pbl9zcGFjZV9sZWZ0LCBhbmRcbiAgIHBwX3NwYWNlX2xlZnQgPSBwcF9tYXJnaW4uICopXG5sZXQgcHBfc2V0X21heF9pbmRlbnQgc3RhdGUgbiA9XG4gIGlmIG4gPiAxIHRoZW5cbiAgICBwcF9zZXRfbWluX3NwYWNlX2xlZnQgc3RhdGUgKHN0YXRlLnBwX21hcmdpbiAtIG4pXG5cblxubGV0IHBwX2dldF9tYXhfaW5kZW50IHN0YXRlICgpID0gc3RhdGUucHBfbWF4X2luZGVudFxuXG5sZXQgcHBfc2V0X21hcmdpbiBzdGF0ZSBuID1cbiAgaWYgbiA+PSAxIHRoZW5cbiAgICBsZXQgbiA9IHBwX2xpbWl0IG4gaW5cbiAgICBzdGF0ZS5wcF9tYXJnaW4gPC0gbjtcbiAgICBsZXQgbmV3X21heF9pbmRlbnQgPVxuICAgICAgKCogVHJ5IHRvIG1haW50YWluIG1heF9pbmRlbnQgdG8gaXRzIGFjdHVhbCB2YWx1ZS4gKilcbiAgICAgIGlmIHN0YXRlLnBwX21heF9pbmRlbnQgPD0gc3RhdGUucHBfbWFyZ2luXG4gICAgICB0aGVuIHN0YXRlLnBwX21heF9pbmRlbnQgZWxzZVxuICAgICAgKCogSWYgcG9zc2libGUgbWFpbnRhaW4gcHBfbWluX3NwYWNlX2xlZnQgdG8gaXRzIGFjdHVhbCB2YWx1ZSxcbiAgICAgICAgIGlmIHRoaXMgbGVhZHMgdG8gYSB0b28gc21hbGwgbWF4X2luZGVudCwgdGFrZSBoYWxmIG9mIHRoZVxuICAgICAgICAgbmV3IG1hcmdpbiwgaWYgaXQgaXMgZ3JlYXRlciB0aGFuIDEuICopXG4gICAgICAgSW50Lm1heCAoSW50Lm1heCAoc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfbWluX3NwYWNlX2xlZnQpXG4gICAgICAgICAgICAgICAgKHN0YXRlLnBwX21hcmdpbiAvIDIpKSAxIGluXG4gICAgKCogUmVidWlsZCBpbnZhcmlhbnRzLiAqKVxuICAgIHBwX3NldF9tYXhfaW5kZW50IHN0YXRlIG5ld19tYXhfaW5kZW50XG5cblxuKCoqIEdlb21ldHJ5IGZ1bmN0aW9ucyBhbmQgdHlwZXMgKilcbnR5cGUgZ2VvbWV0cnkgPSB7IG1heF9pbmRlbnQ6aW50OyBtYXJnaW46IGludH1cblxubGV0IHZhbGlkYXRlX2dlb21ldHJ5IHttYXJnaW47IG1heF9pbmRlbnR9ID1cbiAgaWYgbWF4X2luZGVudCA8IDIgdGhlblxuICAgIEVycm9yIFwibWF4X2luZGVudCA8IDJcIlxuICBlbHNlIGlmIG1hcmdpbiA8PSBtYXhfaW5kZW50IHRoZW5cbiAgICBFcnJvciBcIm1hcmdpbiA8PSBtYXhfaW5kZW50XCJcbiAgZWxzZSBpZiBtYXJnaW4gPj0gcHBfaW5maW5pdHkgdGhlblxuICAgIEVycm9yIFwibWFyZ2luID49IHBwX2luZmluaXR5XCJcbiAgZWxzZSBPayAoKVxuXG5sZXQgY2hlY2tfZ2VvbWV0cnkgZ2VvbWV0cnkgPVxuICBtYXRjaCB2YWxpZGF0ZV9nZW9tZXRyeSBnZW9tZXRyeSB3aXRoXG4gIHwgT2sgKCkgLT4gdHJ1ZVxuICB8IEVycm9yIF8gLT4gZmFsc2VcblxubGV0IHBwX2dldF9tYXJnaW4gc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXJnaW5cblxubGV0IHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlIHttYXJnaW47IG1heF9pbmRlbnR9ID1cbiAgcHBfc2V0X21hcmdpbiBzdGF0ZSBtYXJnaW47XG4gIHBwX3NldF9tYXhfaW5kZW50IHN0YXRlIG1heF9pbmRlbnQ7XG4gICgpXG5cbmxldCBwcF9zZXRfZ2VvbWV0cnkgc3RhdGUgfm1heF9pbmRlbnQgfm1hcmdpbiA9XG4gIGxldCBnZW9tZXRyeSA9IHsgbWF4X2luZGVudDsgbWFyZ2luIH0gaW5cbiAgbWF0Y2ggdmFsaWRhdGVfZ2VvbWV0cnkgZ2VvbWV0cnkgd2l0aFxuICB8IEVycm9yIG1zZyAtPlxuICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcIkZvcm1hdC5wcF9zZXRfZ2VvbWV0cnk6IFwiIF4gbXNnKSlcbiAgfCBPayAoKSAtPlxuICAgIHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlIGdlb21ldHJ5XG5cbmxldCBwcF9zYWZlX3NldF9nZW9tZXRyeSBzdGF0ZSB+bWF4X2luZGVudCB+bWFyZ2luID1cbiAgbGV0IGdlb21ldHJ5ID0geyBtYXhfaW5kZW50OyBtYXJnaW4gfSBpblxuICBtYXRjaCB2YWxpZGF0ZV9nZW9tZXRyeSBnZW9tZXRyeSB3aXRoXG4gIHwgRXJyb3IgX21zZyAtPlxuICAgICAoKVxuICB8IE9rICgpIC0+XG4gICAgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUgZ2VvbWV0cnlcblxubGV0IHBwX2dldF9nZW9tZXRyeSBzdGF0ZSAoKSA9XG4gIHsgbWFyZ2luID0gcHBfZ2V0X21hcmdpbiBzdGF0ZSAoKTsgbWF4X2luZGVudCA9IHBwX2dldF9tYXhfaW5kZW50IHN0YXRlICgpIH1cblxubGV0IHBwX3VwZGF0ZV9nZW9tZXRyeSBzdGF0ZSB1cGRhdGUgPVxuICBsZXQgZ2VvbWV0cnkgPSBwcF9nZXRfZ2VvbWV0cnkgc3RhdGUgKCkgaW5cbiAgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUgKHVwZGF0ZSBnZW9tZXRyeSlcblxuKCogU2V0dGluZyBhIGZvcm1hdHRlciBiYXNpYyBvdXRwdXQgZnVuY3Rpb25zLiAqKVxubGV0IHBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGF0ZSB7XG4gICAgICBvdXRfc3RyaW5nID0gZjtcbiAgICAgIG91dF93aWR0aCA9IGYyO1xuICAgICAgb3V0X2ZsdXNoID0gZztcbiAgICAgIG91dF9uZXdsaW5lID0gaDtcbiAgICAgIG91dF9zcGFjZXMgPSBpO1xuICAgICAgb3V0X2luZGVudCA9IGo7XG4gICAgfSA9XG4gIHN0YXRlLnBwX291dF9zdHJpbmcgPC0gZjtcbiAgc3RhdGUucHBfb3V0X3dpZHRoIDwtIGYyO1xuICBzdGF0ZS5wcF9vdXRfZmx1c2ggPC0gZztcbiAgc3RhdGUucHBfb3V0X25ld2xpbmUgPC0gaDtcbiAgc3RhdGUucHBfb3V0X3NwYWNlcyA8LSBpO1xuICBzdGF0ZS5wcF9vdXRfaW5kZW50IDwtIGpcblxubGV0IHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGF0ZSAoKSA9IHtcbiAgb3V0X3N0cmluZyA9IHN0YXRlLnBwX291dF9zdHJpbmc7XG4gIG91dF93aWR0aCA9IHN0YXRlLnBwX291dF93aWR0aDtcbiAgb3V0X2ZsdXNoID0gc3RhdGUucHBfb3V0X2ZsdXNoO1xuICBvdXRfbmV3bGluZSA9IHN0YXRlLnBwX291dF9uZXdsaW5lO1xuICBvdXRfc3BhY2VzID0gc3RhdGUucHBfb3V0X3NwYWNlcztcbiAgb3V0X2luZGVudCA9IHN0YXRlLnBwX291dF9pbmRlbnQ7XG59XG5cblxuKCogU2V0dGluZyBhIGZvcm1hdHRlciBiYXNpYyBzdHJpbmcgb3V0cHV0IGFuZCBmbHVzaCBmdW5jdGlvbnMuICopXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0YXRlIGYgZyA9XG4gIHN0YXRlLnBwX291dF9zdHJpbmcgPC0gZjsgc3RhdGUucHBfb3V0X2ZsdXNoIDwtIGdcblxubGV0IHBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGF0ZSAoKSA9XG4gIChzdGF0ZS5wcF9vdXRfc3RyaW5nLCBzdGF0ZS5wcF9vdXRfZmx1c2gpXG5cblxuKCogVGhlIGRlZmF1bHQgZnVuY3Rpb24gdG8gb3V0cHV0IG5ldyBsaW5lcy4gKilcbmxldCBkaXNwbGF5X25ld2xpbmUgc3RhdGUgKCkgPSBzdGF0ZS5wcF9vdXRfc3RyaW5nIFwiXFxuXCIgMCAgMVxuXG4oKiBUaGUgZGVmYXVsdCBmdW5jdGlvbiB0byBvdXRwdXQgc3BhY2VzLiAqKVxubGV0IGJsYW5rX2xpbmUgPSBTdHJpbmcubWFrZSA4MCAnICdcbmxldCByZWMgZGlzcGxheV9ibGFua3Mgc3RhdGUgbiA9XG4gIGlmIG4gPiAwIHRoZW5cbiAgaWYgbiA8PSA4MCB0aGVuIHN0YXRlLnBwX291dF9zdHJpbmcgYmxhbmtfbGluZSAwIG4gZWxzZVxuICBiZWdpblxuICAgIHN0YXRlLnBwX291dF9zdHJpbmcgYmxhbmtfbGluZSAwIDgwO1xuICAgIGRpc3BsYXlfYmxhbmtzIHN0YXRlIChuIC0gODApXG4gIGVuZFxuXG5cbigqIFRoZSBkZWZhdWx0IGZ1bmN0aW9uIHRvIG91dHB1dCBpbmRlbnRhdGlvbiBvZiBuZXcgbGluZXMuICopXG5sZXQgZGlzcGxheV9pbmRlbnQgPSBkaXNwbGF5X2JsYW5rc1xuXG4oKiBTZXR0aW5nIGEgZm9ybWF0dGVyIGJhc2ljIG91dHB1dCBmdW5jdGlvbnMgYXMgcHJpbnRpbmcgdG8gYSBnaXZlblxuICAgW1N0ZGxpYi5vdXRfY2hhbm5lbF0gdmFsdWUuICopXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCBzdGF0ZSBvYyA9XG4gIHN0YXRlLnBwX291dF9zdHJpbmcgPC0gb3V0cHV0X3N1YnN0cmluZyBvYztcbiAgc3RhdGUucHBfb3V0X2ZsdXNoIDwtIChmdW4gKCkgLT4gZmx1c2ggb2MpO1xuICBzdGF0ZS5wcF9vdXRfbmV3bGluZSA8LSBkaXNwbGF5X25ld2xpbmUgc3RhdGU7XG4gIHN0YXRlLnBwX291dF9zcGFjZXMgPC0gZGlzcGxheV9ibGFua3Mgc3RhdGU7XG4gIHN0YXRlLnBwX291dF9pbmRlbnQgPC0gZGlzcGxheV9pbmRlbnQgc3RhdGVcblxuKCpcblxuICBEZWZpbmluZyBzcGVjaWZpYyBmb3JtYXR0ZXJzXG5cbiopXG5cbmxldCBkZWZhdWx0X3BwX21hcmtfb3Blbl90YWcgPSBmdW5jdGlvblxuICB8IFN0cmluZ190YWcgcyAtPiBcIjxcIiBeIHMgXiBcIj5cIlxuICB8IF8gLT4gXCJcIlxubGV0IGRlZmF1bHRfcHBfbWFya19jbG9zZV90YWcgPSBmdW5jdGlvblxuICB8IFN0cmluZ190YWcgcyAtPiBcIjwvXCIgXiBzIF4gXCI+XCJcbiAgfCBfIC0+IFwiXCJcblxubGV0IGRlZmF1bHRfcHBfcHJpbnRfb3Blbl90YWcgPSBpZ25vcmVcbmxldCBkZWZhdWx0X3BwX3ByaW50X2Nsb3NlX3RhZyA9IGlnbm9yZVxuXG5sZXQgdXRmXzhfc2NhbGFyX3dpZHRoIHMgfnBvcyB+bGVuID1cbiAgbGV0IHJlYyB3aWR0aCBzIGNvdW50IGN1cnJlbnQgc3RvcCA9XG4gICAgaWYgY3VycmVudCA+PSBzdG9wIHRoZW4gY291bnRcbiAgICBlbHNlXG4gICAgICBsZXQgZGVjb2RlID0gU3RyaW5nLmdldF91dGZfOF91Y2hhciBzIGN1cnJlbnQgaW5cbiAgICAgIGxldCBhZHZhbmNlID0gVWNoYXIudXRmX2RlY29kZV9sZW5ndGggZGVjb2RlIGluXG4gICAgICB3aWR0aCBzIChjb3VudCArIDEpIChjdXJyZW50K2FkdmFuY2UpIHN0b3BcbiAgaW5cbiAgd2lkdGggcyAwIHBvcyAocG9zICsgbGVuKVxuXG5sZXQgYXNjaWlfd2lkdGggXyB+cG9zOl8gfmxlbiA9IGxlblxuXG4oKiBCdWlsZGluZyBhIGZvcm1hdHRlciBnaXZlbiBpdHMgYmFzaWMgb3V0cHV0IGZ1bmN0aW9ucy5cbiAgIE90aGVyIGZpZWxkcyBnZXQgcmVhc29uYWJsZSBkZWZhdWx0IHZhbHVlcy4gKilcbmxldCBwcF9tYWtlX2Zvcm1hdHRlciBmIGcgaCBpIGogPVxuICAoKiBUaGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGUgZm9ybWF0dGVyIGNvbnRhaW5zIGEgZHVtbXkgYm94LiAqKVxuICBsZXQgcHBfcXVldWUgPSBRdWV1ZS5jcmVhdGUgKCkgaW5cbiAgbGV0IHN5c190b2sgPVxuICAgIHsgc2l6ZSA9IFNpemUudW5rbm93bjsgdG9rZW4gPSBQcF9iZWdpbiAoMCwgUHBfaG92Ym94KTsgbGVuZ3RoID0gMCB9IGluXG4gIFF1ZXVlLmFkZCBzeXNfdG9rIHBwX3F1ZXVlO1xuICBsZXQgc2Nhbl9zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKSBpblxuICBpbml0aWFsaXplX3NjYW5fc3RhY2sgc2Nhbl9zdGFjaztcbiAgU3RhY2sucHVzaCB7IGxlZnRfdG90YWwgPSAxOyBxdWV1ZV9lbGVtID0gc3lzX3RvayB9IHNjYW5fc3RhY2s7XG4gIGxldCBwcF9vdXRfd2lkdGggPSB1dGZfOF9zY2FsYXJfd2lkdGggaW5cbiAgbGV0IHBwX21hcmdpbiA9IDc4XG4gIGFuZCBwcF9taW5fc3BhY2VfbGVmdCA9IDEwIGluXG4gIHtcbiAgICBwcF9zY2FuX3N0YWNrID0gc2Nhbl9zdGFjaztcbiAgICBwcF9mb3JtYXRfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfdGJveF9zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF90YWdfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfbWFya19zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF9tYXJnaW4gPSBwcF9tYXJnaW47XG4gICAgcHBfbWluX3NwYWNlX2xlZnQgPSBwcF9taW5fc3BhY2VfbGVmdDtcbiAgICBwcF9tYXhfaW5kZW50ID0gcHBfbWFyZ2luIC0gcHBfbWluX3NwYWNlX2xlZnQ7XG4gICAgcHBfc3BhY2VfbGVmdCA9IHBwX21hcmdpbjtcbiAgICBwcF9jdXJyZW50X2luZGVudCA9IDA7XG4gICAgcHBfaXNfbmV3X2xpbmUgPSB0cnVlO1xuICAgIHBwX2xlZnRfdG90YWwgPSAxO1xuICAgIHBwX3JpZ2h0X3RvdGFsID0gMTtcbiAgICBwcF9jdXJyX2RlcHRoID0gMTtcbiAgICBwcF9tYXhfYm94ZXMgPSBtYXhfaW50O1xuICAgIHBwX2VsbGlwc2lzID0gXCIuXCI7XG4gICAgcHBfb3V0X3N0cmluZyA9IGY7XG4gICAgcHBfb3V0X2ZsdXNoID0gZztcbiAgICBwcF9vdXRfbmV3bGluZSA9IGg7XG4gICAgcHBfb3V0X3NwYWNlcyA9IGk7XG4gICAgcHBfb3V0X2luZGVudCA9IGo7XG4gICAgcHBfb3V0X3dpZHRoO1xuICAgIHBwX3ByaW50X3RhZ3MgPSBmYWxzZTtcbiAgICBwcF9tYXJrX3RhZ3MgPSBmYWxzZTtcbiAgICBwcF9tYXJrX29wZW5fdGFnID0gZGVmYXVsdF9wcF9tYXJrX29wZW5fdGFnO1xuICAgIHBwX21hcmtfY2xvc2VfdGFnID0gZGVmYXVsdF9wcF9tYXJrX2Nsb3NlX3RhZztcbiAgICBwcF9wcmludF9vcGVuX3RhZyA9IGRlZmF1bHRfcHBfcHJpbnRfb3Blbl90YWc7XG4gICAgcHBfcHJpbnRfY2xvc2VfdGFnID0gZGVmYXVsdF9wcF9wcmludF9jbG9zZV90YWc7XG4gICAgcHBfcXVldWUgPSBwcF9xdWV1ZTtcbiAgfVxuXG5cbigqIEJ1aWxkIGEgZm9ybWF0dGVyIG91dCBvZiBpdHMgb3V0IGZ1bmN0aW9ucy4gKilcbmxldCBmb3JtYXR0ZXJfb2Zfb3V0X2Z1bmN0aW9ucyBvdXRfZnVucyA9XG4gIHBwX21ha2VfZm9ybWF0dGVyXG4gICAgb3V0X2Z1bnMub3V0X3N0cmluZ1xuICAgIG91dF9mdW5zLm91dF9mbHVzaFxuICAgIG91dF9mdW5zLm91dF9uZXdsaW5lXG4gICAgb3V0X2Z1bnMub3V0X3NwYWNlc1xuICAgIG91dF9mdW5zLm91dF9pbmRlbnRcblxuXG4oKiBNYWtlIGEgZm9ybWF0dGVyIHdpdGggZGVmYXVsdCBmdW5jdGlvbnMgdG8gb3V0cHV0IHNwYWNlcyxcbiAgaW5kZW50YXRpb24sIGFuZCBuZXcgbGluZXMuICopXG5sZXQgbWFrZV9mb3JtYXR0ZXIgb3V0cHV0IGZsdXNoID1cbiAgbGV0IHBwZiA9IHBwX21ha2VfZm9ybWF0dGVyIG91dHB1dCBmbHVzaCBpZ25vcmUgaWdub3JlIGlnbm9yZSBpblxuICBwcGYucHBfb3V0X25ld2xpbmUgPC0gZGlzcGxheV9uZXdsaW5lIHBwZjtcbiAgcHBmLnBwX291dF9zcGFjZXMgPC0gZGlzcGxheV9ibGFua3MgcHBmO1xuICBwcGYucHBfb3V0X2luZGVudCA8LSBkaXNwbGF5X2luZGVudCBwcGY7XG4gIHBwZlxuXG5cbigqIE1ha2UgYSBmb3JtYXR0ZXIgd3JpdGluZyB0byBhIGdpdmVuIFtTdGRsaWIub3V0X2NoYW5uZWxdIHZhbHVlLiAqKVxubGV0IGZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyA9XG4gIG1ha2VfZm9ybWF0dGVyIChvdXRwdXRfc3Vic3RyaW5nIG9jKSAoZnVuICgpIC0+IGZsdXNoIG9jKVxuXG5cbigqIE1ha2UgYSBmb3JtYXR0ZXIgd3JpdGluZyB0byBhIGdpdmVuIFtCdWZmZXIudF0gdmFsdWUuICopXG5sZXQgZm9ybWF0dGVyX29mX2J1ZmZlciBiID1cbiAgbWFrZV9mb3JtYXR0ZXIgKEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGIpIGlnbm9yZVxuXG5cbigqIEFsbG9jYXRpbmcgYnVmZmVyIGZvciBwcmV0dHktcHJpbnRpbmcgcHVycG9zZXMuXG4gICBEZWZhdWx0IGJ1ZmZlciBzaXplIGlzIHBwX2J1ZmZlcl9zaXplIG9yIDUxMi5cbiopXG5sZXQgcHBfYnVmZmVyX3NpemUgPSA1MTJcbmxldCBwcF9tYWtlX2J1ZmZlciAoKSA9IEJ1ZmZlci5jcmVhdGUgcHBfYnVmZmVyX3NpemVcblxuKCogVGhlIHN0YW5kYXJkIChzaGFyZWQpIGJ1ZmZlci4gKilcbmxldCBzdGRidWYgPSBwcF9tYWtlX2J1ZmZlciAoKVxuXG4oKiBQcmVkZWZpbmVkIGZvcm1hdHRlcnMgc3RhbmRhcmQgZm9ybWF0dGVyIHRvIHByaW50XG4gICB0byBbU3RkbGliLnN0ZG91dF0sIFtTdGRsaWIuc3RkZXJyXSwgYW5kIHshc3RkYnVmfS4gKilcbmxldCBzdGRfZm9ybWF0dGVyID0gZm9ybWF0dGVyX29mX291dF9jaGFubmVsIFN0ZGxpYi5zdGRvdXRcbmFuZCBlcnJfZm9ybWF0dGVyID0gZm9ybWF0dGVyX29mX291dF9jaGFubmVsIFN0ZGxpYi5zdGRlcnJcbmFuZCBzdHJfZm9ybWF0dGVyID0gZm9ybWF0dGVyX29mX2J1ZmZlciBzdGRidWZcblxuKCogSW5pdGlhbGlzZSBkb21haW4gbG9jYWwgc3RhdGUgKilcbm1vZHVsZSBETFMgPSBEb21haW4uRExTXG5cbmxldCBzdGRidWZfa2V5ID0gRExTLm5ld19rZXkgcHBfbWFrZV9idWZmZXJcbmxldCBfID0gRExTLnNldCBzdGRidWZfa2V5IHN0ZGJ1ZlxuXG5sZXQgc3RyX2Zvcm1hdHRlcl9rZXkgPSBETFMubmV3X2tleSAoZnVuICgpIC0+XG4gIGZvcm1hdHRlcl9vZl9idWZmZXIgKERMUy5nZXQgc3RkYnVmX2tleSkpXG5sZXQgXyA9IERMUy5zZXQgc3RyX2Zvcm1hdHRlcl9rZXkgc3RyX2Zvcm1hdHRlclxuXG5sZXQgYnVmZmVyZWRfb3V0X3N0cmluZyBrZXkgc3RyIG9mcyBsZW4gPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyAoRG9tYWluLkRMUy5nZXQga2V5KSBzdHIgb2ZzIGxlblxuXG5sZXQgYnVmZmVyZWRfb3V0X2ZsdXNoIG9jIGtleSAoKSA9XG4gIGxldCBidWYgPSBEb21haW4uRExTLmdldCBrZXkgaW5cbiAgbGV0IGxlbiA9IEJ1ZmZlci5sZW5ndGggYnVmIGluXG4gIGxldCBzdHIgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gIG91dHB1dF9zdWJzdHJpbmcgb2Mgc3RyIDAgbGVuIDtcbiAgU3RkbGliLmZsdXNoIG9jO1xuICBCdWZmZXIuY2xlYXIgYnVmXG5cbmxldCBzdGRfYnVmX2tleSA9IERvbWFpbi5ETFMubmV3X2tleSAoZnVuICgpIC0+IEJ1ZmZlci5jcmVhdGUgcHBfYnVmZmVyX3NpemUpXG5sZXQgZXJyX2J1Zl9rZXkgPSBEb21haW4uRExTLm5ld19rZXkgKGZ1biAoKSAtPiBCdWZmZXIuY3JlYXRlIHBwX2J1ZmZlcl9zaXplKVxuXG5sZXQgc3RkX2Zvcm1hdHRlcl9rZXkgPSBETFMubmV3X2tleSAoZnVuICgpIC0+XG4gIGxldCBwcGYgPVxuICAgIHBwX21ha2VfZm9ybWF0dGVyIChidWZmZXJlZF9vdXRfc3RyaW5nIHN0ZF9idWZfa2V5KVxuICAgICAgKGJ1ZmZlcmVkX291dF9mbHVzaCBTdGRsaWIuc3Rkb3V0IHN0ZF9idWZfa2V5KSBpZ25vcmUgaWdub3JlIGlnbm9yZVxuICBpblxuICBwcGYucHBfb3V0X25ld2xpbmUgPC0gZGlzcGxheV9uZXdsaW5lIHBwZjtcbiAgcHBmLnBwX291dF9zcGFjZXMgPC0gZGlzcGxheV9ibGFua3MgcHBmO1xuICBwcGYucHBfb3V0X2luZGVudCA8LSBkaXNwbGF5X2luZGVudCBwcGY7XG4gIERvbWFpbi5hdF9leGl0IChwcF9wcmludF9mbHVzaCBwcGYpO1xuICBwcGYpXG5sZXQgXyA9IERMUy5zZXQgc3RkX2Zvcm1hdHRlcl9rZXkgc3RkX2Zvcm1hdHRlclxuXG5sZXQgZXJyX2Zvcm1hdHRlcl9rZXkgPSBETFMubmV3X2tleSAoZnVuICgpIC0+XG4gIGxldCBwcGYgPVxuICAgIHBwX21ha2VfZm9ybWF0dGVyIChidWZmZXJlZF9vdXRfc3RyaW5nIGVycl9idWZfa2V5KVxuICAgICAgKGJ1ZmZlcmVkX291dF9mbHVzaCBTdGRsaWIuc3RkZXJyIGVycl9idWZfa2V5KSBpZ25vcmUgaWdub3JlIGlnbm9yZVxuICBpblxuICBwcGYucHBfb3V0X25ld2xpbmUgPC0gZGlzcGxheV9uZXdsaW5lIHBwZjtcbiAgcHBmLnBwX291dF9zcGFjZXMgPC0gZGlzcGxheV9ibGFua3MgcHBmO1xuICBwcGYucHBfb3V0X2luZGVudCA8LSBkaXNwbGF5X2luZGVudCBwcGY7XG4gIERvbWFpbi5hdF9leGl0IChwcF9wcmludF9mbHVzaCBwcGYpO1xuICBwcGYpXG5sZXQgXyA9IERMUy5zZXQgZXJyX2Zvcm1hdHRlcl9rZXkgZXJyX2Zvcm1hdHRlclxuXG5sZXQgZ2V0X3N0ZF9mb3JtYXR0ZXIgKCkgPSBETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5XG5sZXQgZ2V0X2Vycl9mb3JtYXR0ZXIgKCkgPSBETFMuZ2V0IGVycl9mb3JtYXR0ZXJfa2V5XG5sZXQgZ2V0X3N0cl9mb3JtYXR0ZXIgKCkgPSBETFMuZ2V0IHN0cl9mb3JtYXR0ZXJfa2V5XG5sZXQgZ2V0X3N0ZGJ1ZiAoKSA9IERMUy5nZXQgc3RkYnVmX2tleVxuXG4oKiBbZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBidWYgcHBmXSBmbHVzaGVzIGZvcm1hdHRlciBbcHBmXSxcbiAgIHRoZW4gcmV0dXJucyB0aGUgY29udGVudHMgb2YgYnVmZmVyIFtidWZdIHRoYXQgaXMgcmVzZXQuXG4gICBGb3JtYXR0ZXIgW3BwZl0gaXMgc3VwcG9zZWQgdG8gcHJpbnQgdG8gYnVmZmVyIFtidWZdLCBvdGhlcndpc2UgdGhpc1xuICAgZnVuY3Rpb24gaXMgbm90IHJlYWxseSB1c2VmdWwuICopXG5sZXQgZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBidWYgcHBmID1cbiAgcHBfZmx1c2hfcXVldWUgcHBmIH5lbmRfd2l0aF9uZXdsaW5lOmZhbHNlO1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgQnVmZmVyLnJlc2V0IGJ1ZjtcbiAgc1xuXG4oKiBGbHVzaCBbc3RyX2Zvcm1hdHRlcl0gYW5kIGdldCB0aGUgY29udGVudHMgb2YgW3N0ZGJ1Zl0uICopXG5sZXQgZmx1c2hfc3RyX2Zvcm1hdHRlciAoKSA9XG4gIGxldCBzdGRidWYgPSBETFMuZ2V0IHN0ZGJ1Zl9rZXkgaW5cbiAgbGV0IHN0cl9mb3JtYXR0ZXIgPSBETFMuZ2V0IHN0cl9mb3JtYXR0ZXJfa2V5IGluXG4gIGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgc3RkYnVmIHN0cl9mb3JtYXR0ZXJcblxubGV0IG1ha2Vfc3luY2hyb25pemVkX2Zvcm1hdHRlciBvdXRwdXQgZmx1c2ggPVxuICBETFMubmV3X2tleSAoZnVuICgpIC0+XG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgcHBfYnVmZmVyX3NpemUgaW5cbiAgICBsZXQgb3V0cHV0JyA9IEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBpblxuICAgIGxldCBmbHVzaCcgKCkgPVxuICAgICAgb3V0cHV0IChCdWZmZXIuY29udGVudHMgYnVmKSAwIChCdWZmZXIubGVuZ3RoIGJ1Zik7XG4gICAgICBCdWZmZXIuY2xlYXIgYnVmO1xuICAgICAgZmx1c2ggKClcbiAgICBpblxuICAgIG1ha2VfZm9ybWF0dGVyIG91dHB1dCcgZmx1c2gnKVxuXG5sZXQgc3luY2hyb25pemVkX2Zvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyA9XG4gIG1ha2Vfc3luY2hyb25pemVkX2Zvcm1hdHRlciAob3V0cHV0X3N1YnN0cmluZyBvYykgKGZ1biAoKSAtPiBmbHVzaCBvYylcblxuKCpcbiAgU3ltYm9saWMgcHJldHR5LXByaW50aW5nXG4qKVxuXG4oKlxuICBTeW1ib2xpYyBwcmV0dHktcHJpbnRpbmcgaXMgcHJldHR5LXByaW50aW5nIHdpdGggbm8gbG93IGxldmVsIG91dHB1dC5cblxuICBXaGVuIHVzaW5nIGEgc3ltYm9saWMgZm9ybWF0dGVyLCBhbGwgcmVndWxhciBwcmV0dHktcHJpbnRpbmcgYWN0aXZpdGllc1xuICBvY2N1ciBidXQgb3V0cHV0IG1hdGVyaWFsIGlzIHN5bWJvbGljIGFuZCBzdG9yZWQgaW4gYSBidWZmZXIgb2Ygb3V0cHV0XG4gIGl0ZW1zLiBBdCB0aGUgZW5kIG9mIHByZXR0eS1wcmludGluZywgZmx1c2hpbmcgdGhlIG91dHB1dCBidWZmZXIgYWxsb3dzXG4gIHBvc3QtcHJvY2Vzc2luZyBvZiBzeW1ib2xpYyBvdXRwdXQgYmVmb3JlIGxvdyBsZXZlbCBvdXRwdXQgb3BlcmF0aW9ucy5cbiopXG5cbnR5cGUgc3ltYm9saWNfb3V0cHV0X2l0ZW0gPVxuICB8IE91dHB1dF9mbHVzaFxuICB8IE91dHB1dF9uZXdsaW5lXG4gIHwgT3V0cHV0X3N0cmluZyBvZiBzdHJpbmdcbiAgfCBPdXRwdXRfc3BhY2VzIG9mIGludFxuICB8IE91dHB1dF9pbmRlbnQgb2YgaW50XG5cbnR5cGUgc3ltYm9saWNfb3V0cHV0X2J1ZmZlciA9IHtcbiAgbXV0YWJsZSBzeW1ib2xpY19vdXRwdXRfY29udGVudHMgOiBzeW1ib2xpY19vdXRwdXRfaXRlbSBsaXN0O1xufVxuXG5sZXQgbWFrZV9zeW1ib2xpY19vdXRwdXRfYnVmZmVyICgpID1cbiAgeyBzeW1ib2xpY19vdXRwdXRfY29udGVudHMgPSBbXSB9XG5cbmxldCBjbGVhcl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHMgPC0gW11cblxubGV0IGdldF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIExpc3QucmV2IHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHNcblxubGV0IGZsdXNoX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgbGV0IGl0ZW1zID0gZ2V0X3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iIGluXG4gIGNsZWFyX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iO1xuICBpdGVtc1xuXG5sZXQgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiBpdGVtID1cbiAgc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50cyA8LSBpdGVtIDo6IHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHNcblxubGV0IGZvcm1hdHRlcl9vZl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIGxldCBzeW1ib2xpY19mbHVzaCBzb2IgKCkgPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgT3V0cHV0X2ZsdXNoXG4gIGFuZCBzeW1ib2xpY19uZXdsaW5lIHNvYiAoKSA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiBPdXRwdXRfbmV3bGluZVxuICBhbmQgc3ltYm9saWNfc3RyaW5nIHNvYiBzIGkgbiA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiAoT3V0cHV0X3N0cmluZyAoU3RyaW5nLnN1YiBzIGkgbikpXG4gIGFuZCBzeW1ib2xpY19zcGFjZXMgc29iIG4gPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgKE91dHB1dF9zcGFjZXMgbilcbiAgYW5kIHN5bWJvbGljX2luZGVudCBzb2IgbiA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiAoT3V0cHV0X2luZGVudCBuKSBpblxuXG4gIGxldCBmID0gc3ltYm9saWNfc3RyaW5nIHNvYlxuICBhbmQgZyA9IHN5bWJvbGljX2ZsdXNoIHNvYlxuICBhbmQgaCA9IHN5bWJvbGljX25ld2xpbmUgc29iXG4gIGFuZCBpID0gc3ltYm9saWNfc3BhY2VzIHNvYlxuICBhbmQgaiA9IHN5bWJvbGljX2luZGVudCBzb2IgaW5cbiAgcHBfbWFrZV9mb3JtYXR0ZXIgZiBnIGggaSBqXG5cbigqXG5cbiAgQmFzaWMgZnVuY3Rpb25zIG9uIHRoZSAnc3RhbmRhcmQnIGZvcm1hdHRlclxuICAodGhlIGZvcm1hdHRlciB0aGF0IHByaW50cyB0byBbU3RkbGliLnN0ZG91dF0pLlxuXG4qKVxuXG5sZXQgb3Blbl9oYm94IHYgPSBwcF9vcGVuX2hib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBvcGVuX3Zib3ggdiA9IHBwX29wZW5fdmJveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIG9wZW5faHZib3ggdiA9IHBwX29wZW5faHZib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBvcGVuX2hvdmJveCB2ID0gcHBfb3Blbl9ob3Zib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBvcGVuX2JveCB2ID0gcHBfb3Blbl9ib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBjbG9zZV9ib3ggdiA9IHBwX2Nsb3NlX2JveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIG9wZW5fc3RhZyB2ID0gcHBfb3Blbl9zdGFnIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgY2xvc2Vfc3RhZyB2ID0gcHBfY2xvc2Vfc3RhZyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2FzIHYgdyA9IHBwX3ByaW50X2FzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2IHdcbmFuZCBwcmludF9zdHJpbmcgdiA9IHBwX3ByaW50X3N0cmluZyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X3N1YnN0cmluZyB+cG9zIH5sZW4gdiA9XG4gIHBwX3ByaW50X3N1YnN0cmluZyAgfnBvcyB+bGVuIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfc3Vic3RyaW5nX2FzIH5wb3MgfmxlbiBhc19sZW4gdiA9XG4gIHBwX3ByaW50X3N1YnN0cmluZ19hcyB+cG9zIH5sZW4gKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIGFzX2xlbiB2XG5hbmQgcHJpbnRfYnl0ZXMgdiA9IHBwX3ByaW50X2J5dGVzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfaW50IHYgPSBwcF9wcmludF9pbnQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9mbG9hdCB2ID0gcHBfcHJpbnRfZmxvYXQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9jaGFyIHYgPSBwcF9wcmludF9jaGFyIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfYm9vbCB2ID0gcHBfcHJpbnRfYm9vbCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2JyZWFrIHYgdyA9IHBwX3ByaW50X2JyZWFrIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2IHdcbmFuZCBwcmludF9jdXQgdiA9IHBwX3ByaW50X2N1dCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X3NwYWNlIHYgPSBwcF9wcmludF9zcGFjZSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGZvcmNlX25ld2xpbmUgdiA9IHBwX2ZvcmNlX25ld2xpbmUgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9mbHVzaCB2ID0gcHBfcHJpbnRfZmx1c2ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9uZXdsaW5lIHYgPSBwcF9wcmludF9uZXdsaW5lIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfaWZfbmV3bGluZSB2ID0gcHBfcHJpbnRfaWZfbmV3bGluZSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgb3Blbl90Ym94IHYgPSBwcF9vcGVuX3Rib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBjbG9zZV90Ym94IHYgPSBwcF9jbG9zZV90Ym94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfdGJyZWFrIHYgdyA9IHBwX3ByaW50X3RicmVhayAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdiB3XG5cbmFuZCBzZXRfdGFiIHYgPSBwcF9zZXRfdGFiIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfdGFiIHYgPSBwcF9wcmludF90YWIgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9tYXJnaW4gdiA9IHBwX3NldF9tYXJnaW4gKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfbWFyZ2luIHYgPSBwcF9nZXRfbWFyZ2luIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBzZXRfbWF4X2luZGVudCB2ID0gcHBfc2V0X21heF9pbmRlbnQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfbWF4X2luZGVudCB2ID0gcHBfZ2V0X21heF9pbmRlbnQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9nZW9tZXRyeSB+bWF4X2luZGVudCB+bWFyZ2luID1cbiAgcHBfc2V0X2dlb21ldHJ5IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB+bWF4X2luZGVudCB+bWFyZ2luXG5hbmQgc2FmZV9zZXRfZ2VvbWV0cnkgfm1heF9pbmRlbnQgfm1hcmdpbiA9XG4gIHBwX3NhZmVfc2V0X2dlb21ldHJ5IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB+bWF4X2luZGVudCB+bWFyZ2luXG5hbmQgZ2V0X2dlb21ldHJ5IHYgPSBwcF9nZXRfZ2VvbWV0cnkgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCB1cGRhdGVfZ2VvbWV0cnkgdiA9IHBwX3VwZGF0ZV9nZW9tZXRyeSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X21heF9ib3hlcyB2ID0gcHBfc2V0X21heF9ib3hlcyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9tYXhfYm94ZXMgdiA9IHBwX2dldF9tYXhfYm94ZXMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBvdmVyX21heF9ib3hlcyB2ID0gcHBfb3Zlcl9tYXhfYm94ZXMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9lbGxpcHNpc190ZXh0IHYgPSBwcF9zZXRfZWxsaXBzaXNfdGV4dCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9lbGxpcHNpc190ZXh0IHYgPSBwcF9nZXRfZWxsaXBzaXNfdGV4dCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCB2ID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHYgPVxuICBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgdiA9XG4gIHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHYgdyA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdiB3XG5hbmQgZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHYgPVxuICBwcF9nZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgdiA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHYgPVxuICBwcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgc2V0X3ByaW50X3RhZ3MgdiA9XG4gIHBwX3NldF9wcmludF90YWdzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgZ2V0X3ByaW50X3RhZ3MgdiA9XG4gIHBwX2dldF9wcmludF90YWdzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgc2V0X21hcmtfdGFncyB2ID1cbiAgcHBfc2V0X21hcmtfdGFncyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9tYXJrX3RhZ3MgdiA9XG4gIHBwX2dldF9tYXJrX3RhZ3MgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBzZXRfdGFncyB2ID1cbiAgcHBfc2V0X3RhZ3MgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuXG4oKiBDb252ZW5pZW5jZSBmdW5jdGlvbnMgKilcblxubGV0IHBwX3ByaW50X2l0ZXIgPyhwcF9zZXAgPSBwcF9wcmludF9jdXQpIGl0ZXIgcHBfdiBwcGYgdiA9XG4gIGxldCBpc19maXJzdCA9IHJlZiB0cnVlIGluXG4gIGxldCBwcF92IHYgPVxuICAgIGlmICFpc19maXJzdCB0aGVuIGlzX2ZpcnN0IDo9IGZhbHNlIGVsc2UgcHBfc2VwIHBwZiAoKTtcbiAgICBwcF92IHBwZiB2XG4gIGluXG4gIGl0ZXIgcHBfdiB2XG5cbigqIFRvIGZvcm1hdCBhIGxpc3QgKilcbmxldCBwcF9wcmludF9saXN0ID8ocHBfc2VwID0gcHBfcHJpbnRfY3V0KSBwcF92IHBwZiB2ID1cbiAgcHBfcHJpbnRfaXRlciB+cHBfc2VwIExpc3QuaXRlciBwcF92IHBwZiB2XG5cbigqIFRvIGZvcm1hdCBhbiBhcnJheSAqKVxubGV0IHBwX3ByaW50X2FycmF5ID8ocHBfc2VwID0gcHBfcHJpbnRfY3V0KSBwcF92IHBwZiB2ID1cbiAgcHBfcHJpbnRfaXRlciB+cHBfc2VwIEFycmF5Lml0ZXIgcHBfdiBwcGYgdlxuXG4oKiBUbyBmb3JtYXQgYSBzZXF1ZW5jZSAqKVxubGV0IHBwX3ByaW50X3NlcSA/KHBwX3NlcCA9IHBwX3ByaW50X2N1dCkgcHBfdiBwcGYgc2VxID1cbiAgcHBfcHJpbnRfaXRlciB+cHBfc2VwIFNlcS5pdGVyIHBwX3YgcHBmIHNlcVxuXG4oKiBUbyBmb3JtYXQgZnJlZS1mbG93aW5nIHRleHQgKilcbmxldCBwcF9wcmludF90ZXh0IHBwZiBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgbGVmdCA9IHJlZiAwIGluXG4gIGxldCByaWdodCA9IHJlZiAwIGluXG4gIGxldCBmbHVzaCAoKSA9XG4gICAgcHBfcHJpbnRfc3Vic3RyaW5nIH5wb3M6IWxlZnQgfmxlbjooIXJpZ2h0IC0gIWxlZnQpIHBwZiBzO1xuICAgIGluY3IgcmlnaHQ7IGxlZnQgOj0gIXJpZ2h0O1xuICBpblxuICB3aGlsZSAoIXJpZ2h0IDw+IGxlbikgZG9cbiAgICBtYXRjaCBzLlshcmlnaHRdIHdpdGhcbiAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgZmx1c2ggKCk7XG4gICAgICAgIHBwX2ZvcmNlX25ld2xpbmUgcHBmICgpXG4gICAgICB8ICcgJyAtPlxuICAgICAgICBmbHVzaCAoKTsgcHBfcHJpbnRfc3BhY2UgcHBmICgpXG4gICAgICAoKiB0aGVyZSBpcyBubyBzcGVjaWZpYyBzdXBwb3J0IGZvciAnXFx0J1xuICAgICAgICAgYXMgaXQgaXMgdW5jbGVhciB3aGF0IGEgcmlnaHQgc2VtYW50aWNzIHdvdWxkIGJlICopXG4gICAgICB8IF8gLT4gaW5jciByaWdodFxuICBkb25lO1xuICBpZiAhbGVmdCA8PiBsZW4gdGhlbiBmbHVzaCAoKVxuXG4oKiBUbyBmb3JtYXQgZnJlZS1mbG93aW5nIHRleHQgKilcbmxldCBmb3JtYXRfdGV4dCBmbXQ2ID1cbiAgbGV0IG9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzIGluXG4gIGxldCBGb3JtYXQoZm10LF8pID0gZm10NiBpblxuICBsZXQgY29uc19zcGFjZSB+c3BhY2VzIGZtdCA9IEZvcm1hdHRpbmdfbGl0IChCcmVhayhcIlwiLHNwYWNlcywwKSwgZm10KSBpblxuICBsZXQgcmVjIHNraXBfYW5kX2NvdW50X3doaXRlcyBzcGFjZXMgbmV3bGluZXMgbGVuIHMgcG9zID1cbiAgICBpZiBwb3MgPj0gbGVuIHRoZW4gcG9zLCBzcGFjZXMsIG5ld2xpbmVzIGVsc2VcbiAgICBtYXRjaCBzLltwb3NdIHdpdGhcbiAgICB8ICcgJyAtPiBza2lwX2FuZF9jb3VudF93aGl0ZXMgKDErc3BhY2VzKSBuZXdsaW5lcyBsZW4gcyAoMStwb3MpXG4gICAgfCAnXFxuJyAtPiBza2lwX2FuZF9jb3VudF93aGl0ZXMgc3BhY2VzICgxK25ld2xpbmVzKSBsZW4gcyAoMStwb3MpXG4gICAgfCBfIC0+IHBvcywgc3BhY2VzLCBuZXdsaW5lc1xuICBpblxuICBsZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBzcGxpdCBsZW4gcyBwb3MgZm10ID1cbiAgICBpZiBwb3MgPj0gbGVuIHRoZW4gZm10XG4gICAgZWxzZVxuICAgICAgbGV0IHNwYWNlID0gU3RyaW5nLmluZGV4X2Zyb21fb3B0IHMgcG9zICcgJyBpblxuICAgICAgbGV0IG5ld2xpbmUgPSBTdHJpbmcuaW5kZXhfZnJvbV9vcHQgcyBwb3MgJ1xcbicgaW5cbiAgICAgIGxldCBmaXJzdCA9IG1hdGNoIHNwYWNlLCBuZXdsaW5lIHdpdGhcbiAgICAgICAgfCBTb21lIHgsIFNvbWUgeSAtPiBTb21lIChtaW4geCB5KVxuICAgICAgICB8IE5vbmUsIHggfCB4LCBOb25lIC0+IHhcbiAgICAgIGluXG4gICAgICBtYXRjaCBmaXJzdCB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBTdHJpbmdfbGl0ZXJhbChTdHJpbmcuc3ViIHMgcG9zIChsZW4tcG9zKSwgZm10KVxuICAgICAgfCBTb21lIHNlcCAtPlxuICAgICAgICAgIGxldCBiZWZvcmUgPSBTdHJpbmcuc3ViIHMgcG9zIChzZXAtcG9zKSBpblxuICAgICAgICAgIGxldCBwb3MsIHNwYWNlcywgbmV3bGluZXMgPSBza2lwX2FuZF9jb3VudF93aGl0ZXMgMCAwIGxlbiBzIHNlcCBpblxuICAgICAgICAgIGxldCByZXBlYXQsIGJyZWFrID1cbiAgICAgICAgICAgIG1hdGNoIG5ld2xpbmVzLCBzcGFjZXMgd2l0aFxuICAgICAgICAgICAgfCAoMHwxKSwgc3BhY2VzIC0+IDEsIEJyZWFrKFwiXCIsIG1heCBzcGFjZXMgMSwgMClcbiAgICAgICAgICAgIHwgYmwsIF8gLT4gYmwsIEZvcmNlX25ld2xpbmVcbiAgICAgICAgICBpblxuICAgICAgICAgIFN0cmluZ19saXRlcmFsKGJlZm9yZSwgY29ucyB+cmVwZWF0IGJyZWFrIGxlbiBzIHBvcyBmbXQpXG4gIGFuZFtAdGFpbF9tb2RfY29uc10gY29ucyB+cmVwZWF0IGJyZWFrIGxlbiBzIHBvcyBmbXQgPVxuICAgIGlmIHJlcGVhdCA9IDAgdGhlblxuICAgICAgc3BsaXQgbGVuIHMgcG9zIGZtdFxuICAgIGVsc2VcbiAgICAgIEZvcm1hdHRpbmdfbGl0IChicmVhaywgY29ucyB+cmVwZWF0OihyZXBlYXQtMSkgYnJlYWsgbGVuIHMgcG9zIGZtdClcbiAgaW5cbiAgbGV0IGNvbmNhdCBzIGZtdCA9IG1hdGNoIHMgd2l0aFxuICAgIHwgYENoYXIgKCcgJ3wnXFxuJykgLT4gY29uc19zcGFjZSB+c3BhY2VzOjEgZm10XG4gICAgfCBgQ2hhciBjIC0+IENoYXJfbGl0ZXJhbChjLGZtdClcbiAgICB8IGBTdHJpbmcgcyAtPiBzcGxpdCAoU3RyaW5nLmxlbmd0aCBzKSBzIDAgZm10IGluXG4gIGxldCBmbXQgPSBzdHJpbmdfY29uY2F0X21hcCB7Zj1jb25jYXR9IGZtdCBpblxuICBGb3JtYXQoZm10LCBDYW1saW50ZXJuYWxGb3JtYXQuc3RyaW5nX29mX2ZtdCBmbXQpXG5cblxubGV0IHBwX3ByaW50X29wdGlvbiA/KG5vbmUgPSBmdW4gXyAoKSAtPiAoKSkgcHBfdiBwcGYgPSBmdW5jdGlvblxufCBOb25lIC0+IG5vbmUgcHBmICgpXG58IFNvbWUgdiAtPiBwcF92IHBwZiB2XG5cbmxldCBwcF9wcmludF9yZXN1bHQgfm9rIH5lcnJvciBwcGYgPSBmdW5jdGlvblxufCBPayB2IC0+IG9rIHBwZiB2XG58IEVycm9yIGUgLT4gZXJyb3IgcHBmIGVcblxubGV0IHBwX3ByaW50X2VpdGhlciB+bGVmdCB+cmlnaHQgcHBmID0gZnVuY3Rpb25cbnwgRWl0aGVyLkxlZnQgbCAtPiBsZWZ0IHBwZiBsXG58IEVpdGhlci5SaWdodCByIC0+IHJpZ2h0IHBwZiByXG5cbiAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBjb21wdXRlX3RhZyBvdXRwdXQgdGFnX2FjYyA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDE2IGluXG4gIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGJ1ZiBpblxuICBvdXRwdXQgcHBmIHRhZ19hY2M7XG4gIHBwX3ByaW50X2ZsdXNoIHBwZiAoKTtcbiAgbGV0IGxlbiA9IEJ1ZmZlci5sZW5ndGggYnVmIGluXG4gIGlmIGxlbiA8IDIgdGhlbiBCdWZmZXIuY29udGVudHMgYnVmXG4gIGVsc2UgQnVmZmVyLnN1YiBidWYgMSAobGVuIC0gMilcblxuICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gIERlZmluaW5nIGNvbnRpbnVhdGlvbnMgdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50cyBvZlxuICBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYuXG5cbiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdFxuXG4oKiBJbnRlcnByZXQgYSBmb3JtYXR0aW5nIGVudGl0eSBvbiBhIGZvcm1hdHRlci4gKilcbmxldCBvdXRwdXRfZm9ybWF0dGluZ19saXQgcHBmIGZtdGluZ19saXQgPSBtYXRjaCBmbXRpbmdfbGl0IHdpdGhcbiAgfCBDbG9zZV9ib3ggICAgICAgICAgICAgICAgIC0+IHBwX2Nsb3NlX2JveCBwcGYgKClcbiAgfCBDbG9zZV90YWcgICAgICAgICAgICAgICAgIC0+IHBwX2Nsb3NlX3N0YWcgcHBmICgpXG4gIHwgQnJlYWsgKF8sIHdpZHRoLCBvZmZzZXQpICAtPiBwcF9wcmludF9icmVhayBwcGYgd2lkdGggb2Zmc2V0XG4gIHwgRkZsdXNoICAgICAgICAgICAgICAgICAgICAtPiBwcF9wcmludF9mbHVzaCBwcGYgKClcbiAgfCBGb3JjZV9uZXdsaW5lICAgICAgICAgICAgIC0+IHBwX2ZvcmNlX25ld2xpbmUgcHBmICgpXG4gIHwgRmx1c2hfbmV3bGluZSAgICAgICAgICAgICAtPiBwcF9wcmludF9uZXdsaW5lIHBwZiAoKVxuICB8IE1hZ2ljX3NpemUgKF8sIF8pICAgICAgICAgLT4gKClcbiAgfCBFc2NhcGVkX2F0ICAgICAgICAgICAgICAgIC0+IHBwX3ByaW50X2NoYXIgcHBmICdAJ1xuICB8IEVzY2FwZWRfcGVyY2VudCAgICAgICAgICAgLT4gcHBfcHJpbnRfY2hhciBwcGYgJyUnXG4gIHwgU2Nhbl9pbmRpYyBjICAgICAgICAgICAgICAtPiBwcF9wcmludF9jaGFyIHBwZiAnQCc7IHBwX3ByaW50X2NoYXIgcHBmIGNcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhbiBvdXRwdXRfc3RyZWFtLiAqKVxuKCogRGlmZmVyIGZyb20gUHJpbnRmLm91dHB1dF9hY2MgYnkgdGhlIGludGVycHJldGF0aW9uIG9mIGZvcm1hdHRpbmcuICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50Zi4gKilcbmxldCByZWMgb3V0cHV0X2FjYyBwcGYgYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIHMpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgcztcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSAoU3RyaW5nLm1ha2UgMSBjKTtcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGYpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBvdXRwdXRfZm9ybWF0dGluZ19saXQgcHBmIGY7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIHBwX29wZW5fc3RhZyBwcGYgKFN0cmluZ190YWcgKGNvbXB1dGVfdGFnIG91dHB1dF9hY2MgYWNjJykpXG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIGxldCAoaW5kZW50LCBidHkpID0gb3Blbl9ib3hfb2Zfc3RyaW5nIChjb21wdXRlX3RhZyBvdXRwdXRfYWNjIGFjYycpIGluXG4gICAgcHBfb3Blbl9ib3hfZ2VuIHBwZiBpbmRlbnQgYnR5XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9zdHJpbmcgcHBmIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfY2hhciBwcGYgYztcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgZiBwcGY7XG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2ZsdXNoIHBwZiAoKTtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gb3V0cHV0X2FjYyBwcGYgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGEgYnVmZmVyLiAqKVxuKCogRGlmZmVyIGZyb20gUHJpbnRmLmJ1ZnB1dF9hY2MgYnkgdGhlIGludGVycHJldGF0aW9uIG9mIGZvcm1hdHRpbmcuICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50Zi4gKilcbmxldCByZWMgc3RycHV0X2FjYyBwcGYgYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIHMpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgcztcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSAoU3RyaW5nLm1ha2UgMSBjKTtcbiAgfCBBY2NfZGVsYXkgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBmKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIChmICgpKTtcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGYpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBvdXRwdXRfZm9ybWF0dGluZ19saXQgcHBmIGY7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX29wZW5fc3RhZyBwcGYgKFN0cmluZ190YWcgKGNvbXB1dGVfdGFnIHN0cnB1dF9hY2MgYWNjJykpXG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIGxldCAoaW5kZW50LCBidHkpID0gb3Blbl9ib3hfb2Zfc3RyaW5nIChjb21wdXRlX3RhZyBzdHJwdXRfYWNjIGFjYycpIGluXG4gICAgcHBfb3Blbl9ib3hfZ2VuIHBwZiBpbmRlbnQgYnR5XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9zdHJpbmcgcHBmIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfY2hhciBwcGYgYztcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfc3RyaW5nIHBwZiAoZiAoKSk7XG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2ZsdXNoIHBwZiAoKTtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gc3RycHV0X2FjYyBwcGYgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKlxuXG4gIERlZmluaW5nIFtmcHJpbnRmXSBhbmQgdmFyaW91cyBmbGF2b3JzIG9mIFtmcHJpbnRmXS5cblxuKilcblxubGV0IGtmcHJpbnRmIGsgcHBmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGZcbiAgICAoZnVuIGFjYyAtPiBvdXRwdXRfYWNjIHBwZiBhY2M7IGsgcHBmKVxuICAgIEVuZF9vZl9hY2MgZm10XG5cbmFuZCBpa2ZwcmludGYgayBwcGYgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX2lwcmludGYgayBwcGYgZm10XG5cbmxldCBpZnByaW50ZiBfcHBmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9pcHJpbnRmIGlnbm9yZSAoKSBmbXRcblxubGV0IGZwcmludGYgcHBmID0ga2ZwcmludGYgaWdub3JlIHBwZlxuXG5sZXQgcHJpbnRmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGZcbiAgICAoZnVuIGFjYyAtPiBvdXRwdXRfYWNjIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSBhY2MpXG4gICAgRW5kX29mX2FjYyBmbXRcblxubGV0IGVwcmludGYgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZlxuICAgIChmdW4gYWNjIC0+IG91dHB1dF9hY2MgKERMUy5nZXQgZXJyX2Zvcm1hdHRlcl9rZXkpIGFjYylcbiAgICBFbmRfb2ZfYWNjIGZtdFxuXG5sZXQga2RwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmXG4gICAgKGZ1biBhY2MgLT4gayAoZnVuIHBwZiAtPiBvdXRwdXRfYWNjIHBwZiBhY2MpKVxuICAgIEVuZF9vZl9hY2MgZm10XG5cbmxldCBkcHJpbnRmIGZtdCA9IGtkcHJpbnRmIChmdW4gaSAtPiBpKSBmbXRcblxubGV0IGtzcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBsZXQgYiA9IHBwX21ha2VfYnVmZmVyICgpIGluXG4gIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgbGV0IGsgYWNjID1cbiAgICBzdHJwdXRfYWNjIHBwZiBhY2M7XG4gICAgayAoZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBiIHBwZikgaW5cbiAgbWFrZV9wcmludGYgayBFbmRfb2ZfYWNjIGZtdFxuXG5cbmxldCBzcHJpbnRmIGZtdCA9IGtzcHJpbnRmIGlkIGZtdFxuXG5sZXQga2FzcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBsZXQgYiA9IHBwX21ha2VfYnVmZmVyICgpIGluXG4gIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgbGV0IGsgYWNjID1cbiAgICBvdXRwdXRfYWNjIHBwZiBhY2M7XG4gICAgayAoZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBiIHBwZikgaW5cbiAgbWFrZV9wcmludGYgayBFbmRfb2ZfYWNjIGZtdFxuXG5cbmxldCBhc3ByaW50ZiBmbXQgPSBrYXNwcmludGYgaWQgZm10XG5cbigqIEZsdXNoaW5nIHN0YW5kYXJkIGZvcm1hdHRlcnMgYXQgZW5kIG9mIGV4ZWN1dGlvbi4gKilcblxubGV0IGZsdXNoX3N0YW5kYXJkX2Zvcm1hdHRlcnMgKCkgPVxuICBwcF9wcmludF9mbHVzaCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgKCk7XG4gIHBwX3ByaW50X2ZsdXNoIChETFMuZ2V0IGVycl9mb3JtYXR0ZXJfa2V5KSAoKVxuXG5sZXQgKCkgPSBhdF9leGl0IGZsdXNoX3N0YW5kYXJkX2Zvcm1hdHRlcnNcblxubGV0ICgpID0gRG9tYWluLmJlZm9yZV9maXJzdF9zcGF3biAoZnVuICgpIC0+XG4gIGZsdXNoX3N0YW5kYXJkX2Zvcm1hdHRlcnMgKCk7XG4gIGxldCBmcyA9IHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyICgpIGluXG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG4gICAge2ZzIHdpdGggb3V0X3N0cmluZyA9IGJ1ZmZlcmVkX291dF9zdHJpbmcgc3RkX2J1Zl9rZXk7XG4gICAgICAgICAgICAgb3V0X2ZsdXNoID0gYnVmZmVyZWRfb3V0X2ZsdXNoIFN0ZGxpYi5zdGRvdXQgc3RkX2J1Zl9rZXl9O1xuXG4gIGxldCBmcyA9IHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBlcnJfZm9ybWF0dGVyICgpIGluXG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBlcnJfZm9ybWF0dGVyXG4gICAge2ZzIHdpdGggb3V0X3N0cmluZyA9IGJ1ZmZlcmVkX291dF9zdHJpbmcgZXJyX2J1Zl9rZXk7XG4gICAgICAgICAgICAgb3V0X2ZsdXNoID0gYnVmZmVyZWRfb3V0X2ZsdXNoIFN0ZGxpYi5zdGRlcnIgZXJyX2J1Zl9rZXl9O1xuKVxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX21sX3N0cmluZ19sZW5ndGgiLCJjYW1sX3N0cmluZ19nZXQiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiZHVtbXkiLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYl9RdWV1ZSIsIlN0ZGxpYiIsIkNhbWxpbnRlcm5hbEZvcm1hdCIsIlN0ZGxpYl9TdHJpbmciLCJTdGRsaWJfRG9tYWluIiwiU3RkbGliX0J1ZmZlciIsIkNhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcyIsIlN0ZGxpYl9TZXEiLCJTdGRsaWJfQXJyYXkiLCJTdGRsaWJfTGlzdCIsIlN0ZGxpYl9TdGFjayIsIlN0ZGxpYl9VY2hhciIsIlN0ZGxpYl9JbnQiLCJTdGRsaWJfQnl0ZXMiLCJpZCIsIngiLCJTdHJpbmdfdGFnIiwicHBfZW5xdWV1ZSIsInN0YXRlIiwidG9rZW4iLCJwcF9vdXRwdXRfc3RyaW5nIiwicyIsInBwX3N0cmluZ193aWR0aCIsInBwX291dHB1dF9uZXdsaW5lIiwiZm9ybWF0X3BwX3RleHQiLCJzaXplIiwidGV4dCIsImNzdCIsImZvcm1hdF9zdHJpbmciLCJicmVha19uZXdfbGluZSIsInBhcmFtIiwid2lkdGgiLCJhZnRlciIsIm9mZnNldCIsImJlZm9yZSIsImluZGVudCIsInJlYWxfaW5kZW50IiwibiIsImJyZWFrX3NhbWVfbGluZSIsImZvcm1hdF9wcF90b2tlbiIsIm1hdGNoIiwidGFicyIsImFkZF90YWIiLCJscyIsImwiLCJsZW5ndGgiLCJ0YWdfbmFtZSIsIm1hcmtlciIsImxlbiIsInBvcyIsInNvdXJjZSIsImJyZWFrcyIsImZpdHMiLCJvZmYiLCJib3hfdHlwZSIsImluc2VydGlvbl9wb2ludCIsImZpcnN0IiwidGFiIiwidGFpbCIsImhlYWQiLCJ0eSIsInRib3giLCJwcF9pbmZpbml0eSIsImFkdmFuY2VfbGVmdCIsInBlbmRpbmdfY291bnQiLCJlbnF1ZXVlX2FkdmFuY2UiLCJ0b2siLCJlbnF1ZXVlX3N0cmluZ19hcyIsInVua25vd24iLCJpbml0aWFsaXplX3NjYW5fc3RhY2siLCJzdGFjayIsInNldF9zaXplIiwicXVldWVfZWxlbSIsImxlZnRfdG90YWwiLCJzY2FuX3B1c2giLCJiIiwiZWxlbSIsInBwX29wZW5fYm94X2dlbiIsImJyX3R5IiwiemVybyIsInBwX2Nsb3NlX2JveCIsInBwX29wZW5fc3RhZyIsInBwX2Nsb3NlX3N0YWciLCJwcF9zZXRfcHJpbnRfdGFncyIsInBwX3NldF9tYXJrX3RhZ3MiLCJwcF9nZXRfcHJpbnRfdGFncyIsInBwX2dldF9tYXJrX3RhZ3MiLCJwcF9zZXRfdGFncyIsInBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbiIsInBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbiIsInBjdCIsInBvdCIsIm1jdCIsIm1vdCIsInBwX3Jpbml0IiwicHBfZmx1c2hfcXVldWUiLCJlbmRfd2l0aF9uZXdsaW5lIiwicHBfcHJpbnRfYXNfc2l6ZSIsInBwX3ByaW50X2FzIiwiaXNpemUiLCJwcF9wcmludF9zdHJpbmciLCJwcF9wcmludF9zdWJzdHJpbmdfYXMiLCJwcF9wcmludF9zdWJzdHJpbmciLCJwcF9wcmludF9ieXRlcyIsInBwX3ByaW50X2ludCIsImkiLCJwcF9wcmludF9mbG9hdCIsInBwX3ByaW50X2Jvb2wiLCJwcF9wcmludF9jaGFyIiwiYyIsInBwX3ByaW50X25vdGhpbmciLCJwcF9vcGVuX2hib3giLCJwcF9vcGVuX3Zib3giLCJwcF9vcGVuX2h2Ym94IiwicHBfb3Blbl9ob3Zib3giLCJwcF9vcGVuX2JveCIsInBwX3ByaW50X25ld2xpbmUiLCJwcF9wcmludF9mbHVzaCIsInBwX2ZvcmNlX25ld2xpbmUiLCJwcF9wcmludF9pZl9uZXdsaW5lIiwicHBfcHJpbnRfY3VzdG9tX2JyZWFrIiwicHBfcHJpbnRfYnJlYWsiLCJwcF9wcmludF9zcGFjZSIsInBwX3ByaW50X2N1dCIsInBwX29wZW5fdGJveCIsInBwX2Nsb3NlX3Rib3giLCJwcF9wcmludF90YnJlYWsiLCJwcF9wcmludF90YWIiLCJwcF9zZXRfdGFiIiwicHBfc2V0X21heF9ib3hlcyIsInBwX2dldF9tYXhfYm94ZXMiLCJwcF9vdmVyX21heF9ib3hlcyIsInBwX3NldF9lbGxpcHNpc190ZXh0IiwicHBfZ2V0X2VsbGlwc2lzX3RleHQiLCJwcF9saW1pdCIsInBwX3NldF9tYXhfaW5kZW50IiwicHBfZ2V0X21heF9pbmRlbnQiLCJwcF9zZXRfbWFyZ2luIiwibmV3X21heF9pbmRlbnQiLCJ2YWxpZGF0ZV9nZW9tZXRyeSIsIm1hcmdpbiIsIm1heF9pbmRlbnQiLCJjaGVja19nZW9tZXRyeSIsImdlb21ldHJ5IiwicHBfZ2V0X21hcmdpbiIsInBwX3NldF9mdWxsX2dlb21ldHJ5IiwicHBfc2V0X2dlb21ldHJ5IiwibXNnIiwicHBfc2FmZV9zZXRfZ2VvbWV0cnkiLCJwcF9nZXRfZ2VvbWV0cnkiLCJwcF91cGRhdGVfZ2VvbWV0cnkiLCJ1cGRhdGUiLCJwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMiLCJqIiwiaCIsImciLCJmMiIsInBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsInBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsImRpc3BsYXlfbmV3bGluZSIsImJsYW5rX2xpbmUiLCJkaXNwbGF5X2JsYW5rcyIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwiLCJvYyIsImRlZmF1bHRfcHBfbWFya19vcGVuX3RhZyIsImRlZmF1bHRfcHBfbWFya19jbG9zZV90YWciLCJkZWZhdWx0X3BwX3ByaW50X29wZW5fdGFnIiwiZGVmYXVsdF9wcF9wcmludF9jbG9zZV90YWciLCJ1dGZfOF9zY2FsYXJfd2lkdGgiLCJjdXJyZW50Iiwic3RvcCIsImNvdW50IiwiZGVjb2RlIiwiYWR2YW5jZSIsImFzY2lpX3dpZHRoIiwicHBfbWFrZV9mb3JtYXR0ZXIiLCJwcF9xdWV1ZSIsInN5c190b2siLCJzY2FuX3N0YWNrIiwicHBfbWFyZ2luIiwiZm9ybWF0dGVyX29mX291dF9mdW5jdGlvbnMiLCJvdXRfZnVucyIsIm1ha2VfZm9ybWF0dGVyIiwib3V0cHV0IiwiZmx1c2giLCJwcGYiLCJmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwiLCJmb3JtYXR0ZXJfb2ZfYnVmZmVyIiwicHBfYnVmZmVyX3NpemUiLCJwcF9tYWtlX2J1ZmZlciIsInN0ZGJ1ZiIsInN0ZF9mb3JtYXR0ZXIiLCJlcnJfZm9ybWF0dGVyIiwic3RyX2Zvcm1hdHRlciIsInN0ZGJ1Zl9rZXkiLCJzdHJfZm9ybWF0dGVyX2tleSIsImJ1ZmZlcmVkX291dF9zdHJpbmciLCJrZXkiLCJzdHIiLCJvZnMiLCJidWZmZXJlZF9vdXRfZmx1c2giLCJidWYiLCJzdGRfYnVmX2tleSIsImVycl9idWZfa2V5Iiwic3RkX2Zvcm1hdHRlcl9rZXkiLCJlcnJfZm9ybWF0dGVyX2tleSIsImdldF9zdGRfZm9ybWF0dGVyIiwiZ2V0X2Vycl9mb3JtYXR0ZXIiLCJnZXRfc3RyX2Zvcm1hdHRlciIsImdldF9zdGRidWYiLCJmbHVzaF9idWZmZXJfZm9ybWF0dGVyIiwiZmx1c2hfc3RyX2Zvcm1hdHRlciIsIm1ha2Vfc3luY2hyb25pemVkX2Zvcm1hdHRlciIsInN5bmNocm9uaXplZF9mb3JtYXR0ZXJfb2Zfb3V0XyIsIm1ha2Vfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsImNsZWFyX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJzb2IiLCJnZXRfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsImZsdXNoX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJpdGVtcyIsImFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSIsIml0ZW0iLCJmb3JtYXR0ZXJfb2Zfc3ltYm9saWNfb3V0cHV0X2IiLCJvcGVuX2hib3giLCJ2Iiwib3Blbl92Ym94Iiwib3Blbl9odmJveCIsIm9wZW5faG92Ym94Iiwib3Blbl9ib3giLCJjbG9zZV9ib3giLCJvcGVuX3N0YWciLCJjbG9zZV9zdGFnIiwicHJpbnRfYXMiLCJ3IiwicHJpbnRfc3RyaW5nIiwicHJpbnRfc3Vic3RyaW5nIiwicHJpbnRfc3Vic3RyaW5nX2FzIiwiYXNfbGVuIiwicHJpbnRfYnl0ZXMiLCJwcmludF9pbnQiLCJwcmludF9mbG9hdCIsInByaW50X2NoYXIiLCJwcmludF9ib29sIiwicHJpbnRfYnJlYWsiLCJwcmludF9jdXQiLCJwcmludF9zcGFjZSIsImZvcmNlX25ld2xpbmUiLCJwcmludF9mbHVzaCIsInByaW50X25ld2xpbmUiLCJwcmludF9pZl9uZXdsaW5lIiwib3Blbl90Ym94IiwiY2xvc2VfdGJveCIsInByaW50X3RicmVhayIsInNldF90YWIiLCJwcmludF90YWIiLCJzZXRfbWFyZ2luIiwiZ2V0X21hcmdpbiIsInNldF9tYXhfaW5kZW50IiwiZ2V0X21heF9pbmRlbnQiLCJzZXRfZ2VvbWV0cnkiLCJzYWZlX3NldF9nZW9tZXRyeSIsImdldF9nZW9tZXRyeSIsInVwZGF0ZV9nZW9tZXRyeSIsInNldF9tYXhfYm94ZXMiLCJnZXRfbWF4X2JveGVzIiwib3Zlcl9tYXhfYm94ZXMiLCJzZXRfZWxsaXBzaXNfdGV4dCIsImdldF9lbGxpcHNpc190ZXh0Iiwic2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCIsInNldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMiLCJnZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIiwic2V0X3ByaW50X3RhZ3MiLCJnZXRfcHJpbnRfdGFncyIsInNldF9tYXJrX3RhZ3MiLCJnZXRfbWFya190YWdzIiwic2V0X3RhZ3MiLCJwcF9wcmludF9pdGVyIiwib3B0IiwiaXRlciIsInBwX3YiLCJwcF9zZXAiLCJpc19maXJzdCIsInBwX3ByaW50X2xpc3QiLCJwcF9wcmludF9hcnJheSIsInBwX3ByaW50X3NlcSIsInNlcSIsInBwX3ByaW50X3RleHQiLCJsZWZ0IiwicmlnaHQiLCJmb3JtYXRfdGV4dCIsImZtdDYiLCJmbXQiLCJza2lwX2FuZF9jb3VudF93aGl0ZXMiLCJzcGFjZXMiLCJuZXdsaW5lcyIsImNvbmNhdCIsInZhcmlhbnQiLCJzcGFjZSIsIm5ld2xpbmUiLCJ5Iiwic2VwIiwiYnJlYWskIiwicmVwZWF0IiwiYmxvY2siLCJkc3QiLCJwcF9wcmludF9vcHRpb24iLCJub25lIiwicHBfcHJpbnRfcmVzdWx0Iiwib2siLCJlcnJvciIsImUiLCJwcF9wcmludF9laXRoZXIiLCJyIiwiY29tcHV0ZV90YWciLCJ0YWdfYWNjIiwib3V0cHV0X2Zvcm1hdHRpbmdfbGl0IiwiZm10aW5nX2xpdCIsIm91dHB1dF9hY2MiLCJhY2MiLCJwIiwiYnR5Iiwic3RycHV0X2FjYyIsImtmcHJpbnRmIiwiayIsImlrZnByaW50ZiIsImlmcHJpbnRmIiwiZnByaW50ZiIsInByaW50ZiIsImVwcmludGYiLCJrZHByaW50ZiIsImRwcmludGYiLCJrc3ByaW50ZiIsInNwcmludGYiLCJrYXNwcmludGYiLCJhc3ByaW50ZiIsImZsdXNoX3N0YW5kYXJkX2Zvcm1hdHRlcnMiLCJmcyJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLElBQUFDLHdCQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFKLEdBQUFDLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLFFBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLElBQUFDLFNBQUE7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QUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVEdGpERCIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjI4NTU3LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvY2FsbGJhY2subWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFJlZ2lzdGVyaW5nIE9DYW1sIHZhbHVlcyB3aXRoIHRoZSBDIHJ1bnRpbWUgZm9yIGxhdGVyIGNhbGxiYWNrcyAqKVxuXG5leHRlcm5hbCByZWdpc3Rlcl9uYW1lZF92YWx1ZSA6IHN0cmluZyAtPiBPYmoudCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZVwiXG5cbmxldCByZWdpc3RlciBuYW1lIHYgPVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBuYW1lIChPYmoucmVwciB2KVxuXG5sZXQgcmVnaXN0ZXJfZXhjZXB0aW9uIG5hbWUgKGV4biA6IGV4bikgPVxuICBsZXQgZXhuID0gT2JqLnJlcHIgZXhuIGluXG4gIGxldCBzbG90ID0gaWYgT2JqLnRhZyBleG4gPSBPYmoub2JqZWN0X3RhZyB0aGVuIGV4biBlbHNlIE9iai5maWVsZCBleG4gMCBpblxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBuYW1lIHNsb3RcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSIsIlN0ZGxpYl9PYmoiLCJyZWdpc3Rlcl9leGNlcHRpb24iLCJuYW1lIiwiZXhuIiwic2xvdCJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyw0QkFBQTtBQUFBLElBQUFDLGFBQUE7QUFBQSxZQUFBQyxtQkFBQUMsTUFBQUM7QUFBQUE7QUFBQUEsS0FBQSxJQ3lCZ0I7QUFBQSxLQUFBQyxPQUFBO0FBQUEsSUFDZCw0Q0FBOEI7QUFBQTtBQUFBLEdEMUJoQyIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjI4NTgwLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6ImZtdC5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvZm10L2ZtdC5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBDb3B5cmlnaHQgKGMpIDIwMTQgVGhlIGZtdCBwcm9ncmFtbWVycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxubGV0IGludmFsaWRfYXJnJyA9IGludmFsaWRfYXJnXG5cbigqIEVycm9ycyAqKVxuXG5sZXQgZXJyX3N0cl9mb3JtYXR0ZXIgPSBcIkZvcm1hdC5zdHJfZm9ybWF0dGVyIGNhbid0IGJlIHNldC5cIlxuXG4oKiBTdGFuZGFyZCBvdXRwdXRzICopXG5cbmxldCBzdGRvdXQgPSBGb3JtYXQuc3RkX2Zvcm1hdHRlclxubGV0IHN0ZGVyciA9IEZvcm1hdC5lcnJfZm9ybWF0dGVyXG5cbigqIEZvcm1hdHRpbmcgKilcblxubGV0IHBmID0gRm9ybWF0LmZwcmludGZcbmxldCBwciA9IEZvcm1hdC5wcmludGZcbmxldCBlcHIgPSBGb3JtYXQuZXByaW50ZlxubGV0IHN0ciA9IEZvcm1hdC5hc3ByaW50ZlxubGV0IGtwZiA9IEZvcm1hdC5rZnByaW50ZlxubGV0IGtzdHIgPSBGb3JtYXQua2FzcHJpbnRmXG5sZXQgZmFpbHdpdGggZm10ID0ga3N0ciBmYWlsd2l0aCBmbXRcbmxldCBmYWlsd2l0aF9ub3RyYWNlIGZtdCA9IGtzdHIgKGZ1biBzIC0+IHJhaXNlX25vdHJhY2UgKEZhaWx1cmUgcykpIGZtdFxubGV0IGludmFsaWRfYXJnIGZtdCA9IGtzdHIgaW52YWxpZF9hcmcgZm10XG5sZXQgZXJyb3IgZm10ID0ga3N0ciAoZnVuIHMgLT4gRXJyb3IgcykgZm10XG5sZXQgZXJyb3JfbXNnIGZtdCA9IGtzdHIgKGZ1biBzIC0+IEVycm9yIChgTXNnIHMpKSBmbXRcblxuKCogRm9ybWF0dGVycyAqKVxuXG50eXBlICdhIHQgPSBGb3JtYXQuZm9ybWF0dGVyIC0+ICdhIC0+IHVuaXRcblxubGV0IGZsdXNoIHBwZiBfID0gRm9ybWF0LnBwX3ByaW50X2ZsdXNoIHBwZiAoKVxubGV0IG5vcCBmbXQgcHBmID0gKClcbmxldCBhbnkgZm10IHBwZiBfID0gcGYgcHBmIGZtdFxubGV0IHVzaW5nIGYgcHAgcHBmIHYgPSBwcCBwcGYgKGYgdilcbmxldCBjb25zdCBwcF92IHYgcHBmIF8gPSBwcF92IHBwZiB2XG5sZXQgaWYnIGJvb2wgcHAgPSBpZiBib29sIHRoZW4gcHAgZWxzZSBub3BcbmxldCBmbXQgZm10IHBwZiA9IHBmIHBwZiBmbXRcblxuKCogU2VwYXJhdG9ycyAqKVxuXG5sZXQgY3V0IHBwZiBfID0gRm9ybWF0LnBwX3ByaW50X2N1dCBwcGYgKClcbmxldCBzcCBwcGYgXyA9IEZvcm1hdC5wcF9wcmludF9zcGFjZSBwcGYgKClcbmxldCBzcHMgbiBwcGYgXyA9IEZvcm1hdC5wcF9wcmludF9icmVhayBwcGYgbiAwXG5sZXQgY29tbWEgcHBmIF8gPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiBcIixcIjsgc3AgcHBmICgpXG5sZXQgc2VtaSBwcGYgXyA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmIFwiO1wiOyBzcCBwcGYgKClcblxuKCogU2VxdWVuY2luZyAqKVxuXG5sZXQgaXRlciA/c2VwOihwcF9zZXAgPSBjdXQpIGl0ZXIgcHBfZWx0IHBwZiB2ID1cbiAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgbGV0IHBwX2VsdCB2ID1cbiAgICBpZiAhaXNfZmlyc3QgdGhlbiAoaXNfZmlyc3QgOj0gZmFsc2UpIGVsc2UgcHBfc2VwIHBwZiAoKTtcbiAgICBwcF9lbHQgcHBmIHZcbiAgaW5cbiAgaXRlciBwcF9lbHQgdlxuXG5sZXQgaXRlcl9iaW5kaW5ncyA/c2VwOihwcF9zZXAgPSBjdXQpIGl0ZXIgcHBfYmluZGluZyBwcGYgdiA9XG4gIGxldCBpc19maXJzdCA9IHJlZiB0cnVlIGluXG4gIGxldCBwcF9iaW5kaW5nIGsgdiA9XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW4gKGlzX2ZpcnN0IDo9IGZhbHNlKSBlbHNlIHBwX3NlcCBwcGYgKCk7XG4gICAgcHBfYmluZGluZyBwcGYgKGssIHYpXG4gIGluXG4gIGl0ZXIgcHBfYmluZGluZyB2XG5cbmxldCBhcHBlbmQgcHBfdjAgcHBfdjEgcHBmIHYgPSBwcF92MCBwcGYgdjsgcHBfdjEgcHBmIHZcbmxldCAoICsrICkgPSBhcHBlbmRcbmxldCBjb25jYXQgP3NlcCBwcHMgcHBmIHYgPSBpdGVyID9zZXAgTGlzdC5pdGVyIChmdW4gcHBmIHBwIC0+IHBwIHBwZiB2KSBwcGYgcHBzXG5cbigqIEJveGVzICopXG5cbmxldCBib3ggPyhpbmRlbnQgPSAwKSBwcF92IHBwZiB2ID1cbiAgRm9ybWF0LihwcF9vcGVuX2JveCBwcGYgaW5kZW50OyBwcF92IHBwZiB2OyBwcF9jbG9zZV9ib3ggcHBmICgpKVxuXG5sZXQgaGJveCBwcF92IHBwZiB2ID1cbiAgRm9ybWF0LihwcF9vcGVuX2hib3ggcHBmICgpOyBwcF92IHBwZiB2OyBwcF9jbG9zZV9ib3ggcHBmICgpKVxuXG5sZXQgdmJveCA/KGluZGVudCA9IDApIHBwX3YgcHBmIHYgPVxuICBGb3JtYXQuKHBwX29wZW5fdmJveCBwcGYgaW5kZW50OyBwcF92IHBwZiB2OyBwcF9jbG9zZV9ib3ggcHBmICgpKVxuXG5sZXQgaHZib3ggPyhpbmRlbnQgPSAwKSBwcF92IHBwZiB2ID1cbiAgRm9ybWF0LihwcF9vcGVuX2h2Ym94IHBwZiBpbmRlbnQ7IHBwX3YgcHBmIHY7IHBwX2Nsb3NlX2JveCBwcGYgKCkpXG5cbmxldCBob3Zib3ggPyhpbmRlbnQgPSAwKSBwcF92IHBwZiB2ID1cbiAgRm9ybWF0LihwcF9vcGVuX2hvdmJveCBwcGYgaW5kZW50OyBwcF92IHBwZiB2OyBwcF9jbG9zZV9ib3ggcHBmICgpKVxuXG4oKiBCcmFja2V0cyAqKVxuXG5sZXQgc3Vycm91bmQgczEgczIgcHBfdiBwcGYgdiA9XG4gIEZvcm1hdC4ocHBfcHJpbnRfc3RyaW5nIHBwZiBzMTsgcHBfdiBwcGYgdjsgcHBfcHJpbnRfc3RyaW5nIHBwZiBzMilcblxubGV0IHBhcmVucyBwcF92ID0gYm94IH5pbmRlbnQ6MSAoc3Vycm91bmQgXCIoXCIgXCIpXCIgcHBfdilcbmxldCBicmFja2V0cyBwcF92ID0gYm94IH5pbmRlbnQ6MSAoc3Vycm91bmQgXCJbXCIgXCJdXCIgcHBfdilcbmxldCBveGZvcmRfYnJhY2tldHMgcHBfdiA9IGJveCB+aW5kZW50OjIgKHN1cnJvdW5kIFwiW3xcIiBcInxdXCIgcHBfdilcbmxldCBicmFjZXMgcHBfdiA9IGJveCB+aW5kZW50OjEgKHN1cnJvdW5kIFwie1wiIFwifVwiIHBwX3YpXG5sZXQgcXVvdGUgPyhtYXJrID0gXCJcXFwiXCIpIHBwX3YgPVxuICBsZXQgcHBfbWFyayBwcGYgXyA9IEZvcm1hdC5wcF9wcmludF9hcyBwcGYgMSBtYXJrIGluXG4gIGJveCB+aW5kZW50OjEgKHBwX21hcmsgKysgcHBfdiArKyBwcF9tYXJrKVxuXG4oKiBTdGRsaWIgdHlwZXMgZm9ybWF0dGVycyAqKVxuXG5sZXQgYm9vbCA9IEZvcm1hdC5wcF9wcmludF9ib29sXG5sZXQgaW50ID0gRm9ybWF0LnBwX3ByaW50X2ludFxubGV0IG5hdGl2ZWludCBwcGYgdiA9IHBmIHBwZiBcIiVuZFwiIHZcbmxldCBpbnQzMiBwcGYgdiA9IHBmIHBwZiBcIiVsZFwiIHZcbmxldCBpbnQ2NCBwcGYgdiA9IHBmIHBwZiBcIiVMZFwiIHZcbmxldCB1aW50IHBwZiB2ID0gcGYgcHBmIFwiJXVcIiB2XG5sZXQgdWludDMyIHBwZiB2ID0gcGYgcHBmIFwiJWx1XCIgdlxubGV0IHVpbnQ2NCBwcGYgdiA9IHBmIHBwZiBcIiVMdVwiIHZcbmxldCB1bmF0aXZlaW50IHBwZiB2ID0gcGYgcHBmIFwiJW51XCIgdlxubGV0IGNoYXIgPSBGb3JtYXQucHBfcHJpbnRfY2hhclxubGV0IHN0cmluZyA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmdcbmxldCBidWZmZXIgcHBmIGIgPSBzdHJpbmcgcHBmIChCdWZmZXIuY29udGVudHMgYilcbmxldCBleG4gcHBmIGUgPSBzdHJpbmcgcHBmIChQcmludGV4Yy50b19zdHJpbmcgZSlcbmxldCBleG5fYmFja3RyYWNlIHBwZiAoZSwgYnQpID1cbiAgbGV0IHBwX2JhY2t0cmFjZV9zdHIgcHBmIHMgPVxuICAgIGxldCBzdG9wID0gU3RyaW5nLmxlbmd0aCBzIC0gMSAoKiB0aGVyZSdzIGEgbmV3bGluZSBhdCB0aGUgZW5kICopIGluXG4gICAgbGV0IHJlYyBsb29wIGxlZnQgcmlnaHQgPVxuICAgICAgaWYgcmlnaHQgPSBzdG9wIHRoZW4gc3RyaW5nIHBwZiAoU3RyaW5nLnN1YiBzIGxlZnQgKHJpZ2h0IC0gbGVmdCkpIGVsc2VcbiAgICAgIGlmIHMuW3JpZ2h0XSA8PiAnXFxuJyB0aGVuIGxvb3AgbGVmdCAocmlnaHQgKyAxKSBlbHNlXG4gICAgICBiZWdpblxuICAgICAgICBzdHJpbmcgcHBmIChTdHJpbmcuc3ViIHMgbGVmdCAocmlnaHQgLSBsZWZ0KSk7XG4gICAgICAgIGN1dCBwcGYgKCk7XG4gICAgICAgIGxvb3AgKHJpZ2h0ICsgMSkgKHJpZ2h0ICsgMSlcbiAgICAgIGVuZFxuICAgIGluXG4gICAgaWYgcyA9IFwiXCIgdGhlbiAoc3RyaW5nIHBwZiBcIk5vIGJhY2t0cmFjZSBhdmFpbGFibGUuXCIpIGVsc2VcbiAgICBsb29wIDAgMFxuICBpblxuICBwZiBwcGYgXCJAWzx2PkV4Y2VwdGlvbjogJWFALCVhQF1cIlxuICAgIGV4biBlIHBwX2JhY2t0cmFjZV9zdHIgKFByaW50ZXhjLnJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIGJ0KVxuXG5sZXQgZmxvYXQgcHBmIHYgPSBwZiBwcGYgXCIlZ1wiIHZcbmxldCByb3VuZCB4ID0gZmxvb3IgKHggKy4gMC41KVxubGV0IHJvdW5kX2RmcmFjIGQgeCA9XG4gIGlmIHggLS4gKHJvdW5kIHgpID0gMC4gdGhlbiB4IGVsc2UgICAgICAgICAgICAgICAgICAgKCogeCBpcyBhbiBpbnRlZ2VyLiAqKVxuICBsZXQgbSA9IDEwLiAqKiAoZmxvYXRfb2ZfaW50IGQpIGluICAgICAgICAgICAgICAgICgqIG0gbW92ZXMgMTBeLWQgdG8gMS4gKilcbiAgKGZsb29yICgoeCAqLiBtKSArLiAwLjUpKSAvLiBtXG5cbmxldCByb3VuZF9kc2lnIGQgeCA9XG4gIGlmIHggPSAwLiB0aGVuIDAuIGVsc2VcbiAgbGV0IG0gPSAxMC4gKiogKGZsb29yIChsb2cxMCAoYWJzX2Zsb2F0IHgpKSkgaW4gICAgICAgKCogdG8gbm9ybWFsaXplIHguICopXG4gIChyb3VuZF9kZnJhYyBkICh4IC8uIG0pKSAqLiBtXG5cbmxldCBmbG9hdF9kZnJhYyBkIHBwZiBmID0gcGYgcHBmIFwiJWdcIiAocm91bmRfZGZyYWMgZCBmKVxubGV0IGZsb2F0X2RzaWcgZCBwcGYgZiA9IHBmIHBwZiBcIiVnXCIgKHJvdW5kX2RzaWcgZCBmKVxuXG5sZXQgcGFpciA/c2VwOihwcF9zZXAgPSBjdXQpIHBwX2ZzdCBwcF9zbmQgcHBmIChmc3QsIHNuZCkgPVxuICBwcF9mc3QgcHBmIGZzdDsgcHBfc2VwIHBwZiAoKTsgcHBfc25kIHBwZiBzbmRcblxubGV0IG9wdGlvbiA/bm9uZToocHBfbm9uZSA9IG5vcCkgcHBfdiBwcGYgPSBmdW5jdGlvblxufCBOb25lIC0+IHBwX25vbmUgcHBmICgpXG58IFNvbWUgdiAtPiBwcF92IHBwZiB2XG5cbmxldCByZXN1bHQgfm9rIH5lcnJvciBwcGYgPSBmdW5jdGlvblxufCBPayB2IC0+IG9rIHBwZiB2XG58IEVycm9yIGUgLT4gZXJyb3IgcHBmIGVcblxubGV0IGxpc3QgP3NlcCBwcF9lbHQgPSBpdGVyID9zZXAgTGlzdC5pdGVyIHBwX2VsdFxubGV0IGFycmF5ID9zZXAgcHBfZWx0ID0gaXRlciA/c2VwIEFycmF5Lml0ZXIgcHBfZWx0XG5sZXQgc2VxID9zZXAgcHBfZWx0ID0gaXRlciA/c2VwIFNlcS5pdGVyIHBwX2VsdFxubGV0IGhhc2h0YmwgP3NlcCBwcF9iaW5kaW5nID0gaXRlcl9iaW5kaW5ncyA/c2VwIEhhc2h0YmwuaXRlciBwcF9iaW5kaW5nXG5sZXQgcXVldWUgP3NlcCBwcF9lbHQgPSBpdGVyIFF1ZXVlLml0ZXIgcHBfZWx0XG5sZXQgc3RhY2sgP3NlcCBwcF9lbHQgPSBpdGVyIFN0YWNrLml0ZXIgcHBfZWx0XG5cbigqIFN0ZGxpYiB0eXBlIGR1bXBlcnMgKilcblxubW9kdWxlIER1bXAgPSBzdHJ1Y3RcblxuICAoKiBTdGRsaWIgdHlwZXMgKilcblxuICBsZXQgc2lnX25hbWVzID1cbiAgICBTeXMuWyBzaWdhYnJ0LCBcIlNJR0FCUlRcIjsgc2lnYWxybSwgXCJTSUdBTFJNXCI7IHNpZ2ZwZSwgXCJTSUdGUEVcIjtcbiAgICAgICAgICBzaWdodXAsIFwiU0lHSFVQXCI7IHNpZ2lsbCwgXCJTSUdJTExcIjsgc2lnaW50LCBcIlNJR0lOVFwiO1xuICAgICAgICAgIHNpZ2tpbGwsIFwiU0lHS0lMTFwiOyBzaWdwaXBlLCBcIlNJR1BJUEVcIjsgc2lncXVpdCwgXCJTSUdRVUlUXCI7XG4gICAgICAgICAgc2lnc2VndiwgXCJTSUdTRUdWXCI7IHNpZ3Rlcm0sIFwiU0lHVEVSTVwiOyBzaWd1c3IxLCBcIlNJR1VTUjFcIjtcbiAgICAgICAgICBzaWd1c3IyLCBcIlNJR1VTUjJcIjsgc2lnY2hsZCwgXCJTSUdDSExEXCI7IHNpZ2NvbnQsIFwiU0lHQ09OVFwiO1xuICAgICAgICAgIHNpZ3N0b3AsIFwiU0lHU1RPUFwiOyBzaWd0c3RwLCBcIlNJR1RTVFBcIjsgc2lndHRpbiwgXCJTSUdUVElOXCI7XG4gICAgICAgICAgc2lndHRvdSwgXCJTSUdUVE9VXCI7IHNpZ3Z0YWxybSwgXCJTSUdWVEFMUk1cIjsgc2lncHJvZiwgXCJTSUdQUk9GXCI7XG4gICAgICAgICAgc2lnYnVzLCBcIlNJR0JVU1wiOyBzaWdwb2xsLCBcIlNJR1BPTExcIjsgc2lnc3lzLCBcIlNJR1NZU1wiO1xuICAgICAgICAgIHNpZ3RyYXAsIFwiU0lHVFJBUFwiOyBzaWd1cmcsIFwiU0lHVVJHXCI7IHNpZ3hjcHUsIFwiU0lHWENQVVwiO1xuICAgICAgICAgIHNpZ3hmc3osIFwiU0lHWEZTWlwiOyBdXG5cbiAgbGV0IHNpZ25hbCBwcGYgcyA9IG1hdGNoIExpc3QuYXNzcV9vcHQgcyBzaWdfbmFtZXMgd2l0aFxuICB8IFNvbWUgbmFtZSAtPiBzdHJpbmcgcHBmIG5hbWVcbiAgfCBOb25lIC0+IHBmIHBwZiBcIlNJRyglZClcIiBzXG5cbiAgbGV0IHVjaGFyIHBwZiB1ID0gcGYgcHBmIFwiVSslMDRYXCIgKFVjaGFyLnRvX2ludCB1KVxuICBsZXQgc3RyaW5nIHBwZiBzID0gcGYgcHBmIFwiJVNcIiBzXG4gIGxldCBwYWlyIHBwX2ZzdCBwcF9zbmQgPVxuICAgIHBhcmVucyAodXNpbmcgZnN0IChib3ggcHBfZnN0KSArKyBjb21tYSArKyB1c2luZyBzbmQgKGJveCBwcF9zbmQpKVxuXG4gIGxldCBvcHRpb24gcHBfdiBwcGYgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gcGYgcHBmIFwiTm9uZVwiXG4gIHwgU29tZSB2IC0+IHBmIHBwZiBcIkBbPDI+U29tZUAgQFslYUBdQF1cIiBwcF92IHZcblxuICBsZXQgcmVzdWx0IH5vayB+ZXJyb3IgcHBmID0gZnVuY3Rpb25cbiAgfCBPayB2IC0+IHBmIHBwZiBcIkBbPDI+T2tAIEBbJWFAXUBdXCIgb2sgdlxuICB8IEVycm9yIGUgLT4gcGYgcHBmIFwiQFs8Mj5FcnJvckAgQFslYUBdQF1cIiBlcnJvciBlXG5cbiAgKCogU2VxdWVuY2luZyAqKVxuXG4gIGxldCBpdGVyIGl0ZXJfZiBwcF9uYW1lIHBwX2VsdCA9XG4gICAgbGV0IHBwX3YgPSBpdGVyIH5zZXA6c3AgaXRlcl9mIChib3ggcHBfZWx0KSBpblxuICAgIHBhcmVucyAocHBfbmFtZSArKyBzcCArKyBwcF92KVxuXG4gIGxldCBpdGVyX2JpbmRpbmdzIGl0ZXJfZiBwcF9uYW1lIHBwX2sgcHBfdiA9XG4gICAgbGV0IHBwX3YgPSBpdGVyX2JpbmRpbmdzIH5zZXA6c3AgaXRlcl9mIChwYWlyIHBwX2sgcHBfdikgaW5cbiAgICBwYXJlbnMgKHBwX25hbWUgKysgc3AgKysgcHBfdilcblxuICAoKiBTdGRsaWIgZGF0YSBzdHJ1Y3R1cmVzICopXG5cbiAgbGV0IGxpc3QgcHBfZWx0ID0gYnJhY2tldHMgKGxpc3QgfnNlcDpzZW1pIChib3ggcHBfZWx0KSlcbiAgbGV0IGFycmF5IHBwX2VsdCA9IG94Zm9yZF9icmFja2V0cyAoYXJyYXkgfnNlcDpzZW1pIChib3ggcHBfZWx0KSlcbiAgbGV0IHNlcSBwcF9lbHQgPSBicmFja2V0cyAoc2VxIH5zZXA6c2VtaSAoYm94IHBwX2VsdCkpXG5cbiAgbGV0IGhhc2h0YmwgcHBfayBwcF92ID1cbiAgICBpdGVyX2JpbmRpbmdzIEhhc2h0YmwuaXRlciAoYW55IFwiaGFzaHRibFwiKSBwcF9rIHBwX3ZcblxuICBsZXQgc3RhY2sgcHBfZWx0ID0gaXRlciBTdGFjay5pdGVyIChhbnkgXCJzdGFja1wiKSBwcF9lbHRcbiAgbGV0IHF1ZXVlIHBwX2VsdCA9IGl0ZXIgUXVldWUuaXRlciAoYW55IFwicXVldWVcIikgcHBfZWx0XG5cbiAgKCogUmVjb3JkcyAqKVxuXG4gIGxldCBmaWVsZCA/KGxhYmVsID0gc3RyaW5nKSBsIHByaiBwcF92IHBwZiB2ID1cbiAgICBwZiBwcGYgXCJAWzwxPiVhID1AICVhQF1cIiBsYWJlbCBsIHBwX3YgKHByaiB2KVxuXG4gIGxldCByZWNvcmQgcHBzID1cbiAgICBib3ggfmluZGVudDoyIChzdXJyb3VuZCBcInsgXCIgXCIgfVwiIEBAIHZib3ggKGNvbmNhdCB+c2VwOihhbnkgXCI7QCxcIikgcHBzKSlcbmVuZFxuXG4oKiBNYWduaXR1ZGVzICopXG5cbmxldCBpbG9nMTAgeCA9XG4gIGxldCByZWMgbG9vcCBwIHggPSBpZiB4ID0gMCB0aGVuIHAgZWxzZSBsb29wIChwICsgMSkgKHggLyAxMCkgaW5cbiAgbG9vcCAoLTEpIHhcblxubGV0IGlwb3cxMCBuID1cbiAgbGV0IHJlYyBsb29wIGFjYyBuID0gaWYgbiA9IDAgdGhlbiBhY2MgZWxzZSBsb29wIChhY2MgKiAxMCkgKG4gLSAxKSBpblxuICBsb29wIDEgblxuXG5sZXQgc2lfc3ltYl9tYXggPSAxNlxubGV0IHNpX3N5bWIgPVxuICBbfCBcInlcIjsgXCJ6XCI7IFwiYVwiOyBcImZcIjsgXCJwXCI7IFwiblwiOyBcInVcIjsgXCJtXCI7IFwiXCI7IFwia1wiOyBcIk1cIjsgXCJHXCI7IFwiVFwiOyBcIlBcIjtcbiAgICAgXCJFXCI7IFwiWlwiOyBcIllcInxdXG5cbmxldCByZWMgcHBfYXRfZmFjdG9yIH5zY2FsZSB1IHN5bWIgZmFjdG9yIHBwZiBzID1cbiAgbGV0IG0gPSBzIC8gZmFjdG9yIGluXG4gIGxldCBuID0gcyBtb2QgZmFjdG9yIGluXG4gIG1hdGNoIG0gd2l0aFxuICB8IG0gd2hlbiBtID49IDEwMCAtPiAoKiBObyBmcmFjdGlvbmFsIGRpZ2l0ICopXG4gICAgICBsZXQgbV91cCA9IGlmIG4gPiAwIHRoZW4gbSArIDEgZWxzZSBtIGluXG4gICAgICBpZiBtX3VwID49IDEwMDAgdGhlbiBzaV9zaXplIH5zY2FsZSB1IHBwZiAobV91cCAqIGZhY3RvcikgZWxzZVxuICAgICAgcGYgcHBmIFwiJWQlcyVzXCIgbV91cCBzeW1iIHVcbiAgfCBtIHdoZW4gbSA+PSAxMCAtPiAoKiBPbmUgZnJhY3Rpb25hbCBkaWdpdCB3Lm8uIHRyYWlsaW5nIDAgKilcbiAgICAgIGxldCBmX2ZhY3RvciA9IGZhY3RvciAvIDEwIGluXG4gICAgICBsZXQgZl9tID0gbiAvIGZfZmFjdG9yIGluXG4gICAgICBsZXQgZl9uID0gbiBtb2QgZl9mYWN0b3IgaW5cbiAgICAgIGxldCBmX21fdXAgPSBpZiBmX24gPiAwIHRoZW4gZl9tICsgMSBlbHNlIGZfbSBpblxuICAgICAgYmVnaW4gbWF0Y2ggZl9tX3VwIHdpdGhcbiAgICAgIHwgMCAtPiBwZiBwcGYgXCIlZCVzJXNcIiBtIHN5bWIgdVxuICAgICAgfCBmIHdoZW4gZiA+PSAxMCAtPiBzaV9zaXplIH5zY2FsZSB1IHBwZiAobSAqIGZhY3RvciArIGYgKiBmX2ZhY3RvcilcbiAgICAgIHwgZiAtPiBwZiBwcGYgXCIlZC4lZCVzJXNcIiBtIGYgc3ltYiB1XG4gICAgICBlbmRcbiAgfCBtIC0+ICgqIFR3byBvciB6ZXJvIGZyYWN0aW9uYWwgZGlnaXRzIHcuby4gdHJhaWxpbmcgMCAqKVxuICAgICAgbGV0IGZfZmFjdG9yID0gZmFjdG9yIC8gMTAwIGluXG4gICAgICBsZXQgZl9tID0gbiAvIGZfZmFjdG9yIGluXG4gICAgICBsZXQgZl9uID0gbiBtb2QgZl9mYWN0b3IgaW5cbiAgICAgIGxldCBmX21fdXAgPSBpZiBmX24gPiAwIHRoZW4gZl9tICsgMSBlbHNlIGZfbSBpblxuICAgICAgbWF0Y2ggZl9tX3VwIHdpdGhcbiAgICAgIHwgMCAtPiBwZiBwcGYgXCIlZCVzJXNcIiBtIHN5bWIgdVxuICAgICAgfCBmIHdoZW4gZiA+PSAxMDAgLT4gc2lfc2l6ZSB+c2NhbGUgdSBwcGYgKG0gKiBmYWN0b3IgKyBmICogZl9mYWN0b3IpXG4gICAgICB8IGYgd2hlbiBmIG1vZCAxMCA9IDAgLT4gcGYgcHBmIFwiJWQuJWQlcyVzXCIgbSAoZiAvIDEwKSBzeW1iIHVcbiAgICAgIHwgZiAtPiBwZiBwcGYgXCIlZC4lMDJkJXMlc1wiIG0gZiBzeW1iIHVcblxuYW5kIHNpX3NpemUgfnNjYWxlIHUgcHBmIHMgPSBtYXRjaCBzY2FsZSA8IC04IHx8IHNjYWxlID4gOCB3aXRoXG58IHRydWUgLT4gaW52YWxpZF9hcmcgXCJ+c2NhbGUgaXMgJWQsIG11c3QgYmUgaW4gWy04OzhdXCIgc2NhbGVcbnwgZmFsc2UgLT5cbiAgICBsZXQgcG93X2Rpdl8zID0gaWYgcyA9IDAgdGhlbiAwIGVsc2UgKGlsb2cxMCBzIC8gMykgaW5cbiAgICBsZXQgc3ltYiA9IChzY2FsZSArIDgpICsgcG93X2Rpdl8zIGluXG4gICAgbGV0IHN5bWIsIGZhY3RvciA9IG1hdGNoIHN5bWIgPiBzaV9zeW1iX21heCB3aXRoXG4gICAgfCB0cnVlIC0+IHNpX3N5bWJfbWF4LCBpcG93MTAgKCg4IC0gc2NhbGUpICogMylcbiAgICB8IGZhbHNlIC0+IHN5bWIsIGlwb3cxMCAocG93X2Rpdl8zICogMylcbiAgICBpblxuICAgIGlmIGZhY3RvciA9IDFcbiAgICB0aGVuIHBmIHBwZiBcIiVkJXMlc1wiIHMgc2lfc3ltYi4oc3ltYikgdVxuICAgIGVsc2UgcHBfYXRfZmFjdG9yIH5zY2FsZSB1IHNpX3N5bWIuKHN5bWIpIGZhY3RvciBwcGYgc1xuXG5sZXQgYnl0ZV9zaXplIHBwZiBzID0gc2lfc2l6ZSB+c2NhbGU6MCBcIkJcIiBwcGYgc1xuXG5sZXQgYmlfYnl0ZV9zaXplIHBwZiBzID1cbiAgKCogWFhYIHdlIHNob3VsZCBnZXQgcmlkIG9mIHRoaXMuICopXG4gIGxldCBfcHBfYnl0ZV9zaXplIGsgaSBwcGYgcyA9XG4gICAgbGV0IHBwX2ZyYWMgPSBmbG9hdF9kZnJhYyAxIGluXG4gICAgbGV0IGRpdl9yb3VuZF91cCBtIG4gPSAobSArIG4gLSAxKSAvIG4gaW5cbiAgICBsZXQgZmxvYXQgPSBmbG9hdF9vZl9pbnQgaW5cbiAgICBpZiBzIDwgayB0aGVuIHBmIHBwZiBcIiVkQlwiIHMgZWxzZVxuICAgIGxldCBtID0gayAqIGsgaW5cbiAgICBpZiBzIDwgbSB0aGVuIGJlZ2luXG4gICAgICBsZXQga3N0ciA9IGlmIGkgPSBcIlwiIHRoZW4gXCJrXCIgKCogU0kgKikgZWxzZSBcIktcIiAoKiBJRUMgKikgaW5cbiAgICAgIGxldCBzayA9IHMgLyBrIGluXG4gICAgICBpZiBzayA8IDEwXG4gICAgICB0aGVuIHBmIHBwZiBcIiVhJXMlc0JcIiBwcF9mcmFjIChmbG9hdCBzIC8uIGZsb2F0IGspIGtzdHIgaVxuICAgICAgZWxzZSBwZiBwcGYgXCIlZCVzJXNCXCIgKGRpdl9yb3VuZF91cCBzIGspIGtzdHIgaVxuICAgIGVuZCBlbHNlXG4gICAgbGV0IGcgPSBrICogbSBpblxuICAgIGlmIHMgPCBnIHRoZW4gYmVnaW5cbiAgICAgIGxldCBzbSA9IHMgLyBtIGluXG4gICAgICBpZiBzbSA8IDEwXG4gICAgICB0aGVuIHBmIHBwZiBcIiVhTSVzQlwiIHBwX2ZyYWMgKGZsb2F0IHMgLy4gZmxvYXQgbSkgaVxuICAgICAgZWxzZSBwZiBwcGYgXCIlZE0lc0JcIiAoZGl2X3JvdW5kX3VwIHMgbSkgaVxuICAgIGVuZCBlbHNlXG4gICAgbGV0IHQgPSBrICogZyBpblxuICAgIGlmIHMgPCB0IHRoZW4gYmVnaW5cbiAgICAgIGxldCBzZyA9IHMgLyBnIGluXG4gICAgICBpZiBzZyA8IDEwXG4gICAgICB0aGVuIHBmIHBwZiBcIiVhRyVzQlwiIHBwX2ZyYWMgKGZsb2F0IHMgLy4gZmxvYXQgZykgaVxuICAgICAgZWxzZSBwZiBwcGYgXCIlZEclc0JcIiAoZGl2X3JvdW5kX3VwIHMgZykgaVxuICAgIGVuZCBlbHNlXG4gICAgbGV0IHAgPSBrICogdCBpblxuICAgIGlmIHMgPCBwIHRoZW4gYmVnaW5cbiAgICAgIGxldCBzdCA9IHMgLyB0IGluXG4gICAgICBpZiBzdCA8IDEwXG4gICAgICB0aGVuIHBmIHBwZiBcIiVhVCVzQlwiIHBwX2ZyYWMgKGZsb2F0IHMgLy4gZmxvYXQgdCkgaVxuICAgICAgZWxzZSBwZiBwcGYgXCIlZFQlc0JcIiAoZGl2X3JvdW5kX3VwIHMgdCkgaVxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBsZXQgc3AgPSBzIC8gcCBpblxuICAgICAgaWYgc3AgPCAxMFxuICAgICAgdGhlbiBwZiBwcGYgXCIlYVAlc0JcIiBwcF9mcmFjIChmbG9hdCBzIC8uIGZsb2F0IHApIGlcbiAgICAgIGVsc2UgcGYgcHBmIFwiJWRQJXNCXCIgKGRpdl9yb3VuZF91cCBzIHApIGlcbiAgICBlbmRcbiAgaW5cbiAgX3BwX2J5dGVfc2l6ZSAxMDI0IFwiaVwiIHBwZiBzXG5cbigqIFhYWCBGcm9tIDQuMDggb24gdXNlIEludDY0LnVuc2lnbmVkXypcblxuICAgU2VlIEhhY2tlcidzIERlbGlnaHQgZm9yIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGVzZSB1bnNpZ25lZF8qIGZ1bnMgKilcblxubGV0IHVuc2lnbmVkX2NvbXBhcmUgeDAgeDEgPSBJbnQ2NC4oY29tcGFyZSAoc3ViIHgwIG1pbl9pbnQpIChzdWIgeDEgbWluX2ludCkpXG5sZXQgdW5zaWduZWRfZGl2IG4gZCA9IG1hdGNoIGQgPCBJbnQ2NC56ZXJvIHdpdGhcbnwgdHJ1ZSAtPiBpZiB1bnNpZ25lZF9jb21wYXJlIG4gZCA8IDAgdGhlbiBJbnQ2NC56ZXJvIGVsc2UgSW50NjQub25lXG58IGZhbHNlIC0+XG4gICAgbGV0IHEgPSBJbnQ2NC4oc2hpZnRfbGVmdCAoZGl2IChzaGlmdF9yaWdodF9sb2dpY2FsIG4gMSkgZCkgMSkgaW5cbiAgICBsZXQgciA9IEludDY0LihzdWIgbiAobXVsIHEgZCkpIGluXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSByIGQgPj0gMCB0aGVuIEludDY0LnN1Y2MgcSBlbHNlIHFcblxubGV0IHVuc2lnbmVkX3JlbSBuIGQgPSBJbnQ2NC4oc3ViIG4gKG11bCAodW5zaWduZWRfZGl2IG4gZCkgZCkpXG5cbmxldCB1c19zcGFuICAgPSAgICAgICAgICAgICAgICAgIDFfMDAwTFxubGV0IG1zX3NwYW4gICA9ICAgICAgICAgICAgICAxXzAwMF8wMDBMXG5sZXQgc2VjX3NwYW4gID0gICAgICAgICAgMV8wMDBfMDAwXzAwMExcbmxldCBtaW5fc3BhbiAgPSAgICAgICAgIDYwXzAwMF8wMDBfMDAwTFxubGV0IGhvdXJfc3BhbiA9ICAgICAgIDM2MDBfMDAwXzAwMF8wMDBMXG5sZXQgZGF5X3NwYW4gID0gICAgIDg2XzQwMF8wMDBfMDAwXzAwMExcbmxldCB5ZWFyX3NwYW4gPSAzMV81NTdfNjAwXzAwMF8wMDBfMDAwTFxuXG5sZXQgcmVjIHBwX3NpX3NwYW4gdW5pdF9zdHIgc2lfdW5pdCBzaV9oaWdoZXJfdW5pdCBwcGYgc3BhbiA9XG4gIGxldCBnZXEgeCB5ID0gdW5zaWduZWRfY29tcGFyZSB4IHkgPj0gMCBpblxuICBsZXQgbSA9IHVuc2lnbmVkX2RpdiBzcGFuIHNpX3VuaXQgaW5cbiAgbGV0IG4gPSB1bnNpZ25lZF9yZW0gc3BhbiBzaV91bml0IGluXG4gIG1hdGNoIG0gd2l0aFxuICB8IG0gd2hlbiBnZXEgbSAxMDBMIC0+ICgqIE5vIGZyYWN0aW9uYWwgZGlnaXQgKilcbiAgICAgIGxldCBtX3VwID0gaWYgSW50NjQuZXF1YWwgbiAwTCB0aGVuIG0gZWxzZSBJbnQ2NC5zdWNjIG0gaW5cbiAgICAgIGxldCBzcGFuJyA9IEludDY0Lm11bCBtX3VwIHNpX3VuaXQgaW5cbiAgICAgIGlmIGdlcSBzcGFuJyBzaV9oaWdoZXJfdW5pdCB0aGVuIHVpbnQ2NF9uc19zcGFuIHBwZiBzcGFuJyBlbHNlXG4gICAgICBwZiBwcGYgXCIlTGQlc1wiIG1fdXAgdW5pdF9zdHJcbiAgfCBtIHdoZW4gZ2VxIG0gMTBMIC0+ICgqIE9uZSBmcmFjdGlvbmFsIGRpZ2l0IHcuby4gdHJhaWxpbmcgemVybyAqKVxuICAgICAgbGV0IGZfZmFjdG9yID0gdW5zaWduZWRfZGl2IHNpX3VuaXQgMTBMIGluXG4gICAgICBsZXQgZl9tID0gdW5zaWduZWRfZGl2IG4gZl9mYWN0b3IgaW5cbiAgICAgIGxldCBmX24gPSB1bnNpZ25lZF9yZW0gbiBmX2ZhY3RvciBpblxuICAgICAgbGV0IGZfbV91cCA9IGlmIEludDY0LmVxdWFsIGZfbiAwTCB0aGVuIGZfbSBlbHNlIEludDY0LnN1Y2MgZl9tIGluXG4gICAgICBiZWdpbiBtYXRjaCBmX21fdXAgd2l0aFxuICAgICAgfCAwTCAtPiBwZiBwcGYgXCIlTGQlc1wiIG0gdW5pdF9zdHJcbiAgICAgIHwgZiB3aGVuIGdlcSBmIDEwTCAtPlxuICAgICAgICAgIHVpbnQ2NF9uc19zcGFuIHBwZiBJbnQ2NC4oYWRkIChtdWwgbSBzaV91bml0KSAobXVsIGYgZl9mYWN0b3IpKVxuICAgICAgfCBmIC0+IHBmIHBwZiBcIiVMZC4lTGQlc1wiIG0gZiB1bml0X3N0clxuICAgICAgZW5kXG4gIHwgbSAtPiAoKiBUd28gb3IgemVybyBmcmFjdGlvbmFsIGRpZ2l0cyB3Lm8uIHRyYWlsaW5nIHplcm8gKilcbiAgICAgIGxldCBmX2ZhY3RvciA9IHVuc2lnbmVkX2RpdiBzaV91bml0IDEwMEwgaW5cbiAgICAgIGxldCBmX20gPSB1bnNpZ25lZF9kaXYgbiBmX2ZhY3RvciBpblxuICAgICAgbGV0IGZfbiA9IHVuc2lnbmVkX3JlbSBuIGZfZmFjdG9yIGluXG4gICAgICBsZXQgZl9tX3VwID0gaWYgSW50NjQuZXF1YWwgZl9uIDBMIHRoZW4gZl9tIGVsc2UgSW50NjQuc3VjYyBmX20gaW5cbiAgICAgIG1hdGNoIGZfbV91cCB3aXRoXG4gICAgICB8IDBMIC0+IHBmIHBwZiBcIiVMZCVzXCIgbSB1bml0X3N0clxuICAgICAgfCBmIHdoZW4gZ2VxIGYgMTAwTCAtPlxuICAgICAgICAgIHVpbnQ2NF9uc19zcGFuIHBwZiBJbnQ2NC4oYWRkIChtdWwgbSBzaV91bml0KSAobXVsIGYgZl9mYWN0b3IpKVxuICAgICAgfCBmIHdoZW4gSW50NjQuZXF1YWwgKEludDY0LnJlbSBmIDEwTCkgMEwgLT5cbiAgICAgICAgICBwZiBwcGYgXCIlTGQuJUxkJXNcIiBtIChJbnQ2NC5kaXYgZiAxMEwpIHVuaXRfc3RyXG4gICAgICB8IGYgLT5cbiAgICAgICAgICBwZiBwcGYgXCIlTGQuJTAyTGQlc1wiIG0gZiB1bml0X3N0clxuXG5hbmQgcHBfbm9uX3NpIHVuaXRfc3RyIHVuaXQgdW5pdF9sb19zdHIgdW5pdF9sbyB1bml0X2xvX3NpemUgcHBmIHNwYW4gPVxuICBsZXQgZ2VxIHggeSA9IHVuc2lnbmVkX2NvbXBhcmUgeCB5ID49IDAgaW5cbiAgbGV0IG0gPSB1bnNpZ25lZF9kaXYgc3BhbiB1bml0IGluXG4gIGxldCBuID0gdW5zaWduZWRfcmVtIHNwYW4gdW5pdCBpblxuICBpZiBJbnQ2NC5lcXVhbCBuIDBMIHRoZW4gcGYgcHBmIFwiJUxkJXNcIiBtIHVuaXRfc3RyIGVsc2VcbiAgbGV0IGZfbSA9IHVuc2lnbmVkX2RpdiBuIHVuaXRfbG8gaW5cbiAgbGV0IGZfbiA9IHVuc2lnbmVkX3JlbSBuIHVuaXRfbG8gaW5cbiAgbGV0IGZfbV91cCA9IGlmIEludDY0LmVxdWFsIGZfbiAwTCB0aGVuIGZfbSBlbHNlIEludDY0LnN1Y2MgZl9tIGluXG4gIG1hdGNoIGZfbV91cCB3aXRoXG4gIHwgZiB3aGVuIGdlcSBmIHVuaXRfbG9fc2l6ZSAtPlxuICAgICAgdWludDY0X25zX3NwYW4gcHBmIEludDY0LihhZGQgKG11bCBtIHVuaXQpIChtdWwgZiB1bml0X2xvKSlcbiAgfCBmIC0+XG4gICAgICBwZiBwcGYgXCIlTGQlcyVMZCVzXCIgbSB1bml0X3N0ciBmIHVuaXRfbG9fc3RyXG5cbmFuZCB1aW50NjRfbnNfc3BhbiBwcGYgc3BhbiA9XG4gIGxldCBnZXEgeCB5ID0gdW5zaWduZWRfY29tcGFyZSB4IHkgPj0gMCBpblxuICBsZXQgbHQgeCB5ID0gdW5zaWduZWRfY29tcGFyZSB4IHkgPSAtMSBpblxuICBtYXRjaCBzcGFuIHdpdGhcbiAgfCBzIHdoZW4gbHQgcyB1c19zcGFuIC0+IHBmIHBwZiBcIiVMZG5zXCIgc1xuICB8IHMgd2hlbiBsdCBzIG1zX3NwYW4gLT4gcHBfc2lfc3BhbiBcInVzXCIgdXNfc3BhbiBtc19zcGFuIHBwZiBzXG4gIHwgcyB3aGVuIGx0IHMgc2VjX3NwYW4gLT4gcHBfc2lfc3BhbiBcIm1zXCIgbXNfc3BhbiBzZWNfc3BhbiBwcGYgc1xuICB8IHMgd2hlbiBsdCBzIG1pbl9zcGFuIC0+IHBwX3NpX3NwYW4gXCJzXCIgc2VjX3NwYW4gbWluX3NwYW4gcHBmIHNcbiAgfCBzIHdoZW4gbHQgcyBob3VyX3NwYW4gLT4gcHBfbm9uX3NpIFwibWluXCIgbWluX3NwYW4gXCJzXCIgc2VjX3NwYW4gNjBMIHBwZiBzXG4gIHwgcyB3aGVuIGx0IHMgZGF5X3NwYW4gLT4gcHBfbm9uX3NpIFwiaFwiIGhvdXJfc3BhbiBcIm1pblwiIG1pbl9zcGFuIDYwTCBwcGYgc1xuICB8IHMgd2hlbiBsdCBzIHllYXJfc3BhbiAtPiBwcF9ub25fc2kgXCJkXCIgZGF5X3NwYW4gXCJoXCIgaG91cl9zcGFuIDI0TCBwcGYgc1xuICB8IHMgLT5cbiAgICAgIGxldCBtID0gdW5zaWduZWRfZGl2IHMgeWVhcl9zcGFuIGluXG4gICAgICBsZXQgbiA9IHVuc2lnbmVkX3JlbSBzIHllYXJfc3BhbiBpblxuICAgICAgaWYgSW50NjQuZXF1YWwgbiAwTCB0aGVuIHBmIHBwZiBcIiVMZGFcIiBtIGVsc2VcbiAgICAgIGxldCBmX20gPSB1bnNpZ25lZF9kaXYgbiBkYXlfc3BhbiBpblxuICAgICAgbGV0IGZfbiA9IHVuc2lnbmVkX3JlbSBuIGRheV9zcGFuIGluXG4gICAgICBsZXQgZl9tX3VwID0gaWYgSW50NjQuZXF1YWwgZl9uIDBMIHRoZW4gZl9tIGVsc2UgSW50NjQuc3VjYyBmX20gaW5cbiAgICAgIG1hdGNoIGZfbV91cCB3aXRoXG4gICAgICB8IGYgd2hlbiBnZXEgZiAzNjZMIC0+IHBmIHBwZiBcIiVMZGFcIiAoSW50NjQuc3VjYyBtKVxuICAgICAgfCBmIC0+IHBmIHBwZiBcIiVMZGElTGRkXCIgbSBmXG5cbigqIEJpbmFyeSBmb3JtYXR0aW5nICopXG5cbnR5cGUgJ2EgdmVjID0gaW50ICogKGludCAtPiAnYSlcblxubGV0IGl0ZXJfdmVjIGYgKG4sIGdldCkgPSBmb3IgaSA9IDAgdG8gbiAtIDEgZG8gZiBpIChnZXQgaSkgZG9uZVxubGV0IHZlYyA/c2VwID0gaXRlcl9iaW5kaW5ncyA/c2VwIGl0ZXJfdmVjXG5cbmxldCBvbl9zdHJpbmcgPSB1c2luZyBTdHJpbmcuKGZ1biBzIC0+IGxlbmd0aCBzLCBnZXQgcylcbmxldCBvbl9ieXRlcyA9IHVzaW5nIEJ5dGVzLihmdW4gYiAtPiBsZW5ndGggYiwgZ2V0IGIpXG5cbmxldCBzdWJfdmVjcyB3IChuLCBnZXQpID1cbiAgKG4gLSAxKSAvIHcgKyAxLFxuICBmdW4gaiAtPlxuICAgIGxldCBvZmYgPSB3ICogaiBpblxuICAgIG1pbiB3IChuIC0gb2ZmKSwgZnVuIGkgLT4gZ2V0IChpICsgb2ZmKVxuXG5sZXQgcHJlZml4MHggPSBbXG4gIDB4ZiAgICAgICAsIGZtdCBcIiUwMXhcIjtcbiAgMHhmZiAgICAgICwgZm10IFwiJTAyeFwiO1xuICAweGZmZiAgICAgLCBmbXQgXCIlMDN4XCI7XG4gIDB4ZmZmZiAgICAsIGZtdCBcIiUwNHhcIjtcbiAgMHhmZmZmZiAgICwgZm10IFwiJTA1eFwiO1xuICAweGZmZmZmZiAgLCBmbXQgXCIlMDZ4XCI7XG4gIDB4ZmZmZmZmZiAsIGZtdCBcIiUwN3hcIjsgXVxuXG5sZXQgcGFkZGVkMHggfm1heCA9IG1hdGNoIExpc3QuZmluZF9vcHQgKGZ1biAoeCwgXykgLT4gbWF4IDw9IHgpIHByZWZpeDB4IHdpdGhcbnwgU29tZSAoXywgcHApIC0+IHBwXG58IE5vbmUgLT4gZm10IFwiJTA4eFwiXG5cbmxldCBhc2NpaSA/KHcgPSAwKSA/KHN1YnN0ID0gY29uc3QgY2hhciAnLicpICgpIHBwZiAobiwgXyBhcyB2KSA9XG4gIGxldCBwcF9jaGFyIHBwZiAoXywgYykgPVxuICAgIGlmICdcXHgyMCcgPD0gYyAmJiBjIDwgJ1xceDdmJyB0aGVuIGNoYXIgcHBmIGMgZWxzZSBzdWJzdCBwcGYgKClcbiAgaW5cbiAgdmVjIHBwX2NoYXIgcHBmIHY7XG4gIGlmIG4gPCB3IHRoZW4gc3BzICh3IC0gbikgcHBmICgpXG5cbmxldCBvY3RldHMgPyh3ID0gMCkgPyhzZXAgPSBzcCkgKCkgcHBmIChuLCBfIGFzIHYpID1cbiAgbGV0IHBwX3NlcCBwcGYgaSA9IGlmIGkgPiAwICYmIGkgbW9kIDIgPSAwIHRoZW4gc2VwIHBwZiAoKSBpblxuICBsZXQgcHBfY2hhciBwcGYgKGksIGMpID0gcHBfc2VwIHBwZiBpOyBwZiBwcGYgXCIlMDJ4XCIgKENoYXIuY29kZSBjKSBpblxuICB2ZWMgfnNlcDpub3AgcHBfY2hhciBwcGYgdjtcbiAgZm9yIGkgPSBuIHRvIHcgLSAxIGRvIHBwX3NlcCBwcGYgaTsgc3BzIDIgcHBmICgpIGRvbmVcblxubGV0IGFkZHJlc3NlcyA/YWRkciA/KHcgPSAxNikgcHBfdmVjIHBwZiAobiwgXyBhcyB2KSA9XG4gIGxldCBhZGRyID0gbWF0Y2ggYWRkciB3aXRoXG4gIHwgU29tZSBwcCAtPiBwcFxuICB8IF8gLT4gcGFkZGVkMHggfm1heDooKChuIC0gMSkgLyB3KSAqIHcpICsrIGNvbnN0IHN0cmluZyBcIjogXCJcbiAgaW5cbiAgbGV0IHBwX3N1YiBwcGYgKGksIHN1YikgPSBhZGRyIHBwZiAoaSAqIHcpOyBib3ggcHBfdmVjIHBwZiBzdWIgaW5cbiAgdmJveCAodmVjIHBwX3N1YikgcHBmIChzdWJfdmVjcyB3IHYpXG5cbmxldCBoZXggPyh3ID0gMTYpICgpID1cbiAgYWRkcmVzc2VzIH53ICgob2N0ZXRzIH53ICgpIHw+IGJveCkgKysgc3BzIDIgKysgKGFzY2lpIH53ICgpIHw+IGJveCkpXG5cbigqIFRleHQgYW5kIGxpbmVzICopXG5cbmxldCBpc19ubCBjID0gYyA9ICdcXG4nXG5sZXQgaXNfbmxfb3Jfc3AgYyA9IGlzX25sIGMgfHwgYyA9ICcgJ1xubGV0IGlzX3doaXRlID0gZnVuY3Rpb24gJyAnIHwgJ1xcdCcgLi4gJ1xccicgIC0+IHRydWUgfCBfIC0+IGZhbHNlXG5sZXQgbm90X3doaXRlIGMgPSBub3QgKGlzX3doaXRlIGMpXG5sZXQgbm90X3doaXRlX29yX25sIGMgPSBpc19ubCBjIHx8IG5vdF93aGl0ZSBjXG5cbmxldCByZWMgc3RvcF9hdCBzYXQgfnN0YXJ0IH5tYXggcyA9XG4gIGlmIHN0YXJ0ID4gbWF4IHRoZW4gc3RhcnQgZWxzZVxuICBpZiBzYXQgcy5bc3RhcnRdIHRoZW4gc3RhcnQgZWxzZVxuICBzdG9wX2F0IHNhdCB+c3RhcnQ6KHN0YXJ0ICsgMSkgfm1heCBzXG5cbmxldCBzdWIgcyBzdGFydCBzdG9wIH5tYXggPVxuICBpZiBzdGFydCA9IHN0b3AgdGhlbiBcIlwiIGVsc2VcbiAgaWYgc3RhcnQgPSAwICYmIHN0b3AgPiBtYXggdGhlbiBzIGVsc2VcbiAgU3RyaW5nLnN1YiBzIHN0YXJ0IChzdG9wIC0gc3RhcnQpXG5cbmxldCB3b3JkcyBwcGYgcyA9XG4gIGxldCBtYXggPSBTdHJpbmcubGVuZ3RoIHMgLSAxIGluXG4gIGxldCByZWMgbG9vcCBzdGFydCBzID0gbWF0Y2ggc3RvcF9hdCBpc193aGl0ZSB+c3RhcnQgfm1heCBzIHdpdGhcbiAgfCBzdG9wIHdoZW4gc3RvcCA+IG1heCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiAoc3ViIHMgc3RhcnQgc3RvcCB+bWF4KVxuICB8IHN0b3AgLT5cbiAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmIChzdWIgcyBzdGFydCBzdG9wIH5tYXgpO1xuICAgICAgbWF0Y2ggc3RvcF9hdCBub3Rfd2hpdGUgfnN0YXJ0OnN0b3Agfm1heCBzIHdpdGhcbiAgICAgIHwgc3RvcCB3aGVuIHN0b3AgPiBtYXggLT4gKClcbiAgICAgIHwgc3RvcCAtPiBGb3JtYXQucHBfcHJpbnRfc3BhY2UgcHBmICgpOyBsb29wIHN0b3Agc1xuICBpblxuICBsZXQgc3RhcnQgPSBzdG9wX2F0IG5vdF93aGl0ZSB+c3RhcnQ6MCB+bWF4IHMgaW5cbiAgaWYgc3RhcnQgPiBtYXggdGhlbiAoKSBlbHNlIGxvb3Agc3RhcnQgc1xuXG5sZXQgcGFyYWdyYXBocyBwcGYgcyA9XG4gIGxldCBtYXggPSBTdHJpbmcubGVuZ3RoIHMgLSAxIGluXG4gIGxldCByZWMgbG9vcCBzdGFydCBzID0gbWF0Y2ggc3RvcF9hdCBpc193aGl0ZSB+c3RhcnQgfm1heCBzIHdpdGhcbiAgfCBzdG9wIHdoZW4gc3RvcCA+IG1heCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiAoc3ViIHMgc3RhcnQgc3RvcCB+bWF4KVxuICB8IHN0b3AgLT5cbiAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmIChzdWIgcyBzdGFydCBzdG9wIH5tYXgpO1xuICAgICAgbWF0Y2ggc3RvcF9hdCBub3Rfd2hpdGVfb3JfbmwgfnN0YXJ0OnN0b3Agfm1heCBzIHdpdGhcbiAgICAgIHwgc3RvcCB3aGVuIHN0b3AgPiBtYXggLT4gKClcbiAgICAgIHwgc3RvcCAtPlxuICAgICAgICAgIGlmIHMuW3N0b3BdIDw+ICdcXG4nXG4gICAgICAgICAgdGhlbiAoRm9ybWF0LnBwX3ByaW50X3NwYWNlIHBwZiAoKTsgbG9vcCBzdG9wIHMpIGVsc2VcbiAgICAgICAgICBtYXRjaCBzdG9wX2F0IG5vdF93aGl0ZV9vcl9ubCB+c3RhcnQ6KHN0b3AgKyAxKSB+bWF4IHMgd2l0aFxuICAgICAgICAgIHwgc3RvcCB3aGVuIHN0b3AgPiBtYXggLT4gKClcbiAgICAgICAgICB8IHN0b3AgLT5cbiAgICAgICAgICAgICAgaWYgcy5bc3RvcF0gPD4gJ1xcbidcbiAgICAgICAgICAgICAgdGhlbiAoRm9ybWF0LnBwX3ByaW50X3NwYWNlIHBwZiAoKTsgbG9vcCBzdG9wIHMpIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggc3RvcF9hdCBub3Rfd2hpdGUgfnN0YXJ0OihzdG9wICsgMSkgfm1heCBzIHdpdGhcbiAgICAgICAgICAgICAgfCBzdG9wIHdoZW4gc3RvcCA+IG1heCAtPiAoKVxuICAgICAgICAgICAgICB8IHN0b3AgLT5cbiAgICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9mb3JjZV9uZXdsaW5lIHBwZiAoKTtcbiAgICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9mb3JjZV9uZXdsaW5lIHBwZiAoKTtcbiAgICAgICAgICAgICAgICAgIGxvb3Agc3RvcCBzXG4gIGluXG4gIGxldCBzdGFydCA9IHN0b3BfYXQgbm90X3doaXRlIH5zdGFydDowIH5tYXggcyBpblxuICBpZiBzdGFydCA+IG1heCB0aGVuICgpIGVsc2UgbG9vcCBzdGFydCBzXG5cbmxldCB0ZXh0IHBwZiBzID1cbiAgbGV0IG1heCA9IFN0cmluZy5sZW5ndGggcyAtIDEgaW5cbiAgbGV0IHJlYyBsb29wIHN0YXJ0IHMgPSBtYXRjaCBzdG9wX2F0IGlzX25sX29yX3NwIH5zdGFydCB+bWF4IHMgd2l0aFxuICB8IHN0b3Agd2hlbiBzdG9wID4gbWF4IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmIChzdWIgcyBzdGFydCBzdG9wIH5tYXgpXG4gIHwgc3RvcCAtPlxuICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBwcGYgKHN1YiBzIHN0YXJ0IHN0b3Agfm1heCk7XG4gICAgICBiZWdpbiBtYXRjaCBzLltzdG9wXSB3aXRoXG4gICAgICB8ICcgJyAtPiBGb3JtYXQucHBfcHJpbnRfc3BhY2UgcHBmICgpXG4gICAgICB8ICdcXG4nIC0+IEZvcm1hdC5wcF9mb3JjZV9uZXdsaW5lIHBwZiAoKVxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgZW5kO1xuICAgICAgbG9vcCAoc3RvcCArIDEpIHNcbiAgaW5cbiAgbG9vcCAwIHNcblxubGV0IGxpbmVzIHBwZiBzID1cbiAgbGV0IG1heCA9IFN0cmluZy5sZW5ndGggcyAtIDEgaW5cbiAgbGV0IHJlYyBsb29wIHN0YXJ0IHMgPSBtYXRjaCBzdG9wX2F0IGlzX25sIH5zdGFydCB+bWF4IHMgd2l0aFxuICB8IHN0b3Agd2hlbiBzdG9wID4gbWF4IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmIChzdWIgcyBzdGFydCBzdG9wIH5tYXgpXG4gIHwgc3RvcCAtPlxuICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBwcGYgKHN1YiBzIHN0YXJ0IHN0b3Agfm1heCk7XG4gICAgICBGb3JtYXQucHBfZm9yY2VfbmV3bGluZSBwcGYgKCk7XG4gICAgICBsb29wIChzdG9wICsgMSkgc1xuICBpblxuICBsb29wIDAgc1xuXG5sZXQgdHJ1bmNhdGVkIH5tYXggcHBmIHMgPSBtYXRjaCBTdHJpbmcubGVuZ3RoIHMgPD0gbWF4IHdpdGhcbnwgdHJ1ZSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiBzXG58IGZhbHNlIC0+XG4gICAgZm9yIGkgPSAwIHRvIG1heCAtIDQgZG8gRm9ybWF0LnBwX3ByaW50X2NoYXIgcHBmIHMuW2ldIGRvbmU7XG4gICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBwcGYgXCIuLi5cIlxuXG5sZXQgdGV4dF9sb2MgcHBmICgobDAsIGMwKSwgKGwxLCBjMSkpID1cbiAgaWYgKGwwIDogaW50KSA9PSAobDEgOiBpbnQpICYmIChjMCA6IGludCkgPT0gKGMxIDogaW50KVxuICB0aGVuIHBmIHBwZiBcIiVkLiVkXCIgbDAgYzBcbiAgZWxzZSBwZiBwcGYgXCIlZC4lZC0lZC4lZFwiIGwwIGMwIGwxIGMxXG5cbigqIEhDSSBmcmFnbWVudHMgKilcblxubGV0IG9uZV9vZiA/KGVtcHR5ID0gbm9wKSBwcF92IHBwZiA9IGZ1bmN0aW9uXG58IFtdIC0+IGVtcHR5IHBwZiAoKVxufCBbdl0gLT4gcHBfdiBwcGYgdlxufCBbdjA7IHYxXSAtPiBwZiBwcGYgXCJAW2VpdGhlciAlYSBvckAgJWFAXVwiIHBwX3YgdjAgcHBfdiB2MVxufCBfIDo6IF8gYXMgdnMgLT5cbiAgICBsZXQgcmVjIGxvb3AgcHBmID0gZnVuY3Rpb25cbiAgICB8IFt2XSAtPiBwZiBwcGYgXCJvckAgJWFcIiBwcF92IHZcbiAgICB8IHYgOjogdnMgLT4gcGYgcHBmIFwiJWEsQCBcIiBwcF92IHY7IGxvb3AgcHBmIHZzXG4gICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICBpblxuICAgIHBmIHBwZiBcIkBbb25lQCBvZkAgJWFAXVwiIGxvb3AgdnNcblxubGV0IGRpZF95b3VfbWVhblxuICAgID8ocHJlID0gYW55IFwiVW5rbm93blwiKSA/KHBvc3QgPSBub3ApIH5raW5kIHBwX3YgcHBmICh2LCBoaW50cylcbiAgPVxuICBtYXRjaCBoaW50cyB3aXRoXG4gIHwgW10gLT4gcGYgcHBmIFwiQFslYSAlcyAlYSVhLkBdXCIgcHJlICgpIGtpbmQgcHBfdiB2IHBvc3QgKClcbiAgfCBoaW50cyAtPlxuICAgICAgcGYgcHBmIFwiQFslYSAlcyAlYSVhLkAgRGlkIHlvdSBtZWFuICVhID9AXVwiXG4gICAgICAgIHByZSAoKSBraW5kIHBwX3YgdiBwb3N0ICgpIChvbmVfb2YgcHBfdikgaGludHNcblxubGV0IGNhcmRpbmFsID96ZXJvIH5vbmUgP290aGVyICgpID1cbiAgbGV0IG90aGVyID0gbWF0Y2ggb3RoZXIgd2l0aFxuICB8IFNvbWUgb3RoZXIgLT4gb3RoZXJcbiAgfCBOb25lIC0+IGZ1biBwcGYgaSAtPiBvbmUgcHBmIGk7IGNoYXIgcHBmICdzJ1xuICBpblxuICBsZXQgemVybyA9IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpvdGhlciB6ZXJvIGluXG4gIGZ1biBwcGYgaSAtPiBtYXRjaCBJbnQuYWJzIGkgd2l0aFxuICB8IDAgLT4gemVybyBwcGYgMCB8IDEgLT4gb25lIHBwZiAxIHwgbiAtPiBvdGhlciBwcGYgaVxuXG5sZXQgb3JkaW5hbCA9XG4gIGxldCBvbmUgcHBmIGkgPSBpbnQgcHBmIGk7IHN0cmluZyBwcGYgXCJzdFwiIGluXG4gIGxldCB0d28gcHBmIGkgPSBpbnQgcHBmIGk7IHN0cmluZyBwcGYgXCJuZFwiIGluXG4gIGxldCB0aHJlZSBwcGYgaSA9IGludCBwcGYgaTsgc3RyaW5nIHBwZiBcInJkXCIgaW5cbiAgbGV0IG90aGVyIHBwZiBpID0gaW50IHBwZiBpOyBzdHJpbmcgcHBmIFwidGhcIiBpblxuICBmdW4gP3plcm8gPyhvbmUgPSBvbmUpID8odHdvID0gdHdvKSA/KHRocmVlID0gdGhyZWUpID8ob3RoZXIgPSBvdGhlcikgKCkgLT5cbiAgICBsZXQgemVybyA9IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpvdGhlciB6ZXJvIGluXG4gICAgZnVuIHBwZiBpIC0+XG4gICAgICBpZiBpID0gMCB0aGVuIHplcm8gcHBmIGkgZWxzZVxuICAgICAgbGV0IG4gPSBJbnQuYWJzIGkgaW5cbiAgICAgIGxldCBtb2QxMCA9IG4gbW9kIDEwIGluXG4gICAgICBsZXQgbW9kMTAwID0gbiBtb2QgMTAwIGluXG4gICAgICBpZiBtb2QxMCA9IDEgJiYgbW9kMTAwIDw+IDExIHRoZW4gb25lIHBwZiBpIGVsc2VcbiAgICAgIGlmIG1vZDEwID0gMiAmJiBtb2QxMDAgPD4gMTIgdGhlbiB0d28gcHBmIGkgZWxzZVxuICAgICAgaWYgbW9kMTAgPSAzICYmIG1vZDEwMCA8PiAxMyB0aGVuIHRocmVlIHBwZiBpIGVsc2VcbiAgICAgIG90aGVyIHBwZiBpXG5cbigqIENvbmRpdGlvbmFsIFVURi04IGFuZCBzdHlsZWQgZm9ybWF0dGluZy4gKilcblxubW9kdWxlIEltYXAgPSBNYXAuTWFrZSAoSW50KVxuXG50eXBlICdhIGF0dHIgPSBpbnQgKiAoJ2EgLT4gc3RyaW5nKSAqIChzdHJpbmcgLT4gJ2EpXG5sZXQgaWQgPSByZWYgMFxubGV0IGF0dHIgKHR5cGUgYSkgZW5jIGRlYyA9IGluY3IgaWQ7ICghaWQsIGVuYywgZGVjKVxuXG50eXBlIEZvcm1hdC5zdGFnICs9XG58IEZtdF9zdG9yZV9nZXQgOiAnYSBhdHRyIC0+IEZvcm1hdC5zdGFnXG58IEZtdF9zdG9yZV9zZXQgOiAnYSBhdHRyICogJ2EgLT4gRm9ybWF0LnN0YWdcblxubGV0IHN0b3JlICgpID1cbiAgbGV0IHMgPSByZWYgSW1hcC5lbXB0eSBpblxuICBmdW4gfm90aGVyIC0+IGZ1bmN0aW9uXG4gIHwgRm10X3N0b3JlX2dldCAoaWQsIF8sIF8pIC0+IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpcIlwiIChJbWFwLmZpbmRfb3B0IGlkICFzKVxuICB8IEZtdF9zdG9yZV9zZXQgKChpZCwgZW5jLCBfKSwgdikgLT4gcyA6PSBJbWFwLmFkZCBpZCAoZW5jIHYpICFzOyBcIm9rXCJcbiAgfCBzdGFnIC0+IG90aGVyIHN0YWdcblxubGV0IHNldHVwX3N0b3JlIHBwZiA9XG4gIGxldCBmdW5zID0gRm9ybWF0LnBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgcHBmICgpIGluXG4gIGxldCBtYXJrX29wZW5fc3RhZyA9IHN0b3JlICgpIH5vdGhlcjpmdW5zLm1hcmtfb3Blbl9zdGFnIGluXG4gIEZvcm1hdC5wcF9zZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHBwZiB7IGZ1bnMgd2l0aCBtYXJrX29wZW5fc3RhZyB9XG5cbmxldCBzdG9yZV9vcCBvcCBwcGYgPVxuICBsZXQgZnVucyA9IEZvcm1hdC5wcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHBwZiAoKSBpblxuICBmdW5zLm1hcmtfb3Blbl9zdGFnIG9wXG5cbmxldCBnZXQgKF8sIF8sIGRlYyBhcyBhdHRyKSBwcGYgPSBtYXRjaCBzdG9yZV9vcCAoRm10X3N0b3JlX2dldCBhdHRyKSBwcGYgd2l0aFxufCBcIlwiIC0+IE5vbmUgfCBzIC0+IFNvbWUgKGRlYyBzKVxuXG5sZXQgcmVjIHNldCBhdHRyIHYgcHBmID0gbWF0Y2ggc3RvcmVfb3AgKEZtdF9zdG9yZV9zZXQgKGF0dHIsIHYpKSBwcGYgd2l0aFxufCBcIm9rXCIgLT4gKCkgfCBfIC0+IHNldHVwX3N0b3JlIHBwZjsgc2V0IGF0dHIgdiBwcGZcblxubGV0IGRlZiB4ID0gZnVuY3Rpb24gU29tZSB5IC0+IHkgfCBfIC0+IHhcblxubGV0IHV0Zl84X2F0dHIgPVxuICBsZXQgZW5jID0gZnVuY3Rpb24gdHJ1ZSAtPiBcInRcIiB8IGZhbHNlIC0+IFwiZlwiIGluXG4gIGxldCBkZWMgPSBmdW5jdGlvbiBcInRcIiAtPiB0cnVlIHwgXCJmXCIgLT4gZmFsc2UgfCBfIC0+IGFzc2VydCBmYWxzZSBpblxuICBhdHRyIGVuYyBkZWNcblxubGV0IHV0Zl84IHBwZiA9IGdldCB1dGZfOF9hdHRyIHBwZiB8PiBkZWYgdHJ1ZVxubGV0IHNldF91dGZfOCBwcGYgeCA9IHNldCB1dGZfOF9hdHRyIHggcHBmXG5cbnR5cGUgc3R5bGVfcmVuZGVyZXIgPSBbIGBBbnNpX3R0eSB8IGBOb25lIF1cbmxldCBzdHlsZV9yZW5kZXJlcl9hdHRyID1cbiAgbGV0IGVuYyA9IGZ1bmN0aW9uIGBBbnNpX3R0eSAtPiBcIkFcIiB8IGBOb25lIC0+IFwiTlwiIGluXG4gIGxldCBkZWMgPSBmdW5jdGlvbiBcIkFcIiAtPiBgQW5zaV90dHkgfCBcIk5cIiAtPiBgTm9uZSB8IF8gLT4gYXNzZXJ0IGZhbHNlIGluXG4gIGF0dHIgZW5jIGRlY1xuXG5sZXQgc3R5bGVfcmVuZGVyZXIgcHBmID0gZ2V0IHN0eWxlX3JlbmRlcmVyX2F0dHIgcHBmIHw+IGRlZiBgTm9uZVxubGV0IHNldF9zdHlsZV9yZW5kZXJlciBwcGYgeCA9IHNldCBzdHlsZV9yZW5kZXJlcl9hdHRyIHggcHBmXG5cbmxldCB3aXRoX2J1ZmZlciA/bGlrZSBidWYgPVxuICBsZXQgcHBmID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgYnVmIGluXG4gICgqIE4uQi4gdGhpcyBkb2VzIHNsaWdodHkgbW9yZSBpdCBhbHNvIG1ha2VzIGJ1ZiB1c2Ugb3RoZXIgaW5zdGFsbGVkXG4gICAgIHNlbWFudGljIHRhZyBhY3Rpb25zLiAqKVxuICBtYXRjaCBsaWtlIHdpdGhcbiAgfCBOb25lIC0+IHBwZlxuICB8IFNvbWUgbGlrZSAtPlxuICAgICAgbGV0IGZ1bnMgPSBGb3JtYXQucHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBsaWtlICgpIGluXG4gICAgICBGb3JtYXQucHBfc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBwcGYgZnVucztcbiAgICAgIHBwZlxuXG5sZXQgc3RyX2xpa2UgcHBmIGZtdCA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gIGxldCBicHBmID0gd2l0aF9idWZmZXIgfmxpa2U6cHBmIGJ1ZiBpblxuICBsZXQgZmx1c2ggcHBmID1cbiAgICBGb3JtYXQucHBfcHJpbnRfZmx1c2ggcHBmICgpO1xuICAgIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICAgIEJ1ZmZlci5yZXNldCBidWY7IHNcbiAgaW5cbiAgRm9ybWF0LmtmcHJpbnRmIGZsdXNoIGJwcGYgZm10XG5cbigqIENvbmRpdGlvbmFsIFVURi04IGZvcm1hdHRpbmcgKilcblxubGV0IGlmX3V0Zl84IHBwX3UgcHAgPSBmdW4gcHBmIHYgLT4gKGlmIHV0Zl84IHBwZiB0aGVuIHBwX3UgZWxzZSBwcCkgcHBmIHZcblxuKCogU3R5bGVkIGZvcm1hdHRpbmcgKilcblxudHlwZSBjb2xvciA9XG4gIFsgYEJsYWNrIHwgYEJsdWUgfCBgQ3lhbiB8IGBHcmVlbiB8IGBNYWdlbnRhIHwgYFJlZCB8IGBXaGl0ZSB8IGBZZWxsb3cgXVxuXG50eXBlIHN0eWxlID1cbiAgWyBgTm9uZSB8ICBgQm9sZCB8IGBGYWludCB8IGBJdGFsaWMgfCBgVW5kZXJsaW5lIHwgYFJldmVyc2VcbiAgfCBgRmcgb2YgWyBjb2xvciB8IGBIaSBvZiBjb2xvciBdXG4gIHwgYEJnIG9mIFsgY29sb3IgfCBgSGkgb2YgY29sb3IgXVxuICB8IGNvbG9yICgqKiBkZXByZWNhdGVkICopIF1cblxubGV0IGFuc2lfc3R5bGVfY29kZSA9IGZ1bmN0aW9uXG58IGBCb2xkIC0+IFwiMVwiXG58IGBGYWludCAtPiBcIjJcIlxufCBgSXRhbGljIC0+IFwiM1wiXG58IGBVbmRlcmxpbmUgLT4gXCI0XCJcbnwgYFJldmVyc2UgLT4gXCI3XCJcbnwgYEZnIGBCbGFjayAtPiBcIjMwXCJcbnwgYEZnIGBSZWQgLT4gXCIzMVwiXG58IGBGZyBgR3JlZW4gLT4gXCIzMlwiXG58IGBGZyBgWWVsbG93IC0+IFwiMzNcIlxufCBgRmcgYEJsdWUgLT4gXCIzNFwiXG58IGBGZyBgTWFnZW50YSAtPiBcIjM1XCJcbnwgYEZnIGBDeWFuIC0+IFwiMzZcIlxufCBgRmcgYFdoaXRlIC0+IFwiMzdcIlxufCBgQmcgYEJsYWNrIC0+IFwiNDBcIlxufCBgQmcgYFJlZCAtPiBcIjQxXCJcbnwgYEJnIGBHcmVlbiAtPiBcIjQyXCJcbnwgYEJnIGBZZWxsb3cgLT4gXCI0M1wiXG58IGBCZyBgQmx1ZSAtPiBcIjQ0XCJcbnwgYEJnIGBNYWdlbnRhIC0+IFwiNDVcIlxufCBgQmcgYEN5YW4gLT4gXCI0NlwiXG58IGBCZyBgV2hpdGUgLT4gXCI0N1wiXG58IGBGZyAoYEhpIGBCbGFjaykgLT4gXCI5MFwiXG58IGBGZyAoYEhpIGBSZWQpIC0+IFwiOTFcIlxufCBgRmcgKGBIaSBgR3JlZW4pIC0+IFwiOTJcIlxufCBgRmcgKGBIaSBgWWVsbG93KSAtPiBcIjkzXCJcbnwgYEZnIChgSGkgYEJsdWUpIC0+IFwiOTRcIlxufCBgRmcgKGBIaSBgTWFnZW50YSkgLT4gXCI5NVwiXG58IGBGZyAoYEhpIGBDeWFuKSAtPiBcIjk2XCJcbnwgYEZnIChgSGkgYFdoaXRlKSAtPiBcIjk3XCJcbnwgYEJnIChgSGkgYEJsYWNrKSAtPiBcIjEwMFwiXG58IGBCZyAoYEhpIGBSZWQpIC0+IFwiMTAxXCJcbnwgYEJnIChgSGkgYEdyZWVuKSAtPiBcIjEwMlwiXG58IGBCZyAoYEhpIGBZZWxsb3cpIC0+IFwiMTAzXCJcbnwgYEJnIChgSGkgYEJsdWUpIC0+IFwiMTA0XCJcbnwgYEJnIChgSGkgYE1hZ2VudGEpIC0+IFwiMTA1XCJcbnwgYEJnIChgSGkgYEN5YW4pIC0+IFwiMTA2XCJcbnwgYEJnIChgSGkgYFdoaXRlKSAtPiBcIjEwN1wiXG58IGBOb25lIC0+IFwiMFwiXG4oKiBkZXByZWNhdGVkICopXG58IGBCbGFjayAtPiBcIjMwXCJcbnwgYFJlZCAtPiBcIjMxXCJcbnwgYEdyZWVuIC0+IFwiMzJcIlxufCBgWWVsbG93IC0+IFwiMzNcIlxufCBgQmx1ZSAtPiBcIjM0XCJcbnwgYE1hZ2VudGEgLT4gXCIzNVwiXG58IGBDeWFuIC0+IFwiMzZcIlxufCBgV2hpdGUgLT4gXCIzN1wiXG5cbmxldCBwcF9zZ3IgcHBmIHN0eWxlID1cbiAgRm9ybWF0LnBwX3ByaW50X2FzIHBwZiAwIFwiXFwwMjdbXCI7XG4gIEZvcm1hdC5wcF9wcmludF9hcyBwcGYgMCBzdHlsZTtcbiAgRm9ybWF0LnBwX3ByaW50X2FzIHBwZiAwIFwibVwiXG5cbmxldCBjdXJyX3N0eWxlID0gYXR0ciBGdW4uaWQgRnVuLmlkXG5cbmxldCBzdHlsZWQgc3R5bGUgcHBfdiBwcGYgdiA9IG1hdGNoIHN0eWxlX3JlbmRlcmVyIHBwZiB3aXRoXG58IGBOb25lIC0+IHBwX3YgcHBmIHZcbnwgYEFuc2lfdHR5IC0+XG4gICAgbGV0IHByZXYgPSBtYXRjaCBnZXQgY3Vycl9zdHlsZSBwcGYgd2l0aFxuICAgIHwgTm9uZSAtPiBsZXQgemVybyA9IFwiMFwiIGluIHNldCBjdXJyX3N0eWxlIHplcm8gcHBmOyB6ZXJvXG4gICAgfCBTb21lIHMgLT4gc1xuICAgIGluXG4gICAgbGV0IGhlcmUgPSBhbnNpX3N0eWxlX2NvZGUgc3R5bGUgaW5cbiAgICBsZXQgY3VyciA9IG1hdGNoIHN0eWxlIHdpdGhcbiAgICB8IGBOb25lIC0+IGhlcmVcbiAgICB8IF8gLT4gU3RyaW5nLmNvbmNhdCBcIjtcIiBbcHJldjsgaGVyZV1cbiAgICBpblxuICAgIGxldCBmaW5hbGx5ICgpID0gc2V0IGN1cnJfc3R5bGUgcHJldiBwcGYgaW5cbiAgICBzZXQgY3Vycl9zdHlsZSBjdXJyIHBwZjtcbiAgICBGdW4ucHJvdGVjdCB+ZmluYWxseSBAQCBmdW4gKCkgLT5cbiAgICBwcF9zZ3IgcHBmIGhlcmU7IHBwX3YgcHBmIHY7IHBwX3NnciBwcGYgcHJldlxuXG4oKiBSZWNvcmRzICopXG5cbmxldCBpZCA9IEZ1bi5pZFxubGV0IGxhYmVsID0gc3R5bGVkIChgRmcgYFllbGxvdykgc3RyaW5nXG5sZXQgZmllbGQgPyhsYWJlbCA9IGxhYmVsKSA/KHNlcCA9IGFueSBcIjpAIFwiKSBsIHByaiBwcF92IHBwZiB2ID1cbiAgcGYgcHBmIFwiQFs8MT4lYSVhJWFAXVwiIGxhYmVsIGwgc2VwICgpIHBwX3YgKHByaiB2KVxuXG5sZXQgcmVjb3JkID8oc2VwID0gY3V0KSBwcHMgPSB2Ym94IChjb25jYXQgfnNlcCBwcHMpXG5cbigqIENvbnZlcnRpbmcgd2l0aCBzdHJpbmcgY29udmVydGVycy4gKilcblxubGV0IG9mX3RvX3N0cmluZyBmIHBwZiB2ID0gc3RyaW5nIHBwZiAoZiB2KVxubGV0IHRvX3RvX3N0cmluZyBwcF92IHYgPSBzdHIgXCIlYVwiIHBwX3YgdlxuXG4oKiBEZXByZWNhdGVkICopXG5cbmxldCBzdHJmID0gc3RyXG5sZXQga3N0cmYgPSBrc3RyXG5sZXQgc3RyZl9saWtlID0gc3RyX2xpa2VcbmxldCBhbHdheXMgPSBhbnlcbmxldCB1bml0ID0gYW55XG5sZXQgcHJlZml4IHBwX3AgcHBfdiBwcGYgdiA9IHBwX3AgcHBmICgpOyBwcF92IHBwZiB2XG5sZXQgc3VmZml4IHBwX3MgcHBfdiBwcGYgdiA9IHBwX3YgcHBmIHY7IHBwX3MgcHBmICgpXG5sZXQgc3R5bGVkX3VuaXQgc3R5bGUgZm10ID0gc3R5bGVkIHN0eWxlIChhbnkgZm10KVxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NoZWNrX2JvdW5kIiwiY2FtbF9kaXYiLCJjYW1sX2ZyZXNoX29vX2lkIiwiY2FtbF9pbnQ2NF9hZGQiLCJjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSIsImNhbWxfaW50NjRfZGl2IiwiY2FtbF9pbnQ2NF9tdWwiLCJjYW1sX2ludDY0X3N1YiIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfbWxfc3RyaW5nX2xlbmd0aCIsImNhbWxfbW9kIiwiY2FtbF9tdWwiLCJjYW1sX25vdGVxdWFsIiwiY2FtbF9zdHJpbmdfZ2V0IiwiY2FtbF90cmFtcG9saW5lIiwiY2FtbF90cmFtcG9saW5lX3JldHVybiIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJjYW1sX2NhbGwzIiwiYTIiLCJjYW1sX2NhbGw0IiwiYTMiLCJjYW1sX2NhbGw2IiwiYTQiLCJhNSIsImNhbWxfY2FsbDciLCJhNiIsImNhbWxfY2FsbDkiLCJhNyIsImE4IiwiZ2xvYmFsX2RhdGEiLCJ5IiwidXNfc3BhbiIsIm1zX3NwYW4iLCJzZWNfc3BhbiIsIm1pbl9zcGFuIiwiaG91cl9zcGFuIiwiZGF5X3NwYW4iLCJ5ZWFyX3NwYW4iLCJTdGRsaWJfSW50NjQiLCJTdGRsaWJfU3RyaW5nIiwiU3RkbGliX0Z1biIsIlN0ZGxpYl9Gb3JtYXQiLCJTdGRsaWJfQnVmZmVyIiwiQXNzZXJ0X2ZhaWx1cmUiLCJTdGRsaWJfT3B0aW9uIiwiU3RkbGliX0ludCIsIlN0ZGxpYl9MaXN0IiwiU3RkbGliIiwiU3RkbGliX1F1ZXVlIiwiU3RkbGliX1N0YWNrIiwiU3RkbGliX0hhc2h0YmwiLCJTdGRsaWJfVWNoYXIiLCJTdGRsaWJfU2VxIiwiU3RkbGliX0FycmF5IiwiU3RkbGliX1ByaW50ZXhjIiwiU3RkbGliX1N5cyIsIlN0ZGxpYl9NYXAiLCJzdGRvdXQiLCJzdGRlcnIiLCJwZiIsInByIiwiZXByIiwic3RyIiwia3BmIiwia3N0ciIsImZhaWx3aXRoIiwiZm10IiwiZmFpbHdpdGhfbm90cmFjZSIsInMiLCJpbnZhbGlkX2FyZyIsImVycm9yIiwiZXJyb3JfbXNnIiwiZmx1c2giLCJwcGYiLCJwYXJhbSIsIm5vcCIsImFueSIsInVzaW5nIiwicHAiLCJ2IiwiY29uc3QkIiwicHBfdiIsImlmJCIsImJvb2wiLCJjdXQiLCJzcCIsInNwcyIsIm4iLCJjb21tYSIsImNzdCIsInNlbWkiLCJpdGVyIiwib3B0IiwicHBfZWx0IiwicHBfc2VwIiwiaXNfZmlyc3QiLCJpdGVyX2JpbmRpbmdzIiwicHBfYmluZGluZyIsImsiLCJhcHBlbmQiLCJwcF92MCIsInBwX3YxIiwiY29uY2F0Iiwic2VwIiwicHBzIiwiYm94IiwiaW5kZW50IiwiaGJveCIsInZib3giLCJodmJveCIsImhvdmJveCIsInN1cnJvdW5kIiwiczEiLCJzMiIsInBhcmVucyIsImJyYWNrZXRzIiwiYnJhY2VzIiwicXVvdGUiLCJtYXJrIiwicHBfbWFyayIsImludCIsIm5hdGl2ZWludCIsImludDMyIiwiaW50NjQiLCJ1aW50IiwidWludDMyIiwidWludDY0IiwidW5hdGl2ZWludCIsImNoYXIiLCJzdHJpbmciLCJidWZmZXIiLCJiIiwiZXhuIiwiZSIsImNzdF92IiwiZXhuX2JhY2t0cmFjZSIsImJ0IiwicHBfYmFja3RyYWNlX3N0ciIsInN0b3AiLCJsZWZ0IiwicmlnaHQiLCJjc3RfZyIsImZsb2F0Iiwicm91bmRfZGZyYWMiLCJkIiwieCIsIm0iLCJmbG9hdF9kZnJhYyIsImZsb2F0X2RzaWciLCJwYWlyIiwicHBfZnN0IiwicHBfc25kIiwic25kIiwiZnN0Iiwib3B0aW9uIiwicHBfbm9uZSIsInJlc3VsdCIsIm9rIiwibGlzdCIsImFycmF5Iiwic2VxIiwiaGFzaHRibCIsInF1ZXVlIiwic3RhY2siLCJzaWdfbmFtZXMiLCJzaWduYWwiLCJtYXRjaCIsIm5hbWUiLCJ1Y2hhciIsInUiLCJjc3RfMiIsImNzdF9Ob25lIiwiaXRlcl9mIiwicHBfbmFtZSIsInBwX2siLCJjc3RfaGFzaHRibCIsImNzdF9zdGFjayIsImNzdF9xdWV1ZSIsImNzdF8xIiwiZmllbGQiLCJsIiwicHJqIiwibGFiZWwiLCJyZWNvcmQiLCJpcG93MTAiLCJhY2MiLCJjc3RfZiIsImNzdF9tIiwic2lfc3ltYiIsImNzdF9kX3NfcyIsImNzdF9kX2Rfc19zIiwic2lfc2l6ZSIsInNjYWxlIiwicG93X2Rpdl8zIiwicCIsInN5bWIiLCJmYWN0b3IiLCJtX3VwIiwiZl9mYWN0b3IiLCJmX20iLCJmX24iLCJmX21fdXAiLCJieXRlX3NpemUiLCJiaV9ieXRlX3NpemUiLCJwcF9mcmFjIiwiZGl2X3JvdW5kX3VwIiwiaSIsInNrIiwic20iLCJzZyIsInN0IiwidW5zaWduZWRfY29tcGFyZSIsIngwIiwieDEiLCJ1bnNpZ25lZF9kaXYiLCJxIiwiciIsInVuc2lnbmVkX3JlbSIsImNzdF9MZF9zIiwiY3N0X0xkX0xkX3MiLCJwcF9zaV9zcGFuIiwiY291bnRlciIsInVuaXRfc3RyIiwic2lfdW5pdCIsInNpX2hpZ2hlcl91bml0Iiwic3BhbiIsImdlcSIsInBwX25vbl9zaSIsInVuaXQiLCJ1bml0X2xvX3N0ciIsInVuaXRfbG8iLCJ1bml0X2xvX3NpemUiLCJjc3RfTGRhIiwidWludDY0X25zX3NwYW4iLCJsdCIsImNzdF91cyIsImNzdF9tcyIsImNzdF9zIiwiY3N0X21pbiIsImNzdF9oIiwiY3N0X2QiLCJpdGVyX3ZlYyIsImdldCIsInZlYyIsIm9uX3N0cmluZyIsIm9uX2J5dGVzIiwiY3N0XzAyeCIsInByZWZpeDB4IiwiYXNjaWkiLCJ3Iiwic3Vic3QiLCJwcF9jaGFyIiwiYyIsIm9jdGV0cyIsImFkZHJlc3NlcyIsImFkZHIiLCJwcF92ZWMiLCJtYXgiLCJwcF9zdWIiLCJzdWIiLCJqIiwib2ZmIiwiaGV4IiwiaXNfd2hpdGUiLCJub3Rfd2hpdGUiLCJub3Rfd2hpdGVfb3JfbmwiLCJzdG9wX2F0Iiwic2F0Iiwic3RhcnQiLCJ3b3JkcyIsInBhcmFncmFwaHMiLCJjc3Rfc3JjX2ZtdF9tbCIsInRleHQiLCJsaW5lcyIsInRydW5jYXRlZCIsInRleHRfbG9jIiwiYzEiLCJsMSIsImMwIiwibDAiLCJvbmVfb2YiLCJ2cyIsImVtcHR5IiwibG9vcCIsInYxIiwiY3N0X1Vua25vd24iLCJkaWRfeW91X21lYW4iLCJraW5kIiwicHJlIiwicG9zdCIsImhpbnRzIiwiY2FyZGluYWwiLCJ6ZXJvIiwib25lIiwib3RoZXIiLCJ0d28iLCJ0aHJlZSIsIm9yZGluYWwiLCJtb2QxMCIsIm1vZDEwMCIsIkltYXAiLCJpZCIsImF0dHIiLCJlbmMiLCJkZWMiLCJGbXRfc3RvcmVfZ2V0IiwiRm10X3N0b3JlX3NldCIsInN0b3JlX29wIiwib3AiLCJmdW5zIiwic2V0IiwiY3N0X29rIiwibWFya19vcGVuX3N0YWciLCJzdGFnIiwiZGVmIiwiY3N0X3QiLCJ1dGZfOF9hdHRyIiwidXRmXzgiLCJzZXRfdXRmXzgiLCJjc3RfQSIsImNzdF9OIiwic3R5bGVfcmVuZGVyZXJfYXR0ciIsInN0eWxlX3JlbmRlcmVyIiwic2V0X3N0eWxlX3JlbmRlcmVyIiwid2l0aF9idWZmZXIiLCJsaWtlIiwiYnVmIiwic3RyX2xpa2UiLCJicHBmIiwiaWZfdXRmXzgiLCJwcF91IiwicHBfc2dyIiwic3R5bGUiLCJjdXJyX3N0eWxlIiwic3R5bGVkIiwiY3N0XzAiLCJwcmV2IiwiY3N0XzMwIiwiY3N0XzMxIiwiY3N0XzMyIiwiY3N0XzMzIiwiY3N0XzM0IiwiY3N0XzM1IiwiY3N0XzM2IiwiY3N0XzM3IiwiaGVyZSIsInZhcmlhbnQiLCJjdXJyIiwiZmluYWxseSQiLCJvZl90b19zdHJpbmciLCJ0b190b19zdHJpbmciLCJwcmVmaXgiLCJwcF9wIiwic3VmZml4IiwicHBfcyIsInN0eWxlZF91bml0Il0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsV0FBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyw2QkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxpQkFBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsSUFBQUMsd0JBQUE7QUFBQSxJQUFBQyxXQUFBO0FBQUEsSUFBQUMsV0FBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxJQUFBQyxrQkFBQTtBQUFBLElBQUFDLHlCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQU4sR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFSLEdBQUFDLElBQUFFLElBQUFFLElBQUFFLElBQUFFLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBWCxHQUFBQyxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQWIsR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUMsSUFBQUUsSUFBQUUsSUFBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLElBQUE7QUFBQSxJQUFBQyxVQUFBO0FBQUEsSUFBQUMsVUFBQTtBQUFBLElBQUFDLFdBQUE7QUFBQSxJQUFBQyxXQUFBO0FBQUEsSUFBQUMsWUFBQTtBQUFBLElBQUFDLFdBQUE7QUFBQSxJQUFBQyxZQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyxpQkFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFB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dW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJwdGltZS5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvcHRpbWUvcHRpbWUubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBwdGltZSBwcm9ncmFtbWVycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuKCogSnVsaWFuIGRheSBhbmQgcHJvbGVwdGljIEdyZWdvcmlhbiBjYWxlbmRhciBkYXRlIGNvbnZlcnNpb24uXG5cbiAgIEZvcm11bGFlIGFyZSBmcm9tIHRoZSBjYWxlbmRhciBGQVE6XG4gICBodHRwOi8vd3d3LnRvbmRlcmluZy5kay9jbGF1cy9jYWwvanVscGVyaW9kLnBocCNmb3JtdWxhXG5cbiAgIFRoZXNlIGZvcm11bGFlIHdvcmsgZm9yIHBvc2l0aXZlIEp1bGlhbiBkYXlzLiBUaGV5IHJlcHJlc2VudFxuICAgR2Vnb3JpYW4gY2FsZW5kYXIgQkNFIHllYXIgYHlgIGJ5IGAtKHktMSlgLCBlLmcuIDIgQkNFIGlzIC0xLCB0aGlzXG4gICBmb2xsb3dzIHRoZSBjb252ZW50aW9uIG9mIElTTyA4NjAxLlxuXG4gICBBbGwgdGltZXN0YW1wcyBpbiBQdGltZSdzIFttaW47bWF4XSByYW5nZSBhcmUgcmVwcmVzZW50ZWQgYnlcbiAgIHBvc2l0aXZlIEp1bGlhbiBkYXlzIGFuZCB0aGUgZm9ybXVsYWUgZG8gbm90IG92ZXJmbG93IG9uIDMyLWJpdFxuICAgcGxhdGZvcm1zIGluIHRoaXMgcmVzdHJpY3RlZCByYW5nZS4gKilcblxubGV0IGpkX3RvX2RhdGUgamQgPVxuICBsZXQgYSA9IGpkICsgMzIwNDQgaW5cbiAgbGV0IGIgPSAoNCAqIGEgKyAzKSAvIDE0NjA5NyBpblxuICBsZXQgYyA9IGEgLSAoKDE0NjA5NyAqIGIpIC8gNCkgaW5cbiAgbGV0IGQgPSAoNCAqIGMgKyAzKSAvIDE0NjEgaW5cbiAgbGV0IGUgPSBjIC0gKCgxNDYxICogZCkgLyA0KSBpblxuICBsZXQgbSA9ICg1ICogZSArIDIpIC8gMTUzIGluXG4gIGxldCBkYXkgPSBlIC0gKCgxNTMgKiBtICsgMikgLyA1KSArIDEgaW5cbiAgbGV0IG1vbnRoID0gbSArIDMgLSAoMTIgKiAobSAvIDEwKSkgaW5cbiAgbGV0IHllYXIgPSAxMDAgKiBiICsgZCAtIDQ4MDAgKyAobSAvIDEwKSBpblxuICAoeWVhciwgbW9udGgsIGRheSlcblxubGV0IGpkX3RvX3llYXIgamQgPSAoKiBTYW1lIGFzIGFib3ZlIGJ1dCBvbmx5IGZvciB0aGUgeWVhciAqKVxuICBsZXQgYSA9IGpkICsgMzIwNDQgaW5cbiAgbGV0IGIgPSAoNCAqIGEgKyAzKSAvIDE0NjA5NyBpblxuICBsZXQgYyA9IGEgLSAoKDE0NjA5NyAqIGIpIC8gNCkgaW5cbiAgbGV0IGQgPSAoNCAqIGMgKyAzKSAvIDE0NjEgaW5cbiAgbGV0IGUgPSBjIC0gKCgxNDYxICogZCkgLyA0KSBpblxuICBsZXQgbSA9ICg1ICogZSArIDIpIC8gMTUzIGluXG4gIDEwMCAqIGIgKyBkIC0gNDgwMCArIChtIC8gMTApXG5cbmxldCBqZF9vZl9kYXRlICh5ZWFyLCBtb250aCwgZGF5KSA9XG4gIGxldCBhID0gKDE0IC0gbW9udGgpIC8gMTIgaW5cbiAgbGV0IHkgPSB5ZWFyICsgNDgwMCAtIGEgaW5cbiAgbGV0IG0gPSBtb250aCArIDEyICogYSAtIDMgaW5cbiAgZGF5ICsgKCgxNTMgKiBtKSArIDIpLyA1ICsgMzY1ICogeSArXG4gICh5IC8gNCkgLSAoeSAvIDEwMCkgKyAoeSAvIDQwMCkgLSAzMjA0NVxuXG5sZXQgamRfcG9zaXhfZXBvY2ggPSAyXzQ0MF81ODggICAgICAgICAgKCogdGhlIEp1bGlhbiBkYXkgb2YgdGhlIFBPU0lYIGVwb2NoICopXG5sZXQgamRfcHRpbWVfbWluID0gMV83MjFfMDYwICAgICAgICAgICAgICAgICAgKCogdGhlIEp1bGlhbiBkYXkgb2YgUHRpbWUubWluICopXG5sZXQgamRfcHRpbWVfbWF4ID0gNV8zNzNfNDg0ICAgICAgICAgICAgICAgICAgKCogdGhlIEp1bGlhbiBkYXkgb2YgUHRpbWUubWF4ICopXG5cbigqIFBpY29zZWNvbmQgcHJlY2lzaW9uIFBPU0lYIHRpbWVzdGFtcHMgYW5kIHRpbWUgc3BhbiByZXByZXNlbnRhdGlvbi5cblxuICAgUE9TSVggdGltZXN0YW1wcyBhbmQgc3BhbnMgYXJlIHJlcHJlc2VudGVkIGJ5IGludCAqIGludDY0IHBhaXJzXG4gICB3aXRoIHRoZSBpbnQ2NCBpbiB0aGUgcmFuZ2UgWzBMOzg2XzM5OV85OTlfOTk5Xzk5OV85OTlMXS4gQSBwYWlyXG4gICBbKGQsIHBzKV0gZGVub3RlcyB0aGUgUE9TSVggcGljb3NlY29uZCBkdXJhdGlvbiBbZF0gKiA4Nl80MDBlMTIgK1xuICAgW3BzXS5cblxuICAgRm9yIGEgdGltZXN0YW1wIHRoaXMgY2FuIGJlIHNlZW4gYXMgYSBQT1NJWCBkYXkgY291bnQgZnJvbSB0aGVcbiAgIGVwb2NoIHBhaXJlZCB3aXRoIGEgcGljb3NlY29uZCBwcmVjaXNpb24gUE9TSVggdGltZSBwb2ludCBpbiB0aGF0XG4gICBkYXkgc3RhcnRpbmcgZnJvbSAwMDowMDowMC5cblxuICAgQnkgZGVmaW5pdGlvbiB3aXRoIGEgbmVnYXRpdmUgW2RdIHRoZSBbcHNdIGR1cmF0aW9uIGJyaW5ncyB1c1xuICAgdG93YXJkcyB6ZXJvLCAqbm90KiB0b3dhcmRzIGluZmluaXR5OlxuXG5cbiAgICAgICAgIChkICogODZfNDAwZTEyKSAoZCAqIDg2XzQwMGUxMiArIHBzKSAgICAgICAwXG4gICAgIC4uLiAtLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSAuLi5cbiAgICAgICAgICAgICAgWy0tLS0tLS0tLS0tLS0tLS0+fFxuICAgICAgICAgICAgICAgICAgIHBzXG5cbiAgIFtkXSBpcyBsYXJnZWx5IHN1ZmZpY2VudCB0byByZXByZXNlbnQgYWxsIHRoZSBkYXlzIGluIFB0aW1lJ3NcbiAgIFttaW47bWF4XSByYW5nZSBvbiBib3RoIDMyLWJpdCBhbmQgNjQtYml0IHBsYXRmb3Jtcy4gKilcblxudHlwZSB0ID0gaW50ICogaW50NjRcblxubGV0IHBzX2NvdW50X2luX3BzICAgID0gICAgICAgICAgICAgICAgICAgICAgMUxcbmxldCBwc19jb3VudF9pbl9ucyAgICA9ICAgICAgICAgICAgICAgICAgMV8wMDBMXG5sZXQgcHNfY291bnRfaW5fMTAwbnMgPSAgICAgICAgICAgICAgICAxMDBfMDAwTFxubGV0IHBzX2NvdW50X2luX3VzICAgID0gICAgICAgICAgICAgIDFfMDAwXzAwMExcbmxldCBwc19jb3VudF9pbl8xMDB1cyA9ICAgICAgICAgICAgMTAwXzAwMF8wMDBMXG5sZXQgcHNfY291bnRfaW5fbXMgICAgPSAgICAgICAgICAxXzAwMF8wMDBfMDAwTFxubGV0IHBzX2NvdW50X2luXzEwMG1zID0gICAgICAgIDEwMF8wMDBfMDAwXzAwMExcbmxldCBwc19jb3VudF9pbl9zICAgICA9ICAgICAgMV8wMDBfMDAwXzAwMF8wMDBMXG5sZXQgcHNfY291bnRfaW5fbWluICAgPSAgICAgNjBfMDAwXzAwMF8wMDBfMDAwTFxubGV0IHBzX2NvdW50X2luX2hvdXIgID0gICAzNjAwXzAwMF8wMDBfMDAwXzAwMExcbmxldCBwc19jb3VudF9pbl9kYXkgICA9IDg2XzQwMF8wMDBfMDAwXzAwMF8wMDBMXG5sZXQgcHNfZGF5X21heCAgICAgICAgPSA4Nl8zOTlfOTk5Xzk5OV85OTlfOTk5TFxuXG5sZXQgZGF5X21pbiA9IGpkX3B0aW1lX21pbiAtIGpkX3Bvc2l4X2Vwb2NoXG5sZXQgZGF5X21heCA9IGpkX3B0aW1lX21heCAtIGpkX3Bvc2l4X2Vwb2NoXG5cbmxldCBlcG9jaCA9ICgwLCAwTCkgICAgICAgICAgICAgKCogMTk3MC0wMS0wMSAwMDowMDowMCBVVEMgKilcbmxldCBtaW4gPSAoZGF5X21pbiwgMEwpICAgICAgICAgKCogMDAwMC0wMS0wMSAwMDowMDowMCBVVEMgKilcbmxldCBtYXggPSAoZGF5X21heCwgcHNfZGF5X21heCkgKCogOTk5OS0xMi0zMSAyMzo1OTo1OSBVVEMgKilcblxuKCogUE9TSVggdGltZSBzcGFucyAqKVxuXG50eXBlIHNwYW4gPSB0XG5cbm1vZHVsZSBTcGFuID0gc3RydWN0XG5cbiAgbGV0IHN0ZGxpYl9hYnMgPSBhYnNcblxuICAoKiBBcml0aG1ldGljICopXG5cbiAgbGV0IG5lZyA9IGZ1bmN0aW9uXG4gIHwgKGQsIDBMKSAgLT4gKC1kLCAwTClcbiAgfCAoZCwgcHMpIC0+ICgtKGQgKyAxKSwgSW50NjQuc3ViIHBzX2NvdW50X2luX2RheSBwcylcblxuICBsZXQgYWRkIChkMCwgcHMwKSAoZDEsIHBzMSkgPVxuICAgIGxldCBkID0gZDAgKyBkMSBpblxuICAgIGxldCBwcyA9IEludDY0LmFkZCBwczAgcHMxIGluXG4gICAgbGV0IHBzX2NsYW1wID0gSW50NjQucmVtIHBzIHBzX2NvdW50X2luX2RheSBpblxuICAgIGxldCBkID0gZCArIEludDY0LmNvbXBhcmUgcHMgcHNfY2xhbXAgaW5cbiAgICBkLCBwc19jbGFtcFxuXG4gIGxldCBzdWIgczAgczEgPSBhZGQgczAgKG5lZyBzMSlcbiAgbGV0IGFicyAoZCwgXyBhcyBzKSA9IGlmIGQgPCAwIHRoZW4gbmVnIHMgZWxzZSBzXG5cbiAgKCogUE9TSVggdGltZSBzcGFucyAqKVxuXG4gIHR5cGUgdCA9IHNwYW5cblxuICBsZXQgemVybyA9ICgwLCAwTClcbiAgbGV0IHYgKGQsIHBzIGFzIHMpID1cbiAgICBpZiBwcyA8IDBMIHx8IHBzID4gcHNfZGF5X21heFxuICAgIHRoZW4gaW52YWxpZF9hcmcgKEZvcm1hdC5zcHJpbnRmIFwiaWxsZWdhbCBwdGltZSB0aW1lIHNwYW46ICglZCwlTGQpXCIgZCBwcylcbiAgICBlbHNlIHNcblxuICBsZXQgb2ZfZF9wcyAoZCwgcHMgYXMgcykgPSBpZiBwcyA8IDBMIHx8IHBzID4gcHNfZGF5X21heCB0aGVuIE5vbmUgZWxzZSBTb21lIHNcbiAgbGV0IHVuc2FmZV9vZl9kX3BzIHMgPSBzXG4gIGxldCB1bnNhZmVfb2ZfZF9wc19vcHRpb24gcyA9IHNcbiAgbGV0IHRvX2RfcHMgcyA9IHNcblxuICBsZXQgb2ZfaW50X3Mgc2VjcyA9XG4gICAgbGV0IGQgPSBzdGRsaWJfYWJzIHNlY3MgaW5cbiAgICBsZXQgcyA9IChkIC8gODZfNDAwLCBJbnQ2NC4obXVsIChvZl9pbnQgKGQgbW9kIDg2XzQwMCkpIHBzX2NvdW50X2luX3MpKSBpblxuICAgIGlmIHNlY3MgPCAwIHRoZW4gbmVnIHMgZWxzZSBzXG5cbiAgbGV0IGRheV9pbnRfbWluID0gbWluX2ludCAvIDg2XzQwMFxuICBsZXQgZGF5X2ludF9tYXggPSBtYXhfaW50IC8gODZfNDAwXG4gIGxldCB0b19pbnRfcyAoZCwgcHMpID1cbiAgICBpZiBkIDwgZGF5X2ludF9taW4gfHwgZCA+IGRheV9pbnRfbWF4IHRoZW4gTm9uZSBlbHNlXG4gICAgbGV0IGRheXNfcyA9IGQgKiA4Nl80MDAgaW5cbiAgICBsZXQgZGF5X3MgPSBJbnQ2NC4odG9faW50IChkaXYgcHMgcHNfY291bnRfaW5fcykpICgqIGFsd2F5cyBwb3NpdGl2ZSAqKSBpblxuICAgIGxldCBzZWNzID0gZGF5c19zICsgZGF5X3MgaW5cbiAgICBpZiBzZWNzIDwgZGF5c19zICgqIHBvc2l0aXZlIG92ZXJmbG93ICopIHRoZW4gTm9uZSBlbHNlIFNvbWUgc2Vjc1xuXG4gIGxldCBtaW5faW50X2Zsb2F0ID0gZmxvYXQgbWluX2ludFxuICBsZXQgbWF4X2ludF9mbG9hdCA9IGZsb2F0IG1heF9pbnRcbiAgbGV0IG9mX2Zsb2F0X3Mgc2VjcyA9XG4gICAgaWYgc2VjcyA8PiBzZWNzICgqIG5hbiAqKSB0aGVuIE5vbmUgZWxzZVxuICAgIGxldCBkYXlzID0gZmxvb3IgKHNlY3MgLy4gODZfNDAwLikgaW5cbiAgICBpZiBkYXlzIDwgbWluX2ludF9mbG9hdCB8fCBkYXlzID4gbWF4X2ludF9mbG9hdCB0aGVuIE5vbmUgZWxzZVxuICAgIGxldCByZW1fcyA9IG1vZF9mbG9hdCBzZWNzIDg2XzQwMC4gaW5cbiAgICBsZXQgcmVtX3MgPSBpZiByZW1fcyA8IDAuIHRoZW4gODZfNDAwLiArLiByZW1fcyBlbHNlIHJlbV9zIGluXG4gICAgaWYgcmVtX3MgPj0gODZfNDAwLiB0aGVuXG4gICAgICAoKiBHdWFyZCBhZ2FpbnN0IGEgcG90ZW50aWFsIG92ZXJmbG93IGluIHRoZSBjb21wdXRhdGlvbiBvZiBbcmVtX3NdICopXG4gICAgICBsZXQgZGF5cyA9IGRheXMgKy4gMS4gaW5cbiAgICAgIGlmIGRheXMgPiBtYXhfaW50X2Zsb2F0IHRoZW4gTm9uZSBlbHNlXG4gICAgICBTb21lIChpbnRfb2ZfZmxvYXQgZGF5cywgMEwpXG4gICAgZWxzZVxuICAgIGxldCBmcmFjX3MsIHJlbV9zID0gbW9kZiByZW1fcyBpblxuICAgIGxldCByZW1fcHMgPSBJbnQ2NC4obXVsIChvZl9mbG9hdCByZW1fcykgcHNfY291bnRfaW5fcykgaW5cbiAgICBsZXQgZnJhY19wcyA9IEludDY0LihvZl9mbG9hdCAoZnJhY19zICouIDFlMTIpKSBpblxuICAgIFNvbWUgKGludF9vZl9mbG9hdCBkYXlzLCAoSW50NjQuYWRkIHJlbV9wcyBmcmFjX3BzKSlcblxuICBsZXQgdG9fZmxvYXRfcyAoZCwgcHMpID1cbiAgICBsZXQgZGF5c19zID0gKGZsb2F0IGQpICouIDg2XzQwMC4gaW5cbiAgICBsZXQgZGF5X3MgPSBJbnQ2NC4odG9fZmxvYXQgKGRpdiBwcyBwc19jb3VudF9pbl9zKSkgaW5cbiAgICBsZXQgZGF5X3JlbV9wcyA9IEludDY0Lih0b19mbG9hdCAocmVtIHBzIHBzX2NvdW50X2luX3MpKSBpblxuICAgIGRheXNfcyArLiBkYXlfcyArLiAoZGF5X3JlbV9wcyAqLiAxZS0xMilcblxuICAoKiBQcmVkaWNhdGVzICopXG5cbiAgbGV0IGVxdWFsIChkMCwgcHMwKSAoZDEsIHBzMSkgPVxuICAgIChjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQpIGQwIGQxID0gMCAmJlxuICAgIEludDY0LmNvbXBhcmUgcHMwIHBzMSA9IDBcblxuICBsZXQgY29tcGFyZSAoZDAsIHBzMCkgKGQxLCBwczEpID1cbiAgICBsZXQgYyA9IChjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQpIGQwIGQxIGluXG4gICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlIChjb21wYXJlIDogaW50NjQgLT4gaW50NjQgLT4gaW50KSBwczAgcHMxXG5cbiAgKCogUm91bmRpbmcgKilcblxuICBsZXQgcm91bmRfZGl2IGEgYiA9ICgqIGEgPj0gMCBhbmQgYiA+IDAgKilcbiAgICBpZiBhID0gMEwgdGhlbiAwTCBlbHNlXG4gICAgSW50NjQuKGRpdiAoYWRkIGEgKGRpdiBiIDJMKSkgYilcblxuICBsZXQgZnJhY19kaXYgPSBbfCAxXzAwMF8wMDBfMDAwXzAwMEw7XG4gICAgICAgICAgICAgICAgICAgICAgMTAwXzAwMF8wMDBfMDAwTDtcbiAgICAgICAgICAgICAgICAgICAgICAgMTBfMDAwXzAwMF8wMDBMO1xuICAgICAgICAgICAgICAgICAgICAgICAgMV8wMDBfMDAwXzAwMEw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDEwMF8wMDBfMDAwTDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwXzAwMF8wMDBMO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFfMDAwXzAwMEw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDBfMDAwTDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMF8wMDBMO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXzAwMEw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAwTDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTBMO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMUw7IHxdXG5cbiAgbGV0IHJvdW5kIH5mcmFjX3M6ZnJhYyAoc2lnbiwgXyBhcyB0KSA9XG4gICAgbGV0IGZyYWMgPSBpZiBmcmFjIDwgMCB0aGVuIDAgZWxzZSAoaWYgZnJhYyA+IDEyIHRoZW4gMTIgZWxzZSBmcmFjKSBpblxuICAgIGxldCAoZCwgcHMpID0gaWYgc2lnbiA8IDAgdGhlbiBuZWcgdCBlbHNlIHQgaW5cbiAgICBsZXQgcnBzID0gSW50NjQubXVsIChyb3VuZF9kaXYgcHMgZnJhY19kaXYuKGZyYWMpKSBmcmFjX2Rpdi4oZnJhYykgaW5cbiAgICBsZXQgdCA9IGlmIHJwcyA+IHBzX2RheV9tYXggdGhlbiAoZCArIDEsIDBMKSBlbHNlIChkLCBycHMpIGluXG4gICAgaWYgc2lnbiA8IDAgdGhlbiBuZWcgdCBlbHNlIHRcblxuICBsZXQgdHJ1bmNhdGUgfmZyYWNfczpmcmFjIChzaWduLCBfIGFzIHQpID1cbiAgICBsZXQgZnJhYyA9IGlmIGZyYWMgPCAwIHRoZW4gMCBlbHNlIChpZiBmcmFjID4gMTIgdGhlbiAxMiBlbHNlIGZyYWMpIGluXG4gICAgbGV0IChkLCBwcykgPSBpZiBzaWduIDwgMCB0aGVuIG5lZyB0IGVsc2UgdCBpblxuICAgIGxldCB0cHMgPSBJbnQ2NC4oc3ViIHBzIChyZW0gcHMgZnJhY19kaXYuKGZyYWMpKSkgaW5cbiAgICBpZiBzaWduIDwgMCB0aGVuIG5lZyAoZCwgdHBzKSBlbHNlIChkLCB0cHMpXG5cbiAgbGV0IHRydW5jYXRlX2Rvd24gfmZyYWNfczpmcmFjIChkLCBwcykgPVxuICAgIChkLCBJbnQ2NC4oc3ViIHBzIChyZW0gcHMgZnJhY19kaXYuKGZyYWMgKSkpKVxuXG4gICgqIFByZXR0eSBwcmludGluZyAqKVxuXG4gIGxldCBkdW1wIHBwZiAoZCwgcHMpID0gRm9ybWF0LmZwcmludGYgcHBmIFwiQFs8MT4oJWQsQCwlTGQpQF1cIiBkIHBzXG5cbiAgKCogV2FybmluZyBsYWJvcmlvdXMgY29kZSBmb2xsb3dzLiBJcyB0aGVyZSBhIGJldHRlciB3YXkgPyAqKVxuXG4gIGxldCBkaXZpZGVfcHMgfmNhcnJ5IHBzIGhpIGxvID1cbiAgICBsZXQgaGlfZCA9IEludDY0Lih0b19pbnQgKGRpdiBwcyBoaSkpIGluXG4gICAgbGV0IHJlbV9wcyA9IEludDY0LnJlbSBwcyBoaSBpblxuICAgIGxldCBsb19kID0gSW50NjQudG9faW50IChyb3VuZF9kaXYgcmVtX3BzIGxvKSBpblxuICAgIGlmIGxvX2QgPSBjYXJyeSB0aGVuIGhpX2QgKyAxLCAwIGVsc2UgaGlfZCwgbG9fZFxuXG4gIGxldCBwcF95X2QgcHBmIH5uZWcgZCBwcyA9ICgqIGFzc2VydCBkID49IDAgKilcbiAgICBsZXQgeSwgcmVtX2QgPVxuICAgICAgbGV0IG1heF9kID0gbWF4X2ludCAvIDQgaW5cbiAgICAgIGlmIGQgPiBtYXhfZCB0aGVuICgqIGQgKiA0IG92ZXJmbG93cyAqKSBkIC8gMzY1LCBkIG1vZCAzNjUgZWxzZVxuICAgICAgbGV0IHkgPSAoZCAqIDQpIC8gMTQ2MSAoKiAvIDM2NS4yNSAqKSBpblxuICAgICAgeSwgZCAtICh5ICogMTQ2MSkgLyA0XG4gICAgaW5cbiAgICBsZXQgZGF5cyA9IHJlbV9kICsgSW50NjQudG9faW50IChyb3VuZF9kaXYgcHMgcHNfY291bnRfaW5fZGF5KSBpblxuICAgIGxldCB5LCBkYXlzID0gaWYgZGF5cyA9IDM2NiB0aGVuIHkgKyAxLCAxIGVsc2UgeSwgZGF5cyBpblxuICAgIGxldCB5ID0gaWYgbmVnIHRoZW4gLXkgZWxzZSB5IGluXG4gICAgRm9ybWF0LmZwcmludGYgcHBmIFwiJWR5XCIgeTtcbiAgICBpZiBkYXlzIDw+IDAgdGhlbiBGb3JtYXQuZnByaW50ZiBwcGYgXCIlZGRcIiBkYXlzO1xuICAgICgpXG5cbiAgbGV0IHBwX2RfaCBwcGYgfm5lZyBkIHBzID1cbiAgICBsZXQgaCwgXyA9IGRpdmlkZV9wcyB+Y2Fycnk6MSBwcyBwc19jb3VudF9pbl9ob3VyIHBzX2NvdW50X2luX2hvdXIgaW5cbiAgICBsZXQgZCwgaCA9IGlmIGggPSAyNCB0aGVuIGQgKyAxLCAwIGVsc2UgZCwgaCBpblxuICAgIGlmIGQgPSAzNjYgdGhlbiBGb3JtYXQuZnByaW50ZiBwcGYgXCIlZHkxZFwiIChpZiBuZWcgdGhlbiAtMSBlbHNlIDEpIGVsc2VcbiAgICBpZiBkID0gMzY1ICYmIGggPj0gNlxuICAgIHRoZW4gRm9ybWF0LmZwcmludGYgcHBmIFwiJWR5XCIgKGlmIG5lZyB0aGVuIC0xIGVsc2UgMSkgZWxzZVxuICAgIGxldCBkID0gaWYgbmVnIHRoZW4gLWQgZWxzZSBkIGluXG4gICAgRm9ybWF0LmZwcmludGYgcHBmIFwiJWRkXCIgZDtcbiAgICBpZiBoIDw+IDAgdGhlbiBGb3JtYXQuZnByaW50ZiBwcGYgXCIlZGhcIiBoO1xuICAgICgpXG5cbiAgbGV0IHBwX2hfbSBwcGYgfm5lZyBwcyA9XG4gICAgbGV0IGgsIG0gPSBkaXZpZGVfcHMgfmNhcnJ5OjYwIHBzIHBzX2NvdW50X2luX2hvdXIgcHNfY291bnRfaW5fbWluIGluXG4gICAgaWYgaCA9IDI0IHRoZW4gRm9ybWF0LmZwcmludGYgcHBmIFwiJWRkXCIgKGlmIG5lZyB0aGVuIC0xIGVsc2UgMSkgZWxzZVxuICAgIGxldCBoID0gaWYgbmVnIHRoZW4gLWggZWxzZSBoIGluXG4gICAgRm9ybWF0LmZwcmludGYgcHBmIFwiJWRoXCIgaDtcbiAgICBpZiBtIDw+IDAgdGhlbiBGb3JtYXQuZnByaW50ZiBwcGYgXCIlZG1pblwiIG07XG4gICAgKClcblxuICBsZXQgcHBfbV9zIHBwZiB+bmVnIHBzID1cbiAgICBsZXQgbSwgcyA9IGRpdmlkZV9wcyB+Y2Fycnk6NjAgcHMgcHNfY291bnRfaW5fbWluIHBzX2NvdW50X2luX3MgaW5cbiAgICBpZiBtID0gNjAgdGhlbiBGb3JtYXQuZnByaW50ZiBwcGYgXCIlZGhcIiAoaWYgbmVnIHRoZW4gLTEgZWxzZSAxKSBlbHNlXG4gICAgbGV0IG0gPSBpZiBuZWcgdGhlbiAtbSBlbHNlIG0gaW5cbiAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCIlZG1pblwiIG07XG4gICAgaWYgcyA8PiAwIHRoZW4gRm9ybWF0LmZwcmludGYgcHBmIFwiJWRzXCIgcztcbiAgICAoKVxuXG4gIGxldCBwcF9zIHBwZiB+bmVnIHBzID1cbiAgICBsZXQgcywgbXMgPSBkaXZpZGVfcHMgfmNhcnJ5OjEwMDAgcHMgcHNfY291bnRfaW5fcyBwc19jb3VudF9pbl9tcyBpblxuICAgIGlmIHMgPSA2MCB0aGVuIEZvcm1hdC5mcHJpbnRmIHBwZiBcIiVkbWluXCIgKGlmIG5lZyB0aGVuIC0xIGVsc2UgMSkgZWxzZVxuICAgIGxldCBzID0gaWYgbmVnIHRoZW4gLXMgZWxzZSBzIGluXG4gICAgaWYgbXMgPD4gMCB0aGVuIEZvcm1hdC5mcHJpbnRmIHBwZiBcIiVkLiUwM2RzXCIgcyBtcyBlbHNlXG4gICAgRm9ybWF0LmZwcmludGYgcHBmIFwiJWRzXCIgc1xuXG4gIGxldCBwcF91bml0IGhpZ2hlcl9zdHIgaGkgaGlfc3RyIGZyYWNfbGltaXQgbG8gcHBmIH5uZWcgcHMgPVxuICAgIGxldCBwcF91bml0X2ludGVncmFsIHBwZiB+bmVnIGggPVxuICAgICAgaWYgaCA9IDEwMDBcbiAgICAgIHRoZW4gRm9ybWF0LmZwcmludGYgcHBmIFwiJWQlc1wiIChpZiBuZWcgdGhlbiAtMSBlbHNlIDEpIGhpZ2hlcl9zdHJcbiAgICAgIGVsc2UgRm9ybWF0LmZwcmludGYgcHBmIFwiJWQlc1wiIChpZiBuZWcgdGhlbiAtaCBlbHNlIGgpIGhpX3N0clxuICAgIGluXG4gICAgaWYgcHMgPCBmcmFjX2xpbWl0IHRoZW4gYmVnaW5cbiAgICAgIGxldCBoLCBsID0gZGl2aWRlX3BzIH5jYXJyeToxMDAwIHBzIGhpIGxvIGluXG4gICAgICBpZiBoID49IDEwMCB8fCBsID0gMCB0aGVuIHBwX3VuaXRfaW50ZWdyYWwgcHBmIH5uZWcgaCBlbHNlXG4gICAgICBsZXQgaCA9IGlmIG5lZyB0aGVuIC1oIGVsc2UgaCBpblxuICAgICAgRm9ybWF0LmZwcmludGYgcHBmIFwiJWQuJTAzZCVzXCIgaCBsIGhpX3N0clxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBsZXQgbXMsIF8gPSBkaXZpZGVfcHMgfmNhcnJ5OjEgcHMgaGkgaGkgaW5cbiAgICAgIHBwX3VuaXRfaW50ZWdyYWwgcHBmIH5uZWcgbXNcbiAgICBlbmRcblxuICBsZXQgcHBfbXMgPVxuICAgIHBwX3VuaXQgXCJzXCIgcHNfY291bnRfaW5fbXMgXCJtc1wiIHBzX2NvdW50X2luXzEwMG1zIHBzX2NvdW50X2luX3VzXG5cbiAgbGV0IHBwX3VzID1cbiAgICBwcF91bml0IFwibXNcIiBwc19jb3VudF9pbl91cyBcInVzXCIgcHNfY291bnRfaW5fMTAwdXMgcHNfY291bnRfaW5fbnNcblxuICBsZXQgcHBfbnMgPVxuICAgIHBwX3VuaXQgXCJ1c1wiIHBzX2NvdW50X2luX25zIFwibnNcIiBwc19jb3VudF9pbl8xMDBucyBwc19jb3VudF9pbl9wc1xuXG4gIGxldCBwcF9wcyBwcGYgfm5lZyBwcyA9XG4gICAgbGV0IHBzID0gSW50NjQudG9faW50IHBzIGluXG4gICAgRm9ybWF0LmZwcmludGYgcHBmIFwiJWRwc1wiIChpZiBuZWcgdGhlbiAtcHMgZWxzZSBwcylcblxuICBsZXQgcHAgcHBmIChzaWduLCBfIGFzIHMpID1cbiAgICBsZXQgbmVnID0gc2lnbiA8IDAgaW5cbiAgICBtYXRjaCAoYWJzIHMpIHdpdGhcbiAgICB8ICgwLCBwcykgLT5cbiAgICAgICAgaWYgcHMgPj0gcHNfY291bnRfaW5faG91ciB0aGVuIHBwX2hfbSBwcGYgfm5lZyBwcyBlbHNlXG4gICAgICAgIGlmIHBzID49IHBzX2NvdW50X2luX21pbiB0aGVuIHBwX21fcyBwcGYgfm5lZyBwcyBlbHNlXG4gICAgICAgIGlmIHBzID49IHBzX2NvdW50X2luX3MgdGhlbiBwcF9zIHBwZiB+bmVnIHBzIGVsc2VcbiAgICAgICAgaWYgcHMgPj0gcHNfY291bnRfaW5fbXMgdGhlbiBwcF9tcyBwcGYgfm5lZyBwcyBlbHNlXG4gICAgICAgIGlmIHBzID49IHBzX2NvdW50X2luX3VzIHRoZW4gcHBfdXMgcHBmIH5uZWcgcHMgZWxzZVxuICAgICAgICBpZiBwcyA+PSBwc19jb3VudF9pbl9ucyB0aGVuIHBwX25zIHBwZiB+bmVnIHBzIGVsc2VcbiAgICAgICAgcHBfcHMgcHBmIH5uZWcgcHNcbiAgICB8IChkLCBwcykgLT5cbiAgICAgICAgaWYgZCA+IDM2NSB0aGVuIHBwX3lfZCBwcGYgfm5lZyBkIHBzIGVsc2VcbiAgICAgICAgcHBfZF9oIHBwZiB+bmVnIGQgcHNcbmVuZFxuXG4oKiBQT1NJWCB0aW1lc3RhbXBzICopXG5cbmxldCB2IChkLCBwcyBhcyBzKSA9XG4gIGlmIChwcyA8IDBMIHx8IHBzID4gcHNfZGF5X21heCB8fCBkIDwgZGF5X21pbiB8fCBkID4gZGF5X21heClcbiAgdGhlbiBpbnZhbGlkX2FyZyAoRm9ybWF0LnNwcmludGYgXCJpbGxlZ2FsIHB0aW1lIHRpbWVzdGFtcDogKCVkLCVMZClcIiBkIHBzKVxuICBlbHNlIHNcblxubGV0IHVuc2FmZV9vZl9kX3BzIHMgPSBzXG5cbmxldCBvZl9zcGFuIChkLCBfIGFzIHNwYW4pID1cbiAgaWYgZCA8IGRheV9taW4gfHwgZCA+IGRheV9tYXggdGhlbiBOb25lIGVsc2UgU29tZSBzcGFuXG5cbmxldCB0b19zcGFuIHQgPSB0XG5cbmxldCBvZl9mbG9hdF9zIHNlY3MgPSBtYXRjaCBTcGFuLm9mX2Zsb2F0X3Mgc2VjcyB3aXRoXG58IE5vbmUgLT4gTm9uZVxufCBTb21lIGQgLT4gb2Zfc3BhbiBkXG5cbmxldCB0b19mbG9hdF9zID0gU3Bhbi50b19mbG9hdF9zXG5cbmxldCB0cnVuY2F0ZSA9IFNwYW4udHJ1bmNhdGVfZG93blxuXG5sZXQgZnJhY19zIChfLCBwcykgPSAoMCwgSW50NjQuKHJlbSBwcyBwc19jb3VudF9pbl9zKSlcblxuKCogUHJlZGljYXRlcyAqKVxuXG5sZXQgZXF1YWwgPSBTcGFuLmVxdWFsXG5sZXQgY29tcGFyZSA9IFNwYW4uY29tcGFyZVxubGV0IGlzX2VhcmxpZXIgdCB+dGhhbiA9IGNvbXBhcmUgdCB0aGFuID0gLTFcbmxldCBpc19sYXRlciB0IH50aGFuID0gY29tcGFyZSB0IHRoYW4gPSAxXG5cbigqIFBPU0lYIGFyaXRobWV0aWMgKilcblxubGV0IGFkZF9zcGFuIHQgZCA9IG9mX3NwYW4gKFNwYW4uYWRkIHQgZClcbmxldCBzdWJfc3BhbiB0IGQgPSBvZl9zcGFuIChTcGFuLnN1YiB0IGQpXG5sZXQgZGlmZiB0MSB0MCA9IFNwYW4uc3ViIHQxIHQwXG5cbigqIFRpbWUgem9uZSBvZmZzZXRzIGJldHdlZW4gbG9jYWwgYW5kIFVUQyB0aW1lbGluZXMgKilcblxudHlwZSB0el9vZmZzZXRfcyA9IGludFxuXG4oKiBEYXRlLXRpbWUgY29udmVyc2lvblxuXG4gICBQT1NJWCB0aW1lIGNvdW50cyBzZWNvbmRzIHNpbmNlIDE5NzAtMDEtMDEgMDA6MDA6MDAgVVRDIHdpdGhvdXRcbiAgIGNvdW50aW5nIGxlYXAgc2Vjb25kcyAtLSB3aGVuIGEgbGVhcCBzZWNvbmQgb2NjdXJzIGEgUE9TSVggc2Vjb25kXG4gICBjYW4gYmUgdHdvIFNJIHNlY29uZHMgb3IgemVybyBTSSBzZWNvbmQuIEhlbmNlIDg2NDAwIFBPU0lYIHNlY29uZHNcbiAgIGFsd2F5cyByZXByZXNlbnQgYW4gVVRDIGRheSBhbmQgdGhlIHRyYW5zbGF0aW9ucyBiZWxvdyBhcmUgYWNjdXJhdGVcbiAgIHdpdGhvdXQgaGF2aW5nIHRvIHJlZmVyIHRvIGEgbGVhcCBzZWNvbmRzIHRhYmxlLiAqKVxuXG50eXBlIGRhdGUgPSAoaW50ICogaW50ICogaW50KVxudHlwZSB0aW1lID0gKGludCAqIGludCAqIGludCkgKiB0el9vZmZzZXRfc1xuXG5sZXQgbWF4X21vbnRoX2RheSA9ICAgICAgICAgICAgICAgKCogbWF4IGRheSBudW1iZXIgaW4gYSBnaXZlbiB5ZWFyJ3MgbW9udGguICopXG4gIGxldCBpc19sZWFwX3llYXIgeSA9ICh5IG1vZCA0ID0gMCkgJiYgKHkgbW9kIDEwMCA8PiAwIHx8IHkgbW9kIDQwMCA9IDApIGluXG4gIGxldCBtbGVuID0gW3wzMTsgMjggKCogb3Igbm90ICopOyAzMTsgMzA7IDMxOyAzMDsgMzE7IDMxOyAzMDsgMzE7IDMwOyAzMXxdIGluXG4gIGZ1biB5IG0gLT4gaWYgKG0gPSAyICYmIGlzX2xlYXBfeWVhciB5KSB0aGVuIDI5IGVsc2UgbWxlbi4obSAtIDEpXG5cbmxldCBpc19kYXRlX3ZhbGlkICh5LCBtLCBkKSA9XG4gIDAgPD0geSAmJiB5IDw9IDk5OTkgJiZcbiAgMSA8PSBtICYmIG0gPD0gMTIgJiZcbiAgMSA8PSBkICYmIGQgPD0gbWF4X21vbnRoX2RheSB5IG1cblxubGV0IGlzX3RpbWVfdmFsaWQgKChoaCwgbW0sIHNzKSwgXykgPVxuICAwIDw9IGhoICYmIGhoIDw9IDIzICYmXG4gIDAgPD0gbW0gJiYgbW0gPD0gNTkgJiZcbiAgMCA8PSBzcyAmJiBzcyA8PSA2MFxuXG5sZXQgb2ZfZGF0ZV90aW1lIChkYXRlLCAoKGhoLCBtbSwgc3MpLCB0el9vZmZzZXRfcyBhcyB0KSkgPVxuICAoKiBXZSBmaXJzdCB2ZXJpZnkgdGhhdCB0aGUgZ2l2ZW4gZGF0ZSBhbmQgdGltZSBhcmUgUHRpbWUtdmFsaWQuXG4gICAgIE9uY2UgdGhpcyBoYXMgYmVlbiBlc3RhYmxpc2hlZCB3ZSBmaW5kIGZpbmQgdGhlIG51bWJlciBvZiBKdWxpYW5cbiAgICAgZGF5cyBzaW5jZSB0aGUgZXBvY2ggZm9yIHRoZSBnaXZlbiBwcm9sZXB0aWMgR2VvcmdpYW4gY2FsZW5kYXJcbiAgICAgZGF0ZS4gVGhpcyBnaXZlcyB1cyB0aGUgUE9TSVggZGF5IGNvbXBvbmVudCBvZiB0aGUgdGltZXN0YW1wLiBUaGVcbiAgICAgcmVtYWluaW5nIHRpbWUgZmllbGRzIGFyZSB1c2VkIHRvIGRlcml2ZSB0aGUgcGljb3NlY29uZCBwcmVjaXNpb25cbiAgICAgdGltZSBpbiB0aGF0IGRheSBjb21wZW5zYXRlZCBieSB0aGUgdGltZSB6b25lIG9mZnNldC4gVGhlIGZpbmFsXG4gICAgIHJlc3VsdCBpcyBjaGVja2VkIHRvIGJlIGluIFB0aW1lJ3MgW21pbjttYXhdIHJhbmdlLlxuXG4gICAgIEJ5IGRlZmluaXRpb24gUE9TSVggdGltZXN0YW1wcyBjYW5ub3QgcmVwcmVzZW50IGxlYXAgc2Vjb25kcy5cbiAgICAgV2l0aCB0aGUgY29kZSBiZWxvdyBhbnkgZGF0ZS10aW1lIHdpdGggYSBzZWNvbmRzIHZhbHVlIG9mIDYwXG4gICAgIChsZWFwIHNlY29uZCBhZGRpdGlvbikgaXMgbWFwcGVkIHRvIHRoZSBQT1NJWCB0aW1lc3RhbXAgdGhhdFxuICAgICBoYXBwZW5zIDEgc2Vjb25kIGxhdGVyIHdoaWNoIGlzIHdoYXQgUE9TSVggbWt0aW1lIHdvdWxkIHRvLiBBbnlcbiAgICAgZm9ybWFsbHkgbm9uLWV4aXN0aW5nIFVUQyBkYXRlLXRpbWUgd2l0aCBhIHNlY29uZHMgdmFsdWUgb2YgNTlcbiAgICAgKGxlYXAgc2Vjb25kIHN1YnRyYWN0aW9uKSBpcyBtYXBwZWQgb24gdGhlIFBPU0lYIHRpbWVzdGFtcCB0aGF0XG4gICAgIHJlcHJlc2VudHMgdGhpcyBub24gZXhpc3RpbmcgaW5zdGFudC4gKilcbiAgaWYgbm90IChpc19kYXRlX3ZhbGlkIGRhdGUgJiYgaXNfdGltZV92YWxpZCB0KSB0aGVuIE5vbmUgZWxzZVxuICBsZXQgZCA9IGpkX29mX2RhdGUgZGF0ZSAtIGpkX3Bvc2l4X2Vwb2NoIGluXG4gIGxldCBoaF9wcyA9IEludDY0LihtdWwgKG9mX2ludCBoaCkgcHNfY291bnRfaW5faG91cikgaW5cbiAgbGV0IG1tX3BzID0gSW50NjQuKG11bCAob2ZfaW50IG1tKSBwc19jb3VudF9pbl9taW4pIGluXG4gIGxldCBzc19wcyA9IEludDY0LihtdWwgKG9mX2ludCBzcykgcHNfY291bnRfaW5fcykgaW5cbiAgbGV0IHBzID0gSW50NjQuKGFkZCBoaF9wcyAoYWRkIG1tX3BzIHNzX3BzKSkgaW5cbiAgc3ViX3NwYW4gKGQsIHBzKSAoU3Bhbi5vZl9pbnRfcyB0el9vZmZzZXRfcylcblxubGV0IHRvX2RhdGVfdGltZSA/KHR6X29mZnNldF9zID0gMCkgdCA9XG4gICgqIFRvIHJlbmRlciB0aGUgdGltZXN0YW1wIGluIHRoZSBnaXZlbiB0aW1lIHpvbmUgb2Zmc2V0IHdlIGZpcnN0XG4gICAgIGV4cHJlc3MgdGhlIHRpbWVzdGFtcCBpbiBsb2NhbCB0aW1lIGFuZCB0aGVuIGNvbXB1dGUgdGhlIGRhdGVcbiAgICAgZmllbGRzIG9uIHRoYXQgc3RhbXAgYXMgaWYgaXQgd2VyZSBVVEMuIElmIHRoZSBsb2NhbCB0aW1lc3RhbXAgaXNcbiAgICAgbm90IGluIFttaW47bWF4XSB0aGVuIGl0cyBkYXRlIGZpZWxkcyBjYW5ub3QgYmUgdmFsaWQgYWNjb3JkaW5nXG4gICAgIHRvIHRoZSBjb25zdHJhaW50cyBndWFyYW50ZWVkIGJ5IFB0aW1lIGFuZCB3ZSBmYWxsYmFjayB0byBVVEMsXG4gICAgIGkuZS4gYSB0aW1lIHpvbmUgb2Zmc2V0IG9mIDAuXG5cbiAgICAgV2UgdGhlbiBhcHBseSB0aGUgZm9sbG93aW5nIGFsZ29yaXRobSB3aG9zZSBkZXNjcmlwdGlvbiBtYWtlc1xuICAgICBzZW5zZSBvbiBhIFBPU0lYIHRpbWVzdGFtcCAoaS5lLiBVVEMpIGJ1dCB3b3JrcyBlcXVhbGx5IHdlbGwgdG9cbiAgICAgcmVuZGVyIHRoZSBkYXRlLXRpbWUgZmllbGRzIG9mIGEgbG9jYWwgdGltZXN0YW1wLlxuXG4gICAgIFdlIGZpcnN0IHRha2UgdGFrZSB0aGUgUE9TSVggZGF5IGNvdW50IFtkXSAoZXF1aXZhbGVudCBieVxuICAgICBkZWZpbml0aW9uIHRvIGFuIFVUQyBkYXkgY291bnQpIGZyb20gdGhlIGVwb2NoLCBjb252ZXJ0IGl0IHRvIGFcbiAgICAgSnVsaWFuIGRheSBhbmQgdXNlIHRoaXMgdG8gZ2V0IHRoZSBwcm9sZXB0aWMgR3JlZ29yaWFuIGNhbGVuZGFyXG4gICAgIGRhdGUuIFRoZSBQT1NJWCBwaWNvc2Vjb25kcyBbcHNdIGluIHRoZSBkYXkgYXJlIGFyZSBjb252ZXJ0ZWQgdG9cbiAgICAgYSBkYXl0aW1lIGFjY29yZGluZyB0byB0byBpdHMgdmFyaW91cyB1bml0cy5cblxuICAgICBCeSBkZWZpbml0aW9uIG5vIFBPU0lYIHRpbWVzdGFtcCBjYW4gcmVwcmVzZW50IGEgZGF0ZS10aW1lIHdpdGggYVxuICAgICBzZWNvbmRzIHZhbHVlIG9mIDYwIChsZWFwIHNlY29uZCBhZGRpdGlvbikgYW5kIHRodXMgdGhlIGZ1bmN0aW9uXG4gICAgIHdpbGwgbmV2ZXIgcmV0dXJuIGEgZGF0ZS10aW1lIHdpdGggc3VjaCBhIHZhbHVlLiAgT24gdGhlIG90aGVyXG4gICAgIGhhbmQgaXQgd2lsbCByZXR1cm4gYW4gaW5leGlzdGluZyBVVEMgZGF0ZS10aW1lIHdpdGggYSBzZWNvbmRzXG4gICAgIHZhbHVlIG9mIDU5IHdoZW5ldmVyIGEgbGVhcCBzZWNvbmQgaXMgc3VidHJhY3RlZCBzaW5jZSB0aGVyZSBpcyBhXG4gICAgIFBPU0lYIHRpbWVzdGFtcCB0aGF0IHJlcHJlc2VudHMgdGhpcyBpbnN0YW50LiAqKVxuICBsZXQgKGQsIHBzKSwgdHpfb2Zmc2V0X3MgPSBtYXRjaCBhZGRfc3BhbiB0IChTcGFuLm9mX2ludF9zIHR6X29mZnNldF9zKSB3aXRoXG4gIHwgTm9uZSAtPiB0LCAwICgqIGZhbGxiYWNrIHRvIFVUQyAqKVxuICB8IFNvbWUgbG9jYWwgLT4gbG9jYWwsIHR6X29mZnNldF9zXG4gIGluXG4gIGxldCBqZCA9IGQgKyBqZF9wb3NpeF9lcG9jaCBpblxuICBsZXQgZGF0ZSA9IGpkX3RvX2RhdGUgamQgaW5cbiAgbGV0IGhoID0gSW50NjQuKHRvX2ludCAoZGl2IHBzIHBzX2NvdW50X2luX2hvdXIpKSBpblxuICBsZXQgaGhfcmVtID0gSW50NjQucmVtIHBzIHBzX2NvdW50X2luX2hvdXIgaW5cbiAgbGV0IG1tID0gSW50NjQuKHRvX2ludCAoZGl2IGhoX3JlbSBwc19jb3VudF9pbl9taW4pKSBpblxuICBsZXQgbW1fcmVtID0gSW50NjQucmVtIGhoX3JlbSBwc19jb3VudF9pbl9taW4gaW5cbiAgbGV0IHNzID0gSW50NjQuKHRvX2ludCAoZGl2IG1tX3JlbSBwc19jb3VudF9pbl9zKSkgaW5cbiAgZGF0ZSwgKChoaCwgbW0sIHNzKSwgdHpfb2Zmc2V0X3MpXG5cbmxldCBvZl9kYXRlID90el9vZmZzZXRfczoodHogPSAwKSBkYXRlID0gb2ZfZGF0ZV90aW1lIChkYXRlLCAoKDAwLCAwMCwgMDApLCB0eikpXG5sZXQgdG9fZGF0ZSA/dHpfb2Zmc2V0X3MgdCA9IGZzdCAodG9fZGF0ZV90aW1lID90el9vZmZzZXRfcyB0KVxubGV0IG9mX3llYXIgP3R6X29mZnNldF9zIHkgPSBvZl9kYXRlID90el9vZmZzZXRfcyAoeSwgMDEsIDAxKVxubGV0IHRvX3llYXIgPyh0el9vZmZzZXRfcyA9IDApIHQgPVxuICBsZXQgZCA9IG1hdGNoIGFkZF9zcGFuIHQgKFNwYW4ub2ZfaW50X3MgdHpfb2Zmc2V0X3MpIHdpdGhcbiAgfCBOb25lIC0+IGZzdCB0ICgqIGZhbGxiYWNrIHRvIFVUQyAqKSB8IFNvbWUgKGxvY2FsX2QsIF8pIC0+IGxvY2FsX2RcbiAgaW5cbiAgamRfdG9feWVhciAoZCArIGpkX3Bvc2l4X2Vwb2NoKVxuXG5cbnR5cGUgd2Vla2RheSA9IFsgYFN1biB8IGBNb24gfCBgVHVlIHwgYFdlZCB8IGBUaHUgfCBgRnJpIHwgYFNhdCBdXG5cbmxldCB3ZWVrZGF5X251bSA/KHR6X29mZnNldF9zID0gMCkgdCA9XG4gIGxldCAoZCwgXykgPSBTcGFuLmFkZCB0IChTcGFuLm9mX2ludF9zIHR6X29mZnNldF9zKSBpblxuICAoKiBOLkIuIGluIGNvbnRyYXN0IHRvIFt0b19kYXRlX3RpbWVdIHdlIGRvbid0IGNhcmUgaWYgd2UgZmFsbCBvdXRzaWRlXG4gICAgW21pbjttYXhdLiBFdmVuIGlmIGl0IGhhcHBlbnMgdGhlIHJlc3VsdCBvZiB0aGUgY29tcHV0YXRpb24gaXMgc3RpbGxcbiAgICAgY29ycmVjdCAqKVxuICBsZXQgaSA9IChkICsgNCAoKiBFcG9jaCwgZCA9IDAsIHdhcyBhIHRodSwgd2Ugd2FudCA0IGZvciB0aGF0IGRheSAqKSkgbW9kIDcgaW5cbiAgaWYgaSA8IDAgdGhlbiA3ICsgaSBlbHNlIGlcblxubGV0IHdlZWtkYXkgPVxuICBsZXQgd2RheSA9IFt8IGBTdW47IGBNb247IGBUdWU7IGBXZWQ7IGBUaHU7IGBGcmk7IGBTYXQ7IHxdIGluXG4gIGZ1biA/dHpfb2Zmc2V0X3MgdCAtPiB3ZGF5Lih3ZWVrZGF5X251bSA/dHpfb2Zmc2V0X3MgdClcblxuKCogUkZDIDMzMzkgdGltZXN0YW1wIGNvbnZlcnNpb25zICopXG5cbigqIFJGQyAzMzM5IHRpbWVzdGFtcCBwYXJzZXIgKilcblxudHlwZSBlcnJvcl9yYW5nZSA9IGludCAqIGludFxudHlwZSByZmMzMzM5X2Vycm9yID1cbiAgWyBgSW52YWxpZF9zdGFtcCB8IGBFb2kgfCBgRXhwX2NoYXJzIG9mIGNoYXIgbGlzdCB8IGBUcmFpbGluZ19pbnB1dCBdXG5cbmxldCBwcF9yZmMzMzM5X2Vycm9yIHBwZiA9IGZ1bmN0aW9uXG58IGBJbnZhbGlkX3N0YW1wIC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcIkBbaW52YWxpZEAgdGltZUAgc3RhbXBAXVwiXG58IGBFb2kgLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiQFt1bmV4cGVjdGVkQCBlbmRAIG9mQCBpbnB1dEBdXCJcbnwgYFRyYWlsaW5nX2lucHV0IC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcIkBbdHJhaWxpbmdAIGlucHV0QF1cIlxufCBgRXhwX2NoYXJzIGNzIC0+XG4gICAgbGV0IHJlYyBwcF9jaGFycyBwcGYgPSBmdW5jdGlvblxuICAgIHwgYyA6OiBjcyAtPiBGb3JtYXQuZnByaW50ZiBwcGYgXCJAICVDXCIgYzsgcHBfY2hhcnMgcHBmIGNzXG4gICAgfCBbXSAtPiAoKVxuICAgIGluXG4gICAgRm9ybWF0LmZwcmludGYgcHBmIFwiQFtleHBlY3RlZEAgYUAgY2hhcmFjdGVyQCBpbjolYUBdXCIgcHBfY2hhcnMgY3NcblxubGV0IHBwX3JhbmdlIHBwZiAocywgZSkgPVxuICBpZiBzID0gZSAgdGhlbiBGb3JtYXQucHBfcHJpbnRfaW50IHBwZiBzIGVsc2UgRm9ybWF0LmZwcmludGYgcHBmIFwiJWQtJWRcIiBzIGVcblxubGV0IF9yZmMzMzM5X2Vycm9yX3RvX3N0cmluZyAociwgZXJyKSA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIkBbPGg+JWE6ICVhQF1cIiBwcF9yYW5nZSByIHBwX3JmYzMzMzlfZXJyb3IgZXJyXG5cbmxldCByZmMzMzM5X3N0cmluZ19lcnJvciA9IGZ1bmN0aW9uXG58IE9rIF8gYXMgdiAtPiB2IHwgRXJyb3IgKGBSRkMzMzM5IGUpIC0+IEVycm9yIChfcmZjMzMzOV9lcnJvcl90b19zdHJpbmcgZSlcblxubGV0IHJmYzMzMzlfZXJyb3JfdG9fbXNnID0gZnVuY3Rpb25cbnwgT2sgXyBhcyB2IC0+IHYgfCBFcnJvciAoYFJGQzMzMzkgZSkgLT5cbiAgICBFcnJvciAoYE1zZyAoX3JmYzMzMzlfZXJyb3JfdG9fc3RyaW5nIGUpKVxuXG5leGNlcHRpb24gUkZDMzMzOSBvZiAoaW50ICogaW50KSAqIHJmYzMzMzlfZXJyb3IgICAgICAgICAgICAgICAgICAoKiBJbnRlcm5hbCAqKVxuXG5sZXQgZXJyb3IgciBlID0gcmFpc2UgKFJGQzMzMzkgKHIsIGUpKVxubGV0IGVycm9yX3BvcyBwIGUgPSBlcnJvciAocCwgcCkgZVxubGV0IGVycm9yX2V4cF9kaWdpdCBwID1cbiAgZXJyb3JfcG9zIHAgKGBFeHBfY2hhcnMgWycwJzsgJzEnOyAnMic7ICczJzsgJzQnOyAnNSc7ICc2JzsgJzcnOyAnOCc7ICc5J10pXG5cbmxldCBpc19kaWdpdCA9IGZ1bmN0aW9uICcwJyAuLiAnOScgLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcblxubGV0IHBhcnNlX2RpZ2l0cyB+Y291bnQgcG9zIG1heCBzID1cbiAgbGV0IHN0b3AgPSBwb3MgKyBjb3VudCAtIDEgaW5cbiAgaWYgc3RvcCA+IG1heCB0aGVuIGVycm9yX3BvcyBtYXggYEVvaSBlbHNlXG4gIGxldCByZWMgbG9vcCBrIGFjYyA9XG4gICAgaWYgayA+IHN0b3AgdGhlbiBhY2MgZWxzZVxuICAgIGlmIGlzX2RpZ2l0IHMuW2tdIHRoZW4gbG9vcCAoaysxKSAoYWNjICogMTAgKyBDaGFyLmNvZGUgcy5ba10gLSAweDMwKSBlbHNlXG4gICAgZXJyb3JfZXhwX2RpZ2l0IGtcbiAgaW5cbiAgbG9vcCBwb3MgMFxuXG5sZXQgcGFyc2VfY2hhciBjIHBvcyBtYXggcyA9XG4gIGlmIHBvcyA+IG1heCB0aGVuIGVycm9yX3BvcyBtYXggYEVvaSBlbHNlXG4gIGlmIHMuW3Bvc10gPSBjIHRoZW4gKCkgZWxzZSBlcnJvcl9wb3MgcG9zIChgRXhwX2NoYXJzIFtjXSlcblxubGV0IHBhcnNlX2R0X3NlcCB+c3RyaWN0IHBvcyBtYXggcyA9XG4gIGxldCBpc19kdF9zZXAgPSBmdW5jdGlvblxuICB8ICdUJyAtPiB0cnVlXG4gIHwgJ3QnIHwgJyAnIHdoZW4gbm90IHN0cmljdCAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuICBpblxuICBpZiBwb3MgPiBtYXggdGhlbiBlcnJvcl9wb3MgbWF4IGBFb2kgZWxzZVxuICBpZiBpc19kdF9zZXAgcy5bcG9zXSB0aGVuICgpIGVsc2VcbiAgZXJyb3JfcG9zIHBvcyAoYEV4cF9jaGFycyAoWydUJ10gQCBpZiBzdHJpY3QgdGhlbiBbXSBlbHNlIFsndCc7ICcgJ10pKVxuXG5sZXQgZGVjaWRlX2ZyYWNfb3JfdHogfnN0cmljdCBwb3MgbWF4IHMgPVxuICBpZiBwb3MgPiBtYXggdGhlbiBlcnJvcl9wb3MgbWF4IGBFb2kgZWxzZVxuICBtYXRjaCBzLltwb3NdIHdpdGhcbiAgfCAnLicgLT4gYEZyYWNcbiAgfCAnKycgfCAnLScgfCAnWicgLT4gYFR6XG4gIHwgJ3onIHdoZW4gbm90IHN0cmljdCAgLT4gYFR6XG4gIHwgYyAtPlxuICAgICAgbGV0IGNoYXJzID0gWycuJzsgJysnOyAnLSc7ICdaJ10gQCBpZiBzdHJpY3QgdGhlbiBbXSBlbHNlIFsneiddIGluXG4gICAgICBlcnJvcl9wb3MgcG9zIChgRXhwX2NoYXJzIGNoYXJzKVxuXG5sZXQgcGFyc2VfZnJhY19wcyBwb3MgbWF4IHMgPVxuICBpZiBwb3MgPiBtYXggdGhlbiBlcnJvcl9wb3MgbWF4IGBFb2kgZWxzZVxuICBpZiBub3QgKGlzX2RpZ2l0IHMuW3Bvc10pIHRoZW4gZXJyb3JfZXhwX2RpZ2l0IHBvcyBlbHNlXG4gIGxldCByZWMgbG9vcCBrIGFjYyBwb3cgPVxuICAgIGlmIGsgPiBtYXggdGhlbiBlcnJvcl9wb3MgbWF4IGBFb2kgZWxzZVxuICAgIGlmIG5vdCAoaXNfZGlnaXQgcy5ba10pIHRoZW4gKFNvbWUgYWNjKSwgayBlbHNlXG4gICAgbGV0IGNvdW50ID0gayAtIHBvcyArIDEgaW5cbiAgICBpZiBjb3VudCA+IDEyIHRoZW4gKCogdHJ1bmNhdGUgKikgbG9vcCAoayArIDEpIGFjYyBwb3cgZWxzZVxuICAgIGxldCBwb3cgPSBJbnQ2NC5kaXYgcG93IDEwTCBpblxuICAgIGxldCBhY2MgPSBJbnQ2NC4oYWRkIGFjYyAobXVsIChvZl9pbnQgKENoYXIuY29kZSBzLltrXSAtIDB4MzApKSBwb3cpKSBpblxuICAgIGxvb3AgKGsgKyAxKSBhY2MgcG93XG4gIGluXG4gIGxvb3AgcG9zIDBMIHBzX2NvdW50X2luX3NcblxubGV0IHBhcnNlX3R6X3MgfnN0cmljdCBwb3MgbWF4IHMgPVxuICBsZXQgcGFyc2VfdHpfbWFnIHNpZ24gcG9zID1cbiAgICBsZXQgaGhfcG9zID0gcG9zIGluXG4gICAgbGV0IGhoID0gcGFyc2VfZGlnaXRzIH5jb3VudDoyIGhoX3BvcyBtYXggcyBpblxuICAgIGxldCBtbSwgbW1fcG9zID0gbWF0Y2ggc3RyaWN0IHdpdGhcbiAgICB8IHRydWUgLT5cbiAgICAgICAgbGV0IG1tX3BvcyA9IGhoX3BvcyArIDMgaW5cbiAgICAgICAgcGFyc2VfY2hhciAnOicgKG1tX3BvcyAtIDEpIG1heCBzO1xuICAgICAgICBwYXJzZV9kaWdpdHMgfmNvdW50OjIgbW1fcG9zIG1heCBzLCBtbV9wb3NcbiAgICB8IGZhbHNlIC0+XG4gICAgICAgIGxldCBuZXh0ID0gaGhfcG9zICsgMiBpblxuICAgICAgICBpZiBuZXh0ID4gbWF4IHx8IG5vdCAocy5bbmV4dF0gPSAnOicgfHwgaXNfZGlnaXQgcy5bbmV4dF0pXG4gICAgICAgIHRoZW4gKDAsIGhoX3BvcyAoKiBlbmQgcG9zIG9mIHBhcnNlIC0gMSwgb25lIGlzIGFkZGVkIGF0IHRoZSBlbmQgKikpXG4gICAgICAgIGVsc2VcbiAgICAgICAgbGV0IG1tX3BvcyA9IGlmIHMuW25leHRdID0gJzonIHRoZW4gaGhfcG9zICsgMyBlbHNlIGhoX3BvcyArIDIgaW5cbiAgICAgICAgcGFyc2VfZGlnaXRzIH5jb3VudDoyIG1tX3BvcyBtYXggcywgbW1fcG9zXG4gICAgaW5cbiAgICBpZiBoaCA+IDIzIHRoZW4gZXJyb3IgKGhoX3BvcywgaGhfcG9zICsgMSkgYEludmFsaWRfc3RhbXAgZWxzZVxuICAgIGlmIG1tID4gNTkgdGhlbiBlcnJvciAobW1fcG9zLCBtbV9wb3MgKyAxKSBgSW52YWxpZF9zdGFtcCBlbHNlXG4gICAgbGV0IHNlY3MgPSBoaCAqIDM2MDAgKyBtbSAqIDYwIGluXG4gICAgbGV0IHR6X3MgPSBtYXRjaCBzZWNzID0gMCAmJiBzaWduID0gLTEgd2l0aFxuICAgIHwgdHJ1ZSAtPiBOb25lICgqIC0wMDowMCBjb252ZW50aW9uICopXG4gICAgfCBmYWxzZSAtPiBTb21lIChzaWduICogc2VjcylcbiAgICBpblxuICAgIHR6X3MsIG1tX3BvcyArIDFcbiAgaW5cbiAgaWYgcG9zID4gbWF4IHRoZW4gZXJyb3JfcG9zIG1heCBgRW9pIGVsc2VcbiAgbWF0Y2ggcy5bcG9zXSB3aXRoXG4gIHwgJ1onIC0+IFNvbWUgMCwgcG9zXG4gIHwgJ3onIHdoZW4gbm90IHN0cmljdCAtPiBTb21lIDAsIHBvc1xuICB8ICcrJyAtPiBwYXJzZV90el9tYWcgKCAxKSAocG9zICsgMSlcbiAgfCAnLScgLT4gcGFyc2VfdHpfbWFnICgtMSkgKHBvcyArIDEpXG4gIHwgYyAtPlxuICAgICAgbGV0IGNoYXJzID0gWycrJzsgJy0nOyAnWiddIEAgaWYgc3RyaWN0IHRoZW4gW10gZWxzZSBbJ3onXSBpblxuICAgICAgZXJyb3JfcG9zIHBvcyAoYEV4cF9jaGFycyBjaGFycylcblxubGV0IG9mX3JmYzMzMzkgPyhzdHJpY3QgPSBmYWxzZSkgPyhzdWIgPSBmYWxzZSkgPyhzdGFydCA9IDApIHMgPVxuICB0cnlcbiAgICBsZXQgc19sZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBsZXQgbWF4ID0gc19sZW4gLSAxIGluXG4gICAgaWYgc19sZW4gPSAwIHx8IHN0YXJ0IDwgMCB8fCBzdGFydCA+IG1heCB0aGVuIGVycm9yX3BvcyBzdGFydCBgRW9pIGVsc2VcbiAgICBsZXQgeV9wb3MgPSBzdGFydCBpblxuICAgIGxldCBtX3BvcyA9IHlfcG9zICsgNSBpblxuICAgIGxldCBkX3BvcyA9IG1fcG9zICsgMyBpblxuICAgIGxldCBoaF9wb3MgPSBkX3BvcyArIDMgaW5cbiAgICBsZXQgbW1fcG9zID0gaGhfcG9zICsgMyBpblxuICAgIGxldCBzc19wb3MgPSBtbV9wb3MgKyAzIGluXG4gICAgbGV0IGRlY2lkZV9wb3MgPSBzc19wb3MgKyAyIGluXG4gICAgbGV0IHkgPSBwYXJzZV9kaWdpdHMgfmNvdW50OjQgeV9wb3MgbWF4IHMgaW5cbiAgICBwYXJzZV9jaGFyICctJyAobV9wb3MgLSAxKSBtYXggcztcbiAgICBsZXQgbSA9IHBhcnNlX2RpZ2l0cyB+Y291bnQ6MiBtX3BvcyBtYXggcyBpblxuICAgIHBhcnNlX2NoYXIgJy0nIChkX3BvcyAtIDEpIG1heCBzO1xuICAgIGxldCBkID0gcGFyc2VfZGlnaXRzIH5jb3VudDoyIGRfcG9zIG1heCBzIGluXG4gICAgcGFyc2VfZHRfc2VwIH5zdHJpY3QgKGhoX3BvcyAtIDEpIG1heCBzO1xuICAgIGxldCBoaCA9ICBwYXJzZV9kaWdpdHMgfmNvdW50OjIgaGhfcG9zIG1heCBzIGluXG4gICAgcGFyc2VfY2hhciAnOicgKG1tX3BvcyAtIDEpIG1heCBzO1xuICAgIGxldCBtbSA9ICBwYXJzZV9kaWdpdHMgfmNvdW50OjIgbW1fcG9zIG1heCBzIGluXG4gICAgcGFyc2VfY2hhciAnOicgKHNzX3BvcyAtIDEpIG1heCBzO1xuICAgIGxldCBzcyA9IHBhcnNlX2RpZ2l0cyB+Y291bnQ6MiBzc19wb3MgbWF4IHMgaW5cbiAgICBsZXQgZnJhYywgdHpfcG9zID0gbWF0Y2ggZGVjaWRlX2ZyYWNfb3JfdHogfnN0cmljdCBkZWNpZGVfcG9zIG1heCBzIHdpdGhcbiAgICB8IGBGcmFjIC0+IHBhcnNlX2ZyYWNfcHMgKGRlY2lkZV9wb3MgKyAxKSBtYXggc1xuICAgIHwgYFR6IC0+IE5vbmUsIGRlY2lkZV9wb3NcbiAgICBpblxuICAgIGxldCB0el9zX29wdCwgbGFzdF9wb3MgPSBwYXJzZV90el9zIH5zdHJpY3QgdHpfcG9zIG1heCBzIGluXG4gICAgbGV0IHR6X3MgPSBtYXRjaCB0el9zX29wdCB3aXRoIE5vbmUgLT4gMCB8IFNvbWUgcyAtPiBzIGluXG4gICAgbWF0Y2ggb2ZfZGF0ZV90aW1lICgoeSwgbSwgZCksICgoaGgsIG1tLCBzcyksIHR6X3MpKSB3aXRoXG4gICAgfCBOb25lIC0+IGVycm9yIChzdGFydCwgbGFzdF9wb3MpIGBJbnZhbGlkX3N0YW1wXG4gICAgfCBTb21lIHQgLT5cbiAgICAgICAgbGV0IHQsIHR6X3MgPSBtYXRjaCBmcmFjIHdpdGhcbiAgICAgICAgfCBOb25lIHwgU29tZSAwTCAtPiB0LCB0el9zXG4gICAgICAgIHwgU29tZSBmcmFjIC0+XG4gICAgICAgICAgICBtYXRjaCBhZGRfc3BhbiB0ICgwLCBmcmFjKSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZXJyb3IgKHN0YXJ0LCBsYXN0X3BvcykgYEludmFsaWRfc3RhbXBcbiAgICAgICAgICAgIHwgU29tZSB0IC0+IHQsIHR6X3NcbiAgICAgICAgaW5cbiAgICAgICAgaWYgbm90IHN1YiAmJiBsYXN0X3BvcyA8PiBtYXhcbiAgICAgICAgdGhlbiBlcnJvcl9wb3MgKGxhc3RfcG9zICsgMSkgYFRyYWlsaW5nX2lucHV0XG4gICAgICAgIGVsc2UgT2sgKHQsIHR6X3Nfb3B0LCBsYXN0X3BvcyAtIHN0YXJ0ICsgMSlcbiAgd2l0aCBSRkMzMzM5IChyLCBlKSAtPiBFcnJvciAoYFJGQzMzMzkgKHIsIGUpKVxuXG4oKiBSRkMgMzMzOSB0aW1lc3RhbXAgZm9ybWF0dGVyICopXG5cbmxldCByZmMzMzM5X2FkanVzdF90el9vZmZzZXQgdHpfb2Zmc2V0X3MgPVxuICAoKiBUaGUgUkZDIDMzMzkgdGltZSB6b25lIG9mZnNldCBmaWVsZCBpcyBsaW1pdGVkIGluIGV4cHJlc3Npb24gdG9cbiAgICAgdGhlIGJvdW5kcyBiZWxvdyB3aXRoIG1pbnV0ZSBwcmVjaXNpb24uIElmIHRoZSByZXF1ZXN0ZWQgdGltZVxuICAgICB6b25lIG9mZnNldCBleGNlZWRzIHRoZXNlIGJvdW5kcyBvciBpcyBub3QgYW4gKmludGVncmFsKiBudW1iZXJcbiAgICAgb2YgbWludXRlcyB3ZSBzaW1wbHkgdXNlIFVUQy4gQW4gYWx0ZXJuYXRpdmUgd291bGQgYmUgdG9cbiAgICAgY29tcGVuc2F0ZSB0aGUgb2Zmc2V0ICphbmQqIHRoZSB0aW1lc3RhbXAgYnV0IGl0J3MgbW9yZVxuICAgICBjb21wbGljYXRlZCB0byBleHBsYWluIGFuZCBtYXliZSBtb3JlIHN1cnByaXNpbmcgdG8gdGhlIHVzZXIuICopXG4gIGxldCBtaW4gPSAtODYzNDAgKCogLTIzaDU5IGluIHNlY3MgKikgaW5cbiAgbGV0IG1heCA9ICs4NjM0MCAoKiArMjNoNTkgaW4gc2VjcyAqKSBpblxuICBpZiBtaW4gPD0gdHpfb2Zmc2V0X3MgJiYgdHpfb2Zmc2V0X3MgPD0gbWF4ICYmIHR6X29mZnNldF9zIG1vZCA2MCA9IDBcbiAgdGhlbiB0el9vZmZzZXRfcywgZmFsc2VcbiAgZWxzZSAwICgqIFVUQyAqKSwgdHJ1ZVxuXG5sZXQgc19mcmFjX29mX3BzIGZyYWMgcHMgPVxuICBJbnQ2NC4oZGl2IChyZW0gcHMgcHNfY291bnRfaW5fcykgU3Bhbi5mcmFjX2Rpdi4oZnJhYykpXG5cbmxldCB0b19yZmMzMzM5ID8oc3BhY2UgPSBmYWxzZSkgP2ZyYWNfczooZnJhYyA9IDApID90el9vZmZzZXRfcyAoXywgcHMgYXMgdCkgPVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAyNTUgaW5cbiAgbGV0IHR6X29mZnNldF9zLCB0el91bmtub3duID0gbWF0Y2ggdHpfb2Zmc2V0X3Mgd2l0aFxuICB8IFNvbWUgdHogLT4gcmZjMzMzOV9hZGp1c3RfdHpfb2Zmc2V0IHR6XG4gIHwgTm9uZSAtPiAwLCB0cnVlXG4gIGluXG4gIGxldCAoeSwgbSwgZCksICgoaGgsIHNzLCBtbSksIHR6X29mZnNldF9zKSA9IHRvX2RhdGVfdGltZSB+dHpfb2Zmc2V0X3MgdCBpblxuICBsZXQgZHRfc2VwID0gaWYgc3BhY2UgdGhlbiAnICcgZWxzZSAnVCcgaW5cbiAgUHJpbnRmLmJwcmludGYgYnVmIFwiJTA0ZC0lMDJkLSUwMmQlYyUwMmQ6JTAyZDolMDJkXCIgeSBtIGQgZHRfc2VwIGhoIHNzIG1tO1xuICBsZXQgZnJhYyA9IGlmIGZyYWMgPCAwIHRoZW4gMCBlbHNlIChpZiBmcmFjID4gMTIgdGhlbiAxMiBlbHNlIGZyYWMpIGluXG4gIGlmIGZyYWMgPD4gMCB0aGVuIFByaW50Zi5icHJpbnRmIGJ1ZiBcIi4lMCpMZFwiIGZyYWMgKHNfZnJhY19vZl9wcyBmcmFjIHBzKTtcbiAgaWYgdHpfb2Zmc2V0X3MgPSAwICYmIG5vdCB0el91bmtub3duIHRoZW4gUHJpbnRmLmJwcmludGYgYnVmIFwiWlwiIGVsc2VcbiAgYmVnaW5cbiAgICBsZXQgdHpfc2lnbiA9IGlmIHR6X29mZnNldF9zIDwgMCB8fCB0el91bmtub3duIHRoZW4gJy0nIGVsc2UgJysnIGluXG4gICAgbGV0IHR6X21pbiA9IGFicyAodHpfb2Zmc2V0X3MgLyA2MCkgaW5cbiAgICBsZXQgdHpfaGggPSB0el9taW4gLyA2MCBpblxuICAgIGxldCB0el9tbSA9IHR6X21pbiBtb2QgNjAgaW5cbiAgICBQcmludGYuYnByaW50ZiBidWYgXCIlYyUwMmQ6JTAyZFwiIHR6X3NpZ24gdHpfaGggdHpfbW07XG4gIGVuZDtcbiAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG5sZXQgcHBfcmZjMzMzOSA/c3BhY2UgP2ZyYWNfcyA/dHpfb2Zmc2V0X3MgKCkgcHBmIHQgPVxuICBGb3JtYXQuZnByaW50ZiBwcGYgXCIlc1wiICh0b19yZmMzMzM5ID9zcGFjZSA/ZnJhY19zID90el9vZmZzZXRfcyB0KVxuXG4oKiBQcmV0dHkgcHJpbnRpbmcgKilcblxubGV0IHBwX2h1bWFuID9mcmFjX3M6KGZyYWMgPSAwKSA/dHpfb2Zmc2V0X3MgKCkgcHBmIChfLCBwcyBhcyB0KSA9XG4gIGxldCB0el9vZmZzZXRfcywgdHpfdW5rbm93biA9IG1hdGNoIHR6X29mZnNldF9zIHdpdGhcbiAgfCBTb21lIHR6IC0+IHJmYzMzMzlfYWRqdXN0X3R6X29mZnNldCB0elxuICB8IE5vbmUgLT4gMCwgdHJ1ZVxuICBpblxuICBsZXQgKHksIG0sIGQpLCAoKGhoLCBzcywgbW0pLCB0el9vZmZzZXRfcykgPSB0b19kYXRlX3RpbWUgfnR6X29mZnNldF9zIHQgaW5cbiAgRm9ybWF0LmZwcmludGYgcHBmIFwiJTA0ZC0lMDJkLSUwMmQgJTAyZDolMDJkOiUwMmRcIiB5IG0gZCBoaCBzcyBtbTtcbiAgbGV0IGZyYWMgPSBpZiBmcmFjIDwgMCB0aGVuIDAgZWxzZSAoaWYgZnJhYyA+IDEyIHRoZW4gMTIgZWxzZSBmcmFjKSBpblxuICBpZiBmcmFjIDw+IDAgdGhlbiBGb3JtYXQuZnByaW50ZiBwcGYgXCIuJTAqTGRcIiBmcmFjIChzX2ZyYWNfb2ZfcHMgZnJhYyBwcyk7XG4gIGxldCB0el9zaWduID0gaWYgdHpfb2Zmc2V0X3MgPCAwIHx8IHR6X3Vua25vd24gdGhlbiAnLScgZWxzZSAnKycgaW5cbiAgbGV0IHR6X21pbiA9IGFicyAodHpfb2Zmc2V0X3MgLyA2MCkgaW5cbiAgbGV0IHR6X2hoID0gdHpfbWluIC8gNjAgaW5cbiAgbGV0IHR6X21tID0gdHpfbWluIG1vZCA2MCBpblxuICBGb3JtYXQuZnByaW50ZiBwcGYgXCIgJWMlMDJkOiUwMmRcIiB0el9zaWduIHR6X2hoIHR6X21tO1xuICAoKVxuXG5sZXQgcHAgPSBwcF9odW1hbiB+dHpfb2Zmc2V0X3M6MCAoKVxubGV0IGR1bXAgPSBTcGFuLmR1bXBcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jaGVja19ib3VuZCIsImNhbWxfZ3JlYXRlcmVxdWFsIiwiY2FtbF9ncmVhdGVydGhhbiIsImNhbWxfaW50NjRfYWRkIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkiLCJjYW1sX2ludDY0X2RpdiIsImNhbWxfaW50NjRfbW9kIiwiY2FtbF9pbnQ2NF9tdWwiLCJjYW1sX2ludDY0X29mX2Zsb2F0IiwiY2FtbF9pbnQ2NF9vZl9pbnQzMiIsImNhbWxfaW50NjRfc3ViIiwiY2FtbF9pbnQ2NF90b19mbG9hdCIsImNhbWxfaW50NjRfdG9faW50MzIiLCJjYW1sX2ludF9jb21wYXJlIiwiY2FtbF9sZXNzdGhhbiIsImNhbWxfbGlzdF9vZl9qc19hcnJheSIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfbm90ZXF1YWwiLCJjYW1sX29ial9kdXAiLCJjYW1sX3N0cmluZ19nZXQiLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImNhbWxfY2FsbDMiLCJhMiIsImNhbWxfY2FsbDQiLCJhMyIsImNhbWxfY2FsbDYiLCJhNCIsImE1IiwiY2FtbF9jYWxsNyIsImE2IiwiZ2xvYmFsX2RhdGEiLCJhY2MiLCJwc19jb3VudF9pbl9wcyIsInBzX2NvdW50X2luX25zIiwicHNfY291bnRfaW5fMTAwbnMiLCJwc19jb3VudF9pbl91cyIsInBzX2NvdW50X2luXzEwMHVzIiwicHNfY291bnRfaW5fbXMiLCJwc19jb3VudF9pbl8xMDBtcyIsInBzX2NvdW50X2luX3MiLCJwc19jb3VudF9pbl9taW4iLCJwc19jb3VudF9pbl9ob3VyIiwicHNfY291bnRfaW5fZGF5IiwicHNfZGF5X21heCIsImVwb2NoIiwiemVybyIsIlN0ZGxpYl9Gb3JtYXQiLCJTdGRsaWIiLCJTdGRsaWJfQnVmZmVyIiwiU3RkbGliX1ByaW50ZiIsIlN0ZGxpYl9JbnQ2NCIsIm1pbiIsInN0ZGxpYl9hYnMiLCJuZWciLCJwYXJhbSIsImQiLCJwcyIsImFkZCIsInBzMSIsImQxIiwicHMwIiwiZDAiLCJwc19jbGFtcCIsInN1YiIsInMwIiwiczEiLCJhYnMiLCJzIiwidiIsIm9mX2RfcHMiLCJ1bnNhZmVfb2ZfZF9wcyIsInVuc2FmZV9vZl9kX3BzX29wdGlvbiIsInRvX2RfcHMiLCJvZl9pbnRfcyIsInNlY3MiLCJkYXlfaW50X21pbiIsImRheV9pbnRfbWF4IiwidG9faW50X3MiLCJkYXlzX3MiLCJkYXlfcyIsIm1pbl9pbnRfZmxvYXQiLCJtYXhfaW50X2Zsb2F0Iiwib2ZfZmxvYXRfcyIsImRheXMiLCJyZW1fcyIsIm1hdGNoIiwiZnJhY19zIiwicmVtX3BzIiwiZnJhY19wcyIsInRvX2Zsb2F0X3MiLCJkYXlfcmVtX3BzIiwiZXF1YWwiLCJjb21wYXJlIiwiYyIsInJvdW5kX2RpdiIsImEiLCJiIiwiZnJhY19kaXYiLCJyb3VuZCIsImZyYWMiLCJ0Iiwic2lnbiIsInJwcyIsInRydW5jYXRlIiwidHBzIiwidHJ1bmNhdGVfZG93biIsImNzdF8xIiwiZHVtcCIsInBwZiIsImRpdmlkZV9wcyIsImNhcnJ5IiwiaGkiLCJsbyIsImhpX2QiLCJsb19kIiwiY3N0X2RfcyIsInBwX3VuaXQiLCJoaWdoZXJfc3RyIiwiaGlfc3RyIiwiZnJhY19saW1pdCIsInBwX3VuaXRfaW50ZWdyYWwiLCJoIiwibXMiLCJsIiwiY3N0X2RkIiwiY3N0X2RoIiwiY3N0X2RtaW4iLCJjc3RfZHMiLCJjc3RfZHkiLCJjc3RfbWluIiwicHAiLCJtIiwiY3N0X21zIiwiY3N0X3VzIiwibWF4X2QiLCJyZW1fZCIsInkiLCJvZl9zcGFuIiwic3BhbiIsInRvX3NwYW4iLCJpc19lYXJsaWVyIiwidGhhbiIsImlzX2xhdGVyIiwiYWRkX3NwYW4iLCJzdWJfc3BhbiIsImRpZmYiLCJ0MSIsInQwIiwibWxlbiIsIm9mX2RhdGVfdGltZSIsInR6X29mZnNldF9zIiwic3MiLCJtbSIsImhoIiwiZGF0ZSIsImRheSIsIm1vbnRoIiwieWVhciIsImhoX3BzIiwibW1fcHMiLCJzc19wcyIsInRvX2RhdGVfdGltZSIsIm9wdCIsImxvY2FsIiwiamQiLCJlIiwiaGhfcmVtIiwibW1fcmVtIiwib2ZfZGF0ZSIsInR6IiwidG9fZGF0ZSIsIm9mX3llYXIiLCJ0b195ZWFyIiwibG9jYWxfZCIsIndlZWtkYXlfbnVtIiwiaSIsIndkYXkiLCJ3ZWVrZGF5IiwiY3N0IiwiY3N0X2lucHV0IiwicHBfcmZjMzMzOV9lcnJvciIsImNzIiwicHBfY2hhcnMiLCJwcF9yYW5nZSIsImNzdF9oIiwicmZjMzMzOV9lcnJvcl90b19zdHJpbmciLCJlcnIiLCJyIiwicmZjMzMzOV9zdHJpbmdfZXJyb3IiLCJyZmMzMzM5X2Vycm9yX3RvX21zZyIsIlJGQzMzMzkiLCJkdW1teSIsImVycm9yIiwiZXJyb3JfcG9zIiwicCIsImlzX2RpZ2l0IiwicGFyc2VfZGlnaXRzIiwiY291bnQiLCJwb3MiLCJtYXgiLCJzdG9wIiwiayIsInBhcnNlX2NoYXIiLCJvZl9yZmMzMzM5Iiwic3RyaWN0Iiwic3RhcnQiLCJzX2xlbiIsIm1fcG9zIiwiZF9wb3MiLCJoaF9wb3MiLCJtbV9wb3MiLCJzc19wb3MiLCJkZWNpZGVfcG9zIiwic3dpdGNoZXIiLCJjaGFycyIsInBvdyIsInR6X3BvcyIsInBhcnNlX3R6X21hZyIsIm5leHQiLCJ0el9zIiwibGFzdF9wb3MiLCJ0el9zX29wdCIsImV4biIsInJmYzMzMzlfYWRqdXN0X3R6X29mZnNldCIsInNfZnJhY19vZl9wcyIsImNzdF8wX0xkIiwidG9fcmZjMzMzOSIsInNwYWNlIiwiYnVmIiwidHpfdW5rbm93biIsImR0X3NlcCIsInR6X3NpZ24iLCJ0el9taW4iLCJ0el9oaCIsInR6X21tIiwicHBfcmZjMzMzOSIsInBwX2h1bWFuIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsNkJBQUE7QUFBQSxJQUFBQyxpQkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxzQkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxzQkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLHdCQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxrQkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQU4sR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFSLEdBQUFDLElBQUFFLElBQUFFLElBQUFFLElBQUFFLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBWCxHQUFBQyxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtB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QTtBQUFBLEtBQUFwRSxRQUFBO0FBQUEsS0FBQTlCLElBQUE7QUFBQSxLQUFBNEUsSUFBQTtBQUFBLEtBQUFLLElBQUE7QUFBQSxJQUN4RTtBQUFBLFFBQUFyQyxTQUFpRTtBQUFBLElBRWpFO0FBQUEsYUFBbUQ7QUFBQSxLQUFqQztBQUFBO0FBQUE7QUFBQTtBQUFBLEtBQ2xCLDJDQUFBb0ksVUFBNkQ7QUFBQSxTQUFBQSxVQUFUO0FBQUE7QUFBQTtBQUFBLEtBQUFDLFNBQ3ZDO0FBQUEsS0FBQUMsUUFDYjtBQUFBLEtBQUFDLFFBQ0E7QUFBQSxJQUNBO0FBQUEsSUFBcUQ7QUFBQTtBQUFBLFlBRzlDO0FBQUEsWUFBQXhHLEtBQUE7QUFBQSxHQUEwQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVEanNCbkMiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjozMTY1MSwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiIuY29vcmRpbmF0ZS5vYmpzL2pzb28vZGVmYXVsdC9jb29yZGluYXRlLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvd29ya3NwYWNlX3Jvb3Qvb2NhbWwtY29vcmRpbmF0ZS9saWIvY29vcmRpbmF0ZS5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBDb3B5cmlnaHQgKGMpIDIwMjUgVGhvbWFzIEdhemFnbmFpcmUuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbigqKiBBc3Ryb2R5bmFtaWNzIGNvb3JkaW5hdGUgZnJhbWUgdHJhbnNmb3Jtcy4gKilcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG4oKiAgVHlwZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxudHlwZSB2ZWMzID0geyB4IDogZmxvYXQ7IHkgOiBmbG9hdDsgeiA6IGZsb2F0IH1cbnR5cGUgZ2VvZGV0aWMgPSB7IGxhdCA6IGZsb2F0OyBsb24gOiBmbG9hdDsgYWx0IDogZmxvYXQgfVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcbigqICBDb25zdGFudHMgKFdHUy04NCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG5sZXQgZWFydGhfcmFkaXVzID0gNjM3OC4xMzdcbmxldCBlYXJ0aF9mbGF0dGVuaW5nID0gMS4gLy4gMjk4LjI1NzIyMzU2M1xubGV0IGVhcnRoX211ID0gMzk4NjAwLjQ0MThcbmxldCBlYXJ0aF9qMiA9IDAuMDAxMDgyNjNcbmxldCBlYXJ0aF9yb3RhdGlvbl9yYXRlID0gNy4yOTIxMTUxNDY3ZS01XG5sZXQgdHdvcGkgPSAyLiAqLiBGbG9hdC5waVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcbigqICBVdGlsaXR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG5sZXQgdmVjMyB4IHkgeiA9IHsgeDsgeTsgeiB9XG5sZXQgdmVjM19sZW5ndGggdiA9IHNxcnQgKCh2LnggKi4gdi54KSArLiAodi55ICouIHYueSkgKy4gKHYueiAqLiB2LnopKVxuXG5sZXQgbm9ybWFsaXplX2FuZ2xlIGEgPVxuICBsZXQgYSA9IEZsb2F0LnJlbSBhIHR3b3BpIGluXG4gIGlmIGEgPCAwLiB0aGVuIGEgKy4gdHdvcGkgZWxzZSBhXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuKCogIFRpbWUgY29udmVyc2lvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbmxldCBqdWxpYW5fZGF0ZV9vZl91bml4IHQgPSAodCAvLiA4NjQwMC4pICsuIDI0NDA1ODcuNVxubGV0IHVuaXhfb2ZfanVsaWFuX2RhdGUgamQgPSAoamQgLS4gMjQ0MDU4Ny41KSAqLiA4NjQwMC5cblxubGV0IGp1bGlhbl9jZW50dXJpZXMgdW5peF90ID1cbiAgbGV0IGpkID0ganVsaWFuX2RhdGVfb2ZfdW5peCB1bml4X3QgaW5cbiAgKGpkIC0uIDI0NTE1NDUuMCkgLy4gMzY1MjUuMFxuXG4oKiogR01TVCB1c2luZyB0aGUgSUFVIDE5ODIgbW9kZWwuXG5cbiAgICBSZWZlcmVuY2U6IFZhbGxhZG8sIEVxLiAzLTQ3LiBHTVNUID0gNjczMTAuNTQ4NDEgKyAoODc2NjAwaCArXG4gICAgODY0MDE4NC44MTI4NjYpVFxuICAgICsgMC4wOTMxMDQgVF4yIC0gNi4yZS02IFReMyB3aGVyZSBUIGlzIEp1bGlhbiBjZW50dXJpZXMgZnJvbSBKMjAwMC4wLiAqKVxubGV0IGdtc3Rfb2ZfdW5peCB1bml4X3RpbWUgPVxuICBsZXQgdCA9IGp1bGlhbl9jZW50dXJpZXMgdW5peF90aW1lIGluXG4gIGxldCBnbXN0X3NlYyA9XG4gICAgNjczMTAuNTQ4NDFcbiAgICArLiAoKCg4NzY2MDAuMCAqLiAzNjAwLikgKy4gODY0MDE4NC44MTI4NjYpICouIHQpXG4gICAgKy4gKDAuMDkzMTA0ICouIHQgKi4gdClcbiAgICAtLiAoNi4yZS02ICouIHQgKi4gdCAqLiB0KVxuICBpblxuICBub3JtYWxpemVfYW5nbGUgKGdtc3Rfc2VjICouIHR3b3BpIC8uIDg2NDAwLilcblxubGV0IGdtc3QgcHRpbWUgPSBnbXN0X29mX3VuaXggKFB0aW1lLnRvX2Zsb2F0X3MgcHRpbWUpXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuKCogIEZyYW1lIHRyYW5zZm9ybXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqKiBaLWF4aXMgcm90YXRpb24gYnkgYW5nbGUgdGhldGEuIFJ6KM64KSA9XG4gICAgW1tjb3MgzrgsIHNpbiDOuCwgMF0sIFstc2luIM64LCBjb3MgzrgsIDBdLCBbMCwgMCwgMV1dICopXG5sZXQgcm90YXRlX3ogdGhldGEgdiA9XG4gIGxldCBjID0gY29zIHRoZXRhIGFuZCBzID0gc2luIHRoZXRhIGluXG4gIHsgeCA9IChjICouIHYueCkgKy4gKHMgKi4gdi55KTsgeSA9ICgtLnMgKi4gdi54KSArLiAoYyAqLiB2LnkpOyB6ID0gdi56IH1cblxubGV0IHRlbWVfdG9fZWNlZiB+Z21zdCB2ID0gcm90YXRlX3ogZ21zdCB2XG5sZXQgZWNlZl90b190ZW1lIH5nbXN0IHYgPSByb3RhdGVfeiAoLS5nbXN0KSB2XG5sZXQgajIwMDBfdG9fZWNlZiB+Z21zdCB2ID0gcm90YXRlX3ogZ21zdCB2XG5sZXQgZWNlZl90b19qMjAwMCB+Z21zdCB2ID0gcm90YXRlX3ogKC0uZ21zdCkgdlxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcbigqICBHZW9kZXRpYyBjb252ZXJzaW9ucyAoV0dTLTg0IGVsbGlwc29pZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiogQm93cmluZydzIGl0ZXJhdGl2ZSBtZXRob2QgZm9yIEVDRUYg4oaSIGdlb2RldGljLlxuXG4gICAgUmVmZXJlbmNlOiBWYWxsYWRvIEFsZ29yaXRobSAxMiwgTW9udGVuYnJ1Y2sgJiBHaWxsIMKnNS4zLiBDb252ZXJnZXMgaW4gMi0zXG4gICAgaXRlcmF0aW9ucyBmb3IgdHlwaWNhbCBwb3NpdGlvbnMuICopXG5sZXQgZWNlZl90b19nZW9kZXRpYyB2ID1cbiAgbGV0IGEgPSBlYXJ0aF9yYWRpdXMgaW5cbiAgbGV0IGYgPSBlYXJ0aF9mbGF0dGVuaW5nIGluXG4gIGxldCBlMiA9ICgyLiAqLiBmKSAtLiAoZiAqLiBmKSBpblxuICAoKiBmaXJzdCBlY2NlbnRyaWNpdHkgc3F1YXJlZCAqKVxuICBsZXQgcCA9IHNxcnQgKCh2LnggKi4gdi54KSArLiAodi55ICouIHYueSkpIGluXG4gIGxldCBsb25fcmFkID0gYXRhbjIgdi55IHYueCBpblxuICAoKiBJbml0aWFsIGxhdGl0dWRlIGVzdGltYXRlICopXG4gIGxldCBsYXRfcmFkID0gcmVmIChhdGFuMiB2LnogcCkgaW5cbiAgKCogSXRlcmF0ZSBCb3dyaW5nJ3MgbWV0aG9kICopXG4gIGZvciBfID0gMSB0byA1IGRvXG4gICAgbGV0IHNpbl9sYXQgPSBzaW4gIWxhdF9yYWQgaW5cbiAgICBsZXQgbiA9IGEgLy4gc3FydCAoMS4gLS4gKGUyICouIHNpbl9sYXQgKi4gc2luX2xhdCkpIGluXG4gICAgbGF0X3JhZCA6PSBhdGFuMiAodi56ICsuIChlMiAqLiBuICouIHNpbl9sYXQpKSBwXG4gIGRvbmU7XG4gIGxldCBzaW5fbGF0ID0gc2luICFsYXRfcmFkIGluXG4gIGxldCBuID0gYSAvLiBzcXJ0ICgxLiAtLiAoZTIgKi4gc2luX2xhdCAqLiBzaW5fbGF0KSkgaW5cbiAgbGV0IGFsdCA9XG4gICAgaWYgYWJzX2Zsb2F0IChjb3MgIWxhdF9yYWQpID4gMWUtMTAgdGhlbiAocCAvLiBjb3MgIWxhdF9yYWQpIC0uIG5cbiAgICBlbHNlIChhYnNfZmxvYXQgdi56IC8uIHNpbl9sYXQpIC0uIChuICouICgxLiAtLiBlMikpXG4gIGluXG4gIHsgbGF0ID0gIWxhdF9yYWQgKi4gMTgwLiAvLiBGbG9hdC5waTsgbG9uID0gbG9uX3JhZCAqLiAxODAuIC8uIEZsb2F0LnBpOyBhbHQgfVxuXG4oKiogR2VvZGV0aWMg4oaSIEVDRUYuXG5cbiAgICBSZWZlcmVuY2U6IFZhbGxhZG8gQWxnb3JpdGhtIDExLiAqKVxubGV0IGdlb2RldGljX3RvX2VjZWYgZyA9XG4gIGxldCBhID0gZWFydGhfcmFkaXVzIGluXG4gIGxldCBmID0gZWFydGhfZmxhdHRlbmluZyBpblxuICBsZXQgZTIgPSAoMi4gKi4gZikgLS4gKGYgKi4gZikgaW5cbiAgbGV0IGxhdF9yYWQgPSBnLmxhdCAqLiBGbG9hdC5waSAvLiAxODAuIGluXG4gIGxldCBsb25fcmFkID0gZy5sb24gKi4gRmxvYXQucGkgLy4gMTgwLiBpblxuICBsZXQgc2luX2xhdCA9IHNpbiBsYXRfcmFkIGluXG4gIGxldCBjb3NfbGF0ID0gY29zIGxhdF9yYWQgaW5cbiAgbGV0IG4gPSBhIC8uIHNxcnQgKDEuIC0uIChlMiAqLiBzaW5fbGF0ICouIHNpbl9sYXQpKSBpblxuICB7XG4gICAgeCA9IChuICsuIGcuYWx0KSAqLiBjb3NfbGF0ICouIGNvcyBsb25fcmFkO1xuICAgIHkgPSAobiArLiBnLmFsdCkgKi4gY29zX2xhdCAqLiBzaW4gbG9uX3JhZDtcbiAgICB6ID0gKChuICouICgxLiAtLiBlMikpICsuIGcuYWx0KSAqLiBzaW5fbGF0O1xuICB9XG5cbmxldCB0ZW1lX3RvX2dlb2RldGljIH5nbXN0IHYgPSBlY2VmX3RvX2dlb2RldGljICh0ZW1lX3RvX2VjZWYgfmdtc3QgdilcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG4oKiAgUHJldHR5LXByaW50aW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxubGV0IHBwX3ZlYzMgcHBmIHYgPSBGbXQucGYgcHBmIFwiKCUuM2YsICUuM2YsICUuM2YpXCIgdi54IHYueSB2LnpcblxubGV0IHBwX2dlb2RldGljIHBwZiBnID1cbiAgRm10LnBmIHBwZiBcIiUuNGbCsCVzICUuNGbCsCVzICUuM2Yga21cIiAoYWJzX2Zsb2F0IGcubGF0KVxuICAgIChpZiBnLmxhdCA+PSAwLiB0aGVuIFwiTlwiIGVsc2UgXCJTXCIpXG4gICAgKGFic19mbG9hdCBnLmxvbilcbiAgICAoaWYgZy5sb24gPj0gMC4gdGhlbiBcIkVcIiBlbHNlIFwiV1wiKVxuICAgIGcuYWx0XG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2FsbDMiLCJmIiwiYTAiLCJhMSIsImEyIiwiY2FtbF9jYWxsNSIsImEzIiwiYTQiLCJnbG9iYWxfZGF0YSIsIkZtdCIsIlN0ZGxpYl9GbG9hdCIsIlB0aW1lIiwidHdvcGkiLCJ2ZWMzIiwieCIsInkiLCJ6IiwidmVjM19sZW5ndGgiLCJ2Iiwibm9ybWFsaXplX2FuZ2xlIiwiYSIsImp1bGlhbl9kYXRlX29mX3VuaXgiLCJ0IiwidW5peF9vZl9qdWxpYW5fZGF0ZSIsImpkIiwianVsaWFuX2NlbnR1cmllcyIsInVuaXhfdCIsImdtc3Rfb2ZfdW5peCIsInVuaXhfdGltZSIsImdtc3Rfc2VjIiwiZ21zdCIsInB0aW1lIiwicm90YXRlX3oiLCJ0aGV0YSIsImMiLCJzIiwidGVtZV90b19lY2VmIiwiZWNlZl90b190ZW1lIiwiajIwMDBfdG9fZWNlZiIsImVjZWZfdG9fajIwMDAiLCJlY2VmX3RvX2dlb2RldGljIiwicCIsImxvbl9yYWQiLCJsYXRfcmFkIiwiZm9yJCIsInNpbl9sYXQiLCJuIiwiYWx0IiwiZ2VvZGV0aWNfdG9fZWNlZiIsImciLCJjb3NfbGF0IiwidGVtZV90b19nZW9kZXRpYyIsImNzdCIsInBwX3ZlYzMiLCJwcGYiLCJwcF9nZW9kZXRpYyJdLCJtYXBwaW5ncyI6Ik9BQUFBLFVBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQyxJQUFBQyxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUosR0FBQUMsSUFBQUMsSUFBQUMsSUFBQUUsSUFBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLE1BQUE7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ZSI6MzE4MzMsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLmdsb2JlLm9ianMvanNvby9kZWZhdWx0L2dsb2JlLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvd29ya3NwYWNlX3Jvb3Qvb2NhbWwtZ2xvYmUvbGliL21hdGgubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgQ29weXJpZ2h0IChjKSAyMDI1IFRob21hcyBHYXphZ25haXJlLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG4oKiogTGluZWFyIGFsZ2VicmEgcHJpbWl0aXZlcyBmb3IgM0QgcmVuZGVyaW5nOiBWZWMzIGFuZCBNYXQ0LiAqKVxuXG5tb2R1bGUgVmVjMyA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IHggOiBmbG9hdDsgeSA6IGZsb2F0OyB6IDogZmxvYXQgfVxuXG4gIGxldCBjcmVhdGUgeCB5IHogPSB7IHg7IHk7IHogfVxuICBsZXQgemVybyA9IHsgeCA9IDAuOyB5ID0gMC47IHogPSAwLiB9XG4gIGxldCBhZGQgYSBiID0geyB4ID0gYS54ICsuIGIueDsgeSA9IGEueSArLiBiLnk7IHogPSBhLnogKy4gYi56IH1cbiAgbGV0IHN1YiBhIGIgPSB7IHggPSBhLnggLS4gYi54OyB5ID0gYS55IC0uIGIueTsgeiA9IGEueiAtLiBiLnogfVxuICBsZXQgc2NhbGUgcyB2ID0geyB4ID0gcyAqLiB2Lng7IHkgPSBzICouIHYueTsgeiA9IHMgKi4gdi56IH1cbiAgbGV0IGRvdCBhIGIgPSAoYS54ICouIGIueCkgKy4gKGEueSAqLiBiLnkpICsuIChhLnogKi4gYi56KVxuXG4gIGxldCBjcm9zcyBhIGIgPVxuICAgIHtcbiAgICAgIHggPSAoYS55ICouIGIueikgLS4gKGEueiAqLiBiLnkpO1xuICAgICAgeSA9IChhLnogKi4gYi54KSAtLiAoYS54ICouIGIueik7XG4gICAgICB6ID0gKGEueCAqLiBiLnkpIC0uIChhLnkgKi4gYi54KTtcbiAgICB9XG5cbiAgbGV0IGxlbmd0aCB2ID0gc3FydCAoZG90IHYgdilcblxuICBsZXQgbm9ybWFsaXplIHYgPVxuICAgIGxldCBsID0gbGVuZ3RoIHYgaW5cbiAgICBpZiBsID4gMWUtMTAgdGhlbiBzY2FsZSAoMS4gLy4gbCkgdiBlbHNlIHplcm9cblxuICBsZXQgbmVnYXRlIHYgPSB7IHggPSAtLnYueDsgeSA9IC0udi55OyB6ID0gLS52LnogfVxuZW5kXG5cbm1vZHVsZSBNYXQ0ID0gc3RydWN0XG4gIHR5cGUgdCA9IGZsb2F0IGFycmF5XG4gICgqKiBDb2x1bW4tbWFqb3IgNHg0IG1hdHJpeCBzdG9yZWQgYXMgYSBmbGF0IDE2LWVsZW1lbnQgYXJyYXkuIExheW91dDpcbiAgICAgIFttMCBtMSBtMiBtMyB8IG00IG01IG02IG03IHwgbTggbTkgbTEwIG0xMSB8IG0xMiBtMTMgbTE0IG0xNV0gd2hlcmUgZWFjaFxuICAgICAgZ3JvdXAgb2YgNCBpcyBvbmUgY29sdW1uLiAqKVxuXG4gIGxldCBpZGVudGl0eSAoKSA9XG4gICAgW3wgMS47IDAuOyAwLjsgMC47IDAuOyAxLjsgMC47IDAuOyAwLjsgMC47IDEuOyAwLjsgMC47IDAuOyAwLjsgMS4gfF1cblxuICBsZXQgbXVsdGlwbHkgKGEgOiB0KSAoYiA6IHQpIDogdCA9XG4gICAgbGV0IHIgPSBBcnJheS5tYWtlIDE2IDAuIGluXG4gICAgZm9yIGNvbCA9IDAgdG8gMyBkb1xuICAgICAgZm9yIHJvdyA9IDAgdG8gMyBkb1xuICAgICAgICBsZXQgdiA9IHJlZiAwLiBpblxuICAgICAgICBmb3IgayA9IDAgdG8gMyBkb1xuICAgICAgICAgIHYgOj0gIXYgKy4gKGEuKChrICogNCkgKyByb3cpICouIGIuKChjb2wgKiA0KSArIGspKVxuICAgICAgICBkb25lO1xuICAgICAgICByLigoY29sICogNCkgKyByb3cpIDwtICF2XG4gICAgICBkb25lXG4gICAgZG9uZTtcbiAgICByXG5cbiAgbGV0IHBlcnNwZWN0aXZlIH5mb3Z5IH5hc3BlY3Qgfm5lYXIgfmZhciA9XG4gICAgbGV0IGYgPSAxLiAvLiB0YW4gKGZvdnkgLy4gMi4pIGluXG4gICAgbGV0IG5mID0gMS4gLy4gKG5lYXIgLS4gZmFyKSBpblxuICAgIFt8XG4gICAgICBmIC8uIGFzcGVjdDtcbiAgICAgIDAuO1xuICAgICAgMC47XG4gICAgICAwLjtcbiAgICAgIDAuO1xuICAgICAgZjtcbiAgICAgIDAuO1xuICAgICAgMC47XG4gICAgICAwLjtcbiAgICAgIDAuO1xuICAgICAgKGZhciArLiBuZWFyKSAqLiBuZjtcbiAgICAgIC0xLjtcbiAgICAgIDAuO1xuICAgICAgMC47XG4gICAgICAyLiAqLiBmYXIgKi4gbmVhciAqLiBuZjtcbiAgICAgIDAuO1xuICAgIHxdXG5cbiAgbGV0IGxvb2tfYXQgfmV5ZSB+Y2VudGVyIH51cCA9XG4gICAgbGV0IG9wZW4gVmVjMyBpblxuICAgIGxldCBmID0gbm9ybWFsaXplIChzdWIgY2VudGVyIGV5ZSkgaW5cbiAgICBsZXQgcyA9IG5vcm1hbGl6ZSAoY3Jvc3MgZiB1cCkgaW5cbiAgICBsZXQgdSA9IGNyb3NzIHMgZiBpblxuICAgIFt8XG4gICAgICBzLng7XG4gICAgICB1Lng7XG4gICAgICAtLmYueDtcbiAgICAgIDAuO1xuICAgICAgcy55O1xuICAgICAgdS55O1xuICAgICAgLS5mLnk7XG4gICAgICAwLjtcbiAgICAgIHMuejtcbiAgICAgIHUuejtcbiAgICAgIC0uZi56O1xuICAgICAgMC47XG4gICAgICAtLmRvdCBzIGV5ZTtcbiAgICAgIC0uZG90IHUgZXllO1xuICAgICAgZG90IGYgZXllO1xuICAgICAgMS47XG4gICAgfF1cblxuICBsZXQgcm90YXRlX3ggYW5nbGUgPVxuICAgIGxldCBjID0gY29zIGFuZ2xlIGFuZCBzID0gc2luIGFuZ2xlIGluXG4gICAgW3wgMS47IDAuOyAwLjsgMC47IDAuOyBjOyBzOyAwLjsgMC47IC0uczsgYzsgMC47IDAuOyAwLjsgMC47IDEuIHxdXG5cbiAgbGV0IHJvdGF0ZV95IGFuZ2xlID1cbiAgICBsZXQgYyA9IGNvcyBhbmdsZSBhbmQgcyA9IHNpbiBhbmdsZSBpblxuICAgIFt8IGM7IDAuOyAtLnM7IDAuOyAwLjsgMS47IDAuOyAwLjsgczsgMC47IGM7IDAuOyAwLjsgMC47IDAuOyAxLiB8XVxuXG4gIGxldCB0b19mbG9hdF9hcnJheSAobSA6IHQpIDogZmxvYXQgYXJyYXkgPSBBcnJheS5jb3B5IG1cbmVuZFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NoZWNrX2JvdW5kIiwiU3RkbGliX0FycmF5IiwiY3JlYXRlIiwieCIsInkiLCJ6IiwiYWRkIiwiYSIsImIiLCJzdWIiLCJzY2FsZSIsInMiLCJ2IiwiZG90IiwiY3Jvc3MiLCJsZW5ndGgiLCJ6ZXJvIiwibm9ybWFsaXplIiwibCIsIm5lZ2F0ZSIsImlkZW50aXR5IiwicGFyYW0iLCJtdWx0aXBseSIsInIiLCJjb2wiLCJyb3ciLCJrIiwicGVyc3BlY3RpdmUiLCJmb3Z5IiwiYXNwZWN0IiwibmVhciIsImZhciIsImYiLCJuZiIsImxvb2tfYXQiLCJleWUiLCJjZW50ZXIiLCJ1cCIsInUiLCJyb3RhdGVfeCIsImFuZ2xlIiwiYyIsInJvdGF0ZV95IiwidG9fZmxvYXRfYXJyYXkiLCJtIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLFlBQUFDLE9BQUFDLEdBQUFDLEdBQUFDLEdDVXFCLHNCQUFXO0FBQUEsWUFBQUMsSUFBQUMsR0FBQUMsR0FFQSxvREFBa0M7QUFBQSxZQUFBQyxJQUFBRixHQUFBQyxHQUNsQyxvREFBa0M7QUFBQSxZQUFBRSxNQUFBQyxHQUFBQyxHQUNsQywyQ0FBOEI7QUFBQSxZQUFBQyxJQUFBTixHQUFBQyxHQUNGO0FBQUEsWUFBQU0sTUFBQVAsR0FBQUM7QUFBQUEsSUFJdEI7QUFBQTtBQUFBO0FBQUE7QUFBQSxHQUdqQztBQUFBLFlBQUFPLE9BQUFILEdBRWlCLE9BQUwsVUFBSyxVQUFTO0FBQUEsT0FBQUksT0R4Qi9CO0FBQUEsWUFBQUMsVUFBQUw7QUFBQUEsUUFBQU0sSUMyQlk7QUFBQSxJQUNSLG1CQUFpQyx1QkFBWTtBQUFBO0FBQUEsWUFBQUMsT0FBQVAsR0FFckIscUNBQXdCO0FBQUE7QUFBQSxRRDlCcEQ7QUFBQSxZQUFBUSxTQUFBQyxPQ3dDSSw4QkFBb0U7QUFBQSxZQUFBQyxTQUFBZixHQUFBQztBQUFBQSxRQUFBZSxJQUc1RCxpQ0FBQUMsTUFDUjtBQUFBO0FBQUEsU0FBQUMsTUFDRTtBQUFBO0FBQUE7QUFBQSxVQUFBYixNQUVFLElBQUFjLElBQUE7QUFBQTtBQUFBO0FBQUEsWUFDRTtBQUFBLFlBQWtEO0FBQUEsWUFBakI7QUFBQSxRQUFBZCxJQUFyQjtBQUFBLFlBQXVDO0FBQUE7QUFBQSxnQkFFckQ7QUFBQTtBQUFBLGdCQUF5QjtBQUFBO0FBQUE7QUFBQSxzQkFHN0I7QUFBQSxRQUg2QjtBQUFBO0FBQUE7QUFBQSxPQUY0QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsR0FLeEQ7QUFBQSxZQUFBZSxZQUFBQyxNQUFBQyxRQUFBQyxNQUFBQztBQUFBQSxRQUFBQyxJQUdPLEtBQU0scUJBQUFDLEtBQ0w7QUFBQSxJQUVJO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxHQWdCWDtBQUFBLFlBQUFDLFFBQUFDLEtBQUFDLFFBQUFDO0FBQUFBO0FBQUFBLEtBQUFMLElBSU0sVUFBVTtBQUFBLEtBQUFyQixJQUNWLFVBQVU7QUFBQSxLQUFBMkIsSUFDVjtBQUFBLFNBZ0JOO0FBQUEsU0FERTtBQUFBLFNBREE7QUFBQSxJQVZHO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxHQWNMO0FBQUEsWUFBQUMsU0FBQUM7QUFBQUEsUUFBQUMsSUFHTSxpQkFBQTlCLElBQWtCO0FBQUEsSUFDYztBQUFBLEdBQTBCO0FBQUEsWUFBQStCLFNBQUFGO0FBQUFBLFFBQUFDLElBRzFELGlCQUFBOUIsSUFBa0I7QUFBQSxJQUNiO0FBQUEsR0FBcUQ7QUFBQSxZQUFBZ0MsZUFBQUMsR0FFekIsb0NBQVk7QUFBQSxHRDdHekQiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjozMTk3NSwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiIuZ2xvYmUub2Jqcy9qc29vL2RlZmF1bHQvZ2xvYmUuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9vY2FtbC1nbG9iZS9saWIvc3BoZXJlLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIENvcHlyaWdodCAoYykgMjAyNSBUaG9tYXMgR2F6YWduYWlyZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuKCoqIFBvaW50IGNsb3VkIGdlbmVyYXRpb24gZm9yIHRoZSBkb3QtY2xvdWQgZ2xvYmUuXG5cbiAgICBVc2VzIGdvbGRlbiBzcGlyYWwgZGlzdHJpYnV0aW9uIGZvciBldmVuIHNwYWNpbmcsIHdpdGggYnJpZ2h0bmVzcyBiYXNlZCBvblxuICAgIHBvbHlnb24tdHJhY2VkIGNvbnRpbmVudCBvdXRsaW5lcy4gUG9pbnRzIG5lYXIgY29hc3RsaW5lcyBnbG93IGJyaWdodGVzdCxcbiAgICBjcmVhdGluZyBhIHJlY29nbml6YWJsZSBFYXJ0aCBzaWxob3VldHRlLiAqKVxuXG50eXBlIHBvaW50ID0geyBwb3MgOiBNYXRoLlZlYzMudDsgYnJpZ2h0bmVzcyA6IGZsb2F0IH1cblxuKCogLS0tIFJheS1jYXN0aW5nIHBvaW50LWluLXBvbHlnb24gdGVzdCAtLS0gKilcblxubGV0IHBvaW50X2luX3BvbHlnb24gbGF0IGxvbiAodmVydGljZXMgOiAoZmxvYXQgKiBmbG9hdCkgYXJyYXkpID1cbiAgbGV0IG4gPSBBcnJheS5sZW5ndGggdmVydGljZXMgaW5cbiAgaWYgbiA8IDMgdGhlbiBmYWxzZVxuICBlbHNlXG4gICAgbGV0IGluc2lkZSA9IHJlZiBmYWxzZSBpblxuICAgIGxldCBqID0gcmVmIChuIC0gMSkgaW5cbiAgICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICAgIGxldCBsYXRfaSwgbG9uX2kgPSB2ZXJ0aWNlcy4oaSkgaW5cbiAgICAgIGxldCBsYXRfaiwgbG9uX2ogPSB2ZXJ0aWNlcy4oIWopIGluXG4gICAgICBpZiBsYXRfaSA+IGxhdCA8PiAobGF0X2ogPiBsYXQpIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IHggPVxuICAgICAgICAgIGxvbl9pICsuICgobGF0IC0uIGxhdF9pKSAqLiAobG9uX2ogLS4gbG9uX2kpIC8uIChsYXRfaiAtLiBsYXRfaSkpXG4gICAgICAgIGluXG4gICAgICAgIGlmIGxvbiA8IHggdGhlbiBpbnNpZGUgOj0gbm90ICFpbnNpZGVcbiAgICAgIGVuZDtcbiAgICAgIGogOj0gaVxuICAgIGRvbmU7XG4gICAgIWluc2lkZVxuXG4oKiAtLS0gU3F1YXJlZCBkaXN0YW5jZSBmcm9tIHBvaW50IHRvIGxpbmUgc2VnbWVudCAtLS0gKilcblxubGV0IHBvaW50X3RvX3NlZ19kaXN0X3NxIHB4IHB5IGF4IGF5IGJ4IGJ5ID1cbiAgbGV0IGR4ID0gYnggLS4gYXggYW5kIGR5ID0gYnkgLS4gYXkgaW5cbiAgbGV0IGxlbl9zcSA9IChkeCAqLiBkeCkgKy4gKGR5ICouIGR5KSBpblxuICBpZiBsZW5fc3EgPCAxZS0xMCB0aGVuXG4gICAgbGV0IGV4ID0gcHggLS4gYXggYW5kIGV5ID0gcHkgLS4gYXkgaW5cbiAgICAoZXggKi4gZXgpICsuIChleSAqLiBleSlcbiAgZWxzZVxuICAgIGxldCB0ID0gKCgocHggLS4gYXgpICouIGR4KSArLiAoKHB5IC0uIGF5KSAqLiBkeSkpIC8uIGxlbl9zcSBpblxuICAgIGxldCB0ID0gRmxvYXQubWF4IDAuIChGbG9hdC5taW4gMS4gdCkgaW5cbiAgICBsZXQgY3ggPSBheCArLiAodCAqLiBkeCkgYW5kIGN5ID0gYXkgKy4gKHQgKi4gZHkpIGluXG4gICAgbGV0IGV4ID0gcHggLS4gY3ggYW5kIGV5ID0gcHkgLS4gY3kgaW5cbiAgICAoZXggKi4gZXgpICsuIChleSAqLiBleSlcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG4oKiAgQ29udGluZW50IHBvbHlnb25zIOKAlCAobGF0aXR1ZGUsIGxvbmdpdHVkZSkgdmVydGV4IGFycmF5cyAgICAgICAgICAgKilcbigqICBUcmFjZWQgdG8gfjXCsCBhY2N1cmFjeTsgZW5vdWdoIGZvciAzMGstcG9pbnQgY2xvdWQgcmVjb2duaXRpb24uICAgKilcbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG5sZXQgYWZyaWNhID1cbiAgW3xcbiAgICAoMzUuLCAtNS4pO1xuICAgICgzNy4sIDEwLik7XG4gICAgKDMyLiwgMTMuKTtcbiAgICAoMzEuLCAyNS4pO1xuICAgICgzMC4sIDMzLik7XG4gICAgKDIyLiwgMzcuKTtcbiAgICAoMTIuLCA0NC4pO1xuICAgICgyLiwgNTEuKTtcbiAgICAoLTIuLCA0Mi4pO1xuICAgICgtNy4sIDQwLik7XG4gICAgKC0xMS4sIDQwLik7XG4gICAgKC0xNi4sIDQxLik7XG4gICAgKC0yNS4sIDM1Lik7XG4gICAgKC0yNy4sIDMzLik7XG4gICAgKC0zNS4sIDI2Lik7XG4gICAgKC0zNC4sIDE4Lik7XG4gICAgKC0yOS4sIDE3Lik7XG4gICAgKC0yMi4sIDE0Lik7XG4gICAgKC0xNy4sIDEyLik7XG4gICAgKC02LiwgMTIuKTtcbiAgICAoNC4sIDEwLik7XG4gICAgKDYuLCAzLik7XG4gICAgKDUuLCAtMy4pO1xuICAgICg1LiwgLTguKTtcbiAgICAoOC4sIC0xNC4pO1xuICAgICgxMi4sIC0xNy4pO1xuICAgICgxNS4sIC0xNy4pO1xuICAgICgyMS4sIC0xNy4pO1xuICAgICgyOC4sIC0xMy4pO1xuICAgICgzMy4sIC04Lik7XG4gIHxdXG5cbmxldCBldXJhc2lhID1cbiAgW3xcbiAgICAoKiBJYmVyaWEg4oaSIE5XIEV1cm9wZSAqKVxuICAgICgzNi4sIC0xMC4pO1xuICAgICgzOS4sIC05Lik7XG4gICAgKDQ0LiwgLTkuKTtcbiAgICAoNDQuLCAtMi4pO1xuICAgICg0OC4sIC01Lik7XG4gICAgKDUxLiwgMi4pO1xuICAgICg1NC4sIDguKTtcbiAgICAoNTcuLCAxMC4pO1xuICAgICgqIFNjYW5kaW5hdmlhICopXG4gICAgKDU4LiwgNi4pO1xuICAgICg2Mi4sIDUuKTtcbiAgICAoNjYuLCAxNC4pO1xuICAgICg3MS4sIDI3Lik7XG4gICAgKCogQXJjdGljIFJ1c3NpYSAqKVxuICAgICg2OS4sIDM0Lik7XG4gICAgKDY2LiwgNDQuKTtcbiAgICAoNjkuLCA1OC4pO1xuICAgICg3My4sIDgwLik7XG4gICAgKDc2LiwgOTcuKTtcbiAgICAoNzMuLCAxMTUuKTtcbiAgICAoNzIuLCAxMzUuKTtcbiAgICAoNzAuLCAxNTAuKTtcbiAgICAoNjYuLCAxNzAuKTtcbiAgICAoKiBSdXNzaWFuIEZhciBFYXN0ICopXG4gICAgKDYwLiwgMTY1Lik7XG4gICAgKDU2LiwgMTYyLik7XG4gICAgKDUzLiwgMTU5Lik7XG4gICAgKDUwLiwgMTQwLik7XG4gICAgKCogTkUgQXNpYSAqKVxuICAgICg0NS4sIDE0Mi4pO1xuICAgICg0My4sIDEzNS4pO1xuICAgICgzOS4sIDEyNS4pO1xuICAgICgzNS4sIDEyNi4pO1xuICAgICgzMS4sIDEyMi4pO1xuICAgICgqIFNFIENoaW5hICopXG4gICAgKDI1LiwgMTE5Lik7XG4gICAgKDIyLiwgMTEzLik7XG4gICAgKDIyLiwgMTA4Lik7XG4gICAgKCogU0UgQXNpYSBtYWlubGFuZCAqKVxuICAgICgxNi4sIDEwOC4pO1xuICAgICgxMC4sIDEwNy4pO1xuICAgICg4LiwgMTA1Lik7XG4gICAgKDEuLCAxMDQuKTtcbiAgICAoKiBNYWxheSBQZW5pbnN1bGEg4oaSIE15YW5tYXIgKilcbiAgICAoNy4sIDEwMC4pO1xuICAgICgxNC4sIDk5Lik7XG4gICAgKDE2LiwgOTcuKTtcbiAgICAoMjEuLCA5Mi4pO1xuICAgICgqIEluZGlhICopXG4gICAgKDIyLiwgODguKTtcbiAgICAoMTguLCA4NC4pO1xuICAgICgxMy4sIDgwLik7XG4gICAgKDguLCA3Ny4pO1xuICAgICgxMC4sIDc2Lik7XG4gICAgKDE1LiwgNzQuKTtcbiAgICAoMjEuLCA3My4pO1xuICAgICgyNC4sIDY4Lik7XG4gICAgKCogUGFraXN0YW4g4oaSIElyYW4gKilcbiAgICAoMjUuLCA2Mi4pO1xuICAgICgyNi4sIDU3Lik7XG4gICAgKCogUGVyc2lhbiBHdWxmIOKGkiBJcmFxICopXG4gICAgKDMwLiwgNDguKTtcbiAgICAoMzMuLCA0NC4pO1xuICAgICgzNy4sIDM2Lik7XG4gICAgKCogVHVya2V5IOKGkiBNZWRpdGVycmFuZWFuICopXG4gICAgKDM3LiwgMzAuKTtcbiAgICAoMzYuLCAyOC4pO1xuICAgICgzOC4sIDI0Lik7XG4gICAgKDQwLiwgMjAuKTtcbiAgICAoNDIuLCAxOS4pO1xuICAgICgqIEFkcmlhdGljIOKGkiBJdGFseSAqKVxuICAgICg0Ni4sIDE0Lik7XG4gICAgKDQ0LiwgMTMuKTtcbiAgICAoNDEuLCAxNy4pO1xuICAgICgzOC4sIDE2Lik7XG4gICAgKDM3LiwgMTUuKTtcbiAgICAoKiBXIE1lZGl0ZXJyYW5lYW4gKilcbiAgICAoMzkuLCA5Lik7XG4gICAgKDQzLiwgNS4pO1xuICAgICg0MC4sIDAuKTtcbiAgICAoMzcuLCAtMi4pO1xuICAgICgzNi4sIC02Lik7XG4gIHxdXG5cbmxldCBhcmFiaWEgPVxuICBbfFxuICAgICgzMC4sIDQ4Lik7XG4gICAgKDI5LiwgNDguKTtcbiAgICAoMjYuLCA1MC4pO1xuICAgICgyNC4sIDU0Lik7XG4gICAgKDIyLiwgNTkuKTtcbiAgICAoMTcuLCA1NS4pO1xuICAgICgxNC4sIDQ5Lik7XG4gICAgKDEzLiwgNDQuKTtcbiAgICAoMTYuLCA0My4pO1xuICAgICgyMC4sIDQwLik7XG4gICAgKDI0LiwgMzguKTtcbiAgICAoMjguLCAzNS4pO1xuICAgICgzMC4sIDM1Lik7XG4gICAgKDMzLiwgMzYuKTtcbiAgICAoMzMuLCA0NC4pO1xuICB8XVxuXG5sZXQgbm9ydGhfYW1lcmljYSA9XG4gIFt8XG4gICAgKCogQWxhc2thIOKGkiBBcmN0aWMgKilcbiAgICAoNjUuLCAtMTY4Lik7XG4gICAgKDcxLiwgLTE1Ny4pO1xuICAgICg3Mi4sIC0xMjguKTtcbiAgICAoNzQuLCAtOTUuKTtcbiAgICAoNzMuLCAtODAuKTtcbiAgICAoNjkuLCAtNjguKTtcbiAgICAoKiBFYXN0IGNvYXN0ICopXG4gICAgKDYwLiwgLTY0Lik7XG4gICAgKDUzLiwgLTU2Lik7XG4gICAgKDQ3LiwgLTYwLik7XG4gICAgKDQ0LiwgLTY3Lik7XG4gICAgKDQwLiwgLTc0Lik7XG4gICAgKDM1LiwgLTc2Lik7XG4gICAgKDMwLiwgLTgxLik7XG4gICAgKDI1LiwgLTgwLik7XG4gICAgKCogR3VsZiDihpIgTWV4aWNvICopXG4gICAgKDMwLiwgLTg2Lik7XG4gICAgKDI5LiwgLTk1Lik7XG4gICAgKDI2LiwgLTk3Lik7XG4gICAgKDIwLiwgLTk3Lik7XG4gICAgKCogQ2VudHJhbCBBbWVyaWNhICopXG4gICAgKDE3LiwgLTkyLik7XG4gICAgKDE1LiwgLTg3Lik7XG4gICAgKDEwLiwgLTg0Lik7XG4gICAgKDguLCAtNzguKTtcbiAgICAoKiBXZXN0IGNvYXN0ICopXG4gICAgKDE2LiwgLTk1Lik7XG4gICAgKDE5LiwgLTEwNS4pO1xuICAgICgyMy4sIC0xMTAuKTtcbiAgICAoMzAuLCAtMTE1Lik7XG4gICAgKDMyLiwgLTExNy4pO1xuICAgICgzOC4sIC0xMjMuKTtcbiAgICAoNDYuLCAtMTI0Lik7XG4gICAgKDQ5LiwgLTEyNS4pO1xuICAgICg1NC4sIC0xMzEuKTtcbiAgICAoNTguLCAtMTM3Lik7XG4gICAgKDYwLiwgLTE0Ny4pO1xuICAgICg2My4sIC0xNjUuKTtcbiAgfF1cblxubGV0IHNvdXRoX2FtZXJpY2EgPVxuICBbfFxuICAgICgxMi4sIC03Mi4pO1xuICAgICgxMC4sIC02Ny4pO1xuICAgICg3LiwgLTYwLik7XG4gICAgKDUuLCAtNTIuKTtcbiAgICAoMC4sIC01MC4pO1xuICAgICgtNS4sIC0zNS4pO1xuICAgICgtMTIuLCAtMzcuKTtcbiAgICAoLTIzLiwgLTQyLik7XG4gICAgKC0zMy4sIC01Mi4pO1xuICAgICgtMzUuLCAtNTcuKTtcbiAgICAoLTQyLiwgLTY0Lik7XG4gICAgKC01Mi4sIC02OC4pO1xuICAgICgtNTUuLCAtNjkuKTtcbiAgICAoLTU1LiwgLTY2Lik7XG4gICAgKC01MC4sIC03My4pO1xuICAgICgtNDUuLCAtNzQuKTtcbiAgICAoLTM0LiwgLTcyLik7XG4gICAgKC0yMy4sIC03MC4pO1xuICAgICgtMTYuLCAtNzUuKTtcbiAgICAoLTUuLCAtODEuKTtcbiAgICAoMC4sIC04MC4pO1xuICAgICg3LiwgLTc4Lik7XG4gICAgKDExLiwgLTc1Lik7XG4gIHxdXG5cbmxldCBhdXN0cmFsaWEgPVxuICBbfFxuICAgICgtMTIuLCAxMzEuKTtcbiAgICAoLTExLiwgMTM2Lik7XG4gICAgKC0xNC4sIDE0Mi4pO1xuICAgICgtMTkuLCAxNDYuKTtcbiAgICAoLTI0LiwgMTUzLik7XG4gICAgKC0yOC4sIDE1My4pO1xuICAgICgtMzQuLCAxNTEuKTtcbiAgICAoLTM4LiwgMTQ1Lik7XG4gICAgKC0zNi4sIDEzNy4pO1xuICAgICgtMzQuLCAxMzYuKTtcbiAgICAoLTMyLiwgMTMzLik7XG4gICAgKC0zMi4sIDExNS4pO1xuICAgICgtMjIuLCAxMTQuKTtcbiAgICAoLTE0LiwgMTI3Lik7XG4gIHxdXG5cbmxldCBncmVlbmxhbmQgPVxuICBbfFxuICAgICg2MC4sIC00My4pO1xuICAgICg2My4sIC00MC4pO1xuICAgICg2Ni4sIC0zNi4pO1xuICAgICg3Mi4sIC0yMi4pO1xuICAgICg3OC4sIC0xOC4pO1xuICAgICg4NC4sIC0zMC4pO1xuICAgICg4My4sIC01OC4pO1xuICAgICg3OC4sIC03Mi4pO1xuICAgICg3Ni4sIC02OC4pO1xuICAgICg3MC4sIC01NS4pO1xuICAgICg2NC4sIC01MC4pO1xuICB8XVxuXG5sZXQgdWsgPVxuICBbfFxuICAgICg1MC4sIC01Lik7XG4gICAgKDUxLiwgMS4pO1xuICAgICg1My4sIDAuKTtcbiAgICAoNTUuLCAtMi4pO1xuICAgICg1OC4sIC0zLik7XG4gICAgKDU5LiwgLTUuKTtcbiAgICAoNTcuLCAtNy4pO1xuICAgICg1NS4sIC02Lik7XG4gICAgKDU0LiwgLTMuKTtcbiAgICAoNTIuLCAtNS4pO1xuICB8XVxuXG5sZXQgaXJlbGFuZCA9XG4gIFt8XG4gICAgKDUyLiwgLTYuKTtcbiAgICAoNTMuLCAtNi4pO1xuICAgICg1NS4sIC02Lik7XG4gICAgKDU1LiwgLTguKTtcbiAgICAoNTQuLCAtMTAuKTtcbiAgICAoNTIuLCAtMTAuKTtcbiAgICAoNTEuLCAtOS4pO1xuICB8XVxuXG5sZXQgaWNlbGFuZCA9IFt8ICg2NC4sIC0yMi4pOyAoNjQuLCAtMTQuKTsgKDY2LiwgLTE0Lik7ICg2Ni4sIC0yNC4pIHxdXG5cbmxldCBqYXBhbiA9XG4gIFt8XG4gICAgKDMxLiwgMTMxLik7XG4gICAgKDMzLiwgMTMwLik7XG4gICAgKDM1LiwgMTMzLik7XG4gICAgKDM2LiwgMTM3Lik7XG4gICAgKDM4LiwgMTM5Lik7XG4gICAgKDQwLiwgMTQwLik7XG4gICAgKDQyLiwgMTQxLik7XG4gICAgKDQ0LiwgMTQ1Lik7XG4gICAgKDQ1LiwgMTQyLik7XG4gICAgKDQzLiwgMTQxLik7XG4gICAgKDM4LiwgMTQxLik7XG4gICAgKDM1LiwgMTQwLik7XG4gICAgKDM0LiwgMTM1Lik7XG4gICAgKDMzLiwgMTMxLik7XG4gIHxdXG5cbmxldCBtYWRhZ2FzY2FyID1cbiAgW3xcbiAgICAoLTEyLiwgNDkuKTtcbiAgICAoLTE2LiwgNTAuKTtcbiAgICAoLTIyLiwgNDguKTtcbiAgICAoLTI2LiwgNDcuKTtcbiAgICAoLTI0LiwgNDQuKTtcbiAgICAoLTE2LiwgNDQuKTtcbiAgICAoLTEzLiwgNDguKTtcbiAgfF1cblxubGV0IHNyaV9sYW5rYSA9IFt8ICgxMC4sIDgwLik7ICg4LiwgODIuKTsgKDYuLCA4MS4pOyAoNy4sIDgwLik7ICg5LiwgODAuKSB8XVxuXG5sZXQgc3VtYXRyYSA9XG4gIFt8XG4gICAgKDUuLCA5NS4pO1xuICAgICgyLiwgOTkuKTtcbiAgICAoLTIuLCAxMDQuKTtcbiAgICAoLTUuLCAxMDUuKTtcbiAgICAoLTYuLCAxMDQuKTtcbiAgICAoLTMuLCAxMDAuKTtcbiAgICAoMS4sIDk3Lik7XG4gIHxdXG5cbmxldCBib3JuZW8gPVxuICBbfFxuICAgICg3LiwgMTE3Lik7XG4gICAgKDUuLCAxMTkuKTtcbiAgICAoMi4sIDExOC4pO1xuICAgICgtMS4sIDExNy4pO1xuICAgICgtNC4sIDExNS4pO1xuICAgICgtMy4sIDExMS4pO1xuICAgICgwLiwgMTA5Lik7XG4gICAgKDMuLCAxMTAuKTtcbiAgfF1cblxubGV0IGphdmEgPVxuICBbfFxuICAgICgtNi4sIDEwNi4pOyAoLTcuLCAxMTAuKTsgKC04LiwgMTE0Lik7ICgtOC4sIDExNS4pOyAoLTguLCAxMTAuKTsgKC03LiwgMTA2Lik7XG4gIHxdXG5cbmxldCBwYXB1YSA9XG4gIFt8XG4gICAgKC0xLiwgMTMzLik7XG4gICAgKC0yLiwgMTM4Lik7XG4gICAgKC00LiwgMTQxLik7XG4gICAgKC04LiwgMTQxLik7XG4gICAgKC05LiwgMTM4Lik7XG4gICAgKC04LiwgMTM0Lik7XG4gICAgKC01LiwgMTMzLik7XG4gIHxdXG5cbmxldCBwaGlsaXBwaW5lcyA9XG4gIFt8XG4gICAgKDE4LiwgMTIxLik7XG4gICAgKDE1LiwgMTIyLik7XG4gICAgKDEyLiwgMTI0Lik7XG4gICAgKDguLCAxMjYuKTtcbiAgICAoNy4sIDEyNC4pO1xuICAgICgxMC4sIDEyMC4pO1xuICAgICgxNC4sIDEyMC4pO1xuICB8XVxuXG5sZXQgbmV3X3plYWxhbmRfbiA9XG4gIFt8XG4gICAgKC0zNS4sIDE3My4pO1xuICAgICgtMzcuLCAxNzYuKTtcbiAgICAoLTM5LiwgMTc4Lik7XG4gICAgKC00Mi4sIDE3NS4pO1xuICAgICgtMzkuLCAxNzQuKTtcbiAgICAoLTM3LiwgMTc0Lik7XG4gIHxdXG5cbmxldCBuZXdfemVhbGFuZF9zID1cbiAgW3xcbiAgICAoLTQyLiwgMTcyLik7XG4gICAgKC00NC4sIDE3MS4pO1xuICAgICgtNDYuLCAxNjguKTtcbiAgICAoLTQ2LiwgMTY2Lik7XG4gICAgKC00NC4sIDE2OC4pO1xuICAgICgtNDIuLCAxNzAuKTtcbiAgfF1cblxubGV0IGFsbF9wb2x5Z29ucyA9XG4gIFt8XG4gICAgYWZyaWNhO1xuICAgIGV1cmFzaWE7XG4gICAgYXJhYmlhO1xuICAgIG5vcnRoX2FtZXJpY2E7XG4gICAgc291dGhfYW1lcmljYTtcbiAgICBhdXN0cmFsaWE7XG4gICAgZ3JlZW5sYW5kO1xuICAgIHVrO1xuICAgIGlyZWxhbmQ7XG4gICAgaWNlbGFuZDtcbiAgICBqYXBhbjtcbiAgICBtYWRhZ2FzY2FyO1xuICAgIHNyaV9sYW5rYTtcbiAgICBzdW1hdHJhO1xuICAgIGJvcm5lbztcbiAgICBqYXZhO1xuICAgIHBhcHVhO1xuICAgIHBoaWxpcHBpbmVzO1xuICAgIG5ld196ZWFsYW5kX247XG4gICAgbmV3X3plYWxhbmRfcztcbiAgfF1cblxuKCogLS0tIExhbmQgZGV0ZWN0aW9uIGFuZCBjb2FzdCBwcm94aW1pdHkgLS0tICopXG5cbmxldCBpc19sYW5kIGxhdCBsb24gPVxuICBsYXQgPCAtNjUuICgqIEFudGFyY3RpY2EgKilcbiAgfHwgQXJyYXkuZXhpc3RzIChmdW4gcG9seSAtPiBwb2ludF9pbl9wb2x5Z29uIGxhdCBsb24gcG9seSkgYWxsX3BvbHlnb25zXG5cbmxldCBtaW5fY29hc3RfZGlzdF9zcSBsYXQgbG9uID1cbiAgbGV0IGJlc3QgPSByZWYgaW5maW5pdHkgaW5cbiAgQXJyYXkuaXRlclxuICAgIChmdW4gcG9seWdvbiAtPlxuICAgICAgbGV0IG4gPSBBcnJheS5sZW5ndGggcG9seWdvbiBpblxuICAgICAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgICAgIGxldCBsYXRfaSwgbG9uX2kgPSBwb2x5Z29uLihpKSBpblxuICAgICAgICBsZXQgbGF0X2osIGxvbl9qID0gcG9seWdvbi4oKGkgKyAxKSBtb2QgbikgaW5cbiAgICAgICAgbGV0IGQgPSBwb2ludF90b19zZWdfZGlzdF9zcSBsYXQgbG9uIGxhdF9pIGxvbl9pIGxhdF9qIGxvbl9qIGluXG4gICAgICAgIGlmIGQgPCAhYmVzdCB0aGVuIGJlc3QgOj0gZFxuICAgICAgZG9uZSlcbiAgICBhbGxfcG9seWdvbnM7XG4gICFiZXN0XG5cbigqIC0tLSBQb2ludCBjbG91ZCBnZW5lcmF0aW9uIC0tLSAqKVxuXG5sZXQgZ2VuZXJhdGVfY2xvdWQgfm51bV9wb2ludHMgPVxuICBsZXQgcGkgPSBGbG9hdC5waSBpblxuICBsZXQgZ29sZGVuX3JhdGlvID0gKDEuICsuIHNxcnQgNS4pIC8uIDIuIGluXG4gIEFycmF5LmluaXQgbnVtX3BvaW50cyAoZnVuIGkgLT5cbiAgICAgIGxldCBmaSA9IEZsb2F0Lm9mX2ludCBpIGluXG4gICAgICBsZXQgbiA9IEZsb2F0Lm9mX2ludCBudW1fcG9pbnRzIGluXG4gICAgICBsZXQgdGhldGEgPSBhY29zICgxLiAtLiAoMi4gKi4gKGZpICsuIDAuNSkgLy4gbikpIGluXG4gICAgICBsZXQgcGhpID0gMi4gKi4gcGkgKi4gZmkgLy4gZ29sZGVuX3JhdGlvIGluXG4gICAgICBsZXQgeCA9IHNpbiB0aGV0YSAqLiBjb3MgcGhpIGluXG4gICAgICBsZXQgeSA9IGNvcyB0aGV0YSBpblxuICAgICAgbGV0IHogPSBzaW4gdGhldGEgKi4gc2luIHBoaSBpblxuICAgICAgbGV0IGxhdCA9IDkwLiAtLiAodGhldGEgKi4gMTgwLiAvLiBwaSkgaW5cbiAgICAgIGxldCBsb25fcmF3ID0gcGhpICouIDE4MC4gLy4gcGkgaW5cbiAgICAgIGxldCBsb24gPSBGbG9hdC5yZW0gbG9uX3JhdyAzNjAuIGluXG4gICAgICBsZXQgbG9uID0gaWYgbG9uID4gMTgwLiB0aGVuIGxvbiAtLiAzNjAuIGVsc2UgbG9uIGluXG4gICAgICBsZXQgb25fbGFuZCA9IGlzX2xhbmQgbGF0IGxvbiBpblxuICAgICAgbGV0IGNvYXN0X2QgPSBzcXJ0IChtaW5fY29hc3RfZGlzdF9zcSBsYXQgbG9uKSBpblxuICAgICAgbGV0IGNvYXN0X2dsb3cgPSBGbG9hdC5tYXggMC4gKDEuIC0uIChjb2FzdF9kIC8uIDguKSkgaW5cbiAgICAgIGxldCBicmlnaHRuZXNzID1cbiAgICAgICAgaWYgb25fbGFuZCB0aGVuIDAuNTUgKy4gKDAuNDUgKi4gY29hc3RfZ2xvdylcbiAgICAgICAgZWxzZSAwLjEwICsuICgwLjI1ICouIGNvYXN0X2dsb3cpXG4gICAgICBpblxuICAgICAgeyBwb3MgPSBNYXRoLlZlYzMuY3JlYXRlIHggeSB6OyBicmlnaHRuZXNzIH0pXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2hlY2tfYm91bmQiLCJjYW1sX29ial9kdXAiLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYl9GbG9hdCIsIkdsb2JlX01hdGgiLCJTdGRsaWJfQXJyYXkiLCJTdGRsaWIiLCJhZnJpY2EiLCJldXJhc2lhIiwiYXJhYmlhIiwibm9ydGhfYW1lcmljYSIsInNvdXRoX2FtZXJpY2EiLCJhdXN0cmFsaWEiLCJncmVlbmxhbmQiLCJ1ayIsImlyZWxhbmQiLCJqYXBhbiIsIm1hZGFnYXNjYXIiLCJzcmlfbGFua2EiLCJzdW1hdHJhIiwiYm9ybmVvIiwiamF2YSIsInBhcHVhIiwicGhpbGlwcGluZXMiLCJuZXdfemVhbGFuZF9uIiwibmV3X3plYWxhbmRfcyIsImFsbF9wb2x5Z29ucyIsImlzX2xhbmQiLCJsYXQiLCJsb24iLCJ2ZXJ0aWNlcyIsIm4iLCJpbnNpZGUiLCJqIiwiaSIsIm1hdGNoIiwibG9uX2kiLCJsYXRfaSIsImxvbl9qIiwibGF0X2oiLCJ4IiwibWluX2NvYXN0X2Rpc3Rfc3EiLCJiZXN0IiwicG9seWdvbiIsImR4IiwiZHkiLCJsZW5fc3EiLCJleCIsImV5IiwiZCIsInQiLCJjeCIsImN5IiwiZ2VuZXJhdGVfY2xvdWQiLCJudW1fcG9pbnRzIiwicGkiLCJmaSIsInRoZXRhIiwicGhpIiwieSIsInoiLCJsb25fcmF3Iiwib25fbGFuZCIsImNvYXN0X2QiLCJjb2FzdF9nbG93IiwiYnJpZ2h0bmVzcyJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLElBQUFDLGFBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDO0FBQUFBLE1BQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDO0FBQUFBLE1BQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDO0FBQUFBLE1BQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDO0FBQUFBLE1BQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUM7QUFBQUEsTUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDO0FBQUFBLE1BQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQztBQUFBQSxNQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUM7QUFBQUEsTUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQztBQUFBQSxNQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDO0FBQUFBLE1BQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQztBQUFBQSxNQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDO0FBQUFBLE1BQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQztBQUFBQSxNQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDO0FBQUFBLE1BQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQztBQUFBQSxNQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQztBQUFBQSxNQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDO0FBQUFBLE1BQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUM7QUFBQUEsTUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUM7QUFBQUEsTUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUM7QUFBQUEsTUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxRQUFBQyxLQUFBQztBQUFBQSxRQUFBLElDb2NFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHdCQUFBQztBQUFBQSxvQkFBQUMsSUFwYkE7QUFBQSxnQkFDQSxVQUFjO0FBQUEsd0JBSVosOEJBRkE7QUFBQSxnQkFFQTtBQUFBLHFCQUFBQyxXQUFBO0FBQUE7QUFBQSxxQkFBQUMsSUFBQSxHQUFBRCxTQUFBLEdBQUFFLElBQUE7QUFBQTtBQUFBO0FBQUEsbUJBQUFDLFFBQ3FCO0FBQUEsbUJBQUFDLFFBQVk7QUFBQSxtQkFBQUMsUUFBQTtBQUFBLG1CQUFBRixVQUNaO0FBQUEsbUJBQUFHLFFBQWE7QUFBQSxtQkFBQUMsUUFBQTtBQUFBLGtCQUNoQztBQUFBO0FBQUEsb0JBQUFDO0FBQUFBLHNCQUVJO0FBQUEsb0JBQUFSLFdBRUY7QUFBQTtBQUFBLHVCQUFBQSxXQUpGO0FBQUEsMEJBTUE7QUFBQSxrQ0FBQUEsV0FBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxnQkFFRjtBQUFBLGVBcWF3RDtBQUFBLDRCQUFjO0FBQUE7QUFBQSxZQUFBUyxrQkFBQWIsS0FBQUM7QUFBQUEsUUFBQWEsT0FHeEU7QUFBQSxJQUNBO0FBQUE7QUFBQSxlQUFBQztBQUFBQSxXQUFBWixJQUVJLHdCQUNBO0FBQUE7QUFBQSxZQUFBRyxJQUFBO0FBQUE7QUFBQTtBQUFBLFVBQUFDLFFBQ3FCO0FBQUEsVUFBQUMsUUFBVztBQUFBLFVBQUFDLFFBQUE7QUFBQSxjQUM5QjtBQUFBLFVBQUFGLFVBQW1CO0FBQUEsVUFBQUcsUUFBdUI7QUFBQSxVQUFBQyxRQUFBO0FBQUEsVUFBQUssS0F6YXZDO0FBQUEsVUFBQUMsS0FBa0I7QUFBQSxVQUFBQyxTQUNkO0FBQUEsU0FDYjtBQUFBLGNBQUFDLEtBQ1csYUFBQUMsS0FBa0IsYUFBQUMsSUFDSDtBQUFBO0FBQUE7QUFBQSxXQUFBQyxJQUVoQjtBQUFBLGVBQ2E7QUFBQSxXQUFBQSxNQUFiO0FBQUEsV0FBQUMsS0FDQztBQUFBLFdBQUFDLEtBQXlCO0FBQUEsV0FBQUwsT0FDekI7QUFBQSxXQUFBQyxPQUFrQjtBQUFBLFdBQUFDLElBQ0g7QUFBQSxTQWlhcEIsZ0JBQWtCO0FBQUEsaUJBQWxCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxPQUpGO0FBQUEsTUFLSTtBQUFBO0FBQUEsSUFDTTtBQUFBLEdBQ1Q7QUFBQSxZQUFBSSxlQUFBQztBQUFBQSxRQUFBQyxLQUtMO0FBQUEsSUFFQTtBQUFBO0FBQUE7QUFBQSxzQkFBQXJCO0FBQUFBO0FBQUFBLGVBQUFzQixLQUNhO0FBQUEsZUFBQXpCLElBQ0Q7QUFBQSxlQUFBMEIsUUFDSTtBQUFBLGVBQUFDLE1BQ0Y7QUFBQSxlQUFBbEIsSUFDRixrQkFBYTtBQUFBLGVBQUFtQixJQUNiO0FBQUEsZUFBQUMsSUFDQSxrQkFBYTtBQUFBLGVBQUFoQyxNQUNYO0FBQUEsZUFBQWlDLFVBQ0k7QUFBQSxlQUFBaEMsTUFDSjtBQUFBLGVBQUFBLFFBQ1Y7QUFBQSxlQUFBaUMsVUFDYztBQUFBLGVBQUFDLFVBQ0EsVUFBSztBQUFBLGVBQUFDLGFBQ0Y7QUFBQSxlQUFBQztBQUFBQSxpQkFDakI7QUFBQSxjQUlRLDREQUFzQjtBQUFBLGFBQWMsRUFBQztBQUFBO0FBQUEsR0Q3ZW5EIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MzI0NjgsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLmdsb2JlLm9ianMvanNvby9kZWZhdWx0L2dsb2JlLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvd29ya3NwYWNlX3Jvb3Qvb2NhbWwtZ2xvYmUvbGliL2NvbG9yLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIENvcHlyaWdodCAoYykgMjAyNSBUaG9tYXMgR2F6YWduYWlyZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuKCoqIENvbG9yIHV0aWxpdGllcyBmb3IgZ2xvYmUgcmVuZGVyaW5nLiAqKVxuXG50eXBlIHQgPSBmbG9hdCAqIGZsb2F0ICogZmxvYXRcblxubGV0IHJnYiByIGcgYiA9IChyLCBnLCBiKVxuXG4oKiogR2VuZXJhdGUgYSBjb2xvciBmcm9tIGEgaHVlIHZhbHVlIGluIFswLCAxXS4gTWFwcyB0aHJvdWdoIGEgY3lhbi1vcmFuZ2UtcGlua1xuICAgIHBhbGV0dGUgc3VpdGFibGUgZm9yIGRhcmsgYmFja2dyb3VuZHMuICopXG5sZXQgb2ZfaHVlIGggPSAoMC4zICsuICgwLjcgKi4gaCksIDAuOCAtLiAoMC4zICouIGgpLCAxLjAgLS4gKDAuNSAqLiBoKSlcblxuKCoqIEdlbmVyYXRlIFtuXSBkaXN0aW5jdCBjb2xvcnMgZXZlbmx5IHNwYWNlZCBpbiBodWUuICopXG5sZXQgcGFsZXR0ZSBuID1cbiAgTGlzdC5pbml0IG4gKGZ1biBpIC0+IG9mX2h1ZSAoRmxvYXQub2ZfaW50IGkgLy4gRmxvYXQub2ZfaW50IChtYXggMSBuKSkpXG5cbigqKiBNYXAgYSBwcm9iYWJpbGl0eSB2YWx1ZSB0byBncmVlbiDihpIgeWVsbG93IOKGkiByZWQuICopXG5sZXQgb2ZfcHJvYmFiaWxpdHkgcCA9XG4gIGlmIHAgPCAxZS03IHRoZW4gKDAuMSwgMC45LCAwLjIpXG4gIGVsc2UgaWYgcCA8IDFlLTUgdGhlblxuICAgIGxldCB0ID0gKGxvZzEwIHAgKy4gNy4pIC8uIDIuIGluXG4gICAgKDAuMSArLiAoMC45ICouIHQpLCAwLjkgLS4gKDAuNCAqLiB0KSwgMC4yIC0uICgwLjEgKi4gdCkpXG4gIGVsc2UgKDEuMCwgMC4yLCAwLjEpXG5cbmxldCBnaG9zdCA9ICgwLjE1LCAwLjIsIDAuMjUpXG5sZXQgd2hpdGUgPSAoMS4sIDEuLCAxLilcbmxldCBjeWFuID0gKDAuMywgMC44NSwgMS4wKVxubGV0IGdyaWRfZGVmYXVsdCA9ICgwLjE1LCAwLjM1LCAwLjUpXG5sZXQgcHAgcHBmIChyLCBnLCBiKSA9IEZtdC5wZiBwcGYgXCIoJS4yZiwgJS4yZiwgJS4yZilcIiByIGcgYlxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwzIiwiZiIsImEwIiwiYTEiLCJhMiIsImdsb2JhbF9kYXRhIiwiRm10IiwiU3RkbGliIiwiU3RkbGliX0xpc3QiLCJyZ2IiLCJyIiwiZyIsImIiLCJvZl9odWUiLCJoIiwicGFsZXR0ZSIsIm4iLCJpIiwib2ZfcHJvYmFiaWxpdHkiLCJwIiwidCIsImNzdCIsInBwIiwicHBmIiwicGFyYW0iXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUMsSUFBQUMsSUFBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLE1BQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLFlBQUFDLElBQUFDLEdBQUFDLEdBQUFDLEdDU2dCLG9CQUFTO0FBQUEsWUFBQUMsT0FBQUMsR0FJUSx1REFBdUM7QUFBQSxZQUFBQyxRQUFBQztBQUFBQSxJQUl0RTtBQUFBO0FBQUE7QUFBQSxzQkFBQUMsR0FBNkQsT0FBVSxXQUFWLDRCQUFVLEdBQUM7QUFBQTtBQUFBLFdEakIxRTtBQUFBLFlBQUFDLGVBQUFDO0FBQUFBLElDcUJFLGFBQWlCO0FBQUEsSUFDWixpQkFHQTtBQUFBLFFBQUFDLElBRk07QUFBQSxJQUNTO0FBQUEsR0FDQTtBQUFBO0FBQUEsSUFBQUMsTUR6QnRCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxHQUFBQyxLQUFBQztBQUFBQSxRQUFBWixJQytCTyxVQUFBRCxJQUFBLFVBQUFELElBQUE7QUFBQSxJQUFnQixxREFBcUM7QUFBQTtBQUFBLEdEL0I1RCIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjMyNTM5LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6Ii5nbG9iZS5vYmpzL2pzb28vZGVmYXVsdC9nbG9iZS5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL3dvcmtzcGFjZV9yb290L29jYW1sLWdsb2JlL2xpYi9nZW9tZXRyeS5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBDb3B5cmlnaHQgKGMpIDIwMjUgVGhvbWFzIEdhemFnbmFpcmUuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbigqKiBHbG9iZSBnZW9tZXRyeSBjb21wdXRhdGlvbnMgKHB1cmUgbWF0aCwgbm8gV2ViR0wpLiAqKVxuXG5sZXQgcGkgPSBGbG9hdC5waVxuXG4oKiogU2F0ZWxsaXRlIGdyb3VuZCBmb290cHJpbnQgaGFsZi1hbmdsZSAocmFkaWFucykuXG5cbiAgICBHaXZlbiBhIHNhdGVsbGl0ZSBhdCBbYWx0aXR1ZGVdIGttIGFuZCBhIG1pbmltdW0gZWxldmF0aW9uIGFuZ2xlXG4gICAgW21pbl9lbGV2YXRpb25dIHJhZGlhbnMsIHJldHVybnMgdGhlIGFuZ3VsYXIgcmFkaXVzIG9mIHRoZSBncm91bmQgZm9vdHByaW50XG4gICAgY2lyY2xlLlxuXG4gICAgRnJvbSBnZW9tZXRyeTogcmhvID0gYXNpbihSIC8gKFIgKyBoKSksIGhhbGZfYW5nbGUgPSBwaS8yIC0gZWxldmF0aW9uIC0gcmhvLlxuKilcbmxldCBmb290cHJpbnRfYW5nbGUgfmFsdGl0dWRlIH5taW5fZWxldmF0aW9uID1cbiAgbGV0IHIgPSBDb29yZGluYXRlLmVhcnRoX3JhZGl1cyBpblxuICBsZXQgcmhvID0gYXNpbiAociAvLiAociArLiBhbHRpdHVkZSkpIGluXG4gIChwaSAvLiAyLikgLS4gbWluX2VsZXZhdGlvbiAtLiByaG9cblxuKCoqIEdlbmVyYXRlIGxhdC9sb24gZ3JpZCBsaW5lIHZlcnRpY2VzIG9uIHRoZSB1bml0IHNwaGVyZS5cblxuICAgIFJldHVybnMgcGFpcnMgb2YgKHgseSx6KSBlbmRwb2ludHMgaW4gR0wgY29vcmRpbmF0ZXMgKFk9dXApLiBbc3BhY2luZ10gaXNcbiAgICBkZWdyZWVzIGJldHdlZW4gbGluZXMuICopXG5sZXQgZ3JpZF9saW5lcyA/KHNwYWNpbmcgPSAzMC4pID8oc2VnbWVudHMgPSA3MikgKCkgPVxuICBsZXQgZGVnX3RvX3JhZCBkID0gZCAqLiBwaSAvLiAxODAuIGluXG4gIGxldCB2ZXJ0aWNlcyA9IHJlZiBbXSBpblxuICBsZXQgciA9IDEuMDAyIGluXG4gIGxldCBsYXQgPSByZWYgKC05MC4gKy4gc3BhY2luZykgaW5cbiAgd2hpbGUgIWxhdCA8IDkwLiBkb1xuICAgIGxldCBsYXRfcmFkID0gZGVnX3RvX3JhZCAhbGF0IGluXG4gICAgbGV0IGNvc19sYXQgPSBjb3MgbGF0X3JhZCBhbmQgc2luX2xhdCA9IHNpbiBsYXRfcmFkIGluXG4gICAgZm9yIGkgPSAwIHRvIHNlZ21lbnRzIC0gMSBkb1xuICAgICAgbGV0IGxvbjAgPSBGbG9hdC5vZl9pbnQgaSAqLiAyLiAqLiBwaSAvLiBGbG9hdC5vZl9pbnQgc2VnbWVudHMgaW5cbiAgICAgIGxldCBsb24xID0gRmxvYXQub2ZfaW50IChpICsgMSkgKi4gMi4gKi4gcGkgLy4gRmxvYXQub2ZfaW50IHNlZ21lbnRzIGluXG4gICAgICB2ZXJ0aWNlcyA6PVxuICAgICAgICBNYXRoLlZlYzMuY3JlYXRlXG4gICAgICAgICAgKHIgKi4gY29zX2xhdCAqLiBjb3MgbG9uMClcbiAgICAgICAgICAociAqLiBzaW5fbGF0KVxuICAgICAgICAgIChyICouIGNvc19sYXQgKi4gc2luIGxvbjApXG4gICAgICAgIDo6IE1hdGguVmVjMy5jcmVhdGVcbiAgICAgICAgICAgICAociAqLiBjb3NfbGF0ICouIGNvcyBsb24xKVxuICAgICAgICAgICAgIChyICouIHNpbl9sYXQpXG4gICAgICAgICAgICAgKHIgKi4gY29zX2xhdCAqLiBzaW4gbG9uMSlcbiAgICAgICAgOjogIXZlcnRpY2VzXG4gICAgZG9uZTtcbiAgICBsYXQgOj0gIWxhdCArLiBzcGFjaW5nXG4gIGRvbmU7XG4gIGxldCBsb24gPSByZWYgKC0xODAuKSBpblxuICB3aGlsZSAhbG9uIDwgMTgwLiBkb1xuICAgIGxldCBsb25fcmFkID0gZGVnX3RvX3JhZCAhbG9uIGluXG4gICAgZm9yIGkgPSAwIHRvIHNlZ21lbnRzIC0gMSBkb1xuICAgICAgbGV0IGxhdDAgPVxuICAgICAgICAoLS5waSAvLiAyLikgKy4gKEZsb2F0Lm9mX2ludCBpICouIHBpIC8uIEZsb2F0Lm9mX2ludCBzZWdtZW50cylcbiAgICAgIGluXG4gICAgICBsZXQgbGF0MSA9XG4gICAgICAgICgtLnBpIC8uIDIuKSArLiAoRmxvYXQub2ZfaW50IChpICsgMSkgKi4gcGkgLy4gRmxvYXQub2ZfaW50IHNlZ21lbnRzKVxuICAgICAgaW5cbiAgICAgIHZlcnRpY2VzIDo9XG4gICAgICAgIE1hdGguVmVjMy5jcmVhdGVcbiAgICAgICAgICAociAqLiBjb3MgbGF0MCAqLiBjb3MgbG9uX3JhZClcbiAgICAgICAgICAociAqLiBzaW4gbGF0MClcbiAgICAgICAgICAociAqLiBjb3MgbGF0MCAqLiBzaW4gbG9uX3JhZClcbiAgICAgICAgOjogTWF0aC5WZWMzLmNyZWF0ZVxuICAgICAgICAgICAgIChyICouIGNvcyBsYXQxICouIGNvcyBsb25fcmFkKVxuICAgICAgICAgICAgIChyICouIHNpbiBsYXQxKVxuICAgICAgICAgICAgIChyICouIGNvcyBsYXQxICouIHNpbiBsb25fcmFkKVxuICAgICAgICA6OiAhdmVydGljZXNcbiAgICBkb25lO1xuICAgIGxvbiA6PSAhbG9uICsuIHNwYWNpbmdcbiAgZG9uZTtcbiAgTGlzdC5yZXYgIXZlcnRpY2VzXG5cbigqKiBHZW5lcmF0ZSBhIGNpcmNsZSBvZiBwb2ludHMgb24gdGhlIHVuaXQgc3BoZXJlIGFyb3VuZCBbY2VudGVyXS5cblxuICAgIFtjZW50ZXJdIGlzIGEgR0wtY29vcmRpbmF0ZSB1bml0IHZlY3Rvci4gW2hhbGZfYW5nbGVdIGlzIHRoZSBhbmd1bGFyIHJhZGl1c1xuICAgIGluIHJhZGlhbnMuIFJldHVybnMgW3NlZ21lbnRzXSBwYWlycyBvZiBsaW5lIGVuZHBvaW50cy4gKilcbmxldCBjaXJjbGVfb25fc3BoZXJlIGNlbnRlciB+aGFsZl9hbmdsZSB+c2VnbWVudHMgPVxuICBsZXQgb3BlbiBNYXRoLlZlYzMgaW5cbiAgbGV0IG4gPSBub3JtYWxpemUgY2VudGVyIGluXG4gIGxldCBhcmJpdHJhcnkgPVxuICAgIGlmIGFic19mbG9hdCBuLnkgPCAwLjkgdGhlbiBjcmVhdGUgMC4gMS4gMC4gZWxzZSBjcmVhdGUgMS4gMC4gMC5cbiAgaW5cbiAgbGV0IHUgPSBub3JtYWxpemUgKGNyb3NzIG4gYXJiaXRyYXJ5KSBpblxuICBsZXQgdiA9IGNyb3NzIG4gdSBpblxuICBsZXQgY29zX2EgPSBjb3MgaGFsZl9hbmdsZSBhbmQgc2luX2EgPSBzaW4gaGFsZl9hbmdsZSBpblxuICBsZXQgciA9IDEuMDAzIGluXG4gIGxldCB2ZXJ0cyA9IHJlZiBbXSBpblxuICBmb3IgaSA9IDAgdG8gc2VnbWVudHMgLSAxIGRvXG4gICAgbGV0IHQwID0gRmxvYXQub2ZfaW50IGkgKi4gMi4gKi4gcGkgLy4gRmxvYXQub2ZfaW50IHNlZ21lbnRzIGluXG4gICAgbGV0IHQxID0gRmxvYXQub2ZfaW50IChpICsgMSkgKi4gMi4gKi4gcGkgLy4gRmxvYXQub2ZfaW50IHNlZ21lbnRzIGluXG4gICAgbGV0IHBvaW50IHQgPVxuICAgICAgbGV0IGN0ID0gY29zIHQgYW5kIHN0ID0gc2luIHQgaW5cbiAgICAgIGNyZWF0ZVxuICAgICAgICAociAqLiAoKGNvc19hICouIG4ueCkgKy4gKHNpbl9hICouIGN0ICouIHUueCkgKy4gKHNpbl9hICouIHN0ICouIHYueCkpKVxuICAgICAgICAociAqLiAoKGNvc19hICouIG4ueSkgKy4gKHNpbl9hICouIGN0ICouIHUueSkgKy4gKHNpbl9hICouIHN0ICouIHYueSkpKVxuICAgICAgICAociAqLiAoKGNvc19hICouIG4ueikgKy4gKHNpbl9hICouIGN0ICouIHUueikgKy4gKHNpbl9hICouIHN0ICouIHYueikpKVxuICAgIGluXG4gICAgdmVydHMgOj0gcG9pbnQgdDAgOjogcG9pbnQgdDEgOjogIXZlcnRzXG4gIGRvbmU7XG4gIExpc3QucmV2ICF2ZXJ0c1xuXG5sZXQgZmlsbGVkX2NpcmNsZV9vbl9zcGhlcmUgY2VudGVyIH5oYWxmX2FuZ2xlIH5zZWdtZW50cyA9XG4gIGxldCBvcGVuIE1hdGguVmVjMyBpblxuICBsZXQgbiA9IG5vcm1hbGl6ZSBjZW50ZXIgaW5cbiAgbGV0IGFyYml0cmFyeSA9XG4gICAgaWYgYWJzX2Zsb2F0IG4ueSA8IDAuOSB0aGVuIGNyZWF0ZSAwLiAxLiAwLiBlbHNlIGNyZWF0ZSAxLiAwLiAwLlxuICBpblxuICBsZXQgdSA9IG5vcm1hbGl6ZSAoY3Jvc3MgbiBhcmJpdHJhcnkpIGluXG4gIGxldCB2ID0gY3Jvc3MgbiB1IGluXG4gIGxldCBjb3NfYSA9IGNvcyBoYWxmX2FuZ2xlIGFuZCBzaW5fYSA9IHNpbiBoYWxmX2FuZ2xlIGluXG4gIGxldCByID0gMS4wMDMgaW5cbiAgbGV0IGNlbnRlcl9wdCA9IHNjYWxlIHIgbiBpblxuICBsZXQgcG9pbnQgdCA9XG4gICAgbGV0IGN0ID0gY29zIHQgYW5kIHN0ID0gc2luIHQgaW5cbiAgICBjcmVhdGVcbiAgICAgIChyICouICgoY29zX2EgKi4gbi54KSArLiAoc2luX2EgKi4gY3QgKi4gdS54KSArLiAoc2luX2EgKi4gc3QgKi4gdi54KSkpXG4gICAgICAociAqLiAoKGNvc19hICouIG4ueSkgKy4gKHNpbl9hICouIGN0ICouIHUueSkgKy4gKHNpbl9hICouIHN0ICouIHYueSkpKVxuICAgICAgKHIgKi4gKChjb3NfYSAqLiBuLnopICsuIChzaW5fYSAqLiBjdCAqLiB1LnopICsuIChzaW5fYSAqLiBzdCAqLiB2LnopKSlcbiAgaW5cbiAgbGV0IHRyaXMgPSByZWYgW10gaW5cbiAgZm9yIGkgPSAwIHRvIHNlZ21lbnRzIC0gMSBkb1xuICAgIGxldCB0MCA9IEZsb2F0Lm9mX2ludCBpICouIDIuICouIHBpIC8uIEZsb2F0Lm9mX2ludCBzZWdtZW50cyBpblxuICAgIGxldCB0MSA9IEZsb2F0Lm9mX2ludCAoaSArIDEpICouIDIuICouIHBpIC8uIEZsb2F0Lm9mX2ludCBzZWdtZW50cyBpblxuICAgIHRyaXMgOj0gY2VudGVyX3B0IDo6IHBvaW50IHQwIDo6IHBvaW50IHQxIDo6ICF0cmlzXG4gIGRvbmU7XG4gIExpc3QucmV2ICF0cmlzXG4iXSwibmFtZXMiOlsicnVudGltZSIsImdsb2JhbF9kYXRhIiwiR2xvYmVfTWF0aCIsIlN0ZGxpYl9MaXN0IiwiQ29vcmRpbmF0ZSIsIlN0ZGxpYl9GbG9hdCIsInBpIiwiZm9vdHByaW50X2FuZ2xlIiwiYWx0aXR1ZGUiLCJtaW5fZWxldmF0aW9uIiwiciIsInJobyIsImdyaWRfbGluZXMiLCJvcHQiLCJwYXJhbSIsInNwYWNpbmciLCJzZWdtZW50cyIsImRlZ190b19yYWQiLCJkIiwibGF0IiwidmVydGljZXMiLCJsYXRfcmFkIiwiY29zX2xhdCIsInNpbl9sYXQiLCJpIiwibG9uMCIsImxvbjEiLCJsb24iLCJsb25fcmFkIiwibGF0MCIsImxhdDEiLCJjaXJjbGVfb25fc3BoZXJlIiwiY2VudGVyIiwiaGFsZl9hbmdsZSIsIm4iLCJhcmJpdHJhcnkiLCJ1IiwidiIsImNvc19hIiwic2luX2EiLCJ2ZXJ0cyIsInQwIiwidDEiLCJwb2ludCIsInQiLCJjdCIsInN0IiwiZmlsbGVkX2NpcmNsZV9vbl9zcGhlcmUiLCJjZW50ZXJfcHQiLCJ0cmlzIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGFBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsS0FBQTtBQUFBLFlBQUFDLGdCQUFBQyxVQUFBQztBQUFBQSxRQUFBQyxJQ2tCRSxlQUFBQyxNQUNVO0FBQUEsSUFDd0I7QUFBQTtBQUFBLFlBQUFDLFdBQUEsR0FBQUMsS0FBQUM7QUFBQUEsUUFBQUMsVUFNckIsZ0JBQUFDLFdBQUE7QUFBQSxhQUFBQyxXQUFBQyxHQUNxQjtBQUFBLFFBQUFDLE1BSWxDLGVBQUFDLFdBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQUFBQyxVQUNnQjtBQUFBLE1BQUFDLFVBQ0E7QUFBQSxNQUFBQyxVQUEwQjtBQUFBLFVBQ3hDO0FBQUE7QUFBQSxVQUFBSCxhQUFBO0FBQUE7QUFBQSxVQUFBQSxhQUFBLFVBQUFJLElBQUE7QUFBQTtBQUFBO0FBQUEsUUFBQUMsT0FDYTtBQUFBLFFBQUFDLE9BQ0E7QUFBQTtBQUFBLFVBTU47QUFBQTtBQUFBO0FBQUEsK0JBQ21CO0FBQUE7QUFBQSwrQkFFQTtBQUFBO0FBQUE7QUFBQSxVQVB0QjtBQUFBO0FBQUE7QUFBQSwrQkFDbUI7QUFBQTtBQUFBLCtCQUVBO0FBQUE7QUFBQSxZQUFTO0FBQUEsdUJBQUFOLGFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEtBT1Y7QUFBQTtBQUFBO0FBQUEsUUFBQU8sTUFHeEIsT0FBQVAsYUFBQTtBQUFBO0FBQUEsd0JBc0JBLDZDQUFrQjtBQUFBLFNBQUFRLFVBckJGLHFCQUNkO0FBQUE7QUFBQSxVQUFBUixhQUFBO0FBQUE7QUFBQSxVQUFBQSxhQUFBLFlBQUFJLE1BQUE7QUFBQTtBQUFBO0FBQUEsUUFBQUssT0FFSTtBQUFBLFFBQUFDLE9BR0E7QUFBQTtBQUFBLFVBT0c7QUFBQTtBQUFBO0FBQUEscUJBQ1EsaUJBQVk7QUFBQSxxQkFDWjtBQUFBLHFCQUNBLGlCQUFZO0FBQUE7QUFBQTtBQUFBLFVBUHZCO0FBQUE7QUFBQTtBQUFBLHFCQUNRLGlCQUFZO0FBQUEscUJBQ1o7QUFBQSxxQkFDQSxpQkFBWTtBQUFBO0FBQUEsWUFBWTtBQUFBLHlCQUFBVixhQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxLQU9kO0FBQUE7QUFBQTtBQUFBLEdBRU47QUFBQSxZQUFBVyxpQkFBQUMsUUFBQUMsWUFBQWpCO0FBQUFBO0FBQUFBLEtBQUFrQixJQVFWO0FBQUEsS0FBQUM7QUFBQUEsT0FFSDtBQUFBLFVBQXlCO0FBQUEsVUFBcUI7QUFBQSxTQUVqQztBQUFBLEtBQUFDLElBQVY7QUFBQSxLQUFBQyxJQUNBO0FBQUEsS0FBQUMsUUFDSTtBQUFBLEtBQUFDLFFBQTJCO0FBQUEsU0FHdkM7QUFBQSxTQUZBO0FBQUEsSUFFQTtBQUFBLFNBQUFDLFVBQUE7QUFBQTtBQUFBLFNBQUFBLFFBQUEsR0FBQWhCLElBQUE7QUFBQTtBQUFBO0FBQUEsT0FBQWlCLEtBQ1c7QUFBQSxPQUFBQyxLQUNBO0FBQUEsT0FBQUM7QUFBQUEsU0FDVCxTQUFBQztBQUFBQSxjQUFBQyxLQUNXLGFBQUFDLEtBQWU7QUFBQSxVQUVpRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLDRFQUVBO0FBQUE7QUFBQSxXQUV0RDtBQUFBLFdBQVo7QUFBQSxXQUFRO0FBQUEsc0JBQUFOLFVBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBRW5CLDBDQUFlO0FBQUE7QUFBQSxZQUFBTyx3QkFBQWYsUUFBQUMsWUFBQWpCO0FBQUFBO0FBQUFBLEtBQUFrQixJQUlQO0FBQUEsS0FBQUM7QUFBQUEsT0FFSDtBQUFBLFVBQXlCO0FBQUEsVUFBcUI7QUFBQSxTQUVqQztBQUFBLEtBQUFDLElBQVY7QUFBQSxLQUFBQyxJQUNBO0FBQUEsS0FBQUMsUUFDSTtBQUFBLEtBQUFDLFFBQTJCO0FBQUEsS0FBQVMsWUFFdkI7QUFBQSxhQUFBTCxNQUFBQztBQUFBQSxTQUFBQyxLQUVMLGFBQUFDLEtBQWU7QUFBQSxLQUVpRDtBQUFBO0FBQUE7QUFBQTtBQUFBLDZFQUVBO0FBQUE7QUFBQSxZQUczRSxzQkFSQTtBQUFBLElBUUE7QUFBQSxTQUFBRyxTQUFBO0FBQUE7QUFBQSxTQUFBQSxPQUFBLEdBQUF6QixJQUFBO0FBQUE7QUFBQTtBQUFBLE9BQUFpQixLQUNXO0FBQUEsT0FBQUMsS0FDQTtBQUFBLFdBQ3dCO0FBQUEsV0FBWjtBQUFBLFdBQVE7QUFBQSxzQkFBQU8sU0FBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFFL0IseUNBQWM7QUFBQTtBQUFBLEdEaEloQiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjMyNzMzLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6Impzb29fcnVudGltZS5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjc3RfNl8zXzIiXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBLHlCQUFBQyxZQUFBIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MzI3NDYsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvb19ydW50aW1lLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9qc19vZl9vY2FtbC1jb21waWxlci9ydW50aW1lL2pzb29fcnVudGltZS5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm1vZHVsZSBKcyA9IHN0cnVjdFxuICB0eXBlIHRcblxuICB0eXBlICdhIGpzX2FycmF5ID0gdFxuXG4gIHR5cGUgKCdhLCAnYikgbWV0aF9jYWxsYmFjayA9IHRcblxuICBleHRlcm5hbCBzdHJpbmcgOiBzdHJpbmcgLT4gdCA9IFwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgYnl0ZXN0cmluZyA6IHN0cmluZyAtPiB0ID0gXCJjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXCJcblxuICBleHRlcm5hbCB0b19ieXRlc3RyaW5nIDogdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcIlxuXG4gIGV4dGVybmFsIGJvb2wgOiBib29sIC0+IHQgPSBcImNhbWxfanNfZnJvbV9ib29sXCJcblxuICBleHRlcm5hbCB0b19ib29sIDogdCAtPiBib29sID0gXCJjYW1sX2pzX3RvX2Jvb2xcIlxuXG4gIGV4dGVybmFsIGFycmF5IDogJ2EgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2FycmF5XCJcblxuICBleHRlcm5hbCB0b19hcnJheSA6IHQgLT4gJ2EgYXJyYXkgPSBcImNhbWxfanNfdG9fYXJyYXlcIlxuXG4gIGV4dGVybmFsIG51bWJlcl9vZl9mbG9hdCA6IGZsb2F0IC0+IHQgPSBcImNhbWxfanNfZnJvbV9mbG9hdFwiXG5cbiAgZXh0ZXJuYWwgZmxvYXRfb2ZfbnVtYmVyIDogdCAtPiBmbG9hdCA9IFwiY2FtbF9qc190b19mbG9hdFwiXG5cbiAgZXh0ZXJuYWwgbnVtYmVyX29mX2ludDMyIDogaW50MzIgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2ludDMyXCJcblxuICBleHRlcm5hbCBpbnQzMl9vZl9udW1iZXIgOiB0IC0+IGludDMyID0gXCJjYW1sX2pzX3RvX2ludDMyXCJcblxuICBleHRlcm5hbCBudW1iZXJfb2ZfbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IHQgPSBcImNhbWxfanNfZnJvbV9uYXRpdmVpbnRcIlxuXG4gIGV4dGVybmFsIG5hdGl2ZWludF9vZl9udW1iZXIgOiB0IC0+IG5hdGl2ZWludCA9IFwiY2FtbF9qc190b19uYXRpdmVpbnRcIlxuXG4gIGV4dGVybmFsIHR5cGVvZiA6IHQgLT4gdCA9IFwiY2FtbF9qc190eXBlb2ZcIlxuXG4gIGV4dGVybmFsIGluc3RhbmNlb2YgOiB0IC0+IHQgLT4gYm9vbCA9IFwiY2FtbF9qc19pbnN0YW5jZW9mXCJcblxuICBleHRlcm5hbCBkZWJ1Z2dlciA6IHVuaXQgLT4gdW5pdCA9IFwiZGVidWdnZXJcIlxuXG4gIGV4dGVybmFsIGdldCA6IHQgLT4gdCAtPiB0ID0gXCJjYW1sX2pzX2dldFwiXG5cbiAgZXh0ZXJuYWwgc2V0IDogdCAtPiB0IC0+IHQgLT4gdW5pdCA9IFwiY2FtbF9qc19zZXRcIlxuXG4gIGV4dGVybmFsIGRlbGV0ZSA6IHQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2pzX2RlbGV0ZVwiXG5cbiAgZXh0ZXJuYWwgY2FsbCA6IHQgLT4gdCAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfY2FsbFwiXG5cbiAgZXh0ZXJuYWwgZnVuX2NhbGwgOiB0IC0+IHQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19mdW5fY2FsbFwiXG5cbiAgZXh0ZXJuYWwgbWV0aF9jYWxsIDogdCAtPiBzdHJpbmcgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX21ldGhfY2FsbFwiXG5cbiAgZXh0ZXJuYWwgbmV3X29iaiA6IHQgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX25ld1wiXG5cbiAgZXh0ZXJuYWwgbmV3X29ial9hcnIgOiB0IC0+IHQganNfYXJyYXkgLT4gdCA9IFwiY2FtbF9vanNfbmV3X2FyclwiXG5cbiAgZXh0ZXJuYWwgb2JqIDogKHN0cmluZyAqIHQpIGFycmF5IC0+IHQgPSBcImNhbWxfanNfb2JqZWN0XCJcblxuICBleHRlcm5hbCBlcXVhbHMgOiB0IC0+IHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiB0IC0+IHQgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcblxuICBleHRlcm5hbCBwdXJlX2V4cHIgOiAodW5pdCAtPiAnYSkgLT4gJ2EgPSBcImNhbWxfanNfcHVyZV9leHByXCJcblxuICBleHRlcm5hbCBldmFsX3N0cmluZyA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc19ldmFsX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwganNfZXhwciA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc19leHByXCJcblxuICBleHRlcm5hbCBwdXJlX2pzX2V4cHIgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfcHVyZV9qc19leHByXCJcblxuICBleHRlcm5hbCBjYWxsYmFjayA6ICgnYiAtPiAnYSkgLT4gKCdiLCAnYSkgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfdW5zYWZlXCJcblxuICBleHRlcm5hbCBjYWxsYmFja193aXRoX2FyZ3VtZW50cyA6XG4gICAgKHQganNfYXJyYXkgLT4gJ2IpIC0+ICgnYywgdCBqc19hcnJheSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzXCJcblxuICBleHRlcm5hbCBjYWxsYmFja193aXRoX2FyaXR5IDogaW50IC0+ICgnYSAtPiAnYikgLT4gKCdjLCAnYSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0XCJcblxuICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrIDogKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZVwiXG5cbiAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFja193aXRoX2FyaXR5IDogaW50IC0+ICgnYiAtPiAnYSkgLT4gKCdiLCAnYSkgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3RcIlxuXG4gIGV4dGVybmFsIG1ldGhfY2FsbGJhY2tfd2l0aF9hcmd1bWVudHMgOlxuICAgICgnYiAtPiB0IGpzX2FycmF5IC0+ICdhKSAtPiAoJ2IsIHQganNfYXJyYXkgLT4gJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzXCJcblxuICBleHRlcm5hbCB3cmFwX2NhbGxiYWNrIDogKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja1wiXG5cbiAgZXh0ZXJuYWwgd3JhcF9tZXRoX2NhbGxiYWNrIDogKCdhIC0+ICdiKSAtPiAoJ2EsICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrXCJcblxuICBleHRlcm5hbCBydW50aW1lX3ZhbHVlIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzb29fcnVudGltZV92YWx1ZVwiXG4gICgqKiBbcnVudGltZV92YWx1ZSBcIkZPT1wiXSByZXR1cm5zIHRoZSBKYXZhU2NyaXB0IHZhbHVlIEZPTyBwcm92aWRlZCBieSB0aGUgSmF2YVNjcmlwdCBydW50aW1lICh3aXRoICcvL1Byb3ZpZGVzOiBGT08nKS4gVGhlIHN0cmluZyBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nIGxpdGVyYWwuICopXG5cbiAgZXh0ZXJuYWwgY3VzdG9tX2lkZW50aWZpZXIgOiBPYmoudCAtPiBzdHJpbmcgPSBcImNhbWxfY3VzdG9tX2lkZW50aWZpZXJcIlxuZW5kXG5cbm1vZHVsZSBTeXMgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBjYWxsYmFjayA9ICdhXG5cbiAgZXh0ZXJuYWwgY3JlYXRlX2ZpbGUgOiBuYW1lOnN0cmluZyAtPiBjb250ZW50OnN0cmluZyAtPiB1bml0ID0gXCJjYW1sX2NyZWF0ZV9maWxlXCJcblxuICBleHRlcm5hbCByZWFkX2ZpbGUgOiBuYW1lOnN0cmluZyAtPiBzdHJpbmcgPSBcImNhbWxfcmVhZF9maWxlX2NvbnRlbnRcIlxuXG4gIGV4dGVybmFsIHNldF9jaGFubmVsX291dHB1dCcgOiBvdXRfY2hhbm5lbCAtPiAoanNfc3RyaW5nOkpzLnQgLT4gdW5pdCkgY2FsbGJhY2sgLT4gdW5pdFxuICAgID0gXCJjYW1sX21sX3NldF9jaGFubmVsX291dHB1dFwiXG5cbiAgZXh0ZXJuYWwgc2V0X2NoYW5uZWxfaW5wdXQnIDogaW5fY2hhbm5lbCAtPiAodW5pdCAtPiBzdHJpbmcpIGNhbGxiYWNrIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGxcIlxuXG4gIGV4dGVybmFsIG1vdW50X3BvaW50IDogdW5pdCAtPiBzdHJpbmcgbGlzdCA9IFwiY2FtbF9saXN0X21vdW50X3BvaW50XCJcblxuICBleHRlcm5hbCBtb3VudF9hdXRvbG9hZCA6IHN0cmluZyAtPiAoc3RyaW5nIC0+IHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uKSBjYWxsYmFjayAtPiB1bml0XG4gICAgPSBcImNhbWxfbW91bnRfYXV0b2xvYWRcIlxuXG4gIGV4dGVybmFsIHVubW91bnQgOiBzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF91bm1vdW50XCJcblxuICB0eXBlIHJlZGlyZWN0aW9uXG5cbiAgZXh0ZXJuYWwgcmVkaXJlY3RfY2hhbm5lbCA6IG91dF9jaGFubmVsIC0+IGludG86b3V0X2NoYW5uZWwgLT4gcmVkaXJlY3Rpb25cbiAgICA9IFwiY2FtbF9tbF9jaGFubmVsX3JlZGlyZWN0XCJcblxuICBleHRlcm5hbCByZXN0b3JlX2NoYW5uZWwgOiBvdXRfY2hhbm5lbCAtPiByZWRpcmVjdGlvbiAtPiB1bml0XG4gICAgPSBcImNhbWxfbWxfY2hhbm5lbF9yZXN0b3JlXCJcblxuICBtb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gICAgZXh0ZXJuYWwgdXNlX2pzX3N0cmluZyA6IHVuaXQgLT4gYm9vbCA9IFwiY2FtbF9qc29vX2ZsYWdzX3VzZV9qc19zdHJpbmdcIlxuXG4gICAgdHlwZSBlZmZlY3RzX2JhY2tlbmQgPVxuICAgICAgWyBgRGlzYWJsZWRcbiAgICAgIHwgYENwc1xuICAgICAgfCBgRG91YmxlX3RyYW5zbGF0aW9uXG4gICAgICBdXG5cbiAgICBleHRlcm5hbCBlZmZlY3RzXyA6IHVuaXQgLT4gc3RyaW5nID0gXCJjYW1sX2pzb29fZmxhZ3NfZWZmZWN0c1wiXG5cbiAgICBsZXQgZWZmZWN0cyAoKSA9XG4gICAgICBtYXRjaCBlZmZlY3RzXyAoKSB3aXRoXG4gICAgICB8IFwiZGlzYWJsZWRcIiAtPiBgRGlzYWJsZWRcbiAgICAgIHwgXCJjcHNcIiAtPiBgQ3BzXG4gICAgICB8IFwiZG91YmxlLXRyYW5zbGF0aW9uXCIgLT4gYERvdWJsZV90cmFuc2xhdGlvblxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICBlbmRcblxuICBsZXQgdmVyc2lvbiA9IFJ1bnRpbWVfdmVyc2lvbi5zXG5cbiAgbGV0IGdpdF92ZXJzaW9uID0gUnVudGltZV92ZXJzaW9uLmdpdF92ZXJzaW9uXG5lbmRcblxubW9kdWxlIEVycm9yIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCByYWlzZV8gOiB0IC0+ICdhXG5cbiAgdmFsIGF0dGFjaF9qc19iYWNrdHJhY2UgOiBleG4gLT4gZm9yY2U6Ym9vbCAtPiBleG5cbiAgKCoqIEF0dGFjaCBhIEphdmFTY3JpcHQgZXJyb3IgdG8gYW4gT0NhbWwgZXhjZXB0aW9uLiAgaWYgW2ZvcmNlID0gZmFsc2VdIGFuZCBhXG4gICAgSmF2YVNjcmlwdCBlcnJvciBpcyBhbHJlYWR5IGF0dGFjaGVkLCBpdCB3aWxsIGRvIG5vdGhpbmcuIFRoaXMgZnVuY3Rpb24gaXMgdXNlZnVsIHRvXG4gICAgc3RvcmUgYW5kIHJldHJpZXZlIGluZm9ybWF0aW9uIGFib3V0IEphdmFTY3JpcHQgc3RhY2sgdHJhY2VzLlxuXG4gICAgQXR0YWNoaW5nIEphdmFTY3JpcHQgZXJyb3JzIHdpbGwgaGFwcGVuIGF1dG9tYXRpY2FsbHkgd2hlbiBjb21waWxpbmcgd2l0aFxuICAgIFstLWVuYWJsZSB3aXRoLWpzLWVycm9yXS4gKilcblxuICB2YWwgb2ZfZXhuIDogZXhuIC0+IHQgb3B0aW9uXG4gICgqKiBFeHRyYWN0IGEgSmF2YVNjcmlwdCBlcnJvciBhdHRhY2hlZCB0byBhbiBPQ2FtbCBleGNlcHRpb24sIGlmIGFueS4gIFRoaXMgaXMgdXNlZnVsIHRvXG4gICAgICBpbnNwZWN0IGFuIGV2ZW50dWFsIHN0YWNrIHRyYWNlLCBlc3BlY2lhbGx5IHdoZW4gc291cmNlbWFwIGlzIGVuYWJsZWQuICopXG5cbiAgZXhjZXB0aW9uIEV4biBvZiB0XG4gICgqKiBUaGUgW0Vycm9yXSBleGNlcHRpb24gd3JhcCBqYXZhc2NyaXB0IGV4Y2VwdGlvbnMgd2hlbiBjYXVnaHQgYnkgT0NhbWwgY29kZS5cbiAgICAgIEluIGNhc2UgdGhlIGphdmFzY3JpcHQgZXhjZXB0aW9uIGlzIG5vdCBhbiBpbnN0YW5jZSBvZiBqYXZhc2NyaXB0IFtFcnJvcl0sXG4gICAgICBpdCB3aWxsIGJlIHNlcmlhbGl6ZWQgYW5kIHdyYXBwZWQgaW50byBhIFtGYWlsdXJlXSBleGNlcHRpb24uXG4gICopXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0XG5cbiAgZXhjZXB0aW9uIEV4biBvZiB0XG5cbiAgbGV0IF8gPSBDYWxsYmFjay5yZWdpc3Rlcl9leGNlcHRpb24gXCJqc0Vycm9yXCIgKEV4biAoT2JqLm1hZ2ljIFt8fF0pKVxuXG4gIGV4dGVybmFsIHJhaXNlXyA6IHQgLT4gJ2EgPSBcImNhbWxfdGhyb3dfanNfZXhjZXB0aW9uXCJcblxuICBleHRlcm5hbCBvZl9leG4gOiBleG4gLT4gdCBvcHRpb24gPSBcImNhbWxfanNfZXJyb3Jfb3B0aW9uX29mX2V4Y2VwdGlvblwiXG5cbiAgZXh0ZXJuYWwgYXR0YWNoX2pzX2JhY2t0cmFjZSA6IGV4biAtPiBmb3JjZTpib29sIC0+IGV4biA9IFwiY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2VcIlxuZW5kXG5cbltAQEBvY2FtbC53YXJuaW5nIFwiLTMyLTYwXCJdXG5cbm1vZHVsZSBGb3JfY29tcGF0aWJpbGl0eV9vbmx5ID0gc3RydWN0XG4gICgqIEFkZCBwcmltaXRpdmVzIGZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMuIEV4aXN0aW5nIHVzZXJzIG1pZ2h0XG4gICAgIGRlcGVuZCBvbiBpdCAoZS5nLiBnZW5fanNfYXBpKSwgd2UgZG9uJ3Qgd2FudCB0aGUgb2NhbWwgY29tcGlsZXJcbiAgICAgdG8gY29tcGxhaW4gYWJvdXQgdGhlc2UgbWlzc2luZyBwcmltaXRpdmVzLiAqKVxuXG4gIGV4dGVybmFsIGNhbWxfanNfZnJvbV9zdHJpbmcgOiBzdHJpbmcgLT4gSnMudCA9IFwiY2FtbF9qc19mcm9tX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgY2FtbF9qc190b19ieXRlX3N0cmluZyA6IEpzLnQgLT4gc3RyaW5nID0gXCJjYW1sX2pzX3RvX2J5dGVfc3RyaW5nXCJcblxuICBleHRlcm5hbCBjYW1sX2pzX3RvX3N0cmluZyA6IEpzLnQgLT4gc3RyaW5nID0gXCJjYW1sX2pzX3RvX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgY2FtbF9saXN0X29mX2pzX2FycmF5IDogJ2EgSnMuanNfYXJyYXkgLT4gJ2EgbGlzdCA9IFwiY2FtbF9saXN0X29mX2pzX2FycmF5XCJcblxuICBleHRlcm5hbCBjYW1sX2xpc3RfdG9fanNfYXJyYXkgOiAnYSBsaXN0IC0+ICdhIEpzLmpzX2FycmF5ID0gXCJjYW1sX2xpc3RfdG9fanNfYXJyYXlcIlxuXG4gIGV4dGVybmFsIHZhcmlhYmxlIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX3ZhclwiXG5cbiAgZXh0ZXJuYWwgY2FtbF9zdHJpbmdfb2ZfYXJyYXkgOiAnYSBhcnJheSAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2FycmF5XCJcbmVuZFxuXG5tb2R1bGUgVHlwZWRfYXJyYXkgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0eXBlZEFycmF5ID0gSnMudFxuXG4gIHR5cGUgYXJyYXlCdWZmZXIgPSBKcy50XG5cbiAgdHlwZSB1aW50OEFycmF5ID0gSnMudFxuXG4gIGV4dGVybmFsIGtpbmQgOiAoJ2EsICdiKSB0eXBlZEFycmF5IC0+ICgnYSwgJ2IpIEJpZ2FycmF5LmtpbmRcbiAgICA9IFwiY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5XCJcblxuICBleHRlcm5hbCBmcm9tX2dlbmFycmF5IDpcbiAgICAoJ2EsICdiLCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuR2VuYXJyYXkudCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5XG4gICAgPSBcImNhbWxfYmFfdG9fdHlwZWRfYXJyYXlcIlxuXG4gIGV4dGVybmFsIHRvX2dlbmFycmF5IDpcbiAgICAoJ2EsICdiKSB0eXBlZEFycmF5IC0+ICgnYSwgJ2IsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5HZW5hcnJheS50XG4gICAgPSBcImNhbWxfYmFfZnJvbV90eXBlZF9hcnJheVwiXG5cbiAgbW9kdWxlIEJpZ3N0cmluZyA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IChjaGFyLCBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkFycmF5MS50XG5cbiAgICBleHRlcm5hbCB0b19hcnJheUJ1ZmZlciA6IHQgLT4gYXJyYXlCdWZmZXIgPSBcImJpZ3N0cmluZ190b19hcnJheV9idWZmZXJcIlxuXG4gICAgZXh0ZXJuYWwgdG9fdWludDhBcnJheSA6IHQgLT4gdWludDhBcnJheSA9IFwiYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5XCJcblxuICAgIGV4dGVybmFsIG9mX2FycmF5QnVmZmVyIDogYXJyYXlCdWZmZXIgLT4gdCA9IFwiYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlclwiXG5cbiAgICBleHRlcm5hbCBvZl91aW50OEFycmF5IDogdWludDhBcnJheSAtPiB0ID0gXCJiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXlcIlxuICBlbmRcblxuICBleHRlcm5hbCBzdHJpbmdfb2ZfdWludDhBcnJheSA6IHVpbnQ4QXJyYXkgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl91aW50OF9hcnJheVwiXG5cbiAgZXh0ZXJuYWwgYnl0ZXNfb2ZfdWludDhBcnJheSA6IHVpbnQ4QXJyYXkgLT4gYnl0ZXMgPSBcImNhbWxfYnl0ZXNfb2ZfdWludDhfYXJyYXlcIlxuXG4gIGV4dGVybmFsIHVpbnQ4QXJyYXlfb2ZfYnl0ZXMgOiBieXRlcyAtPiB1aW50OEFycmF5ID0gXCJjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXCJcbmVuZFxuXG5tb2R1bGUgSW50NjQgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgY3JlYXRlX2ludDY0X2xvX21pX2hpIDogaW50IC0+IGludCAtPiBpbnQgLT4gSW50NjQudFxuICAgID0gXCJjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaVwiXG5lbmRcblxubW9kdWxlIEVmZmVjdCA6IHNpZ1xuICBleHRlcm5hbCBhc3N1bWVfbm9fcGVyZm9ybSA6ICh1bml0IC0+ICdhKSAtPiAnYSA9IFwiY2FtbF9hc3N1bWVfbm9fcGVyZm9ybVwiXG4gICgqKiBQYXNzaW5nIGEgZnVuY3Rpb24gW2ZdIGFzIGFyZ3VtZW50IG9mIGBhc3N1bWVfbm9fcGVyZm9ybWAgZ3VhcmFudGVlcyB0aGF0LFxuICAgICAgd2hlbiBjb21waWxpbmcgd2l0aCBgLS1lZmZlY3RzPWRvdWJsZS10cmFuc2xhdGlvbmAsIHRoZSBkaXJlY3Qtc3R5bGVcbiAgICAgIHZlcnNpb24gb2YgW2ZdIGlzIGNhbGxlZCwgd2hpY2ggaXMgZmFzdGVyIHRoYW4gdGhlIENQUyB2ZXJzaW9uLiBBcyBhXG4gICAgICBjb25zZXF1ZW5jZSwgcGVyZm9ybWluZyBhbiBlZmZlY3QgaW4gYSB0cmFuc2l0aXZlIGNhbGxlZSBvZiBbZl0gd2lsbFxuICAgICAgcmFpc2UgYEVmZmVjdC5VbmhhbmRsZWRgLCByZWdhcmRsZXNzIG9mIGFueSBlZmZlY3QgaGFuZGxlcnMgaW5zdGFsbGVkXG4gICAgICBiZWZvcmUgdGhlIGNhbGwgdG8gYGFzc3VtZV9ub19wZXJmb3JtYCwgdW5sZXNzIGEgbmV3IGVmZmVjdCBoYW5kbGVyIHdhc1xuICAgICAgaW5zdGFsbGVkIGluIHRoZSBtZWFudGltZS5cblxuICAgICAgVGhpcyBiZWhhdmlvdXIgaXMgdGhlIHNhbWUgd2hlbiBkb3VibGUgdHJhbnNsYXRpb24gaXMgZGlzYWJsZWQuICopXG5lbmQgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgYXNzdW1lX25vX3BlcmZvcm0gOiAodW5pdCAtPiAnYSkgLT4gJ2EgPSBcImNhbWxfYXNzdW1lX25vX3BlcmZvcm1cIlxuZW5kXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImdsb2JhbF9kYXRhIiwiQXNzZXJ0X2ZhaWx1cmUiLCJKc29vX3J1bnRpbWVfUnVudGltZV92ZXJzaW9uIiwiU3RkbGliX0NhbGxiYWNrIiwiZWZmZWN0cyIsInBhcmFtIiwibWF0Y2giLCJ2ZXJzaW9uIiwiZ2l0X3ZlcnNpb24iLCJFeG4iLCJFcnJvciJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxpQkFBQTtBQUFBLElBQUFDLCtCQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQTtBQUFBLFlBQUFDLFFBQUFDO0FBQUFBLFFBQUFDLFFDaUtZO0FBQUEsSUFBVyxvQkFFTjtBQUFBLElBRk0seUJBQ0Q7QUFBQSxJQURDO0FBQUEsS0FJVjtBQUFBLElBRG1CO0FBQUEsR0FDUDtBQUFBO0FBQUEsSUFBQUMsVURyS3pCO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLE1BQUE7QUFBQSxHQ3dNVTtBQUFBO0FBQUEsSUFBQUM7QUFBQUEsTUFBNEQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVEeE10RSIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjMyNzk0LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6ImJyci5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvYnJyL2pzdHIubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgQ29weXJpZ2h0IChjKSAyMDIwIFRoZSBicnIgcHJvZ3JhbW1lcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbigqIE1pbmkgSnYsIHRoaXMgYWxsb3dzIHVzIHRvIHVzZSBKc3RyIGluIEp2ICopXG5cbnR5cGUganZcbmV4dGVybmFsIGp2X2NhbGwgOiBqdiAtPiBzdHJpbmcgLT4ganYgYXJyYXkgLT4gJ2EgPSBcImNhbWxfanNfbWV0aF9jYWxsXCJcbmV4dGVybmFsIGp2X2FwcGx5IDoganYgLT4ganYgYXJyYXkgLT4gJ2EgPSBcImNhbWxfanNfZnVuX2NhbGxcIlxuZXh0ZXJuYWwganZfZ2V0IDoganYgLT4gc3RyaW5nIC0+IGp2ID0gXCJjYW1sX2pzX2dldFwiXG5leHRlcm5hbCBqdl9vZl9pbnQgOiBpbnQgLT4ganYgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBqdl90b19pbnQgOiBqdiAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBqdl9vZl9mbG9hdCA6IGZsb2F0IC0+IGp2ID0gXCJjYW1sX2pzX2Zyb21fZmxvYXRcIlxuZXh0ZXJuYWwganZfdG9fZmxvYXQgOiBqdiAtPiBmbG9hdCA9IFwiY2FtbF9qc190b19mbG9hdFwiXG5leHRlcm5hbCBqdl90b19ib29sIDoganYgLT4gYm9vbCA9IFwiY2FtbF9qc190b19ib29sXCJcbmV4dGVybmFsIGp2X3B1cmVfanNfZXhwciA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9wdXJlX2pzX2V4cHJcIlxubGV0IGp2X2dsb2JhbCA9IGp2X3B1cmVfanNfZXhwciBcImdsb2JhbFRoaXNcIlxuXG4oKiBTdHJpbmdzICopXG5cbnR5cGUgdCA9IGp2XG5leHRlcm5hbCBqdl90b19qc3RyX2xpc3QgOiBqdiAtPiB0IGxpc3QgPSBcImNhbWxfbGlzdF9vZl9qc19hcnJheVwiXG5leHRlcm5hbCBqdl9vZl9qc3RyX2xpc3QgOiB0IGxpc3QgLT4ganYgPSBcImNhbWxfbGlzdF90b19qc19hcnJheVwiXG5leHRlcm5hbCB2IDogc3RyaW5nIC0+IHQgPSBcImNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXCJcbmxldCBsZW5ndGggcyA9IGp2X3RvX2ludCAoanZfZ2V0IHMgXCJsZW5ndGhcIilcblxuZXh0ZXJuYWwganN0cl90b19zdHJpbmcgOiB0IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcIlxubGV0IGpzdHJfb2ZfaW50ID8oYmFzZSA9IDEwKSBpID1cbiAganZfY2FsbCAoanZfb2ZfaW50IGkpIFwidG9TdHJpbmdcIiBbfCBqdl9vZl9pbnQgYmFzZSB8XVxuXG5sZXQgZXJyX2JvdW5kcyBpIGxlbiA9XG4gIGxldCAoICsgKSBzMCBzMSA9IGp2X2NhbGwgczAgXCJjb25jYXRcIiBbfCBzMSB8XSBpblxuICBqc3RyX3RvX3N0cmluZyBAQFxuICB2IFwiaW5kZXggXCIgKyBqc3RyX29mX2ludCBpICsgdiBcIiBub3QgaW4gYm91bmRzIFswO1wiICtcbiAganN0cl9vZl9pbnQgKGxlbiAtIDEpICsgdiBcIl1cIlxuXG5sZXQgZ2V0IHMgaSA9XG4gIGlmIGkgPj0gbGVuZ3RoIHMgdGhlbiBpbnZhbGlkX2FyZyAoZXJyX2JvdW5kcyBpIChsZW5ndGggcykpIGVsc2VcbiAgbGV0IHUgPSBqdl90b19pbnQgKGp2X2NhbGwgcyBcImNvZGVQb2ludEF0XCIgW3xqdl9vZl9pbnQgaXxdKSBpblxuICBsZXQgdSA9IGlmIHUgPCAweEQ4MDAgfHwgdSA+IDB4REZGRiB0aGVuIHUgZWxzZSAweEZGRkQgKCogVWNoYXIucmVwICopIGluXG4gIFVjaGFyLnVuc2FmZV9vZl9pbnQgdVxuXG5sZXQganN0cl9vZl91Y2hhcl9pbnQgaSA9XG4gIGp2X2NhbGwgKGp2X2dldCBqdl9nbG9iYWwgXCJTdHJpbmdcIikgXCJmcm9tQ29kZVBvaW50XCIgW3wganZfb2ZfaW50IGkgfF1cblxubGV0IGdldF9qc3RyIHMgaSA9IGpzdHJfb2ZfdWNoYXJfaW50IChVY2hhci50b19pbnQgKGdldCBzIGkpKVxuXG4oKiBDb25zdGFudHMgKilcblxubGV0IGVtcHR5ID0gdiBcIlwiXG5sZXQgc3AgPSB2IFwiIFwiXG5sZXQgbmwgPSB2IFwiXFxuXCJcblxuKCogQXNzZW1ibGluZyAqKVxuXG5sZXQgYXBwZW5kIHMwIHMxID0ganZfY2FsbCBzMCBcImNvbmNhdFwiIFt8IHMxIHxdXG5sZXQgKCArICkgPSBhcHBlbmRcbmxldCBjb25jYXQgPyhzZXAgPSBlbXB0eSkgc3MgPSBqdl9jYWxsIChqdl9vZl9qc3RyX2xpc3Qgc3MpIFwiam9pblwiIFt8IHNlcCB8XVxubGV0IHBhZF9zdGFydCA/KHBhZCA9IHNwKSBsZW4gcyA9IGp2X2NhbGwgcyBcInBhZFN0YXJ0XCIgW3wganZfb2ZfaW50IGxlbjsgcGFkIHxdXG5sZXQgcGFkX2VuZCA/KHBhZCA9IHNwKSBsZW4gcyA9IGp2X2NhbGwgcyBcInBhZEVuZFwiIFt8IGp2X29mX2ludCBsZW47IHBhZCB8XVxubGV0IHJlcGVhdCBuIHMgPSBqdl9jYWxsIHMgXCJyZXBlYXRcIiBbfCBqdl9vZl9pbnQgbiB8XVxuXG4oKiBGaW5kaW5nICopXG5cbmxldCBmaW5kX3N1YiA/KHN0YXJ0ID0gMCkgfnN1YiBzID1cbiAgbGV0IGkgPSBqdl90b19pbnQgKGp2X2NhbGwgcyBcImluZGV4T2ZcIiBbfCBzdWI7IGp2X29mX2ludCBzdGFydCB8XSkgaW5cbiAgaWYgaSA9IC0xIHRoZW4gTm9uZSBlbHNlIFNvbWUgaVxuXG5sZXQgZmluZF9sYXN0X3N1YiA/YmVmb3JlIH5zdWIgcyA9XG4gIGxldCBiZWZvcmUgPSBtYXRjaCBiZWZvcmUgd2l0aCBOb25lIC0+IGxlbmd0aCBzIHwgU29tZSBiIC0+IGIgaW5cbiAgbGV0IHBvcyA9IGJlZm9yZSAtIGxlbmd0aCBzdWIgaW5cbiAgaWYgcG9zIDwgMCB0aGVuIE5vbmUgZWxzZVxuICBsZXQgaSA9IGp2X3RvX2ludCAoanZfY2FsbCBzIFwibGFzdEluZGV4T2ZcIiBbfHN1YjsganZfb2ZfaW50IHBvc3xdKSBpblxuICBpZiBpID0gLTEgdGhlbiBOb25lIGVsc2UgU29tZSBpXG5cbigqIEJyZWFraW5nICopXG5cbmxldCBzbGljZSA/KHN0YXJ0ID0gMCkgP3N0b3AgcyA9XG4gIGxldCBhcmdzID0gbWF0Y2ggc3RvcCB3aXRoXG4gIHwgTm9uZSAtPiBbfCBqdl9vZl9pbnQgc3RhcnQgfF1cbiAgfCBTb21lIHN0b3AgLT4gW3wganZfb2ZfaW50IHN0YXJ0OyBqdl9vZl9pbnQgc3RvcCB8XVxuICBpblxuICBqdl9jYWxsIHMgXCJzbGljZVwiIGFyZ3NcblxubGV0IHN1YiA/KHN0YXJ0ID0gMCkgP2xlbiBzID1cbiAgbGV0IGFyZ3MgPSBtYXRjaCBsZW4gd2l0aFxuICB8IE5vbmUgLT4gW3wganZfb2ZfaW50IHN0YXJ0IHxdXG4gIHwgU29tZSBsZW4gLT4gW3wganZfb2ZfaW50IHN0YXJ0OyBqdl9vZl9pbnQgbGVuIHxdXG4gIGluXG4gIGp2X2NhbGwgcyBcInN1YnN0clwiIGFyZ3NcblxubGV0IGN1dHMgfnNlcCBzID0ganZfdG9fanN0cl9saXN0IChqdl9jYWxsIHMgXCJzcGxpdFwiIFt8IHNlcCB8XSlcblxuKCogVHJhdmVyc2luZyBhbmQgdHJhbnNmb3JtaW5nICopXG5cbmxldCBpdGVyYXRvciA6IGp2ID0ganZfcHVyZV9qc19leHByIFwiU3ltYm9sLml0ZXJhdG9yXCJcbmV4dGVybmFsIGdldF9zeW1ib2wgOiBqdiAtPiBqdiAtPiBqdiA9IFwiY2FtbF9qc19nZXRcIlxuXG5sZXQgZm9sZF91Y2hhcnMgZiBzIGFjYyA9XG4gIGxldCByZWMgbG9vcCBpdCBhY2MgPVxuICAgIGxldCByID0ganZfY2FsbCBpdCBcIm5leHRcIiBbfHxdIGluXG4gICAgaWYganZfdG9fYm9vbCAoanZfZ2V0IHIgXCJkb25lXCIpIHRoZW4gYWNjIGVsc2VcbiAgICBsZXQgdSA9IGp2X2NhbGwgKGp2X2dldCByIFwidmFsdWVcIikgXCJjb2RlUG9pbnRBdFwiIFt8IGp2X29mX2ludCAwIHxdIGluXG4gICAgbGV0IHUgPSBpZiB1IDwgMHhEODAwIHx8IHUgPiAweERGRkYgdGhlbiB1IGVsc2UgMHhGRkZEICgqIFVjaGFyLnJlcCAqKSBpblxuICAgIGxvb3AgaXQgKGYgKFVjaGFyLnVuc2FmZV9vZl9pbnQgdSkgYWNjKVxuICBpblxuICBsb29wIChqdl9hcHBseSAoZ2V0X3N5bWJvbCBzIGl0ZXJhdG9yKSBbfHxdKSBhY2NcblxubGV0IGZvbGRfanN0cl91Y2hhcnMgZiBzIGFjYyA9XG4gIGxldCBmJyB1IGFjYyA9IGYgKGpzdHJfb2ZfdWNoYXJfaW50IChVY2hhci50b19pbnQgdSkpIGFjYyBpblxuICBmb2xkX3VjaGFycyBmJyBzIGFjY1xuXG5sZXQgdHJpbSBzID0ganZfY2FsbCBzIFwidHJpbVwiIFt8fF1cblxuKCogTm9ybWFsaXphdGlvbiAqKVxuXG50eXBlIG5vcm1hbGl6YXRpb24gPSBbIGBORkQgfCBgTkZDIHwgYE5GS0QgfCBgTkZLQyBdXG5cbmxldCBub3JtYWxpemVkIG5mIHMgPVxuICBsZXQgbmYgPSBtYXRjaCBuZiB3aXRoXG4gIHwgYE5GRCAtPiB2IFwiTkZEXCIgfCBgTkZDIC0+IHYgXCJORkNcIiB8IGBORktEIC0+IHYgXCJORktEXCIgfCBgTkZLQyAtPiB2IFwiTkZLQ1wiXG4gIGluXG4gIGp2X2NhbGwgcyBcIm5vcm1hbGl6ZVwiIFt8IG5mIHxdXG5cbigqIENhc2UgbWFwcGluZyAqKVxuXG5sZXQgbG93ZXJjYXNlZCBzID0ganZfY2FsbCBzIFwidG9Mb3dlckNhc2VcIiBbfHxdXG5sZXQgdXBwZXJjYXNlZCBzID0ganZfY2FsbCBzIFwidG9VcHBlckNhc2VcIiBbfHxdXG5cbigqIFByZWRpY2F0ZXMgYW5kIGNvbXBhcmlzb25zICopXG5cbmxldCBpc19lbXB0eSBzID0gbGVuZ3RoIHMgPSAwXG5sZXQgc3RhcnRzX3dpdGggfnByZWZpeCBzID0ganZfdG9fYm9vbCBAQCBqdl9jYWxsIHMgXCJzdGFydHNXaXRoXCIgW3wgcHJlZml4IHxdXG5sZXQgaW5jbHVkZXMgfmFmZml4IHMgPSBqdl90b19ib29sIEBAIGp2X2NhbGwgcyBcImluY2x1ZGVzXCIgW3wgYWZmaXggfF1cbmxldCBlbmRzX3dpdGggfnN1ZmZpeCBzID0ganZfdG9fYm9vbCBAQCBqdl9jYWxsIHMgXCJlbmRzV2l0aFwiIFt8IHN1ZmZpeCB8XVxubGV0IGVxdWFsID0gKCA9IClcbmxldCBjb21wYXJlID0gY29tcGFyZVxuXG4oKiBDb252ZXJzaW9ucyAqKVxuXG5sZXQgb2ZfdWNoYXIgdSA9IGpzdHJfb2ZfdWNoYXJfaW50IChVY2hhci50b19pbnQgdSlcbmxldCBvZl9jaGFyIGMgPSBqc3RyX29mX3VjaGFyX2ludCAoQ2hhci5jb2RlIGMpXG5cbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiB0ID0gXCJjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1wiXG5leHRlcm5hbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcIlxuZXh0ZXJuYWwgYmluYXJ5X3RvX29jdGV0cyA6IHQgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9qc2J5dGVzXCJcbmV4dGVybmFsIGJpbmFyeV9vZl9vY3RldHMgOiBzdHJpbmcgLT4gdCA9IFwiY2FtbF9qc2J5dGVzX29mX3N0cmluZ1wiXG5cbmxldCBudW1iZXIgPSBqdl9nZXQganZfZ2xvYmFsIFwiTnVtYmVyXCJcblxubGV0IG9mX2ludCA9IGpzdHJfb2ZfaW50XG5sZXQgdG9faW50ID9iYXNlIHMgPVxuICBsZXQgYXJncyA9IG1hdGNoIGJhc2Ugd2l0aCBOb25lIC0+IFt8IHMgfF0gfCBTb21lIGIgLT4gW3wgczsganZfb2ZfaW50IGIgfF0gaW5cbiAgbGV0IG4gPSBqdl9jYWxsIG51bWJlciBcInBhcnNlSW50XCIgYXJncyBpblxuICBpZiBub3QgKG4gPSBuKSB0aGVuICgqIE5hTiAqKSBOb25lIGVsc2UgU29tZSAoanZfdG9faW50IG4pXG5cbmxldCB0b19mbG9hdCBzID0ganZfdG9fZmxvYXQgQEAganZfY2FsbCBudW1iZXIgXCJwYXJzZUZsb2F0XCIgW3wgcyB8XVxubGV0IG9mX2Zsb2F0ID9mcmFjIG4gPSBtYXRjaCBmcmFjIHdpdGhcbnwgTm9uZSAtPiBqdl9jYWxsIChqdl9vZl9mbG9hdCBuKSBcInRvU3RyaW5nXCIgW3x8XVxufCBTb21lIGZyYWMgLT4ganZfY2FsbCAoanZfb2ZfZmxvYXQgbikgXCJ0b0ZpeGVkXCIgW3xqdl9vZl9pbnQgZnJhY3xdXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfZXF1YWwiLCJjYW1sX2pzX21ldGhfY2FsbCIsImNhbWxfbGlzdF9vZl9qc19hcnJheSIsImNhbWxfY2FsbDIiLCJmIiwiYTAiLCJhMSIsImdsb2JhbF9kYXRhIiwiU3RkbGliX1VjaGFyIiwiU3RkbGliIiwianZfZ2xvYmFsIiwibGVuZ3RoIiwicyIsImpzdHJfb2ZfaW50Iiwib3B0IiwiaSIsImJhc2UiLCJnZXQiLCJsZW4iLCJzMSIsInMwIiwidSIsImpzdHJfb2ZfdWNoYXJfaW50IiwiZ2V0X2pzdHIiLCJhcHBlbmQiLCJlbXB0eSIsImNvbmNhdCIsInNzIiwic2VwIiwic3AiLCJwYWRfc3RhcnQiLCJwYWQiLCJwYWRfZW5kIiwicmVwZWF0IiwibiIsImZpbmRfc3ViIiwic3ViIiwic3RhcnQiLCJmaW5kX2xhc3Rfc3ViIiwiYmVmb3JlIiwiYiIsInBvcyIsInNsaWNlIiwic3RvcCIsImFyZ3MiLCJjdXRzIiwiaXRlcmF0b3IiLCJmb2xkX3VjaGFycyIsImFjYyIsIml0IiwiciIsImZvbGRfanN0cl91Y2hhcnMiLCJ0cmltIiwibm9ybWFsaXplZCIsIm5mIiwibG93ZXJjYXNlZCIsInVwcGVyY2FzZWQiLCJpc19lbXB0eSIsInN0YXJ0c193aXRoIiwicHJlZml4IiwiaW5jbHVkZXMiLCJhZmZpeCIsImVuZHNfd2l0aCIsInN1ZmZpeCIsImNvbXBhcmUiLCJvZl91Y2hhciIsIm9mX2NoYXIiLCJjIiwibnVtYmVyIiwidG9faW50IiwidG9fZmxvYXQiLCJvZl9mbG9hdCIsImZyYWMiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLG9CQUFBO0FBQUEsSUFBQUMsd0JBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQyxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxZQ2lCZ0I7QUFBQSxZQUFBQyxPQUFBQyxHQVE0QjtBQUFBLFlBQUFDLFlBQUFDLEtBQUFDO0FBQUFBLFFBQUFDLE9BRzVCO0FBQUEsSUFDZCx1QkFBcUQ7QUFBQTtBQUFBLFlBQUFDLElBQUFMLEdBQUFHO0FBQUFBLElBU3JDO0FBQUE7QUFBQSxNQUFBRyxNQWJPO0FBQUEsTUFBQUMsS0FVdkI7QUFBQSxNQUFBQSxPQURhO0FBQUEsTUFBQUMsS0FGSztBQUFBLE1BQUFBLE9BQUE7QUFBQSxNQUFBQSxPQUFBO0FBQUEsVUFDbEIsZ0NBRGtCO0FBQUEsS0FNeUMsOEJBR3RDO0FBQUE7QUFBQSxRQUFBQyxJQUZILGtCQUFBQSxNQUNsQjtBQUFBLElBQ0Esc0NBQXFCO0FBQUE7QUFBQSxZQUFBQyxrQkFBQVAsR0FHckIsd0NBQXFFO0FBQUEsWUFBQVEsU0FBQVgsR0FBQUc7QUFBQUEsUUFBQSxJQUVw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QTtBQUFBLFlBQUFvQyxTQUFBMUQsR0FFNUIsMkJBQW1DO0FBQUEsWUFBQTJELFNBQUFDLE1BQUF0QztBQUFBQSxJQUM1QyxXQUNiLG1CQUN5RDtBQUFBLFFBQUFzQyxTQUY1QztBQUFBLElBRVIsd0JBQW9EO0FBQUE7QUFBQSxHQVg3QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVEckp0QyIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjMyOTc4LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6ImJyci5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvYnJyL2p2Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIENvcHlyaWdodCAoYykgMjAyMCBUaGUgYnJyIHByb2dyYW1tZXJzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG5leHRlcm5hbCBwdXJlX2pzX2V4cHIgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfcHVyZV9qc19leHByXCJcbmV4dGVybmFsIGpzX2V4cHIgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfZXhwclwiXG5cbigqIFZhbHVlcyAqKVxuXG50eXBlIHRcbnR5cGUganYgPSB0XG5cbmV4dGVybmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcbmV4dGVybmFsIHN0cmljdF9lcXVhbCA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuZXh0ZXJuYWwgdHlwZW9mIDogdCAtPiBKc3RyLnQgPSBcImNhbWxfanNfdHlwZW9mXCJcbmV4dGVybmFsIGluc3RhbmNlb2YgOiB0IC0+IGNvbnM6dCAtPiBib29sID0gXCJjYW1sX2pzX2luc3RhbmNlb2ZcIlxuZXh0ZXJuYWwgcmVwciA6ICdhIC0+IHQgPSBcIiVpZGVudGl0eVwiXG5cbigqIE51bGwgYW5kIHVuZGVmaW5lZCAqKVxuXG5sZXQgbnVsbCA9IHB1cmVfanNfZXhwciBcIm51bGxcIlxubGV0IHVuZGVmaW5lZCA9IHB1cmVfanNfZXhwciBcInVuZGVmaW5lZFwiXG5sZXQgaXNfbnVsbCB2ID0gc3RyaWN0X2VxdWFsIHYgbnVsbFxubGV0IGlzX3VuZGVmaW5lZCB2ID0gc3RyaWN0X2VxdWFsIHYgdW5kZWZpbmVkXG5sZXQgaXNfbm9uZSB2ID0gaXNfbnVsbCB2IHx8IGlzX3VuZGVmaW5lZCB2XG5sZXQgaXNfc29tZSB2ID0gbm90IChpc19ub25lIHYpXG5sZXQgdG9fb3B0aW9uIGNvbnYgdiA9IGlmIGlzX25vbmUgdiB0aGVuIE5vbmUgZWxzZSBTb21lIChjb252IHYpXG5sZXQgb2Zfb3B0aW9uIH5ub25lIGNvbnYgPSBmdW5jdGlvbiBOb25lIC0+IG5vbmUgfCBTb21lIHYgLT4gY29udiB2XG5cbigqIE9iamVjdHMgKilcblxubGV0IGdsb2JhbCA9IHB1cmVfanNfZXhwciBcImdsb2JhbFRoaXNcIlxuXG4oKiBQcm9wZXJ0aWVzICopXG5cbnR5cGUgcHJvcCA9IHN0cmluZ1xuXG5leHRlcm5hbCBnZXQgOiB0IC0+IHByb3AgLT4gdCA9IFwiY2FtbF9qc19nZXRcIlxuZXh0ZXJuYWwgc2V0IDogdCAtPiBwcm9wIC0+IHQgLT4gdW5pdCA9IFwiY2FtbF9qc19zZXRcIlxuZXh0ZXJuYWwgZGVsZXRlIDogdCAtPiBwcm9wIC0+IHVuaXQgPSBcImNhbWxfanNfZGVsZXRlXCJcbmxldCBzZXRfaWZfc29tZSBvIHAgPSBmdW5jdGlvbiBOb25lIC0+ICgpIHwgU29tZSB2IC0+IHNldCBvIHAgdlxubGV0IGZpbmQgbyBwID0gbGV0IHYgPSBnZXQgbyBwIGluIGlmIGlzX25vbmUgdiB0aGVuIE5vbmUgZWxzZSBTb21lIHZcbmxldCBmaW5kX21hcCBmIG8gcCA9IGxldCB2ID0gZ2V0IG8gcCBpbiBpZiBpc19ub25lIHYgdGhlbiBOb25lIGVsc2UgU29tZSAoZiB2KVxubGV0IHJlYyBmaW5kX3BhdGggbyA9IGZ1bmN0aW9uXG58IFtdIC0+IFNvbWUgb1xufCBwIDo6IHBzIC0+IG1hdGNoIGZpbmQgbyBwIHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSBvIC0+IGZpbmRfcGF0aCBvIHBzXG5cbigqIENyZWF0aW5nICopXG5cbmV4dGVybmFsIG9iaiA6IChwcm9wICogdCkgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19vYmplY3RcIlxuZXh0ZXJuYWwgbmV3JyA6IHQgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX25ld1wiXG5cbigqIE1ldGhvZHMgKilcblxuZXh0ZXJuYWwgY2FsbCA6IHQgLT4gc3RyaW5nIC0+IHQgYXJyYXkgLT4gJ2EgPSBcImNhbWxfanNfbWV0aF9jYWxsXCJcblxuKCogQm9vbGVhbnMgKilcblxubGV0IHRydWUnID0gcHVyZV9qc19leHByIFwidHJ1ZVwiXG5sZXQgZmFsc2UnID0gcHVyZV9qc19leHByIFwiZmFsc2VcIlxuZXh0ZXJuYWwgdG9fYm9vbCA6IHQgLT4gYm9vbCA9IFwiY2FtbF9qc190b19ib29sXCJcbmV4dGVybmFsIG9mX2Jvb2wgOiBib29sIC0+IHQgPSBcImNhbWxfanNfZnJvbV9ib29sXCJcbm1vZHVsZSBCb29sID0gc3RydWN0XG4gIGxldCBmaW5kIG8gcCA9IGxldCBiID0gZ2V0IG8gcCBpbiBpZiBpc19ub25lIGIgdGhlbiBOb25lIGVsc2UgU29tZSAodG9fYm9vbCBiKVxuICBsZXQgZ2V0IG8gcCA9IHRvX2Jvb2wgKGdldCBvIHApXG4gIGxldCBzZXQgbyBwIGIgPSBzZXQgbyBwIChvZl9ib29sIGIpXG4gIGxldCBzZXRfaWZfc29tZSBvIHAgPSBmdW5jdGlvbiBOb25lIC0+ICgpIHwgU29tZSBiIC0+IHNldCBvIHAgYlxuZW5kXG5cbigqIEludGVnZXJzICopXG5cbmV4dGVybmFsIHRvX2ludCA6IHQgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5tb2R1bGUgSW50ID0gc3RydWN0XG4gIGxldCBmaW5kIG8gcCA9IGxldCBpID0gZ2V0IG8gcCBpbiBpZiBpc19ub25lIGkgdGhlbiBOb25lIGVsc2UgU29tZSAodG9faW50IGkpXG4gIGxldCBnZXQgbyBwID0gdG9faW50IChnZXQgbyBwKVxuICBsZXQgc2V0IG8gcCBpID0gc2V0IG8gcCAob2ZfaW50IGkpXG4gIGxldCBzZXRfaWZfc29tZSBvIHAgPSBmdW5jdGlvbiBOb25lIC0+ICgpIHwgU29tZSBpIC0+IHNldCBvIHAgaVxuZW5kXG5cbigqIEZsb2F0cyAqKVxuXG5leHRlcm5hbCB0b19mbG9hdCA6IHQgLT4gZmxvYXQgPSBcImNhbWxfanNfdG9fZmxvYXRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fZmxvYXRcIlxubW9kdWxlIEZsb2F0ID0gc3RydWN0XG4gIGxldCBmaW5kIG8gcCA9IGxldCBmID0gZ2V0IG8gcCBpbiBpZiBpc19ub25lIGYgdGhlbiBOb25lIGVsc2UgU29tZSh0b19mbG9hdCBmKVxuICBsZXQgZ2V0IG8gcCA9IHRvX2Zsb2F0IChnZXQgbyBwKVxuICBsZXQgc2V0IG8gcCBiID0gc2V0IG8gcCAob2ZfZmxvYXQgYilcbiAgbGV0IHNldF9pZl9zb21lIG8gcCA9IGZ1bmN0aW9uIE5vbmUgLT4gKCkgfCBTb21lIGYgLT4gc2V0IG8gcCBmXG5lbmRcblxuKCogSW50MzIgKilcblxuZXh0ZXJuYWwgdG9faW50MzIgOiB0IC0+IGludDMyID0gXCJjYW1sX2pzX3RvX2ludDMyXCJcbmV4dGVybmFsIG9mX2ludDMyIDogaW50MzIgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2ludDMyXCJcbm1vZHVsZSBJbnQzMiA9IHN0cnVjdFxuICBsZXQgZmluZCBvIHAgPSBsZXQgZiA9IGdldCBvIHAgaW4gaWYgaXNfbm9uZSBmIHRoZW4gTm9uZSBlbHNlIFNvbWUodG9faW50MzIgZilcbiAgbGV0IGdldCBvIHAgPSB0b19pbnQzMiAoZ2V0IG8gcClcbiAgbGV0IHNldCBvIHAgYiA9IHNldCBvIHAgKG9mX2ludDMyIGIpXG4gIGxldCBzZXRfaWZfc29tZSBvIHAgPSBmdW5jdGlvbiBOb25lIC0+ICgpIHwgU29tZSBmIC0+IHNldCBvIHAgZlxuZW5kXG5cbigqIEpzdHIgKilcblxuZXh0ZXJuYWwgdG9fanN0ciA6IHQgLT4gSnN0ci50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgb2ZfanN0ciA6IEpzdHIudCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxubW9kdWxlIEpzdHIgPSBzdHJ1Y3RcbiAgbGV0IGZpbmQgbyBwID0gbGV0IHMgPSBnZXQgbyBwIGluIGlmIGlzX25vbmUgcyB0aGVuIE5vbmUgZWxzZSBTb21lICh0b19qc3RyIHMpXG4gIGxldCBnZXQgbyBwID0gdG9fanN0ciAoZ2V0IG8gcClcbiAgbGV0IHNldCBvIHAgYiA9IHNldCBvIHAgKG9mX2pzdHIgYilcbiAgbGV0IHNldF9pZl9zb21lIG8gcCA9IGZ1bmN0aW9uIE5vbmUgLT4gKCkgfCBTb21lIGYgLT4gc2V0IG8gcCBmXG5cbiAgKCogV2hlbiBkbyB3ZSBnZXQgLi4vID8gKilcbiAgdHlwZSB0ID0gSnN0ci50XG4gIGxldCB0b19zdHJpbmcgPSBKc3RyLnRvX3N0cmluZ1xuZW5kXG5cbigqIFN0cmluZyAqKVxuXG5leHRlcm5hbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gdCA9IFwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcIlxuZXh0ZXJuYWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXCJcblxuKCogQXJyYXlzICopXG5cbmxldCBpc19hcnJheSBqdiA9IHRvX2Jvb2wgKGNhbGwgKGdldCBnbG9iYWwgXCJBcnJheVwiKSBcImlzQXJyYXlcIiBbfCBqdiB8XSlcblxubW9kdWxlIEphcnJheSA9IHN0cnVjdFxuICB0eXBlIHQgPSBqdlxuICBsZXQgY3JlYXRlIG4gPSBuZXcnIChnZXQgZ2xvYmFsIFwiQXJyYXlcIikgW3wgb2ZfaW50IG4gfF1cbiAgbGV0IGxlbmd0aCBhID0gdG9faW50IChnZXQgYSBcImxlbmd0aFwiKVxuICBleHRlcm5hbCBnZXQgOiB0IC0+IGludCAtPiB0ID0gXCJjYW1sX2pzX2dldFwiXG4gIGV4dGVybmFsIHNldCA6IHQgLT4gaW50IC0+IHQgLT4gdW5pdCA9IFwiY2FtbF9qc19zZXRcIlxuZW5kXG5cbmxldCB0b19hcnJheSBjb252IHYgPVxuICBsZXQgbGVuID0gSmFycmF5Lmxlbmd0aCB2IGluXG4gIEFycmF5LmluaXQgbGVuIChmdW4gaSAtPiBjb252IChKYXJyYXkuZ2V0IHYgaSkpXG5cbmxldCBvZl9hcnJheSBjb252IGEgPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgbGV0IGphID0gSmFycmF5LmNyZWF0ZSBsZW4gaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG8gSmFycmF5LnNldCBqYSBpIChjb252IChBcnJheS5nZXQgYSBpKSkgZG9uZTtcbiAgamFcblxubGV0IHRvX2xpc3QgY29udiB2ID1cbiAgbGV0IGxlbiA9IEphcnJheS5sZW5ndGggdiBpblxuICBMaXN0LmluaXQgbGVuIChmdW4gaSAtPiBjb252IChKYXJyYXkuZ2V0IHYgaSkpXG5cbmxldCBvZl9saXN0IGNvbnYgbCA9XG4gICgqIFNob3VsZCBiZSBiZW5jaG1hcmtlZCBjaGVja2luZyBsZW5ndGggb2YgW2xdIGZpcnN0IG1heSBiZSBmYXN0ZXJcbiAgICAgICB0aGFuIGV4dGVuZGluZyB0aGUgYXJyYXkgcmVwZWF0ZWRseSAqKVxuICBsZXQgcmVjIGxvb3AgaSBqYSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gamFcbiAgfCB2IDo6IHZzIC0+IEphcnJheS5zZXQgamEgaSAoY29udiB2KTsgbG9vcCAoaSArIDEpIGphIHZzXG4gIGluXG4gIGxvb3AgMCAoSmFycmF5LmNyZWF0ZSAwKSBsXG5cbmV4dGVybmFsIHRvX2p2X2FycmF5IDogdCAtPiB0IGFycmF5ID0gXCJjYW1sX2pzX3RvX2FycmF5XCJcbmV4dGVybmFsIG9mX2p2X2FycmF5IDogdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fYXJyYXlcIlxuZXh0ZXJuYWwgdG9fanZfbGlzdCA6IHQgLT4gdCBsaXN0ID0gXCJjYW1sX2xpc3Rfb2ZfanNfYXJyYXlcIlxuZXh0ZXJuYWwgb2ZfanZfbGlzdCA6IHQgbGlzdCAtPiB0ID0gXCJjYW1sX2xpc3RfdG9fanNfYXJyYXlcIlxuZXh0ZXJuYWwgdG9fanN0cl9hcnJheSA6IHQgLT4gSnN0ci50IGFycmF5ID0gXCJjYW1sX2pzX3RvX2FycmF5XCJcbmV4dGVybmFsIG9mX2pzdHJfYXJyYXkgOiBKc3RyLnQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2FycmF5XCJcbmV4dGVybmFsIHRvX2pzdHJfbGlzdCA6IHQgLT4gSnN0ci50IGxpc3QgPSBcImNhbWxfbGlzdF9vZl9qc19hcnJheVwiXG5leHRlcm5hbCBvZl9qc3RyX2xpc3QgOiBKc3RyLnQgbGlzdCAtPiB0ID0gXCJjYW1sX2xpc3RfdG9fanNfYXJyYXlcIlxuXG4oKiBGdW5jdGlvbnMgKilcblxuZXh0ZXJuYWwgYXBwbHkgOiB0IC0+IHQgYXJyYXkgLT4gJ2EgPSBcImNhbWxfanNfZnVuX2NhbGxcIlxuZXh0ZXJuYWwgY2FsbGJhY2sgOiBhcml0eTppbnQgLT4gKF8gLT4gXykgLT4gdCA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdFwiXG5cbigqIEVycm9ycyAqKVxuXG5tb2R1bGUgRXJyb3IgPSBzdHJ1Y3RcbiAgdHlwZSBlbnVtID1cbiAgWyBgQWJvcnRfZXJyb3IgfCBgQ29uc3RyYWludF9lcnJvciB8IGBEYXRhX2Nsb25lX2Vycm9yIHwgYERhdGFfZXJyb3JcbiAgfCBgRW5jb2RpbmdfZXJyb3IgfCBgSGllcmFyY2h5X3JlcXVlc3RfZXJyb3IgfCBgSW5kZXhfc2l6ZV9lcnJvclxuICB8IGBJbnZhbGlkX2FjY2Vzc19lcnJvciB8IGBJbnZhbGlkX2NoYXJhY3Rlcl9lcnJvclxuICB8IGBJbnZhbGlkX21vZGlmaWNhdGlvbl9lcnJvciB8IGBJbnZhbGlkX25vZGVfdHlwZV9lcnJvclxuICB8IGBJbnZhbGlkX3N0YXRlX2Vycm9yIHwgYE5hbWVzcGFjZV9lcnJvciB8IGBOZXR3b3JrX2Vycm9yXG4gIHwgYE5vX21vZGlmaWNhdGlvbl9hbGxvd2VkX2Vycm9yIHwgYE5vdF9hbGxvd2VkX2Vycm9yIHwgYE5vdF9mb3VuZF9lcnJvclxuICB8IGBOb3RfcmVhZGFibGVfZXJyb3IgfCBgTm90X3N1cHBvcnRlZF9lcnJvciB8IGBPcGVyYXRpb25fZXJyb3JcbiAgfCBgUXVvdGFfZXhjZWVkZWRfZXJyb3IgfCBgUmVhZF9vbmx5X2Vycm9yIHwgYFNlY3VyaXR5X2Vycm9yXG4gIHwgYFN5bnRheF9lcnJvciB8IGBUaW1lb3V0X2Vycm9yIHwgYFRyYW5zYWN0aW9uX2luYWN0aXZlX2Vycm9yIHwgYFR5cGVfZXJyb3JcbiAgfCBgVHlwZV9taXNtYXRjaF9lcnJvciB8IGBVcmxfbWlzbWF0Y2hfZXJyb3IgfCBgVW5rbm93bl9lcnJvclxuICB8IGBWZXJzaW9uX2Vycm9yIHwgYFdyb25nX2RvY3VtZW50X2Vycm9yIHwgYE90aGVyIF1cblxuICB0eXBlIHQgPSBKc29vX3J1bnRpbWUuRXJyb3IudFxuICBsZXQgdiA/bmFtZSBtc2cgOiB0ID1cbiAgICBsZXQgZSA9IG5ldycgKGdldCBnbG9iYWwgXCJFcnJvclwiKSBbfCBvZl9qc3RyIG1zZyB8XSBpblxuICAgIG1hdGNoIG5hbWUgd2l0aFxuICAgIHwgTm9uZSAtPiBPYmoubWFnaWMgZVxuICAgIHwgU29tZSBuIC0+IHNldCBlIFwibmFtZVwiIChvZl9qc3RyIG4pOyBPYmoubWFnaWMgZVxuXG4gIGxldCBuYW1lIChlIDogdCkgPSB0b19qc3RyIChnZXQgKE9iai5tYWdpYyBlKSBcIm5hbWVcIilcbiAgbGV0IGVudW0gZSA9IG1hdGNoIHRvX3N0cmluZyAoZ2V0IChPYmoubWFnaWMgZSkgXCJuYW1lXCIpIHdpdGhcbiAgfCBcIkFib3J0RXJyb3JcIiAtPiBgQWJvcnRfZXJyb3JcbiAgfCBcIkNvbnN0cmFpbnRFcnJvclwiIC0+IGBDb25zdHJhaW50X2Vycm9yXG4gIHwgXCJEYXRhQ2xvbmVFcnJvclwiIC0+IGBEYXRhX2Nsb25lX2Vycm9yXG4gIHwgXCJEYXRhRXJyb3JcIiAtPiBgRGF0YV9lcnJvclxuICB8IFwiRW5jb2RpbmdFcnJvclwiIC0+IGBFbmNvZGluZ19lcnJvclxuICB8IFwiSGllcmFyY2h5UmVxdWVzdEVycm9yXCIgLT4gYEhpZXJhcmNoeV9yZXF1ZXN0X2Vycm9yXG4gIHwgXCJJbmRleFNpemVFcnJvclwiIC0+IGBJbmRleF9zaXplX2Vycm9yXG4gIHwgXCJJbnZhbGlkQWNjZXNzRXJyb3JcIiAtPiBgSW52YWxpZF9hY2Nlc3NfZXJyb3JcbiAgfCBcIkludmFsaWRDaGFyYWN0ZXJFcnJvclwiIC0+IGBJbnZhbGlkX2NoYXJhY3Rlcl9lcnJvclxuICB8IFwiSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yXCIgLT4gYEludmFsaWRfbW9kaWZpY2F0aW9uX2Vycm9yXG4gIHwgXCJJbnZhbGlkTm9kZVR5cGVFcnJvclwiIC0+IGBJbnZhbGlkX25vZGVfdHlwZV9lcnJvclxuICB8IFwiSW52YWxpZFN0YXRlRXJyb3JcIiAtPiBgSW52YWxpZF9zdGF0ZV9lcnJvclxuICB8IFwiTmFtZXNwYWNlRXJyb3JcIiAtPiBgTmFtZXNwYWNlX2Vycm9yXG4gIHwgXCJOZXR3b3JrRXJyb3JcIiAtPiBgTmV0d29ya19lcnJvclxuICB8IFwiTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3JcIiAtPiBgTm9fbW9kaWZpY2F0aW9uX2FsbG93ZWRfZXJyb3JcbiAgfCBcIk5vdEFsbG93ZWRFcnJvclwiIC0+IGBOb3RfYWxsb3dlZF9lcnJvclxuICB8IFwiTm90Rm91bmRFcnJvclwiIC0+IGBOb3RfZm91bmRfZXJyb3JcbiAgfCBcIk5vdFJlYWRhYmxlRXJyb3JcIiAtPiBgTm90X3JlYWRhYmxlX2Vycm9yXG4gIHwgXCJOb3RTdXBwb3J0ZWRFcnJvclwiIC0+IGBOb3Rfc3VwcG9ydGVkX2Vycm9yXG4gIHwgXCJPcGVyYXRpb25FcnJvclwiIC0+IGBPcGVyYXRpb25fZXJyb3JcbiAgfCBcIlF1b3RhRXhjZWVkZWRFcnJvclwiIC0+IGBRdW90YV9leGNlZWRlZF9lcnJvclxuICB8IFwiUmVhZE9ubHlFcnJvclwiIC0+IGBSZWFkX29ubHlfZXJyb3JcbiAgfCBcIlNlY3VyaXR5RXJyb3JcIiAtPiBgU2VjdXJpdHlfZXJyb3JcbiAgfCBcIlN5bnRheEVycm9yXCIgLT4gYFN5bnRheF9lcnJvclxuICB8IFwiVGltZW91dEVycm9yXCIgLT4gYFRpbWVvdXRfZXJyb3JcbiAgfCBcIlR5cGVFcnJvclwiIC0+IGBUeXBlX2Vycm9yXG4gIHwgXCJUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3JcIiAtPiBgVHJhbnNhY3Rpb25faW5hY3RpdmVfZXJyb3JcbiAgfCBcIlR5cGVNaXNtYXRjaEVycm9yXCIgLT4gYFR5cGVfbWlzbWF0Y2hfZXJyb3JcbiAgfCBcIlVSTE1pc21hdGNoRXJyb3JcIiAtPiBgVXJsX21pc21hdGNoX2Vycm9yXG4gIHwgXCJVbmtub3duRXJyb3JcIiAtPiBgVW5rbm93bl9lcnJvclxuICB8IFwiVmVyc2lvbkVycm9yXCIgLT4gYFZlcnNpb25fZXJyb3JcbiAgfCBcIldyb25nRG9jdW1lbnRFcnJvclwiIC0+IGBXcm9uZ19kb2N1bWVudF9lcnJvclxuICB8IF8gLT4gYE90aGVyXG5cbiAgbGV0IG1lc3NhZ2UgZSA9IHRvX2pzdHIgKGdldCAoT2JqLm1hZ2ljIGUpIFwibWVzc2FnZVwiKVxuICBsZXQgc3RhY2sgZSA9IHRvX2pzdHIgKGdldCAoT2JqLm1hZ2ljIGUpIFwic3RhY2tcIilcbiAgbGV0IHRvX3Jlc3VsdCBlID0gRXJyb3IgZVxuZW5kXG5cbmV4dGVybmFsIG9mX2Vycm9yIDogRXJyb3IudCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgdG9fZXJyb3IgOiB0IC0+IEVycm9yLnQgPSBcIiVpZGVudGl0eVwiXG5cbmxldCB0aHJvdyA/bmFtZSBtc2cgPVxuICBsZXQgZSA9IEVycm9yLnYgP25hbWUgbXNnIGluXG4gIChqc19leHByIFwiKGZ1bmN0aW9uIChleG4pIHsgdGhyb3cgZXhuIH0pXCIgOiBFcnJvci50IC0+ICdhKSBlXG5cbmV4Y2VwdGlvbiBFcnJvciA9IEpzb29fcnVudGltZS5FcnJvci5FeG5cblxuKCogSXRlcmFibGUgYW5kIGl0ZXJhdG9yICopXG5cbm1vZHVsZSBJdCA9IHN0cnVjdFxuICB0eXBlIHQgPSBqdlxuICB0eXBlIHJlc3VsdCA9IGp2XG5cbiAgbGV0IHN5bWJvbCA6IGp2ID0gcHVyZV9qc19leHByIFwiU3ltYm9sLml0ZXJhdG9yXCJcbiAgZXh0ZXJuYWwgZ2V0X3N5bWJvbCA6IGp2IC0+IGp2IC0+IGp2ID0gXCJjYW1sX2pzX2dldFwiXG5cbiAgbGV0IGl0ZXJhYmxlIG8gPSBtYXRjaCB0b19vcHRpb24gRnVuLmlkIChnZXRfc3ltYm9sIG8gc3ltYm9sKSB3aXRoXG4gIHwgTm9uZSAtPiBOb25lIHwgU29tZSBmdW5jIC0+IGFwcGx5IGZ1bmMgW3x8XVxuXG4gIGxldCBpdGVyYXRvciBvID0gYXBwbHkgKGdldF9zeW1ib2wgbyBzeW1ib2wpIFt8fF1cblxuICBsZXQgbmV4dCBpdCA9IGNhbGwgaXQgXCJuZXh0XCIgW3x8XVxuXG4gIGxldCByZXN1bHRfZG9uZSBvID0gbWF0Y2ggdG9fb3B0aW9uIHRvX2Jvb2wgKGdldCBvIFwiZG9uZVwiKSB3aXRoXG4gIHwgTm9uZSAtPiBmYWxzZSB8IFNvbWUgZCAtPiBkXG5cbiAgbGV0IHJlc3VsdF92YWx1ZSBvID0gdG9fb3B0aW9uIEZ1bi5pZCAoZ2V0IG8gXCJ2YWx1ZVwiKVxuICBsZXQgZ2V0X3Jlc3VsdF92YWx1ZSBvID0gZ2V0IG8gXCJ2YWx1ZVwiXG5cbiAgbGV0IGZvbGQgb2ZfanYgZiBpdCBhY2MgPVxuICAgIGxldCByZWMgbG9vcCBpdCBhY2MgPVxuICAgICAgbGV0IHIgPSBuZXh0IGl0IGluXG4gICAgICBpZiByZXN1bHRfZG9uZSByIHRoZW4gYWNjIGVsc2VcbiAgICAgIGxvb3AgaXQgKGYgKG9mX2p2IChnZXRfcmVzdWx0X3ZhbHVlIHIpKSBhY2MpXG4gICAgaW5cbiAgICBsb29wIGl0IGFjY1xuXG4gIGxldCBmb2xkX2JpbmRpbmdzIH5rZXkgfnZhbHVlIGYgaXQgYWNjID1cbiAgICBsZXQgcmVjIGxvb3AgaXQgYWNjID1cbiAgICAgIGxldCByID0gbmV4dCBpdCBpblxuICAgICAgaWYgcmVzdWx0X2RvbmUgciB0aGVuIGFjYyBlbHNlXG4gICAgICBsZXQgYXJyID0gZ2V0X3Jlc3VsdF92YWx1ZSByIGluXG4gICAgICBsb29wIGl0IChmIChrZXkgKEphcnJheS5nZXQgYXJyIDApKSAodmFsdWUgKEphcnJheS5nZXQgYXJyIDEpKSBhY2MpXG4gICAgaW5cbiAgICBsb29wIGl0IGFjY1xuZW5kXG5cbigqIFByb21pc2VzICopXG5cbm1vZHVsZSBQcm9taXNlID0gc3RydWN0XG4gIHR5cGUgdCA9IGp2XG4gIGxldCBwcm9taXNlID0gZ2V0IGdsb2JhbCBcIlByb21pc2VcIlxuICBsZXQgY3JlYXRlIGYgPVxuICAgIGxldCBnIHJlcyByZWogPVxuICAgICAgZiAoZnVuIHggLT4gYXBwbHkgcmVzIFt8cmVwciB4fF0pIChmdW4geCAtPiBhcHBseSByZWogW3xyZXByIHh8XSkgaW5cbiAgICBuZXcnIHByb21pc2UgW3wgY2FsbGJhY2sgfmFyaXR5OjIgZyB8XVxuICBsZXQgcmVzb2x2ZSB2ID0gY2FsbCBwcm9taXNlIFwicmVzb2x2ZVwiIFt8IHJlcHIgdiB8XVxuICBsZXQgcmVqZWN0IHYgPSBjYWxsIHByb21pc2UgXCJyZWplY3RcIiBbfCByZXByIHYgfF1cbiAgbGV0IGF3YWl0IHAgayA9IGlnbm9yZSAoY2FsbCBwIFwidGhlblwiIFt8IGNhbGxiYWNrIH5hcml0eToxIGsgfF0pXG4gIGxldCBiaW5kIHAgcmVzID0gY2FsbCBwIFwidGhlblwiIFt8IGNhbGxiYWNrIH5hcml0eToxIHJlcyB8XVxuICBsZXQgdGhlbicgcCByZXMgcmVqID1cbiAgICBjYWxsIHAgXCJ0aGVuXCIgW3wgY2FsbGJhY2sgfmFyaXR5OjEgcmVzOyBjYWxsYmFjayB+YXJpdHk6MSByZWp8XVxuXG4gIGxldCBhbGwgYXJyID0gY2FsbCBwcm9taXNlIFwiYWxsXCIgW3wgcmVwciBhcnIgfF1cbmVuZFxuXG4oKiBVbmljb2RlIGlkZW50aWZpZXJzICopXG5cbnR5cGUgcHJvcCcgPSBKc3RyLnRcbmV4dGVybmFsIGdldCcgOiB0IC0+IHByb3AnIC0+IHQgPSBcImNhbWxfanNfZ2V0XCJcbmV4dGVybmFsIHNldCcgOiB0IC0+IHByb3AnIC0+IHQgLT4gdW5pdCA9IFwiY2FtbF9qc19zZXRcIlxuZXh0ZXJuYWwgZGVsZXRlJyA6IHQgLT4gcHJvcCcgLT4gdW5pdCA9IFwiY2FtbF9qc19kZWxldGVcIlxubGV0IGZpbmQnIG8gcCA9IGxldCB2ID0gZ2V0JyBvIHAgaW4gaWYgaXNfbm9uZSB2IHRoZW4gTm9uZSBlbHNlIFNvbWUgdlxubGV0IGZpbmRfbWFwJyBmIG8gcCA9IGxldCB2ID0gZ2V0JyBvIHAgaW4gaWYgaXNfbm9uZSB2IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGYgdilcblxuKCogWFhYIHRoZSBmb2xsb3dpbmcgd2VyZSBzdXBwb3NlZCB0byBiZSBkaXJlY3QgY2FsbCB0byBleHRlcm5hbHMgbGlrZSBmb3JcbiAgIHRoZSBhYm92ZSBidXQgdGhleSBhcmUgbm90IGltcGxlbWVudGVkIHRoYXQgd2F5IGZvciBub3cuIFNlZSBkaXNjdXNzaW9uIGhlcmU6XG4gICBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9qc19vZl9vY2FtbC9wdWxsLzk5NyNpc3N1ZWNvbW1lbnQtNjk0OTI1NzY1LlxuICAgSXQgd291bGQgbGlrZWx5IG5lZWQgYSBiaXQgb2YgdXBzdHJlYW0gY2Fqb2xpbmcgdG8gbW92ZSBvbiDigJMgT1RPSFxuICAgdGhlc2Ugc2hvdWxkIGVuZCB1cCBiZWluZyB1c2VkIHBlcnZhc2l2ZWx5LiAqKVxuXG5sZXQgb2JqJyBwcm9wcyA9IG9iaiAoQXJyYXkubWFwIChmdW4gKHAsIHYpIC0+IEpzdHIudG9fc3RyaW5nIHAsIHYpIHByb3BzKVxubGV0IGNhbGwnIG8gbSBhcmdzID0gY2FsbCBvIChKc3RyLnRvX3N0cmluZyBtKSBhcmdzXG5cbigqIERlYnVnZ2VyICopXG5cbmV4dGVybmFsIGRlYnVnZ2VyIDogdW5pdCAtPiB1bml0ID0gXCJkZWJ1Z2dlclwiXG5cbigqIEZlYXR1cmUgZGV0ZWN0aW9uICopXG5cbmxldCBoYXMgcCB2ID0gaXNfc29tZSAoZ2V0IChyZXByIHYpIHApXG5sZXQgZGVmaW5lZCB2ID0gaXNfc29tZSAocmVwciB2KVxuXG4oKiBDb252ZXJzaW9uIGludGVyZmFjZSAqKVxuXG5tb2R1bGUgdHlwZSBDT05WID0gc2lnXG4gIHR5cGUgdFxuICBleHRlcm5hbCB0b19qdiA6IHQgLT4ganYgPSBcIiVpZGVudGl0eVwiXG4gIGV4dGVybmFsIG9mX2p2IDoganYgLT4gdCA9IFwiJWlkZW50aXR5XCJcbmVuZFxuXG5tb2R1bGUgSWQgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgdG9fanYgOiAnYSAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuICBleHRlcm5hbCBvZl9qdiA6IHQgLT4gJ2EgPSBcIiVpZGVudGl0eVwiXG5lbmRcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9qc19nZXQiLCJjYW1sX2pzX3NldCIsImNhbWxfanNfc3RyaWN0X2VxdWFscyIsImNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3QiLCJjYW1sX3N0cmluZ19jb21wYXJlIiwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmciLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWJfQXJyYXkiLCJTdGRsaWJfTGlzdCIsIkpzb29fcnVudGltZSIsIm51bGwkIiwidW5kZWZpbmVkJCIsImlzX251bGwiLCJ2IiwiaXNfdW5kZWZpbmVkIiwiaXNfbm9uZSIsImlzX3NvbWUiLCJ0b19vcHRpb24iLCJjb252Iiwib2Zfb3B0aW9uIiwibm9uZSIsInBhcmFtIiwiZ2xvYmFsIiwic2V0X2lmX3NvbWUiLCJvIiwicCIsImZpbmQiLCJmaW5kX21hcCIsImZpbmRfcGF0aCIsInBzIiwibWF0Y2giLCJiIiwiZ2V0Iiwic2V0IiwiaSIsInMiLCJpc19hcnJheSIsImp2IiwiY3JlYXRlIiwibiIsImxlbmd0aCIsImEiLCJ0b19hcnJheSIsImxlbiIsIm9mX2FycmF5IiwiamEiLCJ0b19saXN0Iiwib2ZfbGlzdCIsImwiLCJ2cyIsIm5hbWUiLCJtc2ciLCJlIiwiZW51bSQiLCJzd2l0Y2gkIiwibWVzc2FnZSIsInN0YWNrIiwidGhyb3ckIiwiRXJyb3IiLCJzeW1ib2wiLCJpdGVyYWJsZSIsImZ1bmMiLCJpdGVyYXRvciIsIm5leHQiLCJpdCIsInJlc3VsdF9kb25lIiwiZCIsInJlc3VsdF92YWx1ZSIsImdldF9yZXN1bHRfdmFsdWUiLCJmb2xkIiwib2ZfanYiLCJhY2MiLCJyIiwiZm9sZF9iaW5kaW5ncyIsImtleSIsInZhbHVlIiwiYXJyIiwicHJvbWlzZSIsImciLCJyZXMiLCJyZWoiLCJ4IiwicmVzb2x2ZSIsInJlamVjdCIsImF3YWl0JCIsImsiLCJiaW5kIiwidGhlbiIsImFsbCIsIm9iaiIsInByb3BzIiwiY2FsbCIsIm0iLCJhcmdzIiwiaGFzIiwiZGVmaW5lZCIsIkp2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QUEsYUFBdUIscUNBQXVCO0FBQUE7QUFBQSxZQUFBUSxJQUFBWixLQUVuRCx1QkFBaUM7QUFBQSxZQUFBbEQsT0FBQUYsR0FBQUMsT0FBQVosSUFTekIsTUFBZSw4QkFBK0I7QUFBQSxZQUFBYyxXQUFBM0IsR0FBQXdCLEdBQUFDO0FBQUFBLFFBQUFaLElBQ3hDO0FBQUEsSUFBZSw0QkFBOEIsaUJBQUs7QUFBQTtBQUFBLFlBQUE0RSxJQUFBQztBQUFBQSxJQVEzRCxPQUFKO0FBQUEsYUFBSTtBQUFBO0FBQUEsd0JBQUFyRTtBQUFBQSxvQkFBQVIsSUFBVyxVQUFBWSxJQUFBO0FBQUEsZ0JBQWUseUNBQWdCO0FBQUEsZUFBSTtBQUFBLHNCQUFPO0FBQUE7QUFBQSxZQUFBa0UsS0FBQW5FLEdBQUFvRSxHQUFBQztBQUFBQSxJQUM5QyxPQUFQLDZCQUFPLGlDQUF1QjtBQUFBO0FBQUEsWUFBQUMsSUFBQXJFLEdBQUFaLEdBUWI7QUFBQSxZQUFBa0YsUUFBQWxGLEdBQ3RCLGlCQUFnQjtBQUFBO0FBQUEsSUFBQW1GO0FBQUFBLE1BeENJO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVEalNwQyIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjMzMzI0LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6ImJyci5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvYnJyL2Z1dC5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBDb3B5cmlnaHQgKGMpIDIwMjAgVGhlIGJyciBwcm9ncmFtbWVycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuKCogV2UgcmVwcmVzZW50IGZ1dHVyZXMgYnkgYW4gb2JqZWN0IHsgZnV0IDogPHByb21pc2U+IH0gd2l0aCBhIHNpbmdsZVxuICAgW2Z1dF0gSmF2YVNjcmlwdCBQcm9taXNlIG9iamVjdCB3aGljaCwgYnkgY29uc3RydWN0aW9uLCAqbmV2ZXIqXG4gICByZWplY3RzLiBUaGUgcHJvbWlzZSBpcyB3cmFwcGVkIGluIGFuIG9iamVjdCBiZWNhdXNlIEphdmFTY3JpcHQnc1xuICAgW3Jlc29sdmVdIHdoaWNoIHNob3VsZCBiZSBtb25hZGljIFtyZXR1cm5dIHVuZm9ydHVuYXRlbHkgYWxzb1xuICAgbW9uYWRpY2FsbHkgW2pvaW5dcy4gVGhpcyBKYXZhU2NyaXB0IGV4cHJlc3Npb246XG5cbiAgICAgUHJvbWlzZS5yZXNvbHZlIChQcm9taXNlLnJlc29sdmUgKFwiTm9vb29vbyFcIikpXG5cbiAgIGV2YWx1YXRlcyB0bzogIFByb21pc2UgezxmdWxmaWxsZWQ+OiBcIk5vb29vb28hXCJ9XG4gICAgIGluc3RlYWQgb2Y6ICBQcm9taXNlIHs8ZnVsZmlsbGVkPjogUHJvbWlzZSB7PGZ1bGZpbGxlZD46IFwiXCJOb29vb29vIVwiXCJ9fVxuXG4gICBUaGlzIG1ha2VzIGl0IGltcG9zc2libGUgdG8gdHlwZSBbcmVzb2x2ZV0gY29ycmVjdGx5IGluIE9DYW1sIHNpbmNlIGl0XG4gICB3b3VsZCBuZWVkIHRvIGhhdmUgdGhlc2UgdHdvIHR5cGVzOlxuXG4gICAgIHZhbCByZXNvbHZlIDogJ2EgLT4gJ2EgUHJvbWlzZS50XG4gICAgIHZhbCByZXNvbHZlIDogJ2EgUHJvbWlzZS50IC0+ICdhIFByb21pc2UudFxuXG4gICBJbiBnZW5lcmFsIHRoaXMgYnJlYWtzIHR5cGUgc2FmZXR5IGZvciBleGFtcGxlIFtiaW5kXWluZyBhIFsnYVxuICAgRnV0LnQgRnV0LnRdIHZhbHVlIHlvdXIgZnVuY3Rpb24gY291bGQgZW5kIHVwIHdpdGggYSBncm91bmQgdmFsdWVcbiAgIG9mIHR5cGUgWydhXSBub3QgdGhlIGV4cGVjdGVkIFsnYSBGdXQudF0gdmFsdWUgYXMgYXJndW1lbnQuIEJ5XG4gICB3cmFwcGluZyB0aGUgcHJvbWlzZSBpbiBhbiBvYmplY3Qgd2UgY2FuIGNvbnRyb2wgdGhhdC4gKilcblxudHlwZSAnYSB0ID0gSnYudCAoKiBhIEphdmFTY3JpcHQgb2JqZWN0IG9mIHRoZSBmb3JtOiB7IGZ1dCA6IDxwcm9taXNlPiB9ICopXG5cbmxldCBmdXQgcCA9IEp2Lm9iaiBbfCBcImZ1dFwiLCBwIHxdXG5sZXQgcHJvbWlzZSBmID0gSnYuZ2V0IGYgXCJmdXRcIlxubGV0IHByb21pc2UnIGYgPSBKdi5nZXQgZiBcImZ1dFwiXG5sZXQgY3JlYXRlICgpID0gKCogVWdseSBhcyBzaGl0IGJ1dCB0aGF0J3Mgd2hhdCBuZXcgUHJvbWlzZSBnaXZlcyB1cy4gICopXG4gIGxldCBub3Rfc2V0ID0gZnVuIF8gLT4gYXNzZXJ0IGZhbHNlIGluXG4gIGxldCBpc19zZXQgPSBmdW4gXyAtPiBKdi50aHJvdyAoSnN0ci52IFwiVGhlIGZ1dHVyZSBpcyBhbHJlYWR5IHNldFwiKSBpblxuICBsZXQgc2V0dGVyID0gcmVmIG5vdF9zZXQgaW5cbiAgbGV0IHNldF9zZXR0ZXIgcmVzb2x2ZSBfcmVqZWN0ID0gc2V0dGVyIDo9IHJlc29sdmUgaW5cbiAgbGV0IHAgPSBKdi5Qcm9taXNlLmNyZWF0ZSBzZXRfc2V0dGVyIGluXG4gIGxldCBzZXQgdiA9ICFzZXR0ZXIgdjsgc2V0dGVyIDo9IGlzX3NldCBpblxuICBmdXQgcCwgc2V0XG5cbmxldCBhd2FpdCBmIGsgPSBKdi5Qcm9taXNlLmF3YWl0IChwcm9taXNlIGYpIGtcbmxldCByZXR1cm4gdiA9IGZ1dCBAQCBKdi5Qcm9taXNlLnJlc29sdmUgdlxubGV0IGJpbmQgZiBmbiA9IGZ1dCBAQCBKdi5Qcm9taXNlLmJpbmQgKHByb21pc2UgZikgKGZ1biB2IC0+IHByb21pc2UgKGZuIHYpKVxubGV0IG1hcCBmbiBmID0gYmluZCBmIChmdW4gdiAtPiByZXR1cm4gKGZuIHYpKVxubGV0IHBhaXIgZjAgZjEgPVxuICBmdXQgQEBcbiAgSnYuUHJvbWlzZS5iaW5kIChwcm9taXNlIGYwKSBAQCBmdW4gdjAgLT5cbiAgSnYuUHJvbWlzZS5iaW5kIChwcm9taXNlIGYxKSBAQCBmdW4gdjEgLT5cbiAgSnYuUHJvbWlzZS5yZXNvbHZlICh2MCwgdjEpXG5cbmxldCBvZl9saXN0IGZzID1cbiAgbGV0IGFyciA9IEp2Lm9mX2xpc3QgcHJvbWlzZScgZnMgaW5cbiAgbGV0IGFsbCA9IEp2LlByb21pc2UuYWxsIGFyciBpblxuICBsZXQgdG9fbGlzdCBsID0gSnYuUHJvbWlzZS5yZXNvbHZlIChKdi50b19saXN0IE9iai5tYWdpYyBsKSBpblxuICBmdXQgQEAgSnYuUHJvbWlzZS5iaW5kIGFsbCB0b19saXN0XG5cbmxldCB0aWNrIH5tcyA9XG4gIGZ1dCBAQCBKdi5Qcm9taXNlLmNyZWF0ZSBAQCBmdW4gcmVzIF9yZWogLT5cbiAgaWdub3JlIChKdi5hcHBseSAoSnYuZ2V0IEp2Lmdsb2JhbCBcInNldFRpbWVvdXRcIilcbiAgICAgICAgICAgIEp2Llt8IGNhbGxiYWNrIH5hcml0eToxIHJlczsgb2ZfaW50IG1zIHxdKVxuXG4oKiBDb252ZXJ0aW5nIHdpdGggSmF2YVNjcmlwdCBwcm9taXNlcyAqKVxuXG50eXBlIG5vbnJlYyAoJ2EsICdiKSByZXN1bHQgPSAoJ2EsICdiKSByZXN1bHQgdFxudHlwZSAnYSBvcl9lcnJvciA9ICgnYSwgSnYuRXJyb3IudCkgcmVzdWx0XG5cbmxldCBvayB2ID0gcmV0dXJuIChPayB2KVxubGV0IGVycm9yIGUgPSByZXR1cm4gKEVycm9yIGUpXG5cbmxldCBvZl9wcm9taXNlJyB+b2sgfmVycm9yIHAgPVxuICBsZXQgb2sgdiA9IEp2LlByb21pc2UucmVzb2x2ZSAoT2sgKG9rIHYpKSBpblxuICBsZXQgZXJyb3IgZSA9IEp2LlByb21pc2UucmVzb2x2ZSAoRXJyb3IgKGVycm9yIGUpKSBpblxuICBmdXQgQEAgSnYuUHJvbWlzZS50aGVuJyBwIG9rIGVycm9yXG5cbmxldCB0b19wcm9taXNlJyB+b2sgfmVycm9yIGYgPVxuICBKdi5Qcm9taXNlLmNyZWF0ZSBAQCBmdW4gcmVzIHJlaiAtPlxuICBhd2FpdCBmIEBAIGZ1bmN0aW9uXG4gIHwgT2sgdiAtPiByZXMgKG9rIHYpXG4gIHwgRXJyb3IgZSAtPiByZWogKGVycm9yIGUpXG5cbmxldCBvZl9wcm9taXNlIH5vayB2ID0gb2ZfcHJvbWlzZScgfm9rIH5lcnJvcjpKdi50b19lcnJvciB2XG5sZXQgdG9fcHJvbWlzZSB+b2sgdiA9IHRvX3Byb21pc2UnIH5vayB+ZXJyb3I6SnYub2ZfZXJyb3IgdlxuXG4oKiBGdXR1cmUgc3ludGF4ZXMgKilcblxubW9kdWxlIFN5bnRheCA9IHN0cnVjdFxuICBsZXQgKCBsZXQqICkgPSBiaW5kXG4gIGxldCAoIGFuZCogKSA9IHBhaXJcbiAgbGV0ICggbGV0KyApIGYgZm4gPSBtYXAgZm4gZlxuICBsZXQgKCBhbmQrICkgPSAoIGFuZCogKVxuZW5kXG5cbm1vZHVsZSBSZXN1bHRfc3ludGF4ID0gc3RydWN0XG4gIGxldCByZXN1bHRfcGFpciByID0gbWF0Y2ggciB3aXRoXG4gIHwgKEVycm9yIF8gYXMgciksIF8gfCBfLCAoRXJyb3IgXyBhcyByKSAtPiByXG4gIHwgT2sgdjAsIE9rIHYxIC0+IE9rICh2MCwgdjEpXG5cbiAgbGV0ICggbGV0KiApIGYgZm4gPSBiaW5kIGYgQEAgZnVuY3Rpb25cbiAgfCBPayB2IC0+IGZuIHZcbiAgfCBFcnJvciBfIGFzIGUgLT4gcmV0dXJuIGVcblxuICBsZXQgKCBhbmQqICkgZjAgZjEgPSBtYXAgcmVzdWx0X3BhaXIgKHBhaXIgZjAgZjEpXG4gIGxldCAoIGxldCsgKSBmIGZuID0gbWFwIChSZXN1bHQubWFwIGZuKSBmXG4gIGxldCAoIGFuZCsgKSA9ICggYW5kKiApXG5lbmRcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImNhbWxfY2FsbDMiLCJhMiIsImdsb2JhbF9kYXRhIiwiU3RkbGliX1Jlc3VsdCIsIkp2IiwiQXNzZXJ0X2ZhaWx1cmUiLCJwcm9taXNlIiwiY3JlYXRlIiwicGFyYW0iLCJub3Rfc2V0IiwiaXNfc2V0Iiwic2V0dGVyIiwic2V0X3NldHRlciIsInJlc29sdmUiLCJyZWplY3QiLCJwIiwic2V0IiwidiIsImF3YWl0JCIsImsiLCJyZXR1cm4kIiwiYmluZCIsImZuIiwibWFwIiwicGFpciIsImYwIiwiZjEiLCJ2MCIsInYxIiwib2ZfbGlzdCIsImZzIiwiYXJyIiwiYWxsIiwidG9fbGlzdCIsImwiLCJ0aWNrIiwibXMiLCJyZXMiLCJyZWoiLCJvayIsImVycm9yIiwiZSIsIm9mX3Byb21pc2UiLCJ0b19wcm9taXNlIiwibGV0JCIsInJlc3VsdF9wYWlyIiwiciIsIm1hdGNoIiwiYW5kIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRTtBQUFBQSxJQUFB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QUE7QUFBQSxJQUN1QjtBQUFBLEdBQ2Q7QUFBQSxZQUFBRixNQUFBaEQsR0FBQTBCO0FBQUFBLElBRVQ7QUFBQTtBQUFBLHNCQUFBbUI7QUFBQUEsY0FBVSxlQUVaLGlCQUFRO0FBQUEsa0JBQUF4QixJQUZJO0FBQUEsY0FDcEIsd0JBQ2dCO0FBQUE7QUFBQTtBQUFBLFlBQUErQixJQUFBdkIsSUFBQUMsSUFFVyxPQUFZLGlCQUFaLGFBQVk7QUFBQSxZQUFBa0IsTUFBQWhELEdBQUEwQjtBQUFBQSxRQUFBLElBQ3pCO0FBQUEsSUFBZSx1QkFBZixxQkFBaUI7QUFBQTtBQUFBLEdEdkczQyIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjMzNTAxLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6ImJyci5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvYnJyL2Jyci5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBDb3B5cmlnaHQgKGMpIDIwMjAgVGhlIGJyciBwcm9ncmFtbWVycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuKCogRE9NIGV2ZW50cy5cblxuICAgV2UgbmVlZCB0aGF0IHVuZGVybmVhdGggc29tZSBvZiB0aGUgQVBJcyBiZWxvdywgc29cbiAgIHRoYXQgY29tZXMgZmlyc3QuICopXG5cbm1vZHVsZSBFdiA9IHN0cnVjdFxuICB0eXBlICdhIHR5cGUnID0gSnN0ci50XG4gIG1vZHVsZSBUeXBlID0gc3RydWN0XG4gICAgdHlwZSB2b2lkXG4gICAgdHlwZSAnYSB0ID0gJ2EgdHlwZSdcbiAgICBleHRlcm5hbCBjcmVhdGUgOiBKc3RyLnQgLT4gJ2EgdCA9IFwiJWlkZW50aXR5XCJcbiAgICBleHRlcm5hbCBuYW1lIDogJ2EgdCAtPiBKc3RyLnQgPSBcIiVpZGVudGl0eVwiXG4gICAgZXh0ZXJuYWwgdm9pZCA6IEpzdHIudCAtPiAnYSB0ID0gXCIlaWRlbnRpdHlcIlxuICBlbmRcbiAgdHlwZSB2b2lkID0gVHlwZS52b2lkIHR5cGUnXG5cbiAgKCogRXZlbnRzICopXG5cbiAgdHlwZSBpbml0ID0gSnYudFxuICBsZXQgaW5pdCA/YnViYmxlcyA/Y2FuY2VsYWJsZSA/Y29tcG9zZWQgKCkgPVxuICAgIGxldCBvID0gSnYub2JqIFt8fF0gaW5cbiAgICBKdi5Cb29sLnNldF9pZl9zb21lIG8gXCJidWJibGVzXCIgYnViYmxlcztcbiAgICBKdi5Cb29sLnNldF9pZl9zb21lIG8gXCJjYW5jZWxhYmxlXCIgY2FuY2VsYWJsZTtcbiAgICBKdi5Cb29sLnNldF9pZl9zb21lIG8gXCJjb21wb3NlZFwiIGNvbXBvc2VkO1xuICAgIG9cblxuICB0eXBlIHRhcmdldCA9IEp2LnRcbiAgZXh0ZXJuYWwgdGFyZ2V0X3RvX2p2IDogdGFyZ2V0IC0+ICdhID0gXCIlaWRlbnRpdHlcIlxuICBleHRlcm5hbCB0YXJnZXRfb2ZfanYgOiAnYSAtPiB0YXJnZXQgPSBcIiVpZGVudGl0eVwiXG5cbiAgdHlwZSAnYSB0ID0gSnYudFxuICB0eXBlICdhIGV2ZW50ID0gJ2EgdFxuICBleHRlcm5hbCB0b19qdiA6ICdhIHQgLT4gSnYudCA9IFwiJWlkZW50aXR5XCJcbiAgZXh0ZXJuYWwgb2ZfanYgOiBKdi50IC0+ICdhIHQgPSBcIiVpZGVudGl0eVwiXG4gIGxldCBldmVudCA9IEp2LmdldCBKdi5nbG9iYWwgXCJFdmVudFwiXG4gIGxldCBjcmVhdGUgPyhpbml0ID0gSnYub2JqIFt8fF0pIHQgPSBKdi5uZXcnIGV2ZW50IEp2Llt8IG9mX2pzdHIgdDsgaW5pdHxdXG4gIGV4dGVybmFsIGFzX3R5cGUgOiAnYSB0IC0+ICdhID0gXCIlaWRlbnRpdHlcIlxuICBsZXQgdHlwZScgZSA9IEp2LkpzdHIuZ2V0IGUgXCJ0eXBlXCJcbiAgbGV0IHRhcmdldCBlID0gSnYuZ2V0IGUgXCJ0YXJnZXRcIlxuICBsZXQgY3VycmVudF90YXJnZXQgZSA9IEp2LmdldCBlIFwiY3VycmVudFRhcmdldFwiXG4gIGxldCBjb21wb3NlZF9wYXRoIGUgPSBKdi50b19saXN0IHRhcmdldF9vZl9qdiAoSnYuY2FsbCBlIFwiY29tcG9zZWRQYXRoXCIgW3x8XSlcbiAgbGV0IGV2ZW50X3BoYXNlIGUgPVxuICAgIG1hdGNoIEp2LkludC5nZXQgZSBcImV2ZW50UGhhc2VcIiB3aXRoXG4gICAgfCAxIC0+IGBDYXB0dXJpbmcgfCAyIC0+IGBBdF90YXJnZXQgfCAzIC0+IGBCdWJibGluZyB8IF8gLT4gYE5vbmVcblxuICBsZXQgYnViYmxlcyBlID0gSnYuQm9vbC5nZXQgZSBcImJ1YmJsZXNcIlxuICBsZXQgc3RvcF9wcm9wYWdhdGlvbiBlID0gaWdub3JlIEBAIEp2LmNhbGwgZSBcInN0b3BQcm9wYWdhdGlvblwiIFt8fF1cbiAgbGV0IHN0b3BfaW1tZWRpYXRlX3Byb3BhZ2F0aW9uIGUgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGUgXCJzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb25cIiBbfHxdXG5cbiAgbGV0IGNhbmNlbGFibGUgZSA9IEp2LkJvb2wuZ2V0IGUgXCJjYW5jZWxhYmxlXCJcbiAgbGV0IHByZXZlbnRfZGVmYXVsdCBlID0gaWdub3JlIEBAIEp2LmNhbGwgZSBcInByZXZlbnREZWZhdWx0XCIgW3x8XVxuICBsZXQgZGVmYXVsdF9wcmV2ZW50ZWQgZSA9IEp2LkJvb2wuZ2V0IGUgXCJkZWZhdWx0UHJldmVudGVkXCJcbiAgbGV0IGNvbXBvc2VkIGUgPSBKdi5Cb29sLmdldCBlIFwiY29tcG9zZWRcIlxuICBsZXQgaXNfdHJ1c3RlZCBlID0gSnYuQm9vbC5nZXQgZSBcImlzVHJ1c3RlZFwiXG4gIGxldCB0aW1lc3RhbXBfbXMgZSA9IEp2LkZsb2F0LmdldCBlIFwidGltZVN0YW1wXCJcbiAgbGV0IGRpc3BhdGNoIGUgdCA9IEp2LnRvX2Jvb2wgQEAgSnYuY2FsbCB0IFwiZGlzcGF0Y2hFdmVudFwiIFt8IGUgfF1cblxuICAoKiBMaXN0ZW5pbmcgKilcblxuICB0eXBlIGxpc3Rlbl9vcHRzID0gSnYudFxuICBsZXQgbGlzdGVuX29wdHMgP2NhcHR1cmUgP29uY2UgP3Bhc3NpdmUgKCkgPVxuICAgIGxldCBvID0gSnYub2JqIFt8fF0gaW5cbiAgICBKdi5Cb29sLnNldF9pZl9zb21lIG8gXCJjYXB0dXJlXCIgY2FwdHVyZTtcbiAgICBKdi5Cb29sLnNldF9pZl9zb21lIG8gXCJvbmNlXCIgb25jZTtcbiAgICBKdi5Cb29sLnNldF9pZl9zb21lIG8gXCJwYXNzaXZlXCIgcGFzc2l2ZTtcbiAgICBvXG5cbiAgdHlwZSBsaXN0ZW5lciA9IHVuaXQgLT4gdW5pdFxuXG4gIGxldCBsaXN0ZW4gPyhvcHRzID0gSnYub2JqIFt8fF0pIHR5cGUnIGYgdCA9XG4gICAgbGV0IHR5cGUnID0gSnYub2ZfanN0ciB0eXBlJyBpblxuICAgIGxldCBmID0gSnYuY2FsbGJhY2sgfmFyaXR5OjEgZiBpblxuICAgIGxldCB1bmxpc3RlbiAoKSA9XG4gICAgICBpZ25vcmUgQEAgSnYuY2FsbCB0IFwicmVtb3ZlRXZlbnRMaXN0ZW5lclwiIFt8dHlwZSc7IGY7IG9wdHMgfF1cbiAgICBpblxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIHQgXCJhZGRFdmVudExpc3RlbmVyXCIgW3x0eXBlJzsgZjsgb3B0cyB8XTtcbiAgICB1bmxpc3RlblxuXG4gIGxldCB1bmxpc3RlbiB1bmxpc3RlbiA9IHVubGlzdGVuICgpXG5cbiAgbGV0IG5leHQgP2NhcHR1cmUgdHlwZScgdCA9XG4gICAgbGV0IGZ1dCwgc2V0ID0gRnV0LmNyZWF0ZSAoKSBpblxuICAgIGxldCBvcHRzID0gbGlzdGVuX29wdHMgP2NhcHR1cmUgfm9uY2U6dHJ1ZSAoKSBpblxuICAgIGlnbm9yZSAobGlzdGVuIH5vcHRzIHR5cGUnIHNldCB0IDogbGlzdGVuZXIpO1xuICAgIGZ1dFxuXG4gICgqIEV2ZW50IG9iamVjdHMgKilcblxuICBtb2R1bGUgRGF0YV90cmFuc2ZlciA9IHN0cnVjdFxuICAgIG1vZHVsZSBFZmZlY3QgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEpzdHIudFxuICAgICAgbGV0IG5vbmUgPSBKc3RyLnYgXCJub25lXCJcbiAgICAgIGxldCBjb3B5ID0gSnN0ci52IFwiY29weVwiXG4gICAgICBsZXQgY29weV9saW5rID0gSnN0ci52IFwiY29weUxpbmtcIlxuICAgICAgbGV0IGNvcHlfbW92ZSA9IEpzdHIudiBcImNvcHlNb3ZlXCJcbiAgICAgIGxldCBsaW5rID0gSnN0ci52IFwibGlua1wiXG4gICAgICBsZXQgbGlua19tb3ZlID0gSnN0ci52IFwibGlua01vdmVcIlxuICAgICAgbGV0IG1vdmUgPSBKc3RyLnYgXCJtb3ZlXCJcbiAgICAgIGxldCBhbGwgPSBKc3RyLnYgXCJhbGxcIlxuICAgICAgbGV0IHVuaW5pdGlhbGl6ZWQgPSBKc3RyLnYgXCJ1bmluaXRpYWxpemVkXCJcbiAgICBlbmRcbiAgICBtb2R1bGUgSXRlbSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIEtpbmQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSnN0ci50XG4gICAgICAgIGxldCBmaWxlID0gSnN0ci52IFwiZmlsZVwiXG4gICAgICAgIGxldCBzdHJpbmcgPSBKc3RyLnYgXCJzdHJpbmdcIlxuICAgICAgZW5kXG4gICAgICB0eXBlIHQgPSBKdi50XG4gICAgICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcbiAgICAgIGxldCBraW5kIGkgPSBKdi5Kc3RyLmdldCBpIFwia2luZFwiXG4gICAgICBsZXQgdHlwZScgaSA9IEp2LkpzdHIuZ2V0IGkgXCJ0eXBlXCJcbiAgICAgIGxldCBnZXRfZmlsZSBpID0gSnYudG9fb3B0aW9uIEZ1bi5pZCAoSnYuY2FsbCBpIFwiZ2V0QXNGaWxlXCIgW3x8XSlcbiAgICAgIGxldCBnZXRfanN0ciBpID1cbiAgICAgICAgbGV0IHN0ciwgc2V0X3N0ciA9IEZ1dC5jcmVhdGUgKCkgaW5cbiAgICAgICAgbGV0IHNldF9zdHIgPSBKdi5jYWxsYmFjayB+YXJpdHk6MSBzZXRfc3RyIGluXG4gICAgICAgIGlnbm9yZSAoSnYuY2FsbCBpIFwiZ2V0QXNTdHJpbmdcIiBbfCBzZXRfc3RyIHxdKTtcbiAgICAgICAgc3RyXG4gICAgZW5kXG4gICAgbW9kdWxlIEl0ZW1fbGlzdCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gSnYudFxuICAgICAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICAgIGxldCBsZW5ndGggbCA9IEp2LkludC5nZXQgbCBcImxlbmd0aFwiXG5cbiAgICAgIGxldCBhZGRfanN0ciBsIH50eXBlJyBzdHIgPVxuICAgICAgICBKdi50b19vcHRpb24gSXRlbS5vZl9qdiBAQFxuICAgICAgICBKdi5jYWxsIGwgXCJhZGRcIiBKdi5bfCBvZl9qc3RyIHN0cjsgb2ZfanN0ciB0eXBlJyB8XVxuXG4gICAgICBsZXQgYWRkX2ZpbGUgdCBmaWxlID1cbiAgICAgICAgSnYudG9fb3B0aW9uIEl0ZW0ub2ZfanYgQEBcbiAgICAgICAgSnYuY2FsbCB0IFwiYWRkXCIgSnYuW3wgZmlsZSB8XVxuXG4gICAgICBsZXQgcmVtb3ZlIGwgaSA9IGlnbm9yZSAoSnYuY2FsbCBsIFwicmVtb3ZlXCIgSnYuW3xvZl9pbnQgaXxdKVxuICAgICAgbGV0IGNsZWFyIGwgPSBpZ25vcmUgKEp2LmNhbGwgbCBcImNsZWFyXCIgW3x8XSlcbiAgICAgIGV4dGVybmFsIGl0ZW0gOiB0IC0+IGludCAtPiBJdGVtLnQgPSBcImNhbWxfanNfZ2V0XCJcblxuICAgICAgbGV0IGl0ZW1zIGwgPVxuICAgICAgICBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgIGZvciBpID0gbGVuZ3RoIGwgLSAxIGRvd250byAwIGRvIGFjYyA6PSBpdGVtIGwgaSA6OiAhYWNjIGRvbmU7XG4gICAgICAgICFhY2NcbiAgICBlbmRcblxuICAgIHR5cGUgdCA9IEp2LnRcbiAgICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcbiAgICBsZXQgZHJvcF9lZmZlY3QgZCA9IEp2LkpzdHIuZ2V0IGQgXCJkcm9wRWZmZWN0XCJcbiAgICBsZXQgc2V0X2Ryb3BfZWZmZWN0IGQgZSA9IEp2LkpzdHIuc2V0IGQgXCJkcm9wRWZmZWN0XCIgZVxuICAgIGxldCBlZmZlY3RfYWxsb3dlZCBkID0gSnYuSnN0ci5nZXQgZCBcImVmZmVjdEFsbG93ZWRcIlxuICAgIGxldCBzZXRfZWZmZWN0X2FsbG93ZWQgZCBlID0gSnYuSnN0ci5zZXQgZCBcImVmZmVjdEFsbG93ZWRcIiBlXG4gICAgbGV0IGl0ZW1zIGQgPSBJdGVtX2xpc3Qub2ZfanYgQEAgSnYuZ2V0IGQgXCJpdGVtc1wiXG4gIGVuZFxuICBtb2R1bGUgQ2xpcGJvYXJkID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSnYudFxuICAgIGxldCBkYXRhIGMgPSBKdi5maW5kX21hcCBEYXRhX3RyYW5zZmVyLm9mX2p2IGMgXCJjbGlwYm9hcmREYXRhXCJcbiAgZW5kXG4gIG1vZHVsZSBDb21wb3NpdGlvbiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEp2LnRcbiAgICBsZXQgZGF0YSBpID0gSnYuSnN0ci5nZXQgaSBcImRhdGFcIlxuICBlbmRcbiAgbW9kdWxlIEVycm9yID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSnYudFxuICAgIGxldCBtZXNzYWdlIGUgPSBKdi5Kc3RyLmdldCBlIFwibWVzc2FnZVwiXG4gICAgbGV0IGZpbGVuYW1lIGUgPSBKdi5Kc3RyLmdldCBlIFwiZmlsZW5hbWVcIlxuICAgIGxldCBsaW5lbm8gZSA9IEp2LkludC5nZXQgZSBcImxpbmVub1wiXG4gICAgbGV0IGNvbG5vIGUgPSBKdi5JbnQuZ2V0IGUgXCJjb2xub1wiXG4gICAgbGV0IGVycm9yIGUgPSBKdi5nZXQgZSBcImVycm9yXCJcbiAgZW5kXG4gIG1vZHVsZSBFeHRlbmRhYmxlID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSnYudFxuICAgIGxldCB3YWl0X3VudGlsIGUgZnV0ID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIGUgXCJ3YWl0VW50aWxcIiBbfCBGdXQudG9fcHJvbWlzZSB+b2s6SnYucmVwciBmdXQgfF1cbiAgZW5kXG4gIG1vZHVsZSBGb2N1cyA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEp2LnRcbiAgICBsZXQgcmVsYXRlZF90YXJnZXQgbSA9IEp2LmZpbmRfbWFwIHRhcmdldF9vZl9qdiBtIFwicmVsYXRlZFRhcmdldFwiXG4gIGVuZFxuICBtb2R1bGUgSGFzaF9jaGFuZ2UgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKdi50XG4gICAgbGV0IG9sZF91cmwgZSA9IEp2LkpzdHIuZ2V0IGUgXCJvbGRVUkxcIlxuICAgIGxldCBuZXdfdXJsIGUgPSBKdi5Kc3RyLmdldCBlIFwibmV3VVJMXCJcbiAgZW5kXG4gIG1vZHVsZSBJbnB1dCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEp2LnRcbiAgICBsZXQgZGF0YSBpID0gSnYuSnN0ci5nZXQgaSBcImRhdGFcIlxuICAgIGxldCBkYXRhX3RyYW5zZmVyIGkgPSBKdi5maW5kIGkgXCJkYXRhVHJhbnNmZXJcIlxuICAgIGxldCBpbnB1dF90eXBlIGkgPSBKdi5Kc3RyLmdldCBpIFwiaW5wdXRUeXBlXCJcbiAgICBsZXQgaXNfY29tcG9zaW5nIGkgPSBKdi5Cb29sLmdldCBpIFwiaXNDb21wb3NpbmdcIlxuICBlbmRcbiAgbW9kdWxlIEtleWJvYXJkID0gc3RydWN0XG4gICAgbW9kdWxlIExvY2F0aW9uID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBpbnRcbiAgICAgIGxldCBzdGFuZGFyZCA9IDB4MDBcbiAgICAgIGxldCBsZWZ0ID0gMHgwMVxuICAgICAgbGV0IHJpZ2h0ID0gMHgwMlxuICAgICAgbGV0IG51bXBhZCA9IDB4MDNcbiAgICBlbmRcbiAgICB0eXBlIHQgPSBKdi50XG4gICAgbGV0IGtleSBrID0gSnYuSnN0ci5nZXQgayBcImtleVwiXG4gICAgbGV0IGNvZGUgayA9IEp2LkpzdHIuZ2V0IGsgXCJjb2RlXCJcbiAgICBsZXQgbG9jYXRpb24gayA9IEp2LkludC5nZXQgayBcImxvY2F0aW9uXCJcbiAgICBsZXQgcmVwZWF0IGsgPSBKdi5Cb29sLmdldCBrIFwicmVwZWF0XCJcbiAgICBsZXQgaXNfY29tcG9zaW5nIGsgPSBKdi5Cb29sLmdldCBrIFwiaXNDb21wb3NpbmdcIlxuICAgIGxldCBhbHRfa2V5IGsgPSBKdi5Cb29sLmdldCBrIFwiYWx0S2V5XCJcbiAgICBsZXQgY3RybF9rZXkgayA9IEp2LkJvb2wuZ2V0IGsgXCJjdHJsS2V5XCJcbiAgICBsZXQgc2hpZnRfa2V5IGsgPSBKdi5Cb29sLmdldCBrIFwic2hpZnRLZXlcIlxuICAgIGxldCBtZXRhX2tleSBrID0gSnYuQm9vbC5nZXQgayBcIm1ldGFLZXlcIlxuICAgIGxldCBnZXRfbW9kaWZpZXJfc3RhdGUgayBrZXkgPVxuICAgICAgSnYudG9fYm9vbCBAQCBKdi5jYWxsIGsgXCJnZXRNb2RpZmllclN0YXRlXCIgSnYuW3wgb2ZfanN0ciBrZXkgfF1cbiAgZW5kXG4gIG1vZHVsZSBNb3VzZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEp2LnRcbiAgICBsZXQgcmVsYXRlZF90YXJnZXQgbSA9IEp2LmZpbmRfbWFwIHRhcmdldF9vZl9qdiBtIFwicmVsYXRlZFRhcmdldFwiXG4gICAgbGV0IG9mZnNldF94IG0gPSBKdi5GbG9hdC5nZXQgbSBcIm9mZnNldFhcIlxuICAgIGxldCBvZmZzZXRfeSBtID0gSnYuRmxvYXQuZ2V0IG0gXCJvZmZzZXRZXCJcbiAgICBsZXQgY2xpZW50X3ggbSA9IEp2LkZsb2F0LmdldCBtIFwiY2xpZW50WFwiXG4gICAgbGV0IGNsaWVudF95IG0gPSBKdi5GbG9hdC5nZXQgbSBcImNsaWVudFlcIlxuICAgIGxldCBwYWdlX3ggbSA9IEp2LkZsb2F0LmdldCBtIFwicGFnZVhcIlxuICAgIGxldCBwYWdlX3kgbSA9IEp2LkZsb2F0LmdldCBtIFwicGFnZVlcIlxuICAgIGxldCBzY3JlZW5feCBtID0gSnYuRmxvYXQuZ2V0IG0gXCJzY3JlZW5YXCJcbiAgICBsZXQgc2NyZWVuX3kgbSA9IEp2LkZsb2F0LmdldCBtIFwic2NyZWVuWVwiXG4gICAgbGV0IG1vdmVtZW50X3ggbSA9IEp2LkZsb2F0LmdldCBtIFwibW92ZW1lbnRYXCJcbiAgICBsZXQgbW92ZW1lbnRfeSBtID0gSnYuRmxvYXQuZ2V0IG0gXCJtb3ZlbWVudFlcIlxuICAgIGxldCBidXR0b24gbSA9IEp2LkludC5nZXQgbSBcImJ1dHRvblwiXG4gICAgbGV0IGJ1dHRvbnMgbSA9IEp2LkludC5nZXQgbSBcImJ1dHRvbnNcIlxuICAgIGxldCBhbHRfa2V5IG0gPSBKdi5Cb29sLmdldCBtIFwiYWx0S2V5XCJcbiAgICBsZXQgY3RybF9rZXkgbSA9IEp2LkJvb2wuZ2V0IG0gXCJjdHJsS2V5XCJcbiAgICBsZXQgc2hpZnRfa2V5IG0gPSBKdi5Cb29sLmdldCBtIFwic2hpZnRLZXlcIlxuICAgIGxldCBtZXRhX2tleSBtID0gSnYuQm9vbC5nZXQgbSBcIm1ldGFLZXlcIlxuICAgIGxldCBnZXRfbW9kaWZpZXJfc3RhdGUgbSBrZXkgPVxuICAgICAgSnYudG9fYm9vbCBAQCBKdi5jYWxsIG0gXCJnZXRNb2RpZmllclN0YXRlXCIgSnYuW3wgb2ZfanN0ciBrZXkgfF1cbiAgZW5kXG4gIG1vZHVsZSBEcmFnID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSnYudFxuICAgIGV4dGVybmFsIGFzX21vdXNlIDogdCAtPiBNb3VzZS50ID0gXCIlaWRlbnRpdHlcIlxuICAgIGxldCBkYXRhX3RyYW5zZmVyIGQgPSBKdi5maW5kX21hcCBGdW4uaWQgZCBcImRhdGFUcmFuc2ZlclwiXG4gIGVuZFxuICBtb2R1bGUgUG9pbnRlciA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgZXZlbnQgPSAnYSB0XG4gICAgdHlwZSB0ID0gSnYudFxuICAgIGV4dGVybmFsIGFzX21vdXNlIDogdCAtPiBNb3VzZS50ID0gXCIlaWRlbnRpdHlcIlxuICAgIGxldCBpZCBwID0gSnYuSW50LmdldCBwIFwicG9pbnRlcklkXCJcbiAgICBsZXQgd2lkdGggcCA9IEp2LkZsb2F0LmdldCBwIFwid2lkdGhcIlxuICAgIGxldCBoZWlnaHQgcCA9IEp2LkZsb2F0LmdldCBwIFwiaGVpZ2h0XCJcbiAgICBsZXQgcHJlc3N1cmUgcCA9IEp2LkZsb2F0LmdldCBwIFwicHJlc3N1cmVcIlxuICAgIGxldCB0YW5nZW50aWFsX3ByZXNzdXJlIHAgPSBKdi5GbG9hdC5nZXQgcCBcInRhbmdlbnRpYWxQcmVzc3VyZVwiXG4gICAgbGV0IHRpbHRfeCBwID0gSnYuSW50LmdldCBwIFwidGlsdFhcIlxuICAgIGxldCB0aWx0X3kgcCA9IEp2LkludC5nZXQgcCBcInRpbHRZXCJcbiAgICBsZXQgdHdpc3QgcCA9IEp2LkludC5nZXQgcCBcInR3aXN0XCJcbiAgICBsZXQgYWx0aXR1ZGVfYW5nbGUgcCA9IEp2LkZsb2F0LmdldCBwIFwiYWx0aXR1ZGVBbmdsZVwiXG4gICAgbGV0IGF6aW11dGhfYW5nbGUgcCA9IEp2LkZsb2F0LmdldCBwIFwiYXppbXV0aEFuZ2xlXCJcbiAgICBsZXQgdHlwZScgcCA9IEp2LkpzdHIuZ2V0IHAgXCJwb2ludGVyVHlwZVwiXG4gICAgbGV0IGlzX3ByaW1hcnkgcCA9IEp2LkJvb2wuZ2V0IHAgXCJpc1ByaW1hcnlcIlxuICAgIGxldCBnZXRfY29hbGVzY2VkX2V2ZW50cyBwID1cbiAgICAgIEp2LnRvX2xpc3QgRnVuLmlkIChKdi5jYWxsIHAgXCJnZXRDb2FsZXNjZWRFdmVudHNcIiBbfHxdKVxuXG4gICAgbGV0IGdldF9wcmVkaWN0ZWRfZXZlbnRzIHAgPVxuICAgICAgSnYudG9fbGlzdCBGdW4uaWQgKEp2LmNhbGwgcCBcImdldFByZWRpY3RlZEV2ZW50c1wiIFt8fF0pXG4gIGVuZFxuICBtb2R1bGUgV2hlZWwgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgRGVsdGFfbW9kZSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gaW50XG4gICAgICBsZXQgcGl4ZWwgPSAweDAwXG4gICAgICBsZXQgbGluZSA9IDB4MDFcbiAgICAgIGxldCBwYWdlID0gMHgwMlxuICAgIGVuZFxuICAgIHR5cGUgdCA9IEp2LnRcbiAgICBleHRlcm5hbCBhc19tb3VzZSA6IHQgLT4gTW91c2UudCA9IFwiJWlkZW50aXR5XCJcbiAgICBsZXQgZGVsdGFfeCB3ID0gSnYuRmxvYXQuZ2V0IHcgXCJkZWx0YVhcIlxuICAgIGxldCBkZWx0YV95IHcgPSBKdi5GbG9hdC5nZXQgdyBcImRlbHRhWVwiXG4gICAgbGV0IGRlbHRhX3ogdyA9IEp2LkZsb2F0LmdldCB3IFwiZGVsdGFaXCJcbiAgICBsZXQgZGVsdGFfbW9kZSB3ID0gSnYuSW50LmdldCB3IFwiZGVsdGFNb2RlXCJcbiAgZW5kXG5cbiAgKCogRXZlbnQgdHlwZXMgKilcblxuICBsZXQgYWJvcnQgPSBUeXBlLnZvaWQgKEpzdHIudiBcImFib3J0XCIpXG4gIGxldCBhY3RpdmF0ZSA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJhY3RpdmF0ZVwiKVxuICBsZXQgYXV4Y2xpY2sgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiZGJsY2xpY2tcIilcbiAgbGV0IGJlZm9yZWlucHV0ID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImJlZm9yZWlucHV0XCIpXG4gIGxldCBiZWZvcmV1bmxvYWQgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiYmVmb3JldW5sb2FkXCIpXG4gIGxldCBibHVyID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImJsdXJcIilcbiAgbGV0IGNhbnBsYXkgPSBUeXBlLnZvaWQgKEpzdHIudiBcImNhbnBsYXlcIilcbiAgbGV0IGNhbnBsYXl0aHJvdWdoID0gVHlwZS52b2lkIChKc3RyLnYgXCJjYW5wbGF5dGhyb3VnaFwiKVxuICBsZXQgY2hhbmdlID0gVHlwZS52b2lkIChKc3RyLnYgXCJjaGFuZ2VcIilcbiAgbGV0IGNsaWNrID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImNsaWNrXCIpXG4gIGxldCBjbGlwYm9hcmRjaGFuZ2UgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiY2xpcGJvYXJkY2hhbmdlXCIpXG4gIGxldCBjbG9zZSA9IFR5cGUudm9pZCAoSnN0ci52IFwiY2xvc2VcIilcbiAgbGV0IGNvbXBvc2l0aW9uZW5kID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImNvbXBvc2l0aW9uZW5kXCIpXG4gIGxldCBjb21wb3NpdGlvbnN0YXJ0ID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImNvbXBvc2l0aW9uc3RhcnRcIilcbiAgbGV0IGNvbXBvc2l0aW9udWRwYXRlID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImNvbXBvc2l0aW9udXBkYXRlXCIpXG4gIGxldCBjb250cm9sbGVyY2hhbmdlID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImNvbnRyb2xsZXJjaGFuZ2VcIilcbiAgbGV0IGNvcHkgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiY29weVwiKVxuICBsZXQgY3V0ID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImN1dFwiKVxuICBsZXQgZGJsY2xpY2sgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiZGJsY2xpY2tcIilcbiAgbGV0IGRvbV9jb250ZW50X2xvYWRlZCA9IFR5cGUudm9pZCAoSnN0ci52IFwiRE9NQ29udGVudExvYWRlZFwiKVxuICBsZXQgZHJhZyA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJkcmFnXCIpXG4gIGxldCBkcmFnZW5kID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImRyYWdlbmRcIilcbiAgbGV0IGRyYWdlbnRlciA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJkcmFnZW50ZXJcIilcbiAgbGV0IGRyYWdleGl0ID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImRyYWdleGl0XCIpXG4gIGxldCBkcmFnbGVhdmUgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiZHJhZ2xlYXZlXCIpXG4gIGxldCBkcmFnb3ZlciA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJkcmFnb3ZlclwiKVxuICBsZXQgZHJhZ3N0YXJ0ID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImRyYWdzdGFydFwiKVxuICBsZXQgZHJvcCA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJkcm9wXCIpXG4gIGxldCBkdXJhdGlvbmNoYW5nZSA9IFR5cGUudm9pZCAoSnN0ci52IFwiZHVyYXRpb25jaGFuZ2VcIilcbiAgbGV0IGVtcHRpZWQgPSBUeXBlLnZvaWQgKEpzdHIudiBcImVtcHRpZWRcIilcbiAgbGV0IGVuZGVkID0gVHlwZS52b2lkIChKc3RyLnYgXCJlbmRlZFwiKVxuICBsZXQgZXJyb3IgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiZXJyb3JcIilcbiAgbGV0IGZvY3VzID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImZvY3VzXCIpXG4gIGxldCBmb2N1c2luID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImZvY3VzaW5cIilcbiAgbGV0IGZvY3Vzb3V0ID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImZvY3Vzb3V0XCIpXG4gIGxldCBmdWxsc2NyZWVuY2hhbmdlID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImZ1bGxzY3JlZW5jaGFuZ2VcIilcbiAgbGV0IGZ1bGxzY3JlZW5lcnJvciA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJmdWxsc2NyZWVuZXJyb3JcIilcbiAgbGV0IGdvdHBvaW50ZXJjYXB0dXJlID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImdvdHBvaW50ZXJjYXB0dXJlXCIpXG4gIGxldCBoYXNoY2hhbmdlID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImhhc2hjaGFuZ2VcIilcbiAgbGV0IGlucHV0ID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImlucHV0XCIpXG4gIGxldCBpbnN0YWxsID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImluc3RhbGxcIilcbiAgbGV0IGtleWRvd24gPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwia2V5ZG93blwiKVxuICBsZXQga2V5dXAgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwia2V5dXBcIilcbiAgbGV0IGxhbmd1YWdlY2hhbmdlID0gVHlwZS52b2lkIChKc3RyLnYgXCJsYW5ndWFnZWNoYW5nZVwiKVxuICBsZXQgbG9hZCA9IFR5cGUudm9pZCAoSnN0ci52IFwibG9hZFwiKVxuICBsZXQgbG9hZGVkZGF0YSA9IFR5cGUudm9pZCAoSnN0ci52IFwibG9hZGVkZGF0YVwiKVxuICBsZXQgbG9hZGVkbWV0YWRhdGEgPSBUeXBlLnZvaWQgKEpzdHIudiBcImxvYWRlZG1ldGFkYXRhXCIpXG4gIGxldCBsb2Fkc3RhcnQgPSBUeXBlLnZvaWQgKEpzdHIudiBcImxvYWRzdGFydFwiKVxuICBsZXQgbG9zdHBvaW50ZXJjYXB0dXJlID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImxvc3Rwb2ludGVyY2FwdHVyZVwiKVxuICBsZXQgbW91c2Vkb3duID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcIm1vdXNlZG93blwiKVxuICBsZXQgbW91c2VlbnRlciA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJtb3VzZWVudGVyXCIpXG4gIGxldCBtb3VzZWxlYXZlID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcIm1vdXNlbGVhdmVcIilcbiAgbGV0IG1vdXNlbW92ZSA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJtb3VzZW1vdmVcIilcbiAgbGV0IG1vdXNlb3V0ID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcIm1vdXNlb3V0XCIpXG4gIGxldCBtb3VzZW92ZXIgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwibW91c2VvdmVyXCIpXG4gIGxldCBtb3VzZXVwID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcIm1vdXNldXBcIilcbiAgbGV0IG9wZW4nID0gVHlwZS52b2lkIChKc3RyLnYgXCJvcGVuXCIpXG4gIGxldCBwYXN0ZSA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJwYXN0ZVwiKVxuICBsZXQgcGF1c2UgPSBUeXBlLnZvaWQgKEpzdHIudiBcInBhdXNlXCIpXG4gIGxldCBwbGF5ID0gVHlwZS52b2lkIChKc3RyLnYgXCJwbGF5XCIpXG4gIGxldCBwbGF5aW5nID0gVHlwZS52b2lkIChKc3RyLnYgXCJwbGF5aW5nXCIpXG4gIGxldCBwb2ludGVyY2FuY2VsID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcInBvaW50ZXJjYW5jZWxcIilcbiAgbGV0IHBvaW50ZXJkb3duID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcInBvaW50ZXJkb3duXCIpXG4gIGxldCBwb2ludGVyZW50ZXIgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwicG9pbnRlcmVudGVyXCIpXG4gIGxldCBwb2ludGVybGVhdmUgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwicG9pbnRlcmxlYXZlXCIpXG4gIGxldCBwb2ludGVybG9ja2NoYW5nZSA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJwb2ludGVybG9ja2NoYW5nZVwiKVxuICBsZXQgcG9pbnRlcmxvY2tlcnJvciA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJwb2ludGVybG9ja2Vycm9yXCIpXG4gIGxldCBwb2ludGVybW92ZSA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJwb2ludGVybW92ZVwiKVxuICBsZXQgcG9pbnRlcm91dCA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJwb2ludGVyb3V0XCIpXG4gIGxldCBwb2ludGVyb3ZlciA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJwb2ludGVyb3ZlclwiKVxuICBsZXQgcG9pbnRlcnJhd3VwZGF0ZSA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJwb2ludGVycmF3dXBkYXRlXCIpXG4gIGxldCBwb2ludGVydXAgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwicG9pbnRlcnVwXCIpXG4gIGxldCBwcm9ncmVzcyA9IFR5cGUudm9pZCAoSnN0ci52IFwicHJvZ3Jlc3NcIilcbiAgbGV0IHJhdGVjaGFuZ2UgPSBUeXBlLnZvaWQgKEpzdHIudiBcInJhdGVjaGFuZ2VcIilcbiAgbGV0IHJlc2V0ID0gVHlwZS52b2lkIChKc3RyLnYgXCJyZXNldFwiKVxuICBsZXQgcmVzaXplID0gVHlwZS52b2lkIChKc3RyLnYgXCJyZXNpemVcIilcbiAgbGV0IHNjcm9sbCA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJzY3JvbGxcIilcbiAgbGV0IHNlZWtlZCA9IFR5cGUudm9pZCAoSnN0ci52IFwic2Vla2VkXCIpXG4gIGxldCBzZWVraW5nID0gVHlwZS52b2lkIChKc3RyLnYgXCJzZWVraW5nXCIpXG4gIGxldCBzZWxlY3QgPSBUeXBlLnZvaWQgKEpzdHIudiBcInNlbGVjdFwiKVxuICBsZXQgc3RhbGxlZCA9IFR5cGUudm9pZCAoSnN0ci52IFwic3RhbGxlZFwiKVxuICBsZXQgc3RhdGVjaGFuZ2UgPSBUeXBlLnZvaWQgKEpzdHIudiBcInN0YXRlY2hhbmdlXCIpXG4gIGxldCBzdXNwZW5kID0gVHlwZS52b2lkIChKc3RyLnYgXCJzdXNwZW5kXCIpXG4gIGxldCB0aW1ldXBkYXRlID0gVHlwZS52b2lkIChKc3RyLnYgXCJ0aW1ldXBkYXRlXCIpXG4gIGxldCB1bmxvYWQgPSBUeXBlLnZvaWQgKEpzdHIudiBcInVubG9hZFwiKVxuICBsZXQgdXBkYXRlZm91bmQgPSBUeXBlLnZvaWQgKEpzdHIudiBcInVwZGF0ZWZvdW5kXCIpXG4gIGxldCB2aXNpYmlsaXR5Y2hhbmdlID0gVHlwZS52b2lkIChKc3RyLnYgXCJ2aXNpYmlsaXR5Y2hhbmdlXCIpXG4gIGxldCB2b2x1bWVjaGFuZ2UgPSBUeXBlLnZvaWQgKEpzdHIudiBcInZvbHVtZWNoYW5nZVwiKVxuICBsZXQgd2FpdGluZyA9IFR5cGUudm9pZCAoSnN0ci52IFwid2FpdGluZ1wiKVxuICBsZXQgd2hlZWwgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwid2hlZWxcIilcbmVuZFxuXG4oKiBEYXRhIGNvbnRhaW5lcnMgYW5kIGVuY29kaW5ncyAqKVxuXG5tb2R1bGUgVGFycmF5ID0gc3RydWN0XG5cbiAgKCogQXJyYXkgYnVmZmVycyAqKVxuXG4gIG1vZHVsZSBCdWZmZXIgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKdi50XG4gICAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICBsZXQgYXJyYXlfYnVmZmVyID0gSnYuZ2V0IEp2Lmdsb2JhbCBcIkFycmF5QnVmZmVyXCJcbiAgICBsZXQgY3JlYXRlIG4gPSBKdi5uZXcnIGFycmF5X2J1ZmZlciBKdi5bfCBvZl9pbnQgbiB8XVxuICAgIGxldCBieXRlX2xlbmd0aCBhID0gSnYuSW50LmdldCBhIFwiYnl0ZUxlbmd0aFwiXG4gICAgbGV0IHNsaWNlID8oc3RhcnQgPSAwKSA/c3RvcCAgYSA9XG4gICAgICBsZXQgc3RvcCA9IG1hdGNoIHN0b3Agd2l0aCBOb25lIC0+IGJ5dGVfbGVuZ3RoIGEgfCBTb21lIHN0b3AgLT4gc3RvcCBpblxuICAgICAgSnYuY2FsbCBhIFwic2xpY2VcIiBKdi5bfCBvZl9pbnQgc3RhcnQ7IG9mX2ludCBzdG9wIHxdXG4gIGVuZFxuXG4gICgqIENvbW1vbiB0byB0eXBlZCBhcnJheXMgYW5kIERhdGFWaWV3cyAqKVxuXG4gIGxldCBidWZmZXIgbyA9IEJ1ZmZlci5vZl9qdiBAQCBKdi5nZXQgbyBcImJ1ZmZlclwiXG4gIGxldCBieXRlX29mZnNldCBvID0gSnYuSW50LmdldCBvIFwiYnl0ZU9mZnNldFwiXG4gIGxldCBieXRlX2xlbmd0aCBvID0gSnYuSW50LmdldCBvIFwiYnl0ZUxlbmd0aFwiXG5cbiAgKCogQnl0ZS1sZXZlbCBkYXRhIGFjY2VzcyAqKVxuXG4gIG1vZHVsZSBEYXRhX3ZpZXcgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKdi50ICgqIERhdGFWaWV3IG9iamVjdCAqKVxuICAgIGluY2x1ZGUgKEp2LklkIDogSnYuQ09OViB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gICAgbGV0IGRhdGF2aWV3ID0gSnYuZ2V0IEp2Lmdsb2JhbCBcIkRhdGFWaWV3XCJcbiAgICBsZXQgb2ZfYnVmZmVyID8oYnl0ZV9vZmZzZXQgPSAwKSA/Ynl0ZV9sZW5ndGggYiA9XG4gICAgICBsZXQgYnl0ZV9sZW5ndGggPSBtYXRjaCBieXRlX2xlbmd0aCB3aXRoXG4gICAgICB8IE5vbmUgLT4gQnVmZmVyLmJ5dGVfbGVuZ3RoIGJcbiAgICAgIHwgU29tZSBsIC0+IGxcbiAgICAgIGluXG4gICAgICBKdi5uZXcnIGRhdGF2aWV3XG4gICAgICAgIEp2Llt8QnVmZmVyLnRvX2p2IGI7IG9mX2ludCBieXRlX29mZnNldDsgb2ZfaW50IGJ5dGVfbGVuZ3RofF1cblxuICAgIGxldCBidWZmZXIgPSBidWZmZXJcbiAgICBsZXQgYnl0ZV9vZmZzZXQgPSBieXRlX29mZnNldFxuICAgIGxldCBieXRlX2xlbmd0aCA9IGJ5dGVfbGVuZ3RoXG5cbiAgICBsZXQgZ2V0X2ludDggYiBpID1cbiAgICAgIEp2LnRvX2ludCBAQCBKdi5jYWxsIGIgXCJnZXRJbnQ4XCIgSnYuW3wgb2ZfaW50IGkgfF1cblxuICAgIGxldCBnZXRfaW50MTZfYmUgYiBpID1cbiAgICAgIEp2LnRvX2ludCBAQCBKdi5jYWxsIGIgXCJnZXRJbnQxNlwiIEp2Llt8IG9mX2ludCBpIHxdXG5cbiAgICBsZXQgZ2V0X2ludDE2X2xlIGIgaSA9XG4gICAgICBKdi50b19pbnQgQEAgSnYuY2FsbCBiIFwiZ2V0SW50MTZcIiBKdi5bfCBvZl9pbnQgaTsgSnYudHJ1ZScgfF1cblxuICAgIGxldCBnZXRfaW50MzJfYmUgYiBpID1cbiAgICAgIEp2LnRvX2ludDMyIEBAIEp2LmNhbGwgYiBcImdldEludDMyXCIgSnYuW3wgb2ZfaW50IGkgfF1cblxuICAgIGxldCBnZXRfaW50MzJfbGUgYiBpID1cbiAgICAgIEp2LnRvX2ludDMyIEBAIEp2LmNhbGwgYiBcImdldEludDMyXCIgSnYuW3wgb2ZfaW50IGk7IEp2LnRydWUnIHxdXG5cbiAgICBsZXQgZ2V0X3VpbnQ4IGIgaSA9XG4gICAgICBKdi50b19pbnQgQEAgSnYuY2FsbCBiIFwiZ2V0VWludDhcIiBKdi5bfCBvZl9pbnQgaSB8XVxuXG4gICAgbGV0IGdldF91aW50MTZfYmUgYiBpID1cbiAgICAgIEp2LnRvX2ludCBAQCBKdi5jYWxsIGIgXCJnZXRVaW50MTZcIiBKdi5bfCBvZl9pbnQgaSB8XVxuXG4gICAgbGV0IGdldF91aW50MTZfbGUgYiBpID1cbiAgICAgIEp2LnRvX2ludCBAQCBKdi5jYWxsIGIgXCJnZXRVaW50MTZcIiBKdi5bfCBvZl9pbnQgaTsgSnYudHJ1ZScgfF1cblxuICAgIGxldCBnZXRfdWludDMyX2JlIGIgaSA9XG4gICAgICBKdi50b19pbnQzMiBAQCBKdi5jYWxsIGIgXCJnZXRVaW50MzJcIiBKdi5bfCBvZl9pbnQgaSB8XVxuXG4gICAgbGV0IGdldF91aW50MzJfbGUgYiBpID1cbiAgICAgIEp2LnRvX2ludDMyIEBAIEp2LmNhbGwgYiBcImdldFVpbnQzMlwiIEp2Llt8IG9mX2ludCBpOyBKdi50cnVlJyB8XVxuXG4gICAgbGV0IGdldF9mbG9hdDMyX2JlIGIgaSA9XG4gICAgICBKdi50b19mbG9hdCBAQCBKdi5jYWxsIGIgXCJnZXRGbG9hdDMyXCIgSnYuW3wgb2ZfaW50IGkgfF1cblxuICAgIGxldCBnZXRfZmxvYXQzMl9sZSBiIGkgPVxuICAgICAgSnYudG9fZmxvYXQgQEAgSnYuY2FsbCBiIFwiZ2V0RmxvYXQzMlwiIEp2Llt8IG9mX2ludCBpOyBKdi50cnVlJyB8XVxuXG4gICAgbGV0IGdldF9mbG9hdDY0X2JlIGIgaSA9XG4gICAgICBKdi50b19mbG9hdCBAQCBKdi5jYWxsIGIgXCJnZXRGbG9hdDY0XCIgSnYuW3wgb2ZfaW50IGkgfF1cblxuICAgIGxldCBnZXRfZmxvYXQ2NF9sZSBiIGkgPVxuICAgICAgSnYudG9fZmxvYXQgQEAgSnYuY2FsbCBiIFwiZ2V0RmxvYXQ2NFwiIEp2Llt8IG9mX2ludCBpOyBKdi50cnVlJyB8XVxuXG4gICAgbGV0IHNldF9pbnQ4IGIgaSB2ID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIGIgXCJzZXRJbnQ4XCIgSnYuW3wgb2ZfaW50IGk7IG9mX2ludCB2IHxdXG5cbiAgICBsZXQgc2V0X2ludDE2X2JlIGIgaSB2ID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIGIgXCJzZXRJbnQxNlwiIEp2Llt8IG9mX2ludCBpOyBvZl9pbnQgdiB8XVxuXG4gICAgbGV0IHNldF9pbnQxNl9sZSBiIGkgdiA9XG4gICAgICBpZ25vcmUgQEAgSnYuY2FsbCBiIFwic2V0SW50MTZcIiBKdi5bfCBvZl9pbnQgaTsgb2ZfaW50IHY7IEp2LnRydWUnIHxdXG5cbiAgICBsZXQgc2V0X2ludDMyX2JlIGIgaSB2ID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIGIgXCJzZXRJbnQzMlwiIEp2Llt8IG9mX2ludCBpOyBvZl9pbnQzMiB2IHxdXG5cbiAgICBsZXQgc2V0X2ludDMyX2xlIGIgaSB2ID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIGIgXCJzZXRJbnQzMlwiIEp2Llt8IG9mX2ludCBpOyBvZl9pbnQzMiB2OyBKdi50cnVlJyB8XVxuXG4gICAgbGV0IHNldF91aW50OCBiIGkgdiA9XG4gICAgICBpZ25vcmUgQEAgSnYuY2FsbCBiIFwic2V0VWludDhcIiBKdi5bfCBvZl9pbnQgaTsgb2ZfaW50IHYgfF1cblxuICAgIGxldCBzZXRfdWludDE2X2JlIGIgaSB2ID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIGIgXCJzZXRVaW50MTZcIiBKdi5bfCBvZl9pbnQgaTsgb2ZfaW50IHYgfF1cblxuICAgIGxldCBzZXRfdWludDE2X2xlIGIgaSB2ID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIGIgXCJzZXRVaW50MTZcIiBKdi5bfCBvZl9pbnQgaTsgb2ZfaW50IHY7IEp2LnRydWUnIHxdXG5cbiAgICBsZXQgc2V0X3VpbnQzMl9iZSBiIGkgdiA9XG4gICAgICBpZ25vcmUgQEAgSnYuY2FsbCBiIFwic2V0VWludDMyXCIgSnYuW3wgb2ZfaW50IGk7IG9mX2ludDMyIHYgfF1cblxuICAgIGxldCBzZXRfdWludDMyX2xlIGIgaSB2ID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIGIgXCJzZXRVaW50MzJcIiBKdi5bfCBvZl9pbnQgaTsgb2ZfaW50MzIgdjsgSnYudHJ1ZScgfF1cblxuICAgIGxldCBzZXRfZmxvYXQzMl9iZSBiIGkgdiA9XG4gICAgICBpZ25vcmUgQEAgSnYuY2FsbCBiIFwic2V0RmxvYXQzMlwiIEp2Llt8IG9mX2ludCBpOyBvZl9mbG9hdCB2IHxdXG5cbiAgICBsZXQgc2V0X2Zsb2F0MzJfbGUgYiBpIHYgPVxuICAgICAgaWdub3JlIEBAIEp2LmNhbGwgYiBcInNldEZsb2F0MzJcIiBKdi5bfCBvZl9pbnQgaTsgb2ZfZmxvYXQgdjsgSnYudHJ1ZScgfF1cblxuICAgIGxldCBzZXRfZmxvYXQ2NF9iZSBiIGkgdiA9XG4gICAgICBpZ25vcmUgQEAgSnYuY2FsbCBiIFwic2V0RmxvYXQ2NFwiIEp2Llt8IG9mX2ludCBpOyBvZl9mbG9hdCB2IHxdXG5cbiAgICBsZXQgc2V0X2Zsb2F0NjRfbGUgYiBpIHYgPVxuICAgICAgaWdub3JlIEBAIEp2LmNhbGwgYiBcInNldEZsb2F0NjRcIiBKdi5bfCBvZl9pbnQgaTsgb2ZfZmxvYXQgdjsgSnYudHJ1ZScgfF1cbiAgZW5kXG5cbiAgKCogQXJyYXkgdHlwZXMgKilcblxuICB0eXBlICgnYSwgJ2IpIHR5cGUnID1cbiAgfCBJbnQ4IDogKGludCwgQmlnYXJyYXkuaW50OF9zaWduZWRfZWx0KSB0eXBlJ1xuICB8IEludDE2IDogKGludCwgQmlnYXJyYXkuaW50MTZfc2lnbmVkX2VsdCkgdHlwZSdcbiAgfCBJbnQzMiA6IChpbnQzMiwgQmlnYXJyYXkuaW50MzJfZWx0KSB0eXBlJ1xuICB8IFVpbnQ4IDogKGludCwgQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHQpIHR5cGUnXG4gIHwgVWludDhfY2xhbXBlZCA6IChpbnQsIEJpZ2FycmF5LmludDhfdW5zaWduZWRfZWx0KSB0eXBlJ1xuICB8IFVpbnQxNiA6IChpbnQsIEJpZ2FycmF5LmludDE2X3Vuc2lnbmVkX2VsdCkgdHlwZSdcbiAgfCBVaW50MzIgOiAoaW50MzIsIEJpZ2FycmF5LmludDMyX2VsdCkgdHlwZSdcbiAgfCBGbG9hdDMyIDogKGZsb2F0LCBCaWdhcnJheS5mbG9hdDMyX2VsdCkgdHlwZSdcbiAgfCBGbG9hdDY0IDogKGZsb2F0LCBCaWdhcnJheS5mbG9hdDY0X2VsdCkgdHlwZSdcblxuICBsZXQgdHlwZV9zaXplX2luX2J5dGVzIDogdHlwZSBhIGIuIChhLCBiKSB0eXBlJyAtPiBpbnQgPSBmdW5jdGlvblxuICB8IEludDggfCBVaW50OCB8IFVpbnQ4X2NsYW1wZWQgLT4gMSB8IEludDE2IHwgVWludDE2IC0+IDJcbiAgfCBJbnQzMiB8IFVpbnQzMiB8IEZsb2F0MzIgLT4gNCB8IEZsb2F0NjQgIC0+IDhcblxuICAoKiBUeXBlZCBhcnJheXMgKilcblxuICB0eXBlICgnYSwgJ2IpIHQgPSBKdi50XG4gIGV4dGVybmFsIHRvX2p2IDogKCdhLCAnYikgdCAtPiBKdi50ID0gXCIlaWRlbnRpdHlcIlxuICBleHRlcm5hbCBvZl9qdiA6IEp2LnQgLT4gKCdhLCAnYikgdCA9IFwiJWlkZW50aXR5XCJcblxuICBsZXQgY29uc19vZl90eXBlIDogdHlwZSBhIGIuIChhLCBiKSB0eXBlJyAtPiBKdi50ID0gZnVuY3Rpb25cbiAgfCBJbnQ4IC0+IEp2LmdldCBKdi5nbG9iYWwgXCJJbnQ4QXJyYXlcIlxuICB8IEludDE2IC0+IEp2LmdldCBKdi5nbG9iYWwgXCJJbnQxNkFycmF5XCJcbiAgfCBJbnQzMiAtPiBKdi5nZXQgSnYuZ2xvYmFsIFwiSW50MzJBcnJheVwiXG4gIHwgVWludDggLT4gSnYuZ2V0IEp2Lmdsb2JhbCBcIlVpbnQ4QXJyYXlcIlxuICB8IFVpbnQ4X2NsYW1wZWQgLT4gSnYuZ2V0IEp2Lmdsb2JhbCBcIlVpbnQ4Q2xhbXBlZEFycmF5XCJcbiAgfCBVaW50MTYgLT4gSnYuZ2V0IEp2Lmdsb2JhbCBcIlVpbnQxNkFycmF5XCJcbiAgfCBVaW50MzIgLT4gSnYuZ2V0IEp2Lmdsb2JhbCBcIlVpbnQzMkFycmF5XCJcbiAgfCBGbG9hdDMyIC0+IEp2LmdldCBKdi5nbG9iYWwgXCJGbG9hdDMyQXJyYXlcIlxuICB8IEZsb2F0NjQgLT4gSnYuZ2V0IEp2Lmdsb2JhbCBcIkZsb2F0NjRBcnJheVwiXG5cbiAgbGV0IGNyZWF0ZSB0IG4gPSBKdi5uZXcnIChjb25zX29mX3R5cGUgdCkgSnYuW3wgb2ZfaW50IG4gfF1cbiAgbGV0IG9mX2J1ZmZlciB0ID8oYnl0ZV9vZmZzZXQgPSAwKSA/bGVuZ3RoIGIgPVxuICAgIGxldCBhcmdzID0gbWF0Y2ggbGVuZ3RoIHdpdGhcbiAgICB8IE5vbmUgLT4gSnYuW3wgYjsgb2ZfaW50IGJ5dGVfb2Zmc2V0IHxdXG4gICAgfCBTb21lIGwgLT4gSnYuW3wgYjsgb2ZfaW50IGJ5dGVfb2Zmc2V0OyBvZl9pbnQgbCB8XVxuICAgIGluXG4gICAgSnYubmV3JyAoY29uc19vZl90eXBlIHQpIGFyZ3NcblxuICBsZXQgbGVuZ3RoIGEgPSBKdi5JbnQuZ2V0IGEgXCJsZW5ndGhcIlxuICBsZXQgdHlwZScgOiB0eXBlIGEgYi4gKGEsIGIpIHQgLT4gKGEsIGIpIHR5cGUnID0gZnVuIGEgLT5cbiAgICBsZXQgbSA9IE9iai5tYWdpYyBpblxuICAgIG1hdGNoIEpzdHIudG9fc3RyaW5nIChKdi5Kc3RyLmdldCAoSnYuZ2V0IGEgXCJjb25zdHJ1Y3RvclwiKSBcIm5hbWVcIikgd2l0aFxuICAgIHwgXCJJbnQ4QXJyYXlcIiAtPiBtIEludDhcbiAgICB8IFwiSW50MTZBcnJheVwiIC0+IG0gSW50MTZcbiAgICB8IFwiSW50MzJBcnJheVwiIC0+IG0gSW50MzJcbiAgICB8IFwiVWludDhBcnJheVwiIC0+IG0gVWludDhcbiAgICB8IFwiVWludDhDbGFtcGVkQXJyYXlcIiAtPiBtIFVpbnQ4X2NsYW1wZWRcbiAgICB8IFwiVWludDE2QXJyYXlcIiAtPiBtIFVpbnQxNlxuICAgIHwgXCJVaW50MzJBcnJheVwiIC0+IG0gVWludDMyXG4gICAgfCBcIkZsb2F0MzJBcnJheVwiIC0+IG0gRmxvYXQzMlxuICAgIHwgXCJGbG9hdDY0QXJyYXlcIiAtPiBtIEZsb2F0NjRcbiAgICB8IHMgLT5cbiAgICAgICAgbGV0IHQgPSBKc3RyLm9mX3N0cmluZyBzIGluXG4gICAgICAgIEp2LnRocm93IChKc3RyLmFwcGVuZCAoSnN0ci52IFwiVW5rbm93biB0eXBlZCBhcnJheTogXCIpIHQpXG5cbiAgbGV0IHRvX2p2X29mX3R5cGUgOiB0eXBlIGEgYi4gKGEsIGIpIHR5cGUnIC0+IGEgLT4gSnYudCA9IGZ1bmN0aW9uXG4gIHwgSW50OCAtPiBKdi5vZl9pbnRcbiAgfCBJbnQxNiAtPiBKdi5vZl9pbnRcbiAgfCBJbnQzMiAtPiBKdi5vZl9pbnQzMlxuICB8IFVpbnQ4IC0+IEp2Lm9mX2ludFxuICB8IFVpbnQ4X2NsYW1wZWQgLT4gSnYub2ZfaW50XG4gIHwgVWludDE2IC0+IEp2Lm9mX2ludFxuICB8IFVpbnQzMiAtPiBKdi5vZl9pbnQzMlxuICB8IEZsb2F0MzIgLT4gSnYub2ZfZmxvYXRcbiAgfCBGbG9hdDY0IC0+IEp2Lm9mX2Zsb2F0XG5cbiAgbGV0IG9mX2p2X29mX3R5cGUgOiB0eXBlIGEgYi4gKGEsIGIpIHR5cGUnIC0+IEp2LnQgLT4gYSA9IGZ1bmN0aW9uXG4gIHwgSW50OCAtPiBKdi50b19pbnRcbiAgfCBJbnQxNiAtPiBKdi50b19pbnRcbiAgfCBJbnQzMiAtPiBKdi50b19pbnQzMlxuICB8IFVpbnQ4IC0+IEp2LnRvX2ludFxuICB8IFVpbnQ4X2NsYW1wZWQgLT4gSnYudG9faW50XG4gIHwgVWludDE2IC0+IEp2LnRvX2ludFxuICB8IFVpbnQzMiAtPiBKdi50b19pbnQzMlxuICB8IEZsb2F0MzIgLT4gSnYudG9fZmxvYXRcbiAgfCBGbG9hdDY0IC0+IEp2LnRvX2Zsb2F0XG5cbiAgbGV0IGVsdF90b19qdiBhID0gdG9fanZfb2ZfdHlwZSAodHlwZScgYSlcbiAgbGV0IGVsdF9vZl9qdiBhID0gb2ZfanZfb2ZfdHlwZSAodHlwZScgYSlcblxuICAoKiBTZXR0aW5nLCBjb3B5aW5nIGFuZCBzbGljaW5nICopXG5cbiAgbGV0IGNvbXBpbGVkX3RvX3dhc20gPSBtYXRjaCBTeXMuYmFja2VuZF90eXBlIHdpdGhcbiAgfCBPdGhlciBcIndhc21fb2Zfb2NhbWxcIiAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG4gIGV4dGVybmFsIGdldCA6ICgnYSwgJ2IpIHQgLT4gaW50IC0+ICdhID0gXCJjYW1sX2pzX2dldFwiXG4gIGV4dGVybmFsIHNldCA6ICgnYSwgJ2IpIHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfanNfc2V0XCJcblxuICBsZXQgZ2V0ID1cbiAgICBpZiBjb21waWxlZF90b193YXNtXG4gICAgdGhlbiBmdW4gYSBpIC0+IGVsdF9vZl9qdiBhIChKdi5KYXJyYXkuZ2V0IChKdi5yZXByIGEpIGkpXG4gICAgZWxzZSBnZXRcblxuICBsZXQgc2V0ID1cbiAgICBpZiBjb21waWxlZF90b193YXNtXG4gICAgdGhlbiBmdW4gYSBpIHYgLT4gSnYuSmFycmF5LnNldCAoSnYucmVwciBhKSBpIChlbHRfdG9fanYgYSB2KVxuICAgIGVsc2Ugc2V0XG5cbiAgbGV0IHNldF90YXJyYXkgYSB+ZHN0IGIgPSBpZ25vcmUgQEAgSnYuY2FsbCBhIFwic2V0XCIgSnYuW3wgYjsgb2ZfaW50IGRzdCB8XVxuXG4gIGxldCBmaWxsID8oc3RhcnQgPSAwKSA/c3RvcCB2IGEgPVxuICAgIGxldCBzdG9wID0gbWF0Y2ggc3RvcCB3aXRoIE5vbmUgLT4gbGVuZ3RoIGEgfCBTb21lIHN0b3AgLT4gc3RvcCBpblxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGEgXCJmaWxsXCIgSnYuW3wgZWx0X3RvX2p2IGEgdjsgb2ZfaW50IHN0YXJ0OyBvZl9pbnQgc3RvcCB8XVxuXG4gIGxldCBjb3B5X3dpdGhpbiA/KHN0YXJ0ID0gMCkgP3N0b3AgfmRzdCBhID1cbiAgICBsZXQgc3RvcCA9IG1hdGNoIHN0b3Agd2l0aCBOb25lIC0+IGxlbmd0aCBhIHwgU29tZSBzdG9wIC0+IHN0b3AgaW5cbiAgICBpZ25vcmUgQEBcbiAgICBKdi5jYWxsIGEgXCJjb3B5V2l0aGluXCIgSnYuW3wgb2ZfaW50IGRzdDsgb2ZfaW50IHN0YXJ0OyBvZl9pbnQgc3RvcCB8XVxuXG4gIGxldCBzbGljZSA/KHN0YXJ0ID0gMCkgP3N0b3AgIGEgPVxuICAgIGxldCBzdG9wID0gbWF0Y2ggc3RvcCB3aXRoIE5vbmUgLT4gYnl0ZV9sZW5ndGggYSB8IFNvbWUgc3RvcCAtPiBzdG9wIGluXG4gICAgSnYuY2FsbCBhIFwic2xpY2VcIiBKdi5bfCBvZl9pbnQgc3RhcnQ7IG9mX2ludCBzdG9wIHxdXG5cbiAgbGV0IHN1YiA/KHN0YXJ0ID0gMCkgP3N0b3AgIGEgPVxuICAgIGxldCBzdG9wID0gbWF0Y2ggc3RvcCB3aXRoIE5vbmUgLT4gYnl0ZV9sZW5ndGggYSB8IFNvbWUgc3RvcCAtPiBzdG9wIGluXG4gICAgSnYuY2FsbCBhIFwic3ViYXJyYXlcIiBKdi5bfCBvZl9pbnQgc3RhcnQ7IG9mX2ludCBzdG9wIHxdXG5cbiAgKCogUHJlZGljYXRlcyAqKVxuXG4gIGxldCBmaW5kIHNhdCBhID1cbiAgICBsZXQgb2ZfanYgPSBlbHRfb2ZfanYgYSBpblxuICAgIGxldCBzYXQgdiBpID0gSnYub2ZfYm9vbCAoc2F0IGkgKG9mX2p2IHYpKSBpblxuICAgIEp2LnRvX29wdGlvbiBvZl9qdiAoSnYuY2FsbCBhIFwiZmluZFwiIEp2Llt8IGNhbGxiYWNrIH5hcml0eToyIHNhdCB8XSlcblxuICBsZXQgZmluZF9pbmRleCBzYXQgYSA9XG4gICAgbGV0IG9mX2p2ID0gZWx0X29mX2p2IGEgaW5cbiAgICBsZXQgc2F0IHYgaSA9IEp2Lm9mX2Jvb2wgKHNhdCBpIChvZl9qdiB2KSkgaW5cbiAgICBsZXQgaSA9IEp2LnRvX2ludCAoSnYuY2FsbCBhIFwiZmluZEluZGV4XCIgSnYuW3wgY2FsbGJhY2sgfmFyaXR5OjIgc2F0IHxdKSBpblxuICAgIGlmIGkgPSAtMSB0aGVuIE5vbmUgZWxzZSBTb21lIGlcblxuICBsZXQgZm9yX2FsbCBzYXQgYSA9XG4gICAgbGV0IG9mX2p2ID0gZWx0X29mX2p2IGEgaW5cbiAgICBsZXQgc2F0IHYgaSA9IEp2Lm9mX2Jvb2wgKHNhdCBpIChvZl9qdiB2KSkgaW5cbiAgICBKdi50b19ib29sIEBAIEp2LmNhbGwgYSBcImV2ZXJ5XCIgSnYuW3wgY2FsbGJhY2sgfmFyaXR5OjIgc2F0IHxdXG5cbiAgbGV0IGV4aXN0cyBzYXQgYSA9XG4gICAgbGV0IG9mX2p2ID0gZWx0X29mX2p2IGEgaW5cbiAgICBsZXQgc2F0IHYgaSA9IEp2Lm9mX2Jvb2wgKHNhdCBpIChvZl9qdiB2KSkgaW5cbiAgICBKdi50b19ib29sIEBAIEp2LmNhbGwgYSBcImV2ZXJ5XCIgSnYuW3wgY2FsbGJhY2sgfmFyaXR5OjIgc2F0IHxdXG5cbiAgKCogVHJhdmVyc2FscyAqKVxuXG4gIGxldCBmaWx0ZXIgc2F0IGEgPVxuICAgIGxldCBvZl9qdiA9IGVsdF9vZl9qdiBhIGluXG4gICAgbGV0IHNhdCB2IGkgPSBKdi5vZl9ib29sIChzYXQgaSAob2ZfanYgdikpIGluXG4gICAgSnYuY2FsbCBhIFwiZmlsdGVyXCIgSnYuW3wgY2FsbGJhY2sgfmFyaXR5OjIgc2F0IHxdXG5cbiAgbGV0IGl0ZXIgZiBhID1cbiAgICBsZXQgb2ZfanYgPSBlbHRfb2ZfanYgYSBpblxuICAgIGxldCBmIHYgaSA9IGYgaSAob2ZfanYgdikgaW5cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBhIFwiZm9yRWFjaFwiIEp2Llt8IGNhbGxiYWNrIH5hcml0eToyIGYgfF1cblxuICBsZXQgbWFwIGYgYSA9XG4gICAgbGV0IG9mX2p2ID0gZWx0X29mX2p2IGEgaW5cbiAgICBsZXQgZiB2ID0gZiAob2ZfanYgdikgaW5cbiAgICBKdi5jYWxsIGEgXCJtYXBcIiBKdi5bfCBjYWxsYmFjayB+YXJpdHk6MSBmIHxdXG5cbiAgbGV0IGZvbGRfbGVmdCBmIGFjYyBhID1cbiAgICBsZXQgb2ZfanYgPSBlbHRfb2ZfanYgYSBpblxuICAgIGxldCBmIGFjYyB2ID0gZiBhY2MgKG9mX2p2IHYpIGluXG4gICAgT2JqLm1hZ2ljIEBAIEp2LmNhbGwgYSBcInJlZHVjZVwiIFt8SnYuY2FsbGJhY2sgfmFyaXR5OjIgZjsgSnYucmVwciBhY2N8XVxuXG4gIGxldCBmb2xkX3JpZ2h0IGYgYSBhY2MgPVxuICAgIGxldCBvZl9qdiA9IGVsdF9vZl9qdiBhIGluXG4gICAgbGV0IGYgYWNjIHYgPSBmIChvZl9qdiB2KSBhY2MgaW5cbiAgICBPYmoubWFnaWMgQEAgSnYuY2FsbCBhIFwicmVkdWNlUmlnaHRcIiBbfEp2LmNhbGxiYWNrIH5hcml0eToyIGY7IEp2LnJlcHIgYWNjfF1cblxuICBsZXQgcmV2ZXJzZSBhID0gSnYuY2FsbCBhIFwicmV2ZXJzZVwiIEp2Llt8fF1cblxuICAoKiBUeXBlIGFsaWFzZXMgKilcblxuICB0eXBlIGludDggPSAoaW50LCBCaWdhcnJheS5pbnQ4X3NpZ25lZF9lbHQpIHRcbiAgdHlwZSBpbnQxNiA9IChpbnQsIEJpZ2FycmF5LmludDE2X3NpZ25lZF9lbHQpIHRcbiAgdHlwZSBpbnQzMiA9IChpbnQzMiwgQmlnYXJyYXkuaW50MzJfZWx0KSB0XG4gIHR5cGUgdWludDggPSAoaW50LCBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCkgdFxuICB0eXBlIHVpbnQ4X2NsYW1wZWQgPSAoaW50LCBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCkgdFxuICB0eXBlIHVpbnQxNiA9IChpbnQsIEJpZ2FycmF5LmludDE2X3Vuc2lnbmVkX2VsdCkgdFxuICB0eXBlIHVpbnQzMiA9IChpbnQzMiwgQmlnYXJyYXkuaW50MzJfZWx0KSB0XG4gIHR5cGUgZmxvYXQzMiA9IChmbG9hdCwgQmlnYXJyYXkuZmxvYXQzMl9lbHQpIHRcbiAgdHlwZSBmbG9hdDY0ID0gKGZsb2F0LCBCaWdhcnJheS5mbG9hdDY0X2VsdCkgdFxuXG4gICgqIENvbnZlcnRpbmcgKilcblxuICBsZXQgb2ZfdGFycmF5IHQgYSA9IEp2Lm5ldycgKGNvbnNfb2ZfdHlwZSB0KSBbfCBhIHxdXG4gIGxldCBvZl9pbnRfYXJyYXkgdCBhID0gSnYubmV3JyAoY29uc19vZl90eXBlIHQpIEp2Llt8IG9mX2FycmF5IEp2Lm9mX2ludCBhIHxdXG4gIGxldCBvZl9mbG9hdF9hcnJheSB0IGEgPSBKdi5uZXcnIChjb25zX29mX3R5cGUgdCkgSnYuW3wgb2ZfYXJyYXkgb2ZfZmxvYXQgYXxdXG4gIGxldCB0b19pbnRfanN0ciA/KHNlcCA9IEpzdHIuc3ApIGIgPVxuICAgIEp2LnRvX2pzdHIgQEAgSnYuY2FsbCBiIFwiam9pblwiIEp2Llt8IG9mX2pzdHIgc2VwIHxdXG5cbiAgbGV0IHRvX2hleF9qc3RyID8oc2VwID0gSnN0ci5lbXB0eSkgYSA9XG4gICAgbGV0IGhleCA9IEpzdHIudiBcIjAxMjM0NTY3ODlhYmNkZWZcIiBpblxuICAgIGxldCBkID0gRGF0YV92aWV3Lm9mX2J1ZmZlciAoYnVmZmVyIGEpIGluXG4gICAgbGV0IHMgPSByZWYgSnN0ci5lbXB0eSBpblxuICAgIGZvciBpID0gMCB0byBEYXRhX3ZpZXcuYnl0ZV9sZW5ndGggZCAtIDEgZG9cbiAgICAgIGxldCBiID0gRGF0YV92aWV3LmdldF91aW50OCBkIGkgaW5cbiAgICAgIGxldCBzZXAgPSBpZiBpID0gMCB0aGVuIEpzdHIuZW1wdHkgZWxzZSBzZXAgaW5cbiAgICAgIHMgOj0gSnN0ci4oIXMgKyBzZXAgKyBnZXRfanN0ciBoZXggKGIgbHNyIDQpICsgZ2V0X2pzdHIgaGV4IChiIGxhbmQgMHhGKSlcbiAgICBkb25lO1xuICAgICFzXG5cbiAgbGV0IHVpbnQ4X29mX2J1ZmZlciBiID0gb2ZfYnVmZmVyIFVpbnQ4IGJcblxuICBleHRlcm5hbCB0b19zdHJpbmcgOiB1aW50OCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX3VpbnQ4X2FycmF5XCJcblxuICBsZXQgb2ZfanN0ciBzID1cbiAgICBsZXQgZW5jID0gSnYubmV3JyAoSnYuZ2V0IEp2Lmdsb2JhbCBcIlRleHRFbmNvZGVyXCIpIFt8fF0gaW5cbiAgICBKdi5jYWxsIGVuYyBcImVuY29kZVwiIFt8IEp2Lm9mX2pzdHIgcyB8XVxuXG4gIGxldCB0b19qc3RyIGEgPVxuICAgIGxldCBhcmdzID0gW3wgSnYub2Zfc3RyaW5nIFwidXRmLThcIjsgSnYub2JqIFt8IFwiZmF0YWxcIiwgSnYudHJ1ZScgfF18XSBpblxuICAgIGxldCBkZWMgPSBKdi5uZXcnIChKdi5nZXQgSnYuZ2xvYmFsIFwiVGV4dERlY29kZXJcIikgYXJncyBpblxuICAgIG1hdGNoIEp2LmNhbGwgZGVjIFwiZGVjb2RlXCIgW3wgYSB8XSB3aXRoXG4gICAgfCBleGNlcHRpb24gSnYuRXJyb3IgZSAtPiBFcnJvciBlIHwgcyAtPiBPayAoSnYudG9fanN0ciBzKVxuXG4gIGxldCBvZl9iaW5hcnlfanN0ciBzID1cbiAgICBsZXQgY29kZSBzIGkgPVxuICAgICAgbGV0IGMgPSBKdi50b19pbnQgQEAgSnYuY2FsbCAoSnYub2ZfanN0ciBzKSBcImNoYXJDb2RlQXRcIiBbfEp2Lm9mX2ludCBpfF1pblxuICAgICAgaWYgYyA8PSAyNTUgdGhlbiBjIGVsc2VcbiAgICAgIEp2LnRocm93IEpzdHIuKG9mX2ludCBpICsgdiBcIjogY2hhciBjb2RlIFwiICsgb2ZfaW50IGMgKyB2IFwiZXhjZWVkcyAyNTVcIilcbiAgICBpblxuICAgIHRyeVxuICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChKc3RyLmxlbmd0aCBzKSBpblxuICAgICAgbGV0IGQgPSBEYXRhX3ZpZXcub2ZfYnVmZmVyIGIgaW5cbiAgICAgIGZvciBpID0gMCB0byBKc3RyLmxlbmd0aCBzIC0gMSBkbyBEYXRhX3ZpZXcuc2V0X2ludDggZCBpIChjb2RlIHMgaSkgZG9uZTtcbiAgICAgIE9rIChvZl9idWZmZXIgSW50OCBiKVxuICAgIHdpdGhcbiAgICB8IEp2LkVycm9yIGUgLT4gRXJyb3IgZVxuXG4gIGxldCB0b19iaW5hcnlfanN0ciBhID1cbiAgICBsZXQgY2hyIGIgPVxuICAgICAgSnYudG9fanN0ciBAQFxuICAgICAgSnYuY2FsbCAoSnYuZ2V0IEp2Lmdsb2JhbCBcIlN0cmluZ1wiKSBcImZyb21DaGFyQ29kZVwiIFt8IEp2Lm9mX2ludCBiIHxdXG4gICAgaW5cbiAgICBsZXQgZCA9IERhdGFfdmlldy5vZl9idWZmZXIgKGJ1ZmZlciBhKSBpblxuICAgIGxldCBzID0gcmVmIEpzdHIuZW1wdHkgaW5cbiAgICBmb3IgaSA9IDAgdG8gRGF0YV92aWV3LmJ5dGVfbGVuZ3RoIGQgLSAxIGRvXG4gICAgICBsZXQgYiA9IERhdGFfdmlldy5nZXRfdWludDggZCBpIGluXG4gICAgICBzIDo9IEpzdHIuKCFzICsgY2hyIGIpO1xuICAgIGRvbmU7XG4gICAgIXNcblxuICAoKiBCaWdhcnJheSAqKVxuXG4gIGxldCB0eXBlX3RvX2JpZ2FycmF5X2tpbmQgOiB0eXBlIGEgYi4gKGEsIGIpIHR5cGUnIC0+IChhLCBiKSBCaWdhcnJheS5raW5kID1cbiAgICBmdW5jdGlvblxuICAgIHwgSW50OCAtPiBCaWdhcnJheS5pbnQ4X3NpZ25lZFxuICAgIHwgSW50MTYgLT4gQmlnYXJyYXkuaW50MTZfc2lnbmVkXG4gICAgfCBJbnQzMiAtPiBCaWdhcnJheS5pbnQzMlxuICAgIHwgVWludDggLT4gQmlnYXJyYXkuaW50OF91bnNpZ25lZFxuICAgIHwgVWludDhfY2xhbXBlZCAtPiBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkXG4gICAgfCBVaW50MTYgLT4gQmlnYXJyYXkuaW50MTZfdW5zaWduZWRcbiAgICB8IFVpbnQzMiAtPiBCaWdhcnJheS5pbnQzMlxuICAgIHwgRmxvYXQzMiAtPiBCaWdhcnJheS5mbG9hdDMyXG4gICAgfCBGbG9hdDY0IC0+IEJpZ2FycmF5LmZsb2F0NjRcblxuICBsZXQgdHlwZV9vZl9iaWdhcnJheV9raW5kIDpcbiAgICB0eXBlIGEgYi4gKGEsIGIpIEJpZ2FycmF5LmtpbmQgLT4gKGEsIGIpIHR5cGUnIG9wdGlvbiA9XG4gICAgZnVuY3Rpb25cbiAgICB8IEJpZ2FycmF5LkludDhfc2lnbmVkIC0+IFNvbWUgSW50OFxuICAgIHwgQmlnYXJyYXkuSW50MTZfc2lnbmVkIC0+IFNvbWUgSW50MTZcbiAgICB8IEJpZ2FycmF5LkludDMyIC0+IFNvbWUgSW50MzJcbiAgICB8IEJpZ2FycmF5LkludDhfdW5zaWduZWQgLT4gU29tZSBVaW50OFxuICAgIHwgQmlnYXJyYXkuSW50MTZfdW5zaWduZWQgLT4gU29tZSBVaW50MTZcbiAgICB8IEJpZ2FycmF5LkZsb2F0MzIgLT4gU29tZSBGbG9hdDMyXG4gICAgfCBCaWdhcnJheS5GbG9hdDY0IC0+IFNvbWUgRmxvYXQ2NFxuICAgIHwgXyAtPiBOb25lXG5cbiAgZXh0ZXJuYWwgYmlnYXJyYXlfa2luZCA6ICgnYSwgJ2IpIHQgLT4gKCdhLCdiKSBCaWdhcnJheS5raW5kID1cbiAgICBcImNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheVwiXG5cbiAgZXh0ZXJuYWwgb2ZfYmlnYXJyYXkxIDpcbiAgICAoJ2EsICdiLCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuQXJyYXkxLnQgLT4gKCdhLCAnYikgdCA9XG4gICAgXCJjYW1sX2JhX3RvX3R5cGVkX2FycmF5XCJcblxuICBleHRlcm5hbCB0b19iaWdhcnJheTEgOlxuICAgICgnYSwgJ2IpIHQgLT4gKCdhLCAnYiwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkFycmF5MS50ID1cbiAgICBcImNhbWxfYmFfZnJvbV90eXBlZF9hcnJheVwiXG5cbiAgZXh0ZXJuYWwgb2ZfYmlnYXJyYXkgOlxuICAgICgnYSwgJ2IsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5HZW5hcnJheS50IC0+ICgnYSwgJ2IpIHQgPVxuICAgIFwiY2FtbF9iYV90b190eXBlZF9hcnJheVwiXG5lbmRcblxubW9kdWxlIEJsb2IgPSBzdHJ1Y3RcblxuICAoKiBFbnVtZXJhdGlvbnMgKilcblxuICBtb2R1bGUgRW5kaW5nX3R5cGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKc3RyLnRcbiAgICBsZXQgdHJhbnNwYXJlbnQgPSBKc3RyLnYgXCJ0cmFuc3BhcmVudFwiXG4gICAgbGV0IG5hdGl2ZSA9IEpzdHIudiBcIm5hdGl2ZVwiXG4gIGVuZFxuXG4gICgqIEluaXRpYWxpc2F0aW9uIG9iamVjdHMgKilcblxuICB0eXBlIGluaXQgPSBKdi50XG4gIGxldCBpbml0ID90eXBlJyA/ZW5kaW5ncyAoKSA9XG4gICAgbGV0IG8gPSBKdi5vYmogW3x8XSBpblxuICAgIEp2LkpzdHIuc2V0X2lmX3NvbWUgbyBcInR5cGVcIiB0eXBlJztcbiAgICBKdi5Kc3RyLnNldF9pZl9zb21lIG8gXCJlbmRpbmdzXCIgZW5kaW5ncztcbiAgICBvXG5cbiAgKCogQmxvYnMgKilcblxuICB0eXBlIHQgPSBKdi50XG4gIGluY2x1ZGUgKEp2LklkIDogSnYuQ09OViB3aXRoIHR5cGUgdCA6PSB0KVxuICBsZXQgYmxvYiA9IEp2LmdldCBKdi5nbG9iYWwgXCJCbG9iXCJcbiAgbGV0IG9mX2pzdHIgPyhpbml0ID0gSnYudW5kZWZpbmVkKSBzID1cbiAgICBsZXQgYSA9IEp2LkphcnJheS5jcmVhdGUgMSBpblxuICAgIEp2LkphcnJheS5zZXQgYSAwIChKdi5vZl9qc3RyIHMpO1xuICAgIEp2Lm5ldycgYmxvYiBbfCBhOyBpbml0IHxdXG5cbiAgbGV0IG9mX2phcnJheSA/KGluaXQgPSBKdi51bmRlZmluZWQpIGEgPSBKdi5uZXcnIGJsb2IgW3wgYTsgaW5pdCB8XVxuICBsZXQgb2ZfYXJyYXlfYnVmZmVyID8oaW5pdCA9IEp2LnVuZGVmaW5lZCkgYiA9XG4gICAgSnYubmV3JyBibG9iIFt8IEp2Lm9mX2p2X2FycmF5IFt8IFRhcnJheS5CdWZmZXIudG9fanYgYiB8XTsgaW5pdCB8XVxuXG4gIGxldCBieXRlX2xlbmd0aCBiID0gSnYuSW50LmdldCBiIFwic2l6ZVwiXG4gIGxldCB0eXBlJyBiID0gSnYuSnN0ci5nZXQgYiBcInR5cGVcIlxuICBsZXQgc2xpY2UgPyhzdGFydCA9IDApID9zdG9wID8odHlwZScgPSBKc3RyLmVtcHR5KSBiID1cbiAgICBsZXQgc3RvcCA9IG1hdGNoIHN0b3Agd2l0aCBOb25lIC0+IGJ5dGVfbGVuZ3RoIGIgfCBTb21lIHN0b3AgLT4gc3RvcCBpblxuICAgIEp2LmNhbGwgYiBcInNsaWNlXCIgSnYuW3wgb2ZfaW50IHN0YXJ0OyBvZl9pbnQgc3RvcDsgb2ZfanN0ciB0eXBlJyB8XVxuXG4gIGxldCBzdHJlYW0gYiA9IEp2LmdldCBiIFwic3RyZWFtXCJcblxuICAoKiBMb2FkaW5nICopXG5cbiAgdHlwZSBwcm9ncmVzcyA9IChmbG9hdCAqIGZsb2F0KSBvcHRpb24gLT4gdW5pdFxuXG4gICgqIElmIHdlIHdhbnQgcHJvZ3Jlc3Mgd2UgbmVlZCBhIEZpbGVSZWFkZXIgKilcblxuICBsZXQgZmlsZV9yZWFkZXIgP3Byb2dyZXNzIGNvbnYgPVxuICAgIGxldCBwcm9ncmVzc19kYXRhIGUgPVxuICAgICAgbGV0IGUgPSBFdi50b19qdiBlIGluXG4gICAgICBpZiBub3QgKEp2LkJvb2wuZ2V0IGUgXCJsZW5ndGhDb21wdXRhYmxlXCIpIHRoZW4gTm9uZSBlbHNlXG4gICAgICBsZXQgbG9hZGVkID0gSnYuRmxvYXQuZ2V0IGUgXCJsb2FkZWRcIiBpblxuICAgICAgbGV0IHRvdGFsID0gSnYuRmxvYXQuZ2V0IGUgXCJ0b3RhbFwiIGluXG4gICAgICBTb21lIChsb2FkZWQsIHRvdGFsKVxuICAgIGluXG4gICAgbGV0IHJlYWRlciA9IEp2Lm5ldycgKEp2LmdldCBKdi5nbG9iYWwgXCJGaWxlUmVhZGVyXCIpIFt8fF0gaW5cbiAgICBsZXQgZnV0LCBzZXRfZnV0ID0gRnV0LmNyZWF0ZSAoKSBpblxuICAgIGxldCBvayBlID1cbiAgICAgIGJlZ2luIG1hdGNoIHByb2dyZXNzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIHByb2dyZXNzIC0+IHByb2dyZXNzIChwcm9ncmVzc19kYXRhIGUpXG4gICAgICBlbmQ7XG4gICAgICBzZXRfZnV0IChPayAoY29udiAoSnYuZ2V0IHJlYWRlciBcInJlc3VsdFwiKSkpXG4gICAgaW5cbiAgICBsZXQgZXJyb3IgX2UgPSBzZXRfZnV0IChFcnJvciAoSnYudG9fZXJyb3IgKEp2LmdldCByZWFkZXIgXCJlcnJvclwiKSkpIGluXG4gICAgbGV0IHQgPSBFdi50YXJnZXRfb2ZfanYgcmVhZGVyIGluXG4gICAgbGV0IG9wdHMgPSBFdi5saXN0ZW5fb3B0cyB+b25jZTp0cnVlICgpIGluXG4gICAgaWdub3JlIChFdi5saXN0ZW4gfm9wdHMgRXYubG9hZCBvayB0IDogRXYubGlzdGVuZXIpO1xuICAgIGlnbm9yZSAoRXYubGlzdGVuIH5vcHRzIEV2LmVycm9yIGVycm9yIHQgOiBFdi5saXN0ZW5lcik7XG4gICAgYmVnaW4gbWF0Y2ggcHJvZ3Jlc3Mgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBwcm9ncmVzcyAtPlxuICAgICAgICBsZXQgcHJvZ3Jlc3MgZSA9IHByb2dyZXNzIChwcm9ncmVzc19kYXRhIGUpIGluXG4gICAgICAgIGlnbm9yZSAoRXYubGlzdGVuIEV2LnByb2dyZXNzIHByb2dyZXNzIHQgOiBFdi5saXN0ZW5lcik7XG4gICAgZW5kO1xuICAgIGZ1dCwgcmVhZGVyXG5cbiAgbGV0IGFycmF5X2J1ZmZlciA/cHJvZ3Jlc3MgYiA9IG1hdGNoIHByb2dyZXNzIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgICBGdXQub2ZfcHJvbWlzZSB+b2s6VGFycmF5LkJ1ZmZlci5vZl9qdiAoSnYuY2FsbCBiIFwiYXJyYXlCdWZmZXJcIiBbfHxdKVxuICB8IFNvbWUgXyAtPlxuICAgICAgbGV0IGZ1dCwgcmVhZGVyID0gZmlsZV9yZWFkZXIgP3Byb2dyZXNzIFRhcnJheS5CdWZmZXIub2ZfanYgaW5cbiAgICAgIGlnbm9yZSAoSnYuY2FsbCByZWFkZXIgXCJyZWFkQXNBcnJheUJ1ZmZlclwiIFt8IGIgfF0pO1xuICAgICAgZnV0XG5cbiAgbGV0IHRleHQgP3Byb2dyZXNzIGIgPSBtYXRjaCBwcm9ncmVzcyB3aXRoXG4gIHwgTm9uZSAtPiBGdXQub2ZfcHJvbWlzZSB+b2s6SnYudG9fanN0ciAoSnYuY2FsbCBiIFwidGV4dFwiIFt8fF0pXG4gIHwgU29tZSBfIC0+XG4gICAgICBsZXQgZnV0LCByZWFkZXIgPSBmaWxlX3JlYWRlciA/cHJvZ3Jlc3MgSnYudG9fanN0ciBpblxuICAgICAgaWdub3JlIChKdi5jYWxsIHJlYWRlciBcInJlYWRBc1RleHRcIiBbfCBiIHxdKTtcbiAgICAgIGZ1dFxuXG4gIGxldCBkYXRhX3VyaSA/cHJvZ3Jlc3MgYiA9XG4gICAgKCogVGhlcmUncyBubyBkaXJlY3Qgc3VwcG9ydCBmb3IgZGF0YSB1cmxzIGluIGJsb2Igb2JqZWN0cy5cbiAgICAgICBXZSBkbyB0aGlzIHZpYSB0aGUgRmlsZVJlYWRlciBBUEkuICopXG4gICAgbGV0IGZ1dCwgcmVhZGVyID0gZmlsZV9yZWFkZXIgP3Byb2dyZXNzIEp2LnRvX2pzdHIgaW5cbiAgICBpZ25vcmUgKEp2LmNhbGwgcmVhZGVyIFwicmVhZEFzRGF0YVVSTFwiIFt8IGIgfF0pO1xuICAgIGZ1dFxuZW5kXG5cbm1vZHVsZSBGaWxlID0gc3RydWN0XG4gIHR5cGUgdCA9IEp2LnRcbiAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgKCogSW5pdGlhbGlzYXRpb24gb2JqZWN0cyAqKVxuXG4gIHR5cGUgaW5pdCA9IEp2LnRcbiAgbGV0IGluaXQgP2Jsb2JfaW5pdCA/bGFzdF9tb2RpZmllZF9tcyAoKSA9XG4gICAgbGV0IG8gPSBtYXRjaCBibG9iX2luaXQgd2l0aCBOb25lIC0+IEp2Lm9iaiBbfHxdIHwgU29tZSBiIC0+IEp2LnJlcHIgYiBpblxuICAgIEp2LkludC5zZXRfaWZfc29tZSBvIFwibGFzdE1vZGlmaWVkXCIgbGFzdF9tb2RpZmllZF9tcztcbiAgICBvXG5cbiAgbGV0IGZpbGUgPSBKdi5nZXQgSnYuZ2xvYmFsIFwiRmlsZVwiXG4gIGxldCBvZl9ibG9iID8oaW5pdCA9IEp2Lm9iaiBbfHxdKSBuYW1lIGIgPVxuICAgIEp2Lm5ldycgZmlsZSBbfEJsb2IudG9fanYgYjsgSnYub2ZfanN0ciBuYW1lOyBpbml0fF1cblxuICBsZXQgbmFtZSBmID0gSnYuSnN0ci5nZXQgZiBcIm5hbWVcIlxuICBsZXQgcmVsYXRpdmVfcGF0aCBmID1cbiAgICBsZXQgcCA9IEp2LmZpbmRfbWFwIEp2LnRvX2pzdHIgZiBcIndlYmtpdFJlbGF0aXZlUGF0aFwiIGluXG4gICAgT3B0aW9uLnZhbHVlIH5kZWZhdWx0OkpzdHIuZW1wdHkgcFxuXG4gIGxldCBsYXN0X21vZGlmaWVkX21zIGYgPSBKdi5JbnQuZ2V0IGYgXCJsYXN0TW9kaWZpZWRcIlxuICBleHRlcm5hbCBhc19ibG9iIDogdCAtPiBCbG9iLnQgPSBcIiVpZGVudGl0eVwiXG5lbmRcblxubW9kdWxlIEJhc2U2NCA9IHN0cnVjdFxuXG4gIHR5cGUgZGF0YSA9IEpzdHIudFxuXG4gIGxldCBkYXRhX3V0Zl84X29mX2pzdHIgcyA9IFRhcnJheS50b19iaW5hcnlfanN0ciAoVGFycmF5Lm9mX2pzdHIgcylcbiAgbGV0IGRhdGFfdXRmXzhfdG9fanN0ciBkID0gbWF0Y2ggVGFycmF5Lm9mX2JpbmFyeV9qc3RyIGQgd2l0aFxuICB8IEVycm9yIF8gYXMgZSAtPiBlIHwgT2sgdCAtPiBUYXJyYXkudG9fanN0ciB0XG5cbiAgbGV0IGRhdGFfb2ZfYmluYXJ5X2pzdHIgPSBGdW4uaWRcbiAgbGV0IGRhdGFfdG9fYmluYXJ5X2pzdHIgPSBGdW4uaWRcblxuICBsZXQgZW5jb2RlIGJzID1cbiAgICBtYXRjaCBKdi5hcHBseSAoSnYuZ2V0IEp2Lmdsb2JhbCBcImJ0b2FcIikgSnYuW3wgb2ZfanN0ciBicyB8XSB3aXRoXG4gICAgfCBleGNlcHRpb24gSnYuRXJyb3IgZSAtPiBFcnJvciBlXG4gICAgfCB2IC0+IE9rIChKdi50b19qc3RyIHYpXG5cbiAgbGV0IGRlY29kZSBzID1cbiAgICBtYXRjaCBKdi5hcHBseSAoSnYuZ2V0IEp2Lmdsb2JhbCBcImF0b2JcIikgSnYuW3wgb2ZfanN0ciBzIHxdIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBKdi5FcnJvciBlIC0+IEVycm9yIGVcbiAgICB8IHYgLT4gT2sgKEp2LnRvX2pzdHIgdilcbmVuZFxuXG5tb2R1bGUgSnNvbiA9IHN0cnVjdFxuICB0eXBlIHQgPSBKdi50XG4gIGxldCBqc29uID0gSnYuZ2V0IEp2Lmdsb2JhbCBcIkpTT05cIlxuICBsZXQgZW5jb2RlIHYgPSBKdi50b19qc3RyIChKdi5jYWxsIGpzb24gXCJzdHJpbmdpZnlcIiBbfCB2IHxdKVxuICBsZXQgZGVjb2RlIHMgPSBtYXRjaCBKdi5jYWxsIGpzb24gXCJwYXJzZVwiIFt8SnYub2ZfanN0ciBzfF0gd2l0aFxuICB8IGV4Y2VwdGlvbiBKdi5FcnJvciBlIC0+IEVycm9yIGUgfCB2IC0+IE9rIHZcbmVuZFxuXG5tb2R1bGUgVXJpID0gc3RydWN0XG4gIHR5cGUgdCA9IEp2LnRcbiAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgbGV0IGVuY29kZSA9IEp2LmdldCBKdi5nbG9iYWwgXCJlbmNvZGVVUklcIlxuICBsZXQgZGVjb2RlID0gSnYuZ2V0IEp2Lmdsb2JhbCBcImRlY29kZVVSSVwiXG4gIGxldCBlbmNvZGVfY29tcG9uZW50ID0gSnYuZ2V0IEp2Lmdsb2JhbCBcImVuY29kZVVSSUNvbXBvbmVudFwiXG4gIGxldCBkZWNvZGVfY29tcG9uZW50ID0gSnYuZ2V0IEp2Lmdsb2JhbCBcImRlY29kZVVSSUNvbXBvbmVudFwiXG5cbiAgbGV0IHVybCA9IEp2LmdldCBKdi5nbG9iYWwgXCJVUkxcIlxuXG4gIGxldCB2ID9iYXNlIHMgPSBtYXRjaCBiYXNlIHdpdGhcbiAgfCBOb25lIC0+IEp2Lm5ldycgdXJsIFt8IEp2Lm9mX2pzdHIgcyB8XVxuICB8IFNvbWUgYiAtPiBKdi5uZXcnIHVybCBbfCBKdi5vZl9qc3RyIHM7IEp2Lm9mX2pzdHIgYiB8XVxuXG4gIGxldCB3aXRoX3VyaSA/c2NoZW1lID9ob3N0ID9wb3J0ID9wYXRoID9xdWVyeSA/ZnJhZ21lbnQgdSA9XG4gICAgbGV0IHUgPSBKdi5uZXcnIHVybCBbfCB1IHxdIGluXG4gICAgdHJ5XG4gICAgICBKdi5Kc3RyLnNldF9pZl9zb21lIHUgXCJwcm90b2NvbFwiIHNjaGVtZTtcbiAgICAgIEp2LkpzdHIuc2V0X2lmX3NvbWUgdSBcImhvc3RuYW1lXCIgaG9zdDtcbiAgICAgIGJlZ2luIG1hdGNoIHBvcnQgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgcCAtPiBKdi5Kc3RyLnNldF9pZl9zb21lIHUgXCJwb3J0XCIgKE9wdGlvbi5tYXAgSnN0ci5vZl9pbnQgcClcbiAgICAgIGVuZDtcbiAgICAgIEp2LkpzdHIuc2V0X2lmX3NvbWUgdSBcInBhdGhuYW1lXCIgcGF0aDtcbiAgICAgIEp2LkpzdHIuc2V0X2lmX3NvbWUgdSBcInNlYXJjaFwiIHF1ZXJ5O1xuICAgICAgSnYuSnN0ci5zZXRfaWZfc29tZSB1IFwiaGFzaFwiIGZyYWdtZW50O1xuICAgICAgT2sgdVxuICAgIHdpdGggSnYuRXJyb3IgZSAtPiBFcnJvciBlXG5cbiAgbGV0IHNjaGVtZSB1ID1cbiAgICBsZXQgcCA9IEp2LkpzdHIuZ2V0IHUgXCJwcm90b2NvbFwiIGluXG4gICAgaWYgSnN0ci5sZW5ndGggcCA8PiAwIHRoZW4gSnN0ci5zbGljZSBwIH5zdG9wOigtMSkgKCogcmVtb3ZlICc6JyAqKSBlbHNlIHBcblxuICBsZXQgaG9zdCB1ID0gSnYuSnN0ci5nZXQgdSBcImhvc3RuYW1lXCJcbiAgbGV0IHBvcnQgdSA9XG4gICAgbGV0IHAgPSBKdi5Kc3RyLmdldCB1IFwicG9ydFwiIGluXG4gICAgaWYgSnN0ci5pc19lbXB0eSBwIHRoZW4gTm9uZSBlbHNlIEpzdHIudG9faW50IHBcblxuICBsZXQgc2xhc2ggPSBKc3RyLnYgXCIvXCJcblxuICBsZXQgcGF0aCB1ID0gSnYuSnN0ci5nZXQgdSBcInBhdGhuYW1lXCJcblxuICBsZXQgcXVlcnkgdSA9XG4gICAgbGV0IHEgPSBKdi5Kc3RyLmdldCB1IFwic2VhcmNoXCIgaW5cbiAgICBpZiBKc3RyLmlzX2VtcHR5IHEgdGhlbiBxIGVsc2UgSnN0ci5zbGljZSBxIH5zdGFydDoxICgqIHJlbW92ZSAnPycgKilcblxuICBsZXQgZnJhZ21lbnQgdSA9XG4gICAgbGV0IGYgPSBKdi5Kc3RyLmdldCB1IFwiaGFzaFwiIGluXG4gICAgaWYgSnN0ci5pc19lbXB0eSBmIHRoZW4gZiBlbHNlIEpzdHIuc2xpY2UgZiB+c3RhcnQ6MSAoKiByZW1vdmUgJyMnICopXG5cbiAgKCogUGF0aCAqKVxuXG4gIHR5cGUgcGF0aCA9IEpzdHIudCBsaXN0XG5cbiAgbGV0IHBhdGhfc2VnbWVudHMgdSA9XG4gICAgbGV0IGRlY29kZV9zZWcgcyA9IEp2Lih0b19qc3RyIChhcHBseSBkZWNvZGVfY29tcG9uZW50IFt8IG9mX2pzdHIgcyB8XSkpIGluXG4gICAgdHJ5XG4gICAgICBsZXQgcCA9IHBhdGggdSBhbmQgcHJlZml4ID0gc2xhc2ggaW5cbiAgICAgIGxldCBwID0gaWYgSnN0ci5zdGFydHNfd2l0aCB+cHJlZml4IHAgdGhlbiBKc3RyLnNsaWNlIHAgfnN0YXJ0OjEgZWxzZSBwIGluXG4gICAgICBPayAoTGlzdC5tYXAgZGVjb2RlX3NlZyAoSnN0ci5jdXRzIH5zZXA6c2xhc2ggcCkpXG4gICAgd2l0aCBKdi5FcnJvciBlIC0+IEVycm9yIGVcblxuICBsZXQgd2l0aF9wYXRoX3NlZ21lbnRzIHUgc2VncyA9XG4gICAgbGV0IGVuY29kZV9zZWcgcyA9XG4gICAgICBKc3RyLmFwcGVuZCBzbGFzaCBKdi4odG9fanN0ciAoYXBwbHkgZW5jb2RlX2NvbXBvbmVudCBbfCBvZl9qc3RyIHMgfF0pKVxuICAgIGluXG4gICAgdHJ5XG4gICAgICBsZXQgdSA9IEp2Lm5ldycgdXJsIFt8IHUgfF0gaW5cbiAgICAgIGxldCBwYXRoID0gSnN0ci5jb25jYXQgKExpc3QubWFwIGVuY29kZV9zZWcgc2VncykgaW5cbiAgICAgIEp2LnNldCB1IFwicGF0aG5hbWVcIiAoSnYub2ZfanN0ciBwYXRoKTtcbiAgICAgIE9rIHVcbiAgICB3aXRoIEp2LkVycm9yIGUgLT4gRXJyb3IgZVxuXG4gICgqIFBhcmFtcyAqKVxuXG4gIG1vZHVsZSBQYXJhbXMgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKdi50XG4gICAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICBsZXQgdXNwID0gSnYuZ2V0IEp2Lmdsb2JhbCBcIlVSTFNlYXJjaFBhcmFtc1wiXG4gICAgbGV0IGlzX2VtcHR5IHAgPSBKdi5JdC5yZXN1bHRfZG9uZSAoSnYuSXQubmV4dCAoSnYuY2FsbCBwIFwiZW50cmllc1wiIFt8fF0pKVxuICAgIGxldCBtZW0gayBwID0gSnYudG9fYm9vbCAoSnYuY2FsbCBwIFwiaGFzXCIgW3xKdi5vZl9qc3RyIGt8XSlcbiAgICBsZXQgZmluZCBrIHAgPSBKdi50b19vcHRpb24gSnYudG9fanN0ciAoSnYuY2FsbCBwIFwiZ2V0XCIgW3xKdi5vZl9qc3RyIGt8XSlcbiAgICBsZXQgZmluZF9hbGwgayBwID0gSnYudG9fanN0cl9saXN0IChKdi5jYWxsIHAgXCJnZXRBbGxcIiBbfEp2Lm9mX2pzdHIga3xdKVxuICAgIGxldCBmb2xkIGYgcCBhY2MgPVxuICAgICAgbGV0IGtleSA9IEp2LnRvX2pzdHIgaW5cbiAgICAgIGxldCB2YWx1ZSA9IEp2LnRvX2pzdHIgaW5cbiAgICAgIEp2Lkl0LmZvbGRfYmluZGluZ3MgfmtleSB+dmFsdWUgZiAoSnYuY2FsbCBwIFwiZW50cmllc1wiIFt8fF0pIGFjY1xuXG4gICAgbGV0IG9mX2pzdHIgcyA9XG4gICAgICAoKiBOb3RlIHRoYXQgaXQgc2VlbXMgdGhhdCB0aGlzIG5ldmVyIGVycm9ycy4gQXQgbGVhc3QgZGVjb2RpbmdcbiAgICAgICAgIGVycm9ycyBzZWVtIHRvIGJlIHJlcGxhY2VkIGJ5IFUrRkZGRC4gKilcbiAgICAgIEp2Lm5ldycgdXNwIFt8IEp2Lm9mX2pzdHIgc3xdXG5cbiAgICBsZXQgdG9fanN0ciBwID0gSnYudG9fanN0ciAoSnYuY2FsbCBwIFwidG9TdHJpbmdcIiBbfHxdKVxuICAgIGxldCBvZl9hc3NvYyBsID1cbiAgICAgIGxldCBwID0gb2ZfanN0ciBKc3RyLmVtcHR5IGluXG4gICAgICBsZXQgYXBwIHAgKGssIHYpID1cbiAgICAgICAgaWdub3JlIChKdi5jYWxsIHAgXCJhcHBlbmRcIiBKdi5bfG9mX2pzdHIgazsgb2ZfanN0ciB2fF0pXG4gICAgICBpblxuICAgICAgTGlzdC5pdGVyIChhcHAgcCkgbDsgcFxuXG4gICAgbGV0IHRvX2Fzc29jIHAgPSBMaXN0LnJldiAoZm9sZCAoZnVuIGsgdiBhY2MgLT4gKGssIHYpIDo6IGFjYykgcCBbXSlcbiAgICBsZXQgb2Zfb2JqIG8gPSBKdi5uZXcnIHVzcCBbfCBvIHxdXG4gIGVuZFxuXG4gIGxldCBxdWVyeV9wYXJhbXMgdSA9IFBhcmFtcy5vZl9qc3RyIChxdWVyeSB1KVxuICBsZXQgd2l0aF9xdWVyeV9wYXJhbXMgdSBwcyA9XG4gICAgbGV0IHUgPSBKdi5uZXcnIHVybCBbfCB1IHxdIGluXG4gICAgSnYuSnN0ci5zZXQgdSBcInNlYXJjaFwiIChQYXJhbXMudG9fanN0ciBwcyk7XG4gICAgdVxuXG4gIGxldCBmcmFnbWVudF9wYXJhbXMgdSA9IFBhcmFtcy5vZl9qc3RyIChmcmFnbWVudCB1KVxuICBsZXQgd2l0aF9mcmFnbWVudF9wYXJhbXMgdSBwcyA9XG4gICAgbGV0IHUgPSBKdi5uZXcnIHVybCBbfCB1IHxdIGluXG4gICAgSnYuSnN0ci5zZXQgdSBcImhhc2hcIiAoUGFyYW1zLnRvX2pzdHIgcHMpO1xuICAgIHVcblxuICAoKiBDb252ZXJ0aW5nICopXG5cbiAgbGV0IHRvX2pzdHIgdSA9IEp2LnRvX2pzdHIgKEp2LmNhbGwgdSBcInRvU3RyaW5nXCIgW3x8XSlcbiAgbGV0IG9mX2pzdHIgP2Jhc2UgcyA9IG1hdGNoIHYgP2Jhc2UgcyB3aXRoXG4gIHwgZXhjZXB0aW9uIEp2LkVycm9yIGUgLT4gRXJyb3IgZSB8IHYgLT4gT2sgdlxuXG4gICgqIFBlcmNlbnQtZW5jb2RpbmcgKilcblxuICBsZXQgY29kZSBmIHMgPSBtYXRjaCBKdi5hcHBseSBmIFt8SnYub2ZfanN0ciBzfF0gd2l0aFxuICB8IGV4Y2VwdGlvbiBKdi5FcnJvciBlIC0+IEVycm9yIGVcbiAgfCB2IC0+IE9rIChKdi50b19qc3RyIHYpXG5cbiAgbGV0IGVuY29kZSBzID0gY29kZSBlbmNvZGUgc1xuICBsZXQgZGVjb2RlIHMgPSBjb2RlIGRlY29kZSBzXG4gIGxldCBlbmNvZGVfY29tcG9uZW50IHMgPSBjb2RlIGVuY29kZV9jb21wb25lbnQgc1xuICBsZXQgZGVjb2RlX2NvbXBvbmVudCBzID0gY29kZSBkZWNvZGVfY29tcG9uZW50IHNcbmVuZFxuXG5tb2R1bGUgUmVnZXhwID0gc3RydWN0XG4gIG1vZHVsZSBSZXN1bHQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKdi50XG4gICAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICBsZXQgaW5wdXQgciA9IEp2LkpzdHIuZ2V0IHIgXCJpbnB1dFwiXG4gICAgbGV0IG1hdGNoJyByID0gSnYudG9fanN0ciAoSnYuSmFycmF5LmdldCByIDApXG4gICAgbGV0IHN0YXJ0X2luZGV4IHIgPSBKdi5JbnQuZ2V0IHIgXCJpbmRleFwiXG4gICAgbGV0IHN0b3BfaW5kZXggciA9IHN0YXJ0X2luZGV4IHIgKyBKc3RyLmxlbmd0aCAobWF0Y2gnIHIpXG4gICAgbGV0IGZvbGRfZ3JvdXBzIGYgciBhY2MgPVxuICAgICAgbGV0IGFjYyA9IHJlZiBhY2MgaW5cbiAgICAgIGZvciBpID0gMSAoKiAwIGlzIHRoZSB3aG9sZSBtYXRjaCAqKSB0byBKdi5KYXJyYXkubGVuZ3RoIHIgLSAxIGRvXG4gICAgICAgIGFjYyA6PSBmIChKdi50b19qc3RyIChKdi5KYXJyYXkuZ2V0IHIgaSkpICFhY2NcbiAgICAgIGRvbmU7XG4gICAgICAhYWNjXG5cbiAgICBsZXQgZm9sZF9ncm91cF9pbmRpY2VzIGYgciBhY2MgPSBtYXRjaCBKdi5maW5kIHIgXCJpbmRpY2VzXCIgd2l0aFxuICAgIHwgTm9uZSAtPiBhY2MgKCogaGFwcGVucyBpZiByZWdleHAgaGFkIG5vIFtkXSBmbGFnLiAqKVxuICAgIHwgU29tZSBhIC0+XG4gICAgICAgIGxldCBhY2MgPSByZWYgYWNjIGluXG4gICAgICAgIGZvciBpID0gMSAoKiAwIGlzIHRoZSB3aG9sZSBtYXRjaCAqKSB0byBKdi5KYXJyYXkubGVuZ3RoIGEgLSAxIGRvXG4gICAgICAgICAgbGV0IHJhbmdlID0gSnYuSmFycmF5LmdldCBhIGkgaW5cbiAgICAgICAgICBsZXQgc3RhcnQgPSBKdi50b19pbnQgKEp2LkphcnJheS5nZXQgcmFuZ2UgMCkgaW5cbiAgICAgICAgICBsZXQgc3RvcCA9IEp2LnRvX2ludCAoSnYuSmFycmF5LmdldCByYW5nZSAxKSBpblxuICAgICAgICAgIGFjYyA6PSBmIH5zdGFydCB+c3RvcCAhYWNjXG4gICAgICAgIGRvbmU7XG4gICAgICAgICFhY2NcblxuICAgICgqIE5vIGl0ZXJhdG9yIHByb3RvY29sIG9uIE9iamVjdCBtZW1iZXJzID8gKilcbiAgICBsZXQgb2JqX2VudHJpZXMganYgPSBKdi5jYWxsIChKdi5nZXQgSnYuZ2xvYmFsIFwiT2JqZWN0XCIpIFwiZW50cmllc1wiIFt8IGp2IHxdXG4gICAgbGV0IG9ial9rZXkgYSA9IEp2LkphcnJheS5nZXQgYSAwXG4gICAgbGV0IG9ial92YWx1ZSBhID0gSnYuSmFycmF5LmdldCBhIDFcblxuICAgIGxldCBmb2xkX25hbWVkX2dyb3VwcyBmIHIgYWNjID0gbWF0Y2ggSnYuZmluZCByIFwiZ3JvdXBzXCIgd2l0aFxuICAgIHwgTm9uZSAtPiBhY2NcbiAgICB8IFNvbWUgZ3JvdXBzIC0+XG4gICAgICAgIGxldCBlbnRyaWVzID0gb2JqX2VudHJpZXMgZ3JvdXBzIGluXG4gICAgICAgIGxldCBhY2MgPSByZWYgYWNjIGluXG4gICAgICAgIGZvciBpID0gMCB0byBKdi5KYXJyYXkubGVuZ3RoIGVudHJpZXMgLSAxIGRvXG4gICAgICAgICAgbGV0IGVudHJ5ID0gSnYuSmFycmF5LmdldCBlbnRyaWVzIGkgaW5cbiAgICAgICAgICBsZXQgbWF0Y2gnID0gb2JqX3ZhbHVlIGVudHJ5IGluXG4gICAgICAgICAgaWYgSnYuaXNfdW5kZWZpbmVkIG1hdGNoJyB0aGVuICgpIGVsc2VcbiAgICAgICAgICBsZXQgbmFtZSA9IEp2LnRvX2pzdHIgKG9ial9rZXkgZW50cnkpIGluXG4gICAgICAgICAgYWNjIDo9IGYgfm5hbWUgKEp2LnRvX2pzdHIgbWF0Y2gnKSAhYWNjXG4gICAgICAgIGRvbmU7XG4gICAgICAgICFhY2NcblxuICAgIGxldCBmb2xkX25hbWVkX2dyb3VwX2luZGljZXMgZiByIGFjYyA9IG1hdGNoIEp2LmZpbmQgciBcImluZGljZXNcIiB3aXRoXG4gICAgfCBOb25lIC0+IGFjYyAoKiBoYXBwZW5zIGlmIHJlZ2V4cCBoYWQgbm8gW2RdIGZsYWcuICopXG4gICAgfCBTb21lIGEgLT5cbiAgICAgICAgbWF0Y2ggSnYuZmluZCBhIFwiZ3JvdXBzXCIgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgIHwgU29tZSBncm91cHMgLT5cbiAgICAgICAgICAgIGxldCBlbnRyaWVzID0gb2JqX2VudHJpZXMgZ3JvdXBzIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gcmVmIGFjYyBpblxuICAgICAgICAgICAgZm9yIGkgPSAwIHRvIEp2LkphcnJheS5sZW5ndGggZW50cmllcyAtIDEgZG9cbiAgICAgICAgICAgICAgbGV0IGVudHJ5ID0gSnYuSmFycmF5LmdldCBlbnRyaWVzIGkgaW5cbiAgICAgICAgICAgICAgbGV0IHJhbmdlID0gb2JqX3ZhbHVlIGVudHJ5IGluXG4gICAgICAgICAgICAgIGlmIEp2LmlzX3VuZGVmaW5lZCByYW5nZSB0aGVuICgpIGVsc2VcbiAgICAgICAgICAgICAgbGV0IG5hbWUgPSBKdi50b19qc3RyIChvYmpfa2V5IGVudHJ5KSBpblxuICAgICAgICAgICAgICBsZXQgc3RhcnQgPSBKdi50b19pbnQgKEp2LkphcnJheS5nZXQgcmFuZ2UgMCkgaW5cbiAgICAgICAgICAgICAgbGV0IHN0b3AgPSBKdi50b19pbnQgKEp2LkphcnJheS5nZXQgcmFuZ2UgMSkgaW5cbiAgICAgICAgICAgICAgYWNjIDo9IGYgfm5hbWUgfnN0YXJ0IH5zdG9wICFhY2NcbiAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAhYWNjXG4gIGVuZFxuXG4gIHR5cGUgdCA9IEp2LnRcbiAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgbGV0IHJlZ2V4cCA9IEp2LmdldCBKdi5nbG9iYWwgXCJSZWdFeHBcIlxuICBsZXQgZXNjYXBlIHMgPSBKdi50b19qc3RyIChKdi5jYWxsIHJlZ2V4cCBcImVzY2FwZVwiIEp2Llt8b2ZfanN0ciBzfF0pXG4gIGxldCBjcmVhdGUgP2ZsYWdzIHMgPVxuICAgIGxldCBmbGFncyA9IEp2Lm9mX29wdGlvbiB+bm9uZTpKdi51bmRlZmluZWQgSnYub2ZfanN0ciBmbGFncyBpblxuICAgIEp2Lm5ldycgcmVnZXhwIEp2Llt8b2ZfanN0ciBzOyBmbGFnc3xdXG5cbiAgbGV0IGV4ZWMgciBzID1cbiAgICBKdi50b19vcHRpb24gUmVzdWx0Lm9mX2p2IEBAIEp2LmNhbGwgciBcImV4ZWNcIiBKdi5bfG9mX2pzdHIgc3xdXG5cbiAgbGV0IG1hdGNoJyByIHMgPVxuICAgIEp2LnRvX29wdGlvbiBSZXN1bHQub2ZfanYgQEAgSnYuY2FsbCAoSnYub2ZfanN0ciBzKSBcIm1hdGNoXCIgSnYuW3xyfF1cblxuICBsZXQgZm9sZF9tYXRjaGVzIHIgZiBzIGFjYyA9XG4gICAgbGV0IGl0ZXIgPSBKdi5jYWxsIChKdi5vZl9qc3RyIHMpIFwibWF0Y2hBbGxcIiBKdi5bfHJ8XSBpblxuICAgIEp2Lkl0LmZvbGQgUmVzdWx0Lm9mX2p2IGYgaXRlciBhY2NcblxuICBsZXQgcmVwbGFjZSByIH5ieSBzID1cbiAgICBKdi50b19qc3RyIEBAIEp2LmNhbGwgKEp2Lm9mX2pzdHIgcykgXCJyZXBsYWNlXCIgSnYuW3xyOyBvZl9qc3RyIGJ5fF1cblxuICBsZXQgcmVwbGFjZV9hbGwgciB+YnkgcyA9XG4gICAgSnYudG9fanN0ciBAQCBKdi5jYWxsIChKdi5vZl9qc3RyIHMpIFwicmVwbGFjZUFsbFwiIEp2Llt8cjsgb2ZfanN0ciBieXxdXG5cbiAgbGV0IHNlYXJjaCByIHMgPVxuICAgIEp2LnRvX2ludCBAQCBKdi5jYWxsIChKdi5vZl9qc3RyIHMpIFwic2VhcmNoXCIgSnYuW3xyfF1cblxuICBsZXQgc3BsaXQgP2xpbWl0IHIgcyA9IG1hdGNoIGxpbWl0IHdpdGhcbiAgfCBOb25lIC0+IEp2LnRvX2pzdHJfYXJyYXkgQEAgSnYuY2FsbCAoSnYub2ZfanN0ciBzKSBcInNwbGl0XCIgSnYuW3xyfF1cbiAgfCBTb21lIGxpbWl0IC0+XG4gICAgICBKdi50b19qc3RyX2FycmF5IEBAIEp2LmNhbGwgKEp2Lm9mX2pzdHIgcykgXCJzcGxpdFwiIEp2Llt8cjsgb2ZfaW50IGxpbWl0fF1cblxuICBsZXQgdGVzdCByIHMgPSBKdi50b19ib29sIEBAIEp2LmNhbGwgciBcInRlc3RcIiBKdi5bfG9mX2pzdHIgc3xdXG4gIGxldCBsYXN0X2luZGV4IHIgPSBKdi5JbnQuZ2V0IHIgXCJsYXN0SW5kZXhcIlxuICBsZXQgc2V0X2xhc3RfaW5kZXggciBpID0gSnYuSW50LnNldCByIFwibGFzdEluZGV4XCIgaVxuICBsZXQgZG90X2FsbCByID0gSnYuQm9vbC5nZXQgciBcImRvdEFsbFwiXG4gIGxldCBmbGFncyByID0gSnYuSnN0ci5nZXQgciBcImZsYWdzXCJcbiAgbGV0IGdsb2JhbCByID0gSnYuQm9vbC5nZXQgciBcImdsb2JhbFwiXG4gIGxldCBoYXNfaW5kaWNlcyByID0gSnYuQm9vbC5nZXQgciBcImhhc0luZGljZXNcIlxuICBsZXQgaWdub3JlX2Nhc2UgciA9IEp2LkJvb2wuZ2V0IHIgXCJpZ25vcmVDYXNlXCJcbiAgbGV0IG11bHRpbGluZSByID0gSnYuQm9vbC5nZXQgciBcIm11bHRpbGluZVwiXG4gIGxldCBzb3VyY2UgciA9IEp2LkpzdHIuZ2V0IHIgXCJzb3VyY2VcIlxuICBsZXQgc3RpY2t5IHIgPSBKdi5Cb29sLmdldCByIFwic3RpY2t5XCJcbiAgbGV0IHVuaWNvZGUgciA9IEp2LkJvb2wuZ2V0IHIgXCJ1bmljb2RlXCJcbiAgbGV0IHVuaWNvZGVfc2V0cyByID0gSnYuQm9vbC5nZXQgciBcInVuaWNvZGVTZXRzXCJcbmVuZFxuXG5cbigqIERPTSBpbnRlcmFjdGlvbiAqKVxuXG5tb2R1bGUgQXQgPSBzdHJ1Y3RcbiAgdHlwZSBuYW1lID0gSnN0ci50XG4gIHR5cGUgdCA9IG5hbWUgKiBKc3RyLnRcbiAgbGV0W0BpbmxpbmVdIHYgbiB2ID0gKG4sIHYpXG4gIGxldCB2b2lkID0gKEpzdHIuZW1wdHksIEpzdHIuZW1wdHkpXG4gIGxldCBpc192b2lkIChuLCB2KSA9IEpzdHIuaXNfZW1wdHkgbiAmJiBKc3RyLmlzX2VtcHR5IHZcbiAgbGV0IGlmJyBiIGF0ID0gaWYgYiB0aGVuIGF0IGVsc2Ugdm9pZFxuICBsZXQgaWZfc29tZSA9IGZ1bmN0aW9uIE5vbmUgLT4gdm9pZCB8IFNvbWUgYXQgLT4gYXRcbiAgbGV0IHRydWUnIG4gPSAobiwgSnN0ci5lbXB0eSlcbiAgbGV0IGludCBuIGkgPSAobiwgSnN0ci5vZl9pbnQgaSlcbiAgbGV0IGZsb2F0IG4gZiA9IChuLCBKc3RyLm9mX2Zsb2F0IGYpXG4gIGxldCB0b19wYWlyID0gRnVuLmlkXG4gIGxldCBhZGRfaWYgYiBhdCBsID0gaWYgYiB0aGVuIGF0IDo6IGwgZWxzZSBsXG4gIGxldCBhZGRfaWZfc29tZSBuYW1lIG8gbCA9IG1hdGNoIG8gd2l0aCBOb25lIC0+IGwgfCBTb21lIGEgLT4gKG5hbWUsIGEpIDo6IGxcbiAgbW9kdWxlIE5hbWUgPSBzdHJ1Y3RcbiAgICBsZXQgYWNjZXNza2V5ID0gSnN0ci52IFwiYWNjZXNza2V5XCJcbiAgICBsZXQgYWN0aW9uID0gSnN0ci52IFwiYWN0aW9uXCJcbiAgICBsZXQgYXV0b2NvbXBsZXRlID0gSnN0ci52IFwiYXV0b2NvbXBsZXRlXCJcbiAgICBsZXQgYXV0b2ZvY3VzID0gSnN0ci52IFwiYXV0b2ZvY3VzXCJcbiAgICBsZXQgY2hhcnNldCA9IEpzdHIudiBcImNoYXJzZXRcIlxuICAgIGxldCBjaGVja2VkID0gSnN0ci52IFwiY2hlY2tlZFwiXG4gICAgbGV0IGNsYXNzJyA9IEpzdHIudiBcImNsYXNzXCJcbiAgICBsZXQgY29scyA9IEpzdHIudiBcImNvbHNcIlxuICAgIGxldCBjb250ZW50ID0gSnN0ci52IFwiY29udGVudFwiXG4gICAgbGV0IGNvbnRlbnRlZGl0YWJsZSA9IEpzdHIudiBcImNvbnRlbnRlZGl0YWJsZVwiXG4gICAgbGV0IGRlZmVyID0gSnN0ci52IFwiZGVmZXJcIlxuICAgIGxldCBkaXIgPSBKc3RyLnYgXCJkaXJcIlxuICAgIGxldCBkaXNhYmxlZCA9IEpzdHIudiBcImRpc2FibGVkXCJcbiAgICBsZXQgZG93bmxvYWQgPSBKc3RyLnYgXCJkb3dubG9hZFwiXG4gICAgbGV0IGRyYWdnYWJsZSA9IEpzdHIudiBcImRyYWdnYWJsZVwiXG4gICAgbGV0IGZvcicgPSBKc3RyLnYgXCJmb3JcIlxuICAgIGxldCBoZWlnaHQgPSBKc3RyLnYgXCJoZWlnaHRcIlxuICAgIGxldCBoaWRkZW4gPSBKc3RyLnYgXCJoaWRkZW5cIlxuICAgIGxldCBocmVmID0gSnN0ci52IFwiaHJlZlwiXG4gICAgbGV0IGlkID0gSnN0ci52IFwiaWRcIlxuICAgIGxldCBsYW5nID0gSnN0ci52IFwibGFuZ1wiXG4gICAgbGV0IGxpc3QgPSBKc3RyLnYgXCJsaXN0XCJcbiAgICBsZXQgbWVkaWEgPSBKc3RyLnYgXCJtZWRpYVwiXG4gICAgbGV0IG1ldGhvZCcgPSBKc3RyLnYgXCJtZXRob2RcIlxuICAgIGxldCBuYW1lID0gSnN0ci52IFwibmFtZVwiXG4gICAgbGV0IHBsYWNlaG9sZGVyID0gSnN0ci52IFwicGxhY2Vob2xkZXJcIlxuICAgIGxldCByZWwgPSBKc3RyLnYgXCJyZWxcIlxuICAgIGxldCByZXF1aXJlZCA9IEpzdHIudiBcInJlcXVpcmVkXCJcbiAgICBsZXQgcm93cyA9IEpzdHIudiBcInJvd3NcIlxuICAgIGxldCBzZWxlY3RlZCA9IEpzdHIudiBcInNlbGVjdGVkXCJcbiAgICBsZXQgc3BlbGxjaGVjayA9IEpzdHIudiBcInNwZWxsY2hlY2tcIlxuICAgIGxldCBzcmMgPSBKc3RyLnYgXCJzcmNcIlxuICAgIGxldCBzdHlsZSA9IEpzdHIudiBcInN0eWxlXCJcbiAgICBsZXQgdGFiaW5kZXggPSBKc3RyLnYgXCJ0YWJpbmRleFwiXG4gICAgbGV0IHRpdGxlID0gSnN0ci52IFwidGl0bGVcIlxuICAgIGxldCB0eXBlJyA9IEpzdHIudiBcInR5cGVcIlxuICAgIGxldCB2YWx1ZSA9IEpzdHIudiBcInZhbHVlXCJcbiAgICBsZXQgd2lkdGggPSBKc3RyLnYgXCJ3aWR0aFwiXG4gICAgbGV0IHdyYXAgPSBKc3RyLnYgXCJ3cmFwXCJcbiAgZW5kXG4gIHR5cGUgJ2EgY29ucyA9ICdhIC0+IHRcbiAgbGV0IGFjY2Vzc2tleSBzID0gdiBOYW1lLmFjY2Vzc2tleSBzXG4gIGxldCBhY3Rpb24gcyA9IHYgTmFtZS5hY3Rpb24gc1xuICBsZXQgYXV0b2NvbXBsZXRlIHMgPSB2IE5hbWUuYXV0b2NvbXBsZXRlIHNcbiAgbGV0IGF1dG9mb2N1cyA9IHRydWUnIE5hbWUuYXV0b2ZvY3VzXG4gIGxldCBjaGFyc2V0ID0gdiBOYW1lLmNoYXJzZXRcbiAgbGV0IGNoZWNrZWQgPSB0cnVlJyBOYW1lLmNoZWNrZWRcbiAgbGV0IGNsYXNzJyBzID0gdiBOYW1lLmNsYXNzJyBzXG4gIGxldCBjb2xzIGkgPSBpbnQgTmFtZS5jb2xzIGlcbiAgbGV0IGNvbnRlbnQgcyA9IHYgTmFtZS5jb250ZW50IHNcbiAgbGV0IGNvbnRlbnRlZGl0YWJsZSBzID0gdHJ1ZScgTmFtZS5jb250ZW50ZWRpdGFibGVcbiAgbGV0IGRlZmVyID0gdHJ1ZScgTmFtZS5kZWZlclxuICBsZXQgZGlyIHMgPSB2IE5hbWUuZGlyIHNcbiAgbGV0IGRpc2FibGVkID0gdHJ1ZScgTmFtZS5kaXNhYmxlZFxuICBsZXQgZG93bmxvYWQgcyA9IHYgTmFtZS5kb3dubG9hZCBzXG4gIGxldCBkcmFnZ2FibGUgcyA9IHYgTmFtZS5kcmFnZ2FibGUgc1xuICBsZXQgZm9yJyBzID0gdiBOYW1lLmZvcicgc1xuICBsZXQgaGVpZ2h0IGkgPSBpbnQgTmFtZS5oZWlnaHQgaVxuICBsZXQgaGlkZGVuID0gdHJ1ZScgTmFtZS5oaWRkZW5cbiAgbGV0IGhyZWYgcyA9IHYgTmFtZS5ocmVmIHNcbiAgbGV0IGlkIHMgPSB2IE5hbWUuaWQgc1xuICBsZXQgbGFuZyBzID0gdiBOYW1lLmxhbmcgc1xuICBsZXQgbGlzdCBzID0gdiBOYW1lLmxpc3Qgc1xuICBsZXQgbWVkaWEgcyA9IHYgTmFtZS5tZWRpYSBzXG4gIGxldCBtZXRob2QnIHMgPSB2IE5hbWUubWV0aG9kJyBzXG4gIGxldCBuYW1lIHMgPSB2IE5hbWUubmFtZSBzXG4gIGxldCBwbGFjZWhvbGRlciBzID0gdiBOYW1lLnBsYWNlaG9sZGVyIHNcbiAgbGV0IHJlbCBzID0gdiBOYW1lLnJlbCBzXG4gIGxldCByZXF1aXJlZCA9IHRydWUnIE5hbWUucmVxdWlyZWRcbiAgbGV0IHJvd3MgaSA9IGludCBOYW1lLnJvd3MgaVxuICBsZXQgc2VsZWN0ZWQgPSB0cnVlJyBOYW1lLnNlbGVjdGVkXG4gIGxldCBzcGVsbGNoZWNrID0gdiBOYW1lLnNwZWxsY2hlY2tcbiAgbGV0IHNyYyBzID0gdiBOYW1lLnNyYyBzXG4gIGxldCBzdHlsZSBzID0gdiBOYW1lLnN0eWxlIHNcbiAgbGV0IHRhYmluZGV4IGkgPSBpbnQgTmFtZS50YWJpbmRleCBpXG4gIGxldCB0aXRsZSBzID0gdiBOYW1lLnRpdGxlIHNcbiAgbGV0IHR5cGUnIHMgPSB2IE5hbWUudHlwZScgc1xuICBsZXQgdmFsdWUgcyA9IHYgTmFtZS52YWx1ZSBzXG4gIGxldCB3aWR0aCBpID0gaW50IE5hbWUud2lkdGggaVxuICBsZXQgd3JhcCBzID0gdiBOYW1lLndyYXAgc1xuZW5kXG5cbm1vZHVsZSBFbCA9IHN0cnVjdFxuICB0eXBlIGRvY3VtZW50ID0gSnYudFxuICB0eXBlIHdpbmRvdyA9IEp2LnRcbiAgdHlwZSB0YWdfbmFtZSA9IEpzdHIudFxuICB0eXBlIGVsID0gSnYudFxuICB0eXBlIHQgPSBKdi50XG4gIGluY2x1ZGUgKEp2LklkIDogSnYuQ09OViB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gIGxldCBnbG9iYWxfZG9jdW1lbnQgPSBKdi5nZXQgSnYuZ2xvYmFsIFwiZG9jdW1lbnRcIlxuICBsZXQgZG9jdW1lbnQgZSA9IEp2LmdldCBlIFwib3duZXJEb2N1bWVudFwiXG4gIGxldCBnbG9iYWxfcm9vdCA9XG4gICAgaWYgSnYuaXNfbm9uZSBnbG9iYWxfZG9jdW1lbnQgdGhlbiAoKiBlLmcuIHdlYiB3b3JrZXIgKikgSnYudW5kZWZpbmVkIGVsc2VcbiAgICBKdi5nZXQgZ2xvYmFsX2RvY3VtZW50IFwiZG9jdW1lbnRFbGVtZW50XCJcblxuICBsZXQgZWxfbGlzdF9vZl9ub2RlX2xpc3QgbmwgPVxuICAgIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICBsZXQgbGVuID0gSnYuSW50LmdldCBubCBcImxlbmd0aFwiIGluXG4gICAgZm9yIGkgPSBsZW4gLSAxIGRvd250byAwIGRvIGFjYyA6PSBKdi5KYXJyYXkuZ2V0IG5sIGkgOjogIWFjYyBkb25lO1xuICAgICFhY2NcblxuICBsZXQgYXBwZW5kX2NoaWxkIGUgbiA9IGlnbm9yZSAoSnYuY2FsbCBlIFwiYXBwZW5kQ2hpbGRcIiBbfCBuIHxdKVxuXG4gIGxldCByZWMgc2V0X2F0dHMgZSBzcyBjbHNzID0gZnVuY3Rpb25cbiAgfCAoYSwgdikgOjogYXQgLT5cbiAgICAgIGlmIEpzdHIuaXNfZW1wdHkgYSB0aGVuIHNldF9hdHRzIGUgc3MgY2xzcyBhdCBlbHNlXG4gICAgICBpZiBKc3RyLmVxdWFsIGEgQXQuTmFtZS5zdHlsZSB0aGVuIHNldF9hdHRzIGUgKHYgOjogc3MpIGNsc3MgYXQgZWxzZVxuICAgICAgaWYgSnN0ci5lcXVhbCBhIEF0Lk5hbWUuY2xhc3MnIHRoZW5cbiAgICAgICAgc2V0X2F0dHMgZSBzcyAoaWYgSnN0ci5pc19lbXB0eSB2IHRoZW4gY2xzcyBlbHNlIHYgOjogY2xzcykgYXRcbiAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgaWdub3JlIChKdi5jYWxsIGUgXCJzZXRBdHRyaWJ1dGVcIiBKdi5bfG9mX2pzdHIgYTsgb2ZfanN0ciB2fF0pO1xuICAgICAgICBzZXRfYXR0cyBlIHNzIGNsc3MgYXRcbiAgICAgIGVuZFxuICB8IFtdIC0+XG4gICAgICBpZiBzcyA8PiBbXSB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBhID0gQXQuTmFtZS5zdHlsZSBpblxuICAgICAgICBsZXQgdiA9IEpzdHIuY29uY2F0IH5zZXA6KEpzdHIudiBcIjtcIikgKExpc3QucmV2IHNzKSBpblxuICAgICAgICBpZ25vcmUgKEp2LmNhbGwgZSBcInNldEF0dHJpYnV0ZVwiIEp2Llt8b2ZfanN0ciBhOyBvZl9qc3RyIHZ8XSk7XG4gICAgICBlbmQ7XG4gICAgICBpZiBjbHNzIDw+IFtdIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IGEgPSBBdC5OYW1lLmNsYXNzJyBpblxuICAgICAgICBsZXQgdiA9IEpzdHIuY29uY2F0IH5zZXA6KEpzdHIudiBcIiBcIikgKExpc3QucmV2IGNsc3MpIGluXG4gICAgICAgIGlnbm9yZSAoSnYuY2FsbCBlIFwic2V0QXR0cmlidXRlXCIgSnYuW3xvZl9qc3RyIGE7IG9mX2pzdHIgdnxdKVxuICAgICAgZW5kXG5cbiAgbGV0IHYgPyhkID0gZ2xvYmFsX2RvY3VtZW50KSA/KGF0ID0gW10pIG5hbWUgY3MgPVxuICAgIGxldCBlID0gSnYuY2FsbCBkIFwiY3JlYXRlRWxlbWVudFwiIFt8IEp2Lm9mX2pzdHIgbmFtZSB8XSBpblxuICAgIHNldF9hdHRzIGUgW10gW10gYXQ7XG4gICAgTGlzdC5pdGVyIChhcHBlbmRfY2hpbGQgZSkgY3M7XG4gICAgZVxuXG4gIGxldCB0eHQgPyhkID0gZ2xvYmFsX2RvY3VtZW50KSBzID1cbiAgICBKdi5jYWxsIGQgXCJjcmVhdGVUZXh0Tm9kZVwiIFt8SnYub2ZfanN0ciBzfF1cblxuICBsZXQgdHh0JyA/KGQgPSBnbG9iYWxfZG9jdW1lbnQpIHMgPVxuICAgIEp2LmNhbGwgZCBcImNyZWF0ZVRleHROb2RlXCIgW3wgSnYub2Zfc3RyaW5nIHMgfF1cblxuICBsZXQgc3AgPyhkID0gZ2xvYmFsX2RvY3VtZW50KSAoKSA9IHR4dCAoSnN0ci52IFwiIFwiKVxuICBsZXQgbmJzcCA/KGQgPSBnbG9iYWxfZG9jdW1lbnQpICgpID0gdHh0IChKc3RyLnYgXCJcXHV7MDBBMH1cIilcblxuICBsZXQgaXNfdHh0IGUgPSBKdi5JbnQuZ2V0IGUgXCJub2RlVHlwZVwiID0gM1xuICBsZXQgaXNfZWwgZSA9IEp2LkludC5nZXQgZSBcIm5vZGVUeXBlXCIgPSAxXG4gIGxldCB0YWdfbmFtZSBlID0gSnN0ci5sb3dlcmNhc2VkIEBAIEp2LkpzdHIuZ2V0IGUgXCJub2RlTmFtZVwiXG4gIGxldCBoYXNfdGFnX25hbWUgbiBlID0gSnN0ci5lcXVhbCBuICh0YWdfbmFtZSBlKVxuICBsZXQgdHh0X3RleHQgdHh0ID0gbWF0Y2ggaXNfdHh0IHR4dCB3aXRoXG4gIHwgdHJ1ZSAtPiBKdi5Kc3RyLmdldCB0eHQgXCJub2RlVmFsdWVcIlxuICB8IGZhbHNlIC0+IEpzdHIuZW1wdHlcblxuICBsZXQgdGV4dF9jb250ZW50IGUgPSBKdi5Kc3RyLmdldCBlIFwidGV4dENvbnRlbnRcIlxuXG4gIGV4dGVybmFsIGFzX3RhcmdldCA6IHQgLT4gRXYudGFyZ2V0ID0gXCIlaWRlbnRpdHlcIlxuXG4gICgqIEVsZW1lbnQgbG9va3VwcyAqKVxuXG4gIGxldCBmaW5kX2J5X2NsYXNzID8ocm9vdCA9IGdsb2JhbF9yb290KSBjID1cbiAgICBlbF9saXN0X29mX25vZGVfbGlzdCBAQFxuICAgIEp2LmNhbGwgcm9vdCBcImdldEVsZW1lbnRzQnlDbGFzc05hbWVcIiBbfCBKdi5vZl9qc3RyIGMgfF1cblxuICBsZXQgZmluZF9ieV90YWdfbmFtZSA/KHJvb3QgPSBnbG9iYWxfcm9vdCkgbiA9XG4gICAgZWxfbGlzdF9vZl9ub2RlX2xpc3QgQEBcbiAgICBKdi5jYWxsIHJvb3QgXCJnZXRFbGVtZW50c0J5VGFnTmFtZVwiIFt8IEp2Lm9mX2pzdHIgbiB8XVxuXG4gIGxldCBmaW5kX2ZpcnN0X2J5X3NlbGVjdG9yID8ocm9vdCA9IGdsb2JhbF9yb290KSBzZWwgPVxuICAgIEp2LnRvX29wdGlvbiBvZl9qdiBAQCBKdi5jYWxsIHJvb3QgXCJxdWVyeVNlbGVjdG9yXCIgW3wgSnYub2ZfanN0ciBzZWwgfF1cblxuICBsZXQgZm9sZF9maW5kX2J5X3NlbGVjdG9yID8ocm9vdCA9IGdsb2JhbF9yb290KSBmIHNlbCBhY2MgPVxuICAgIGxldCBubCA9IEp2LmNhbGwgcm9vdCBcInF1ZXJ5U2VsZWN0b3JBbGxcIiBbfCBKdi5vZl9qc3RyIHNlbCB8XSBpblxuICAgIGxldCBhY2MgPSByZWYgYWNjIGluXG4gICAgZm9yIGkgPSAwIHRvIChKdi5JbnQuZ2V0IG5sIFwibGVuZ3RoXCIpIC0gMSBkb1xuICAgICAgYWNjIDo9IGYgKG9mX2p2IChKdi5KYXJyYXkuZ2V0IG5sIGkpKSAhYWNjXG4gICAgZG9uZTtcbiAgICAhYWNjXG5cbiAgKCogUGFyZW50IGFuZCBjaGlsZHJlbiAqKVxuXG4gIGxldCBwYXJlbnQgZSA9IG1hdGNoIEp2LmZpbmQgZSBcInBhcmVudE5vZGVcIiB3aXRoXG4gIHwgU29tZSBlIHdoZW4gaXNfZWwgZSAtPiBTb21lIGVcbiAgfCBfIC0+IE5vbmVcblxuICBsZXQgZGVsZXRlX2NoaWxkcmVuIGUgPVxuICAgIHdoaWxlIG5vdCAoSnYuaXNfbnVsbCAoSnYuZ2V0IGUgXCJmaXJzdENoaWxkXCIpKSBkb1xuICAgICAgaWdub3JlIEBAIEp2LmNhbGwgZSBcInJlbW92ZUNoaWxkXCIgW3wgSnYuZ2V0IGUgXCJmaXJzdENoaWxkXCIgfF07XG4gICAgZG9uZVxuXG4gIGxldCBjaGlsZHJlbiA/KG9ubHlfZWxzID0gZmFsc2UpIGUgPSBtYXRjaCBvbmx5X2VscyB3aXRoXG4gIHwgdHJ1ZSAtPiBlbF9saXN0X29mX25vZGVfbGlzdCAoSnYuZ2V0IGUgXCJjaGlsZHJlblwiKVxuICB8IGZhbHNlIC0+IGVsX2xpc3Rfb2Zfbm9kZV9saXN0IChKdi5nZXQgZSBcImNoaWxkTm9kZXNcIilcblxuICBsZXQgc2V0X2NoaWxkcmVuIGUgbCA9IGRlbGV0ZV9jaGlsZHJlbiBlOyBMaXN0Lml0ZXIgKGFwcGVuZF9jaGlsZCBlKSBsXG4gIGxldCBhcHBlbmRfY2hpbGQgZSBjID0gaWdub3JlIEBAIEp2LmNhbGwgZSBcImFwcGVuZENoaWxkXCIgW3wgYyB8XVxuXG4gIGxldCBwcmVwZW5kX2NoaWxkcmVuIGUgbCA9IGlnbm9yZSBAQCBKdi5jYWxsIGUgXCJwcmVwZW5kXCIgKEFycmF5Lm9mX2xpc3QgbClcbiAgbGV0IGFwcGVuZF9jaGlsZHJlbiBlIGwgPSBpZ25vcmUgQEAgSnYuY2FsbCBlIFwiYXBwZW5kXCIgKEFycmF5Lm9mX2xpc3QgbClcbiAgbGV0IHByZXZpb3VzX3NpYmxpbmcgZSA9IEp2LmZpbmQgZSBcInByZXZpb3VzRWxlbWVudFNpYmxpbmdcIlxuICBsZXQgbmV4dF9zaWJsaW5nIGUgPSBKdi5maW5kIGUgXCJuZXh0RWxlbWVudFNpYmxpbmdcIlxuICBsZXQgaW5zZXJ0X3NpYmxpbmdzIGxvYyBlIGwgPSBpZ25vcmUgQEAgbWF0Y2ggbG9jIHdpdGhcbiAgfCBgQmVmb3JlIC0+IEp2LmNhbGwgZSBcImJlZm9yZVwiIChBcnJheS5vZl9saXN0IGwpXG4gIHwgYEFmdGVyIC0+ICBKdi5jYWxsIGUgXCJhZnRlclwiIChBcnJheS5vZl9saXN0IGwpXG4gIHwgYFJlcGxhY2UgLT4gSnYuY2FsbCBlIFwicmVwbGFjZVdpdGhcIiAoQXJyYXkub2ZfbGlzdCBsKVxuXG4gIGxldCByZW1vdmUgZSA9IGlnbm9yZSBAQCBKdi5jYWxsIGUgXCJyZW1vdmVcIiBbfCBlIHxdXG5cbiAgKCogQXR0cmlidXRlcyAqKVxuXG4gIGxldCBhdCBhIGUgPVxuICAgIEp2LnRvX29wdGlvbiBKdi50b19qc3RyIChKdi5jYWxsIGUgXCJnZXRBdHRyaWJ1dGVcIiBbfEp2Lm9mX2pzdHIgYXxdKVxuXG4gIGxldCBzZXRfYXQgYSB2IGUgPVxuICAgIGlmIEpzdHIuaXNfZW1wdHkgYSB0aGVuICgpIGVsc2VcbiAgICBtYXRjaCB2IHdpdGhcbiAgICB8IE5vbmUgLT4gaWdub3JlIChKdi5jYWxsIGUgXCJyZW1vdmVBdHRyaWJ1dGVcIiBKdi5bfG9mX2pzdHIgYXxdKVxuICAgIHwgU29tZSB2IC0+IGlnbm9yZSAoSnYuY2FsbCBlIFwic2V0QXR0cmlidXRlXCIgSnYuW3xvZl9qc3RyIGE7IG9mX2pzdHIgdnxdKVxuXG4gICgqIFByb3BlcnRpZXMgKilcblxuICBtb2R1bGUgUHJvcCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IG4gOiBKc3RyLnQ7XG4gICAgICAgIGp2X3RvIDogSnYudCAtPiAnYTtcbiAgICAgICAganZfb2YgOiAnYSAtPiBKdi50OyB9XG5cbiAgICBsZXQganZfdG9fYm9vbCBiID0gaWYgSnYuaXNfdW5kZWZpbmVkIGIgdGhlbiBmYWxzZSBlbHNlIEp2LnRvX2Jvb2wgYlxuICAgIGxldCBqdl90b19pbnQgaSA9IGlmIEp2LmlzX3VuZGVmaW5lZCBpIHRoZW4gMCBlbHNlIEp2LnRvX2ludCBpXG4gICAgbGV0IGp2X3RvX2Zsb2F0IGYgPSBpZiBKdi5pc191bmRlZmluZWQgZiB0aGVuIDAuIGVsc2UgSnYudG9fZmxvYXQgZlxuICAgIGxldCBqdl90b19qc3RyIHMgPSBpZiBKdi5pc191bmRlZmluZWQgcyB0aGVuIEpzdHIuZW1wdHkgZWxzZSBKdi50b19qc3RyIHNcblxuICAgIGxldCBib29sIG4gPSB7IG47IGp2X3RvID0ganZfdG9fYm9vbCA7IGp2X29mID0gSnYub2ZfYm9vbCB9XG4gICAgbGV0IGludCBuID0geyBuOyBqdl90byA9IGp2X3RvX2ludCA7IGp2X29mID0gSnYub2ZfaW50IH1cbiAgICBsZXQgZmxvYXQgbiA9IHsgbjsganZfdG8gPSBqdl90b19mbG9hdCA7IGp2X29mID0gSnYub2ZfZmxvYXQgfVxuICAgIGxldCBqc3RyIG4gPSB7IG47IGp2X3RvID0ganZfdG9fanN0ciA7IGp2X29mID0gSnYub2ZfanN0ciB9XG5cbiAgICBsZXQgY2hlY2tlZCA9IGJvb2wgKEpzdHIudiBcImNoZWNrZWRcIilcbiAgICBsZXQgaGVpZ2h0ID0gaW50IChKc3RyLnYgXCJoZWlnaHRcIilcbiAgICBsZXQgaGlkZGVuID0gYm9vbCAoSnN0ci52IFwiaGlkZGVuXCIpXG4gICAgbGV0IGlkID0ganN0ciAoSnN0ci52IFwiaWRcIilcbiAgICBsZXQgbmFtZSA9IGpzdHIgKEpzdHIudiBcIm5hbWVcIilcbiAgICBsZXQgdGl0bGUgPSBqc3RyIChKc3RyLnYgXCJ0aXRsZVwiKVxuICAgIGxldCB2YWx1ZSA9IGpzdHIgKEpzdHIudiBcInZhbHVlXCIpXG4gICAgbGV0IHdpZHRoID0gaW50IChKc3RyLnYgXCJ3aWR0aFwiKVxuICBlbmRcblxuICBsZXQgcHJvcCBwIGUgPSBwLlByb3AuanZfdG8gQEAgSnYuZ2V0JyBlIHAuUHJvcC5uXG4gIGxldCBzZXRfcHJvcCBwIHYgZSA9IGlnbm9yZSBAQCBKdi5zZXQnIGUgcC5Qcm9wLm4gKHAuUHJvcC5qdl9vZiB2KVxuXG4gICgqIENsYXNzICopXG5cbiAgbGV0IGNsYXNzJyBjIGUgPVxuICAgIEp2LnRvX2Jvb2wgKEp2LmNhbGwgKEp2LmdldCBlIFwiY2xhc3NMaXN0XCIpIFwiY29udGFpbnNcIiBbfEp2Lm9mX2pzdHIgY3xdKVxuXG4gIGxldCBzZXRfY2xhc3MgYyBiIGUgPSBtYXRjaCBiIHdpdGhcbiAgfCB0cnVlIC0+IGlnbm9yZSAoSnYuY2FsbCAoSnYuZ2V0IGUgXCJjbGFzc0xpc3RcIikgXCJhZGRcIiBbfEp2Lm9mX2pzdHIgY3xdKVxuICB8IGZhbHNlIC0+IGlnbm9yZSAoSnYuY2FsbCAoSnYuZ2V0IGUgXCJjbGFzc0xpc3RcIikgXCJyZW1vdmVcIiBbfEp2Lm9mX2pzdHIgY3xdKVxuXG4gICgqIFN0eWxlICopXG5cbiAgbW9kdWxlIFN0eWxlID0gc3RydWN0XG4gICAgdHlwZSBwcm9wID0gSnN0ci50XG4gICAgbGV0IGJhY2tncm91bmRfY29sb3IgPSBKc3RyLnYgXCJiYWNrZ3JvdW5kLWNvbG9yXCJcbiAgICBsZXQgYm90dG9tID0gSnN0ci52IFwiYm90dG9tXCJcbiAgICBsZXQgY29sb3IgPSBKc3RyLnYgXCJjb2xvclwiXG4gICAgbGV0IGN1cnNvciA9IEpzdHIudiBcImN1cnNvclwiXG4gICAgbGV0IGRpc3BsYXkgPSBKc3RyLnYgXCJkaXNwbGF5XCJcbiAgICBsZXQgaGVpZ2h0ID0gSnN0ci52IFwiaGVpZ2h0XCJcbiAgICBsZXQgbGVmdCA9IEpzdHIudiBcImxlZnRcIlxuICAgIGxldCBwb3NpdGlvbiA9IEpzdHIudiBcInBvc2l0aW9uXCJcbiAgICBsZXQgcmlnaHQgPSBKc3RyLnYgXCJyaWdodFwiXG4gICAgbGV0IHRvcCA9IEpzdHIudiBcInRvcFwiXG4gICAgbGV0IHZpc2liaWxpdHkgPSBKc3RyLnYgXCJ2aXNpYmlsaXR5XCJcbiAgICBsZXQgd2lkdGggPSBKc3RyLnYgXCJ3aWR0aFwiXG4gICAgbGV0IHpfaW5kZXggPSBKc3RyLnYgXCJ6LWluZGV4XCJcbiAgICBsZXQgem9vbSA9IEpzdHIudiBcInpvb21cIlxuICBlbmRcblxuICBsZXQgY29tcHV0ZWRfc3R5bGUgPyh3ID0gSnYuZ2V0IEp2Lmdsb2JhbCBcIndpbmRvd1wiKSBwIGUgPVxuICAgIGxldCBzdHlsZSA9IEp2LmNhbGwgdyBcImdldENvbXB1dGVkU3R5bGVcIiBbfGV8XSBpblxuICAgIGxldCB2ID0gSnYuZ2V0JyBzdHlsZSBwIGluXG4gICAgaWYgSnYuaXNfbm9uZSB2IHRoZW4gSnN0ci5lbXB0eSBlbHNlIEp2LnRvX2pzdHIgdlxuXG4gIGxldCBpbmxpbmVfc3R5bGUgcCBlID1cbiAgICBsZXQgc3R5bGUgPSBKdi5nZXQgZSBcInN0eWxlXCIgaW5cbiAgICBpZiBKdi5pc19ub25lIHN0eWxlIHRoZW4gSnN0ci5lbXB0eSBlbHNlXG4gICAgbGV0IHYgPSBKdi5nZXQnIHN0eWxlIHAgaW5cbiAgICBpZiBKdi5pc19ub25lIHYgdGhlbiBKc3RyLmVtcHR5IGVsc2UgSnYudG9fanN0ciB2XG5cbiAgbGV0IHNldF9pbmxpbmVfc3R5bGUgPyhpbXBvcnRhbnQgPSBmYWxzZSkgcCB2IGUgPVxuICAgIGxldCBwcmlvcml0eSA9IGlmIGltcG9ydGFudCB0aGVuIEpzdHIudiBcImltcG9ydGFudFwiIGVsc2UgSnN0ci5lbXB0eSBpblxuICAgIGxldCBzdHlsZSA9IEp2LmdldCBlIFwic3R5bGVcIiBpblxuICAgIGlmIEp2LmlzX25vbmUgc3R5bGUgdGhlbiAoKSBlbHNlXG4gICAgKGlnbm9yZSBAQFxuICAgICBKdi5jYWxsIHN0eWxlIFwic2V0UHJvcGVydHlcIiBKdi5bfG9mX2pzdHIgcDsgb2ZfanN0ciB2OyBvZl9qc3RyIHByaW9yaXR5fF0pXG5cbiAgbGV0IHJlbW92ZV9pbmxpbmVfc3R5bGUgcCBlID1cbiAgICBsZXQgc3R5bGUgPSBKdi5nZXQgZSBcInN0eWxlXCIgaW5cbiAgICBpZiBKdi5pc19ub25lIHN0eWxlIHRoZW4gKCkgZWxzZVxuICAgIChpZ25vcmUgQEAgSnYuY2FsbCBzdHlsZSBcInJlbW92ZVByb3BlcnR5XCIgSnYuW3xvZl9qc3RyIHB8XSlcblxuICAoKiBMYXlvdXQgKilcblxuICBsZXQgaW5uZXJfeCBlID0gSnYuRmxvYXQuZ2V0IGUgXCJjbGllbnRMZWZ0XCJcbiAgbGV0IGlubmVyX3kgZSA9IEp2LkZsb2F0LmdldCBlIFwiY2xpZW50VG9wXCJcbiAgbGV0IGlubmVyX3cgZSA9IEp2LkZsb2F0LmdldCBlIFwiY2xpZW50V2lkdGhcIlxuICBsZXQgaW5uZXJfaCBlID0gSnYuRmxvYXQuZ2V0IGUgXCJjbGllbnRIZWlnaHRcIlxuICBsZXQgYm91bmRfeCBlID0gSnYuRmxvYXQuZ2V0IChKdi5jYWxsIGUgXCJnZXRCb3VuZGluZ0NsaWVudFJlY3RcIiBbfHxdKSBcInhcIlxuICBsZXQgYm91bmRfeSBlID0gSnYuRmxvYXQuZ2V0IChKdi5jYWxsIGUgXCJnZXRCb3VuZGluZ0NsaWVudFJlY3RcIiBbfHxdKSBcInlcIlxuICBsZXQgYm91bmRfdyBlID0gSnYuRmxvYXQuZ2V0IChKdi5jYWxsIGUgXCJnZXRCb3VuZGluZ0NsaWVudFJlY3RcIiBbfHxdKSBcIndpZHRoXCJcbiAgbGV0IGJvdW5kX2ggZSA9IEp2LkZsb2F0LmdldCAoSnYuY2FsbCBlIFwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0XCIgW3x8XSkgXCJoZWlnaHRcIlxuXG4gICgqIE9mZnNldCAqKVxuXG4gIGxldCBvZmZzZXRfdyBlID0gSnYuSW50LmdldCBlIFwib2Zmc2V0V2lkdGhcIlxuICBsZXQgb2Zmc2V0X2ggZSA9IEp2LkludC5nZXQgZSBcIm9mZnNldEhlaWdodFwiXG5cbiAgbGV0IG9mZnNldF9sZWZ0IGUgPSBKdi5JbnQuZ2V0IGUgXCJvZmZzZXRMZWZ0XCJcbiAgbGV0IG9mZnNldF90b3AgZSA9IEp2LkludC5nZXQgZSBcIm9mZnNldFRvcFwiXG5cbiAgbGV0IG9mZnNldF9wYXJlbnQgZSA9IEp2LmdldCBlIFwib2Zmc2V0UGFyZW50XCIgfD4gSnYudG9fb3B0aW9uIG9mX2p2XG5cbiAgKCogU2Nyb2xsaW5nICopXG5cbiAgbGV0IHNjcm9sbF94IGUgPSBKdi5GbG9hdC5nZXQgZSBcInNjcm9sbExlZnRcIlxuICBsZXQgc2Nyb2xsX3kgZSA9IEp2LkZsb2F0LmdldCBlIFwic2Nyb2xsVG9wXCJcbiAgbGV0IHNjcm9sbF93IGUgPSBKdi5GbG9hdC5nZXQgZSBcInNjcm9sbFdpZHRoXCJcbiAgbGV0IHNjcm9sbF9oIGUgPSBKdi5GbG9hdC5nZXQgZSBcInNjcm9sbEhlaWdodFwiXG5cbiAgbGV0IHNjcm9sbF9pbnRvX3ZpZXcgPyhhbGlnbl92ID0gYFN0YXJ0KSA/YmVoYXZpb3IgZSA9XG4gICAgbGV0IGFsaWduID0gbWF0Y2ggYWxpZ25fdiB3aXRoXG4gICAgICB8IGBTdGFydCAtPiBcInN0YXJ0XCJcbiAgICAgIHwgYENlbnRlciAtPiBcImNlbnRlclwiXG4gICAgICB8IGBOZWFyZXN0IC0+IFwibmVhcmVzdFwiXG4gICAgICB8IGBFbmQgLT4gXCJlbmRcIlxuICAgIGluXG4gICAgbGV0IGJlaGF2aW9yID1cbiAgICAgIEp2Lm9mX29wdGlvbiB+bm9uZTpKdi5udWxsIEp2Lm9mX3N0cmluZyBAQFxuICAgICAgICBPcHRpb24ubWFwIChmdW5jdGlvblxuICAgICAgICAgICAgfCBgU21vb3RoIC0+IFwic21vb3RoXCJcbiAgICAgICAgICAgIHwgYEluc3RhbnQgLT4gXCJpbnN0YW50XCJcbiAgICAgICAgICAgIHwgYEF1dG8gLT4gXCJhdXRvXCIpXG4gICAgICAgICAgYmVoYXZpb3JcbiAgICBpblxuICAgIGxldCBvcHRpb25zID0gSnYub2JqIFt8XCJibG9ja1wiLCBKdi5vZl9zdHJpbmcgYWxpZ247IFwiYmVoYXZpb3JcIiAsIGJlaGF2aW9yIHxdIGluXG4gICAgaWdub3JlIEBAIEp2LmNhbGwgZSBcInNjcm9sbEludG9WaWV3XCIgW3wgb3B0aW9ucyB8XVxuXG4gICgqIEZvY3VzICopXG5cbiAgbGV0IGhhc19mb2N1cyBlID1cbiAgICBtYXRjaCBKdi50b19vcHRpb24gRnVuLmlkIChKdi5nZXQgKGRvY3VtZW50IGUpIFwiYWN0aXZlRWxlbWVudFwiKSB3aXRoXG4gICAgfCBOb25lIC0+IGZhbHNlIHwgU29tZSBlJyAtPiBlID09IGUnXG5cbiAgbGV0IHNldF9oYXNfZm9jdXMgYiBlID1cbiAgICBpZ25vcmUgKGlmIGIgdGhlbiBKdi5jYWxsIGUgXCJmb2N1c1wiIFt8fF0gZWxzZSBKdi5jYWxsIGUgXCJibHVyXCIgW3x8XSlcblxuICAoKiBQb2ludGVyIGxvY2tpbmcgKilcblxuICBsZXQgaXNfbG9ja2luZ19wb2ludGVyIGUgPVxuICAgIG1hdGNoIEp2LnRvX29wdGlvbiBGdW4uaWQgKEp2LmdldCAoZG9jdW1lbnQgZSkgXCJwb2ludGVyTG9ja0VsZW1lbnRcIikgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZSB8IFNvbWUgZScgLT4gZSA9PSBlJ1xuXG4gIGxldCByZXF1ZXN0X3BvaW50ZXJfbG9jayBlID1cbiAgICBsZXQgZnV0LCBzZXQgPSBGdXQuY3JlYXRlICgpIGluXG4gICAgbGV0IGQgPSAoT2JqLm1hZ2ljIGRvY3VtZW50IGUgOiBFdi50YXJnZXQpIGluXG4gICAgbGV0IG9wdHMgPSBFdi5saXN0ZW5fb3B0cyB+b25jZTp0cnVlICgpIGluXG4gICAgbGV0IHVubGlzdGVuID0gcmVmIChmdW4gKCkgLT4gKCkpIGluXG4gICAgbGV0IGxvY2tlZCBfZXYgPSBzZXQgKE9rICgpKTsgIXVubGlzdGVuICgpXG4gICAgYW5kIGVycm9yIF9ldiA9XG4gICAgICBsZXQgZXJyID0gSnYuRXJyb3IudiAoSnN0ci52IFwiQ291bGQgbm90IGxvY2sgcG9pbnRlclwiKSBpblxuICAgICAgc2V0IChFcnJvciBlcnIpOyAhdW5saXN0ZW4gKClcbiAgICBpblxuICAgIGxldCBrID0gRXYubGlzdGVuIH5vcHRzIEV2LnBvaW50ZXJsb2NrY2hhbmdlIGxvY2tlZCBkIGluXG4gICAgbGV0IGsnID0gRXYubGlzdGVuIH5vcHRzIEV2LnBvaW50ZXJsb2NrZXJyb3IgZXJyb3IgZCBpblxuICAgIHVubGlzdGVuIDo9IChmdW4gKCkgLT4gRXYudW5saXN0ZW4gazsgRXYudW5saXN0ZW4gaycpO1xuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGUgXCJyZXF1ZXN0UG9pbnRlckxvY2tcIiBbfHxdO1xuICAgIGZ1dFxuXG4gICgqIENsaWNrIHNpbWx1YXRpb24gKilcblxuICBsZXQgY2xpY2sgZSA9IGlnbm9yZSAoSnYuY2FsbCBlIFwiY2xpY2tcIiBbfHxdKVxuICBsZXQgc2VsZWN0X3RleHQgZSA9IGlnbm9yZSAoSnYuY2FsbCBlIFwic2VsZWN0XCIgW3x8XSlcblxuICAoKiBGdWxsc2NyZWVuICopXG5cbiAgbW9kdWxlIE5hdmlnYXRpb25fdWkgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKc3RyLnRcbiAgICBsZXQgYXV0byA9IEpzdHIudiBcImF1dG9cIlxuICAgIGxldCBoaWRlID0gSnN0ci52IFwiaGlkZVwiXG4gICAgbGV0IHNob3cgPSBKc3RyLnYgXCJzaG93XCJcbiAgZW5kXG5cbiAgdHlwZSBmdWxsc2NyZWVuX29wdHMgPSBKdi50XG4gIGxldCBmdWxsc2NyZWVuX29wdHMgP25hdmlnYXRpb25fdWkgKCkgPVxuICAgIGxldCBvID0gSnYub2JqIFt8fF0gaW5cbiAgICBKdi5Kc3RyLnNldF9pZl9zb21lIG8gXCJuYXZpZ2F0aW9uVUlcIiBuYXZpZ2F0aW9uX3VpO1xuICAgIG9cblxuICBsZXQgcmVxdWVzdF9mdWxsc2NyZWVuID8ob3B0cyA9IEp2Lm9iaiBbfHxdKSBlID1cbiAgICBGdXQub2ZfcHJvbWlzZSB+b2s6aWdub3JlIEBAIEp2LmNhbGwgZSBcInJlcXVlc3RGdWxsc2NyZWVuXCIgW3wgb3B0cyB8XVxuXG4gICgqIElucHV0ICopXG5cbiAgbW9kdWxlIElucHV0ID0gc3RydWN0XG4gICAgbGV0IGZpbGVzIGUgPSBtYXRjaCBKdi5maW5kIGUgXCJmaWxlc1wiIHdpdGhcbiAgICB8IE5vbmUgLT4gW10gfCBTb21lIGZpbGVzIC0+IEp2LnRvX2xpc3QgRmlsZS5vZl9qdiBmaWxlc1xuICBlbmRcblxuICAoKiBFbGVtZW50IHRhZyBuYW1lcyAqKVxuXG4gIG1vZHVsZSBOYW1lID0gc3RydWN0XG4gICAgbGV0IGEgPSBKc3RyLnYgXCJhXCJcbiAgICBsZXQgYWJiciA9IEpzdHIudiBcImFiYnJcIlxuICAgIGxldCBhZGRyZXNzID0gSnN0ci52IFwiYWRkcmVzc1wiXG4gICAgbGV0IGFyZWEgPSBKc3RyLnYgXCJhcmVhXCJcbiAgICBsZXQgYXJ0aWNsZSA9IEpzdHIudiBcImFydGljbGVcIlxuICAgIGxldCBhc2lkZSA9IEpzdHIudiBcImFzaWRlXCJcbiAgICBsZXQgYXVkaW8gPSBKc3RyLnYgXCJhdWRpb1wiXG4gICAgbGV0IGIgPSBKc3RyLnYgXCJiXCJcbiAgICBsZXQgYmFzZSA9IEpzdHIudiBcImJhc2VcIlxuICAgIGxldCBiZGkgPSBKc3RyLnYgXCJiZGlcIlxuICAgIGxldCBiZG8gPSBKc3RyLnYgXCJiZG9cIlxuICAgIGxldCBibG9ja3F1b3RlID0gSnN0ci52IFwiYmxvY2txdW90ZVwiXG4gICAgbGV0IGJvZHkgPSBKc3RyLnYgXCJib2R5XCJcbiAgICBsZXQgYnIgPSBKc3RyLnYgXCJiclwiXG4gICAgbGV0IGJ1dHRvbiA9IEpzdHIudiBcImJ1dHRvblwiXG4gICAgbGV0IGNhbnZhcyA9IEpzdHIudiBcImNhbnZhc1wiXG4gICAgbGV0IGNhcHRpb24gPSBKc3RyLnYgXCJjYXB0aW9uXCJcbiAgICBsZXQgY2l0ZSA9IEpzdHIudiBcImNpdGVcIlxuICAgIGxldCBjb2RlID0gSnN0ci52IFwiY29kZVwiXG4gICAgbGV0IGNvbCA9IEpzdHIudiBcImNvbFwiXG4gICAgbGV0IGNvbGdyb3VwID0gSnN0ci52IFwiY29sZ3JvdXBcIlxuICAgIGxldCBjb21tYW5kID0gSnN0ci52IFwiY29tbWFuZFwiXG4gICAgbGV0IGRhdGFsaXN0ID0gSnN0ci52IFwiZGF0YWxpc3RcIlxuICAgIGxldCBkZCA9IEpzdHIudiBcImRkXCJcbiAgICBsZXQgZGVsID0gSnN0ci52IFwiZGVsXCJcbiAgICBsZXQgZGV0YWlscyA9IEpzdHIudiBcImRldGFpbHNcIlxuICAgIGxldCBkZm4gPSBKc3RyLnYgXCJkZm5cIlxuICAgIGxldCBkaXYgPSBKc3RyLnYgXCJkaXZcIlxuICAgIGxldCBkbCA9IEpzdHIudiBcImRsXCJcbiAgICBsZXQgZHQgPSBKc3RyLnYgXCJkdFwiXG4gICAgbGV0IGVtID0gSnN0ci52IFwiZW1cIlxuICAgIGxldCBlbWJlZCA9IEpzdHIudiBcImVtYmVkXCJcbiAgICBsZXQgZmllbGRzZXQgPSBKc3RyLnYgXCJmaWVsZHNldFwiXG4gICAgbGV0IGZpZ2NhcHRpb24gPSBKc3RyLnYgXCJmaWdjYXB0aW9uXCJcbiAgICBsZXQgZmlndXJlID0gSnN0ci52IFwiZmlndXJlXCJcbiAgICBsZXQgZm9vdGVyID0gSnN0ci52IFwiZm9vdGVyXCJcbiAgICBsZXQgZm9ybSA9IEpzdHIudiBcImZvcm1cIlxuICAgIGxldCBoMSA9IEpzdHIudiBcImgxXCJcbiAgICBsZXQgaDIgPSBKc3RyLnYgXCJoMlwiXG4gICAgbGV0IGgzID0gSnN0ci52IFwiaDNcIlxuICAgIGxldCBoNCA9IEpzdHIudiBcImg0XCJcbiAgICBsZXQgaDUgPSBKc3RyLnYgXCJoNVwiXG4gICAgbGV0IGg2ID0gSnN0ci52IFwiaDZcIlxuICAgIGxldCBoZWFkID0gSnN0ci52IFwiaGVhZFwiXG4gICAgbGV0IGhlYWRlciA9IEpzdHIudiBcImhlYWRlclwiXG4gICAgbGV0IGhncm91cCA9IEpzdHIudiBcImhncm91cFwiXG4gICAgbGV0IGhyID0gSnN0ci52IFwiaHJcIlxuICAgIGxldCBodG1sID0gSnN0ci52IFwiaHRtbFwiXG4gICAgbGV0IGkgPSBKc3RyLnYgXCJpXCJcbiAgICBsZXQgaWZyYW1lID0gSnN0ci52IFwiaWZyYW1lXCJcbiAgICBsZXQgaW1nID0gSnN0ci52IFwiaW1nXCJcbiAgICBsZXQgaW5wdXQgPSBKc3RyLnYgXCJpbnB1dFwiXG4gICAgbGV0IGlucyA9IEpzdHIudiBcImluc1wiXG4gICAgbGV0IGtiZCA9IEpzdHIudiBcImtiZFwiXG4gICAgbGV0IGtleWdlbiA9IEpzdHIudiBcImtleWdlblwiXG4gICAgbGV0IGxhYmVsID0gSnN0ci52IFwibGFiZWxcIlxuICAgIGxldCBsZWdlbmQgPSBKc3RyLnYgXCJsZWdlbmRcIlxuICAgIGxldCBsaSA9IEpzdHIudiBcImxpXCJcbiAgICBsZXQgbGluayA9IEpzdHIudiBcImxpbmtcIlxuICAgIGxldCBtYXAgPSBKc3RyLnYgXCJtYXBcIlxuICAgIGxldCBtYXJrID0gSnN0ci52IFwibWFya1wiXG4gICAgbGV0IG1lbnUgPSBKc3RyLnYgXCJtZW51XCJcbiAgICBsZXQgbWV0YSA9IEpzdHIudiBcIm1ldGFcIlxuICAgIGxldCBtZXRlciA9IEpzdHIudiBcIm1ldGVyXCJcbiAgICBsZXQgbmF2ID0gSnN0ci52IFwibmF2XCJcbiAgICBsZXQgbm9zY3JpcHQgPSBKc3RyLnYgXCJub3NjcmlwdFwiXG4gICAgbGV0IG9iamVjdCcgPSBKc3RyLnYgXCJvYmplY3RcIlxuICAgIGxldCBvbCA9IEpzdHIudiBcIm9sXCJcbiAgICBsZXQgb3B0Z3JvdXAgPSBKc3RyLnYgXCJvcHRncm91cFwiXG4gICAgbGV0IG9wdGlvbiA9IEpzdHIudiBcIm9wdGlvblwiXG4gICAgbGV0IG91dHB1dCA9IEpzdHIudiBcIm91dHB1dFwiXG4gICAgbGV0IHAgPSBKc3RyLnYgXCJwXCJcbiAgICBsZXQgcGFyYW0gPSBKc3RyLnYgXCJwYXJhbVwiXG4gICAgbGV0IHByZSA9IEpzdHIudiBcInByZVwiXG4gICAgbGV0IHByb2dyZXNzID0gSnN0ci52IFwicHJvZ3Jlc3NcIlxuICAgIGxldCBxID0gSnN0ci52IFwicVwiXG4gICAgbGV0IHJwID0gSnN0ci52IFwicnBcIlxuICAgIGxldCBydCA9IEpzdHIudiBcInJ0XCJcbiAgICBsZXQgcnVieSA9IEpzdHIudiBcInJ1YnlcIlxuICAgIGxldCBzID0gSnN0ci52IFwic1wiXG4gICAgbGV0IHNhbXAgPSBKc3RyLnYgXCJzYW1wXCJcbiAgICBsZXQgc2NyaXB0ID0gSnN0ci52IFwic2NyaXB0XCJcbiAgICBsZXQgc2VjdGlvbiA9IEpzdHIudiBcInNlY3Rpb25cIlxuICAgIGxldCBzZWxlY3QgPSBKc3RyLnYgXCJzZWxlY3RcIlxuICAgIGxldCBzbWFsbCA9IEpzdHIudiBcInNtYWxsXCJcbiAgICBsZXQgc291cmNlID0gSnN0ci52IFwic291cmNlXCJcbiAgICBsZXQgc3BhbiA9IEpzdHIudiBcInNwYW5cIlxuICAgIGxldCBzdHJvbmcgPSBKc3RyLnYgXCJzdHJvbmdcIlxuICAgIGxldCBzdHlsZSA9IEpzdHIudiBcInN0eWxlXCJcbiAgICBsZXQgc3ViID0gSnN0ci52IFwic3ViXCJcbiAgICBsZXQgc3VtbWFyeSA9IEpzdHIudiBcInN1bW1hcnlcIlxuICAgIGxldCBzdXAgPSBKc3RyLnYgXCJzdXBcIlxuICAgIGxldCB0YWJsZSA9IEpzdHIudiBcInRhYmxlXCJcbiAgICBsZXQgdGJvZHkgPSBKc3RyLnYgXCJ0Ym9keVwiXG4gICAgbGV0IHRkID0gSnN0ci52IFwidGRcIlxuICAgIGxldCB0ZXh0YXJlYSA9IEpzdHIudiBcInRleHRhcmVhXCJcbiAgICBsZXQgdGZvb3QgPSBKc3RyLnYgXCJ0Zm9vdFwiXG4gICAgbGV0IHRoID0gSnN0ci52IFwidGhcIlxuICAgIGxldCB0aGVhZCA9IEpzdHIudiBcInRoZWFkXCJcbiAgICBsZXQgdGltZSA9IEpzdHIudiBcInRpbWVcIlxuICAgIGxldCB0aXRsZSA9IEpzdHIudiBcInRpdGxlXCJcbiAgICBsZXQgdHIgPSBKc3RyLnYgXCJ0clwiXG4gICAgbGV0IHRyYWNrID0gSnN0ci52IFwidHJhY2tcIlxuICAgIGxldCB1ID0gSnN0ci52IFwidVwiXG4gICAgbGV0IHVsID0gSnN0ci52IFwidWxcIlxuICAgIGxldCB2YXIgPSBKc3RyLnYgXCJ2YXJcIlxuICAgIGxldCB2aWRlbyA9IEpzdHIudiBcInZpZGVvXCJcbiAgICBsZXQgd2JyID0gSnN0ci52IFwid2JyXCJcbiAgZW5kXG5cbiAgdHlwZSBjb25zID0gID9kOmRvY3VtZW50IC0+ID9hdDpBdC50IGxpc3QgLT4gdCBsaXN0IC0+IHRcbiAgdHlwZSB2b2lkX2NvbnMgPSA/ZDpkb2N1bWVudCAtPiA/YXQ6QXQudCBsaXN0IC0+IHVuaXQgLT4gdFxuICBsZXQgY29ucyBuYW1lID9kID9hdCBjcyA9IHYgP2QgP2F0IG5hbWUgY3NcbiAgbGV0IHZvaWRfY29ucyBuYW1lID9kID9hdCAoKSA9IHYgP2QgP2F0IG5hbWUgW11cblxuICBsZXQgYSA9IGNvbnMgTmFtZS5hXG4gIGxldCBhYmJyID0gY29ucyBOYW1lLmFiYnJcbiAgbGV0IGFkZHJlc3MgPSBjb25zIE5hbWUuYWRkcmVzc1xuICBsZXQgYXJlYSA9IHZvaWRfY29ucyBOYW1lLmFyZWFcbiAgbGV0IGFydGljbGUgPSBjb25zIE5hbWUuYXJ0aWNsZVxuICBsZXQgYXNpZGUgPSBjb25zIE5hbWUuYXNpZGVcbiAgbGV0IGF1ZGlvID0gY29ucyBOYW1lLmF1ZGlvXG4gIGxldCBiID0gY29ucyBOYW1lLmJcbiAgbGV0IGJhc2UgPSB2b2lkX2NvbnMgTmFtZS5iYXNlXG4gIGxldCBiZGkgPSBjb25zIE5hbWUuYmRpXG4gIGxldCBiZG8gPSBjb25zIE5hbWUuYmRvXG4gIGxldCBibG9ja3F1b3RlID0gY29ucyBOYW1lLmJsb2NrcXVvdGVcbiAgbGV0IGJvZHkgPSBjb25zIE5hbWUuYm9keVxuICBsZXQgYnIgPSB2b2lkX2NvbnMgTmFtZS5iclxuICBsZXQgYnV0dG9uID0gY29ucyBOYW1lLmJ1dHRvblxuICBsZXQgY2FudmFzID0gY29ucyBOYW1lLmNhbnZhc1xuICBsZXQgY2FwdGlvbiA9IGNvbnMgTmFtZS5jYXB0aW9uXG4gIGxldCBjaXRlID0gY29ucyBOYW1lLmNpdGVcbiAgbGV0IGNvZGUgPSBjb25zIE5hbWUuY29kZVxuICBsZXQgY29sID0gdm9pZF9jb25zIE5hbWUuY29sXG4gIGxldCBjb2xncm91cCA9IGNvbnMgTmFtZS5jb2xncm91cFxuICBsZXQgY29tbWFuZCA9IGNvbnMgTmFtZS5jb21tYW5kXG4gIGxldCBkYXRhbGlzdCA9IGNvbnMgTmFtZS5kYXRhbGlzdFxuICBsZXQgZGQgPSBjb25zIE5hbWUuZGRcbiAgbGV0IGRlbCA9IGNvbnMgTmFtZS5kZWxcbiAgbGV0IGRldGFpbHMgPSBjb25zIE5hbWUuZGV0YWlsc1xuICBsZXQgZGZuID0gY29ucyBOYW1lLmRmblxuICBsZXQgZGl2ID0gY29ucyBOYW1lLmRpdlxuICBsZXQgZGwgPSBjb25zIE5hbWUuZGxcbiAgbGV0IGR0ID0gY29ucyBOYW1lLmR0XG4gIGxldCBlbSA9IGNvbnMgTmFtZS5lbVxuICBsZXQgZW1iZWQgPSB2b2lkX2NvbnMgTmFtZS5lbWJlZFxuICBsZXQgZmllbGRzZXQgPSBjb25zIE5hbWUuZmllbGRzZXRcbiAgbGV0IGZpZ2NhcHRpb24gPSBjb25zIE5hbWUuZmlnY2FwdGlvblxuICBsZXQgZmlndXJlID0gY29ucyBOYW1lLmZpZ3VyZVxuICBsZXQgZm9vdGVyID0gY29ucyBOYW1lLmZvb3RlclxuICBsZXQgZm9ybSA9IGNvbnMgTmFtZS5mb3JtXG4gIGxldCBoMSA9IGNvbnMgTmFtZS5oMVxuICBsZXQgaDIgPSBjb25zIE5hbWUuaDJcbiAgbGV0IGgzID0gY29ucyBOYW1lLmgzXG4gIGxldCBoNCA9IGNvbnMgTmFtZS5oNFxuICBsZXQgaDUgPSBjb25zIE5hbWUuaDVcbiAgbGV0IGg2ID0gY29ucyBOYW1lLmg2XG4gIGxldCBoZWFkID0gY29ucyBOYW1lLmhlYWRcbiAgbGV0IGhlYWRlciA9IGNvbnMgTmFtZS5oZWFkZXJcbiAgbGV0IGhncm91cCA9IGNvbnMgTmFtZS5oZ3JvdXBcbiAgbGV0IGhyID0gdm9pZF9jb25zIE5hbWUuaHJcbiAgbGV0IGh0bWwgPSBjb25zIE5hbWUuaHRtbFxuICBsZXQgaSA9IGNvbnMgTmFtZS5pXG4gIGxldCBpZnJhbWUgPSBjb25zIE5hbWUuaWZyYW1lXG4gIGxldCBpbWcgPSB2b2lkX2NvbnMgTmFtZS5pbWdcbiAgbGV0IGlucHV0ID0gdm9pZF9jb25zIE5hbWUuaW5wdXRcbiAgbGV0IGlucyA9IGNvbnMgTmFtZS5pbnNcbiAgbGV0IGtiZCA9IGNvbnMgTmFtZS5rYmRcbiAgbGV0IGtleWdlbiA9IGNvbnMgTmFtZS5rZXlnZW5cbiAgbGV0IGxhYmVsID0gY29ucyBOYW1lLmxhYmVsXG4gIGxldCBsZWdlbmQgPSBjb25zIE5hbWUubGVnZW5kXG4gIGxldCBsaSA9IGNvbnMgTmFtZS5saVxuICBsZXQgbGluayA9IHZvaWRfY29ucyBOYW1lLmxpbmtcbiAgbGV0IG1hcCA9IGNvbnMgTmFtZS5tYXBcbiAgbGV0IG1hcmsgPSBjb25zIE5hbWUubWFya1xuICBsZXQgbWVudSA9IGNvbnMgTmFtZS5tZW51XG4gIGxldCBtZXRhID0gdm9pZF9jb25zIE5hbWUubWV0YVxuICBsZXQgbWV0ZXIgPSBjb25zIE5hbWUubWV0ZXJcbiAgbGV0IG5hdiA9IGNvbnMgTmFtZS5uYXZcbiAgbGV0IG5vc2NyaXB0ID0gY29ucyBOYW1lLm5vc2NyaXB0XG4gIGxldCBvYmplY3QnID0gY29ucyBOYW1lLm9iamVjdCdcbiAgbGV0IG9sID0gY29ucyBOYW1lLm9sXG4gIGxldCBvcHRncm91cCA9IGNvbnMgTmFtZS5vcHRncm91cFxuICBsZXQgb3B0aW9uID0gY29ucyBOYW1lLm9wdGlvblxuICBsZXQgb3V0cHV0ID0gY29ucyBOYW1lLm91dHB1dFxuICBsZXQgcCA9IGNvbnMgTmFtZS5wXG4gIGxldCBwYXJhbSA9IHZvaWRfY29ucyBOYW1lLnBhcmFtXG4gIGxldCBwcmUgPSBjb25zIE5hbWUucHJlXG4gIGxldCBwcm9ncmVzcyA9IGNvbnMgTmFtZS5wcm9ncmVzc1xuICBsZXQgcSA9IGNvbnMgTmFtZS5xXG4gIGxldCBycCA9IGNvbnMgTmFtZS5ycFxuICBsZXQgcnQgPSBjb25zIE5hbWUucnRcbiAgbGV0IHJ1YnkgPSBjb25zIE5hbWUucnVieVxuICBsZXQgcyA9IGNvbnMgTmFtZS5zXG4gIGxldCBzYW1wID0gY29ucyBOYW1lLnNhbXBcbiAgbGV0IHNjcmlwdCA9IGNvbnMgTmFtZS5zY3JpcHRcbiAgbGV0IHNlY3Rpb24gPSBjb25zIE5hbWUuc2VjdGlvblxuICBsZXQgc2VsZWN0ID0gY29ucyBOYW1lLnNlbGVjdFxuICBsZXQgc21hbGwgPSBjb25zIE5hbWUuc21hbGxcbiAgbGV0IHNvdXJjZSA9IHZvaWRfY29ucyBOYW1lLnNvdXJjZVxuICBsZXQgc3BhbiA9IGNvbnMgTmFtZS5zcGFuXG4gIGxldCBzdHJvbmcgPSBjb25zIE5hbWUuc3Ryb25nXG4gIGxldCBzdHlsZSA9IGNvbnMgTmFtZS5zdHlsZVxuICBsZXQgc3ViID0gY29ucyBOYW1lLnN1YlxuICBsZXQgc3VtbWFyeSA9IGNvbnMgTmFtZS5zdW1tYXJ5XG4gIGxldCBzdXAgPSBjb25zIE5hbWUuc3VwXG4gIGxldCB0YWJsZSA9IGNvbnMgTmFtZS50YWJsZVxuICBsZXQgdGJvZHkgPSBjb25zIE5hbWUudGJvZHlcbiAgbGV0IHRkID0gY29ucyBOYW1lLnRkXG4gIGxldCB0ZXh0YXJlYSA9IGNvbnMgTmFtZS50ZXh0YXJlYVxuICBsZXQgdGZvb3QgPSBjb25zIE5hbWUudGZvb3RcbiAgbGV0IHRoID0gY29ucyBOYW1lLnRoXG4gIGxldCB0aGVhZCA9IGNvbnMgTmFtZS50aGVhZFxuICBsZXQgdGltZSA9IGNvbnMgTmFtZS50aW1lXG4gIGxldCB0aXRsZSA9IGNvbnMgTmFtZS50aXRsZVxuICBsZXQgdHIgPSBjb25zIE5hbWUudHJcbiAgbGV0IHRyYWNrID0gdm9pZF9jb25zIE5hbWUudHJhY2tcbiAgbGV0IHUgPSBjb25zIE5hbWUudVxuICBsZXQgdWwgPSBjb25zIE5hbWUudWxcbiAgbGV0IHZhciA9IGNvbnMgTmFtZS52YXJcbiAgbGV0IHZpZGVvID0gY29ucyBOYW1lLnZpZGVvXG4gIGxldCB3YnIgPSB2b2lkX2NvbnMgTmFtZS53YnJcbmVuZFxuXG5tb2R1bGUgUmFuZ2UgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSnYudFxuICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcblxuICB0eXBlIGNvbXBhcmVfaG93ID0gaW50XG4gIGxldCBlbmRfdG9fZW5kID0gSnYuSW50LmdldCBKdi5nbG9iYWwgXCJSYW5nZS5FTkRfVE9fRU5EXCJcbiAgbGV0IGVuZF90b19zdGFydCA9IEp2LkludC5nZXQgSnYuZ2xvYmFsIFwiUmFuZ2UuRU5EX1RPX1NUQVJUXCJcbiAgbGV0IHN0YXJ0X3RvX2VuZCA9IEp2LkludC5nZXQgSnYuZ2xvYmFsIFwiUmFuZ2UuU1RBUlRfVE9fRU5EXCJcbiAgbGV0IHN0YXJ0X3RvX3N0YXJ0ID0gSnYuSW50LmdldCBKdi5nbG9iYWwgXCJSYW5nZS5TVEFSVF9UT19TVEFSVFwiXG5cbiAgbGV0IHJhbmdlID0gSnYuZ2V0IEp2Lmdsb2JhbCBcIlJhbmdlXCJcbiAgbGV0IGNyZWF0ZSAoKSA9IEp2Lm5ldycgcmFuZ2UgW3x8XVxuICBsZXQgY2xvbmVfcmFuZ2UgciA9IEp2LmNhbGwgciBcImNsb25lUmFuZ2VcIiBbfHxdXG4gIGxldCBjb2xsYXBzZSByIGIgPSBpZ25vcmUgQEAgSnYuY2FsbCByIFwiY29sbGFwc2VcIiBKdi5bfG9mX2Jvb2wgYnxdXG4gIGxldCBjb2xsYXBzZV90b19zdGFydCByID0gY29sbGFwc2UgciB0cnVlXG4gIGxldCBjb2xsYXBzZV90b19lbmQgciA9IGNvbGxhcHNlIHIgZmFsc2VcblxuICBsZXQgY29tcGFyZV9ib3VuZGFyeV9wb2ludHMgciBob3cgcicgPVxuICAgIEp2LnRvX2ludCBAQCBKdi5jYWxsIHIgXCJjb21wYXJlQm91bmRhcnlQb2ludHNcIiBbfEp2Lm9mX2ludCBob3c7IHInfF1cblxuICBsZXQgY29tcGFyZV9wb2ludCByIGVsIG9mZnNldCA9XG4gICAgSnYudG9faW50IEBAIEp2LmNhbGwgciBcImNvbXBhcmVQb2ludFwiIFt8RWwudG9fanYgZWw7IEp2Lm9mX2ludCBvZmZzZXR8XVxuXG4gICgqICBsZXQgY3JlYXRlX2NvbnRleHR1YWxfZnJhZ21lbnQgciA9IGZhaWx3aXRoIFwiY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50XCIgKilcblxuICBsZXQgZGVsZXRlX2NvbnRlbnRzIHIgPSBpZ25vcmUgQEAgSnYuY2FsbCByIFwiZGVsZXRlQ29udGVudHNcIiBbfHxdXG4gICgqXG4gIGxldCBleHRyYWN0X2NvbnRlbnRzIHIgPSBmYWlsd2l0aCBcImV4dHJhY3RDb250ZW50c1wiXG4gIGxldCBnZXRfYm91bmRpbmdfY2xpZW50X3JlY3QgciA9IGZhaWx3aXRoIFwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0XCJcbiAgbGV0IGdldF9jbGllbnRfcmVjdHMgciA9IGZhaWx3aXRoIFwiZ2V0Q2xpZW50UmVjdHNcIiAqKVxuXG4gIGxldCBpbnNlcnRfbm9kZSByIGVsID0gaWdub3JlIEBAIEp2LmNhbGwgciBcImluc2VydE5vZGVcIiBbfEVsLnRvX2p2IGVsfF1cbiAgbGV0IGludGVyc2VjdHNfbm9kZSByIGVsID1cbiAgICBKdi50b19ib29sIEBAIEp2LmNhbGwgciBcImludGVyc2VjdHNOb2RlXCIgW3xFbC50b19qdiBlbHxdXG5cbiAgbGV0IGlzX3BvaW50X2luX3JhbmdlIHIgZWwgb2Zmc2V0ID1cbiAgICBKdi50b19ib29sIEBAIEp2LmNhbGwgciBcImlzUG9pbnRJblJhbmdlXCIgW3xFbC50b19qdiBlbDsgSnYub2ZfaW50IG9mZnNldHxdXG5cbiAgbGV0IHNlbGVjdF9ub2RlIHIgZWwgPSBpZ25vcmUgQEAgSnYuY2FsbCByIFwic2VsZWN0Tm9kZVwiIFt8RWwudG9fanYgZWx8XVxuXG4gIGxldCBzZWxlY3Rfbm9kZV9jb250ZW50cyByIGVsID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCByIFwic2VsZWN0Tm9kZUNvbnRlbnRzXCIgW3xFbC50b19qdiBlbHxdXG5cbiAgbGV0IHNldF9lbmQgciBlbCBvZmZzZXQgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIHIgXCJzZXRFbmRcIiBbfEVsLnRvX2p2IGVsOyBKdi5vZl9pbnQgb2Zmc2V0fF1cblxuICBsZXQgc2V0X2VuZF9hZnRlciByIGVsID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCByIFwic2V0RW5kQWZ0ZXJcIiBbfEVsLnRvX2p2IGVsfF1cblxuICBsZXQgc2V0X2VuZF9iZWZvcmUgciBlbCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgciBcInNldEVuZEJlZm9yZVwiIFt8RWwudG9fanYgZWx8XVxuXG4gIGxldCBzZXRfc3RhcnQgciBlbCBvZmZzZXQgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIHIgXCJzZXRTdGFydFwiIFt8RWwudG9fanYgZWw7IEp2Lm9mX2ludCBvZmZzZXR8XVxuXG4gIGxldCBzZXRfc3RhcnRfYWZ0ZXIgciBlbCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgciBcInNldFN0YXJ0QWZ0ZXJcIiBbfEVsLnRvX2p2IGVsfF1cblxuICBsZXQgc2V0X3N0YXJ0X2JlZm9yZSByIGVsID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCByIFwic2V0U3RhcnRCZWZvcmVcIiBbfEVsLnRvX2p2IGVsfF1cblxuICBsZXQgc3Vycm91bmRfY29udGVudHMgciBlbCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgciBcInN1cnJvdW5kQ29udGVudHNcIiBbfEVsLnRvX2p2IGVsfF1cblxuICBsZXQgdG9fc3RyaW5nIHIgPSBKdi50b19qc3RyIEBAIEp2LmNhbGwgciBcInRvU3RyaW5nXCIgW3x8XVxuXG4gICgqIFByb3BlcnRpZXMgKilcblxuICBsZXQgY29sbGFwc2VkIHIgPSBKdi5Cb29sLmdldCByIFwiY29sbGFwc2VkXCJcbiAgbGV0IGNvbW1vbl9hbmNlc3Rvcl9jb250YWluZXIgciA9XG4gICAgRWwub2ZfanYgKEp2LmdldCByIFwiY29tbW9uQW5jZXN0b3JDb250YWluZXJcIilcblxuICBsZXQgZW5kX2NvbnRhaW5lciByID0gRWwub2ZfanYgKEp2LmdldCByIFwiZW5kQ29udGFpbmVyXCIpXG4gIGxldCBlbmRfb2Zmc2V0IHIgPSBKdi5JbnQuZ2V0IHIgXCJlbmRPZmZzZXRcIlxuICBsZXQgc3RhcnRfY29udGFpbmVyIHIgPSBFbC5vZl9qdiAoSnYuZ2V0IHIgXCJzdGFydENvbnRhaW5lclwiKVxuICBsZXQgc3RhcnRfb2Zmc2V0IHIgPSBKdi5JbnQuZ2V0IHIgXCJzYXJ0T2Zmc2V0XCJcbmVuZFxuXG5cbm1vZHVsZSBEb2N1bWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPSBFbC5kb2N1bWVudFxuICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcblxuICBsZXQgYXNfdGFyZ2V0IGQgPSBkXG5cbiAgKCogRWxlbWVudHMgKilcblxuICBsZXQgcm9vdCBkID0gRWwub2ZfanYgKEp2LmdldCBkIFwiZG9jdW1lbnRFbGVtZW50XCIpXG4gIGxldCBib2R5IGQgPVxuICAgIGxldCBiID0gSnYuZ2V0IGQgXCJib2R5XCIgaW5cbiAgICBpZiBKdi5pc19zb21lIGIgdGhlbiBFbC5vZl9qdiBiIGVsc2VcbiAgICBsZXQgZXJyID0gXCJEb2N1bWVudCBib2R5IGlzIG51bGwuIFRyeSB0byBkZWZlciB5b3VyIHNjcmlwdCBleGVjdXRpb24uXCIgIGluXG4gICAgSnYudGhyb3cgKEpzdHIudiBlcnIpXG5cbiAgbGV0IGhlYWQgZCA9IEVsLm9mX2p2IChKdi5nZXQgZCBcImhlYWRcIilcbiAgbGV0IGFjdGl2ZV9lbCBkID0gSnYudG9fb3B0aW9uIEVsLm9mX2p2IChKdi5nZXQgZCBcImFjdGl2ZUVsZW1lbnRcIilcblxuICBsZXQgZmluZF9lbF9ieV9pZCBkIGlkID1cbiAgICBKdi50b19vcHRpb24gRWwub2ZfanYgKEp2LmNhbGwgZCBcImdldEVsZW1lbnRCeUlkXCIgW3wgSnYub2ZfanN0ciBpZCB8XSlcblxuICBsZXQgZmluZF9lbHNfYnlfbmFtZSBkIG4gPVxuICAgIEVsLmVsX2xpc3Rfb2Zfbm9kZV9saXN0IChKdi5jYWxsIGQgXCJnZXRFbGVtZW50c0J5TmFtZVwiIFt8IEp2Lm9mX2pzdHIgbiB8XSlcblxuICAoKiBQcm9wZXJ0aWVzICopXG5cbiAgbGV0IHJlZmVycmVyIGQgPSBKdi5Kc3RyLmdldCBkIFwicmVmZXJyZXJcIlxuICBsZXQgdGl0bGUgZCA9IEp2LkpzdHIuZ2V0IGQgXCJ0aXRsZVwiXG4gIGxldCBzZXRfdGl0bGUgZCB0ID0gSnYuSnN0ci5zZXQgZCBcInRpdGxlXCIgdFxuXG4gIG1vZHVsZSBWaXNpYmlsaXR5X3N0YXRlID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSnN0ci50XG4gICAgbGV0IGhpZGRlbiA9IEpzdHIudiBcImhpZGRlblwiXG4gICAgbGV0IHZpc2libGUgPSBKc3RyLnYgXCJ2aXNpYmxlXCJcbiAgZW5kXG5cbiAgbGV0IHZpc2liaWxpdHlfc3RhdGUgZCA9IEp2LkpzdHIuZ2V0IGQgXCJ2aXNpYmlsaXR5U3RhdGVcIlxuXG4gICgqIFBvaW50ZXIgbG9jayAqKVxuXG4gIGxldCBwb2ludGVyX2xvY2tfZWxlbWVudCBkID1cbiAgICBKdi50b19vcHRpb24gRWwub2ZfanYgQEAgSnYuZ2V0IGQgXCJwb2ludGVyTG9ja0VsZW1lbnRcIlxuXG4gIGxldCBleGl0X3BvaW50ZXJfbG9jayBkID1cbiAgICBsZXQgZnV0ID0gRXYubmV4dCBFdi5wb2ludGVybG9ja2NoYW5nZSAoYXNfdGFyZ2V0IGQpIGluXG4gICAgaWdub3JlIEBAIEp2LmNhbGwgZCBcImV4aXRQb2ludGVyTG9ja1wiIFt8fF07XG4gICAgZnV0XG5cbiAgKCogRnVsbHNjcmVlbiAqKVxuXG4gIGxldCBmdWxsc2NyZWVuX2F2YWlsYWJsZSBkID0gSnYuQm9vbC5nZXQgZCBcImZ1bGxzY3JlZW5FbmFibGVkXCJcbiAgbGV0IGZ1bGxzY3JlZW5fZWxlbWVudCBkID1cbiAgICBKdi50b19vcHRpb24gRWwub2ZfanYgQEAgSnYuZ2V0IGQgXCJmdWxsc2NyZWVuRWxlbWVudFwiXG5cbiAgbGV0IGV4aXRfZnVsbHNjcmVlbiBkID1cbiAgICBGdXQub2ZfcHJvbWlzZSB+b2s6aWdub3JlIEBAIEp2LmNhbGwgZCBcImV4aXRGdWxsc2NyZWVuXCIgW3x8XVxuZW5kXG5cbigqIEJyb3dzZXIgaW50ZXJhY3Rpb24gKilcblxubW9kdWxlIEFib3J0ID0gc3RydWN0XG4gIG1vZHVsZSBTaWduYWwgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKdi50XG4gICAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG4gICAgZXh0ZXJuYWwgYXNfdGFyZ2V0IDogdCAtPiBFdi50YXJnZXQgPSBcIiVpZGVudGl0eVwiXG4gICAgbGV0IGFib3J0ZWQgcyA9IEp2LkJvb2wuZ2V0IHMgXCJhYm9ydGVkXCJcbiAgICBsZXQgYWJvcnQgPSBFdi5UeXBlLnZvaWQgKEpzdHIudiBcImFib3J0XCIpXG4gIGVuZFxuICB0eXBlIHQgPSBKdi50XG4gIGluY2x1ZGUgKEp2LklkIDogSnYuQ09OViB3aXRoIHR5cGUgdCA6PSB0KVxuICBsZXQgY29udHJvbGxlciAoKSA9IEp2Lm5ldycgKEp2LmdldCBKdi5nbG9iYWwgXCJBYm9ydENvbnRyb2xsZXJcIikgW3x8XVxuICBsZXQgc2lnbmFsIGMgPSBTaWduYWwub2ZfanYgKEp2LmdldCBjIFwic2lnbmFsXCIpXG4gIGxldCBhYm9ydCBjID0gaWdub3JlIEBAIEp2LmNhbGwgYyBcImFib3J0XCIgW3x8XVxuZW5kXG5cbm1vZHVsZSBDb25zb2xlID0gc3RydWN0XG4gIHR5cGUgdCA9IEp2LnRcbiAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG4gIGxldCBjYWxsIGMgbWV0aCBhcmdzID0gaWdub3JlIChKdi5jYWxsIGMgbWV0aCBhcmdzKVxuXG4gIGxldCBjID0gcmVmIChKdi5nZXQgSnYuZ2xvYmFsIFwiY29uc29sZVwiKVxuICBsZXQgZ2V0ICgpID0gIWNcbiAgbGV0IHNldCBuID0gYyA6PSBuXG4gIGxldCBjbGVhciAoKSA9IGNhbGwgIWMgXCJjbGVhclwiIFt8fF1cblxuICAoKiBMb2cgZnVuY3Rpb25zICopXG5cbiAgdHlwZSBtc2cgPSBbXSA6IG1zZyB8ICggOjogKSA6ICdhICogbXNnIC0+IG1zZ1xuICB0eXBlICdhIG1zZ3IgPSAnYSAtPiBtc2dcbiAgbGV0IG1zZyB2ID0gW3ZdXG4gIGxldCBzdHIgdiA9XG4gICAgbGV0IHYgPSBKdi5yZXByIHYgaW5cbiAgICBpZiBKdi5pc19udWxsIHYgdGhlbiBKc3RyLnYgXCJudWxsXCIgZWxzZVxuICAgIGlmIEp2LmlzX3VuZGVmaW5lZCB2IHRoZW4gSnN0ci52IFwidW5kZWZpbmVkXCIgZWxzZVxuICAgIEp2LnRvX2pzdHIgQEAgSnYuY2FsbCB2IFwidG9TdHJpbmdcIiBbfHxdXG5cbiAgbGV0IG1zZ190b19qdl9hcnJheSBtc2cgPVxuICAgIGxldCByZWMgbG9vcCBhIGkgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYVxuICAgIHwgdiA6OiB2cyAtPiBKdi5KYXJyYXkuc2V0IGEgaSAoSnYucmVwciB2KTsgbG9vcCBhIChpICsgMSkgdnNcbiAgICBpblxuICAgIEp2LnRvX2p2X2FycmF5IEBAIGxvb3AgKEp2LkphcnJheS5jcmVhdGUgMCkgMCBtc2dcblxuICB0eXBlIGxvZyA9IG1zZyAtPiB1bml0XG5cbiAgKCogTGV2ZWxsZWQgbG9nZ2luZyAqKVxuXG4gIGxldCBsb2cgbXNnID0gY2FsbCAhYyBcImxvZ1wiIChtc2dfdG9fanZfYXJyYXkgbXNnKVxuICBsZXQgdHJhY2UgbXNnID0gY2FsbCAhYyBcInRyYWNlXCIgKG1zZ190b19qdl9hcnJheSBtc2cpXG4gIGxldCBlcnJvciBtc2cgPSBjYWxsICFjIFwiZXJyb3JcIiAobXNnX3RvX2p2X2FycmF5IG1zZylcbiAgbGV0IHdhcm4gbXNnID0gY2FsbCAhYyBcIndhcm5cIiAobXNnX3RvX2p2X2FycmF5IG1zZylcbiAgbGV0IGluZm8gbXNnID0gY2FsbCAhYyBcImluZm9cIiAobXNnX3RvX2p2X2FycmF5IG1zZylcbiAgbGV0IGRlYnVnIG1zZyA9IGNhbGwgIWMgXCJkZWJ1Z1wiIChtc2dfdG9fanZfYXJyYXkgbXNnKVxuXG4gICgqIEFzc2VydGluZyBhbmQgZHVtcGluZyAqKVxuXG4gIGxldCBhc3NlcnQnIGIgbXNnID0gY2FsbCAhYyBcImFzc2VydFwiIChtc2dfdG9fanZfYXJyYXkgKEp2Lm9mX2Jvb2wgYiA6OiBtc2cpKVxuICBsZXQgZGlyIG8gPSBjYWxsICFjIFwiZGlyXCIgW3xKdi5yZXByIG98XVxuICBsZXQgdGFibGUgP2NvbHMgdiA9XG4gICAgbGV0IG1zZyA9IG1hdGNoIGNvbHMgd2l0aFxuICAgIHwgTm9uZSAtPiBbfEp2LnJlcHIgdnxdIHwgU29tZSBsIC0+IFt8SnYucmVwciB2OyBKdi5vZl9qc3RyX2xpc3QgbHxdXG4gICAgaW5cbiAgICBjYWxsICFjIFwidGFibGVcIiBtc2dcblxuICAoKiBHcm91cGluZyAqKVxuXG4gIGxldCBncm91cF9lbmQgKCkgPSBjYWxsICFjIFwiZ3JvdXBFbmRcIiBbfHxdXG4gIGxldCBncm91cCA/KGNsb3NlZCA9IGZhbHNlKSBtc2cgPSBtYXRjaCBjbG9zZWQgd2l0aFxuICB8IGZhbHNlIC0+IGNhbGwgIWMgXCJncm91cFwiIChtc2dfdG9fanZfYXJyYXkgbXNnKVxuICB8IHRydWUgLT4gY2FsbCAhYyBcImdyb3VwQ29sbGFwc2VkXCIgKG1zZ190b19qdl9hcnJheSBtc2cpXG5cbiAgKCogQ291bnRpbmcgKilcblxuICBsZXQgY291bnQgbGFiZWwgPSBjYWxsICFjIFwiY291bnRcIiBbfEp2Lm9mX2pzdHIgbGFiZWx8XVxuICBsZXQgY291bnRfcmVzZXQgbGFiZWwgPSBjYWxsICFjIFwiY291bnRSZXNldFwiIFt8SnYub2ZfanN0ciBsYWJlbHxdXG5cbiAgKCogVGltaW5nICopXG5cbiAgbGV0IHRpbWUgbGFiZWwgPSBjYWxsICFjIFwidGltZVwiIFt8IEp2Lm9mX2pzdHIgbGFiZWwgfF1cbiAgbGV0IHRpbWVfbG9nIGxhYmVsIG1zZyA9IGNhbGwgIWMgXCJ0aW1lTG9nXCIgKG1zZ190b19qdl9hcnJheSAobGFiZWwgOjogbXNnKSlcbiAgbGV0IHRpbWVfZW5kIGxhYmVsID0gY2FsbCAhYyBcInRpbWVFbmRcIiBbfCBKdi5vZl9qc3RyIGxhYmVsIHxdXG5cbiAgKCogUHJvZmlsaW5nICopXG5cbiAgbGV0IHByb2ZpbGUgbGFiZWwgPSBjYWxsICFjIFwicHJvZmlsZVwiIFt8SnYucmVwciBsYWJlbHxdXG4gIGxldCBwcm9maWxlX2VuZCBsYWJlbCA9IGNhbGwgIWMgXCJwcm9maWxlRW5kXCIgW3xKdi5yZXByIGxhYmVsfF1cbiAgbGV0IHRpbWVfc3RhbXAgbGFiZWwgPSBjYWxsICFjIFwidGltZVN0YW1wXCIgW3wgSnYub2ZfanN0ciBsYWJlbCB8XVxuXG4gICgqIFJlc3VsdCBsb2dnaW5nICopXG5cbiAgbGV0IGxvZ19yZXN1bHQgPyhvayA9IGZ1biB2IC0+IFt2XSkgP2Vycm9yOihlcnIgPSBmdW4gZSAtPiBbc3RyIGVdKSByID1cbiAgICAobWF0Y2ggciB3aXRoIE9rIHYgLT4gbG9nIChvayB2KSB8IEVycm9yIGUgLT4gZXJyb3IgKGVyciBlKSk7XG4gICAgclxuXG4gIGxldCBsb2dfaWZfZXJyb3IgPyhsID0gZXJyb3IpID8oZXJyb3JfbXNnID0gZnVuIGUgLT4gW3N0ciBlXSkgfnVzZSA9IGZ1bmN0aW9uXG4gIHwgT2sgdiAtPiB2IHwgRXJyb3IgZSAtPiBsIChlcnJvcl9tc2cgZSk7IHVzZVxuXG4gIGxldCBsb2dfaWZfZXJyb3InID9sID9lcnJvcl9tc2cgfnVzZSByID1cbiAgICBPayAobG9nX2lmX2Vycm9yID9sID9lcnJvcl9tc2cgfnVzZSByKVxuZW5kXG5cbm1vZHVsZSBXaW5kb3cgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gRWwud2luZG93XG4gIGluY2x1ZGUgKEp2LklkIDogSnYuQ09OViB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gIGxldCBhc190YXJnZXQgdyA9IEV2LnRhcmdldF9vZl9qdiB3XG5cbiAgbGV0IGNsb3NlZCB3ID0gSnYuQm9vbC5nZXQgdyBcImNsb3NlZFwiXG4gIGxldCBzY3JvbGxfeCB3ID0gSnYuRmxvYXQuZ2V0IHcgXCJzY3JvbGxYXCJcbiAgbGV0IHNjcm9sbF95IHcgPSBKdi5GbG9hdC5nZXQgdyBcInNjcm9sbFlcIlxuXG4gIGxldCBpbm5lcl93aWR0aCB3ID0gSnYuSW50LmdldCB3IFwiaW5uZXJXaWR0aFwiXG4gIGxldCBpbm5lcl9oZWlnaHQgdyA9IEp2LkludC5nZXQgdyBcImlubmVySGVpZ2h0XCJcblxuICBsZXQgcGFyZW50IHcgPVxuICAgIGxldCBwID0gSnYuZ2V0IHcgXCJwYXJlbnRcIiBpblxuICAgIGlmIHAgPT0gdyB0aGVuIE5vbmUgZWxzZSBTb21lIHBcblxuICAoKiBNZWRpYSBwcm9wZXJ0aWVzICopXG5cbiAgbGV0IGRldmljZV9waXhlbF9yYXRpbyB3ID0gSnYuRmxvYXQuZ2V0IHcgXCJkZXZpY2VQaXhlbFJhdGlvXCJcbiAgbGV0IG1hdGNoZXNfbWVkaWEgdyBzID1cbiAgICBsZXQgbyA9IEp2LmNhbGwgdyBcIm1hdGNoTWVkaWFcIiBbfEp2Lm9mX2pzdHIgc3xdIGluXG4gICAgSnYuQm9vbC5nZXQgbyBcIm1hdGNoZXNcIlxuXG4gIGxldCBwcmVmZXJzX2RhcmtfY29sb3Jfc2NoZW1lIHcgPVxuICAgIG1hdGNoZXNfbWVkaWEgdyAoSnN0ci52IFwiKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKVwiKVxuXG4gICgqIE9wZXJhdGlvbnMgKilcblxuICBsZXQgb3BlbicgPyhmZWF0dXJlcyA9IEpzdHIuZW1wdHkpID8obmFtZSA9IEpzdHIuZW1wdHkpIHcgdSA9XG4gICAgSnYudG9fb3B0aW9uIG9mX2p2IEBAXG4gICAgICBKdi5jYWxsIHcgXCJvcGVuXCIgW3xKdi5vZl9qc3RyIHU7IEp2Lm9mX2pzdHIgbmFtZTsgSnYub2ZfanN0ciBmZWF0dXJlc3xdXG5cbiAgbGV0IGNsb3NlIHcgPSBpZ25vcmUgKEp2LmNhbGwgdyBcImNsb3NlXCIgW3x8XSlcbiAgbGV0IHByaW50IHcgPSBpZ25vcmUgKEp2LmNhbGwgdyBcInByaW50XCIgW3x8XSlcbiAgbGV0IHJlbG9hZCB3ID0gaWdub3JlIChKdi5jYWxsIChKdi5nZXQgdyBcImxvY2F0aW9uXCIpIFwicmVsb2FkXCIgW3x8XSlcblxuICAoKiBMb2NhdGlvbiBhbmQgaGlzdG9yeSAqKVxuXG4gIGxldCBsb2NhdGlvbiB3ID0gSnYubmV3JyBVcmkudXJsIFt8IEp2LmdldCB3IFwibG9jYXRpb25cIiB8XVxuICBsZXQgc2V0X2xvY2F0aW9uIHcgdSA9IEp2LnNldCB3IFwibG9jYXRpb25cIiAoVXJpLnRvX2p2IHUpXG5cbiAgbW9kdWxlIEhpc3RvcnkgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU2Nyb2xsX3Jlc3RvcmF0aW9uID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBKc3RyLnRcbiAgICAgIGxldCBhdXRvID0gSnN0ci52IFwiYXV0b1wiXG4gICAgICBsZXQgbWFudWFsID0gSnN0ci52IFwibWFudWFsXCJcbiAgICBlbmRcbiAgICB0eXBlIHQgPSBKdi50XG4gICAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG4gICAgbGV0IGxlbmd0aCBoID0gSnYuSW50LmdldCBoIFwibGVuZ3RoXCJcbiAgICBsZXQgc2Nyb2xsX3Jlc3RvcmF0aW9uIGggPSBKdi5Kc3RyLmdldCBoIFwic2Nyb2xsUmVzdG9yYXRpb25cIlxuICAgIGxldCBzZXRfc2Nyb2xsX3Jlc3RvcmF0aW9uIGggciA9IEp2LkpzdHIuc2V0IGggXCJzY3JvbGxSZXN0b3JhdGlvblwiIHJcblxuICAgICgqIE1vdmluZyBpbiBoaXN0b3J5ICopXG5cbiAgICBsZXQgYmFjayBoID0gaWdub3JlIEBAIEp2LmNhbGwgaCBcImJhY2tcIiBbfHxdXG4gICAgbGV0IGZvcndhcmQgaCA9IGlnbm9yZSBAQCBKdi5jYWxsIGggXCJmb3J3YXJkXCIgW3x8XVxuICAgIGxldCBnbyBoIGQgPSBpZ25vcmUgQEAgSnYuY2FsbCBoIFwiZ29cIiBKdi5bfCBvZl9pbnQgZCB8XVxuXG4gICAgKCogTWFraW5nIGhpc3RvcnkgKilcblxuICAgIHR5cGUgc3RhdGUgPSBKdi50XG4gICAgbGV0IHN0YXRlIGggPSBKdi5nZXQgaCBcInN0YXRlXCJcbiAgICBsZXQgcHVzaF9zdGF0ZSA/KHN0YXRlID0gSnYubnVsbCkgPyh0aXRsZSA9IEpzdHIuZW1wdHkpID8odXJpID0gSnYubnVsbCkgaCA9XG4gICAgICBpZ25vcmUgQEAgSnYuY2FsbCBoIFwicHVzaFN0YXRlXCIgW3xzdGF0ZTsgSnYub2ZfanN0ciB0aXRsZTsgdXJpfF1cblxuICAgIGxldCByZXBsYWNlX3N0YXRlXG4gICAgICAgID8oc3RhdGUgPSBKdi5udWxsKSA/KHRpdGxlID0gSnN0ci5lbXB0eSkgPyh1cmkgPSBKdi5udWxsKSBoXG4gICAgICA9XG4gICAgICBpZ25vcmUgQEAgSnYuY2FsbCBoIFwicmVwbGFjZVN0YXRlXCIgW3xzdGF0ZTsgSnYub2ZfanN0ciB0aXRsZTsgdXJpfF1cblxuICAgICgqIEV2ZW50ICopXG5cbiAgICBtb2R1bGUgRXYgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBQb3BzdGF0ZSA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBKdi50XG4gICAgICAgIGxldCBzdGF0ZSBlID0gSnYuZ2V0IGUgXCJzdGF0ZVwiXG4gICAgICBlbmRcbiAgICAgIGxldCBwb3BzdGF0ZSA9IEV2LlR5cGUuY3JlYXRlIChKc3RyLnYgXCJwb3BzdGF0ZVwiKVxuICAgIGVuZFxuICBlbmRcblxuICBsZXQgaGlzdG9yeSB3ID0gSGlzdG9yeS5vZl9qdiBAQCBKdi5nZXQgdyBcImhpc3RvcnlcIlxuZW5kXG5cbm1vZHVsZSBOYXZpZ2F0b3IgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSnYudFxuICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcblxuICBsZXQgbGFuZ3VhZ2VzIG4gPSBtYXRjaCBKdi5maW5kIG4gXCJsYW5ndWFnZXNcIiB3aXRoXG4gIHwgU29tZSBhIC0+IEp2LnRvX2pzdHJfbGlzdCBhXG4gIHwgTm9uZSAtPlxuICAgICAgbWF0Y2ggSnYuSnN0ci5maW5kIG4gXCJsYW5ndWFnZVwiIHdpdGhcbiAgICAgIHwgU29tZSB2IC0+IFt2XSB8IE5vbmUgLT4gW11cblxuICBsZXQgbWF4X3RvdWNoX3BvaW50cyBuID1cbiAgICBsZXQgdCA9IEp2LmdldCBuIFwibWF4VG91Y2hQb2ludHNcIiBpblxuICAgIGlmIEp2LmlzX25vbmUgdCB0aGVuIDAgZWxzZSBKdi50b19pbnQgdFxuXG4gIGxldCBvbmxpbmUgbiA9IEp2LkJvb2wuZ2V0IG4gXCJvbkxpbmVcIlxuZW5kXG5cbm1vZHVsZSBQZXJmb3JtYW5jZSA9IHN0cnVjdFxuICBtb2R1bGUgRW50cnkgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVHlwZSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gSnN0ci50XG4gICAgICBsZXQgZnJhbWUgPSBKc3RyLnYgXCJmcmFtZVwiXG4gICAgICBsZXQgbmF2aWdhdGlvbiA9IEpzdHIudiBcIm5hdmlnYXRpb25cIlxuICAgICAgbGV0IHJlc291cmNlID0gSnN0ci52IFwicmVzb3VyY2VcIlxuICAgICAgbGV0IG1hcmsgPSBKc3RyLnYgXCJtYXJrXCJcbiAgICAgIGxldCBtZWFzdXJlID0gSnN0ci52IFwibWVhc3VyZVwiXG4gICAgICBsZXQgcGFpbnQgPSBKc3RyLnYgXCJwYWludFwiXG4gICAgICBsZXQgbG9uZ3Rhc2sgPSBKc3RyLnYgXCJsb25ndGFza1wiXG4gICAgZW5kXG4gICAgdHlwZSB0ID0gSnYudFxuICAgIHR5cGUgZW50cnkgPSB0XG4gICAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG4gICAgbGV0IG5hbWUgZSA9IEp2LkpzdHIuZ2V0IGUgXCJuYW1lXCJcbiAgICBsZXQgdHlwZScgZSA9IEp2LkpzdHIuZ2V0IGUgXCJlbnRyeVR5cGVcIlxuICAgIGxldCBzdGFydF90aW1lIGUgPSBKdi5GbG9hdC5nZXQgZSBcInN0YXJ0VGltZVwiXG4gICAgbGV0IGVuZF90aW1lIGUgPSBKdi5GbG9hdC5nZXQgZSBcImVuZFRpbWVcIlxuICAgIGxldCBkdXJhdGlvbiBlID0gSnYuRmxvYXQuZ2V0IGUgXCJkdXJhdGlvblwiXG4gICAgbGV0IHRvX2pzb24gZSA9IEp2LmNhbGwgZSBcInRvSlNPTlwiIFt8fF1cblxuICAgIG1vZHVsZSBSZXNvdXJjZV90aW1pbmcgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEp2LnRcbiAgICAgIGluY2x1ZGUgKEp2LklkIDogSnYuQ09OViB3aXRoIHR5cGUgdCA6PSB0KVxuICAgICAgbGV0IGFzX2VudHJ5ID0gRnVuLmlkXG4gICAgICBsZXQgaW5pdGlhdG9yX3R5cGUgZSA9IEp2LkpzdHIuZ2V0IGUgXCJpbml0aWF0b3JUeXBlXCJcbiAgICAgIGxldCBuZXh0X2hvcF9wcm90b2NvbCBlID0gSnYuSnN0ci5nZXQgZSBcIm5leHRIb3BQcm90b2NvbFwiXG4gICAgICBsZXQgd29ya2VyX3N0YXJ0IGUgPSBKdi5GbG9hdC5nZXQgZSBcIndvcmtlclN0YXJ0XCJcbiAgICAgIGxldCByZWRpcmVjdF9zdGFydCBlID0gSnYuRmxvYXQuZ2V0IGUgXCJyZWRpcmVjdFN0YXJ0XCJcbiAgICAgIGxldCByZWRpcmVjdF9lbmQgZSA9IEp2LkZsb2F0LmdldCBlIFwicmVkaXJlY3RFbmRcIlxuICAgICAgbGV0IGZldGNoX3N0YXJ0IGUgPSBKdi5GbG9hdC5nZXQgZSBcImZldGNoU3RhcnRcIlxuICAgICAgbGV0IGRvbWFpbl9sb29rdXBfc3RhcnQgZSA9IEp2LkZsb2F0LmdldCBlIFwiZG9tYWluTG9va3VwU3RhcnRcIlxuICAgICAgbGV0IGRvbWFpbl9sb29rdXBfZW5kIGUgPSBKdi5GbG9hdC5nZXQgZSBcImRvbWFpbkxvb2t1cEVuZFwiXG4gICAgICBsZXQgY29ubmVjdF9zdGFydCBlID0gSnYuRmxvYXQuZ2V0IGUgXCJjb25uZWN0U3RhcnRcIlxuICAgICAgbGV0IGNvbm5lY3RfZW5kIGUgPSBKdi5GbG9hdC5nZXQgZSBcImNvbm5lY3RFbmRcIlxuICAgICAgbGV0IHNlY3VyZV9jb25uZWN0aW9uX3N0YXJ0IGUgPSBKdi5GbG9hdC5nZXQgZSBcInNlY3VyZUNvbm5lY3Rpb25TdGFydFwiXG4gICAgICBsZXQgcmVxdWVzdF9zdGFydCBlID0gSnYuRmxvYXQuZ2V0IGUgXCJyZXF1ZXN0U3RhcnRcIlxuICAgICAgbGV0IHJlc3BvbnNlX3N0YXJ0IGUgPSBKdi5GbG9hdC5nZXQgZSBcInJlc3BvbnNlU3RhcnRcIlxuICAgICAgbGV0IHJlc3BvbnNlX2VuZCBlID0gSnYuRmxvYXQuZ2V0IGUgXCJyZXNwb25zZUVuZFwiXG4gICAgICBsZXQgdHJhbnNmZXJfc2l6ZSBlID0gSnYuSW50LmdldCBlIFwidHJhbnNmZXJTaXplXCJcbiAgICAgIGxldCBlbmNvZGVkX2JvZHlfc2l6ZSBlID0gSnYuSW50LmdldCBlIFwiZW5jb2RlZEJvZHlTaXplXCJcbiAgICAgIGxldCBkZWNvZGVkX2JvZHlfc2l6ZSBlID0gSnYuSW50LmdldCBlIFwiZGVjb2RlZEJvZHlTaXplXCJcbiAgICBlbmRcbiAgICBtb2R1bGUgTmF2aWdhdGlvbl90aW1pbmcgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUeXBlID0gIHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBKc3RyLnRcbiAgICAgICAgbGV0IG5hdmlnYXRlID0gSnN0ci52IFwibmF2aWdhdGVcIlxuICAgICAgICBsZXQgcmVsb2FkID0gSnN0ci52IFwicmVsb2FkXCJcbiAgICAgICAgbGV0IGJhY2tfZm9yd2FyZCA9IEpzdHIudiBcImJhY2tfZm9yd2FyZFwiXG4gICAgICAgIGxldCBwcmVyZW5kZXIgPSBKc3RyLnYgXCJwcmVyZW5kZXJcIlxuICAgICAgZW5kXG4gICAgICB0eXBlIHQgPSBKdi50XG4gICAgICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcblxuICAgICAgbGV0IGFzX3Jlc291cmNlX3RpbWluZyA9IEZ1bi5pZFxuICAgICAgbGV0IGFzX2VudHJ5ID0gRnVuLmlkXG4gICAgICBsZXQgdW5sb2FkX2V2ZW50X3N0YXJ0IGUgPSBKdi5GbG9hdC5nZXQgZSBcInVubG9hZEV2ZW50U3RhcnRcIlxuICAgICAgbGV0IHVubG9hZF9ldmVudF9lbmQgZSA9IEp2LkZsb2F0LmdldCBlIFwidW5sb2FkRXZlbnRFbmRcIlxuICAgICAgbGV0IGRvbV9pbnRlcmFjdGl2ZSBlID0gSnYuRmxvYXQuZ2V0IGUgXCJkb21JbnRlcmFjdGl2ZVwiXG4gICAgICBsZXQgZG9tX2NvbnRlbnRfbG9hZGVkX2V2ZW50X3N0YXJ0IGUgPVxuICAgICAgICBKdi5GbG9hdC5nZXQgZSBcImRvbUNvbnRlbnRMb2FkZWRFdmVudFN0YXJ0XCJcblxuICAgICAgbGV0IGRvbV9jb250ZW50X2xvYWRlZF9ldmVudF9lbmQgZSA9XG4gICAgICAgIEp2LkZsb2F0LmdldCBlIFwiZG9tQ29udGVudExvYWRlZEV2ZW50RW5kXCJcblxuICAgICAgbGV0IGRvbV9jb21wbGV0ZSBlID0gSnYuRmxvYXQuZ2V0IGUgXCJkb21Db21wbGV0ZVwiXG4gICAgICBsZXQgbG9hZF9ldmVudF9zdGFydCBlID0gSnYuRmxvYXQuZ2V0IGUgXCJsb2FkRXZlbnRTdGFydFwiXG4gICAgICBsZXQgbG9hZF9ldmVudF9lbmQgZSA9IEp2LkZsb2F0LmdldCBlIFwibG9hZEV2ZW50RW5kXCJcbiAgICAgIGxldCB0eXBlJyBlID0gSnYuSnN0ci5nZXQgZSBcInR5cGUnXCJcbiAgICAgIGxldCByZWRpcmVjdF9jb3VudCBlID0gSnYuSW50LmdldCBlIFwicmVkaXJlY3RDb3VudFwiXG4gICAgZW5kXG4gICAgbGV0IGFzX3Jlc291cmNlX3RpbWluZyA9IEZ1bi5pZFxuICAgIGxldCBhc19uYXZpZ2F0aW9uX3RpbWluZyA9IEZ1bi5pZFxuICBlbmRcblxuICB0eXBlIHQgPSBKdi50XG4gIGluY2x1ZGUgKEp2LklkIDogSnYuQ09OViB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gIGxldCB0aW1lX29yaWdpbl9tcyBwID0gSnYuRmxvYXQuZ2V0IHAgXCJ0aW1lT3JpZ2luXCJcbiAgbGV0IGNsZWFyX21hcmtzIHAgbiA9XG4gICAgbGV0IGFyZ3MgPSBtYXRjaCBuIHdpdGggTm9uZSAtPiBbfHxdIHwgU29tZSBuIC0+IEp2Llt8b2ZfanN0ciBuIHxdIGluXG4gICAgaWdub3JlIEBAIEp2LmNhbGwgcCBcImNsZWFyTWFya3NcIiBhcmdzXG5cbiAgbGV0IGNsZWFyX21lYXN1cmVzIHAgbiA9XG4gICAgbGV0IGFyZ3MgPSBtYXRjaCBuIHdpdGggTm9uZSAtPiBbfHxdIHwgU29tZSBuIC0+IEp2Llt8b2ZfanN0ciBuIHxdIGluXG4gICAgaWdub3JlIEBAIEp2LmNhbGwgcCBcImNsZWFyTWVhc3VyZXNcIiBhcmdzXG5cbiAgbGV0IGNsZWFyX3Jlc291cmNlX3RpbWluZ3MgcCA9IGlnbm9yZSBAQCBKdi5jYWxsIHAgXCJjbGVhclJlc291cmNlVGltaW5nc1wiIFt8fF1cbiAgbGV0IGdldF9lbnRyaWVzID90eXBlJyA/bmFtZSBwID0gbWF0Y2ggbmFtZSwgdHlwZScgd2l0aFxuICB8IE5vbmUsIE5vbmUgLT5cbiAgICAgIEp2LnRvX2xpc3QgRW50cnkub2ZfanYgQEAgSnYuY2FsbCBwIFwiZ2V0RW50cmllc1wiIFt8fF1cbiAgfCBOb25lLCBTb21lIHQgLT5cbiAgICAgIEp2LnRvX2xpc3QgRW50cnkub2ZfanYgQEAgSnYuY2FsbCBwIFwiZ2V0RW50cmllc0J5VHlwZVwiIEp2Llt8IG9mX2pzdHIgdCB8XVxuICB8IFNvbWUgbiwgTm9uZSAtPlxuICAgICAgSnYudG9fbGlzdCBFbnRyeS5vZl9qdiBAQCBKdi5jYWxsIHAgXCJnZXRFbnRyaWVzQnlOYW1lXCIgSnYuW3wgb2ZfanN0ciBuIHxdXG4gIHwgU29tZSBuLCBTb21lIHQgLT5cbiAgICAgIEp2LnRvX2xpc3QgRW50cnkub2ZfanYgQEAgSnYuY2FsbCBwIFwiZ2V0RW50cmllc0J5TmFtZVwiXG4gICAgICAgIEp2Llt8IG9mX2pzdHIgbjsgb2ZfanN0ciB0IHxdXG5cbiAgbGV0IG1hcmsgcCBuID0gaWdub3JlIEBAIEp2LmNhbGwgcCBcIm1hcmtcIiBKdi5bfCBvZl9qc3RyIG4gfF1cbiAgbGV0IG1lYXN1cmUgP3N0YXJ0ID9zdG9wIHAgbiA9IG1hdGNoIHN0YXJ0LCBzdG9wIHdpdGhcbiAgfCBOb25lLCBOb25lIC0+IGlnbm9yZSBAQCBKdi5jYWxsIHAgXCJtZWFzdXJlXCIgW3x8XVxuICB8IFNvbWUgcywgTm9uZSAtPiBpZ25vcmUgQEAgSnYuY2FsbCBwIFwibWVhc3VyZVwiIEp2Llt8IG9mX2pzdHIgc3xdXG4gIHwgU29tZSBzLCBTb21lIGUgLT4gaWdub3JlIEBAIEp2LmNhbGwgcCBcIm1lYXN1cmVcIiBKdi5bfCBvZl9qc3RyIHM7IG9mX2pzdHIgZXxdXG4gIHwgTm9uZSwgU29tZSBlIC0+IGlnbm9yZSBAQCBKdi5jYWxsIHAgXCJtZWFzdXJlXCIgSnYuW3wgdW5kZWZpbmVkOyBvZl9qc3RyIGV8XVxuXG4gIGxldCBub3dfbXMgcCA9IEp2LnRvX2Zsb2F0IEBAIEp2LmNhbGwgcCBcIm5vd1wiIFt8fF1cbiAgbGV0IHRvX2pzb24gcCA9IEp2LmNhbGwgcCBcInRvSlNPTlwiIFt8fF1cbmVuZFxuXG5tb2R1bGUgRyA9IHN0cnVjdFxuXG4gICgqIEdsb2JhbCBvYmplY3RzICopXG5cbiAgbGV0IGNvbnNvbGUgPSBKdi5nZXQgSnYuZ2xvYmFsIFwiY29uc29sZVwiXG4gIGxldCBkb2N1bWVudCA9IEVsLmdsb2JhbF9kb2N1bWVudFxuICBsZXQgbmF2aWdhdG9yID0gSnYuZ2V0IEp2Lmdsb2JhbCBcIm5hdmlnYXRvclwiXG4gIGxldCBwZXJmb3JtYW5jZSA9IEp2LmdldCBKdi5nbG9iYWwgXCJwZXJmb3JtYW5jZVwiXG4gIGxldCB3aW5kb3cgPSBKdi5nZXQgSnYuZ2xvYmFsIFwid2luZG93XCJcblxuICAoKiBHbG9iYWwgcHJvcGVydGllcyAqKVxuXG4gIGxldCBpc19zZWN1cmVfY29udGV4dCA9IEp2LkJvb2wuZ2V0IEp2Lmdsb2JhbCBcImlzU2VjdXJlQ29udGV4dFwiXG5cbiAgKCogRXZlbnQgdGFyZ2V0ICopXG5cbiAgbGV0IHRhcmdldCA9IEp2Lmdsb2JhbFxuXG4gICgqIFRpbWVycyAqKVxuXG4gIHR5cGUgdGltZXJfaWQgPSBpbnRcblxuICBsZXQgc2V0X3RpbWVvdXQgfm1zIGYgPVxuICAgIEp2LnRvX2ludCBAQFxuICAgIEp2LmNhbGwgSnYuZ2xvYmFsIFwic2V0VGltZW91dFwiIFt8IEp2LmNhbGxiYWNrIH5hcml0eToxIGY7IEp2Lm9mX2ludCBtcyB8XVxuXG4gIGxldCBzZXRfaW50ZXJ2YWwgfm1zIGYgPVxuICAgIEp2LnRvX2ludCBAQFxuICAgIEp2LmNhbGwgSnYuZ2xvYmFsIFwic2V0SW50ZXJ2YWxcIiBbfCBKdi5jYWxsYmFjayB+YXJpdHk6MSBmOyBKdi5vZl9pbnQgbXMgfF1cblxuICBsZXQgc3RvcF90aW1lciB0aWQgPVxuICAgICgqIGFjY29yZGluZyB0byBzcGVjIGludGVydmFsIGFuZCB0aW1lb3V0IHNoYXJlIHRoZSBzYW1lIGludHMgKilcbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBKdi5nbG9iYWwgXCJjbGVhclRpbWVvdXRcIiBbfCBKdi5vZl9pbnQgdGlkIHxdXG5cbiAgKCogQW5pbWF0aW9uIHRpbWluZyAqKVxuXG4gIHR5cGUgYW5pbWF0aW9uX2ZyYW1lX2lkID0gaW50XG5cbiAgbGV0IHJlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lIGYgPVxuICAgIEp2LnRvX2ludCBAQCBKdi5jYWxsIEp2Lmdsb2JhbCBcInJlcXVlc3RBbmltYXRpb25GcmFtZVwiXG4gICAgICBbfEp2LmNhbGxiYWNrIH5hcml0eToxIGZ8XVxuXG4gIGxldCBjYW5jZWxfYW5pbWF0aW9uX2ZyYW1lIGZpZCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgSnYuZ2xvYmFsIFwiY2FuY2VsQW5pbWF0aW9uRnJhbWVcIiBbfCBKdi5vZl9pbnQgZmlkfF1cbmVuZFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2pzX2Zyb21fYm9vbCIsImNhbWxfanNfZ2V0IiwiY2FtbF9qc19tZXRoX2NhbGwiLCJjYW1sX2pzX3NldCIsImNhbWxfanNfdG9fYXJyYXkiLCJjYW1sX2pzX3RvX2ludDMyIiwiY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdCIsImNhbWxfbGlzdF9vZl9qc19hcnJheSIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiY2FtbF9jYWxsNCIsImEzIiwiY2FtbF9jYWxsNSIsImE0IiwiZ2xvYmFsX2RhdGEiLCJKdiIsIkpzdHIiLCJGdXQiLCJTdGRsaWJfTGlzdCIsIlN0ZGxpYl9PcHRpb24iLCJTdGRsaWJfQXJyYXkiLCJTdGRsaWJfQmlnYXJyYXkiLCJTdGRsaWJfU3lzIiwiY3N0X2J1YmJsZXMiLCJjc3RfY2FuY2VsYWJsZSIsImNzdF9jb21wb3NlZCIsImluaXQiLCJidWJibGVzIiwiY2FuY2VsYWJsZSIsImNvbXBvc2VkIiwicGFyYW0iLCJvIiwiZXZlbnQiLCJjcmVhdGUiLCJvcHQiLCJ0IiwiY3N0X3R5cGUiLCJ0eXBlIiwiZSIsInRhcmdldCIsImN1cnJlbnRfdGFyZ2V0IiwiY29tcG9zZWRfcGF0aCIsImV2ZW50X3BoYXNlIiwic3dpdGNoZXIiLCJzdG9wX3Byb3BhZ2F0aW9uIiwic3RvcF9pbW1lZGlhdGVfcHJvcGFnYXRpb24iLCJwcmV2ZW50X2RlZmF1bHQiLCJkZWZhdWx0X3ByZXZlbnRlZCIsImlzX3RydXN0ZWQiLCJjc3RfdGltZVN0YW1wIiwidGltZXN0YW1wX21zIiwiZGlzcGF0Y2giLCJsaXN0ZW5fb3B0cyIsImNhcHR1cmUiLCJvbmNlIiwicGFzc2l2ZSIsImxpc3RlbiIsIm9wdHMiLCJ1bmxpc3RlbiIsIm5leHQiLCJtYXRjaCIsInNldCIsImZ1dCIsImtpbmQiLCJpIiwiZ2V0X2ZpbGUiLCJnZXRfanN0ciIsInNldF9zdHIiLCJzdHIiLCJjc3RfbGVuZ3RoIiwibGVuZ3RoIiwibCIsImFkZF9qc3RyIiwiYWRkX2ZpbGUiLCJmaWxlIiwicmVtb3ZlIiwiY2xlYXIiLCJpdGVtcyIsImFjYyIsImNzdF9kcm9wRWZmZWN0IiwiZHJvcF9lZmZlY3QiLCJkIiwic2V0X2Ryb3BfZWZmZWN0IiwiY3N0X2VmZmVjdEFsbG93ZWQiLCJlZmZlY3RfYWxsb3dlZCIsInNldF9lZmZlY3RfYWxsb3dlZCIsImRhdGEiLCJjIiwiY3N0X2RhdGEiLCJtZXNzYWdlIiwiZmlsZW5hbWUiLCJsaW5lbm8iLCJjb2xubyIsImVycm9yIiwid2FpdF91bnRpbCIsImNzdF9yZWxhdGVkVGFyZ2V0IiwicmVsYXRlZF90YXJnZXQiLCJtIiwib2xkX3VybCIsIm5ld191cmwiLCJjc3RfZGF0YVRyYW5zZmVyIiwiZGF0YV90cmFuc2ZlciIsImlucHV0X3R5cGUiLCJjc3RfaXNDb21wb3NpbmciLCJpc19jb21wb3NpbmciLCJrZXkiLCJrIiwiY3N0X2NvZGUiLCJjb2RlIiwibG9jYXRpb24iLCJyZXBlYXQiLCJjc3RfYWx0S2V5IiwiYWx0X2tleSIsImNzdF9jdHJsS2V5IiwiY3RybF9rZXkiLCJjc3Rfc2hpZnRLZXkiLCJzaGlmdF9rZXkiLCJjc3RfbWV0YUtleSIsIm1ldGFfa2V5IiwiZ2V0X21vZGlmaWVyX3N0YXRlIiwib2Zmc2V0X3giLCJvZmZzZXRfeSIsImNsaWVudF94IiwiY2xpZW50X3kiLCJwYWdlX3giLCJwYWdlX3kiLCJzY3JlZW5feCIsInNjcmVlbl95IiwibW92ZW1lbnRfeCIsIm1vdmVtZW50X3kiLCJjc3RfYnV0dG9uIiwiYnV0dG9uIiwiYnV0dG9ucyIsImlkIiwicCIsImNzdF93aWR0aCIsIndpZHRoIiwiY3N0X2hlaWdodCIsImhlaWdodCIsInByZXNzdXJlIiwidGFuZ2VudGlhbF9wcmVzc3VyZSIsInRpbHRfeCIsInRpbHRfeSIsInR3aXN0IiwiYWx0aXR1ZGVfYW5nbGUiLCJhemltdXRoX2FuZ2xlIiwiaXNfcHJpbWFyeSIsImdldF9jb2FsZXNjZWRfZXZlbnRzIiwiZ2V0X3ByZWRpY3RlZF9ldmVudHMiLCJkZWx0YV94IiwidyIsImRlbHRhX3kiLCJkZWx0YV96IiwiZGVsdGFfbW9kZSIsImFycmF5X2J1ZmZlciIsIm4iLCJjc3RfYnl0ZUxlbmd0aCIsImJ5dGVfbGVuZ3RoIiwiYSIsInNsaWNlIiwic3RvcCIsInN0YXJ0IiwiYnVmZmVyIiwiYnl0ZV9vZmZzZXQiLCJkYXRhdmlldyIsIm9mX2J1ZmZlciIsImIiLCJnZXRfaW50OCIsImdldF9pbnQxNl9iZSIsImdldF9pbnQxNl9sZSIsImdldF9pbnQzMl9iZSIsImdldF9pbnQzMl9sZSIsImdldF91aW50OCIsImdldF91aW50MTZfYmUiLCJnZXRfdWludDE2X2xlIiwiZ2V0X3VpbnQzMl9iZSIsImdldF91aW50MzJfbGUiLCJnZXRfZmxvYXQzMl9iZSIsImdldF9mbG9hdDMyX2xlIiwiZ2V0X2Zsb2F0NjRfYmUiLCJnZXRfZmxvYXQ2NF9sZSIsInNldF9pbnQ4IiwidiIsInNldF9pbnQxNl9iZSIsInNldF9pbnQxNl9sZSIsInNldF9pbnQzMl9iZSIsInNldF9pbnQzMl9sZSIsInNldF91aW50OCIsInNldF91aW50MTZfYmUiLCJzZXRfdWludDE2X2xlIiwic2V0X3VpbnQzMl9iZSIsInNldF91aW50MzJfbGUiLCJzZXRfZmxvYXQzMl9iZSIsInNldF9mbG9hdDMyX2xlIiwic2V0X2Zsb2F0NjRfYmUiLCJzZXRfZmxvYXQ2NF9sZSIsInR5cGVfc2l6ZV9pbl9ieXRlcyIsImNvbnNfb2ZfdHlwZSIsImFyZ3MiLCJjc3RfbmFtZSIsInMiLCJlbHRfdG9fanYiLCJlbHRfb2ZfanYiLCJjc3RfYXV0byIsImNzdF9kaXIiLCJjc3RfZXJyb3IiLCJjc3RfaW5wdXQiLCJjc3Rfc291cmNlIiwiY3N0X3RhYmxlIiwiY3N0X3RpbWUiLCJjc3RfdGl0bGUiLCJjc3RfdGltZU9yaWdpbiIsImNzdF9yZWRpcmVjdENvdW50IiwiY3N0X2xvYWRFdmVudEVuZCIsImNzdF9sb2FkRXZlbnRTdGFydCIsImNzdF9kb21Db21wbGV0ZSIsImNzdF9kb21Db250ZW50TG9hZGVkRXZlbnRFbmQiLCJjc3RfZG9tQ29udGVudExvYWRlZEV2ZW50U3RhcnQiLCJjc3RfZG9tSW50ZXJhY3RpdmUiLCJjc3RfdW5sb2FkRXZlbnRFbmQiLCJjc3RfdW5sb2FkRXZlbnRTdGFydCIsImNzdF9kZWNvZGVkQm9keVNpemUiLCJjc3RfZW5jb2RlZEJvZHlTaXplIiwiY3N0X3RyYW5zZmVyU2l6ZSIsImNzdF9yZXNwb25zZUVuZCIsImNzdF9yZXNwb25zZVN0YXJ0IiwiY3N0X3JlcXVlc3RTdGFydCIsImNzdF9zZWN1cmVDb25uZWN0aW9uU3RhcnQiLCJjc3RfY29ubmVjdEVuZCIsImNzdF9jb25uZWN0U3RhcnQiLCJjc3RfZG9tYWluTG9va3VwRW5kIiwiY3N0X2RvbWFpbkxvb2t1cFN0YXJ0IiwiY3N0X2ZldGNoU3RhcnQiLCJjc3RfcmVkaXJlY3RFbmQiLCJjc3RfcmVkaXJlY3RTdGFydCIsImNzdF93b3JrZXJTdGFydCIsImNzdF9uZXh0SG9wUHJvdG9jb2wiLCJjc3RfaW5pdGlhdG9yVHlwZSIsImNzdF9kdXJhdGlvbiIsImNzdF9lbmRUaW1lIiwiY3N0X3N0YXJ0VGltZSIsImNzdF9lbnRyeVR5cGUiLCJjc3Rfb25MaW5lIiwiY3N0X2xhbmd1YWdlcyIsImNzdF9sYW5ndWFnZSIsImNzdF9zY3JvbGxSZXN0b3JhdGlvbiIsImNzdF9tYXRjaGVzIiwiY3N0X2RldmljZVBpeGVsUmF0aW8iLCJjc3RfaW5uZXJIZWlnaHQiLCJjc3RfaW5uZXJXaWR0aCIsImNzdF9zY3JvbGxZIiwiY3N0X3Njcm9sbFgiLCJjc3RfY2xvc2VkIiwiY3N0X3Byb2ZpbGVFbmQiLCJjc3RfcHJvZmlsZSIsImNzdF90aW1lRW5kIiwiY3N0X3RpbWVMb2ciLCJjc3RfY291bnRSZXNldCIsImNzdF9jb3VudCIsImNzdF9ncm91cENvbGxhcHNlZCIsImNzdF9ncm91cCIsImNzdF9ncm91cEVuZCIsImNzdF9hc3NlcnQiLCJjc3RfZGVidWciLCJjc3RfaW5mbyIsImNzdF93YXJuIiwiY3N0X3RyYWNlIiwiY3N0X2xvZyIsImNzdF9jbGVhciIsImNzdF9hYm9ydGVkIiwiY3N0X2Z1bGxzY3JlZW5FbmFibGVkIiwiY3N0X3Zpc2liaWxpdHlTdGF0ZSIsImNzdF9yZWZlcnJlciIsImNzdF9zYXJ0T2Zmc2V0IiwiY3N0X2VuZE9mZnNldCIsImNzdF9jb2xsYXBzZWQiLCJjc3RfZmlsZXMiLCJjc3RfbmF2aWdhdGlvblVJIiwiY3N0X3Ntb290aCIsImNzdF9pbnN0YW50IiwiY3N0X2NlbnRlciIsImNzdF9uZWFyZXN0IiwiY3N0X3N0YXJ0IiwiY3N0X2VuZCIsImNzdF9zY3JvbGxIZWlnaHQiLCJjc3Rfc2Nyb2xsV2lkdGgiLCJjc3Rfc2Nyb2xsVG9wIiwiY3N0X3Njcm9sbExlZnQiLCJjc3Rfb2Zmc2V0VG9wIiwiY3N0X29mZnNldExlZnQiLCJjc3Rfb2Zmc2V0SGVpZ2h0IiwiY3N0X29mZnNldFdpZHRoIiwiY3N0X3kiLCJjc3RfeCIsImNzdF9jbGllbnRIZWlnaHQiLCJjc3RfY2xpZW50V2lkdGgiLCJjc3RfY2xpZW50VG9wIiwiY3N0X2NsaWVudExlZnQiLCJjc3RfbmV4dEVsZW1lbnRTaWJsaW5nIiwiY3N0X3ByZXZpb3VzRWxlbWVudFNpYmxpbmciLCJjc3RfcGFyZW50Tm9kZSIsImNzdF90ZXh0Q29udGVudCIsImNzdF9ub2RlVmFsdWUiLCJjc3Rfbm9kZU5hbWUiLCJjc3Rfbm9kZVR5cGUiLCJjc3RfdW5pY29kZVNldHMiLCJjc3RfdW5pY29kZSIsImNzdF9zdGlja3kiLCJjc3RfbXVsdGlsaW5lIiwiY3N0X2lnbm9yZUNhc2UiLCJjc3RfaGFzSW5kaWNlcyIsImNzdF9nbG9iYWwiLCJjc3RfZmxhZ3MiLCJjc3RfZG90QWxsIiwiY3N0X2xhc3RJbmRleCIsImNzdF9pbmRpY2VzIiwiY3N0X2dyb3VwcyIsImNzdF9pbmRleCIsImNzdF9oYXNoIiwiY3N0X3NlYXJjaCIsImNzdF9wYXRobmFtZSIsImNzdF9wb3J0IiwiY3N0X2hvc3RuYW1lIiwiY3N0X3Byb3RvY29sIiwiY3N0X2xhc3RNb2RpZmllZCIsImNzdF93ZWJraXRSZWxhdGl2ZVBhdGgiLCJjc3RfbGVuZ3RoQ29tcHV0YWJsZSIsImNzdF9sb2FkZWQiLCJjc3RfdG90YWwiLCJjc3Rfc2l6ZSIsImNzdF9lbmRpbmdzIiwiY3N0X3V0Zl84IiwiY3N0X1JhbmdlX0VORF9UT19FTkQiLCJjc3RfUmFuZ2VfRU5EX1RPX1NUQVJUIiwiY3N0X1JhbmdlX1NUQVJUX1RPX0VORCIsImNzdF9SYW5nZV9TVEFSVF9UT19TVEFSVCIsImNzdF9pc1NlY3VyZUNvbnRleHQiLCJjb21waWxlZF90b193YXNtIiwiZ2V0Iiwic2V0X3RhcnJheSIsImRzdCIsImZpbGwiLCJjb3B5X3dpdGhpbiIsInN1YiIsImZpbmQiLCJzYXQiLCJvZl9qdiIsImZpbmRfaW5kZXgiLCJmb3JfYWxsIiwiZXhpc3RzIiwiZmlsdGVyIiwiaXRlciIsIm1hcCIsImZvbGRfbGVmdCIsImZvbGRfcmlnaHQiLCJyZXZlcnNlIiwib2ZfdGFycmF5Iiwib2ZfaW50X2FycmF5Iiwib2ZfZmxvYXRfYXJyYXkiLCJ0b19pbnRfanN0ciIsInNlcCIsInRvX2hleF9qc3RyIiwiaGV4IiwidWludDhfb2ZfYnVmZmVyIiwib2ZfanN0ciIsImVuYyIsInRvX2pzdHIiLCJkZWMiLCJleG4iLCJvZl9iaW5hcnlfanN0ciIsInRvX2JpbmFyeV9qc3RyIiwidHlwZV90b19iaWdhcnJheV9raW5kIiwidHlwZV9vZl9iaWdhcnJheV9raW5kIiwiZW5kaW5ncyIsImJsb2IiLCJvZl9hcnJheV9idWZmZXIiLCJzdHJlYW0iLCJjc3RfcHJvZ3Jlc3MiLCJsb2FkIiwicHJvZ3Jlc3MiLCJmaWxlX3JlYWRlciIsImNvbnYiLCJwcm9ncmVzc19kYXRhIiwibG9hZGVkIiwidG90YWwiLCJyZWFkZXIiLCJzZXRfZnV0Iiwib2siLCJ0ZXh0IiwiZGF0YV91cmkiLCJibG9iX2luaXQiLCJsYXN0X21vZGlmaWVkX21zIiwib2ZfYmxvYiIsIm5hbWUiLCJyZWxhdGl2ZV9wYXRoIiwiZGF0YV91dGZfOF9vZl9qc3RyIiwiZGF0YV91dGZfOF90b19qc3RyIiwiZGF0YV9vZl9iaW5hcnlfanN0ciIsImRhdGFfdG9fYmluYXJ5X2pzdHIiLCJlbmNvZGUiLCJicyIsImRlY29kZSIsImpzb24iLCJlbmNvZGVfY29tcG9uZW50IiwiZGVjb2RlX2NvbXBvbmVudCIsInVybCIsImJhc2UiLCJ3aXRoX3VyaSIsInNjaGVtZSIsImhvc3QiLCJwb3J0IiwicGF0aCIsInF1ZXJ5IiwiZnJhZ21lbnQiLCJ1IiwiYXJnIiwiZXRhIiwicSIsInByZWZpeCIsInBhdGhfc2VnbWVudHMiLCJkZWNvZGVfc2VnIiwid2l0aF9wYXRoX3NlZ21lbnRzIiwic2VncyIsImVuY29kZV9zZWciLCJ1c3AiLCJpc19lbXB0eSIsIm1lbSIsImZpbmRfYWxsIiwiZm9sZCIsInZhbHVlIiwib2ZfYXNzb2MiLCJ0b19hc3NvYyIsIm9mX29iaiIsInF1ZXJ5X3BhcmFtcyIsIndpdGhfcXVlcnlfcGFyYW1zIiwicHMiLCJmcmFnbWVudF9wYXJhbXMiLCJ3aXRoX2ZyYWdtZW50X3BhcmFtcyIsImlucHV0IiwiciIsInN0YXJ0X2luZGV4Iiwic3RvcF9pbmRleCIsImZvbGRfZ3JvdXBzIiwiZm9sZF9ncm91cF9pbmRpY2VzIiwicmFuZ2UiLCJvYmpfZW50cmllcyIsImp2IiwiZm9sZF9uYW1lZF9ncm91cHMiLCJncm91cHMiLCJlbnRyaWVzIiwiZW50cnkiLCJmb2xkX25hbWVkX2dyb3VwX2luZGljZXMiLCJyZWdleHAiLCJlc2NhcGUiLCJmbGFncyIsImV4ZWMiLCJmb2xkX21hdGNoZXMiLCJyZXBsYWNlIiwiYnkiLCJyZXBsYWNlX2FsbCIsInNlYXJjaCIsInNwbGl0IiwibGltaXQiLCJ0ZXN0IiwibGFzdF9pbmRleCIsInNldF9sYXN0X2luZGV4IiwiZG90X2FsbCIsImdsb2JhbCIsImhhc19pbmRpY2VzIiwiaWdub3JlX2Nhc2UiLCJtdWx0aWxpbmUiLCJzb3VyY2UiLCJzdGlja3kiLCJ1bmljb2RlIiwidW5pY29kZV9zZXRzIiwidm9pZCQiLCJpc192b2lkIiwiaWYkIiwiYXQiLCJpZl9zb21lIiwidHJ1ZSQiLCJpbnQiLCJmbG9hdCIsInRvX3BhaXIiLCJhZGRfaWYiLCJhZGRfaWZfc29tZSIsImFjY2Vzc2tleSIsImFjdGlvbiIsImF1dG9jb21wbGV0ZSIsImF1dG9mb2N1cyIsImNoYXJzZXQiLCJjc3RfY2hlY2tlZCIsImNoZWNrZWQiLCJjc3RfY2xhc3MiLCJjbGFzcyQiLCJjb2xzIiwiY29udGVudCIsImNvbnRlbnRlZGl0YWJsZSIsImRlZmVyIiwiZGlyIiwiZGlzYWJsZWQiLCJkb3dubG9hZCIsImRyYWdnYWJsZSIsImZvciQiLCJjc3RfaGlkZGVuIiwiaGlkZGVuIiwiaHJlZiIsImNzdF9pZCIsImxhbmciLCJsaXN0IiwibWVkaWEiLCJtZXRob2QiLCJwbGFjZWhvbGRlciIsInJlbCIsInJlcXVpcmVkIiwicm93cyIsInNlbGVjdGVkIiwic3BlbGxjaGVjayIsInNyYyIsImNzdF9zdHlsZSIsInN0eWxlIiwidGFiaW5kZXgiLCJ0aXRsZSIsImNzdF92YWx1ZSIsIndyYXAiLCJnbG9iYWxfZG9jdW1lbnQiLCJkb2N1bWVudCIsImdsb2JhbF9yb290IiwiZWxfbGlzdF9vZl9ub2RlX2xpc3QiLCJubCIsImxlbiIsImNzdCIsImNzIiwic3MiLCJjbHNzIiwidHh0Iiwic3AiLCJuYnNwIiwiaXNfdHh0IiwiaXNfZWwiLCJ0YWdfbmFtZSIsImhhc190YWdfbmFtZSIsInR4dF90ZXh0IiwidGV4dF9jb250ZW50IiwiZmluZF9ieV9jbGFzcyIsInJvb3QiLCJmaW5kX2J5X3RhZ19uYW1lIiwiZmluZF9maXJzdF9ieV9zZWxlY3RvciIsInNlbCIsImZvbGRfZmluZF9ieV9zZWxlY3RvciIsInBhcmVudCIsImNoaWxkcmVuIiwib25seV9lbHMiLCJzZXRfY2hpbGRyZW4iLCJwcmVwZW5kX2NoaWxkcmVuIiwiYXBwZW5kX2NoaWxkcmVuIiwicHJldmlvdXNfc2libGluZyIsIm5leHRfc2libGluZyIsImluc2VydF9zaWJsaW5ncyIsImxvYyIsInNldF9hdCIsImp2X3RvX2Jvb2wiLCJqdl90b19pbnQiLCJqdl90b19mbG9hdCIsImp2X3RvX2pzdHIiLCJib29sIiwianN0ciIsInByb3AiLCJzZXRfcHJvcCIsInNldF9jbGFzcyIsImNvbXB1dGVkX3N0eWxlIiwiaW5saW5lX3N0eWxlIiwic2V0X2lubGluZV9zdHlsZSIsImltcG9ydGFudCIsInByaW9yaXR5IiwicmVtb3ZlX2lubGluZV9zdHlsZSIsImlubmVyX3giLCJpbm5lcl95IiwiaW5uZXJfdyIsImlubmVyX2giLCJib3VuZF94IiwiYm91bmRfeSIsImJvdW5kX3ciLCJib3VuZF9oIiwib2Zmc2V0X3ciLCJvZmZzZXRfaCIsIm9mZnNldF9sZWZ0Iiwib2Zmc2V0X3RvcCIsIm9mZnNldF9wYXJlbnQiLCJzY3JvbGxfeCIsInNjcm9sbF95Iiwic2Nyb2xsX3ciLCJzY3JvbGxfaCIsInNjcm9sbF9pbnRvX3ZpZXciLCJiZWhhdmlvciIsImFsaWduX3YiLCJhbGlnbiIsIm9wdGlvbnMiLCJoYXNfZm9jdXMiLCJzZXRfaGFzX2ZvY3VzIiwiaXNfbG9ja2luZ19wb2ludGVyIiwicG9pbnRlcmxvY2tjaGFuZ2UiLCJwb2ludGVybG9ja2Vycm9yIiwicmVxdWVzdF9wb2ludGVyX2xvY2siLCJsb2NrZWQiLCJldiIsImVyciIsImNsaWNrIiwic2VsZWN0X3RleHQiLCJmdWxsc2NyZWVuX29wdHMiLCJuYXZpZ2F0aW9uX3VpIiwicmVxdWVzdF9mdWxsc2NyZWVuIiwiZmlsZXMiLCJ2b2lkX2NvbnMiLCJhYmJyIiwiYWRkcmVzcyIsImFyZWEiLCJhcnRpY2xlIiwiYXNpZGUiLCJhdWRpbyIsImJkaSIsImJkbyIsImJsb2NrcXVvdGUiLCJib2R5IiwiYnIiLCJjYW52YXMiLCJjYXB0aW9uIiwiY2l0ZSIsImNvbCIsImNvbGdyb3VwIiwiY29tbWFuZCIsImRhdGFsaXN0IiwiZGQiLCJkZWwiLCJkZXRhaWxzIiwiZGZuIiwiZGl2IiwiZGwiLCJkdCIsImVtIiwiZW1iZWQiLCJmaWVsZHNldCIsImZpZ2NhcHRpb24iLCJmaWd1cmUiLCJmb290ZXIiLCJmb3JtIiwiaDEiLCJoMiIsImgzIiwiaDQiLCJoNSIsImg2IiwiaGVhZCIsImhlYWRlciIsImhncm91cCIsImhyIiwiaHRtbCIsImlmcmFtZSIsImltZyIsImlucyIsImtiZCIsImtleWdlbiIsImxhYmVsIiwibGVnZW5kIiwibGkiLCJjc3RfbGluayIsImxpbmsiLCJjc3RfbWFyayIsIm1hcmsiLCJtZW51IiwibWV0YSIsIm1ldGVyIiwibmF2Iiwibm9zY3JpcHQiLCJvYmplY3QiLCJvbCIsIm9wdGdyb3VwIiwib3B0aW9uIiwib3V0cHV0IiwicHJlIiwicnAiLCJydCIsInJ1YnkiLCJzYW1wIiwic2NyaXB0Iiwic2VjdGlvbiIsImNzdF9zZWxlY3QiLCJzZWxlY3QiLCJzbWFsbCIsInNwYW4iLCJzdHJvbmciLCJzdW1tYXJ5Iiwic3VwIiwidGFibGUiLCJ0Ym9keSIsInRkIiwidGV4dGFyZWEiLCJ0Zm9vdCIsInRoIiwidGhlYWQiLCJ0aW1lIiwidHIiLCJ0cmFjayIsInVsIiwidmFyJCIsInZpZGVvIiwid2JyIiwiZW5kX3RvX2VuZCIsImVuZF90b19zdGFydCIsInN0YXJ0X3RvX2VuZCIsInN0YXJ0X3RvX3N0YXJ0IiwiY2xvbmVfcmFuZ2UiLCJjb2xsYXBzZSIsImNvbGxhcHNlX3RvX3N0YXJ0IiwiY29sbGFwc2VfdG9fZW5kIiwiY29tcGFyZV9ib3VuZGFyeV9wb2ludHMiLCJob3ciLCJjb21wYXJlX3BvaW50IiwiZWwiLCJvZmZzZXQiLCJkZWxldGVfY29udGVudHMiLCJpbnNlcnRfbm9kZSIsImludGVyc2VjdHNfbm9kZSIsImlzX3BvaW50X2luX3JhbmdlIiwic2VsZWN0X25vZGUiLCJzZWxlY3Rfbm9kZV9jb250ZW50cyIsInNldF9lbmQiLCJzZXRfZW5kX2FmdGVyIiwic2V0X2VuZF9iZWZvcmUiLCJzZXRfc3RhcnQiLCJzZXRfc3RhcnRfYWZ0ZXIiLCJzZXRfc3RhcnRfYmVmb3JlIiwic3Vycm91bmRfY29udGVudHMiLCJ0b19zdHJpbmciLCJjb2xsYXBzZWQiLCJjb21tb25fYW5jZXN0b3JfY29udGFpbmVyIiwiZW5kX2NvbnRhaW5lciIsImVuZF9vZmZzZXQiLCJzdGFydF9jb250YWluZXIiLCJzdGFydF9vZmZzZXQiLCJhc190YXJnZXQiLCJhY3RpdmVfZWwiLCJmaW5kX2VsX2J5X2lkIiwiZmluZF9lbHNfYnlfbmFtZSIsInJlZmVycmVyIiwic2V0X3RpdGxlIiwidmlzaWJpbGl0eV9zdGF0ZSIsInBvaW50ZXJfbG9ja19lbGVtZW50IiwiZXhpdF9wb2ludGVyX2xvY2siLCJmdWxsc2NyZWVuX2F2YWlsYWJsZSIsImZ1bGxzY3JlZW5fZWxlbWVudCIsImV4aXRfZnVsbHNjcmVlbiIsImFib3J0ZWQiLCJjb250cm9sbGVyIiwic2lnbmFsIiwiYWJvcnQiLCJjYWxsIiwibWV0aCIsIm1zZyIsIm1zZ190b19qdl9hcnJheSIsInZzIiwibG9nIiwidHJhY2UiLCJ3YXJuIiwiaW5mbyIsImRlYnVnIiwiYXNzZXJ0IiwiZ3JvdXBfZW5kIiwiZ3JvdXAiLCJjbG9zZWQiLCJjb3VudCIsImNvdW50X3Jlc2V0IiwidGltZV9sb2ciLCJ0aW1lX2VuZCIsInByb2ZpbGUiLCJwcm9maWxlX2VuZCIsInRpbWVfc3RhbXAiLCJsb2dfcmVzdWx0IiwibG9nX2lmX2Vycm9yIiwidXNlIiwiZXJyb3JfbXNnIiwiaW5uZXJfd2lkdGgiLCJpbm5lcl9oZWlnaHQiLCJkZXZpY2VfcGl4ZWxfcmF0aW8iLCJtYXRjaGVzX21lZGlhIiwicHJlZmVyc19kYXJrX2NvbG9yX3NjaGVtZSIsIm9wZW4iLCJmZWF0dXJlcyIsImNsb3NlIiwicHJpbnQiLCJyZWxvYWQiLCJzZXRfbG9jYXRpb24iLCJoIiwic2Nyb2xsX3Jlc3RvcmF0aW9uIiwic2V0X3Njcm9sbF9yZXN0b3JhdGlvbiIsImJhY2siLCJmb3J3YXJkIiwiZ28iLCJzdGF0ZSIsInB1c2hfc3RhdGUiLCJ1cmkiLCJyZXBsYWNlX3N0YXRlIiwiaGlzdG9yeSIsImxhbmd1YWdlcyIsIm1heF90b3VjaF9wb2ludHMiLCJvbmxpbmUiLCJzdGFydF90aW1lIiwiZW5kX3RpbWUiLCJkdXJhdGlvbiIsInRvX2pzb24iLCJhc19lbnRyeSIsImluaXRpYXRvcl90eXBlIiwibmV4dF9ob3BfcHJvdG9jb2wiLCJ3b3JrZXJfc3RhcnQiLCJyZWRpcmVjdF9zdGFydCIsInJlZGlyZWN0X2VuZCIsImZldGNoX3N0YXJ0IiwiZG9tYWluX2xvb2t1cF9zdGFydCIsImRvbWFpbl9sb29rdXBfZW5kIiwiY29ubmVjdF9zdGFydCIsImNvbm5lY3RfZW5kIiwic2VjdXJlX2Nvbm5lY3Rpb25fc3RhcnQiLCJyZXF1ZXN0X3N0YXJ0IiwicmVzcG9uc2Vfc3RhcnQiLCJyZXNwb25zZV9lbmQiLCJ0cmFuc2Zlcl9zaXplIiwiZW5jb2RlZF9ib2R5X3NpemUiLCJkZWNvZGVkX2JvZHlfc2l6ZSIsImFzX3Jlc291cmNlX3RpbWluZyIsInVubG9hZF9ldmVudF9zdGFydCIsInVubG9hZF9ldmVudF9lbmQiLCJkb21faW50ZXJhY3RpdmUiLCJkb21fY29udGVudF9sb2FkZWRfZXZlbnRfc3RhcnQiLCJkb21fY29udGVudF9sb2FkZWRfZXZlbnRfZW5kIiwiZG9tX2NvbXBsZXRlIiwibG9hZF9ldmVudF9zdGFydCIsImxvYWRfZXZlbnRfZW5kIiwicmVkaXJlY3RfY291bnQiLCJhc19uYXZpZ2F0aW9uX3RpbWluZyIsInRpbWVfb3JpZ2luX21zIiwiY2xlYXJfbWFya3MiLCJjbGVhcl9tZWFzdXJlcyIsImNsZWFyX3Jlc291cmNlX3RpbWluZ3MiLCJnZXRfZW50cmllcyIsIm1lYXN1cmUiLCJub3dfbXMiLCJjb25zb2xlIiwibmF2aWdhdG9yIiwicGVyZm9ybWFuY2UiLCJ3aW5kb3ciLCJpc19zZWN1cmVfY29udGV4dCIsInNldF90aW1lb3V0IiwibXMiLCJzZXRfaW50ZXJ2YWwiLCJzdG9wX3RpbWVyIiwidGlkIiwicmVxdWVzdF9hbmltYXRpb25fZnJhbWUiLCJjYW5jZWxfYW5pbWF0aW9uX2ZyYW1lIiwiZmlkIiwiY3N0X2Fib3J0IiwiY3N0X2NvcHkiLCJjc3RfZGJsY2xpY2siLCJCcnIiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLCtCQUFBO0FBQUEsSUFBQUMsd0JBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQU4sR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFSLEdBQUFDLElBQUFFLElBQUFFLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxLQUFBO0FBQUEsSUFBQUMsT0FBQTtBQUFBLElBQUFDLE1BQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLFlBQUFDLEtBQUFDLFNBQUFDLFlB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QUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMEJBeGZuRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsR0F3Zm1EO0FBQUE7QUFBQSxFRHZ3RWpFIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MzY4NTMsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJyLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9icnIvYnJyX2NhbnZhcy5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0nLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgQ29weXJpZ2h0IChjKSAyMDIwIFRoZSBicnIgcHJvZ3JhbW1lcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbm9wZW4gQnJyXG5cbm1vZHVsZSBNYXRyaXg0ID0gc3RydWN0XG4gIHR5cGUgdCA9IEp2LnRcbiAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgbGV0IGlzXzJkIG0gPSBKdi5Cb29sLmdldCBtIFwiaXMyRFwiXG4gIGxldCBpc19pZGVudGl0eSBtID0gSnYuQm9vbC5nZXQgbSBcImlzSWRlbnRpdHlcIlxuICBsZXQgaW52ZXJzZSBtID0gSnYuY2FsbCBtIFwiaW52ZXJzZVwiIFt8fF1cbiAgbGV0IG11bHRpcGx5IG0gbScgPSBKdi5jYWxsIG0gXCJtdWx0aXBseVwiIFt8bSd8XVxuXG4gIGxldCBtMTEgbSA9IEp2LkZsb2F0LmdldCBtIFwibTExXCJcbiAgbGV0IG0xMiBtID0gSnYuRmxvYXQuZ2V0IG0gXCJtMTJcIlxuICBsZXQgbTEzIG0gPSBKdi5GbG9hdC5nZXQgbSBcIm0xM1wiXG4gIGxldCBtMTQgbSA9IEp2LkZsb2F0LmdldCBtIFwibTE0XCJcbiAgbGV0IG0yMSBtID0gSnYuRmxvYXQuZ2V0IG0gXCJtMjFcIlxuICBsZXQgbTIyIG0gPSBKdi5GbG9hdC5nZXQgbSBcIm0yMlwiXG4gIGxldCBtMjMgbSA9IEp2LkZsb2F0LmdldCBtIFwibTIzXCJcbiAgbGV0IG0yNCBtID0gSnYuRmxvYXQuZ2V0IG0gXCJtMjRcIlxuICBsZXQgbTMxIG0gPSBKdi5GbG9hdC5nZXQgbSBcIm0zMVwiXG4gIGxldCBtMzIgbSA9IEp2LkZsb2F0LmdldCBtIFwibTMyXCJcbiAgbGV0IG0zMyBtID0gSnYuRmxvYXQuZ2V0IG0gXCJtMzNcIlxuICBsZXQgbTM0IG0gPSBKdi5GbG9hdC5nZXQgbSBcIm0zNFwiXG4gIGxldCBtNDEgbSA9IEp2LkZsb2F0LmdldCBtIFwibTQxXCJcbiAgbGV0IG00MiBtID0gSnYuRmxvYXQuZ2V0IG0gXCJtNDJcIlxuICBsZXQgbTQzIG0gPSBKdi5GbG9hdC5nZXQgbSBcIm00M1wiXG4gIGxldCBtNDQgbSA9IEp2LkZsb2F0LmdldCBtIFwibTQ0XCJcbiAgbGV0IGEgbSA9IEp2LkZsb2F0LmdldCBtIFwiYVwiXG4gIGxldCBiIG0gPSBKdi5GbG9hdC5nZXQgbSBcImJcIlxuICBsZXQgYyBtID0gSnYuRmxvYXQuZ2V0IG0gXCJjXCJcbiAgbGV0IGQgbSA9IEp2LkZsb2F0LmdldCBtIFwiZFwiXG4gIGxldCBlIG0gPSBKdi5GbG9hdC5nZXQgbSBcImVcIlxuICBsZXQgZiBtID0gSnYuRmxvYXQuZ2V0IG0gXCJmXCJcblxuICBsZXQgZG9tbWF0cml4cm8gPSBKdi5nZXQgSnYuZ2xvYmFsIFwiRE9NTWF0cml4UmVhZE9ubHlcIlxuXG4gIGxldCB0b19mbG9hdDMyX2FycmF5IG0gPSBUYXJyYXkub2ZfanYgQEAgSnYuY2FsbCBtIFwidG9GbG9hdDMyQXJyYXlcIiBbfHxdXG4gIGxldCBvZl9mbG9hdDMyX2FycmF5IGEgPVxuICAgIEp2LmNhbGwgZG9tbWF0cml4cm8gXCJmcm9tRmxvYXQzMkFycmF5XCIgW3wgVGFycmF5LnRvX2p2IGEgfF1cblxuICBsZXQgdG9fZmxvYXQ2NF9hcnJheSBtID0gVGFycmF5Lm9mX2p2IEBAIEp2LmNhbGwgbSBcInRvRmxvYXQ2NEFycmF5XCIgW3x8XVxuICBsZXQgb2ZfZmxvYXQ2NF9hcnJheSBhID1cbiAgICBKdi5jYWxsIGRvbW1hdHJpeHJvIFwiZnJvbUZsb2F0NjRBcnJheVwiIFt8IFRhcnJheS50b19qdiBhIHxdXG5lbmRcblxubW9kdWxlIFZlYzQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSnYudFxuICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcbiAgbGV0IHY0ID0gSnYuZ2V0IEp2Lmdsb2JhbCBcIkRPTVBvaW50UmVhZE9ubHlcIlxuICBsZXQgdiB+eCB+eSB+eiB+dyA9XG4gICAgSnYubmV3JyB2NCBKdi5bfG9mX2Zsb2F0IHg7IG9mX2Zsb2F0IHk7IG9mX2Zsb2F0IHo7IG9mX2Zsb2F0IHc7fF1cblxuICBsZXQgdHIgbSB2ID0gSnYuY2FsbCB2IFwibWF0cml4VHJhbnNmb3JtXCIgW3wgTWF0cml4NC50b19qdiBtIHxdXG4gIGxldCB0b19qc29uIHYgPSBKdi5jYWxsIHYgXCJ0b0pTT05cIiBbfHxdXG4gIGxldCB4IHYgPSBKdi5GbG9hdC5nZXQgdiBcInhcIlxuICBsZXQgeSB2ID0gSnYuRmxvYXQuZ2V0IHYgXCJ5XCJcbiAgbGV0IHogdiA9IEp2LkZsb2F0LmdldCB2IFwielwiXG4gIGxldCB3IHYgPSBKdi5GbG9hdC5nZXQgdiBcIndcIlxuZW5kXG5cbm1vZHVsZSBDYW52YXMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSnYudFxuICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcblxuICBsZXQgY3JlYXRlID9kID9hdCA/KHcgPSAwKSA/KGggPSAwKSBjcyA9XG4gICAgbGV0IGMgPSBFbC50b19qdiBAQCBFbC5jYW52YXMgP2QgP2F0IGNzIGluXG4gICAgSnYuSW50LnNldCBjIFwid2lkdGhcIiB3OyBKdi5JbnQuc2V0IGMgXCJoZWlnaHRcIiBoO1xuICAgIGNcblxuICBsZXQgb2ZfZWwgZSA9XG4gICAgaWYgRWwuaGFzX3RhZ19uYW1lIEVsLk5hbWUuY2FudmFzIGUgdGhlbiAoRWwudG9fanYgZSkgZWxzZVxuICAgIGxldCBleHAgPSBKc3RyLnYgXCJFeHBlY3RlZCBjYW52YXMgZWxlbWVudCBidXQgZm91bmQ6IFwiIGluXG4gICAgSnYudGhyb3cgKEpzdHIuYXBwZW5kIGV4cCAoRWwudGFnX25hbWUgZSkpXG5cbiAgbGV0IHRvX2VsID0gRWwub2ZfanZcblxuICAoKiBEaW1lbnNpb25zICopXG5cbiAgbGV0IHcgYyA9IEp2LkludC5nZXQgYyBcIndpZHRoXCJcbiAgbGV0IGggYyA9IEp2LkludC5nZXQgYyBcImhlaWdodFwiXG4gIGxldCBzZXRfdyBjIHcgPSBKdi5JbnQuc2V0IGMgXCJ3aWR0aFwiIHdcbiAgbGV0IHNldF9oIGMgaCA9IEp2LkludC5zZXQgYyBcImhlaWdodFwiIGhcbiAgbGV0IHNldF9zaXplX3RvX2xheW91dF9zaXplID8oaGlkcGkgPSB0cnVlKSBjID1cbiAgICBsZXQgZHByID0gaWYgaGlkcGkgdGhlbiBXaW5kb3cuZGV2aWNlX3BpeGVsX3JhdGlvIEcud2luZG93IGVsc2UgMS4wIGluXG4gICAgbGV0IGN3ID0gRmxvYXQudG9faW50IEBAIEZsb2F0LmNlaWwgKGRwciAqLiBFbC5pbm5lcl93IChFbC5vZl9qdiBjKSkgaW5cbiAgICBsZXQgY2ggPSBGbG9hdC50b19pbnQgQEAgRmxvYXQuY2VpbCAoZHByICouIEVsLmlubmVyX2ggKEVsLm9mX2p2IGMpKSBpblxuICAgIGlmIHcgYyA8PiBjdyB8fCBoIGMgPD4gY2hcbiAgICB0aGVuIChzZXRfdyBjIGN3OyBzZXRfaCBjIGNoKVxuXG4gICgqIENvbnZlcnRpbmcgKilcblxuICB0eXBlIGltYWdlX2VuY29kZSA9IEp2LnQgKCogSW1hZ2VFbmNvZGVPcHRpb25zIG9iamVjdC4gKilcbiAgbGV0IGltYWdlX2VuY29kZSA/KHR5cGUnID0gSnN0ci52IFwiaW1hZ2UvcG5nXCIpID9xdWFsaXR5ICgpID1cbiAgICBsZXQgbyA9IEp2Lm9iaiBbfHxdIGluXG4gICAgSnYuSnN0ci5zZXQgbyBcInR5cGVcIiB0eXBlJztcbiAgICBKdi5GbG9hdC5zZXRfaWZfc29tZSBvIFwicXVhbGl0eVwiIHF1YWxpdHk7XG4gICAgb1xuXG4gIGxldCBlbmMgP2VuY29kZSBjIG1ldGggYXJnID1cbiAgICBsZXQgZW5jb2RlID0gbWF0Y2ggZW5jb2RlIHdpdGggTm9uZSAtPiBpbWFnZV9lbmNvZGUgKCkgfCBTb21lIGUgLT4gZSBpblxuICAgIGxldCB0ID0gSnYuZ2V0IGVuY29kZSBcInR5cGVcIiBpblxuICAgIGxldCBxID0gSnYuZmluZCBlbmNvZGUgXCJxdWFsaXR5XCIgaW5cbiAgICBsZXQgYXJncyA9IG1hdGNoIGFyZyB3aXRoXG4gICAgfCBOb25lIC0+IChtYXRjaCBxIHdpdGggTm9uZSAtPiBbfHR8XSB8IFNvbWUgcSAtPiBbfHQ7IHF8XSlcbiAgICB8IFNvbWUgYSAtPiAobWF0Y2ggcSB3aXRoIE5vbmUgLT4gW3xhOyB0fF0gfCBTb21lIHEgLT4gW3wgYTsgdDsgcXxdKVxuICAgIGluXG4gICAgSnYuY2FsbCBjIG1ldGggYXJnc1xuXG4gIGxldCB0b19kYXRhX3VybCA/ZW5jb2RlIGMgPSBtYXRjaCBlbmMgYyBcInRvRGF0YVVSTFwiIE5vbmUgd2l0aFxuICB8IGV4Y2VwdGlvbiBKdi5FcnJvciBlIC0+IEVycm9yIGVcbiAgfCB2IC0+IE9rIChKdi50b19qc3RyIHYpXG5cbiAgbGV0IHRvX2Jsb2IgP2VuY29kZSBjID1cbiAgICBsZXQgZnV0LCBzZXQgPSBGdXQuY3JlYXRlICgpIGluXG4gICAgbGV0IGNiIGJsb2IgPSBzZXQgKE9rIChKdi50b19vcHRpb24gQmxvYi5vZl9qdiBibG9iKSkgaW5cbiAgICBtYXRjaCBlbmMgYyBcInRvQmxvYlwiIChTb21lIChKdi5jYWxsYmFjayB+YXJpdHk6MSBjYikpIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBKdi5FcnJvciBlIC0+IHNldCAoRXJyb3IgZSk7IGZ1dFxuICAgIHwgXyAtPiBmdXRcblxuICBsZXQgY2FwdHVyZV9zdHJlYW0gfmh6IGMgPVxuICAgIGxldCBhcmdzID0gbWF0Y2ggaHogd2l0aCBOb25lIC0+IFt8fF0gfCBTb21lIGh6IC0+IFt8SnYub2ZfaW50IGh6fF0gaW5cbiAgICBCcnJfaW8uTWVkaWEuU3RyZWFtLm9mX2p2IEBAIEp2LmNhbGwgYyBcImNhcHR1cmVTdHJzZWFtXCIgYXJnc1xuZW5kXG5cbm1vZHVsZSBDMmQgPSBzdHJ1Y3RcblxuICAoKiBFbnVtZXJhdGlvbnMgKilcblxuICBtb2R1bGUgRmlsbF9ydWxlID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSnN0ci50XG4gICAgbGV0IG5vbnplcm8gPSBKc3RyLnYgXCJub256ZXJvXCJcbiAgICBsZXQgZXZlbm9kZCA9IEpzdHIudiBcImV2ZW5vZGRcIlxuICBlbmRcblxuICBtb2R1bGUgSW1hZ2Vfc21vb3RoaW5nX3F1YWxpdHkgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKc3RyLnRcbiAgICBsZXQgbG93ID0gSnN0ci52IFwibG93XCJcbiAgICBsZXQgbWVkaXVtID0gSnN0ci52IFwibWVkaXVtXCJcbiAgICBsZXQgaGlnaCA9IEpzdHIudiBcImhpZ2hcIlxuICBlbmRcblxuICBtb2R1bGUgTGluZV9jYXAgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKc3RyLnRcbiAgICBsZXQgYnV0dCA9IEpzdHIudiBcImJ1dHRcIlxuICAgIGxldCByb3VuZCA9IEpzdHIudiBcInJvdW5kXCJcbiAgICBsZXQgc3F1YXJlID0gSnN0ci52IFwic3F1YXJlXCJcbiAgZW5kXG5cbiAgbW9kdWxlIExpbmVfam9pbiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEpzdHIudFxuICAgIGxldCByb3VuZCA9IEpzdHIudiBcInJvdW5kXCJcbiAgICBsZXQgYmV2ZWwgPSBKc3RyLnYgXCJiZXZlbFwiXG4gICAgbGV0IG1pdGVyID0gSnN0ci52IFwibWl0ZXJcIlxuICBlbmRcblxuICBtb2R1bGUgVGV4dF9hbGlnbiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEpzdHIudFxuICAgIGxldCBzdGFydCA9IEpzdHIudiBcInN0YXJ0XCJcbiAgICBsZXQgZW5kJyA9IEpzdHIudiBcImVuZFwiXG4gICAgbGV0IGxlZnQgPSBKc3RyLnYgXCJsZWZ0XCJcbiAgICBsZXQgcmlnaHQgPSBKc3RyLnYgXCJyaWdodFwiXG4gICAgbGV0IGNlbnRlciA9IEpzdHIudiBcImNlbnRlclwiXG4gIGVuZFxuXG4gIG1vZHVsZSBUZXh0X2Jhc2VsaW5lID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSnN0ci50XG4gICAgbGV0IHRvcCA9IEpzdHIudiBcInRvcFwiXG4gICAgbGV0IGhhbmdpbmcgPSBKc3RyLnYgXCJoYW5naW5nXCJcbiAgICBsZXQgbWlkZGxlID0gSnN0ci52IFwibWlkZGxlXCJcbiAgICBsZXQgYWxwaGFiZXRpYyA9IEpzdHIudiBcImFscGhhYmV0aWNcIlxuICAgIGxldCBpZGVvZ3JhcGhpYyA9IEpzdHIudiBcImlkZW9ncmFwaGljXCJcbiAgICBsZXQgYm90dG9tID0gSnN0ci52IFwiYm90dG9tXCJcbiAgZW5kXG5cbiAgbW9kdWxlIFRleHRfZGlyZWN0aW9uID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSnN0ci50XG4gICAgbGV0IGx0ciA9IEpzdHIudiBcImx0clwiXG4gICAgbGV0IHJ0bCA9IEpzdHIudiBcInJ0bFwiXG4gICAgbGV0IGluaGVyaXQnID0gSnN0ci52IFwiaW5oZXJpdFwiXG4gIGVuZFxuXG4gIG1vZHVsZSBDb21wb3NpdGVfb3AgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKc3RyLnRcblxuICAgIGxldCBub3JtYWwgPSBKc3RyLnYgXCJub3JtYWxcIlxuICAgIGxldCBtdWx0aXBseSA9IEpzdHIudiBcIm11bHRpcGx5XCJcbiAgICBsZXQgc2NyZWVuID0gSnN0ci52IFwic2NyZWVuXCJcbiAgICBsZXQgb3ZlcmxheSA9IEpzdHIudiBcIm92ZXJsYXlcIlxuICAgIGxldCBkYXJrZW4gPSBKc3RyLnYgXCJkYXJrZW5cIlxuICAgIGxldCBsaWdodGVuID0gSnN0ci52IFwibGlnaHRlblwiXG4gICAgbGV0IGNvbG9yX2RvZGdlID0gSnN0ci52IFwiY29sb3ItZG9kZ2VcIlxuICAgIGxldCBjb2xvcl9idXJuID0gSnN0ci52IFwiY29sb3ItYnVyblwiXG4gICAgbGV0IGhhcmRfbGlnaHQgPSBKc3RyLnYgXCJoYXJkLWxpZ2h0XCJcbiAgICBsZXQgc29mdF9saWdodCA9IEpzdHIudiBcInNvZnQtbGlnaHRcIlxuICAgIGxldCBkaWZmZXJlbmNlID0gSnN0ci52IFwiZGlmZmVyZW5jZVwiXG4gICAgbGV0IGV4Y2x1c2lvbiA9IEpzdHIudiBcImV4Y2x1c2lvblwiXG4gICAgbGV0IGh1ZSA9IEpzdHIudiBcImh1ZVwiXG4gICAgbGV0IHNhdHVyYXRpb24gPSBKc3RyLnYgXCJzYXR1cmF0aW9uXCJcbiAgICBsZXQgY29sb3IgPSBKc3RyLnYgXCJjb2xvclwiXG4gICAgbGV0IGx1bWlub3NpdHkgPSBKc3RyLnYgXCJsdW1pbm9zaXR5XCJcbiAgICBsZXQgY2xlYXIgPSBKc3RyLnYgXCJjbGVhclwiXG4gICAgbGV0IGNvcHkgPSBKc3RyLnYgXCJjb3B5XCJcbiAgICBsZXQgc291cmNlX292ZXIgPSBKc3RyLnYgXCJzb3VyY2Utb3ZlclwiXG4gICAgbGV0IGRlc3RpbmF0aW9uX292ZXIgPSBKc3RyLnYgXCJkZXN0aW5hdGlvbi1vdmVyXCJcbiAgICBsZXQgc291cmNlX2luID0gSnN0ci52IFwic291cmNlLWluXCJcbiAgICBsZXQgZGVzdGluYXRpb25faW4gPSBKc3RyLnYgXCJkZXN0aW5hdGlvbi1pblwiXG4gICAgbGV0IHNvdXJjZV9vdXQgPSBKc3RyLnYgXCJzb3VyY2Utb3V0XCJcbiAgICBsZXQgZGVzdGluYXRpb25fb3V0ID0gSnN0ci52IFwiZGVzdGluYXRpb24tb3V0XCJcbiAgICBsZXQgc291cmNlX2F0b3AgPSBKc3RyLnYgXCJzb3VyY2UtYXRvcFwiXG4gICAgbGV0IGRlc3RpbmF0aW9uX2F0b3AgPSBKc3RyLnYgXCJkZXN0aW5hdGlvbi1hdG9wXCJcbiAgICBsZXQgeG9yID0gSnN0ci52IFwieG9yXCJcbiAgICBsZXQgbGlnaHRlciA9IEpzdHIudiBcImxpZ2h0ZXJcIlxuICAgIGxldCBwbHVzX2RhcmtlciA9IEpzdHIudiBcInBsdXMtZGFya2VyXCJcbiAgICBsZXQgcGx1c19saWdodGVyID0gSnN0ci52IFwicGx1cy1saWdodGVyXCJcbiAgZW5kXG5cbiAgbW9kdWxlIFJlcGVhdCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEpzdHIudFxuICAgIGxldCB4eSA9IEpzdHIudiBcInJlcGVhdFwiXG4gICAgbGV0IHggPSBKc3RyLnYgXCJyZXBlYXQteFwiXG4gICAgbGV0IHkgPSBKc3RyLnYgXCJyZXBlYXQteVwiXG4gICAgbGV0IG5vID0gSnN0ci52IFwibm8tcmVwZWF0XCJcbiAgZW5kXG5cbiAgbW9kdWxlIFBhdGggPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKdi50XG4gICAgbGV0IHBhdGggPSBKdi5nZXQgSnYuZ2xvYmFsIFwiUGF0aDJEXCJcbiAgICBsZXQgY3JlYXRlICgpID0gSnYubmV3JyBwYXRoIFt8fF1cbiAgICBsZXQgb2Zfc3ZnIHN2ZyA9IEp2Lm5ldycgcGF0aCBbfCBKdi5vZl9qc3RyIHN2ZyB8XVxuICAgIGxldCBvZl9wYXRoIHAgPSBKdi5uZXcnIHBhdGggW3wgcCB8XVxuICAgIGxldCBhZGQgP3RyIHAgcCcgPVxuICAgICAgaWdub3JlIEBAIEp2LmNhbGwgcCBcImFkZFBhdGhcIlxuICAgICAgICAobWF0Y2ggdHIgd2l0aCBOb25lIC0+IFt8cCd8XSB8IFNvbWUgdCAtPiBbfHAnOyBNYXRyaXg0LnRvX2p2IHR8XSlcblxuICAgIGxldCBjbG9zZSBwID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIHAgXCJjbG9zZVBhdGhcIiBbfHxdXG5cbiAgICBsZXQgbW92ZV90byBwIH54IH55ID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIHAgXCJtb3ZlVG9cIiBKdi5bfCBvZl9mbG9hdCB4OyBvZl9mbG9hdCB5IHxdXG5cbiAgICBsZXQgbGluZV90byBwIH54IH55ID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIHAgXCJsaW5lVG9cIiBKdi5bfCBvZl9mbG9hdCB4OyBvZl9mbG9hdCB5IHxdXG5cbiAgICBsZXQgcWN1cnZlX3RvIHAgfmN4IH5jeSB+eCB+eSA9XG4gICAgICBpZ25vcmUgQEAgSnYuY2FsbCBwIFwicXVhZHJhdGljQ3VydmVUb1wiXG4gICAgICAgIEp2Llt8IG9mX2Zsb2F0IGN4OyBvZl9mbG9hdCBjeTsgb2ZfZmxvYXQgeDsgb2ZfZmxvYXQgeSB8XVxuXG4gICAgbGV0IGNjdXJ2ZV90byBwIH5jeCB+Y3kgfmN4JyB+Y3knIH54IH55ID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIHAgXCJiZXppZXJDdXJ2ZVRvXCJcbiAgICAgICAgSnYuW3wgb2ZfZmxvYXQgY3g7IG9mX2Zsb2F0IGN5OyBvZl9mbG9hdCBjeCc7IG9mX2Zsb2F0IGN5JztcbiAgICAgICAgICAgICAgb2ZfZmxvYXQgeDsgb2ZfZmxvYXQgeXxdXG5cbiAgICBsZXQgYXJjX3RvIHAgfmN4IH5jeSB+Y3gnIH5jeScgfnIgPVxuICAgICAgaWdub3JlIEBAIEp2LmNhbGwgcCBcImFyY1RvXCJcbiAgICAgICAgSnYuW3wgb2ZfZmxvYXQgY3g7IG9mX2Zsb2F0IGN5OyBvZl9mbG9hdCBjeCc7IG9mX2Zsb2F0IGN5Jzsgb2ZfZmxvYXQgcnxdXG5cbiAgICBsZXQgYXJjID8oYW50aWNsb2Nrd2lzZSA9IGZhbHNlKSBwIH5jeCB+Y3kgfnIgfnN0YXJ0IH5zdG9wID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIHAgXCJhcmNcIlxuICAgICAgICBKdi5bfCBvZl9mbG9hdCBjeDsgb2ZfZmxvYXQgY3k7IG9mX2Zsb2F0IHI7IG9mX2Zsb2F0IHN0YXJ0O1xuICAgICAgICAgICAgICBvZl9mbG9hdCBzdG9wOyBvZl9ib29sIGFudGljbG9ja3dpc2UgfF1cblxuICAgIGxldCByZWN0IHAgfnggfnkgfncgfmggPVxuICAgICAgaWdub3JlIEBAICBKdi5jYWxsIHAgXCJyZWN0XCJcbiAgICAgICAgSnYuW3wgb2ZfZmxvYXQgeDsgb2ZfZmxvYXQgeTsgb2ZfZmxvYXQgdzsgb2ZfZmxvYXQgaCB8XVxuXG4gICAgbGV0IGVsbGlwc2UgPyhhbnRpY2xvY2t3aXNlID0gZmFsc2UpIHAgfmN4IH5jeSB+cnggfnJ5IH5yb3QgfnN0YXJ0IH5zdG9wID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIHAgXCJlbGxpcHNlXCJcbiAgICAgICAgSnYuW3wgb2ZfZmxvYXQgY3g7IG9mX2Zsb2F0IGN5OyBvZl9mbG9hdCByeDsgb2ZfZmxvYXQgcnk7IG9mX2Zsb2F0IHJvdDtcbiAgICAgICAgICAgICAgb2ZfZmxvYXQgc3RhcnQ7IG9mX2Zsb2F0IHN0b3A7IG9mX2Jvb2wgYW50aWNsb2Nrd2lzZSB8XVxuXG4gICAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG4gIGVuZFxuXG4gICgqIEltYWdlIHNvdXJjZXMgKilcblxuICB0eXBlIGltYWdlX3NyYyA9IEp2LnRcbiAgbGV0IGltYWdlX3NyY19vZl9lbCA9IEVsLnRvX2p2XG4gIGxldCBpbWFnZV9zcmNfb2ZfanYgPSBGdW4uaWRcblxuICAoKiBBdHRyaWJ1dGVzICopXG5cbiAgdHlwZSBhdHRycyA9IEp2LnRcblxuICBsZXQgY3JlYXRlX2F0dHJzXG4gICAgICA/YWxwaGEgP2NvbG9yX3NwYWNlID9kZXN5bmNocm9uaXplZCA/d2lsbF9yZWFkX2ZyZXF1ZW50bHkgKClcbiAgICA9XG4gICAgbGV0IG8gPSBKdi5vYmogW3x8XSBpblxuICAgIEp2LkJvb2wuc2V0X2lmX3NvbWUgbyBcImFscGhhXCIgYWxwaGE7XG4gICAgSnYuSnN0ci5zZXRfaWZfc29tZSBvIFwiY29sb3JTcGFjZVwiIGNvbG9yX3NwYWNlO1xuICAgIEp2LkJvb2wuc2V0X2lmX3NvbWUgbyBcImRlc3luY2hyb25pemVkXCIgZGVzeW5jaHJvbml6ZWQ7XG4gICAgSnYuQm9vbC5zZXRfaWZfc29tZSBvIFwid2lsbFJlYWRGcmVxdWVudGx5XCIgd2lsbF9yZWFkX2ZyZXF1ZW50bHk7XG4gICAgb1xuXG4gIGxldCBhdHRyc19hbHBoYSBvID0gSnYuQm9vbC5nZXQgbyBcImFscGhhXCJcbiAgbGV0IGF0dHJzX2NvbG9yX3NwYWNlIG8gPVxuICAgICgqIFRoaXMgY2FuIGJlIGdldCBvbmNlIEZGIHN1cHBvcnRzIHRoZSBwcm9wZXJ0eS4gKilcbiAgICBPcHRpb24udmFsdWUgfmRlZmF1bHQ6SnN0ci5lbXB0eSAoSnYuSnN0ci5maW5kIG8gXCJjb2xvclNwYWNlXCIpXG5cbiAgbGV0IGF0dHJzX2Rlc3luY2hyb25pemVkIG8gPSBKdi5Cb29sLmdldCBvIFwiZGVzeW5jaHJvbml6ZWRcIlxuICBsZXQgYXR0cnNfd2lsbF9yZWFkX2ZyZXF1ZW50bHkgbyA9IEp2LkJvb2wuZ2V0IG8gXCJ3aWxsUmVhZEZyZXF1ZW50bHlcIlxuXG4gIHR5cGUgdCA9IEp2LnRcbiAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG4gIGxldCBnZXRfY29udGV4dCA/KGF0dHJzID0gSnYudW5kZWZpbmVkKSBjbnYgPVxuICAgIEp2LmNhbGwgY252IFwiZ2V0Q29udGV4dFwiIEp2Llt8IG9mX3N0cmluZyBcIjJkXCI7IGF0dHJzIHxdXG5cbiAgbGV0IGNyZWF0ZSA9IGdldF9jb250ZXh0XG5cbiAgbGV0IGNhbnZhcyBjID0gSnYuZmluZF9tYXAgQ2FudmFzLm9mX2p2IGMgXCJjYW52YXNcIlxuICBsZXQgYXR0cnMgYyA9IEp2LmNhbGwgYyBcImdldENvbnRleHRBdHRyaWJ1dGVzXCIgW3x8XVxuICBsZXQgc2F2ZSBjID0gaWdub3JlIEBAIEp2LmNhbGwgYyBcInNhdmVcIiBbfHxdXG4gIGxldCByZXN0b3JlIGMgPSBpZ25vcmUgQEAgSnYuY2FsbCBjIFwicmVzdG9yZVwiIFt8fF1cblxuICAoKiBBbnRpYWxpYXNpbmcgKilcblxuICBsZXQgaW1hZ2Vfc21vb3RoaW5nX2VuYWJsZWQgYyA9IEp2LkJvb2wuZ2V0IGMgXCJpbWFnZVNtb290aGluZ0VuYWJsZWRcIlxuICBsZXQgc2V0X2ltYWdlX3Ntb290aGluZ19lbmFibGVkIGMgYiA9IEp2LkJvb2wuc2V0IGMgXCJpbWFnZVNtb290aGluZ0VuYWJsZWRcIiBiXG4gIGxldCBpbWFnZV9zbW9vdGhpbmdfcXVhbGl0eSBjID0gSnYuSnN0ci5nZXQgYyBcImltYWdlU21vb3RoaW5nUXVhbGl0eVwiXG4gIGxldCBzZXRfaW1hZ2Vfc21vb3RoaW5nX3F1YWxpdHkgYyB2ID0gSnYuSnN0ci5zZXQgYyBcImltYWdlU21vb3RoaW5nUXVhbGl0eVwiIHZcblxuICAoKiBDb21wb3NpdGluZyAqKVxuXG4gIGxldCBnbG9iYWxfYWxwaGEgYyA9IEp2LkZsb2F0LmdldCBjIFwiZ2xvYmFsQWxwaGFcIlxuICBsZXQgc2V0X2dsb2JhbF9hbHBoYSBjIGEgPSBKdi5GbG9hdC5zZXQgYyBcImdsb2JhbEFscGhhXCIgYVxuICBsZXQgZ2xvYmFsX2NvbXBvc2l0ZV9vcCBjID0gSnYuSnN0ci5nZXQgYyBcImdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvblwiXG4gIGxldCBzZXRfZ2xvYmFsX2NvbXBvc2l0ZV9vcCBjIG8gPSBKdi5Kc3RyLnNldCBjIFwiZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uXCIgb1xuICBsZXQgZmlsdGVyIGMgPSBKdi5Kc3RyLmdldCBjIFwiZmlsdGVyXCJcbiAgbGV0IHNldF9maWx0ZXIgYyBmID0gSnYuSnN0ci5zZXQgYyBcImZpbHRlclwiIGZcblxuICAoKiBUcmFuc2Zvcm1zICopXG5cbiAgbGV0IGdldF90cmFuc2Zvcm0gYyA9IE1hdHJpeDQub2ZfanYgQEAgSnYuY2FsbCBjIFwiZ2V0VHJhbnNmb3JtXCIgW3x8XVxuICBsZXQgc2V0X3RyYW5zZm9ybSBjIG0gPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJzZXRUcmFuc2Zvcm1cIiBbfCBNYXRyaXg0LnRvX2p2IG0gfF1cblxuICBsZXQgc2V0X3RyYW5zZm9ybScgY3R4IH5hIH5iIH5jIH5kIH5lIH5mID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjdHggXCJzZXRUcmFuc2Zvcm1cIlxuICAgICAgSnYuW3wgb2ZfZmxvYXQgYTsgb2ZfZmxvYXQgYjsgb2ZfZmxvYXQgYzsgb2ZfZmxvYXQgZDtcbiAgICAgICAgICAgIG9mX2Zsb2F0IGU7IG9mX2Zsb2F0IGYgfF1cblxuICBsZXQgcmVzZXRfdHJhbnNmb3JtIGMgPSBpZ25vcmUgQEAgSnYuY2FsbCBjIFwicmVzZXRUcmFuc2Zvcm1cIiBbfHxdXG4gIGxldCB0cmFuc2Zvcm0gYyBtID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidHJhbnNmb3JtXCJcbiAgICAgIEp2Llt8IG9mX2Zsb2F0IChNYXRyaXg0LmEgbSk7IG9mX2Zsb2F0IChNYXRyaXg0LmIgbSk7XG4gICAgICAgICAgICBvZl9mbG9hdCAoTWF0cml4NC5jIG0pOyBvZl9mbG9hdCAoTWF0cml4NC5kIG0pO1xuICAgICAgICAgICAgb2ZfZmxvYXQgKE1hdHJpeDQuZSBtKTsgb2ZfZmxvYXQgKE1hdHJpeDQuZiBtKSB8XVxuXG4gIGxldCB0cmFuc2Zvcm0nIGN0eCB+YSB+YiB+YyB+ZCB+ZSB+ZiA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgY3R4IFwidHJhbnNmb3JtXCJcbiAgICAgIEp2Llt8IG9mX2Zsb2F0IGE7IG9mX2Zsb2F0IGI7IG9mX2Zsb2F0IGM7IG9mX2Zsb2F0IGQ7XG4gICAgICAgICAgICBvZl9mbG9hdCBlOyBvZl9mbG9hdCBmIHxdXG5cbiAgbGV0IHRyYW5zbGF0ZSBjIH54IH55ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidHJhbnNsYXRlXCIgSnYuW3wgb2ZfZmxvYXQgeDsgb2ZfZmxvYXQgeSB8XVxuXG4gIGxldCByb3RhdGUgYyByID0gaWdub3JlIEBAIEp2LmNhbGwgYyBcInJvdGF0ZVwiIEp2Llt8IG9mX2Zsb2F0IHIgfF1cbiAgbGV0IHNjYWxlIGMgfnN4IH5zeSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInNjYWxlXCIgSnYuW3wgb2ZfZmxvYXQgc3g7IG9mX2Zsb2F0IHN5IHxdXG5cbiAgKCogU3R5bGUgZmlsbHMgYW5kIHN0cm9rZXMgKilcblxuICB0eXBlIHN0eWxlID0gSnYudFxuICBsZXQgc2V0X3N0cm9rZV9zdHlsZSBjIHMgPSBKdi5zZXQgYyBcInN0cm9rZVN0eWxlXCIgc1xuICBsZXQgc2V0X2ZpbGxfc3R5bGUgYyBzID0gSnYuc2V0IGMgXCJmaWxsU3R5bGVcIiBzXG4gIGxldCBjb2xvciA9IEp2Lm9mX2pzdHJcblxuICB0eXBlIGdyYWRpZW50ID0gSnYudFxuICBsZXQgZ3JhZGllbnRfc3R5bGUgPSBGdW4uaWRcblxuICBsZXQgbWFrZV9zdG9wcyBnIHN0b3BzID1cbiAgICBsZXQgYWRkX3N0b3AgZyAob2ZmLCBjKSA9XG4gICAgICBpZ25vcmUgQEAgSnYuY2FsbCBnIFwiYWRkQ29sb3JTdG9wXCIgSnYuW3wgb2ZfZmxvYXQgb2ZmOyBvZl9qc3RyIGMgfF1cbiAgICBpblxuICAgIExpc3QuaXRlciAoYWRkX3N0b3AgZykgc3RvcHNcblxuICBsZXQgbGluZWFyX2dyYWRpZW50IGMgfngwIH55MCB+eDEgfnkxIH5zdG9wcyA9XG4gICAgbGV0IGcgPVxuICAgICAgSnYuY2FsbCBjIFwiY3JlYXRlTGluZWFyR3JhZGllbnRcIlxuICAgICAgICBKdi5bfCBvZl9mbG9hdCB4MDsgb2ZfZmxvYXQgeTA7IG9mX2Zsb2F0IHgxOyBvZl9mbG9hdCB5MSB8XVxuICAgIGluXG4gICAgbWFrZV9zdG9wcyBnIHN0b3BzOyBnXG5cbiAgbGV0IHJhZGlhbF9ncmFkaWVudCBjIH54MCB+eTAgfnIwIH54MSB+eTEgfnIxIH5zdG9wcyA9XG4gICAgbGV0IGcgPVxuICAgICAgSnYuY2FsbCBjIFwiY3JlYXRlUmFkaWFsR3JhZGllbnRcIlxuICAgICAgICBKdi5bfCBvZl9mbG9hdCB4MDsgb2ZfZmxvYXQgeTA7IG9mX2Zsb2F0IHIwO1xuICAgICAgICAgICAgICBvZl9mbG9hdCB4MTsgb2ZfZmxvYXQgeTE7IG9mX2Zsb2F0IHIxOyB8XVxuICAgIGluXG4gICAgbWFrZV9zdG9wcyBnIHN0b3BzOyBnXG5cbiAgdHlwZSBwYXR0ZXJuID0gSnYudFxuICBsZXQgcGF0dGVybiBjIGltZyByIH50ciA9XG4gICAgbGV0IHAgPSBKdi5jYWxsIGMgXCJjcmVhdGVQYXR0ZXJuXCIgW3xpbWc7IEp2Lm9mX2pzdHIgcnxdIGluXG4gICAgbWF0Y2ggdHIgd2l0aFxuICAgIHwgTm9uZSAtPiBwXG4gICAgfCBTb21lIHQgLT4gaWdub3JlIEBAIEp2LmNhbGwgcCBcInNldFRyYW5zZm9ybVwiIFt8IE1hdHJpeDQudG9fanYgdCB8XTsgcFxuXG4gIGxldCBwYXR0ZXJuX3N0eWxlID0gRnVuLmlkXG5cbiAgKCogU3R5bGUgbGluZXMgKilcblxuICBsZXQgbGluZV93aWR0aCBjID0gSnYuRmxvYXQuZ2V0IGMgXCJsaW5lV2lkdGhcIlxuICBsZXQgc2V0X2xpbmVfd2lkdGggYyB3ID0gSnYuRmxvYXQuc2V0IGMgXCJsaW5lV2lkdGhcIiB3XG4gIGxldCBsaW5lX2NhcCBjID0gSnYuSnN0ci5nZXQgYyBcImxpbmVDYXBcIlxuICBsZXQgc2V0X2xpbmVfY2FwIGMgY2FwID0gSnYuSnN0ci5zZXQgYyBcImxpbmVDYXBcIiBjYXBcbiAgbGV0IGxpbmVfam9pbiBjID0gSnYuSnN0ci5nZXQgYyBcImxpbmVKb2luXCJcbiAgbGV0IHNldF9saW5lX2pvaW4gYyBqb2luID0gSnYuSnN0ci5zZXQgYyBcImxpbmVKb2luXCIgam9pblxuICBsZXQgbWl0ZXJfbGltaXQgYyA9IEp2LkZsb2F0LmdldCBjIFwibWl0ZXJMaW1pdFwiXG4gIGxldCBzZXRfbWl0ZXJfbGltaXQgYyBsID0gSnYuRmxvYXQuc2V0IGMgXCJtaXRlckxpbWl0XCIgbFxuICBsZXQgbGluZV9kYXNoIGMgPSBKdi50b19saXN0IEp2LnRvX2Zsb2F0IEBAIEp2LmNhbGwgYyBcImdldExpbmVEYXNoXCIgW3x8XVxuICBsZXQgc2V0X2xpbmVfZGFzaCBjIGRzID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwic2V0TGluZURhc2hcIiBbfEp2Lm9mX2xpc3QgSnYub2ZfZmxvYXQgZHN8XVxuXG4gIGxldCBsaW5lX2Rhc2hfb2Zmc2V0IGMgPSBKdi5GbG9hdC5nZXQgYyBcImxpbmVEYXNoT2Zmc2V0XCJcbiAgbGV0IHNldF9saW5lX2Rhc2hfb2Zmc2V0IGMgbyA9IEp2LkZsb2F0LnNldCBjIFwibGluZURhc2hPZmZzZXRcIiBvXG5cbiAgKCogU3R5bGUgc2hhZG93cyAqKVxuXG4gIGxldCBzaGFkb3dfYmx1ciBjID0gSnYuRmxvYXQuZ2V0IGMgXCJzaGFkb3dCbHVyXCJcbiAgbGV0IHNldF9zaGFkb3dfYmx1ciBjIGIgPSBKdi5GbG9hdC5zZXQgYyBcInNoYWRvd0JsdXJcIiBiXG4gIGxldCBzaGFkb3dfb2Zmc2V0X3ggYyA9IEp2LkZsb2F0LmdldCBjIFwic2hhZG93T2Zmc2V0WFwiXG4gIGxldCBzZXRfc2hhZG93X29mZnNldF94IGMgbyA9IEp2LkZsb2F0LnNldCBjIFwic2hhZG93T2Zmc2V0WFwiIG9cbiAgbGV0IHNoYWRvd19vZmZzZXRfeSBjID0gSnYuRmxvYXQuZ2V0IGMgXCJzaGFkb3dPZmZzZXRZXCJcbiAgbGV0IHNldF9zaGFkb3dfb2Zmc2V0X3kgYyBvID0gSnYuRmxvYXQuc2V0IGMgXCJzaGFkb3dPZmZzZXRZXCIgb1xuICBsZXQgc2hhZG93X2NvbG9yIGMgPSBKdi5Kc3RyLmdldCBjIFwic2hhZG93Q29sb3JcIlxuICBsZXQgc2V0X3NoYWRvd19jb2xvciBjIGNvbCA9IEp2LkpzdHIuc2V0IGMgXCJzaGFkb3dDb2xvclwiIGNvbFxuXG4gICgqIFN0eWxlIHRleHQgKilcblxuICBsZXQgZm9udCBjID0gSnYuSnN0ci5nZXQgYyBcImZvbnRcIlxuICBsZXQgc2V0X2ZvbnQgYyBmID0gSnYuSnN0ci5zZXQgYyBcImZvbnRcIiBmXG4gIGxldCB0ZXh0X2FsaWduIGMgPSBKdi5Kc3RyLmdldCBjIFwidGV4dEFsaWduXCJcbiAgbGV0IHNldF90ZXh0X2FsaWduIGMgYSA9IEp2LkpzdHIuc2V0IGMgXCJ0ZXh0QWxpZ25cIiBhXG4gIGxldCB0ZXh0X2Jhc2VsaW5lIGMgPSBKdi5Kc3RyLmdldCBjIFwidGV4dEJhc2VsaW5lXCJcbiAgbGV0IHNldF90ZXh0X2Jhc2VsaW5lIGMgYiA9IEp2LkpzdHIuc2V0IGMgXCJ0ZXh0QmFzZWxpbmVcIiBiXG4gIGxldCB0ZXh0X2RpcmVjdGlvbiBjID0gSnYuSnN0ci5nZXQgYyBcImRpcmVjdGlvblwiXG4gIGxldCBzZXRfdGV4dF9kaXJlY3Rpb24gYyBkID0gSnYuSnN0ci5zZXQgYyBcImRpcmVjdGlvblwiIGRcblxuICAoKiBEcmF3IHJlY3RhbmdsZXMgKilcblxuICBsZXQgY2xlYXJfcmVjdCBjIH54IH55IH53IH5oID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiY2xlYXJSZWN0XCJcbiAgICAgIEp2Llt8IG9mX2Zsb2F0IHg7IG9mX2Zsb2F0IHk7IG9mX2Zsb2F0IHc7IG9mX2Zsb2F0IGggfF1cblxuICBsZXQgZmlsbF9yZWN0IGMgfnggfnkgfncgfmggPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJmaWxsUmVjdFwiXG4gICAgICBKdi5bfCBvZl9mbG9hdCB4OyBvZl9mbG9hdCB5OyBvZl9mbG9hdCB3OyBvZl9mbG9hdCBoIHxdXG5cbiAgbGV0IHN0cm9rZV9yZWN0IGMgfnggfnkgfncgfmggPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJzdHJva2VSZWN0XCJcbiAgICAgIEp2Llt8IG9mX2Zsb2F0IHg7IG9mX2Zsb2F0IHk7IG9mX2Zsb2F0IHc7IG9mX2Zsb2F0IGggfF1cblxuICAoKiBEcmF3IHBhdGhzICopXG5cbiAgbGV0IGZpbGwgPyhmaWxsX3J1bGUgPSBGaWxsX3J1bGUubm9uemVybykgYyBwID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZmlsbFwiIFt8IHA7IEp2Lm9mX2pzdHIgZmlsbF9ydWxlIHxdXG5cbiAgbGV0IHN0cm9rZSBjIHAgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJzdHJva2VcIiBbfCBwIHxdXG5cbiAgbGV0IGNsaXAgPyhmaWxsX3J1bGUgPSBGaWxsX3J1bGUubm9uemVybykgYyBwID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiY2xpcFwiIFt8IHA7IEp2Lm9mX2pzdHIgZmlsbF9ydWxlIHxdXG5cbiAgbGV0IGRyYXdfZm9jdXNfaWZfbmVlZGVkIGMgcCBlID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZHJhd0ZvY3VzSWZOZWVkZWRcIiBbfCBwOyBFbC50b19qdiBlIHxdXG5cbiAgbGV0IHNjcm9sbF9wYXRoX2ludG9fdmlldyBjIHAgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJzY3JvbGxQYXRoSW50b1ZpZXdcIiBbfCBwIHxdXG5cbiAgbGV0IGlzX3BvaW50X2luX2ZpbGwgPyhmaWxsX3J1bGUgPSBGaWxsX3J1bGUubm9uemVybykgYyBwIH54IH55ID1cbiAgICBKdi50b19ib29sIEBAIEp2LmNhbGwgYyBcImlzUG9pbnRJblBhdGhcIlxuICAgICAgSnYuW3wgcDsgb2ZfZmxvYXQgeDsgb2ZfZmxvYXQgeTsgb2ZfanN0ciBmaWxsX3J1bGUgfF1cblxuICBsZXQgaXNfcG9pbnRfaW5fc3Ryb2tlIGMgcCB+eCB+eSA9XG4gICAgSnYudG9fYm9vbCBAQCBKdi5jYWxsIGMgXCJpc1BvaW50SW5TdHJva2VcIlxuICAgICAgSnYuW3wgcDsgb2ZfZmxvYXQgeDsgb2ZfZmxvYXQgeTsgfF1cblxuICAoKiBEcmF3IHRleHQgKilcblxuICBsZXQgY2FsbF90ZXh0IGMgbWV0aCA/bWF4X3dpZHRoIHR4dCB+eCB+eSA9XG4gICAgbGV0IGFyZ3MgPSBtYXRjaCBtYXhfd2lkdGggd2l0aFxuICAgIHwgTm9uZSAtPiBKdi5bfG9mX2pzdHIgdHh0OyBvZl9mbG9hdCB4OyBvZl9mbG9hdCB5IHxdXG4gICAgfCBTb21lIG0gLT4gSnYuW3xvZl9qc3RyIHR4dDsgb2ZfZmxvYXQgeDsgb2ZfZmxvYXQgeTsgb2ZfZmxvYXQgbSB8XVxuICAgIGluXG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBtZXRoIGFyZ3NcblxuICBsZXQgZmlsbF90ZXh0ID9tYXhfd2lkdGggYyB0eHQgfnggfnkgPVxuICAgIGNhbGxfdGV4dCBjIFwiZmlsbFRleHRcIiA/bWF4X3dpZHRoIHR4dCB+eCB+eVxuXG4gIGxldCBzdHJva2VfdGV4dCA/bWF4X3dpZHRoIGMgdHh0IH54IH55ID1cbiAgICBjYWxsX3RleHQgYyBcInN0cm9rZVRleHRcIiA/bWF4X3dpZHRoIHR4dCB+eCB+eVxuXG4gIG1vZHVsZSBUZXh0X21ldHJpY3MgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKdi50XG4gICAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG4gICAgbGV0IHdpZHRoIG0gPSBKdi5GbG9hdC5nZXQgbSBcIndpZHRoXCJcbiAgICBsZXQgYWN0dWFsX2JvdW5kaW5nX2JveF9sZWZ0IG0gPSBKdi5GbG9hdC5nZXQgbSBcImFjdHVhbEJvdW5kaW5nQm94TGVmdFwiXG4gICAgbGV0IGFjdHVhbF9ib3VuZGluZ19ib3hfcmlnaHQgbSA9IEp2LkZsb2F0LmdldCBtIFwiYWN0dWFsQm91bmRpbmdCb3hSaWdodFwiXG4gICAgbGV0IGZvbnRfYm91bmRpbmdfYm94X2FzY2VudCBtID0gSnYuRmxvYXQuZ2V0IG0gXCJmb250Qm91bmRpbmdCb3hBc2NlbnRcIlxuICAgIGxldCBmb250X2JvdW5kaW5nX2JveF9kZXNjZW50IG0gPSBKdi5GbG9hdC5nZXQgbSBcImZvbnRCb3VuZGluZ0JveERlc2NlbnRcIlxuICAgIGxldCBhY3R1YWxfYm91bmRpbmdfYm94X2FzY2VudCBtID0gSnYuRmxvYXQuZ2V0IG0gXCJhY3R1YWxCb3VuZGluZ0JveEFzY2VudFwiXG4gICAgbGV0IGFjdHVhbF9ib3VuZGluZ19ib3hfZGVzY2VudCBtID1cbiAgICAgIEp2LkZsb2F0LmdldCBtIFwiYWN0dWFsQm91bmRpbmdCb3hEZXNjZW50XCJcbiAgICBsZXQgZW1faGVpZ2h0X2FzY2VudCBtID0gSnYuRmxvYXQuZ2V0IG0gXCJlbUhlaWdodEFzY2VudFwiXG4gICAgbGV0IGVtX2hlaWdodF9kZXNjZW50IG0gPSBKdi5GbG9hdC5nZXQgbSBcImVtSGVpZ2h0RGVzY2VudFwiXG4gICAgbGV0IGhhbmdpbmdfYmFzZWxpbmUgbSA9IEp2LkZsb2F0LmdldCBtIFwiaGFuZ2luZ0Jhc2VsaW5lXCJcbiAgICBsZXQgYWxwaGFiZXRpY19iYXNlbGluZSBtID0gSnYuRmxvYXQuZ2V0IG0gXCJhbHBoYWJldGljQmFzZWxpbmVcIlxuICAgIGxldCBpZGVvZ3JhcGhpY19iYXNlbGluZSBtID0gSnYuRmxvYXQuZ2V0IG0gXCJpZGVvZ3JhcGhpY0Jhc2VsaW5lXCJcbiAgZW5kXG5cbiAgbGV0IG1lYXN1cmVfdGV4dCBjIHR4dCA9XG4gICAgVGV4dF9tZXRyaWNzLm9mX2p2IEBAIEp2LmNhbGwgYyBcIm1lYXN1cmVUZXh0XCIgW3wgSnYub2ZfanN0ciB0eHQgfF1cblxuICAoKiBEcmF3IGltYWdlcyAqKVxuXG4gIGxldCBkcmF3X2ltYWdlIGMgaSB+eCB+eSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImRyYXdJbWFnZVwiIEp2Llt8IGk7IG9mX2Zsb2F0IHg7IG9mX2Zsb2F0IHkgfF1cblxuICBsZXQgZHJhd19pbWFnZV9pbl9yZWN0IGMgaSB+eCB+eSB+dyB+aCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImRyYXdJbWFnZVwiXG4gICAgICBKdi5bfCBpOyBvZl9mbG9hdCB4OyBvZl9mbG9hdCB5OyBvZl9mbG9hdCB3OyBvZl9mbG9hdCBoIHxdXG5cbiAgbGV0IGRyYXdfc3ViX2ltYWdlX2luX3JlY3QgYyBpIH5zeCB+c3kgfnN3IH5zaCB+eCB+eSB+dyB+aCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImRyYXdJbWFnZVwiXG4gICAgICBKdi5bfCBpO1xuICAgICAgICAgICAgb2ZfZmxvYXQgc3g7IG9mX2Zsb2F0IHN5OyBvZl9mbG9hdCBzdzsgb2ZfZmxvYXQgc2g7XG4gICAgICAgICAgICBvZl9mbG9hdCB4OyBvZl9mbG9hdCB5OyBvZl9mbG9hdCB3OyBvZl9mbG9hdCBoIHxdXG5cbiAgKCogUGl4ZWwgbWFuaXB1bGF0aW9ucyAqKVxuXG4gIG1vZHVsZSBJbWFnZV9kYXRhID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSnYudFxuICAgIGluY2x1ZGUgKEp2LklkIDogSnYuQ09OViB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gICAgbGV0IHNldHRpbmdzID9jb2xvcl9zcGFjZSAoKSA9IG1hdGNoIGNvbG9yX3NwYWNlIHdpdGhcbiAgICB8IE5vbmUgLT4gSnYudW5kZWZpbmVkXG4gICAgfCBTb21lIGNzIC0+XG4gICAgICAgIGxldCBvID0gSnYub2JqIFt8fF0gaW5cbiAgICAgICAgSnYuSnN0ci5zZXQgbyBcImNvbG9yU3BhY2VcIiBjczsgb1xuXG4gICAgbGV0IGltYWdlX2RhdGEgPSBKdi5nZXQgSnYuZ2xvYmFsIFwiSW1hZ2VEYXRhXCJcbiAgICBsZXQgY3JlYXRlID9jb2xvcl9zcGFjZSA/ZGF0YSB+dyB+aCAoKSA9XG4gICAgICBsZXQgc2V0dGluZ3MgPSBzZXR0aW5ncyA/Y29sb3Jfc3BhY2UgKCkgaW5cbiAgICAgIGxldCBhcmdzID0gbWF0Y2ggZGF0YSB3aXRoXG4gICAgICB8IE5vbmUgLT4gSnYuW3xvZl9pbnQgdzsgb2ZfaW50IGg7IHNldHRpbmdzfF1cbiAgICAgIHwgU29tZSBkYXRhIC0+IEp2Llt8VGFycmF5LnRvX2p2IGRhdGE7IG9mX2ludCB3OyBvZl9pbnQgaDsgc2V0dGluZ3N8XVxuICAgICAgaW5cbiAgICAgIEp2Lm5ldycgaW1hZ2VfZGF0YSBhcmdzXG5cbiAgICBsZXQgdyBkID0gSnYuSW50LmdldCBkIFwid2lkdGhcIlxuICAgIGxldCBoIGQgPSBKdi5JbnQuZ2V0IGQgXCJoZWlnaHRcIlxuICAgIGxldCBjb2xvcl9zcGFjZSBkID1cbiAgICAgICgqIENhbiBiZWNvbWUgSnYuSnN0ci5nZXQgb25jZSBmaXJlZm94IHN1cHBvcnRzIHRoZSBwcm9wZXJ0eS4gKilcbiAgICAgIE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpKc3RyLmVtcHR5IChKdi5Kc3RyLmZpbmQgZCBcImNvbG9yU3BhY2VcIilcblxuICAgIGxldCBkYXRhIGQgPSBUYXJyYXkub2ZfanYgQEAgSnYuZ2V0IGQgXCJkYXRhXCJcbiAgZW5kXG5cbiAgbGV0IGNyZWF0ZV9pbWFnZV9kYXRhID9jb2xvcl9zcGFjZSBjIH53IH5oID1cbiAgICBsZXQgc2V0dGluZ3MgPSBJbWFnZV9kYXRhLnNldHRpbmdzID9jb2xvcl9zcGFjZSAoKSBpblxuICAgIEltYWdlX2RhdGEub2ZfanYgQEAgSnYuY2FsbCBjIFwiY3JlYXRlSW1hZ2VEYXRhXCJcbiAgICAgIEp2Llt8IG9mX2ludCB3OyBvZl9pbnQgaDsgc2V0dGluZ3MgfF1cblxuICBsZXQgZ2V0X2ltYWdlX2RhdGEgP2NvbG9yX3NwYWNlIGMgfnggfnkgfncgfmggPVxuICAgIGxldCBzZXR0aW5ncyA9IEltYWdlX2RhdGEuc2V0dGluZ3MgP2NvbG9yX3NwYWNlICgpIGluXG4gICAgSW1hZ2VfZGF0YS5vZl9qdiBAQCBKdi5jYWxsIGMgXCJnZXRJbWFnZURhdGFcIlxuICAgICAgSnYuW3xvZl9pbnQgeDsgb2ZfaW50IHk7IG9mX2ludCB3OyBvZl9pbnQgaDsgc2V0dGluZ3N8XVxuXG4gIGxldCBwdXRfaW1hZ2VfZGF0YSBjIGQgfnggfnkgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJwdXRJbWFnZURhdGFcIlxuICAgICAgSnYuW3wgSW1hZ2VfZGF0YS50b19qdiBkOyBvZl9pbnQgeDsgb2ZfaW50IHkgfF1cblxuICBsZXQgcHV0X3N1Yl9pbWFnZV9kYXRhIGMgZCB+c3ggfnN5IH5zdyB+c2ggfnggfnkgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJwdXRJbWFnZURhdGFcIlxuICAgICAgSnYuW3wgSW1hZ2VfZGF0YS50b19qdiBkOyBvZl9pbnQgeDsgb2ZfaW50IHk7XG4gICAgICAgICAgICBvZl9pbnQgc3g7IG9mX2ludCBzeTsgb2ZfaW50IHN3OyBvZl9pbnQgc2ggfF1cbmVuZFxuXG5tb2R1bGUgR2wgPSBzdHJ1Y3RcblxuICAoKiBDb250ZXh0IGNyZWF0aW9uICopXG5cbiAgbW9kdWxlIEF0dHJzID0gc3RydWN0XG4gICAgbW9kdWxlIFBvd2VyX3ByZWZlcmVuY2UgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEpzdHIudFxuICAgICAgbGV0IGRlZmF1bHQgPSBKc3RyLnYgXCJkZWZhdWx0XCJcbiAgICAgIGxldCBoaWdoX3BlcmZvcm1hbmNlID0gSnN0ci52IFwiaGlnaC1wZXJmb3JtYW5jZVwiXG4gICAgICBsZXQgbG93X3Bvd2VyID0gSnN0ci52IFwibG93LXBvd2VyXCJcbiAgICBlbmRcbiAgICB0eXBlIHQgPSBKdi50XG4gICAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG4gICAgbGV0IHZcbiAgICAgICAgP2FscGhhID9kZXB0aCA/c3RlbmNpbCA/YW50aWFsaWFzID9wcmVtdWx0aXBsaWVkX2FscGhhXG4gICAgICAgID9wcmVzZXJ2ZV9kcmF3aW5nX2J1ZmZlciA/cG93ZXJfcHJlZmVyZW5jZVxuICAgICAgICA/ZmFpbF9pZl9tYWpvcl9wZXJmb3JtYW5jZV9jYXZlYXQgP2Rlc3luY2hyb25pemVkICgpID1cbiAgICAgIGxldCBvID0gSnYub2JqIFt8fF0gaW5cbiAgICAgIEp2LkJvb2wuc2V0X2lmX3NvbWUgbyBcImFscGhhXCIgYWxwaGE7XG4gICAgICBKdi5Cb29sLnNldF9pZl9zb21lIG8gXCJkZXB0aFwiIGRlcHRoO1xuICAgICAgSnYuQm9vbC5zZXRfaWZfc29tZSBvIFwic3RlbmNpbFwiIHN0ZW5jaWw7XG4gICAgICBKdi5Cb29sLnNldF9pZl9zb21lIG8gXCJhbnRpYWxpYXNcIiBhbnRpYWxpYXM7XG4gICAgICBKdi5Cb29sLnNldF9pZl9zb21lIG8gXCJwcmVtdWx0aXBsaWVkQXBoYVwiIHByZW11bHRpcGxpZWRfYWxwaGE7XG4gICAgICBKdi5Cb29sLnNldF9pZl9zb21lIG8gXCJwcmVzZXJ2ZURyYXdpbmdCdWZmZXJcIiBwcmVzZXJ2ZV9kcmF3aW5nX2J1ZmZlcjtcbiAgICAgIEp2LkpzdHIuc2V0X2lmX3NvbWUgbyBcInBvd2VyUHJlZmVyZW5jZVwiIHBvd2VyX3ByZWZlcmVuY2U7XG4gICAgICBKdi5Cb29sLnNldF9pZl9zb21lIG8gXCJmYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0XCJcbiAgICAgICAgZmFpbF9pZl9tYWpvcl9wZXJmb3JtYW5jZV9jYXZlYXQ7XG4gICAgICBKdi5Cb29sLnNldF9pZl9zb21lIG8gXCJkZXN5bmNocm9uaXplZFwiIGRlc3luY2hyb25pemVkO1xuICAgICAgb1xuXG4gICAgbGV0IGFscGhhIGEgPSBKdi5Cb29sLmdldCBhIFwiYWxwaGFcIlxuICAgIGxldCBkZXB0aCBhID0gSnYuQm9vbC5nZXQgYSBcImRlcHRoXCJcbiAgICBsZXQgc3RlbmNpbCBhID0gSnYuQm9vbC5nZXQgYSBcInN0ZW5jaWxcIlxuICAgIGxldCBhbnRpYWxpYXMgYSA9IEp2LkJvb2wuZ2V0IGEgXCJhbnRpYWxpYXNcIlxuICAgIGxldCBwcmVtdWx0aXBsaWVkX2FscGhhIGEgPSBKdi5Cb29sLmdldCBhIFwicHJlbXVsdGlwbGllZEFwaGFcIlxuICAgIGxldCBwcmVzZXJ2ZV9kcmF3aW5nX2J1ZmZlciBhID0gSnYuQm9vbC5nZXQgYSBcInByZXNlcnZlRHJhd2luZ0J1ZmZlclwiXG4gICAgbGV0IGZhaWxfaWZfbWFqb3JfcGVyZm9ybWFuY2VfY2F2ZWF0IGEgPVxuICAgICAgSnYuQm9vbC5nZXQgYSBcImZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXRcIlxuICAgIGxldCBwb3dlcl9wcmVmZXJlbmNlIGEgPSBKdi5Kc3RyLmdldCBhIFwicG93ZXJQcmVmZXJlbmNlXCJcbiAgICBsZXQgZGVzeW5jaHJvbml6ZWQgYSA9IEp2LkJvb2wuZ2V0IGEgXCJkZXN5bmNocm9uaXplZFwiXG4gIGVuZFxuXG4gIHR5cGUgdCA9IEp2LnRcbiAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgbGV0IGdldF9jb250ZXh0ID8oYXR0cnMgPSBKdi51bmRlZmluZWQpID8odjEgPSBmYWxzZSkgY252ID1cbiAgICBsZXQgd2ViZ2wgPSBKdi5vZl9zdHJpbmcgKGlmIHYxIHRoZW4gXCJ3ZWJnbFwiIGVsc2UgXCJ3ZWJnbDJcIikgaW5cbiAgICBKdi50b19vcHRpb24gRnVuLmlkIEBAXG4gICAgSnYuY2FsbCAoQ2FudmFzLnRvX2p2IGNudikgXCJnZXRDb250ZXh0XCIgSnYuW3wgd2ViZ2w7IGF0dHJzIHxdXG5cbiAgbGV0IGNyZWF0ZSA9IGdldF9jb250ZXh0XG5cbiAgbGV0IGNhbnZhcyBjID0gSnYuZmluZF9tYXAgQ2FudmFzLm9mX2p2IGMgXCJjYW52YXNcIlxuICBsZXQgYXR0cnMgYyA9IEp2LmNhbGwgYyBcImdldENvbnRleHRBdHRyaWJ1dGVzXCIgW3x8XVxuXG4gIGxldCBkcmF3aW5nX2J1ZmZlcl93aWR0aCBjID0gSnYuSW50LmdldCBjIFwiZHJhd2luZ0J1ZmZlcldpZHRoXCJcbiAgbGV0IGRyYXdpbmdfYnVmZmVyX2hlaWdodCBjID0gSnYuSW50LmdldCBjIFwiZHJhd2luZ0J1ZmZlckhlaWdodFwiXG4gIGxldCBpc19jb250ZXh0X2xvc3QgYyA9IEp2LkJvb2wuZ2V0IGMgXCJpc0NvbnRleHRMb3N0XCJcblxuICBsZXQgZ2V0X3N1cHBvcnRlZF9leHRlbnNpb25zIGMgPVxuICAgIEp2LnRvX2pzdHJfbGlzdCBAQCBKdi5jYWxsIGMgXCJnZXRTdXBwb3J0ZWRFeHRlbnNpb25zXCIgW3x8XVxuXG4gIGxldCBnZXRfZXh0ZW5zaW9uIGMgZXh0ID0gSnYuY2FsbCBjIFwiZ2V0RXh0ZW5zaW9uXCIgSnYuW3wgb2ZfanN0ciBleHQgfF1cblxuICAoKiBUeXBlcyAqKVxuXG4gIHR5cGUgZW51bSA9IGludFxuICB0eXBlIGJ1ZmZlciA9IEp2LnRcbiAgdHlwZSBmcmFtZWJ1ZmZlciA9IEp2LnRcbiAgdHlwZSBwcm9ncmFtID0gSnYudFxuICB0eXBlIHF1ZXJ5ID0gSnYudFxuICB0eXBlIHJlbmRlcmJ1ZmZlciA9IEp2LnRcbiAgdHlwZSBzYW1wbGVyID0gSnYudFxuICB0eXBlIHNoYWRlciA9IEp2LnRcbiAgdHlwZSBzeW5jID0gSnYudFxuICB0eXBlIHRleHR1cmUgPSBKdi50XG4gIHR5cGUgdHJhbnNmb3JtX2ZlZWRiYWNrID0gSnYudFxuICB0eXBlIHVuaWZvcm1fbG9jYXRpb24gPSBKdi50XG4gIHR5cGUgdmVydGV4X2FycmF5X29iamVjdCA9IEp2LnRcblxuICBtb2R1bGUgQWN0aXZlX2luZm8gPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKdi50XG4gICAgbGV0IHNpemUgaSA9IEp2LkludC5nZXQgaSBcInNpemVcIlxuICAgIGxldCB0eXBlJyBpID0gSnYuSW50LmdldCBpIFwidHlwZVwiXG4gICAgbGV0IG5hbWUgaSA9IEp2LkpzdHIuZ2V0IGkgXCJuYW1lXCJcbiAgZW5kXG5cbiAgbW9kdWxlIFNoYWRlcl9wcmVjaXNpb25fZm9ybWF0ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSnYudFxuICAgIGxldCByYW5nZV9taW4gZiA9IEp2LkludC5nZXQgZiBcInJhbmdlTWluXCJcbiAgICBsZXQgcmFuZ2VfbWF4IGYgPSBKdi5JbnQuZ2V0IGYgXCJyYW5nZU1heFwiXG4gICAgbGV0IHByZWNpc2lvbiBmID0gSnYuSW50LmdldCBmIFwicHJlY2lzaW9uXCJcbiAgZW5kXG5cbiAgbW9kdWxlIFRleF9pbWFnZV9zb3VyY2UgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKdi50XG4gICAgbGV0IG9mX2ltYWdlX2RhdGEgPSBDMmQuSW1hZ2VfZGF0YS50b19qdlxuICAgIGxldCBvZl9pbWdfZWwgPSBCcnIuRWwudG9fanZcbiAgICBsZXQgb2ZfY2FudmFzX2VsID0gQ2FudmFzLnRvX2p2XG4gICAgbGV0IG9mX3ZpZGVvX2VsID0gQnJyX2lvLk1lZGlhLkVsLnRvX2p2XG4gICAgbGV0IG9mX29mZnNjcmVlbl9jYW52YXMgPSBGdW4uaWRcbiAgZW5kXG5cbiAgKCogRnVuY3Rpb25zICopXG5cbiAgbGV0IGFjdGl2ZV90ZXh0dXJlIGMgdGV4dHVyZSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImFjdGl2ZVRleHR1cmVcIiBKdi5bfG9mX2ludCB0ZXh0dXJlfF1cblxuICBsZXQgYXR0YWNoX3NoYWRlciBjIHByb2dyYW0gc2hhZGVyID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiYXR0YWNoU2hhZGVyXCIgSnYuW3xwcm9ncmFtOyBzaGFkZXJ8XVxuXG4gIGxldCBiZWdpbl9xdWVyeSBjIHRhcmdldCBxdWVyeSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImJlZ2luUXVlcnlcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IHF1ZXJ5fF1cblxuICBsZXQgYmVnaW5fdHJhbnNmb3JtX2ZlZWRiYWNrIGMgcHJpbWl0aXZlTW9kZSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImJlZ2luVHJhbnNmb3JtRmVlZGJhY2tcIiBKdi5bfG9mX2ludCBwcmltaXRpdmVNb2RlfF1cblxuICBsZXQgYmluZF9hdHRyaWJfbG9jYXRpb24gYyBwcm9ncmFtIGluZGV4IG5hbWUgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJiaW5kQXR0cmliTG9jYXRpb25cIiBKdi5bfHByb2dyYW07IG9mX2ludCBpbmRleDsgb2ZfanN0ciBuYW1lfF1cblxuICBsZXQgYmluZF9idWZmZXIgYyB0YXJnZXQgYnVmZmVyID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiYmluZEJ1ZmZlclwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2Zfb3B0aW9uIH5ub25lOm51bGwgRnVuLmlkIGJ1ZmZlcnxdXG5cbiAgbGV0IGJpbmRfYnVmZmVyX2Jhc2UgYyB0YXJnZXQgaW5kZXggYnVmZmVyID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiYmluZEJ1ZmZlckJhc2VcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBpbmRleDsgYnVmZmVyfF1cblxuICBsZXQgYmluZF9idWZmZXJfcmFuZ2UgYyB0YXJnZXQgaW5kZXggYnVmZmVyIG9mZnNldCBzaXplID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiYmluZEJ1ZmZlclJhbmdlXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgaW5kZXg7IGJ1ZmZlcjsgb2ZfaW50IG9mZnNldDsgb2ZfaW50IHNpemV8XVxuXG4gIGxldCBiaW5kX2ZyYW1lYnVmZmVyIGMgdGFyZ2V0IGZyYW1lYnVmZmVyID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiYmluZEZyYW1lYnVmZmVyXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9vcHRpb24gfm5vbmU6bnVsbCBGdW4uaWQgZnJhbWVidWZmZXJ8XVxuXG4gIGxldCBiaW5kX3JlbmRlcmJ1ZmZlciBjIHRhcmdldCByZW5kZXJidWZmZXIgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJiaW5kUmVuZGVyYnVmZmVyXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9vcHRpb24gfm5vbmU6bnVsbCBGdW4uaWQgcmVuZGVyYnVmZmVyfF1cblxuICBsZXQgYmluZF9zYW1wbGVyIGMgdW5pdCBzYW1wbGVyID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiYmluZFNhbXBsZXJcIiBKdi5bfG9mX2ludCB1bml0OyBvZl9vcHRpb24gfm5vbmU6bnVsbCBGdW4uaWQgc2FtcGxlcnxdXG5cbiAgbGV0IGJpbmRfdGV4dHVyZSBjIHRhcmdldCB0ZXh0dXJlID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiYmluZFRleHR1cmVcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX29wdGlvbiB+bm9uZTpudWxsIEZ1bi5pZCB0ZXh0dXJlfF1cblxuICBsZXQgYmluZF90cmFuc2Zvcm1fZmVlZGJhY2sgYyB0YXJnZXQgdGYgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJiaW5kVHJhbnNmb3JtRmVlZGJhY2tcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX29wdGlvbiB+bm9uZTpudWxsIEZ1bi5pZCB0ZnxdXG5cbiAgbGV0IGJpbmRfdmVydGV4X2FycmF5IGMgYXJyYXkgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJiaW5kVmVydGV4QXJyYXlcIiBKdi5bfCBvZl9vcHRpb24gfm5vbmU6bnVsbCBGdW4uaWQgYXJyYXl8XVxuXG4gIGxldCBibGVuZF9jb2xvciBjIHJlZCBncmVlbiBibHVlIGFscGhhID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiYmxlbmRDb2xvclwiIEp2Llt8b2ZfZmxvYXQgcmVkOyBvZl9mbG9hdCBncmVlbjsgb2ZfZmxvYXQgYmx1ZTsgb2ZfZmxvYXQgYWxwaGF8XVxuXG4gIGxldCBibGVuZF9lcXVhdGlvbiBjIG1vZGUgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJibGVuZEVxdWF0aW9uXCIgSnYuW3xvZl9pbnQgbW9kZXxdXG5cbiAgbGV0IGJsZW5kX2VxdWF0aW9uX3NlcGFyYXRlIGMgbW9kZVJHQiBtb2RlQWxwaGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJibGVuZEVxdWF0aW9uU2VwYXJhdGVcIiBKdi5bfG9mX2ludCBtb2RlUkdCOyBvZl9pbnQgbW9kZUFscGhhfF1cblxuICBsZXQgYmxlbmRfZnVuYyBjIHNmYWN0b3IgZGZhY3RvciA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImJsZW5kRnVuY1wiIEp2Llt8b2ZfaW50IHNmYWN0b3I7IG9mX2ludCBkZmFjdG9yfF1cblxuICBsZXQgYmxlbmRfZnVuY19zZXBhcmF0ZSBjIHNyY1JHQiBkc3RSR0Igc3JjQWxwaGEgZHN0QWxwaGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJibGVuZEZ1bmNTZXBhcmF0ZVwiIEp2Llt8b2ZfaW50IHNyY1JHQjsgb2ZfaW50IGRzdFJHQjsgb2ZfaW50IHNyY0FscGhhOyBvZl9pbnQgZHN0QWxwaGF8XVxuXG4gIGxldCBibGl0X2ZyYW1lYnVmZmVyIGMgc3JjWDAgc3JjWTAgc3JjWDEgc3JjWTEgZHN0WDAgZHN0WTAgZHN0WDEgZHN0WTEgbWFzayBmaWx0ZXIgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJibGl0RnJhbWVidWZmZXJcIiBKdi5bfG9mX2ludCBzcmNYMDsgb2ZfaW50IHNyY1kwOyBvZl9pbnQgc3JjWDE7IG9mX2ludCBzcmNZMTsgb2ZfaW50IGRzdFgwOyBvZl9pbnQgZHN0WTA7IG9mX2ludCBkc3RYMTsgb2ZfaW50IGRzdFkxOyBvZl9pbnQgbWFzazsgb2ZfaW50IGZpbHRlcnxdXG5cbiAgbGV0IGJ1ZmZlcl9kYXRhIGMgdGFyZ2V0IHNyY0RhdGEgdXNhZ2UgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJidWZmZXJEYXRhXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBUYXJyYXkudG9fanYgc3JjRGF0YTsgb2ZfaW50IHVzYWdlfF1cblxuICBsZXQgYnVmZmVyX2RhdGFfc2l6ZSBjIHRhcmdldCBzaXplIHVzYWdlID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiYnVmZmVyRGF0YVwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IHNpemU7IG9mX2ludCB1c2FnZXxdXG5cbiAgbGV0IGJ1ZmZlcl9zdWJfZGF0YSBjIHRhcmdldCBkc3RCeXRlT2Zmc2V0IHNyY0RhdGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJidWZmZXJTdWJEYXRhXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgZHN0Qnl0ZU9mZnNldDsgVGFycmF5LnRvX2p2IHNyY0RhdGEgfF1cblxuICBsZXQgY2hlY2tfZnJhbWVidWZmZXJfc3RhdHVzIGMgdGFyZ2V0ID1cbiAgICBKdi50b19pbnQgQEAgSnYuY2FsbCBjIFwiY2hlY2tGcmFtZWJ1ZmZlclN0YXR1c1wiIEp2Llt8b2ZfaW50IHRhcmdldHxdXG5cbiAgbGV0IGNsZWFyIGMgbWFzayA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImNsZWFyXCIgSnYuW3xvZl9pbnQgbWFza3xdXG5cbiAgbGV0IGNsZWFyX2J1ZmZlcmZpIGMgYnVmZmVyIGRyYXdidWZmZXIgZGVwdGggc3RlbmNpbCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImNsZWFyQnVmZmVyZmlcIiBKdi5bfG9mX2ludCBidWZmZXI7IG9mX2ludCBkcmF3YnVmZmVyOyBvZl9mbG9hdCBkZXB0aDsgb2ZfaW50IHN0ZW5jaWx8XVxuXG4gIGxldCBjbGVhcl9idWZmZXJmdiBjIGJ1ZmZlciBkcmF3YnVmZmVyIHZhbHVlcyA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImNsZWFyQnVmZmVyZnZcIiBKdi5bfG9mX2ludCBidWZmZXI7IG9mX2ludCBkcmF3YnVmZmVyOyBUYXJyYXkudG9fanYgdmFsdWVzfF1cblxuICBsZXQgY2xlYXJfYnVmZmVyaXYgYyBidWZmZXIgZHJhd2J1ZmZlciB2YWx1ZXMgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJjbGVhckJ1ZmZlcml2XCIgSnYuW3xvZl9pbnQgYnVmZmVyOyBvZl9pbnQgZHJhd2J1ZmZlcjsgVGFycmF5LnRvX2p2IHZhbHVlc3xdXG5cbiAgbGV0IGNsZWFyX2J1ZmZlcnVpdiBjIGJ1ZmZlciBkcmF3YnVmZmVyIHZhbHVlcyA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImNsZWFyQnVmZmVydWl2XCIgSnYuW3xvZl9pbnQgYnVmZmVyOyBvZl9pbnQgZHJhd2J1ZmZlcjsgVGFycmF5LnRvX2p2IHZhbHVlc3xdXG5cbiAgbGV0IGNsZWFyX2NvbG9yIGMgcmVkIGdyZWVuIGJsdWUgYWxwaGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJjbGVhckNvbG9yXCIgSnYuW3xvZl9mbG9hdCByZWQ7IG9mX2Zsb2F0IGdyZWVuOyBvZl9mbG9hdCBibHVlOyBvZl9mbG9hdCBhbHBoYXxdXG5cbiAgbGV0IGNsZWFyX2RlcHRoIGMgZGVwdGggPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJjbGVhckRlcHRoXCIgSnYuW3xvZl9mbG9hdCBkZXB0aHxdXG5cbiAgbGV0IGNsZWFyX3N0ZW5jaWwgYyBzID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiY2xlYXJTdGVuY2lsXCIgSnYuW3xvZl9pbnQgc3xdXG5cbiAgbGV0IGNsaWVudF93YWl0X3N5bmMgYyBzeW5jIGZsYWdzIHRpbWVvdXQgPVxuICAgIEp2LnRvX2ludCBAQCBKdi5jYWxsIGMgXCJjbGllbnRXYWl0U3luY1wiIEp2Llt8c3luYzsgb2ZfaW50IGZsYWdzOyBvZl9pbnQgdGltZW91dHxdXG5cbiAgbGV0IGNvbG9yX21hc2sgYyByZWQgZ3JlZW4gYmx1ZSBhbHBoYSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImNvbG9yTWFza1wiIEp2Llt8SnYub2ZfYm9vbCByZWQ7IEp2Lm9mX2Jvb2wgZ3JlZW47IEp2Lm9mX2Jvb2wgYmx1ZTsgSnYub2ZfYm9vbCBhbHBoYXxdXG5cbiAgbGV0IGNvbXBpbGVfc2hhZGVyIGMgc2hhZGVyID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiY29tcGlsZVNoYWRlclwiIEp2Llt8c2hhZGVyfF1cblxuICBsZXQgY29tcHJlc3NlZF90ZXhfaW1hZ2UyZCBjIHRhcmdldCBsZXZlbCBpbnRlcm5hbGZvcm1hdCB3aWR0aCBoZWlnaHQgYm9yZGVyIHNyY0RhdGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJjb21wcmVzc2VkVGV4SW1hZ2UyRFwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGxldmVsOyBvZl9pbnQgaW50ZXJuYWxmb3JtYXQ7IG9mX2ludCB3aWR0aDsgb2ZfaW50IGhlaWdodDsgb2ZfaW50IGJvcmRlcjsgVGFycmF5LnRvX2p2IHNyY0RhdGF8XVxuXG4gIGxldCBjb21wcmVzc2VkX3RleF9pbWFnZTJkX3NpemUgYyB0YXJnZXQgbGV2ZWwgaW50ZXJuYWxmb3JtYXQgd2lkdGggaGVpZ2h0IGJvcmRlciBpbWFnZVNpemUgb2Zmc2V0ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiY29tcHJlc3NlZFRleEltYWdlMkRcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBsZXZlbDsgb2ZfaW50IGludGVybmFsZm9ybWF0OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHQ7IG9mX2ludCBib3JkZXI7IG9mX2ludCBpbWFnZVNpemU7IG9mX2ludCBvZmZzZXR8XVxuXG4gIGxldCBjb21wcmVzc2VkX3RleF9pbWFnZTNkIGMgdGFyZ2V0IGxldmVsIGludGVybmFsZm9ybWF0IHdpZHRoIGhlaWdodCBkZXB0aCBib3JkZXIgc3JjRGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImNvbXByZXNzZWRUZXhJbWFnZTNEXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgbGV2ZWw7IG9mX2ludCBpbnRlcm5hbGZvcm1hdDsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0OyBvZl9pbnQgZGVwdGg7IG9mX2ludCBib3JkZXI7IFRhcnJheS50b19qdiBzcmNEYXRhfF1cblxuICBsZXQgY29tcHJlc3NlZF90ZXhfaW1hZ2UzZF9zaXplIGMgdGFyZ2V0IGxldmVsIGludGVybmFsZm9ybWF0IHdpZHRoIGhlaWdodCBkZXB0aCBib3JkZXIgaW1hZ2VTaXplIG9mZnNldCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImNvbXByZXNzZWRUZXhJbWFnZTNEXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgbGV2ZWw7IG9mX2ludCBpbnRlcm5hbGZvcm1hdDsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0OyBvZl9pbnQgZGVwdGg7IG9mX2ludCBib3JkZXI7IG9mX2ludCBpbWFnZVNpemU7IG9mX2ludCBvZmZzZXR8XVxuXG4gIGxldCBjb21wcmVzc2VkX3RleF9zdWJfaW1hZ2UyZCBjIHRhcmdldCBsZXZlbCB4b2Zmc2V0IHlvZmZzZXQgd2lkdGggaGVpZ2h0IGZvcm1hdCBzcmNEYXRhID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiY29tcHJlc3NlZFRleFN1YkltYWdlMkRcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBsZXZlbDsgb2ZfaW50IHhvZmZzZXQ7IG9mX2ludCB5b2Zmc2V0OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHQ7IG9mX2ludCBmb3JtYXQ7IFRhcnJheS50b19qdiBzcmNEYXRhfF1cblxuICBsZXQgY29tcHJlc3NlZF90ZXhfc3ViX2ltYWdlMmRfc2l6ZSBjIHRhcmdldCBsZXZlbCB4b2Zmc2V0IHlvZmZzZXQgd2lkdGggaGVpZ2h0IGZvcm1hdCBpbWFnZVNpemUgb2Zmc2V0ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiY29tcHJlc3NlZFRleFN1YkltYWdlMkRcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBsZXZlbDsgb2ZfaW50IHhvZmZzZXQ7IG9mX2ludCB5b2Zmc2V0OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHQ7IG9mX2ludCBmb3JtYXQ7IG9mX2ludCBpbWFnZVNpemU7IG9mX2ludCBvZmZzZXR8XVxuXG4gIGxldCBjb21wcmVzc2VkX3RleF9zdWJfaW1hZ2UzZCBjIHRhcmdldCBsZXZlbCB4b2Zmc2V0IHlvZmZzZXQgem9mZnNldCB3aWR0aCBoZWlnaHQgZGVwdGggZm9ybWF0IHNyY0RhdGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGxldmVsOyBvZl9pbnQgeG9mZnNldDsgb2ZfaW50IHlvZmZzZXQ7IG9mX2ludCB6b2Zmc2V0OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHQ7IG9mX2ludCBkZXB0aDsgb2ZfaW50IGZvcm1hdDsgVGFycmF5LnRvX2p2IHNyY0RhdGF8XVxuXG4gIGxldCBjb21wcmVzc2VkX3RleF9zdWJfaW1hZ2UzZF9zaXplIGMgdGFyZ2V0IGxldmVsIHhvZmZzZXQgeW9mZnNldCB6b2Zmc2V0IHdpZHRoIGhlaWdodCBkZXB0aCBmb3JtYXQgaW1hZ2VTaXplIG9mZnNldCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImNvbXByZXNzZWRUZXhTdWJJbWFnZTNEXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgbGV2ZWw7IG9mX2ludCB4b2Zmc2V0OyBvZl9pbnQgeW9mZnNldDsgb2ZfaW50IHpvZmZzZXQ7IG9mX2ludCB3aWR0aDsgb2ZfaW50IGhlaWdodDsgb2ZfaW50IGRlcHRoOyBvZl9pbnQgZm9ybWF0OyBvZl9pbnQgaW1hZ2VTaXplOyBvZl9pbnQgb2Zmc2V0fF1cblxuICBsZXQgY29weV9idWZmZXJfc3ViX2RhdGEgYyByZWFkVGFyZ2V0IHdyaXRlVGFyZ2V0IHJlYWRPZmZzZXQgd3JpdGVPZmZzZXQgc2l6ZSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImNvcHlCdWZmZXJTdWJEYXRhXCIgSnYuW3xvZl9pbnQgcmVhZFRhcmdldDsgb2ZfaW50IHdyaXRlVGFyZ2V0OyBvZl9pbnQgcmVhZE9mZnNldDsgb2ZfaW50IHdyaXRlT2Zmc2V0OyBvZl9pbnQgc2l6ZXxdXG5cbiAgbGV0IGNvcHlfdGV4X2ltYWdlMmQgYyB0YXJnZXQgbGV2ZWwgaW50ZXJuYWxmb3JtYXQgeCB5IHdpZHRoIGhlaWdodCBib3JkZXIgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJjb3B5VGV4SW1hZ2UyRFwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGxldmVsOyBvZl9pbnQgaW50ZXJuYWxmb3JtYXQ7IG9mX2ludCB4OyBvZl9pbnQgeTsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0OyBvZl9pbnQgYm9yZGVyfF1cblxuICBsZXQgY29weV90ZXhfc3ViX2ltYWdlMmQgYyB0YXJnZXQgbGV2ZWwgeG9mZnNldCB5b2Zmc2V0IHggeSB3aWR0aCBoZWlnaHQgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJjb3B5VGV4U3ViSW1hZ2UyRFwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGxldmVsOyBvZl9pbnQgeG9mZnNldDsgb2ZfaW50IHlvZmZzZXQ7IG9mX2ludCB4OyBvZl9pbnQgeTsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0fF1cblxuICBsZXQgY29weV90ZXhfc3ViX2ltYWdlM2QgYyB0YXJnZXQgbGV2ZWwgeG9mZnNldCB5b2Zmc2V0IHpvZmZzZXQgeCB5IHdpZHRoIGhlaWdodCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImNvcHlUZXhTdWJJbWFnZTNEXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgbGV2ZWw7IG9mX2ludCB4b2Zmc2V0OyBvZl9pbnQgeW9mZnNldDsgb2ZfaW50IHpvZmZzZXQ7IG9mX2ludCB4OyBvZl9pbnQgeTsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0fF1cblxuICBsZXQgY3JlYXRlX2J1ZmZlciBjICA9XG4gICAgSnYuY2FsbCBjIFwiY3JlYXRlQnVmZmVyXCIgSnYuW3x8XVxuXG4gIGxldCBjcmVhdGVfZnJhbWVidWZmZXIgYyAgPVxuICAgIEp2LmNhbGwgYyBcImNyZWF0ZUZyYW1lYnVmZmVyXCIgSnYuW3x8XVxuXG4gIGxldCBjcmVhdGVfcHJvZ3JhbSBjICA9XG4gICAgSnYuY2FsbCBjIFwiY3JlYXRlUHJvZ3JhbVwiIEp2Llt8fF1cblxuICBsZXQgY3JlYXRlX3F1ZXJ5IGMgID1cbiAgICBKdi5jYWxsIGMgXCJjcmVhdGVRdWVyeVwiIEp2Llt8fF1cblxuICBsZXQgY3JlYXRlX3JlbmRlcmJ1ZmZlciBjICA9XG4gICAgSnYuY2FsbCBjIFwiY3JlYXRlUmVuZGVyYnVmZmVyXCIgSnYuW3x8XVxuXG4gIGxldCBjcmVhdGVfc2FtcGxlciBjICA9XG4gICAgSnYuY2FsbCBjIFwiY3JlYXRlU2FtcGxlclwiIEp2Llt8fF1cblxuICBsZXQgY3JlYXRlX3NoYWRlciBjIHR5cGUnID1cbiAgICBKdi5jYWxsIGMgXCJjcmVhdGVTaGFkZXJcIiBKdi5bfG9mX2ludCB0eXBlJ3xdXG5cbiAgbGV0IGNyZWF0ZV90ZXh0dXJlIGMgID1cbiAgICBKdi5jYWxsIGMgXCJjcmVhdGVUZXh0dXJlXCIgSnYuW3x8XVxuXG4gIGxldCBjcmVhdGVfdHJhbnNmb3JtX2ZlZWRiYWNrIGMgID1cbiAgICBKdi5jYWxsIGMgXCJjcmVhdGVUcmFuc2Zvcm1GZWVkYmFja1wiIEp2Llt8fF1cblxuICBsZXQgY3JlYXRlX3ZlcnRleF9hcnJheSBjICA9XG4gICAgSnYuY2FsbCBjIFwiY3JlYXRlVmVydGV4QXJyYXlcIiBKdi5bfHxdXG5cbiAgbGV0IGN1bGxfZmFjZSBjIG1vZGUgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJjdWxsRmFjZVwiIEp2Llt8b2ZfaW50IG1vZGV8XVxuXG4gIGxldCBkZWxldGVfYnVmZmVyIGMgYnVmZmVyID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZGVsZXRlQnVmZmVyXCIgSnYuW3xidWZmZXJ8XVxuXG4gIGxldCBkZWxldGVfZnJhbWVidWZmZXIgYyBmcmFtZWJ1ZmZlciA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImRlbGV0ZUZyYW1lYnVmZmVyXCIgSnYuW3xmcmFtZWJ1ZmZlcnxdXG5cbiAgbGV0IGRlbGV0ZV9wcm9ncmFtIGMgcHJvZ3JhbSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImRlbGV0ZVByb2dyYW1cIiBKdi5bfHByb2dyYW18XVxuXG4gIGxldCBkZWxldGVfcXVlcnkgYyBxdWVyeSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImRlbGV0ZVF1ZXJ5XCIgSnYuW3xxdWVyeXxdXG5cbiAgbGV0IGRlbGV0ZV9yZW5kZXJidWZmZXIgYyByZW5kZXJidWZmZXIgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJkZWxldGVSZW5kZXJidWZmZXJcIiBKdi5bfHJlbmRlcmJ1ZmZlcnxdXG5cbiAgbGV0IGRlbGV0ZV9zYW1wbGVyIGMgc2FtcGxlciA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImRlbGV0ZVNhbXBsZXJcIiBKdi5bfHNhbXBsZXJ8XVxuXG4gIGxldCBkZWxldGVfc2hhZGVyIGMgc2hhZGVyID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZGVsZXRlU2hhZGVyXCIgSnYuW3xzaGFkZXJ8XVxuXG4gIGxldCBkZWxldGVfc3luYyBjIHN5bmMgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJkZWxldGVTeW5jXCIgSnYuW3xzeW5jfF1cblxuICBsZXQgZGVsZXRlX3RleHR1cmUgYyB0ZXh0dXJlID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZGVsZXRlVGV4dHVyZVwiIEp2Llt8dGV4dHVyZXxdXG5cbiAgbGV0IGRlbGV0ZV90cmFuc2Zvcm1fZmVlZGJhY2sgYyB0ZiA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrXCIgSnYuW3x0ZnxdXG5cbiAgbGV0IGRlbGV0ZV92ZXJ0ZXhfYXJyYXkgYyB2ZXJ0ZXhBcnJheSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImRlbGV0ZVZlcnRleEFycmF5XCIgSnYuW3x2ZXJ0ZXhBcnJheXxdXG5cbiAgbGV0IGRlcHRoX2Z1bmMgYyBmdW5jID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZGVwdGhGdW5jXCIgSnYuW3xvZl9pbnQgZnVuY3xdXG5cbiAgbGV0IGRlcHRoX21hc2sgYyBmbGFnID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZGVwdGhNYXNrXCIgSnYuW3xKdi5vZl9ib29sIGZsYWd8XVxuXG4gIGxldCBkZXB0aF9yYW5nZSBjIHpOZWFyIHpGYXIgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJkZXB0aFJhbmdlXCIgSnYuW3xvZl9mbG9hdCB6TmVhcjsgb2ZfZmxvYXQgekZhcnxdXG5cbiAgbGV0IGRldGFjaF9zaGFkZXIgYyBwcm9ncmFtIHNoYWRlciA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImRldGFjaFNoYWRlclwiIEp2Llt8cHJvZ3JhbTsgc2hhZGVyfF1cblxuICBsZXQgZGlzYWJsZSBjIGNhcCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImRpc2FibGVcIiBKdi5bfG9mX2ludCBjYXB8XVxuXG4gIGxldCBkaXNhYmxlX3ZlcnRleF9hdHRyaWJfYXJyYXkgYyBpbmRleCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheVwiIEp2Llt8b2ZfaW50IGluZGV4fF1cblxuICBsZXQgZHJhd19hcnJheXMgYyBtb2RlIGZpcnN0IGNvdW50ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZHJhd0FycmF5c1wiIEp2Llt8b2ZfaW50IG1vZGU7IG9mX2ludCBmaXJzdDsgb2ZfaW50IGNvdW50fF1cblxuICBsZXQgZHJhd19hcnJheXNfaW5zdGFuY2VkIGMgbW9kZSBmaXJzdCBjb3VudCBpbnN0YW5jZUNvdW50ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZHJhd0FycmF5c0luc3RhbmNlZFwiIEp2Llt8b2ZfaW50IG1vZGU7IG9mX2ludCBmaXJzdDsgb2ZfaW50IGNvdW50OyBvZl9pbnQgaW5zdGFuY2VDb3VudHxdXG5cbiAgbGV0IGRyYXdfYnVmZmVycyBjIGJ1ZmZlcnMgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJkcmF3QnVmZmVyc1wiIEp2Llt8b2ZfbGlzdCBvZl9pbnQgYnVmZmVyc3xdXG5cbiAgbGV0IGRyYXdfZWxlbWVudHMgYyBtb2RlIGNvdW50IHR5cGUnIG9mZnNldCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImRyYXdFbGVtZW50c1wiIEp2Llt8b2ZfaW50IG1vZGU7IG9mX2ludCBjb3VudDsgb2ZfaW50IHR5cGUnOyBvZl9pbnQgb2Zmc2V0fF1cblxuICBsZXQgZHJhd19lbGVtZW50c19pbnN0YW5jZWQgYyBtb2RlIGNvdW50IHR5cGUnIG9mZnNldCBpbnN0YW5jZUNvdW50ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZHJhd0VsZW1lbnRzSW5zdGFuY2VkXCIgSnYuW3xvZl9pbnQgbW9kZTsgb2ZfaW50IGNvdW50OyBvZl9pbnQgdHlwZSc7IG9mX2ludCBvZmZzZXQ7IG9mX2ludCBpbnN0YW5jZUNvdW50fF1cblxuICBsZXQgZHJhd19yYW5nZV9lbGVtZW50cyBjIG1vZGUgc3RhcnQgZW5kJyBjb3VudCB0eXBlJyBvZmZzZXQgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJkcmF3UmFuZ2VFbGVtZW50c1wiIEp2Llt8b2ZfaW50IG1vZGU7IG9mX2ludCBzdGFydDsgb2ZfaW50IGVuZCc7IG9mX2ludCBjb3VudDsgb2ZfaW50IHR5cGUnOyBvZl9pbnQgb2Zmc2V0fF1cblxuICBsZXQgZW5hYmxlIGMgY2FwID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZW5hYmxlXCIgSnYuW3xvZl9pbnQgY2FwfF1cblxuICBsZXQgZW5hYmxlX3ZlcnRleF9hdHRyaWJfYXJyYXkgYyBpbmRleCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImVuYWJsZVZlcnRleEF0dHJpYkFycmF5XCIgSnYuW3xvZl9pbnQgaW5kZXh8XVxuXG4gIGxldCBlbmRfcXVlcnkgYyB0YXJnZXQgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJlbmRRdWVyeVwiIEp2Llt8b2ZfaW50IHRhcmdldHxdXG5cbiAgbGV0IGVuZF90cmFuc2Zvcm1fZmVlZGJhY2sgYyAgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJlbmRUcmFuc2Zvcm1GZWVkYmFja1wiIEp2Llt8fF1cblxuICBsZXQgZmVuY2Vfc3luYyBjIGNvbmRpdGlvbiBmbGFncyA9XG4gICAgSnYuY2FsbCBjIFwiZmVuY2VTeW5jXCIgSnYuW3xvZl9pbnQgY29uZGl0aW9uOyBvZl9pbnQgZmxhZ3N8XVxuXG4gIGxldCBmaW5pc2ggYyAgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJmaW5pc2hcIiBKdi5bfHxdXG5cbiAgbGV0IGZsdXNoIGMgID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZmx1c2hcIiBKdi5bfHxdXG5cbiAgbGV0IGZyYW1lYnVmZmVyX3JlbmRlcmJ1ZmZlciBjIHRhcmdldCBhdHRhY2htZW50IHJlbmRlcmJ1ZmZlcnRhcmdldCByZW5kZXJidWZmZXIgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlclwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGF0dGFjaG1lbnQ7IG9mX2ludCByZW5kZXJidWZmZXJ0YXJnZXQ7IHJlbmRlcmJ1ZmZlcnxdXG5cbiAgbGV0IGZyYW1lYnVmZmVyX3RleHR1cmUyZCBjIHRhcmdldCBhdHRhY2htZW50IHRleHRhcmdldCB0ZXh0dXJlIGxldmVsID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZnJhbWVidWZmZXJUZXh0dXJlMkRcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBhdHRhY2htZW50OyBvZl9pbnQgdGV4dGFyZ2V0OyB0ZXh0dXJlOyBvZl9pbnQgbGV2ZWx8XVxuXG4gIGxldCBmcmFtZWJ1ZmZlcl90ZXh0dXJlX2xheWVyIGMgdGFyZ2V0IGF0dGFjaG1lbnQgdGV4dHVyZSBsZXZlbCBsYXllciA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImZyYW1lYnVmZmVyVGV4dHVyZUxheWVyXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgYXR0YWNobWVudDsgdGV4dHVyZTsgb2ZfaW50IGxldmVsOyBvZl9pbnQgbGF5ZXJ8XVxuXG4gIGxldCBmcm9udF9mYWNlIGMgbW9kZSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImZyb250RmFjZVwiIEp2Llt8b2ZfaW50IG1vZGV8XVxuXG4gIGxldCBnZW5lcmF0ZV9taXBtYXAgYyB0YXJnZXQgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJnZW5lcmF0ZU1pcG1hcFwiIEp2Llt8b2ZfaW50IHRhcmdldHxdXG5cbiAgbGV0IGdldF9hY3RpdmVfYXR0cmliIGMgcHJvZ3JhbSBpbmRleCA9XG4gICAgSnYuY2FsbCBjIFwiZ2V0QWN0aXZlQXR0cmliXCIgSnYuW3xwcm9ncmFtOyBvZl9pbnQgaW5kZXh8XVxuXG4gIGxldCBnZXRfYWN0aXZlX3VuaWZvcm0gYyBwcm9ncmFtIGluZGV4ID1cbiAgICBKdi5jYWxsIGMgXCJnZXRBY3RpdmVVbmlmb3JtXCIgSnYuW3xwcm9ncmFtOyBvZl9pbnQgaW5kZXh8XVxuXG4gIGxldCBnZXRfYWN0aXZlX3VuaWZvcm1fYmxvY2tfbmFtZSBjIHByb2dyYW0gdW5pZm9ybUJsb2NrSW5kZXggPVxuICAgIEp2LnRvX2pzdHIgQEAgSnYuY2FsbCBjIFwiZ2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZVwiIEp2Llt8cHJvZ3JhbTsgb2ZfaW50IHVuaWZvcm1CbG9ja0luZGV4fF1cblxuICBsZXQgZ2V0X2FjdGl2ZV91bmlmb3JtX2Jsb2NrX3BhcmFtZXRlciBjIHByb2dyYW0gdW5pZm9ybUJsb2NrSW5kZXggcG5hbWUgPVxuICAgIEp2LmNhbGwgYyBcImdldEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRlclwiIEp2Llt8cHJvZ3JhbTsgb2ZfaW50IHVuaWZvcm1CbG9ja0luZGV4OyBvZl9pbnQgcG5hbWV8XVxuXG4gIGxldCBnZXRfYWN0aXZlX3VuaWZvcm1zIGMgcHJvZ3JhbSB1bmlmb3JtSW5kaWNlcyBwbmFtZSA9XG4gICAgSnYuY2FsbCBjIFwiZ2V0QWN0aXZlVW5pZm9ybXNcIiBKdi5bfHByb2dyYW07IG9mX2xpc3Qgb2ZfaW50IHVuaWZvcm1JbmRpY2VzOyBvZl9pbnQgcG5hbWV8XVxuXG4gIGxldCBnZXRfYXR0YWNoZWRfc2hhZGVycyBjIHByb2dyYW0gPVxuICAgIEp2LnRvX2p2X2xpc3QgQEAgSnYuY2FsbCBjIFwiZ2V0QXR0YWNoZWRTaGFkZXJzXCIgSnYuW3xwcm9ncmFtfF1cblxuICBsZXQgZ2V0X2F0dHJpYl9sb2NhdGlvbiBjIHByb2dyYW0gbmFtZSA9XG4gICAgSnYudG9faW50IEBAIEp2LmNhbGwgYyBcImdldEF0dHJpYkxvY2F0aW9uXCIgSnYuW3xwcm9ncmFtOyBvZl9qc3RyIG5hbWV8XVxuXG4gIGxldCBnZXRfYnVmZmVyX3BhcmFtZXRlciBjIHRhcmdldCBwbmFtZSA9XG4gICAgSnYuY2FsbCBjIFwiZ2V0QnVmZmVyUGFyYW1ldGVyXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgcG5hbWV8XVxuXG4gIGxldCBnZXRfYnVmZmVyX3N1Yl9kYXRhIGMgdGFyZ2V0IHNyY0J5dGVPZmZzZXQgZHN0QnVmZmVyID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZ2V0QnVmZmVyU3ViRGF0YVwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IHNyY0J5dGVPZmZzZXQ7IFRhcnJheS50b19qdiBkc3RCdWZmZXJ8XVxuXG4gIGxldCBnZXRfZXJyb3IgYyAgPVxuICAgIEp2LnRvX2ludCBAQCBKdi5jYWxsIGMgXCJnZXRFcnJvclwiIEp2Llt8fF1cblxuICBsZXQgZ2V0X2ZyYWdfZGF0YV9sb2NhdGlvbiBjIHByb2dyYW0gbmFtZSA9XG4gICAgSnYudG9faW50IEBAIEp2LmNhbGwgYyBcImdldEZyYWdEYXRhTG9jYXRpb25cIiBKdi5bfHByb2dyYW07IG9mX2pzdHIgbmFtZXxdXG5cbiAgbGV0IGdldF9mcmFtZWJ1ZmZlcl9hdHRhY2htZW50X3BhcmFtZXRlciBjIHRhcmdldCBhdHRhY2htZW50IHBuYW1lID1cbiAgICBKdi5jYWxsIGMgXCJnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBhdHRhY2htZW50OyBvZl9pbnQgcG5hbWV8XVxuXG4gIGxldCBnZXRfaW5kZXhlZF9wYXJhbWV0ZXIgYyB0YXJnZXQgaW5kZXggPVxuICAgIEp2LmNhbGwgYyBcImdldEluZGV4ZWRQYXJhbWV0ZXJcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBpbmRleHxdXG5cbiAgbGV0IGdldF9pbnRlcm5hbGZvcm1hdF9wYXJhbWV0ZXIgYyB0YXJnZXQgaW50ZXJuYWxmb3JtYXQgcG5hbWUgPVxuICAgIEp2LmNhbGwgYyBcImdldEludGVybmFsZm9ybWF0UGFyYW1ldGVyXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgaW50ZXJuYWxmb3JtYXQ7IG9mX2ludCBwbmFtZXxdXG5cbiAgbGV0IGdldF9wYXJhbWV0ZXIgYyBwbmFtZSA9XG4gICAgSnYuY2FsbCBjIFwiZ2V0UGFyYW1ldGVyXCIgSnYuW3xvZl9pbnQgcG5hbWV8XVxuXG4gIGxldCBnZXRfcHJvZ3JhbV9pbmZvX2xvZyBjIHByb2dyYW0gPVxuICAgIEp2LnRvX2pzdHIgQEAgSnYuY2FsbCBjIFwiZ2V0UHJvZ3JhbUluZm9Mb2dcIiBKdi5bfHByb2dyYW18XVxuXG4gIGxldCBnZXRfcHJvZ3JhbV9wYXJhbWV0ZXIgYyBwcm9ncmFtIHBuYW1lID1cbiAgICBKdi5jYWxsIGMgXCJnZXRQcm9ncmFtUGFyYW1ldGVyXCIgSnYuW3xwcm9ncmFtOyBvZl9pbnQgcG5hbWV8XVxuXG4gIGxldCBnZXRfcXVlcnkgYyB0YXJnZXQgcG5hbWUgPVxuICAgIEp2LmNhbGwgYyBcImdldFF1ZXJ5XCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgcG5hbWV8XVxuXG4gIGxldCBnZXRfcXVlcnlfcGFyYW1ldGVyIGMgcXVlcnkgcG5hbWUgPVxuICAgIEp2LmNhbGwgYyBcImdldFF1ZXJ5UGFyYW1ldGVyXCIgSnYuW3xxdWVyeTsgb2ZfaW50IHBuYW1lfF1cblxuICBsZXQgZ2V0X3JlbmRlcmJ1ZmZlcl9wYXJhbWV0ZXIgYyB0YXJnZXQgcG5hbWUgPVxuICAgIEp2LmNhbGwgYyBcImdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlclwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IHBuYW1lfF1cblxuICBsZXQgZ2V0X3NhbXBsZXJfcGFyYW1ldGVyIGMgc2FtcGxlciBwbmFtZSA9XG4gICAgSnYuY2FsbCBjIFwiZ2V0U2FtcGxlclBhcmFtZXRlclwiIEp2Llt8c2FtcGxlcjsgb2ZfaW50IHBuYW1lfF1cblxuICBsZXQgZ2V0X3NoYWRlcl9pbmZvX2xvZyBjIHNoYWRlciA9XG4gICAgSnYudG9fanN0ciBAQCBKdi5jYWxsIGMgXCJnZXRTaGFkZXJJbmZvTG9nXCIgSnYuW3xzaGFkZXJ8XVxuXG4gIGxldCBnZXRfc2hhZGVyX3BhcmFtZXRlciBjIHNoYWRlciBwbmFtZSA9XG4gICAgSnYuY2FsbCBjIFwiZ2V0U2hhZGVyUGFyYW1ldGVyXCIgSnYuW3xzaGFkZXI7IG9mX2ludCBwbmFtZXxdXG5cbiAgbGV0IGdldF9zaGFkZXJfcHJlY2lzaW9uX2Zvcm1hdCBjIHNoYWRlcnR5cGUgcHJlY2lzaW9udHlwZSA9XG4gICAgSnYuY2FsbCBjIFwiZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0XCIgSnYuW3xvZl9pbnQgc2hhZGVydHlwZTsgb2ZfaW50IHByZWNpc2lvbnR5cGV8XVxuXG4gIGxldCBnZXRfc2hhZGVyX3NvdXJjZSBjIHNoYWRlciA9XG4gICAgSnYudG9fanN0ciBAQCBKdi5jYWxsIGMgXCJnZXRTaGFkZXJTb3VyY2VcIiBKdi5bfHNoYWRlcnxdXG5cbiAgbGV0IGdldF9zeW5jX3BhcmFtZXRlciBjIHN5bmMgcG5hbWUgPVxuICAgIEp2LmNhbGwgYyBcImdldFN5bmNQYXJhbWV0ZXJcIiBKdi5bfHN5bmM7IG9mX2ludCBwbmFtZXxdXG5cbiAgbGV0IGdldF90ZXhfcGFyYW1ldGVyIGMgdGFyZ2V0IHBuYW1lID1cbiAgICBKdi5jYWxsIGMgXCJnZXRUZXhQYXJhbWV0ZXJcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBwbmFtZXxdXG5cbiAgbGV0IGdldF90cmFuc2Zvcm1fZmVlZGJhY2tfdmFyeWluZyBjIHByb2dyYW0gaW5kZXggPVxuICAgIEp2LmNhbGwgYyBcImdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ1wiIEp2Llt8cHJvZ3JhbTsgb2ZfaW50IGluZGV4fF1cblxuICBsZXQgZ2V0X3VuaWZvcm0gYyBwcm9ncmFtIGxvY2F0aW9uID1cbiAgICBKdi5jYWxsIGMgXCJnZXRVbmlmb3JtXCIgSnYuW3xwcm9ncmFtOyBsb2NhdGlvbnxdXG5cbiAgbGV0IGdldF91bmlmb3JtX2Jsb2NrX2luZGV4IGMgcHJvZ3JhbSB1bmlmb3JtQmxvY2tOYW1lID1cbiAgICBKdi50b19pbnQgQEAgSnYuY2FsbCBjIFwiZ2V0VW5pZm9ybUJsb2NrSW5kZXhcIiBKdi5bfHByb2dyYW07IG9mX2pzdHIgdW5pZm9ybUJsb2NrTmFtZXxdXG5cbiAgbGV0IGdldF91bmlmb3JtX2luZGljZXMgYyBwcm9ncmFtIHVuaWZvcm1OYW1lcyA9XG4gICAgSnYudG9fbGlzdCBKdi50b19pbnQgQEAgSnYuY2FsbCBjIFwiZ2V0VW5pZm9ybUluZGljZXNcIiBKdi5bfHByb2dyYW07IG9mX2pzdHJfbGlzdCB1bmlmb3JtTmFtZXN8XVxuXG4gIGxldCBnZXRfdW5pZm9ybV9sb2NhdGlvbiBjIHByb2dyYW0gbmFtZSA9XG4gICAgSnYuY2FsbCBjIFwiZ2V0VW5pZm9ybUxvY2F0aW9uXCIgSnYuW3xwcm9ncmFtOyBvZl9qc3RyIG5hbWV8XVxuXG4gIGxldCBnZXRfdmVydGV4X2F0dHJpYiBjIGluZGV4IHBuYW1lID1cbiAgICBKdi5jYWxsIGMgXCJnZXRWZXJ0ZXhBdHRyaWJcIiBKdi5bfG9mX2ludCBpbmRleDsgb2ZfaW50IHBuYW1lfF1cblxuICBsZXQgZ2V0X3ZlcnRleF9hdHRyaWJfb2Zmc2V0IGMgaW5kZXggcG5hbWUgPVxuICAgIEp2LnRvX2ludCBAQCBKdi5jYWxsIGMgXCJnZXRWZXJ0ZXhBdHRyaWJPZmZzZXRcIiBKdi5bfG9mX2ludCBpbmRleDsgb2ZfaW50IHBuYW1lfF1cblxuICBsZXQgaGludCBjIHRhcmdldCBtb2RlID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiaGludFwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IG1vZGV8XVxuXG4gIGxldCBpbnZhbGlkYXRlX2ZyYW1lYnVmZmVyIGMgdGFyZ2V0IGF0dGFjaG1lbnRzID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiaW52YWxpZGF0ZUZyYW1lYnVmZmVyXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9saXN0IG9mX2ludCBhdHRhY2htZW50c3xdXG5cbiAgbGV0IGludmFsaWRhdGVfc3ViX2ZyYW1lYnVmZmVyIGMgdGFyZ2V0IGF0dGFjaG1lbnRzIHggeSB3aWR0aCBoZWlnaHQgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJpbnZhbGlkYXRlU3ViRnJhbWVidWZmZXJcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2xpc3Qgb2ZfaW50IGF0dGFjaG1lbnRzOyBvZl9pbnQgeDsgb2ZfaW50IHk7IG9mX2ludCB3aWR0aDsgb2ZfaW50IGhlaWdodHxdXG5cbiAgbGV0IGlzX2J1ZmZlciBjIGJ1ZmZlciA9XG4gICAgSnYudG9fYm9vbCBAQCBKdi5jYWxsIGMgXCJpc0J1ZmZlclwiIEp2Llt8YnVmZmVyfF1cblxuICBsZXQgaXNfZW5hYmxlZCBjIGNhcCA9XG4gICAgSnYudG9fYm9vbCBAQCBKdi5jYWxsIGMgXCJpc0VuYWJsZWRcIiBKdi5bfG9mX2ludCBjYXB8XVxuXG4gIGxldCBpc19mcmFtZWJ1ZmZlciBjIGZyYW1lYnVmZmVyID1cbiAgICBKdi50b19ib29sIEBAIEp2LmNhbGwgYyBcImlzRnJhbWVidWZmZXJcIiBKdi5bfGZyYW1lYnVmZmVyfF1cblxuICBsZXQgaXNfcHJvZ3JhbSBjIHByb2dyYW0gPVxuICAgIEp2LnRvX2Jvb2wgQEAgSnYuY2FsbCBjIFwiaXNQcm9ncmFtXCIgSnYuW3xwcm9ncmFtfF1cblxuICBsZXQgaXNfcXVlcnkgYyBxdWVyeSA9XG4gICAgSnYudG9fYm9vbCBAQCBKdi5jYWxsIGMgXCJpc1F1ZXJ5XCIgSnYuW3xxdWVyeXxdXG5cbiAgbGV0IGlzX3JlbmRlcmJ1ZmZlciBjIHJlbmRlcmJ1ZmZlciA9XG4gICAgSnYudG9fYm9vbCBAQCBKdi5jYWxsIGMgXCJpc1JlbmRlcmJ1ZmZlclwiIEp2Llt8cmVuZGVyYnVmZmVyfF1cblxuICBsZXQgaXNfc2FtcGxlciBjIHNhbXBsZXIgPVxuICAgIEp2LnRvX2Jvb2wgQEAgSnYuY2FsbCBjIFwiaXNTYW1wbGVyXCIgSnYuW3xzYW1wbGVyfF1cblxuICBsZXQgaXNfc2hhZGVyIGMgc2hhZGVyID1cbiAgICBKdi50b19ib29sIEBAIEp2LmNhbGwgYyBcImlzU2hhZGVyXCIgSnYuW3xzaGFkZXJ8XVxuXG4gIGxldCBpc190ZXh0dXJlIGMgdGV4dHVyZSA9XG4gICAgSnYudG9fYm9vbCBAQCBKdi5jYWxsIGMgXCJpc1RleHR1cmVcIiBKdi5bfHRleHR1cmV8XVxuXG4gIGxldCBpc190cmFuc2Zvcm1fZmVlZGJhY2sgYyB0ZiA9XG4gICAgSnYudG9fYm9vbCBAQCBKdi5jYWxsIGMgXCJpc1RyYW5zZm9ybUZlZWRiYWNrXCIgSnYuW3x0ZnxdXG5cbiAgbGV0IGlzX3ZlcnRleF9hcnJheSBjIHZlcnRleEFycmF5ID1cbiAgICBKdi50b19ib29sIEBAIEp2LmNhbGwgYyBcImlzVmVydGV4QXJyYXlcIiBKdi5bfHZlcnRleEFycmF5fF1cblxuICBsZXQgbGluZV93aWR0aCBjIHdpZHRoID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwibGluZVdpZHRoXCIgSnYuW3xvZl9mbG9hdCB3aWR0aHxdXG5cbiAgbGV0IGxpbmtfcHJvZ3JhbSBjIHByb2dyYW0gPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJsaW5rUHJvZ3JhbVwiIEp2Llt8cHJvZ3JhbXxdXG5cbiAgbGV0IHBhdXNlX3RyYW5zZm9ybV9mZWVkYmFjayBjICA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInBhdXNlVHJhbnNmb3JtRmVlZGJhY2tcIiBKdi5bfHxdXG5cbiAgbGV0IHBpeGVsX3N0b3JlaSBjIHBuYW1lIHBhcmFtID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwicGl4ZWxTdG9yZWlcIiBKdi5bfG9mX2ludCBwbmFtZTsgb2ZfaW50IHBhcmFtfF1cblxuICBsZXQgcG9seWdvbl9vZmZzZXQgYyBmYWN0b3IgdW5pdHMgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJwb2x5Z29uT2Zmc2V0XCIgSnYuW3xvZl9mbG9hdCBmYWN0b3I7IG9mX2Zsb2F0IHVuaXRzfF1cblxuICBsZXQgcmVhZF9idWZmZXIgYyBzcmMgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJyZWFkQnVmZmVyXCIgSnYuW3xvZl9pbnQgc3JjfF1cblxuICBsZXQgcmVhZF9waXhlbHNfdG9fcGl4ZWxfcGFjayBjIHggeSB3aWR0aCBoZWlnaHQgZm9ybWF0IHR5cGUnIG9mZnNldCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInJlYWRQaXhlbHNcIiBKdi5bfG9mX2ludCB4OyBvZl9pbnQgeTsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0OyBvZl9pbnQgZm9ybWF0OyBvZl9pbnQgdHlwZSc7IG9mX2ludCBvZmZzZXR8XVxuXG4gIGxldCByZWFkX3BpeGVscyBjIHggeSB3aWR0aCBoZWlnaHQgZm9ybWF0IHR5cGUnIGRzdERhdGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJyZWFkUGl4ZWxzXCIgSnYuW3xvZl9pbnQgeDsgb2ZfaW50IHk7IG9mX2ludCB3aWR0aDsgb2ZfaW50IGhlaWdodDsgb2ZfaW50IGZvcm1hdDsgb2ZfaW50IHR5cGUnOyBUYXJyYXkudG9fanYgZHN0RGF0YXxdXG5cbiAgbGV0IHJlbmRlcmJ1ZmZlcl9zdG9yYWdlIGMgdGFyZ2V0IGludGVybmFsZm9ybWF0IHdpZHRoIGhlaWdodCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInJlbmRlcmJ1ZmZlclN0b3JhZ2VcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBpbnRlcm5hbGZvcm1hdDsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0fF1cblxuICBsZXQgcmVuZGVyYnVmZmVyX3N0b3JhZ2VfbXVsdGlzYW1wbGUgYyB0YXJnZXQgc2FtcGxlcyBpbnRlcm5hbGZvcm1hdCB3aWR0aCBoZWlnaHQgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBzYW1wbGVzOyBvZl9pbnQgaW50ZXJuYWxmb3JtYXQ7IG9mX2ludCB3aWR0aDsgb2ZfaW50IGhlaWdodHxdXG5cbiAgbGV0IHJlc3VtZV90cmFuc2Zvcm1fZmVlZGJhY2sgYyAgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJyZXN1bWVUcmFuc2Zvcm1GZWVkYmFja1wiIEp2Llt8fF1cblxuICBsZXQgc2FtcGxlX2NvdmVyYWdlIGMgdmFsdWUgaW52ZXJ0ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwic2FtcGxlQ292ZXJhZ2VcIiBKdi5bfG9mX2Zsb2F0IHZhbHVlOyBKdi5vZl9ib29sIGludmVydHxdXG5cbiAgbGV0IHNhbXBsZXJfcGFyYW1ldGVyZiBjIHNhbXBsZXIgcG5hbWUgcGFyYW0gPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJzYW1wbGVyUGFyYW1ldGVyZlwiIEp2Llt8c2FtcGxlcjsgb2ZfaW50IHBuYW1lOyBvZl9mbG9hdCBwYXJhbXxdXG5cbiAgbGV0IHNhbXBsZXJfcGFyYW1ldGVyaSBjIHNhbXBsZXIgcG5hbWUgcGFyYW0gPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJzYW1wbGVyUGFyYW1ldGVyaVwiIEp2Llt8c2FtcGxlcjsgb2ZfaW50IHBuYW1lOyBvZl9pbnQgcGFyYW18XVxuXG4gIGxldCBzY2lzc29yIGMgeCB5IHdpZHRoIGhlaWdodCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInNjaXNzb3JcIiBKdi5bfG9mX2ludCB4OyBvZl9pbnQgeTsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0fF1cblxuICBsZXQgc2hhZGVyX3NvdXJjZSBjIHNoYWRlciBzb3VyY2UgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJzaGFkZXJTb3VyY2VcIiBKdi5bfHNoYWRlcjsgb2ZfanN0ciBzb3VyY2V8XVxuXG4gIGxldCBzdGVuY2lsX2Z1bmMgYyBmdW5jIHJlZiBtYXNrID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwic3RlbmNpbEZ1bmNcIiBKdi5bfG9mX2ludCBmdW5jOyBvZl9pbnQgcmVmOyBvZl9pbnQgbWFza3xdXG5cbiAgbGV0IHN0ZW5jaWxfZnVuY19zZXBhcmF0ZSBjIGZhY2UgZnVuYyByZWYgbWFzayA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInN0ZW5jaWxGdW5jU2VwYXJhdGVcIiBKdi5bfG9mX2ludCBmYWNlOyBvZl9pbnQgZnVuYzsgb2ZfaW50IHJlZjsgb2ZfaW50IG1hc2t8XVxuXG4gIGxldCBzdGVuY2lsX21hc2sgYyBtYXNrID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwic3RlbmNpbE1hc2tcIiBKdi5bfG9mX2ludCBtYXNrfF1cblxuICBsZXQgc3RlbmNpbF9tYXNrX3NlcGFyYXRlIGMgZmFjZSBtYXNrID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwic3RlbmNpbE1hc2tTZXBhcmF0ZVwiIEp2Llt8b2ZfaW50IGZhY2U7IG9mX2ludCBtYXNrfF1cblxuICBsZXQgc3RlbmNpbF9vcCBjIGZhaWwgemZhaWwgenBhc3MgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJzdGVuY2lsT3BcIiBKdi5bfG9mX2ludCBmYWlsOyBvZl9pbnQgemZhaWw7IG9mX2ludCB6cGFzc3xdXG5cbiAgbGV0IHN0ZW5jaWxfb3Bfc2VwYXJhdGUgYyBmYWNlIGZhaWwgemZhaWwgenBhc3MgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJzdGVuY2lsT3BTZXBhcmF0ZVwiIEp2Llt8b2ZfaW50IGZhY2U7IG9mX2ludCBmYWlsOyBvZl9pbnQgemZhaWw7IG9mX2ludCB6cGFzc3xdXG5cbiAgbGV0IHRleF9pbWFnZTJkIGMgdGFyZ2V0IGxldmVsIGludGVybmFsZm9ybWF0IHdpZHRoIGhlaWdodCBib3JkZXIgZm9ybWF0IHR5cGUnIHNyY0RhdGEgc3JjT2Zmc2V0ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidGV4SW1hZ2UyRFwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGxldmVsOyBvZl9pbnQgaW50ZXJuYWxmb3JtYXQ7IG9mX2ludCB3aWR0aDsgb2ZfaW50IGhlaWdodDsgb2ZfaW50IGJvcmRlcjsgb2ZfaW50IGZvcm1hdDsgb2ZfaW50IHR5cGUnOyBUYXJyYXkudG9fanYgc3JjRGF0YTsgb2ZfaW50IHNyY09mZnNldHxdXG5cbiAgbGV0IHRleF9pbWFnZTJkX29mX3NvdXJjZSBjIHRhcmdldCBsZXZlbCBpbnRlcm5hbGZvcm1hdCB3aWR0aCBoZWlnaHQgYm9yZGVyIGZvcm1hdCB0eXBlJyBzb3VyY2UgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ0ZXhJbWFnZTJEXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgbGV2ZWw7IG9mX2ludCBpbnRlcm5hbGZvcm1hdDsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0OyBvZl9pbnQgYm9yZGVyOyBvZl9pbnQgZm9ybWF0OyBvZl9pbnQgdHlwZSc7IHNvdXJjZXxdXG5cbiAgbGV0IHRleF9pbWFnZTJkX29mX3BpeGVsX3VucGFjayBjIHRhcmdldCBsZXZlbCBpbnRlcm5hbGZvcm1hdCB3aWR0aCBoZWlnaHQgYm9yZGVyIGZvcm1hdCB0eXBlJyBwYm9PZmZzZXQgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ0ZXhJbWFnZTJEXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgbGV2ZWw7IG9mX2ludCBpbnRlcm5hbGZvcm1hdDsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0OyBvZl9pbnQgYm9yZGVyOyBvZl9pbnQgZm9ybWF0OyBvZl9pbnQgdHlwZSc7IG9mX2ludCBwYm9PZmZzZXR8XVxuXG4gIGxldCB0ZXhfaW1hZ2UzZCBjIHRhcmdldCBsZXZlbCBpbnRlcm5hbGZvcm1hdCB3aWR0aCBoZWlnaHQgZGVwdGggYm9yZGVyIGZvcm1hdCB0eXBlJyBzcmNEYXRhIHNyY09mZnNldCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInRleEltYWdlM0RcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBsZXZlbDsgb2ZfaW50IGludGVybmFsZm9ybWF0OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHQ7IG9mX2ludCBkZXB0aDsgb2ZfaW50IGJvcmRlcjsgb2ZfaW50IGZvcm1hdDsgb2ZfaW50IHR5cGUnOyBUYXJyYXkudG9fanYgc3JjRGF0YTsgb2ZfaW50IHNyY09mZnNldHxdXG5cbiAgbGV0IHRleF9pbWFnZTNkX29mX3NvdXJjZSBjIHRhcmdldCBsZXZlbCBpbnRlcm5hbGZvcm1hdCB3aWR0aCBoZWlnaHQgZGVwdGggYm9yZGVyIGZvcm1hdCB0eXBlJyBzb3VyY2UgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ0ZXhJbWFnZTNEXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgbGV2ZWw7IG9mX2ludCBpbnRlcm5hbGZvcm1hdDsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0OyBvZl9pbnQgZGVwdGg7IG9mX2ludCBib3JkZXI7IG9mX2ludCBmb3JtYXQ7IG9mX2ludCB0eXBlJzsgc291cmNlfF1cblxuICBsZXQgdGV4X2ltYWdlM2Rfb2ZfcGl4ZWxfdW5wYWNrIGMgdGFyZ2V0IGxldmVsIGludGVybmFsZm9ybWF0IHdpZHRoIGhlaWdodCBkZXB0aCBib3JkZXIgZm9ybWF0IHR5cGUnIHBib09mZnNldCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInRleEltYWdlM0RcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBsZXZlbDsgb2ZfaW50IGludGVybmFsZm9ybWF0OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHQ7IG9mX2ludCBkZXB0aDsgb2ZfaW50IGJvcmRlcjsgb2ZfaW50IGZvcm1hdDsgb2ZfaW50IHR5cGUnOyBvZl9pbnQgcGJvT2Zmc2V0fF1cblxuICBsZXQgdGV4X3BhcmFtZXRlcmYgYyB0YXJnZXQgcG5hbWUgcGFyYW0gPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ0ZXhQYXJhbWV0ZXJmXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgcG5hbWU7IG9mX2Zsb2F0IHBhcmFtfF1cblxuICBsZXQgdGV4X3BhcmFtZXRlcmkgYyB0YXJnZXQgcG5hbWUgcGFyYW0gPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ0ZXhQYXJhbWV0ZXJpXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgcG5hbWU7IG9mX2ludCBwYXJhbXxdXG5cbiAgbGV0IHRleF9zdG9yYWdlMmQgYyB0YXJnZXQgbGV2ZWxzIGludGVybmFsZm9ybWF0IHdpZHRoIGhlaWdodCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInRleFN0b3JhZ2UyRFwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGxldmVsczsgb2ZfaW50IGludGVybmFsZm9ybWF0OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHR8XVxuXG4gIGxldCB0ZXhfc3RvcmFnZTNkIGMgdGFyZ2V0IGxldmVscyBpbnRlcm5hbGZvcm1hdCB3aWR0aCBoZWlnaHQgZGVwdGggPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ0ZXhTdG9yYWdlM0RcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBsZXZlbHM7IG9mX2ludCBpbnRlcm5hbGZvcm1hdDsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0OyBvZl9pbnQgZGVwdGh8XVxuXG4gIGxldCB0ZXhfc3ViX2ltYWdlMmQgYyB0YXJnZXQgbGV2ZWwgeG9mZnNldCB5b2Zmc2V0IHdpZHRoIGhlaWdodCBmb3JtYXQgdHlwZScgc3JjRGF0YSBzcmNPZmZzZXQgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ0ZXhTdWJJbWFnZTJEXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgbGV2ZWw7IG9mX2ludCB4b2Zmc2V0OyBvZl9pbnQgeW9mZnNldDsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0OyBvZl9pbnQgZm9ybWF0OyBvZl9pbnQgdHlwZSc7IFRhcnJheS50b19qdiBzcmNEYXRhOyBvZl9pbnQgc3JjT2Zmc2V0fF1cblxuICBsZXQgdGV4X3N1Yl9pbWFnZTJkX29mX3NvdXJjZSBjIHRhcmdldCBsZXZlbCB4b2Zmc2V0IHlvZmZzZXQgd2lkdGggaGVpZ2h0IGZvcm1hdCB0eXBlJyBzb3VyY2UgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ0ZXhTdWJJbWFnZTJEXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgbGV2ZWw7IG9mX2ludCB4b2Zmc2V0OyBvZl9pbnQgeW9mZnNldDsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0OyBvZl9pbnQgZm9ybWF0OyBvZl9pbnQgdHlwZSc7IHNvdXJjZXxdXG5cbiAgbGV0IHRleF9zdWJfaW1hZ2UyZF9vZl9waXhlbF91bnBhY2sgYyB0YXJnZXQgbGV2ZWwgeG9mZnNldCB5b2Zmc2V0IHdpZHRoIGhlaWdodCBmb3JtYXQgdHlwZScgcGJvT2Zmc2V0ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidGV4U3ViSW1hZ2UyRFwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGxldmVsOyBvZl9pbnQgeG9mZnNldDsgb2ZfaW50IHlvZmZzZXQ7IG9mX2ludCB3aWR0aDsgb2ZfaW50IGhlaWdodDsgb2ZfaW50IGZvcm1hdDsgb2ZfaW50IHR5cGUnOyBvZl9pbnQgcGJvT2Zmc2V0fF1cblxuICBsZXQgdGV4X3N1Yl9pbWFnZTNkIGMgdGFyZ2V0IGxldmVsIHhvZmZzZXQgeW9mZnNldCB6b2Zmc2V0IHdpZHRoIGhlaWdodCBkZXB0aCBmb3JtYXQgdHlwZScgc3JjRGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInRleFN1YkltYWdlM0RcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBsZXZlbDsgb2ZfaW50IHhvZmZzZXQ7IG9mX2ludCB5b2Zmc2V0OyBvZl9pbnQgem9mZnNldDsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0OyBvZl9pbnQgZGVwdGg7IG9mX2ludCBmb3JtYXQ7IG9mX2ludCB0eXBlJzsgVGFycmF5LnRvX2p2IHNyY0RhdGF8XVxuXG4gIGxldCB0ZXhfc3ViX2ltYWdlM2Rfb2Zfc291cmNlIGMgdGFyZ2V0IGxldmVsIHhvZmZzZXQgeW9mZnNldCB6b2Zmc2V0IHdpZHRoIGhlaWdodCBkZXB0aCBmb3JtYXQgdHlwZScgc291cmNlID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidGV4U3ViSW1hZ2UzRFwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGxldmVsOyBvZl9pbnQgeG9mZnNldDsgb2ZfaW50IHlvZmZzZXQ7IG9mX2ludCB6b2Zmc2V0OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHQ7IG9mX2ludCBkZXB0aDsgb2ZfaW50IGZvcm1hdDsgb2ZfaW50IHR5cGUnOyBzb3VyY2V8XVxuXG4gIGxldCB0ZXhfc3ViX2ltYWdlM2Rfb2ZfcGl4ZWxfdW5wYWNrIGMgdGFyZ2V0IGxldmVsIHhvZmZzZXQgeW9mZnNldCB6b2Zmc2V0IHdpZHRoIGhlaWdodCBkZXB0aCBmb3JtYXQgdHlwZScgcGJvT2Zmc2V0ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidGV4U3ViSW1hZ2UzRFwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGxldmVsOyBvZl9pbnQgeG9mZnNldDsgb2ZfaW50IHlvZmZzZXQ7IG9mX2ludCB6b2Zmc2V0OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHQ7IG9mX2ludCBkZXB0aDsgb2ZfaW50IGZvcm1hdDsgb2ZfaW50IHR5cGUnOyBvZl9pbnQgcGJvT2Zmc2V0fF1cblxuICBsZXQgdHJhbnNmb3JtX2ZlZWRiYWNrX3ZhcnlpbmdzIGMgcHJvZ3JhbSB2YXJ5aW5ncyBidWZmZXJNb2RlID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nc1wiIEp2Llt8cHJvZ3JhbTsgb2ZfanN0cl9saXN0IHZhcnlpbmdzOyBvZl9pbnQgYnVmZmVyTW9kZXxdXG5cbiAgbGV0IHVuaWZvcm0xZiBjIGxvY2F0aW9uIHggPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtMWZcIiBKdi5bfGxvY2F0aW9uOyBvZl9mbG9hdCB4fF1cblxuICBsZXQgdW5pZm9ybTFmdiBjIGxvY2F0aW9uIGRhdGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtMWZ2XCIgSnYuW3xsb2NhdGlvbjsgVGFycmF5LnRvX2p2IGRhdGF8XVxuXG4gIGxldCB1bmlmb3JtMWkgYyBsb2NhdGlvbiB4ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidW5pZm9ybTFpXCIgSnYuW3xsb2NhdGlvbjsgb2ZfaW50IHh8XVxuXG4gIGxldCB1bmlmb3JtMWl2IGMgbG9jYXRpb24gZGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm0xaXZcIiBKdi5bfGxvY2F0aW9uOyBUYXJyYXkudG9fanYgZGF0YXxdXG5cbiAgbGV0IHVuaWZvcm0xdWkgYyBsb2NhdGlvbiB2MCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm0xdWlcIiBKdi5bfGxvY2F0aW9uOyBvZl9pbnQgdjB8XVxuXG4gIGxldCB1bmlmb3JtMXVpdiBjIGxvY2F0aW9uIGRhdGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtMXVpdlwiIEp2Llt8bG9jYXRpb247IFRhcnJheS50b19qdiBkYXRhfF1cblxuICBsZXQgdW5pZm9ybTJmIGMgbG9jYXRpb24geCB5ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidW5pZm9ybTJmXCIgSnYuW3xsb2NhdGlvbjsgb2ZfZmxvYXQgeDsgb2ZfZmxvYXQgeXxdXG5cbiAgbGV0IHVuaWZvcm0yZnYgYyBsb2NhdGlvbiBkYXRhID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidW5pZm9ybTJmdlwiIEp2Llt8bG9jYXRpb247IFRhcnJheS50b19qdiBkYXRhfF1cblxuICBsZXQgdW5pZm9ybTJpIGMgbG9jYXRpb24geCB5ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidW5pZm9ybTJpXCIgSnYuW3xsb2NhdGlvbjsgb2ZfaW50IHg7IG9mX2ludCB5fF1cblxuICBsZXQgdW5pZm9ybTJpdiBjIGxvY2F0aW9uIGRhdGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtMml2XCIgSnYuW3xsb2NhdGlvbjsgVGFycmF5LnRvX2p2IGRhdGF8XVxuXG4gIGxldCB1bmlmb3JtMnVpIGMgbG9jYXRpb24gdjAgdjEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtMnVpXCIgSnYuW3xsb2NhdGlvbjsgb2ZfaW50IHYwOyBvZl9pbnQgdjF8XVxuXG4gIGxldCB1bmlmb3JtMnVpdiBjIGxvY2F0aW9uIGRhdGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtMnVpdlwiIEp2Llt8bG9jYXRpb247IFRhcnJheS50b19qdiBkYXRhfF1cblxuICBsZXQgdW5pZm9ybTNmIGMgbG9jYXRpb24geCB5IHogPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtM2ZcIiBKdi5bfGxvY2F0aW9uOyBvZl9mbG9hdCB4OyBvZl9mbG9hdCB5OyBvZl9mbG9hdCB6fF1cblxuICBsZXQgdW5pZm9ybTNmdiBjIGxvY2F0aW9uIGRhdGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtM2Z2XCIgSnYuW3xsb2NhdGlvbjsgVGFycmF5LnRvX2p2IGRhdGF8XVxuXG4gIGxldCB1bmlmb3JtM2kgYyBsb2NhdGlvbiB4IHkgeiA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm0zaVwiIEp2Llt8bG9jYXRpb247IG9mX2ludCB4OyBvZl9pbnQgeTsgb2ZfaW50IHp8XVxuXG4gIGxldCB1bmlmb3JtM2l2IGMgbG9jYXRpb24gZGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm0zaXZcIiBKdi5bfGxvY2F0aW9uOyBUYXJyYXkudG9fanYgZGF0YXxdXG5cbiAgbGV0IHVuaWZvcm0zdWkgYyBsb2NhdGlvbiB2MCB2MSB2MiA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm0zdWlcIiBKdi5bfGxvY2F0aW9uOyBvZl9pbnQgdjA7IG9mX2ludCB2MTsgb2ZfaW50IHYyfF1cblxuICBsZXQgdW5pZm9ybTN1aXYgYyBsb2NhdGlvbiBkYXRhID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidW5pZm9ybTN1aXZcIiBKdi5bfGxvY2F0aW9uOyBUYXJyYXkudG9fanYgZGF0YXxdXG5cbiAgbGV0IHVuaWZvcm00ZiBjIGxvY2F0aW9uIHggeSB6IHcgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtNGZcIiBKdi5bfGxvY2F0aW9uOyBvZl9mbG9hdCB4OyBvZl9mbG9hdCB5OyBvZl9mbG9hdCB6OyBvZl9mbG9hdCB3fF1cblxuICBsZXQgdW5pZm9ybTRmdiBjIGxvY2F0aW9uIGRhdGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtNGZ2XCIgSnYuW3xsb2NhdGlvbjsgVGFycmF5LnRvX2p2IGRhdGF8XVxuXG4gIGxldCB1bmlmb3JtNGkgYyBsb2NhdGlvbiB4IHkgeiB3ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidW5pZm9ybTRpXCIgSnYuW3xsb2NhdGlvbjsgb2ZfaW50IHg7IG9mX2ludCB5OyBvZl9pbnQgejsgb2ZfaW50IHd8XVxuXG4gIGxldCB1bmlmb3JtNGl2IGMgbG9jYXRpb24gZGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm00aXZcIiBKdi5bfGxvY2F0aW9uOyBUYXJyYXkudG9fanYgZGF0YXxdXG5cbiAgbGV0IHVuaWZvcm00dWkgYyBsb2NhdGlvbiB2MCB2MSB2MiB2MyA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm00dWlcIiBKdi5bfGxvY2F0aW9uOyBvZl9pbnQgdjA7IG9mX2ludCB2MTsgb2ZfaW50IHYyOyBvZl9pbnQgdjN8XVxuXG4gIGxldCB1bmlmb3JtNHVpdiBjIGxvY2F0aW9uIGRhdGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtNHVpdlwiIEp2Llt8bG9jYXRpb247IFRhcnJheS50b19qdiBkYXRhfF1cblxuICBsZXQgdW5pZm9ybV9ibG9ja19iaW5kaW5nIGMgcHJvZ3JhbSB1bmlmb3JtQmxvY2tJbmRleCB1bmlmb3JtQmxvY2tCaW5kaW5nID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidW5pZm9ybUJsb2NrQmluZGluZ1wiIEp2Llt8cHJvZ3JhbTsgb2ZfaW50IHVuaWZvcm1CbG9ja0luZGV4OyBvZl9pbnQgdW5pZm9ybUJsb2NrQmluZGluZ3xdXG5cbiAgbGV0IHVuaWZvcm1fbWF0cml4MmZ2IGMgbG9jYXRpb24gdHJhbnNwb3NlIGRhdGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtTWF0cml4MmZ2XCIgSnYuW3xsb2NhdGlvbjsgSnYub2ZfYm9vbCB0cmFuc3Bvc2U7IFRhcnJheS50b19qdiBkYXRhfF1cblxuICBsZXQgdW5pZm9ybV9tYXRyaXgyeDNmdiBjIGxvY2F0aW9uIHRyYW5zcG9zZSBkYXRhID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidW5pZm9ybU1hdHJpeDJ4M2Z2XCIgSnYuW3xsb2NhdGlvbjsgSnYub2ZfYm9vbCB0cmFuc3Bvc2U7IFRhcnJheS50b19qdiBkYXRhfF1cblxuICBsZXQgdW5pZm9ybV9tYXRyaXgyeDRmdiBjIGxvY2F0aW9uIHRyYW5zcG9zZSBkYXRhID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidW5pZm9ybU1hdHJpeDJ4NGZ2XCIgSnYuW3xsb2NhdGlvbjsgSnYub2ZfYm9vbCB0cmFuc3Bvc2U7IFRhcnJheS50b19qdiBkYXRhfF1cblxuICBsZXQgdW5pZm9ybV9tYXRyaXgzZnYgYyBsb2NhdGlvbiB0cmFuc3Bvc2UgZGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm1NYXRyaXgzZnZcIiBKdi5bfGxvY2F0aW9uOyBKdi5vZl9ib29sIHRyYW5zcG9zZTsgVGFycmF5LnRvX2p2IGRhdGF8XVxuXG4gIGxldCB1bmlmb3JtX21hdHJpeDN4MmZ2IGMgbG9jYXRpb24gdHJhbnNwb3NlIGRhdGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtTWF0cml4M3gyZnZcIiBKdi5bfGxvY2F0aW9uOyBKdi5vZl9ib29sIHRyYW5zcG9zZTsgVGFycmF5LnRvX2p2IGRhdGF8XVxuXG4gIGxldCB1bmlmb3JtX21hdHJpeDN4NGZ2IGMgbG9jYXRpb24gdHJhbnNwb3NlIGRhdGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtTWF0cml4M3g0ZnZcIiBKdi5bfGxvY2F0aW9uOyBKdi5vZl9ib29sIHRyYW5zcG9zZTsgVGFycmF5LnRvX2p2IGRhdGF8XVxuXG4gIGxldCB1bmlmb3JtX21hdHJpeDRmdiBjIGxvY2F0aW9uIHRyYW5zcG9zZSBkYXRhID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidW5pZm9ybU1hdHJpeDRmdlwiIEp2Llt8bG9jYXRpb247IEp2Lm9mX2Jvb2wgdHJhbnNwb3NlOyBUYXJyYXkudG9fanYgZGF0YXxdXG5cbiAgbGV0IHVuaWZvcm1fbWF0cml4NHgyZnYgYyBsb2NhdGlvbiB0cmFuc3Bvc2UgZGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm1NYXRyaXg0eDJmdlwiIEp2Llt8bG9jYXRpb247IEp2Lm9mX2Jvb2wgdHJhbnNwb3NlOyBUYXJyYXkudG9fanYgZGF0YXxdXG5cbiAgbGV0IHVuaWZvcm1fbWF0cml4NHgzZnYgYyBsb2NhdGlvbiB0cmFuc3Bvc2UgZGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm1NYXRyaXg0eDNmdlwiIEp2Llt8bG9jYXRpb247IEp2Lm9mX2Jvb2wgdHJhbnNwb3NlOyBUYXJyYXkudG9fanYgZGF0YXxdXG5cbiAgbGV0IHVzZV9wcm9ncmFtIGMgcHJvZ3JhbSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVzZVByb2dyYW1cIiBKdi5bfHByb2dyYW18XVxuXG4gIGxldCB2YWxpZGF0ZV9wcm9ncmFtIGMgcHJvZ3JhbSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInZhbGlkYXRlUHJvZ3JhbVwiIEp2Llt8cHJvZ3JhbXxdXG5cbiAgbGV0IHZlcnRleF9hdHRyaWIxZiBjIGluZGV4IHggPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ2ZXJ0ZXhBdHRyaWIxZlwiIEp2Llt8b2ZfaW50IGluZGV4OyBvZl9mbG9hdCB4fF1cblxuICBsZXQgdmVydGV4X2F0dHJpYjFmdiBjIGluZGV4IHZhbHVlcyA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInZlcnRleEF0dHJpYjFmdlwiIEp2Llt8b2ZfaW50IGluZGV4OyBUYXJyYXkudG9fanYgdmFsdWVzfF1cblxuICBsZXQgdmVydGV4X2F0dHJpYjJmIGMgaW5kZXggeCB5ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidmVydGV4QXR0cmliMmZcIiBKdi5bfG9mX2ludCBpbmRleDsgb2ZfZmxvYXQgeDsgb2ZfZmxvYXQgeXxdXG5cbiAgbGV0IHZlcnRleF9hdHRyaWIyZnYgYyBpbmRleCB2YWx1ZXMgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ2ZXJ0ZXhBdHRyaWIyZnZcIiBKdi5bfG9mX2ludCBpbmRleDsgVGFycmF5LnRvX2p2IHZhbHVlc3xdXG5cbiAgbGV0IHZlcnRleF9hdHRyaWIzZiBjIGluZGV4IHggeSB6ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidmVydGV4QXR0cmliM2ZcIiBKdi5bfG9mX2ludCBpbmRleDsgb2ZfZmxvYXQgeDsgb2ZfZmxvYXQgeTsgb2ZfZmxvYXQgenxdXG5cbiAgbGV0IHZlcnRleF9hdHRyaWIzZnYgYyBpbmRleCB2YWx1ZXMgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ2ZXJ0ZXhBdHRyaWIzZnZcIiBKdi5bfG9mX2ludCBpbmRleDsgVGFycmF5LnRvX2p2IHZhbHVlc3xdXG5cbiAgbGV0IHZlcnRleF9hdHRyaWI0ZiBjIGluZGV4IHggeSB6IHcgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ2ZXJ0ZXhBdHRyaWI0ZlwiIEp2Llt8b2ZfaW50IGluZGV4OyBvZl9mbG9hdCB4OyBvZl9mbG9hdCB5OyBvZl9mbG9hdCB6OyBvZl9mbG9hdCB3fF1cblxuICBsZXQgdmVydGV4X2F0dHJpYjRmdiBjIGluZGV4IHZhbHVlcyA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInZlcnRleEF0dHJpYjRmdlwiIEp2Llt8b2ZfaW50IGluZGV4OyBUYXJyYXkudG9fanYgdmFsdWVzfF1cblxuICBsZXQgdmVydGV4X2F0dHJpYl9kaXZpc29yIGMgaW5kZXggZGl2aXNvciA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInZlcnRleEF0dHJpYkRpdmlzb3JcIiBKdi5bfG9mX2ludCBpbmRleDsgb2ZfaW50IGRpdmlzb3J8XVxuXG4gIGxldCB2ZXJ0ZXhfYXR0cmliX2k0aSBjIGluZGV4IHggeSB6IHcgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ2ZXJ0ZXhBdHRyaWJJNGlcIiBKdi5bfG9mX2ludCBpbmRleDsgb2ZfaW50IHg7IG9mX2ludCB5OyBvZl9pbnQgejsgb2ZfaW50IHd8XVxuXG4gIGxldCB2ZXJ0ZXhfYXR0cmliX2k0aXYgYyBpbmRleCB2YWx1ZXMgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ2ZXJ0ZXhBdHRyaWJJNGl2XCIgSnYuW3xvZl9pbnQgaW5kZXg7IFRhcnJheS50b19qdiB2YWx1ZXN8XVxuXG4gIGxldCB2ZXJ0ZXhfYXR0cmliX2k0dWkgYyBpbmRleCB4IHkgeiB3ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidmVydGV4QXR0cmliSTR1aVwiIEp2Llt8b2ZfaW50IGluZGV4OyBvZl9pbnQgeDsgb2ZfaW50IHk7IG9mX2ludCB6OyBvZl9pbnQgd3xdXG5cbiAgbGV0IHZlcnRleF9hdHRyaWJfaTR1aXYgYyBpbmRleCB2YWx1ZXMgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ2ZXJ0ZXhBdHRyaWJJNHVpdlwiIEp2Llt8b2ZfaW50IGluZGV4OyBUYXJyYXkudG9fanYgdmFsdWVzfF1cblxuICBsZXQgdmVydGV4X2F0dHJpYl9pcG9pbnRlciBjIGluZGV4IHNpemUgdHlwZScgc3RyaWRlIG9mZnNldCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInZlcnRleEF0dHJpYklQb2ludGVyXCIgSnYuW3xvZl9pbnQgaW5kZXg7IG9mX2ludCBzaXplOyBvZl9pbnQgdHlwZSc7IG9mX2ludCBzdHJpZGU7IG9mX2ludCBvZmZzZXR8XVxuXG4gIGxldCB2ZXJ0ZXhfYXR0cmliX3BvaW50ZXIgYyBpbmRleCBzaXplIHR5cGUnIG5vcm1hbGl6ZWQgc3RyaWRlIG9mZnNldCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInZlcnRleEF0dHJpYlBvaW50ZXJcIiBKdi5bfG9mX2ludCBpbmRleDsgb2ZfaW50IHNpemU7IG9mX2ludCB0eXBlJzsgSnYub2ZfYm9vbCBub3JtYWxpemVkOyBvZl9pbnQgc3RyaWRlOyBvZl9pbnQgb2Zmc2V0fF1cblxuICBsZXQgdmlld3BvcnQgYyB4IHkgd2lkdGggaGVpZ2h0ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidmlld3BvcnRcIiBKdi5bfG9mX2ludCB4OyBvZl9pbnQgeTsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0fF1cblxuICBsZXQgd2FpdF9zeW5jIGMgc3luYyBmbGFncyB0aW1lb3V0ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwid2FpdFN5bmNcIiBKdi5bfHN5bmM7IG9mX2ludCBmbGFnczsgb2ZfaW50IHRpbWVvdXR8XVxuXG4gICgqIEVudW1zICopXG5cbiAgbGV0IGdldF9pbnQgY3R4IGYgPSBpZiBKdi5pc19ub25lIGN0eCB0aGVuIDAgZWxzZSBKdi5JbnQuZ2V0IGN0eCBmXG5cbiAgbGV0IGdsMWN0eCA9IEp2LmdldCBKdi5nbG9iYWwgXCJXZWJHTFJlbmRlcmluZ0NvbnRleHRcIlxuICBsZXQgZGVwdGhfYnVmZmVyX2JpdCA9IGdldF9pbnQgZ2wxY3R4IFwiREVQVEhfQlVGRkVSX0JJVFwiXG4gIGxldCBzdGVuY2lsX2J1ZmZlcl9iaXQgPSBnZXRfaW50IGdsMWN0eCBcIlNURU5DSUxfQlVGRkVSX0JJVFwiXG4gIGxldCBjb2xvcl9idWZmZXJfYml0ID0gZ2V0X2ludCBnbDFjdHggXCJDT0xPUl9CVUZGRVJfQklUXCJcbiAgbGV0IHBvaW50cyA9IGdldF9pbnQgZ2wxY3R4IFwiUE9JTlRTXCJcbiAgbGV0IGxpbmVzID0gZ2V0X2ludCBnbDFjdHggXCJMSU5FU1wiXG4gIGxldCBsaW5lX2xvb3AgPSBnZXRfaW50IGdsMWN0eCBcIkxJTkVfTE9PUFwiXG4gIGxldCBsaW5lX3N0cmlwID0gZ2V0X2ludCBnbDFjdHggXCJMSU5FX1NUUklQXCJcbiAgbGV0IHRyaWFuZ2xlcyA9IGdldF9pbnQgZ2wxY3R4IFwiVFJJQU5HTEVTXCJcbiAgbGV0IHRyaWFuZ2xlX3N0cmlwID0gZ2V0X2ludCBnbDFjdHggXCJUUklBTkdMRV9TVFJJUFwiXG4gIGxldCB0cmlhbmdsZV9mYW4gPSBnZXRfaW50IGdsMWN0eCBcIlRSSUFOR0xFX0ZBTlwiXG4gIGxldCB6ZXJvID0gZ2V0X2ludCBnbDFjdHggXCJaRVJPXCJcbiAgbGV0IG9uZSA9IGdldF9pbnQgZ2wxY3R4IFwiT05FXCJcbiAgbGV0IHNyY19jb2xvciA9IGdldF9pbnQgZ2wxY3R4IFwiU1JDX0NPTE9SXCJcbiAgbGV0IG9uZV9taW51c19zcmNfY29sb3IgPSBnZXRfaW50IGdsMWN0eCBcIk9ORV9NSU5VU19TUkNfQ09MT1JcIlxuICBsZXQgc3JjX2FscGhhID0gZ2V0X2ludCBnbDFjdHggXCJTUkNfQUxQSEFcIlxuICBsZXQgb25lX21pbnVzX3NyY19hbHBoYSA9IGdldF9pbnQgZ2wxY3R4IFwiT05FX01JTlVTX1NSQ19BTFBIQVwiXG4gIGxldCBkc3RfYWxwaGEgPSBnZXRfaW50IGdsMWN0eCBcIkRTVF9BTFBIQVwiXG4gIGxldCBvbmVfbWludXNfZHN0X2FscGhhID0gZ2V0X2ludCBnbDFjdHggXCJPTkVfTUlOVVNfRFNUX0FMUEhBXCJcbiAgbGV0IGRzdF9jb2xvciA9IGdldF9pbnQgZ2wxY3R4IFwiRFNUX0NPTE9SXCJcbiAgbGV0IG9uZV9taW51c19kc3RfY29sb3IgPSBnZXRfaW50IGdsMWN0eCBcIk9ORV9NSU5VU19EU1RfQ09MT1JcIlxuICBsZXQgc3JjX2FscGhhX3NhdHVyYXRlID0gZ2V0X2ludCBnbDFjdHggXCJTUkNfQUxQSEFfU0FUVVJBVEVcIlxuICBsZXQgZnVuY19hZGQgPSBnZXRfaW50IGdsMWN0eCBcIkZVTkNfQUREXCJcbiAgbGV0IGJsZW5kX2VxdWF0aW9uJyA9IGdldF9pbnQgZ2wxY3R4IFwiQkxFTkRfRVFVQVRJT05cIlxuICBsZXQgYmxlbmRfZXF1YXRpb25fcmdiID0gZ2V0X2ludCBnbDFjdHggXCJCTEVORF9FUVVBVElPTl9SR0JcIlxuICBsZXQgYmxlbmRfZXF1YXRpb25fYWxwaGEgPSBnZXRfaW50IGdsMWN0eCBcIkJMRU5EX0VRVUFUSU9OX0FMUEhBXCJcbiAgbGV0IGZ1bmNfc3VidHJhY3QgPSBnZXRfaW50IGdsMWN0eCBcIkZVTkNfU1VCVFJBQ1RcIlxuICBsZXQgZnVuY19yZXZlcnNlX3N1YnRyYWN0ID0gZ2V0X2ludCBnbDFjdHggXCJGVU5DX1JFVkVSU0VfU1VCVFJBQ1RcIlxuICBsZXQgYmxlbmRfZHN0X3JnYiA9IGdldF9pbnQgZ2wxY3R4IFwiQkxFTkRfRFNUX1JHQlwiXG4gIGxldCBibGVuZF9zcmNfcmdiID0gZ2V0X2ludCBnbDFjdHggXCJCTEVORF9TUkNfUkdCXCJcbiAgbGV0IGJsZW5kX2RzdF9hbHBoYSA9IGdldF9pbnQgZ2wxY3R4IFwiQkxFTkRfRFNUX0FMUEhBXCJcbiAgbGV0IGJsZW5kX3NyY19hbHBoYSA9IGdldF9pbnQgZ2wxY3R4IFwiQkxFTkRfU1JDX0FMUEhBXCJcbiAgbGV0IGNvbnN0YW50X2NvbG9yID0gZ2V0X2ludCBnbDFjdHggXCJDT05TVEFOVF9DT0xPUlwiXG4gIGxldCBvbmVfbWludXNfY29uc3RhbnRfY29sb3IgPSBnZXRfaW50IGdsMWN0eCBcIk9ORV9NSU5VU19DT05TVEFOVF9DT0xPUlwiXG4gIGxldCBjb25zdGFudF9hbHBoYSA9IGdldF9pbnQgZ2wxY3R4IFwiQ09OU1RBTlRfQUxQSEFcIlxuICBsZXQgb25lX21pbnVzX2NvbnN0YW50X2FscGhhID0gZ2V0X2ludCBnbDFjdHggXCJPTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEFcIlxuICBsZXQgYmxlbmRfY29sb3InID0gZ2V0X2ludCBnbDFjdHggXCJCTEVORF9DT0xPUlwiXG4gIGxldCBhcnJheV9idWZmZXIgPSBnZXRfaW50IGdsMWN0eCBcIkFSUkFZX0JVRkZFUlwiXG4gIGxldCBlbGVtZW50X2FycmF5X2J1ZmZlciA9IGdldF9pbnQgZ2wxY3R4IFwiRUxFTUVOVF9BUlJBWV9CVUZGRVJcIlxuICBsZXQgYXJyYXlfYnVmZmVyX2JpbmRpbmcgPSBnZXRfaW50IGdsMWN0eCBcIkFSUkFZX0JVRkZFUl9CSU5ESU5HXCJcbiAgbGV0IGVsZW1lbnRfYXJyYXlfYnVmZmVyX2JpbmRpbmcgPSBnZXRfaW50IGdsMWN0eCBcIkVMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkdcIlxuICBsZXQgc3RyZWFtX2RyYXcgPSBnZXRfaW50IGdsMWN0eCBcIlNUUkVBTV9EUkFXXCJcbiAgbGV0IHN0YXRpY19kcmF3ID0gZ2V0X2ludCBnbDFjdHggXCJTVEFUSUNfRFJBV1wiXG4gIGxldCBkeW5hbWljX2RyYXcgPSBnZXRfaW50IGdsMWN0eCBcIkRZTkFNSUNfRFJBV1wiXG4gIGxldCBidWZmZXJfc2l6ZSA9IGdldF9pbnQgZ2wxY3R4IFwiQlVGRkVSX1NJWkVcIlxuICBsZXQgYnVmZmVyX3VzYWdlID0gZ2V0X2ludCBnbDFjdHggXCJCVUZGRVJfVVNBR0VcIlxuICBsZXQgY3VycmVudF92ZXJ0ZXhfYXR0cmliID0gZ2V0X2ludCBnbDFjdHggXCJDVVJSRU5UX1ZFUlRFWF9BVFRSSUJcIlxuICBsZXQgZnJvbnQgPSBnZXRfaW50IGdsMWN0eCBcIkZST05UXCJcbiAgbGV0IGJhY2sgPSBnZXRfaW50IGdsMWN0eCBcIkJBQ0tcIlxuICBsZXQgZnJvbnRfYW5kX2JhY2sgPSBnZXRfaW50IGdsMWN0eCBcIkZST05UX0FORF9CQUNLXCJcbiAgbGV0IGN1bGxfZmFjZScgPSBnZXRfaW50IGdsMWN0eCBcIkNVTExfRkFDRVwiXG4gIGxldCBibGVuZCA9IGdldF9pbnQgZ2wxY3R4IFwiQkxFTkRcIlxuICBsZXQgZGl0aGVyID0gZ2V0X2ludCBnbDFjdHggXCJESVRIRVJcIlxuICBsZXQgc3RlbmNpbF90ZXN0ID0gZ2V0X2ludCBnbDFjdHggXCJTVEVOQ0lMX1RFU1RcIlxuICBsZXQgZGVwdGhfdGVzdCA9IGdldF9pbnQgZ2wxY3R4IFwiREVQVEhfVEVTVFwiXG4gIGxldCBzY2lzc29yX3Rlc3QgPSBnZXRfaW50IGdsMWN0eCBcIlNDSVNTT1JfVEVTVFwiXG4gIGxldCBwb2x5Z29uX29mZnNldF9maWxsID0gZ2V0X2ludCBnbDFjdHggXCJQT0xZR09OX09GRlNFVF9GSUxMXCJcbiAgbGV0IHNhbXBsZV9hbHBoYV90b19jb3ZlcmFnZSA9IGdldF9pbnQgZ2wxY3R4IFwiU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFXCJcbiAgbGV0IHNhbXBsZV9jb3ZlcmFnZScgPSBnZXRfaW50IGdsMWN0eCBcIlNBTVBMRV9DT1ZFUkFHRVwiXG4gIGxldCBub19lcnJvciA9IGdldF9pbnQgZ2wxY3R4IFwiTk9fRVJST1JcIlxuICBsZXQgaW52YWxpZF9lbnVtID0gZ2V0X2ludCBnbDFjdHggXCJJTlZBTElEX0VOVU1cIlxuICBsZXQgaW52YWxpZF92YWx1ZSA9IGdldF9pbnQgZ2wxY3R4IFwiSU5WQUxJRF9WQUxVRVwiXG4gIGxldCBpbnZhbGlkX29wZXJhdGlvbiA9IGdldF9pbnQgZ2wxY3R4IFwiSU5WQUxJRF9PUEVSQVRJT05cIlxuICBsZXQgb3V0X29mX21lbW9yeSA9IGdldF9pbnQgZ2wxY3R4IFwiT1VUX09GX01FTU9SWVwiXG4gIGxldCBjdyA9IGdldF9pbnQgZ2wxY3R4IFwiQ1dcIlxuICBsZXQgY2N3ID0gZ2V0X2ludCBnbDFjdHggXCJDQ1dcIlxuICBsZXQgbGluZV93aWR0aCcgPSBnZXRfaW50IGdsMWN0eCBcIkxJTkVfV0lEVEhcIlxuICBsZXQgYWxpYXNlZF9wb2ludF9zaXplX3JhbmdlID0gZ2V0X2ludCBnbDFjdHggXCJBTElBU0VEX1BPSU5UX1NJWkVfUkFOR0VcIlxuICBsZXQgYWxpYXNlZF9saW5lX3dpZHRoX3JhbmdlID0gZ2V0X2ludCBnbDFjdHggXCJBTElBU0VEX0xJTkVfV0lEVEhfUkFOR0VcIlxuICBsZXQgY3VsbF9mYWNlX21vZGUgPSBnZXRfaW50IGdsMWN0eCBcIkNVTExfRkFDRV9NT0RFXCJcbiAgbGV0IGZyb250X2ZhY2UnID0gZ2V0X2ludCBnbDFjdHggXCJGUk9OVF9GQUNFXCJcbiAgbGV0IGRlcHRoX3JhbmdlID0gZ2V0X2ludCBnbDFjdHggXCJERVBUSF9SQU5HRVwiXG4gIGxldCBkZXB0aF93cml0ZW1hc2sgPSBnZXRfaW50IGdsMWN0eCBcIkRFUFRIX1dSSVRFTUFTS1wiXG4gIGxldCBkZXB0aF9jbGVhcl92YWx1ZSA9IGdldF9pbnQgZ2wxY3R4IFwiREVQVEhfQ0xFQVJfVkFMVUVcIlxuICBsZXQgZGVwdGhfZnVuYycgPSBnZXRfaW50IGdsMWN0eCBcIkRFUFRIX0ZVTkNcIlxuICBsZXQgc3RlbmNpbF9jbGVhcl92YWx1ZSA9IGdldF9pbnQgZ2wxY3R4IFwiU1RFTkNJTF9DTEVBUl9WQUxVRVwiXG4gIGxldCBzdGVuY2lsX2Z1bmMnID0gZ2V0X2ludCBnbDFjdHggXCJTVEVOQ0lMX0ZVTkNcIlxuICBsZXQgc3RlbmNpbF9mYWlsID0gZ2V0X2ludCBnbDFjdHggXCJTVEVOQ0lMX0ZBSUxcIlxuICBsZXQgc3RlbmNpbF9wYXNzX2RlcHRoX2ZhaWwgPSBnZXRfaW50IGdsMWN0eCBcIlNURU5DSUxfUEFTU19ERVBUSF9GQUlMXCJcbiAgbGV0IHN0ZW5jaWxfcGFzc19kZXB0aF9wYXNzID0gZ2V0X2ludCBnbDFjdHggXCJTVEVOQ0lMX1BBU1NfREVQVEhfUEFTU1wiXG4gIGxldCBzdGVuY2lsX3JlZiA9IGdldF9pbnQgZ2wxY3R4IFwiU1RFTkNJTF9SRUZcIlxuICBsZXQgc3RlbmNpbF92YWx1ZV9tYXNrID0gZ2V0X2ludCBnbDFjdHggXCJTVEVOQ0lMX1ZBTFVFX01BU0tcIlxuICBsZXQgc3RlbmNpbF93cml0ZW1hc2sgPSBnZXRfaW50IGdsMWN0eCBcIlNURU5DSUxfV1JJVEVNQVNLXCJcbiAgbGV0IHN0ZW5jaWxfYmFja19mdW5jID0gZ2V0X2ludCBnbDFjdHggXCJTVEVOQ0lMX0JBQ0tfRlVOQ1wiXG4gIGxldCBzdGVuY2lsX2JhY2tfZmFpbCA9IGdldF9pbnQgZ2wxY3R4IFwiU1RFTkNJTF9CQUNLX0ZBSUxcIlxuICBsZXQgc3RlbmNpbF9iYWNrX3Bhc3NfZGVwdGhfZmFpbCA9IGdldF9pbnQgZ2wxY3R4IFwiU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfRkFJTFwiXG4gIGxldCBzdGVuY2lsX2JhY2tfcGFzc19kZXB0aF9wYXNzID0gZ2V0X2ludCBnbDFjdHggXCJTVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9QQVNTXCJcbiAgbGV0IHN0ZW5jaWxfYmFja19yZWYgPSBnZXRfaW50IGdsMWN0eCBcIlNURU5DSUxfQkFDS19SRUZcIlxuICBsZXQgc3RlbmNpbF9iYWNrX3ZhbHVlX21hc2sgPSBnZXRfaW50IGdsMWN0eCBcIlNURU5DSUxfQkFDS19WQUxVRV9NQVNLXCJcbiAgbGV0IHN0ZW5jaWxfYmFja193cml0ZW1hc2sgPSBnZXRfaW50IGdsMWN0eCBcIlNURU5DSUxfQkFDS19XUklURU1BU0tcIlxuICBsZXQgdmlld3BvcnQnID0gZ2V0X2ludCBnbDFjdHggXCJWSUVXUE9SVFwiXG4gIGxldCBzY2lzc29yX2JveCA9IGdldF9pbnQgZ2wxY3R4IFwiU0NJU1NPUl9CT1hcIlxuICBsZXQgY29sb3JfY2xlYXJfdmFsdWUgPSBnZXRfaW50IGdsMWN0eCBcIkNPTE9SX0NMRUFSX1ZBTFVFXCJcbiAgbGV0IGNvbG9yX3dyaXRlbWFzayA9IGdldF9pbnQgZ2wxY3R4IFwiQ09MT1JfV1JJVEVNQVNLXCJcbiAgbGV0IHVucGFja19hbGlnbm1lbnQgPSBnZXRfaW50IGdsMWN0eCBcIlVOUEFDS19BTElHTk1FTlRcIlxuICBsZXQgcGFja19hbGlnbm1lbnQgPSBnZXRfaW50IGdsMWN0eCBcIlBBQ0tfQUxJR05NRU5UXCJcbiAgbGV0IG1heF90ZXh0dXJlX3NpemUgPSBnZXRfaW50IGdsMWN0eCBcIk1BWF9URVhUVVJFX1NJWkVcIlxuICBsZXQgbWF4X3ZpZXdwb3J0X2RpbXMgPSBnZXRfaW50IGdsMWN0eCBcIk1BWF9WSUVXUE9SVF9ESU1TXCJcbiAgbGV0IHN1YnBpeGVsX2JpdHMgPSBnZXRfaW50IGdsMWN0eCBcIlNVQlBJWEVMX0JJVFNcIlxuICBsZXQgcmVkX2JpdHMgPSBnZXRfaW50IGdsMWN0eCBcIlJFRF9CSVRTXCJcbiAgbGV0IGdyZWVuX2JpdHMgPSBnZXRfaW50IGdsMWN0eCBcIkdSRUVOX0JJVFNcIlxuICBsZXQgYmx1ZV9iaXRzID0gZ2V0X2ludCBnbDFjdHggXCJCTFVFX0JJVFNcIlxuICBsZXQgYWxwaGFfYml0cyA9IGdldF9pbnQgZ2wxY3R4IFwiQUxQSEFfQklUU1wiXG4gIGxldCBkZXB0aF9iaXRzID0gZ2V0X2ludCBnbDFjdHggXCJERVBUSF9CSVRTXCJcbiAgbGV0IHN0ZW5jaWxfYml0cyA9IGdldF9pbnQgZ2wxY3R4IFwiU1RFTkNJTF9CSVRTXCJcbiAgbGV0IHBvbHlnb25fb2Zmc2V0X3VuaXRzID0gZ2V0X2ludCBnbDFjdHggXCJQT0xZR09OX09GRlNFVF9VTklUU1wiXG4gIGxldCBwb2x5Z29uX29mZnNldF9mYWN0b3IgPSBnZXRfaW50IGdsMWN0eCBcIlBPTFlHT05fT0ZGU0VUX0ZBQ1RPUlwiXG4gIGxldCB0ZXh0dXJlX2JpbmRpbmdfMmQgPSBnZXRfaW50IGdsMWN0eCBcIlRFWFRVUkVfQklORElOR18yRFwiXG4gIGxldCBzYW1wbGVfYnVmZmVycyA9IGdldF9pbnQgZ2wxY3R4IFwiU0FNUExFX0JVRkZFUlNcIlxuICBsZXQgc2FtcGxlcyA9IGdldF9pbnQgZ2wxY3R4IFwiU0FNUExFU1wiXG4gIGxldCBzYW1wbGVfY292ZXJhZ2VfdmFsdWUgPSBnZXRfaW50IGdsMWN0eCBcIlNBTVBMRV9DT1ZFUkFHRV9WQUxVRVwiXG4gIGxldCBzYW1wbGVfY292ZXJhZ2VfaW52ZXJ0ID0gZ2V0X2ludCBnbDFjdHggXCJTQU1QTEVfQ09WRVJBR0VfSU5WRVJUXCJcbiAgbGV0IGNvbXByZXNzZWRfdGV4dHVyZV9mb3JtYXRzID0gZ2V0X2ludCBnbDFjdHggXCJDT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUU1wiXG4gIGxldCBkb250X2NhcmUgPSBnZXRfaW50IGdsMWN0eCBcIkRPTlRfQ0FSRVwiXG4gIGxldCBmYXN0ZXN0ID0gZ2V0X2ludCBnbDFjdHggXCJGQVNURVNUXCJcbiAgbGV0IG5pY2VzdCA9IGdldF9pbnQgZ2wxY3R4IFwiTklDRVNUXCJcbiAgbGV0IGdlbmVyYXRlX21pcG1hcF9oaW50ID0gZ2V0X2ludCBnbDFjdHggXCJHRU5FUkFURV9NSVBNQVBfSElOVFwiXG4gIGxldCBieXRlID0gZ2V0X2ludCBnbDFjdHggXCJCWVRFXCJcbiAgbGV0IHVuc2lnbmVkX2J5dGUgPSBnZXRfaW50IGdsMWN0eCBcIlVOU0lHTkVEX0JZVEVcIlxuICBsZXQgc2hvcnQgPSBnZXRfaW50IGdsMWN0eCBcIlNIT1JUXCJcbiAgbGV0IHVuc2lnbmVkX3Nob3J0ID0gZ2V0X2ludCBnbDFjdHggXCJVTlNJR05FRF9TSE9SVFwiXG4gIGxldCBpbnQgPSBnZXRfaW50IGdsMWN0eCBcIklOVFwiXG4gIGxldCB1bnNpZ25lZF9pbnQgPSBnZXRfaW50IGdsMWN0eCBcIlVOU0lHTkVEX0lOVFwiXG4gIGxldCBmbG9hdCA9IGdldF9pbnQgZ2wxY3R4IFwiRkxPQVRcIlxuICBsZXQgZGVwdGhfY29tcG9uZW50ID0gZ2V0X2ludCBnbDFjdHggXCJERVBUSF9DT01QT05FTlRcIlxuICBsZXQgYWxwaGEgPSBnZXRfaW50IGdsMWN0eCBcIkFMUEhBXCJcbiAgbGV0IHJnYiA9IGdldF9pbnQgZ2wxY3R4IFwiUkdCXCJcbiAgbGV0IHJnYmEgPSBnZXRfaW50IGdsMWN0eCBcIlJHQkFcIlxuICBsZXQgbHVtaW5hbmNlID0gZ2V0X2ludCBnbDFjdHggXCJMVU1JTkFOQ0VcIlxuICBsZXQgbHVtaW5hbmNlX2FscGhhID0gZ2V0X2ludCBnbDFjdHggXCJMVU1JTkFOQ0VfQUxQSEFcIlxuICBsZXQgdW5zaWduZWRfc2hvcnRfNF80XzRfNCA9IGdldF9pbnQgZ2wxY3R4IFwiVU5TSUdORURfU0hPUlRfNF80XzRfNFwiXG4gIGxldCB1bnNpZ25lZF9zaG9ydF81XzVfNV8xID0gZ2V0X2ludCBnbDFjdHggXCJVTlNJR05FRF9TSE9SVF81XzVfNV8xXCJcbiAgbGV0IHVuc2lnbmVkX3Nob3J0XzVfNl81ID0gZ2V0X2ludCBnbDFjdHggXCJVTlNJR05FRF9TSE9SVF81XzZfNVwiXG4gIGxldCBmcmFnbWVudF9zaGFkZXIgPSBnZXRfaW50IGdsMWN0eCBcIkZSQUdNRU5UX1NIQURFUlwiXG4gIGxldCB2ZXJ0ZXhfc2hhZGVyID0gZ2V0X2ludCBnbDFjdHggXCJWRVJURVhfU0hBREVSXCJcbiAgbGV0IG1heF92ZXJ0ZXhfYXR0cmlicyA9IGdldF9pbnQgZ2wxY3R4IFwiTUFYX1ZFUlRFWF9BVFRSSUJTXCJcbiAgbGV0IG1heF92ZXJ0ZXhfdW5pZm9ybV92ZWN0b3JzID0gZ2V0X2ludCBnbDFjdHggXCJNQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SU1wiXG4gIGxldCBtYXhfdmFyeWluZ192ZWN0b3JzID0gZ2V0X2ludCBnbDFjdHggXCJNQVhfVkFSWUlOR19WRUNUT1JTXCJcbiAgbGV0IG1heF9jb21iaW5lZF90ZXh0dXJlX2ltYWdlX3VuaXRzID0gZ2V0X2ludCBnbDFjdHggXCJNQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUU1wiXG4gIGxldCBtYXhfdmVydGV4X3RleHR1cmVfaW1hZ2VfdW5pdHMgPSBnZXRfaW50IGdsMWN0eCBcIk1BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUU1wiXG4gIGxldCBtYXhfdGV4dHVyZV9pbWFnZV91bml0cyA9IGdldF9pbnQgZ2wxY3R4IFwiTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFNcIlxuICBsZXQgbWF4X2ZyYWdtZW50X3VuaWZvcm1fdmVjdG9ycyA9IGdldF9pbnQgZ2wxY3R4IFwiTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SU1wiXG4gIGxldCBzaGFkZXJfdHlwZSA9IGdldF9pbnQgZ2wxY3R4IFwiU0hBREVSX1RZUEVcIlxuICBsZXQgZGVsZXRlX3N0YXR1cyA9IGdldF9pbnQgZ2wxY3R4IFwiREVMRVRFX1NUQVRVU1wiXG4gIGxldCBsaW5rX3N0YXR1cyA9IGdldF9pbnQgZ2wxY3R4IFwiTElOS19TVEFUVVNcIlxuICBsZXQgdmFsaWRhdGVfc3RhdHVzID0gZ2V0X2ludCBnbDFjdHggXCJWQUxJREFURV9TVEFUVVNcIlxuICBsZXQgYXR0YWNoZWRfc2hhZGVycyA9IGdldF9pbnQgZ2wxY3R4IFwiQVRUQUNIRURfU0hBREVSU1wiXG4gIGxldCBhY3RpdmVfdW5pZm9ybXMgPSBnZXRfaW50IGdsMWN0eCBcIkFDVElWRV9VTklGT1JNU1wiXG4gIGxldCBhY3RpdmVfYXR0cmlidXRlcyA9IGdldF9pbnQgZ2wxY3R4IFwiQUNUSVZFX0FUVFJJQlVURVNcIlxuICBsZXQgc2hhZGluZ19sYW5ndWFnZV92ZXJzaW9uID0gZ2V0X2ludCBnbDFjdHggXCJTSEFESU5HX0xBTkdVQUdFX1ZFUlNJT05cIlxuICBsZXQgY3VycmVudF9wcm9ncmFtID0gZ2V0X2ludCBnbDFjdHggXCJDVVJSRU5UX1BST0dSQU1cIlxuICBsZXQgbmV2ZXIgPSBnZXRfaW50IGdsMWN0eCBcIk5FVkVSXCJcbiAgbGV0IGxlc3MgPSBnZXRfaW50IGdsMWN0eCBcIkxFU1NcIlxuICBsZXQgZXF1YWwgPSBnZXRfaW50IGdsMWN0eCBcIkVRVUFMXCJcbiAgbGV0IGxlcXVhbCA9IGdldF9pbnQgZ2wxY3R4IFwiTEVRVUFMXCJcbiAgbGV0IGdyZWF0ZXIgPSBnZXRfaW50IGdsMWN0eCBcIkdSRUFURVJcIlxuICBsZXQgbm90ZXF1YWwgPSBnZXRfaW50IGdsMWN0eCBcIk5PVEVRVUFMXCJcbiAgbGV0IGdlcXVhbCA9IGdldF9pbnQgZ2wxY3R4IFwiR0VRVUFMXCJcbiAgbGV0IGFsd2F5cyA9IGdldF9pbnQgZ2wxY3R4IFwiQUxXQVlTXCJcbiAgbGV0IGtlZXAgPSBnZXRfaW50IGdsMWN0eCBcIktFRVBcIlxuICBsZXQgcmVwbGFjZSA9IGdldF9pbnQgZ2wxY3R4IFwiUkVQTEFDRVwiXG4gIGxldCBpbmNyID0gZ2V0X2ludCBnbDFjdHggXCJJTkNSXCJcbiAgbGV0IGRlY3IgPSBnZXRfaW50IGdsMWN0eCBcIkRFQ1JcIlxuICBsZXQgaW52ZXJ0ID0gZ2V0X2ludCBnbDFjdHggXCJJTlZFUlRcIlxuICBsZXQgaW5jcl93cmFwID0gZ2V0X2ludCBnbDFjdHggXCJJTkNSX1dSQVBcIlxuICBsZXQgZGVjcl93cmFwID0gZ2V0X2ludCBnbDFjdHggXCJERUNSX1dSQVBcIlxuICBsZXQgdmVuZG9yID0gZ2V0X2ludCBnbDFjdHggXCJWRU5ET1JcIlxuICBsZXQgcmVuZGVyZXIgPSBnZXRfaW50IGdsMWN0eCBcIlJFTkRFUkVSXCJcbiAgbGV0IHZlcnNpb24gPSBnZXRfaW50IGdsMWN0eCBcIlZFUlNJT05cIlxuICBsZXQgbmVhcmVzdCA9IGdldF9pbnQgZ2wxY3R4IFwiTkVBUkVTVFwiXG4gIGxldCBsaW5lYXIgPSBnZXRfaW50IGdsMWN0eCBcIkxJTkVBUlwiXG4gIGxldCBuZWFyZXN0X21pcG1hcF9uZWFyZXN0ID0gZ2V0X2ludCBnbDFjdHggXCJORUFSRVNUX01JUE1BUF9ORUFSRVNUXCJcbiAgbGV0IGxpbmVhcl9taXBtYXBfbmVhcmVzdCA9IGdldF9pbnQgZ2wxY3R4IFwiTElORUFSX01JUE1BUF9ORUFSRVNUXCJcbiAgbGV0IG5lYXJlc3RfbWlwbWFwX2xpbmVhciA9IGdldF9pbnQgZ2wxY3R4IFwiTkVBUkVTVF9NSVBNQVBfTElORUFSXCJcbiAgbGV0IGxpbmVhcl9taXBtYXBfbGluZWFyID0gZ2V0X2ludCBnbDFjdHggXCJMSU5FQVJfTUlQTUFQX0xJTkVBUlwiXG4gIGxldCB0ZXh0dXJlX21hZ19maWx0ZXIgPSBnZXRfaW50IGdsMWN0eCBcIlRFWFRVUkVfTUFHX0ZJTFRFUlwiXG4gIGxldCB0ZXh0dXJlX21pbl9maWx0ZXIgPSBnZXRfaW50IGdsMWN0eCBcIlRFWFRVUkVfTUlOX0ZJTFRFUlwiXG4gIGxldCB0ZXh0dXJlX3dyYXBfcyA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRV9XUkFQX1NcIlxuICBsZXQgdGV4dHVyZV93cmFwX3QgPSBnZXRfaW50IGdsMWN0eCBcIlRFWFRVUkVfV1JBUF9UXCJcbiAgbGV0IHRleHR1cmVfMmQgPSBnZXRfaW50IGdsMWN0eCBcIlRFWFRVUkVfMkRcIlxuICBsZXQgdGV4dHVyZSA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRVwiXG4gIGxldCB0ZXh0dXJlX2N1YmVfbWFwID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFX0NVQkVfTUFQXCJcbiAgbGV0IHRleHR1cmVfYmluZGluZ19jdWJlX21hcCA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQXCJcbiAgbGV0IHRleHR1cmVfY3ViZV9tYXBfcG9zaXRpdmVfeCA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YXCJcbiAgbGV0IHRleHR1cmVfY3ViZV9tYXBfbmVnYXRpdmVfeCA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YXCJcbiAgbGV0IHRleHR1cmVfY3ViZV9tYXBfcG9zaXRpdmVfeSA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZXCJcbiAgbGV0IHRleHR1cmVfY3ViZV9tYXBfbmVnYXRpdmVfeSA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZXCJcbiAgbGV0IHRleHR1cmVfY3ViZV9tYXBfcG9zaXRpdmVfeiA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aXCJcbiAgbGV0IHRleHR1cmVfY3ViZV9tYXBfbmVnYXRpdmVfeiA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aXCJcbiAgbGV0IG1heF9jdWJlX21hcF90ZXh0dXJlX3NpemUgPSBnZXRfaW50IGdsMWN0eCBcIk1BWF9DVUJFX01BUF9URVhUVVJFX1NJWkVcIlxuICBsZXQgdGV4dHVyZTAgPSBnZXRfaW50IGdsMWN0eCBcIlRFWFRVUkUwXCJcbiAgbGV0IHRleHR1cmUxID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMVwiXG4gIGxldCB0ZXh0dXJlMiA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTJcIlxuICBsZXQgdGV4dHVyZTMgPSBnZXRfaW50IGdsMWN0eCBcIlRFWFRVUkUzXCJcbiAgbGV0IHRleHR1cmU0ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFNFwiXG4gIGxldCB0ZXh0dXJlNSA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTVcIlxuICBsZXQgdGV4dHVyZTYgPSBnZXRfaW50IGdsMWN0eCBcIlRFWFRVUkU2XCJcbiAgbGV0IHRleHR1cmU3ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFN1wiXG4gIGxldCB0ZXh0dXJlOCA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRThcIlxuICBsZXQgdGV4dHVyZTkgPSBnZXRfaW50IGdsMWN0eCBcIlRFWFRVUkU5XCJcbiAgbGV0IHRleHR1cmUxMCA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTEwXCJcbiAgbGV0IHRleHR1cmUxMSA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTExXCJcbiAgbGV0IHRleHR1cmUxMiA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTEyXCJcbiAgbGV0IHRleHR1cmUxMyA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTEzXCJcbiAgbGV0IHRleHR1cmUxNCA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTE0XCJcbiAgbGV0IHRleHR1cmUxNSA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTE1XCJcbiAgbGV0IHRleHR1cmUxNiA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTE2XCJcbiAgbGV0IHRleHR1cmUxNyA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTE3XCJcbiAgbGV0IHRleHR1cmUxOCA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTE4XCJcbiAgbGV0IHRleHR1cmUxOSA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTE5XCJcbiAgbGV0IHRleHR1cmUyMCA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTIwXCJcbiAgbGV0IHRleHR1cmUyMSA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTIxXCJcbiAgbGV0IHRleHR1cmUyMiA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTIyXCJcbiAgbGV0IHRleHR1cmUyMyA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTIzXCJcbiAgbGV0IHRleHR1cmUyNCA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTI0XCJcbiAgbGV0IHRleHR1cmUyNSA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTI1XCJcbiAgbGV0IHRleHR1cmUyNiA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTI2XCJcbiAgbGV0IHRleHR1cmUyNyA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTI3XCJcbiAgbGV0IHRleHR1cmUyOCA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTI4XCJcbiAgbGV0IHRleHR1cmUyOSA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTI5XCJcbiAgbGV0IHRleHR1cmUzMCA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTMwXCJcbiAgbGV0IHRleHR1cmUzMSA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTMxXCJcbiAgbGV0IGFjdGl2ZV90ZXh0dXJlJyA9IGdldF9pbnQgZ2wxY3R4IFwiQUNUSVZFX1RFWFRVUkVcIlxuICBsZXQgcmVwZWF0ID0gZ2V0X2ludCBnbDFjdHggXCJSRVBFQVRcIlxuICBsZXQgY2xhbXBfdG9fZWRnZSA9IGdldF9pbnQgZ2wxY3R4IFwiQ0xBTVBfVE9fRURHRVwiXG4gIGxldCBtaXJyb3JlZF9yZXBlYXQgPSBnZXRfaW50IGdsMWN0eCBcIk1JUlJPUkVEX1JFUEVBVFwiXG4gIGxldCBmbG9hdF92ZWMyID0gZ2V0X2ludCBnbDFjdHggXCJGTE9BVF9WRUMyXCJcbiAgbGV0IGZsb2F0X3ZlYzMgPSBnZXRfaW50IGdsMWN0eCBcIkZMT0FUX1ZFQzNcIlxuICBsZXQgZmxvYXRfdmVjNCA9IGdldF9pbnQgZ2wxY3R4IFwiRkxPQVRfVkVDNFwiXG4gIGxldCBpbnRfdmVjMiA9IGdldF9pbnQgZ2wxY3R4IFwiSU5UX1ZFQzJcIlxuICBsZXQgaW50X3ZlYzMgPSBnZXRfaW50IGdsMWN0eCBcIklOVF9WRUMzXCJcbiAgbGV0IGludF92ZWM0ID0gZ2V0X2ludCBnbDFjdHggXCJJTlRfVkVDNFwiXG4gIGxldCBib29sID0gZ2V0X2ludCBnbDFjdHggXCJCT09MXCJcbiAgbGV0IGJvb2xfdmVjMiA9IGdldF9pbnQgZ2wxY3R4IFwiQk9PTF9WRUMyXCJcbiAgbGV0IGJvb2xfdmVjMyA9IGdldF9pbnQgZ2wxY3R4IFwiQk9PTF9WRUMzXCJcbiAgbGV0IGJvb2xfdmVjNCA9IGdldF9pbnQgZ2wxY3R4IFwiQk9PTF9WRUM0XCJcbiAgbGV0IGZsb2F0X21hdDIgPSBnZXRfaW50IGdsMWN0eCBcIkZMT0FUX01BVDJcIlxuICBsZXQgZmxvYXRfbWF0MyA9IGdldF9pbnQgZ2wxY3R4IFwiRkxPQVRfTUFUM1wiXG4gIGxldCBmbG9hdF9tYXQ0ID0gZ2V0X2ludCBnbDFjdHggXCJGTE9BVF9NQVQ0XCJcbiAgbGV0IHNhbXBsZXJfMmQgPSBnZXRfaW50IGdsMWN0eCBcIlNBTVBMRVJfMkRcIlxuICBsZXQgc2FtcGxlcl9jdWJlID0gZ2V0X2ludCBnbDFjdHggXCJTQU1QTEVSX0NVQkVcIlxuICBsZXQgdmVydGV4X2F0dHJpYl9hcnJheV9lbmFibGVkID0gZ2V0X2ludCBnbDFjdHggXCJWRVJURVhfQVRUUklCX0FSUkFZX0VOQUJMRURcIlxuICBsZXQgdmVydGV4X2F0dHJpYl9hcnJheV9zaXplID0gZ2V0X2ludCBnbDFjdHggXCJWRVJURVhfQVRUUklCX0FSUkFZX1NJWkVcIlxuICBsZXQgdmVydGV4X2F0dHJpYl9hcnJheV9zdHJpZGUgPSBnZXRfaW50IGdsMWN0eCBcIlZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFXCJcbiAgbGV0IHZlcnRleF9hdHRyaWJfYXJyYXlfdHlwZSA9IGdldF9pbnQgZ2wxY3R4IFwiVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFXCJcbiAgbGV0IHZlcnRleF9hdHRyaWJfYXJyYXlfbm9ybWFsaXplZCA9IGdldF9pbnQgZ2wxY3R4IFwiVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVEXCJcbiAgbGV0IHZlcnRleF9hdHRyaWJfYXJyYXlfcG9pbnRlciA9IGdldF9pbnQgZ2wxY3R4IFwiVkVSVEVYX0FUVFJJQl9BUlJBWV9QT0lOVEVSXCJcbiAgbGV0IHZlcnRleF9hdHRyaWJfYXJyYXlfYnVmZmVyX2JpbmRpbmcgPSBnZXRfaW50IGdsMWN0eCBcIlZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkdcIlxuICBsZXQgaW1wbGVtZW50YXRpb25fY29sb3JfcmVhZF90eXBlID0gZ2V0X2ludCBnbDFjdHggXCJJTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX1RZUEVcIlxuICBsZXQgaW1wbGVtZW50YXRpb25fY29sb3JfcmVhZF9mb3JtYXQgPSBnZXRfaW50IGdsMWN0eCBcIklNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfRk9STUFUXCJcbiAgbGV0IGNvbXBpbGVfc3RhdHVzID0gZ2V0X2ludCBnbDFjdHggXCJDT01QSUxFX1NUQVRVU1wiXG4gIGxldCBsb3dfZmxvYXQgPSBnZXRfaW50IGdsMWN0eCBcIkxPV19GTE9BVFwiXG4gIGxldCBtZWRpdW1fZmxvYXQgPSBnZXRfaW50IGdsMWN0eCBcIk1FRElVTV9GTE9BVFwiXG4gIGxldCBoaWdoX2Zsb2F0ID0gZ2V0X2ludCBnbDFjdHggXCJISUdIX0ZMT0FUXCJcbiAgbGV0IGxvd19pbnQgPSBnZXRfaW50IGdsMWN0eCBcIkxPV19JTlRcIlxuICBsZXQgbWVkaXVtX2ludCA9IGdldF9pbnQgZ2wxY3R4IFwiTUVESVVNX0lOVFwiXG4gIGxldCBoaWdoX2ludCA9IGdldF9pbnQgZ2wxY3R4IFwiSElHSF9JTlRcIlxuICBsZXQgZnJhbWVidWZmZXIgPSBnZXRfaW50IGdsMWN0eCBcIkZSQU1FQlVGRkVSXCJcbiAgbGV0IHJlbmRlcmJ1ZmZlciA9IGdldF9pbnQgZ2wxY3R4IFwiUkVOREVSQlVGRkVSXCJcbiAgbGV0IHJnYmE0ID0gZ2V0X2ludCBnbDFjdHggXCJSR0JBNFwiXG4gIGxldCByZ2I1X2ExID0gZ2V0X2ludCBnbDFjdHggXCJSR0I1X0ExXCJcbiAgbGV0IHJnYjU2NSA9IGdldF9pbnQgZ2wxY3R4IFwiUkdCNTY1XCJcbiAgbGV0IGRlcHRoX2NvbXBvbmVudDE2ID0gZ2V0X2ludCBnbDFjdHggXCJERVBUSF9DT01QT05FTlQxNlwiXG4gIGxldCBzdGVuY2lsX2luZGV4OCA9IGdldF9pbnQgZ2wxY3R4IFwiU1RFTkNJTF9JTkRFWDhcIlxuICBsZXQgZGVwdGhfc3RlbmNpbCA9IGdldF9pbnQgZ2wxY3R4IFwiREVQVEhfU1RFTkNJTFwiXG4gIGxldCByZW5kZXJidWZmZXJfd2lkdGggPSBnZXRfaW50IGdsMWN0eCBcIlJFTkRFUkJVRkZFUl9XSURUSFwiXG4gIGxldCByZW5kZXJidWZmZXJfaGVpZ2h0ID0gZ2V0X2ludCBnbDFjdHggXCJSRU5ERVJCVUZGRVJfSEVJR0hUXCJcbiAgbGV0IHJlbmRlcmJ1ZmZlcl9pbnRlcm5hbF9mb3JtYXQgPSBnZXRfaW50IGdsMWN0eCBcIlJFTkRFUkJVRkZFUl9JTlRFUk5BTF9GT1JNQVRcIlxuICBsZXQgcmVuZGVyYnVmZmVyX3JlZF9zaXplID0gZ2V0X2ludCBnbDFjdHggXCJSRU5ERVJCVUZGRVJfUkVEX1NJWkVcIlxuICBsZXQgcmVuZGVyYnVmZmVyX2dyZWVuX3NpemUgPSBnZXRfaW50IGdsMWN0eCBcIlJFTkRFUkJVRkZFUl9HUkVFTl9TSVpFXCJcbiAgbGV0IHJlbmRlcmJ1ZmZlcl9ibHVlX3NpemUgPSBnZXRfaW50IGdsMWN0eCBcIlJFTkRFUkJVRkZFUl9CTFVFX1NJWkVcIlxuICBsZXQgcmVuZGVyYnVmZmVyX2FscGhhX3NpemUgPSBnZXRfaW50IGdsMWN0eCBcIlJFTkRFUkJVRkZFUl9BTFBIQV9TSVpFXCJcbiAgbGV0IHJlbmRlcmJ1ZmZlcl9kZXB0aF9zaXplID0gZ2V0X2ludCBnbDFjdHggXCJSRU5ERVJCVUZGRVJfREVQVEhfU0laRVwiXG4gIGxldCByZW5kZXJidWZmZXJfc3RlbmNpbF9zaXplID0gZ2V0X2ludCBnbDFjdHggXCJSRU5ERVJCVUZGRVJfU1RFTkNJTF9TSVpFXCJcbiAgbGV0IGZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfb2JqZWN0X3R5cGUgPSBnZXRfaW50IGdsMWN0eCBcIkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEVcIlxuICBsZXQgZnJhbWVidWZmZXJfYXR0YWNobWVudF9vYmplY3RfbmFtZSA9IGdldF9pbnQgZ2wxY3R4IFwiRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRVwiXG4gIGxldCBmcmFtZWJ1ZmZlcl9hdHRhY2htZW50X3RleHR1cmVfbGV2ZWwgPSBnZXRfaW50IGdsMWN0eCBcIkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTFwiXG4gIGxldCBmcmFtZWJ1ZmZlcl9hdHRhY2htZW50X3RleHR1cmVfY3ViZV9tYXBfZmFjZSA9IGdldF9pbnQgZ2wxY3R4IFwiRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0VcIlxuICBsZXQgY29sb3JfYXR0YWNobWVudDAgPSBnZXRfaW50IGdsMWN0eCBcIkNPTE9SX0FUVEFDSE1FTlQwXCJcbiAgbGV0IGRlcHRoX2F0dGFjaG1lbnQgPSBnZXRfaW50IGdsMWN0eCBcIkRFUFRIX0FUVEFDSE1FTlRcIlxuICBsZXQgc3RlbmNpbF9hdHRhY2htZW50ID0gZ2V0X2ludCBnbDFjdHggXCJTVEVOQ0lMX0FUVEFDSE1FTlRcIlxuICBsZXQgZGVwdGhfc3RlbmNpbF9hdHRhY2htZW50ID0gZ2V0X2ludCBnbDFjdHggXCJERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlRcIlxuICBsZXQgbm9uZSA9IGdldF9pbnQgZ2wxY3R4IFwiTk9ORVwiXG4gIGxldCBmcmFtZWJ1ZmZlcl9jb21wbGV0ZSA9IGdldF9pbnQgZ2wxY3R4IFwiRlJBTUVCVUZGRVJfQ09NUExFVEVcIlxuICBsZXQgZnJhbWVidWZmZXJfaW5jb21wbGV0ZV9hdHRhY2htZW50ID0gZ2V0X2ludCBnbDFjdHggXCJGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlRcIlxuICBsZXQgZnJhbWVidWZmZXJfaW5jb21wbGV0ZV9taXNzaW5nX2F0dGFjaG1lbnQgPSBnZXRfaW50IGdsMWN0eCBcIkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTUlTU0lOR19BVFRBQ0hNRU5UXCJcbiAgbGV0IGZyYW1lYnVmZmVyX2luY29tcGxldGVfZGltZW5zaW9ucyA9IGdldF9pbnQgZ2wxY3R4IFwiRlJBTUVCVUZGRVJfSU5DT01QTEVURV9ESU1FTlNJT05TXCJcbiAgbGV0IGZyYW1lYnVmZmVyX3Vuc3VwcG9ydGVkID0gZ2V0X2ludCBnbDFjdHggXCJGUkFNRUJVRkZFUl9VTlNVUFBPUlRFRFwiXG4gIGxldCBmcmFtZWJ1ZmZlcl9iaW5kaW5nID0gZ2V0X2ludCBnbDFjdHggXCJGUkFNRUJVRkZFUl9CSU5ESU5HXCJcbiAgbGV0IHJlbmRlcmJ1ZmZlcl9iaW5kaW5nID0gZ2V0X2ludCBnbDFjdHggXCJSRU5ERVJCVUZGRVJfQklORElOR1wiXG4gIGxldCBtYXhfcmVuZGVyYnVmZmVyX3NpemUgPSBnZXRfaW50IGdsMWN0eCBcIk1BWF9SRU5ERVJCVUZGRVJfU0laRVwiXG4gIGxldCBpbnZhbGlkX2ZyYW1lYnVmZmVyX29wZXJhdGlvbiA9IGdldF9pbnQgZ2wxY3R4IFwiSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT05cIlxuICBsZXQgdW5wYWNrX2ZsaXBfeV93ZWJnbCA9IGdldF9pbnQgZ2wxY3R4IFwiVU5QQUNLX0ZMSVBfWV9XRUJHTFwiXG4gIGxldCB1bnBhY2tfcHJlbXVsdGlwbHlfYWxwaGFfd2ViZ2wgPSBnZXRfaW50IGdsMWN0eCBcIlVOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9XRUJHTFwiXG4gIGxldCBjb250ZXh0X2xvc3Rfd2ViZ2wgPSBnZXRfaW50IGdsMWN0eCBcIkNPTlRFWFRfTE9TVF9XRUJHTFwiXG4gIGxldCB1bnBhY2tfY29sb3JzcGFjZV9jb252ZXJzaW9uX3dlYmdsID0gZ2V0X2ludCBnbDFjdHggXCJVTlBBQ0tfQ09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdMXCJcbiAgbGV0IGJyb3dzZXJfZGVmYXVsdF93ZWJnbCA9IGdldF9pbnQgZ2wxY3R4IFwiQlJPV1NFUl9ERUZBVUxUX1dFQkdMXCJcblxuICBsZXQgZ2wyY3R4ID0gSnYuZ2V0IEp2Lmdsb2JhbCBcIldlYkdMMlJlbmRlcmluZ0NvbnRleHRcIlxuICBsZXQgcmVhZF9idWZmZXInID0gZ2V0X2ludCBnbDJjdHggXCJSRUFEX0JVRkZFUlwiXG4gIGxldCB1bnBhY2tfcm93X2xlbmd0aCA9IGdldF9pbnQgZ2wyY3R4IFwiVU5QQUNLX1JPV19MRU5HVEhcIlxuICBsZXQgdW5wYWNrX3NraXBfcm93cyA9IGdldF9pbnQgZ2wyY3R4IFwiVU5QQUNLX1NLSVBfUk9XU1wiXG4gIGxldCB1bnBhY2tfc2tpcF9waXhlbHMgPSBnZXRfaW50IGdsMmN0eCBcIlVOUEFDS19TS0lQX1BJWEVMU1wiXG4gIGxldCBwYWNrX3Jvd19sZW5ndGggPSBnZXRfaW50IGdsMmN0eCBcIlBBQ0tfUk9XX0xFTkdUSFwiXG4gIGxldCBwYWNrX3NraXBfcm93cyA9IGdldF9pbnQgZ2wyY3R4IFwiUEFDS19TS0lQX1JPV1NcIlxuICBsZXQgcGFja19za2lwX3BpeGVscyA9IGdldF9pbnQgZ2wyY3R4IFwiUEFDS19TS0lQX1BJWEVMU1wiXG4gIGxldCBjb2xvciA9IGdldF9pbnQgZ2wyY3R4IFwiQ09MT1JcIlxuICBsZXQgZGVwdGggPSBnZXRfaW50IGdsMmN0eCBcIkRFUFRIXCJcbiAgbGV0IHN0ZW5jaWwgPSBnZXRfaW50IGdsMmN0eCBcIlNURU5DSUxcIlxuICBsZXQgcmVkID0gZ2V0X2ludCBnbDJjdHggXCJSRURcIlxuICBsZXQgcmdiOCA9IGdldF9pbnQgZ2wyY3R4IFwiUkdCOFwiXG4gIGxldCByZ2JhOCA9IGdldF9pbnQgZ2wyY3R4IFwiUkdCQThcIlxuICBsZXQgcmdiMTBfYTIgPSBnZXRfaW50IGdsMmN0eCBcIlJHQjEwX0EyXCJcbiAgbGV0IHRleHR1cmVfYmluZGluZ18zZCA9IGdldF9pbnQgZ2wyY3R4IFwiVEVYVFVSRV9CSU5ESU5HXzNEXCJcbiAgbGV0IHVucGFja19za2lwX2ltYWdlcyA9IGdldF9pbnQgZ2wyY3R4IFwiVU5QQUNLX1NLSVBfSU1BR0VTXCJcbiAgbGV0IHVucGFja19pbWFnZV9oZWlnaHQgPSBnZXRfaW50IGdsMmN0eCBcIlVOUEFDS19JTUFHRV9IRUlHSFRcIlxuICBsZXQgdGV4dHVyZV8zZCA9IGdldF9pbnQgZ2wyY3R4IFwiVEVYVFVSRV8zRFwiXG4gIGxldCB0ZXh0dXJlX3dyYXBfciA9IGdldF9pbnQgZ2wyY3R4IFwiVEVYVFVSRV9XUkFQX1JcIlxuICBsZXQgbWF4XzNkX3RleHR1cmVfc2l6ZSA9IGdldF9pbnQgZ2wyY3R4IFwiTUFYXzNEX1RFWFRVUkVfU0laRVwiXG4gIGxldCB1bnNpZ25lZF9pbnRfMl8xMF8xMF8xMF9yZXYgPSBnZXRfaW50IGdsMmN0eCBcIlVOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVlwiXG4gIGxldCBtYXhfZWxlbWVudHNfdmVydGljZXMgPSBnZXRfaW50IGdsMmN0eCBcIk1BWF9FTEVNRU5UU19WRVJUSUNFU1wiXG4gIGxldCBtYXhfZWxlbWVudHNfaW5kaWNlcyA9IGdldF9pbnQgZ2wyY3R4IFwiTUFYX0VMRU1FTlRTX0lORElDRVNcIlxuICBsZXQgdGV4dHVyZV9taW5fbG9kID0gZ2V0X2ludCBnbDJjdHggXCJURVhUVVJFX01JTl9MT0RcIlxuICBsZXQgdGV4dHVyZV9tYXhfbG9kID0gZ2V0X2ludCBnbDJjdHggXCJURVhUVVJFX01BWF9MT0RcIlxuICBsZXQgdGV4dHVyZV9iYXNlX2xldmVsID0gZ2V0X2ludCBnbDJjdHggXCJURVhUVVJFX0JBU0VfTEVWRUxcIlxuICBsZXQgdGV4dHVyZV9tYXhfbGV2ZWwgPSBnZXRfaW50IGdsMmN0eCBcIlRFWFRVUkVfTUFYX0xFVkVMXCJcbiAgbGV0IG1pbiA9IGdldF9pbnQgZ2wyY3R4IFwiTUlOXCJcbiAgbGV0IG1heCA9IGdldF9pbnQgZ2wyY3R4IFwiTUFYXCJcbiAgbGV0IGRlcHRoX2NvbXBvbmVudDI0ID0gZ2V0X2ludCBnbDJjdHggXCJERVBUSF9DT01QT05FTlQyNFwiXG4gIGxldCBtYXhfdGV4dHVyZV9sb2RfYmlhcyA9IGdldF9pbnQgZ2wyY3R4IFwiTUFYX1RFWFRVUkVfTE9EX0JJQVNcIlxuICBsZXQgdGV4dHVyZV9jb21wYXJlX21vZGUgPSBnZXRfaW50IGdsMmN0eCBcIlRFWFRVUkVfQ09NUEFSRV9NT0RFXCJcbiAgbGV0IHRleHR1cmVfY29tcGFyZV9mdW5jID0gZ2V0X2ludCBnbDJjdHggXCJURVhUVVJFX0NPTVBBUkVfRlVOQ1wiXG4gIGxldCBjdXJyZW50X3F1ZXJ5ID0gZ2V0X2ludCBnbDJjdHggXCJDVVJSRU5UX1FVRVJZXCJcbiAgbGV0IHF1ZXJ5X3Jlc3VsdCA9IGdldF9pbnQgZ2wyY3R4IFwiUVVFUllfUkVTVUxUXCJcbiAgbGV0IHF1ZXJ5X3Jlc3VsdF9hdmFpbGFibGUgPSBnZXRfaW50IGdsMmN0eCBcIlFVRVJZX1JFU1VMVF9BVkFJTEFCTEVcIlxuICBsZXQgc3RyZWFtX3JlYWQgPSBnZXRfaW50IGdsMmN0eCBcIlNUUkVBTV9SRUFEXCJcbiAgbGV0IHN0cmVhbV9jb3B5ID0gZ2V0X2ludCBnbDJjdHggXCJTVFJFQU1fQ09QWVwiXG4gIGxldCBzdGF0aWNfcmVhZCA9IGdldF9pbnQgZ2wyY3R4IFwiU1RBVElDX1JFQURcIlxuICBsZXQgc3RhdGljX2NvcHkgPSBnZXRfaW50IGdsMmN0eCBcIlNUQVRJQ19DT1BZXCJcbiAgbGV0IGR5bmFtaWNfcmVhZCA9IGdldF9pbnQgZ2wyY3R4IFwiRFlOQU1JQ19SRUFEXCJcbiAgbGV0IGR5bmFtaWNfY29weSA9IGdldF9pbnQgZ2wyY3R4IFwiRFlOQU1JQ19DT1BZXCJcbiAgbGV0IG1heF9kcmF3X2J1ZmZlcnMgPSBnZXRfaW50IGdsMmN0eCBcIk1BWF9EUkFXX0JVRkZFUlNcIlxuICBsZXQgZHJhd19idWZmZXIwID0gZ2V0X2ludCBnbDJjdHggXCJEUkFXX0JVRkZFUjBcIlxuICBsZXQgZHJhd19idWZmZXIxID0gZ2V0X2ludCBnbDJjdHggXCJEUkFXX0JVRkZFUjFcIlxuICBsZXQgZHJhd19idWZmZXIyID0gZ2V0X2ludCBnbDJjdHggXCJEUkFXX0JVRkZFUjJcIlxuICBsZXQgZHJhd19idWZmZXIzID0gZ2V0X2ludCBnbDJjdHggXCJEUkFXX0JVRkZFUjNcIlxuICBsZXQgZHJhd19idWZmZXI0ID0gZ2V0X2ludCBnbDJjdHggXCJEUkFXX0JVRkZFUjRcIlxuICBsZXQgZHJhd19idWZmZXI1ID0gZ2V0X2ludCBnbDJjdHggXCJEUkFXX0JVRkZFUjVcIlxuICBsZXQgZHJhd19idWZmZXI2ID0gZ2V0X2ludCBnbDJjdHggXCJEUkFXX0JVRkZFUjZcIlxuICBsZXQgZHJhd19idWZmZXI3ID0gZ2V0X2ludCBnbDJjdHggXCJEUkFXX0JVRkZFUjdcIlxuICBsZXQgZHJhd19idWZmZXI4ID0gZ2V0X2ludCBnbDJjdHggXCJEUkFXX0JVRkZFUjhcIlxuICBsZXQgZHJhd19idWZmZXI5ID0gZ2V0X2ludCBnbDJjdHggXCJEUkFXX0JVRkZFUjlcIlxuICBsZXQgZHJhd19idWZmZXIxMCA9IGdldF9pbnQgZ2wyY3R4IFwiRFJBV19CVUZGRVIxMFwiXG4gIGxldCBkcmF3X2J1ZmZlcjExID0gZ2V0X2ludCBnbDJjdHggXCJEUkFXX0JVRkZFUjExXCJcbiAgbGV0IGRyYXdfYnVmZmVyMTIgPSBnZXRfaW50IGdsMmN0eCBcIkRSQVdfQlVGRkVSMTJcIlxuICBsZXQgZHJhd19idWZmZXIxMyA9IGdldF9pbnQgZ2wyY3R4IFwiRFJBV19CVUZGRVIxM1wiXG4gIGxldCBkcmF3X2J1ZmZlcjE0ID0gZ2V0X2ludCBnbDJjdHggXCJEUkFXX0JVRkZFUjE0XCJcbiAgbGV0IGRyYXdfYnVmZmVyMTUgPSBnZXRfaW50IGdsMmN0eCBcIkRSQVdfQlVGRkVSMTVcIlxuICBsZXQgbWF4X2ZyYWdtZW50X3VuaWZvcm1fY29tcG9uZW50cyA9IGdldF9pbnQgZ2wyY3R4IFwiTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UU1wiXG4gIGxldCBtYXhfdmVydGV4X3VuaWZvcm1fY29tcG9uZW50cyA9IGdldF9pbnQgZ2wyY3R4IFwiTUFYX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFNcIlxuICBsZXQgc2FtcGxlcl8zZCA9IGdldF9pbnQgZ2wyY3R4IFwiU0FNUExFUl8zRFwiXG4gIGxldCBzYW1wbGVyXzJkX3NoYWRvdyA9IGdldF9pbnQgZ2wyY3R4IFwiU0FNUExFUl8yRF9TSEFET1dcIlxuICBsZXQgZnJhZ21lbnRfc2hhZGVyX2Rlcml2YXRpdmVfaGludCA9IGdldF9pbnQgZ2wyY3R4IFwiRlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVFwiXG4gIGxldCBwaXhlbF9wYWNrX2J1ZmZlciA9IGdldF9pbnQgZ2wyY3R4IFwiUElYRUxfUEFDS19CVUZGRVJcIlxuICBsZXQgcGl4ZWxfdW5wYWNrX2J1ZmZlciA9IGdldF9pbnQgZ2wyY3R4IFwiUElYRUxfVU5QQUNLX0JVRkZFUlwiXG4gIGxldCBwaXhlbF9wYWNrX2J1ZmZlcl9iaW5kaW5nID0gZ2V0X2ludCBnbDJjdHggXCJQSVhFTF9QQUNLX0JVRkZFUl9CSU5ESU5HXCJcbiAgbGV0IHBpeGVsX3VucGFja19idWZmZXJfYmluZGluZyA9IGdldF9pbnQgZ2wyY3R4IFwiUElYRUxfVU5QQUNLX0JVRkZFUl9CSU5ESU5HXCJcbiAgbGV0IGZsb2F0X21hdDJ4MyA9IGdldF9pbnQgZ2wyY3R4IFwiRkxPQVRfTUFUMngzXCJcbiAgbGV0IGZsb2F0X21hdDJ4NCA9IGdldF9pbnQgZ2wyY3R4IFwiRkxPQVRfTUFUMng0XCJcbiAgbGV0IGZsb2F0X21hdDN4MiA9IGdldF9pbnQgZ2wyY3R4IFwiRkxPQVRfTUFUM3gyXCJcbiAgbGV0IGZsb2F0X21hdDN4NCA9IGdldF9pbnQgZ2wyY3R4IFwiRkxPQVRfTUFUM3g0XCJcbiAgbGV0IGZsb2F0X21hdDR4MiA9IGdldF9pbnQgZ2wyY3R4IFwiRkxPQVRfTUFUNHgyXCJcbiAgbGV0IGZsb2F0X21hdDR4MyA9IGdldF9pbnQgZ2wyY3R4IFwiRkxPQVRfTUFUNHgzXCJcbiAgbGV0IHNyZ2IgPSBnZXRfaW50IGdsMmN0eCBcIlNSR0JcIlxuICBsZXQgc3JnYjggPSBnZXRfaW50IGdsMmN0eCBcIlNSR0I4XCJcbiAgbGV0IHNyZ2I4X2FscGhhOCA9IGdldF9pbnQgZ2wyY3R4IFwiU1JHQjhfQUxQSEE4XCJcbiAgbGV0IGNvbXBhcmVfcmVmX3RvX3RleHR1cmUgPSBnZXRfaW50IGdsMmN0eCBcIkNPTVBBUkVfUkVGX1RPX1RFWFRVUkVcIlxuICBsZXQgcmdiYTMyZiA9IGdldF9pbnQgZ2wyY3R4IFwiUkdCQTMyRlwiXG4gIGxldCByZ2IzMmYgPSBnZXRfaW50IGdsMmN0eCBcIlJHQjMyRlwiXG4gIGxldCByZ2JhMTZmID0gZ2V0X2ludCBnbDJjdHggXCJSR0JBMTZGXCJcbiAgbGV0IHJnYjE2ZiA9IGdldF9pbnQgZ2wyY3R4IFwiUkdCMTZGXCJcbiAgbGV0IHZlcnRleF9hdHRyaWJfYXJyYXlfaW50ZWdlciA9IGdldF9pbnQgZ2wyY3R4IFwiVkVSVEVYX0FUVFJJQl9BUlJBWV9JTlRFR0VSXCJcbiAgbGV0IG1heF9hcnJheV90ZXh0dXJlX2xheWVycyA9IGdldF9pbnQgZ2wyY3R4IFwiTUFYX0FSUkFZX1RFWFRVUkVfTEFZRVJTXCJcbiAgbGV0IG1pbl9wcm9ncmFtX3RleGVsX29mZnNldCA9IGdldF9pbnQgZ2wyY3R4IFwiTUlOX1BST0dSQU1fVEVYRUxfT0ZGU0VUXCJcbiAgbGV0IG1heF9wcm9ncmFtX3RleGVsX29mZnNldCA9IGdldF9pbnQgZ2wyY3R4IFwiTUFYX1BST0dSQU1fVEVYRUxfT0ZGU0VUXCJcbiAgbGV0IG1heF92YXJ5aW5nX2NvbXBvbmVudHMgPSBnZXRfaW50IGdsMmN0eCBcIk1BWF9WQVJZSU5HX0NPTVBPTkVOVFNcIlxuICBsZXQgdGV4dHVyZV8yZF9hcnJheSA9IGdldF9pbnQgZ2wyY3R4IFwiVEVYVFVSRV8yRF9BUlJBWVwiXG4gIGxldCB0ZXh0dXJlX2JpbmRpbmdfMmRfYXJyYXkgPSBnZXRfaW50IGdsMmN0eCBcIlRFWFRVUkVfQklORElOR18yRF9BUlJBWVwiXG4gIGxldCByMTFmX2cxMWZfYjEwZiA9IGdldF9pbnQgZ2wyY3R4IFwiUjExRl9HMTFGX0IxMEZcIlxuICBsZXQgdW5zaWduZWRfaW50XzEwZl8xMWZfMTFmX3JldiA9IGdldF9pbnQgZ2wyY3R4IFwiVU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JFVlwiXG4gIGxldCByZ2I5X2U1ID0gZ2V0X2ludCBnbDJjdHggXCJSR0I5X0U1XCJcbiAgbGV0IHVuc2lnbmVkX2ludF81XzlfOV85X3JldiA9IGdldF9pbnQgZ2wyY3R4IFwiVU5TSUdORURfSU5UXzVfOV85XzlfUkVWXCJcbiAgbGV0IHRyYW5zZm9ybV9mZWVkYmFja19idWZmZXJfbW9kZSA9IGdldF9pbnQgZ2wyY3R4IFwiVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9NT0RFXCJcbiAgbGV0IG1heF90cmFuc2Zvcm1fZmVlZGJhY2tfc2VwYXJhdGVfY29tcG9uZW50cyA9IGdldF9pbnQgZ2wyY3R4IFwiTUFYX1RSQU5TRk9STV9GRUVEQkFDS19TRVBBUkFURV9DT01QT05FTlRTXCJcbiAgbGV0IHRyYW5zZm9ybV9mZWVkYmFja192YXJ5aW5ncycgPSBnZXRfaW50IGdsMmN0eCBcIlRSQU5TRk9STV9GRUVEQkFDS19WQVJZSU5HU1wiXG4gIGxldCB0cmFuc2Zvcm1fZmVlZGJhY2tfYnVmZmVyX3N0YXJ0ID0gZ2V0X2ludCBnbDJjdHggXCJUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NUQVJUXCJcbiAgbGV0IHRyYW5zZm9ybV9mZWVkYmFja19idWZmZXJfc2l6ZSA9IGdldF9pbnQgZ2wyY3R4IFwiVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TSVpFXCJcbiAgbGV0IHRyYW5zZm9ybV9mZWVkYmFja19wcmltaXRpdmVzX3dyaXR0ZW4gPSBnZXRfaW50IGdsMmN0eCBcIlRSQU5TRk9STV9GRUVEQkFDS19QUklNSVRJVkVTX1dSSVRURU5cIlxuICBsZXQgcmFzdGVyaXplcl9kaXNjYXJkID0gZ2V0X2ludCBnbDJjdHggXCJSQVNURVJJWkVSX0RJU0NBUkRcIlxuICBsZXQgbWF4X3RyYW5zZm9ybV9mZWVkYmFja19pbnRlcmxlYXZlZF9jb21wb25lbnRzID0gZ2V0X2ludCBnbDJjdHggXCJNQVhfVFJBTlNGT1JNX0ZFRURCQUNLX0lOVEVSTEVBVkVEX0NPTVBPTkVOVFNcIlxuICBsZXQgbWF4X3RyYW5zZm9ybV9mZWVkYmFja19zZXBhcmF0ZV9hdHRyaWJzID0gZ2V0X2ludCBnbDJjdHggXCJNQVhfVFJBTlNGT1JNX0ZFRURCQUNLX1NFUEFSQVRFX0FUVFJJQlNcIlxuICBsZXQgaW50ZXJsZWF2ZWRfYXR0cmlicyA9IGdldF9pbnQgZ2wyY3R4IFwiSU5URVJMRUFWRURfQVRUUklCU1wiXG4gIGxldCBzZXBhcmF0ZV9hdHRyaWJzID0gZ2V0X2ludCBnbDJjdHggXCJTRVBBUkFURV9BVFRSSUJTXCJcbiAgbGV0IHRyYW5zZm9ybV9mZWVkYmFja19idWZmZXIgPSBnZXRfaW50IGdsMmN0eCBcIlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJcIlxuICBsZXQgdHJhbnNmb3JtX2ZlZWRiYWNrX2J1ZmZlcl9iaW5kaW5nID0gZ2V0X2ludCBnbDJjdHggXCJUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX0JJTkRJTkdcIlxuICBsZXQgcmdiYTMydWkgPSBnZXRfaW50IGdsMmN0eCBcIlJHQkEzMlVJXCJcbiAgbGV0IHJnYjMydWkgPSBnZXRfaW50IGdsMmN0eCBcIlJHQjMyVUlcIlxuICBsZXQgcmdiYTE2dWkgPSBnZXRfaW50IGdsMmN0eCBcIlJHQkExNlVJXCJcbiAgbGV0IHJnYjE2dWkgPSBnZXRfaW50IGdsMmN0eCBcIlJHQjE2VUlcIlxuICBsZXQgcmdiYTh1aSA9IGdldF9pbnQgZ2wyY3R4IFwiUkdCQThVSVwiXG4gIGxldCByZ2I4dWkgPSBnZXRfaW50IGdsMmN0eCBcIlJHQjhVSVwiXG4gIGxldCByZ2JhMzJpID0gZ2V0X2ludCBnbDJjdHggXCJSR0JBMzJJXCJcbiAgbGV0IHJnYjMyaSA9IGdldF9pbnQgZ2wyY3R4IFwiUkdCMzJJXCJcbiAgbGV0IHJnYmExNmkgPSBnZXRfaW50IGdsMmN0eCBcIlJHQkExNklcIlxuICBsZXQgcmdiMTZpID0gZ2V0X2ludCBnbDJjdHggXCJSR0IxNklcIlxuICBsZXQgcmdiYThpID0gZ2V0X2ludCBnbDJjdHggXCJSR0JBOElcIlxuICBsZXQgcmdiOGkgPSBnZXRfaW50IGdsMmN0eCBcIlJHQjhJXCJcbiAgbGV0IHJlZF9pbnRlZ2VyID0gZ2V0X2ludCBnbDJjdHggXCJSRURfSU5URUdFUlwiXG4gIGxldCByZ2JfaW50ZWdlciA9IGdldF9pbnQgZ2wyY3R4IFwiUkdCX0lOVEVHRVJcIlxuICBsZXQgcmdiYV9pbnRlZ2VyID0gZ2V0X2ludCBnbDJjdHggXCJSR0JBX0lOVEVHRVJcIlxuICBsZXQgc2FtcGxlcl8yZF9hcnJheSA9IGdldF9pbnQgZ2wyY3R4IFwiU0FNUExFUl8yRF9BUlJBWVwiXG4gIGxldCBzYW1wbGVyXzJkX2FycmF5X3NoYWRvdyA9IGdldF9pbnQgZ2wyY3R4IFwiU0FNUExFUl8yRF9BUlJBWV9TSEFET1dcIlxuICBsZXQgc2FtcGxlcl9jdWJlX3NoYWRvdyA9IGdldF9pbnQgZ2wyY3R4IFwiU0FNUExFUl9DVUJFX1NIQURPV1wiXG4gIGxldCB1bnNpZ25lZF9pbnRfdmVjMiA9IGdldF9pbnQgZ2wyY3R4IFwiVU5TSUdORURfSU5UX1ZFQzJcIlxuICBsZXQgdW5zaWduZWRfaW50X3ZlYzMgPSBnZXRfaW50IGdsMmN0eCBcIlVOU0lHTkVEX0lOVF9WRUMzXCJcbiAgbGV0IHVuc2lnbmVkX2ludF92ZWM0ID0gZ2V0X2ludCBnbDJjdHggXCJVTlNJR05FRF9JTlRfVkVDNFwiXG4gIGxldCBpbnRfc2FtcGxlcl8yZCA9IGdldF9pbnQgZ2wyY3R4IFwiSU5UX1NBTVBMRVJfMkRcIlxuICBsZXQgaW50X3NhbXBsZXJfM2QgPSBnZXRfaW50IGdsMmN0eCBcIklOVF9TQU1QTEVSXzNEXCJcbiAgbGV0IGludF9zYW1wbGVyX2N1YmUgPSBnZXRfaW50IGdsMmN0eCBcIklOVF9TQU1QTEVSX0NVQkVcIlxuICBsZXQgaW50X3NhbXBsZXJfMmRfYXJyYXkgPSBnZXRfaW50IGdsMmN0eCBcIklOVF9TQU1QTEVSXzJEX0FSUkFZXCJcbiAgbGV0IHVuc2lnbmVkX2ludF9zYW1wbGVyXzJkID0gZ2V0X2ludCBnbDJjdHggXCJVTlNJR05FRF9JTlRfU0FNUExFUl8yRFwiXG4gIGxldCB1bnNpZ25lZF9pbnRfc2FtcGxlcl8zZCA9IGdldF9pbnQgZ2wyY3R4IFwiVU5TSUdORURfSU5UX1NBTVBMRVJfM0RcIlxuICBsZXQgdW5zaWduZWRfaW50X3NhbXBsZXJfY3ViZSA9IGdldF9pbnQgZ2wyY3R4IFwiVU5TSUdORURfSU5UX1NBTVBMRVJfQ1VCRVwiXG4gIGxldCB1bnNpZ25lZF9pbnRfc2FtcGxlcl8yZF9hcnJheSA9IGdldF9pbnQgZ2wyY3R4IFwiVU5TSUdORURfSU5UX1NBTVBMRVJfMkRfQVJSQVlcIlxuICBsZXQgZGVwdGhfY29tcG9uZW50MzJmID0gZ2V0X2ludCBnbDJjdHggXCJERVBUSF9DT01QT05FTlQzMkZcIlxuICBsZXQgZGVwdGgzMmZfc3RlbmNpbDggPSBnZXRfaW50IGdsMmN0eCBcIkRFUFRIMzJGX1NURU5DSUw4XCJcbiAgbGV0IGZsb2F0XzMyX3Vuc2lnbmVkX2ludF8yNF84X3JldiA9IGdldF9pbnQgZ2wyY3R4IFwiRkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWXCJcbiAgbGV0IGZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfY29sb3JfZW5jb2RpbmcgPSBnZXRfaW50IGdsMmN0eCBcIkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkdcIlxuICBsZXQgZnJhbWVidWZmZXJfYXR0YWNobWVudF9jb21wb25lbnRfdHlwZSA9IGdldF9pbnQgZ2wyY3R4IFwiRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT01QT05FTlRfVFlQRVwiXG4gIGxldCBmcmFtZWJ1ZmZlcl9hdHRhY2htZW50X3JlZF9zaXplID0gZ2V0X2ludCBnbDJjdHggXCJGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1JFRF9TSVpFXCJcbiAgbGV0IGZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfZ3JlZW5fc2l6ZSA9IGdldF9pbnQgZ2wyY3R4IFwiRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9HUkVFTl9TSVpFXCJcbiAgbGV0IGZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfYmx1ZV9zaXplID0gZ2V0X2ludCBnbDJjdHggXCJGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0JMVUVfU0laRVwiXG4gIGxldCBmcmFtZWJ1ZmZlcl9hdHRhY2htZW50X2FscGhhX3NpemUgPSBnZXRfaW50IGdsMmN0eCBcIkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQUxQSEFfU0laRVwiXG4gIGxldCBmcmFtZWJ1ZmZlcl9hdHRhY2htZW50X2RlcHRoX3NpemUgPSBnZXRfaW50IGdsMmN0eCBcIkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfREVQVEhfU0laRVwiXG4gIGxldCBmcmFtZWJ1ZmZlcl9hdHRhY2htZW50X3N0ZW5jaWxfc2l6ZSA9IGdldF9pbnQgZ2wyY3R4IFwiRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9TVEVOQ0lMX1NJWkVcIlxuICBsZXQgZnJhbWVidWZmZXJfZGVmYXVsdCA9IGdldF9pbnQgZ2wyY3R4IFwiRlJBTUVCVUZGRVJfREVGQVVMVFwiXG4gIGxldCB1bnNpZ25lZF9pbnRfMjRfOCA9IGdldF9pbnQgZ2wyY3R4IFwiVU5TSUdORURfSU5UXzI0XzhcIlxuICBsZXQgZGVwdGgyNF9zdGVuY2lsOCA9IGdldF9pbnQgZ2wyY3R4IFwiREVQVEgyNF9TVEVOQ0lMOFwiXG4gIGxldCB1bnNpZ25lZF9ub3JtYWxpemVkID0gZ2V0X2ludCBnbDJjdHggXCJVTlNJR05FRF9OT1JNQUxJWkVEXCJcbiAgbGV0IGRyYXdfZnJhbWVidWZmZXJfYmluZGluZyA9IGdldF9pbnQgZ2wyY3R4IFwiRFJBV19GUkFNRUJVRkZFUl9CSU5ESU5HXCJcbiAgbGV0IHJlYWRfZnJhbWVidWZmZXIgPSBnZXRfaW50IGdsMmN0eCBcIlJFQURfRlJBTUVCVUZGRVJcIlxuICBsZXQgZHJhd19mcmFtZWJ1ZmZlciA9IGdldF9pbnQgZ2wyY3R4IFwiRFJBV19GUkFNRUJVRkZFUlwiXG4gIGxldCByZWFkX2ZyYW1lYnVmZmVyX2JpbmRpbmcgPSBnZXRfaW50IGdsMmN0eCBcIlJFQURfRlJBTUVCVUZGRVJfQklORElOR1wiXG4gIGxldCByZW5kZXJidWZmZXJfc2FtcGxlcyA9IGdldF9pbnQgZ2wyY3R4IFwiUkVOREVSQlVGRkVSX1NBTVBMRVNcIlxuICBsZXQgZnJhbWVidWZmZXJfYXR0YWNobWVudF90ZXh0dXJlX2xheWVyID0gZ2V0X2ludCBnbDJjdHggXCJGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEFZRVJcIlxuICBsZXQgbWF4X2NvbG9yX2F0dGFjaG1lbnRzID0gZ2V0X2ludCBnbDJjdHggXCJNQVhfQ09MT1JfQVRUQUNITUVOVFNcIlxuICBsZXQgY29sb3JfYXR0YWNobWVudDEgPSBnZXRfaW50IGdsMmN0eCBcIkNPTE9SX0FUVEFDSE1FTlQxXCJcbiAgbGV0IGNvbG9yX2F0dGFjaG1lbnQyID0gZ2V0X2ludCBnbDJjdHggXCJDT0xPUl9BVFRBQ0hNRU5UMlwiXG4gIGxldCBjb2xvcl9hdHRhY2htZW50MyA9IGdldF9pbnQgZ2wyY3R4IFwiQ09MT1JfQVRUQUNITUVOVDNcIlxuICBsZXQgY29sb3JfYXR0YWNobWVudDQgPSBnZXRfaW50IGdsMmN0eCBcIkNPTE9SX0FUVEFDSE1FTlQ0XCJcbiAgbGV0IGNvbG9yX2F0dGFjaG1lbnQ1ID0gZ2V0X2ludCBnbDJjdHggXCJDT0xPUl9BVFRBQ0hNRU5UNVwiXG4gIGxldCBjb2xvcl9hdHRhY2htZW50NiA9IGdldF9pbnQgZ2wyY3R4IFwiQ09MT1JfQVRUQUNITUVOVDZcIlxuICBsZXQgY29sb3JfYXR0YWNobWVudDcgPSBnZXRfaW50IGdsMmN0eCBcIkNPTE9SX0FUVEFDSE1FTlQ3XCJcbiAgbGV0IGNvbG9yX2F0dGFjaG1lbnQ4ID0gZ2V0X2ludCBnbDJjdHggXCJDT0xPUl9BVFRBQ0hNRU5UOFwiXG4gIGxldCBjb2xvcl9hdHRhY2htZW50OSA9IGdldF9pbnQgZ2wyY3R4IFwiQ09MT1JfQVRUQUNITUVOVDlcIlxuICBsZXQgY29sb3JfYXR0YWNobWVudDEwID0gZ2V0X2ludCBnbDJjdHggXCJDT0xPUl9BVFRBQ0hNRU5UMTBcIlxuICBsZXQgY29sb3JfYXR0YWNobWVudDExID0gZ2V0X2ludCBnbDJjdHggXCJDT0xPUl9BVFRBQ0hNRU5UMTFcIlxuICBsZXQgY29sb3JfYXR0YWNobWVudDEyID0gZ2V0X2ludCBnbDJjdHggXCJDT0xPUl9BVFRBQ0hNRU5UMTJcIlxuICBsZXQgY29sb3JfYXR0YWNobWVudDEzID0gZ2V0X2ludCBnbDJjdHggXCJDT0xPUl9BVFRBQ0hNRU5UMTNcIlxuICBsZXQgY29sb3JfYXR0YWNobWVudDE0ID0gZ2V0X2ludCBnbDJjdHggXCJDT0xPUl9BVFRBQ0hNRU5UMTRcIlxuICBsZXQgY29sb3JfYXR0YWNobWVudDE1ID0gZ2V0X2ludCBnbDJjdHggXCJDT0xPUl9BVFRBQ0hNRU5UMTVcIlxuICBsZXQgZnJhbWVidWZmZXJfaW5jb21wbGV0ZV9tdWx0aXNhbXBsZSA9IGdldF9pbnQgZ2wyY3R4IFwiRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NVUxUSVNBTVBMRVwiXG4gIGxldCBtYXhfc2FtcGxlcyA9IGdldF9pbnQgZ2wyY3R4IFwiTUFYX1NBTVBMRVNcIlxuICBsZXQgaGFsZl9mbG9hdCA9IGdldF9pbnQgZ2wyY3R4IFwiSEFMRl9GTE9BVFwiXG4gIGxldCByZyA9IGdldF9pbnQgZ2wyY3R4IFwiUkdcIlxuICBsZXQgcmdfaW50ZWdlciA9IGdldF9pbnQgZ2wyY3R4IFwiUkdfSU5URUdFUlwiXG4gIGxldCByOCA9IGdldF9pbnQgZ2wyY3R4IFwiUjhcIlxuICBsZXQgcmc4ID0gZ2V0X2ludCBnbDJjdHggXCJSRzhcIlxuICBsZXQgcjE2ZiA9IGdldF9pbnQgZ2wyY3R4IFwiUjE2RlwiXG4gIGxldCByMzJmID0gZ2V0X2ludCBnbDJjdHggXCJSMzJGXCJcbiAgbGV0IHJnMTZmID0gZ2V0X2ludCBnbDJjdHggXCJSRzE2RlwiXG4gIGxldCByZzMyZiA9IGdldF9pbnQgZ2wyY3R4IFwiUkczMkZcIlxuICBsZXQgcjhpID0gZ2V0X2ludCBnbDJjdHggXCJSOElcIlxuICBsZXQgcjh1aSA9IGdldF9pbnQgZ2wyY3R4IFwiUjhVSVwiXG4gIGxldCByMTZpID0gZ2V0X2ludCBnbDJjdHggXCJSMTZJXCJcbiAgbGV0IHIxNnVpID0gZ2V0X2ludCBnbDJjdHggXCJSMTZVSVwiXG4gIGxldCByMzJpID0gZ2V0X2ludCBnbDJjdHggXCJSMzJJXCJcbiAgbGV0IHIzMnVpID0gZ2V0X2ludCBnbDJjdHggXCJSMzJVSVwiXG4gIGxldCByZzhpID0gZ2V0X2ludCBnbDJjdHggXCJSRzhJXCJcbiAgbGV0IHJnOHVpID0gZ2V0X2ludCBnbDJjdHggXCJSRzhVSVwiXG4gIGxldCByZzE2aSA9IGdldF9pbnQgZ2wyY3R4IFwiUkcxNklcIlxuICBsZXQgcmcxNnVpID0gZ2V0X2ludCBnbDJjdHggXCJSRzE2VUlcIlxuICBsZXQgcmczMmkgPSBnZXRfaW50IGdsMmN0eCBcIlJHMzJJXCJcbiAgbGV0IHJnMzJ1aSA9IGdldF9pbnQgZ2wyY3R4IFwiUkczMlVJXCJcbiAgbGV0IHZlcnRleF9hcnJheV9iaW5kaW5nID0gZ2V0X2ludCBnbDJjdHggXCJWRVJURVhfQVJSQVlfQklORElOR1wiXG4gIGxldCByOF9zbm9ybSA9IGdldF9pbnQgZ2wyY3R4IFwiUjhfU05PUk1cIlxuICBsZXQgcmc4X3Nub3JtID0gZ2V0X2ludCBnbDJjdHggXCJSRzhfU05PUk1cIlxuICBsZXQgcmdiOF9zbm9ybSA9IGdldF9pbnQgZ2wyY3R4IFwiUkdCOF9TTk9STVwiXG4gIGxldCByZ2JhOF9zbm9ybSA9IGdldF9pbnQgZ2wyY3R4IFwiUkdCQThfU05PUk1cIlxuICBsZXQgc2lnbmVkX25vcm1hbGl6ZWQgPSBnZXRfaW50IGdsMmN0eCBcIlNJR05FRF9OT1JNQUxJWkVEXCJcbiAgbGV0IGNvcHlfcmVhZF9idWZmZXIgPSBnZXRfaW50IGdsMmN0eCBcIkNPUFlfUkVBRF9CVUZGRVJcIlxuICBsZXQgY29weV93cml0ZV9idWZmZXIgPSBnZXRfaW50IGdsMmN0eCBcIkNPUFlfV1JJVEVfQlVGRkVSXCJcbiAgbGV0IGNvcHlfcmVhZF9idWZmZXJfYmluZGluZyA9IGdldF9pbnQgZ2wyY3R4IFwiQ09QWV9SRUFEX0JVRkZFUl9CSU5ESU5HXCJcbiAgbGV0IGNvcHlfd3JpdGVfYnVmZmVyX2JpbmRpbmcgPSBnZXRfaW50IGdsMmN0eCBcIkNPUFlfV1JJVEVfQlVGRkVSX0JJTkRJTkdcIlxuICBsZXQgdW5pZm9ybV9idWZmZXIgPSBnZXRfaW50IGdsMmN0eCBcIlVOSUZPUk1fQlVGRkVSXCJcbiAgbGV0IHVuaWZvcm1fYnVmZmVyX2JpbmRpbmcgPSBnZXRfaW50IGdsMmN0eCBcIlVOSUZPUk1fQlVGRkVSX0JJTkRJTkdcIlxuICBsZXQgdW5pZm9ybV9idWZmZXJfc3RhcnQgPSBnZXRfaW50IGdsMmN0eCBcIlVOSUZPUk1fQlVGRkVSX1NUQVJUXCJcbiAgbGV0IHVuaWZvcm1fYnVmZmVyX3NpemUgPSBnZXRfaW50IGdsMmN0eCBcIlVOSUZPUk1fQlVGRkVSX1NJWkVcIlxuICBsZXQgbWF4X3ZlcnRleF91bmlmb3JtX2Jsb2NrcyA9IGdldF9pbnQgZ2wyY3R4IFwiTUFYX1ZFUlRFWF9VTklGT1JNX0JMT0NLU1wiXG4gIGxldCBtYXhfZnJhZ21lbnRfdW5pZm9ybV9ibG9ja3MgPSBnZXRfaW50IGdsMmN0eCBcIk1BWF9GUkFHTUVOVF9VTklGT1JNX0JMT0NLU1wiXG4gIGxldCBtYXhfY29tYmluZWRfdW5pZm9ybV9ibG9ja3MgPSBnZXRfaW50IGdsMmN0eCBcIk1BWF9DT01CSU5FRF9VTklGT1JNX0JMT0NLU1wiXG4gIGxldCBtYXhfdW5pZm9ybV9idWZmZXJfYmluZGluZ3MgPSBnZXRfaW50IGdsMmN0eCBcIk1BWF9VTklGT1JNX0JVRkZFUl9CSU5ESU5HU1wiXG4gIGxldCBtYXhfdW5pZm9ybV9ibG9ja19zaXplID0gZ2V0X2ludCBnbDJjdHggXCJNQVhfVU5JRk9STV9CTE9DS19TSVpFXCJcbiAgbGV0IG1heF9jb21iaW5lZF92ZXJ0ZXhfdW5pZm9ybV9jb21wb25lbnRzID0gZ2V0X2ludCBnbDJjdHggXCJNQVhfQ09NQklORURfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UU1wiXG4gIGxldCBtYXhfY29tYmluZWRfZnJhZ21lbnRfdW5pZm9ybV9jb21wb25lbnRzID0gZ2V0X2ludCBnbDJjdHggXCJNQVhfQ09NQklORURfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTXCJcbiAgbGV0IHVuaWZvcm1fYnVmZmVyX29mZnNldF9hbGlnbm1lbnQgPSBnZXRfaW50IGdsMmN0eCBcIlVOSUZPUk1fQlVGRkVSX09GRlNFVF9BTElHTk1FTlRcIlxuICBsZXQgYWN0aXZlX3VuaWZvcm1fYmxvY2tzID0gZ2V0X2ludCBnbDJjdHggXCJBQ1RJVkVfVU5JRk9STV9CTE9DS1NcIlxuICBsZXQgdW5pZm9ybV90eXBlID0gZ2V0X2ludCBnbDJjdHggXCJVTklGT1JNX1RZUEVcIlxuICBsZXQgdW5pZm9ybV9zaXplID0gZ2V0X2ludCBnbDJjdHggXCJVTklGT1JNX1NJWkVcIlxuICBsZXQgdW5pZm9ybV9ibG9ja19pbmRleCA9IGdldF9pbnQgZ2wyY3R4IFwiVU5JRk9STV9CTE9DS19JTkRFWFwiXG4gIGxldCB1bmlmb3JtX29mZnNldCA9IGdldF9pbnQgZ2wyY3R4IFwiVU5JRk9STV9PRkZTRVRcIlxuICBsZXQgdW5pZm9ybV9hcnJheV9zdHJpZGUgPSBnZXRfaW50IGdsMmN0eCBcIlVOSUZPUk1fQVJSQVlfU1RSSURFXCJcbiAgbGV0IHVuaWZvcm1fbWF0cml4X3N0cmlkZSA9IGdldF9pbnQgZ2wyY3R4IFwiVU5JRk9STV9NQVRSSVhfU1RSSURFXCJcbiAgbGV0IHVuaWZvcm1faXNfcm93X21ham9yID0gZ2V0X2ludCBnbDJjdHggXCJVTklGT1JNX0lTX1JPV19NQUpPUlwiXG4gIGxldCB1bmlmb3JtX2Jsb2NrX2JpbmRpbmcnID0gZ2V0X2ludCBnbDJjdHggXCJVTklGT1JNX0JMT0NLX0JJTkRJTkdcIlxuICBsZXQgdW5pZm9ybV9ibG9ja19kYXRhX3NpemUgPSBnZXRfaW50IGdsMmN0eCBcIlVOSUZPUk1fQkxPQ0tfREFUQV9TSVpFXCJcbiAgbGV0IHVuaWZvcm1fYmxvY2tfYWN0aXZlX3VuaWZvcm1zID0gZ2V0X2ludCBnbDJjdHggXCJVTklGT1JNX0JMT0NLX0FDVElWRV9VTklGT1JNU1wiXG4gIGxldCB1bmlmb3JtX2Jsb2NrX2FjdGl2ZV91bmlmb3JtX2luZGljZXMgPSBnZXRfaW50IGdsMmN0eCBcIlVOSUZPUk1fQkxPQ0tfQUNUSVZFX1VOSUZPUk1fSU5ESUNFU1wiXG4gIGxldCB1bmlmb3JtX2Jsb2NrX3JlZmVyZW5jZWRfYnlfdmVydGV4X3NoYWRlciA9IGdldF9pbnQgZ2wyY3R4IFwiVU5JRk9STV9CTE9DS19SRUZFUkVOQ0VEX0JZX1ZFUlRFWF9TSEFERVJcIlxuICBsZXQgdW5pZm9ybV9ibG9ja19yZWZlcmVuY2VkX2J5X2ZyYWdtZW50X3NoYWRlciA9IGdldF9pbnQgZ2wyY3R4IFwiVU5JRk9STV9CTE9DS19SRUZFUkVOQ0VEX0JZX0ZSQUdNRU5UX1NIQURFUlwiXG4gIGxldCBpbnZhbGlkX2luZGV4ID0gZ2V0X2ludCBnbDJjdHggXCJJTlZBTElEX0lOREVYXCJcbiAgbGV0IG1heF92ZXJ0ZXhfb3V0cHV0X2NvbXBvbmVudHMgPSBnZXRfaW50IGdsMmN0eCBcIk1BWF9WRVJURVhfT1VUUFVUX0NPTVBPTkVOVFNcIlxuICBsZXQgbWF4X2ZyYWdtZW50X2lucHV0X2NvbXBvbmVudHMgPSBnZXRfaW50IGdsMmN0eCBcIk1BWF9GUkFHTUVOVF9JTlBVVF9DT01QT05FTlRTXCJcbiAgbGV0IG1heF9zZXJ2ZXJfd2FpdF90aW1lb3V0ID0gZ2V0X2ludCBnbDJjdHggXCJNQVhfU0VSVkVSX1dBSVRfVElNRU9VVFwiXG4gIGxldCBvYmplY3RfdHlwZSA9IGdldF9pbnQgZ2wyY3R4IFwiT0JKRUNUX1RZUEVcIlxuICBsZXQgc3luY19jb25kaXRpb24gPSBnZXRfaW50IGdsMmN0eCBcIlNZTkNfQ09ORElUSU9OXCJcbiAgbGV0IHN5bmNfc3RhdHVzID0gZ2V0X2ludCBnbDJjdHggXCJTWU5DX1NUQVRVU1wiXG4gIGxldCBzeW5jX2ZsYWdzID0gZ2V0X2ludCBnbDJjdHggXCJTWU5DX0ZMQUdTXCJcbiAgbGV0IHN5bmNfZmVuY2UgPSBnZXRfaW50IGdsMmN0eCBcIlNZTkNfRkVOQ0VcIlxuICBsZXQgc3luY19ncHVfY29tbWFuZHNfY29tcGxldGUgPSBnZXRfaW50IGdsMmN0eCBcIlNZTkNfR1BVX0NPTU1BTkRTX0NPTVBMRVRFXCJcbiAgbGV0IHVuc2lnbmFsZWQgPSBnZXRfaW50IGdsMmN0eCBcIlVOU0lHTkFMRURcIlxuICBsZXQgc2lnbmFsZWQgPSBnZXRfaW50IGdsMmN0eCBcIlNJR05BTEVEXCJcbiAgbGV0IGFscmVhZHlfc2lnbmFsZWQgPSBnZXRfaW50IGdsMmN0eCBcIkFMUkVBRFlfU0lHTkFMRURcIlxuICBsZXQgdGltZW91dF9leHBpcmVkID0gZ2V0X2ludCBnbDJjdHggXCJUSU1FT1VUX0VYUElSRURcIlxuICBsZXQgY29uZGl0aW9uX3NhdGlzZmllZCA9IGdldF9pbnQgZ2wyY3R4IFwiQ09ORElUSU9OX1NBVElTRklFRFwiXG4gIGxldCB3YWl0X2ZhaWxlZCA9IGdldF9pbnQgZ2wyY3R4IFwiV0FJVF9GQUlMRURcIlxuICBsZXQgc3luY19mbHVzaF9jb21tYW5kc19iaXQgPSBnZXRfaW50IGdsMmN0eCBcIlNZTkNfRkxVU0hfQ09NTUFORFNfQklUXCJcbiAgbGV0IHZlcnRleF9hdHRyaWJfYXJyYXlfZGl2aXNvciA9IGdldF9pbnQgZ2wyY3R4IFwiVkVSVEVYX0FUVFJJQl9BUlJBWV9ESVZJU09SXCJcbiAgbGV0IGFueV9zYW1wbGVzX3Bhc3NlZCA9IGdldF9pbnQgZ2wyY3R4IFwiQU5ZX1NBTVBMRVNfUEFTU0VEXCJcbiAgbGV0IGFueV9zYW1wbGVzX3Bhc3NlZF9jb25zZXJ2YXRpdmUgPSBnZXRfaW50IGdsMmN0eCBcIkFOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkVcIlxuICBsZXQgc2FtcGxlcl9iaW5kaW5nID0gZ2V0X2ludCBnbDJjdHggXCJTQU1QTEVSX0JJTkRJTkdcIlxuICBsZXQgcmdiMTBfYTJ1aSA9IGdldF9pbnQgZ2wyY3R4IFwiUkdCMTBfQTJVSVwiXG4gIGxldCBpbnRfMl8xMF8xMF8xMF9yZXYgPSBnZXRfaW50IGdsMmN0eCBcIklOVF8yXzEwXzEwXzEwX1JFVlwiXG4gIGxldCB0cmFuc2Zvcm1fZmVlZGJhY2sgPSBnZXRfaW50IGdsMmN0eCBcIlRSQU5TRk9STV9GRUVEQkFDS1wiXG4gIGxldCB0cmFuc2Zvcm1fZmVlZGJhY2tfcGF1c2VkID0gZ2V0X2ludCBnbDJjdHggXCJUUkFOU0ZPUk1fRkVFREJBQ0tfUEFVU0VEXCJcbiAgbGV0IHRyYW5zZm9ybV9mZWVkYmFja19hY3RpdmUgPSBnZXRfaW50IGdsMmN0eCBcIlRSQU5TRk9STV9GRUVEQkFDS19BQ1RJVkVcIlxuICBsZXQgdHJhbnNmb3JtX2ZlZWRiYWNrX2JpbmRpbmcgPSBnZXRfaW50IGdsMmN0eCBcIlRSQU5TRk9STV9GRUVEQkFDS19CSU5ESU5HXCJcbiAgbGV0IHRleHR1cmVfaW1tdXRhYmxlX2Zvcm1hdCA9IGdldF9pbnQgZ2wyY3R4IFwiVEVYVFVSRV9JTU1VVEFCTEVfRk9STUFUXCJcbiAgbGV0IG1heF9lbGVtZW50X2luZGV4ID0gZ2V0X2ludCBnbDJjdHggXCJNQVhfRUxFTUVOVF9JTkRFWFwiXG4gIGxldCB0ZXh0dXJlX2ltbXV0YWJsZV9sZXZlbHMgPSBnZXRfaW50IGdsMmN0eCBcIlRFWFRVUkVfSU1NVVRBQkxFX0xFVkVMU1wiXG4gIGxldCB0aW1lb3V0X2lnbm9yZWQgPSBnZXRfaW50IGdsMmN0eCBcIlRJTUVPVVRfSUdOT1JFRFwiXG4gIGxldCBtYXhfY2xpZW50X3dhaXRfdGltZW91dF93ZWJnbCA9IGdldF9pbnQgZ2wyY3R4IFwiTUFYX0NMSUVOVF9XQUlUX1RJTUVPVVRfV0VCR0xcIlxuZW5kXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfanNfbWV0aF9jYWxsIiwiY2FtbF9saXN0X29mX2pzX2FycmF5IiwiY2FtbF9saXN0X3RvX2pzX2FycmF5IiwiY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlIiwiY2FtbF93cmFwX2V4Y2VwdGlvbiIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJjYW1sX2NhbGwzIiwiYTIiLCJnbG9iYWxfZGF0YSIsIkp2IiwiSnN0ciIsIlN0ZGxpYl9PcHRpb24iLCJTdGRsaWJfTGlzdCIsIkZ1dCIsIkJyciIsImlzXzJkIiwibSIsImlzX2lkZW50aXR5IiwiaW52ZXJzZSIsIm11bHRpcGx5IiwibTExIiwibTEyIiwibTEzIiwibTE0IiwibTIxIiwibTIyIiwibTIzIiwibTI0IiwibTMxIiwibTMyIiwibTMzIiwibTM0IiwibTQxIiwibTQyIiwibTQzIiwibTQ0IiwiYSIsImIiLCJjIiwiZCIsImUiLCJkb21tYXRyaXhybyIsInRvX2Zsb2F0MzJfYXJyYXkiLCJvZl9mbG9hdDMyX2FycmF5IiwidG9fZmxvYXQ2NF9hcnJheSIsIm9mX2Zsb2F0NjRfYXJyYXkiLCJ2NCIsInYiLCJ4IiwieSIsInoiLCJ3IiwidHIiLCJ0b19qc29uIiwiY3N0X2hlaWdodCIsImNzdF93aWR0aCIsImNyZWF0ZSIsImF0Iiwib3B0IiwiY3MiLCJoIiwib2ZfZWwiLCJ0b19lbCIsInNldF93Iiwic2V0X2giLCJzZXRfc2l6ZV90b19sYXlvdXRfc2l6ZSIsImhpZHBpIiwiZHByIiwiY3ciLCJjaCIsImNzdF9xdWFsaXR5IiwiY3N0X3R5cGUiLCJpbWFnZV9lbmNvZGUiLCJxdWFsaXR5IiwicGFyYW0iLCJ0eXBlIiwibyIsImVuYyIsImVuY29kZSIsIm1ldGgiLCJhcmciLCJ0IiwicSIsImFyZ3MiLCJ0b19kYXRhX3VybCIsImV4biIsInRvX2Jsb2IiLCJtYXRjaCIsInNldCIsImZ1dCIsImNiIiwiYmxvYiIsImNhcHR1cmVfc3RyZWFtIiwiaHoiLCJwYXRoIiwib2Zfc3ZnIiwic3ZnIiwib2ZfcGF0aCIsInAiLCJhZGQiLCJjbG9zZSIsIm1vdmVfdG8iLCJsaW5lX3RvIiwicWN1cnZlX3RvIiwiY3giLCJjeSIsImNjdXJ2ZV90byIsImFyY190byIsInIiLCJhcmMiLCJzdGFydCIsInN0b3AiLCJhbnRpY2xvY2t3aXNlIiwicmVjdCIsImVsbGlwc2UiLCJyeCIsInJ5Iiwicm90IiwiaW1hZ2Vfc3JjX29mX2VsIiwiaW1hZ2Vfc3JjX29mX2p2IiwiY3N0X2FscGhhIiwiY3N0X2NvbG9yU3BhY2UiLCJjc3RfZGVzeW5jaHJvbml6ZWQiLCJjc3Rfd2lsbFJlYWRGcmVxdWVudGx5IiwiY3JlYXRlX2F0dHJzIiwiYWxwaGEiLCJjb2xvcl9zcGFjZSIsImRlc3luY2hyb25pemVkIiwid2lsbF9yZWFkX2ZyZXF1ZW50bHkiLCJhdHRyc19hbHBoYSIsImF0dHJzX2NvbG9yX3NwYWNlIiwiYXR0cnNfZGVzeW5jaHJvbml6ZWQiLCJhdHRyc193aWxsX3JlYWRfZnJlcXVlbnRseSIsImdldF9jb250ZXh0IiwiY252IiwiYXR0cnMiLCJjc3RfY2FudmFzIiwiY2FudmFzIiwic2F2ZSIsInJlc3RvcmUiLCJjc3RfaW1hZ2VTbW9vdGhpbmdFbmFibGVkIiwiaW1hZ2Vfc21vb3RoaW5nX2VuYWJsZWQiLCJzZXRfaW1hZ2Vfc21vb3RoaW5nX2VuYWJsZWQiLCJjc3RfaW1hZ2VTbW9vdGhpbmdRdWFsaXR5IiwiaW1hZ2Vfc21vb3RoaW5nX3F1YWxpdHkiLCJzZXRfaW1hZ2Vfc21vb3RoaW5nX3F1YWxpdHkiLCJjc3RfZ2xvYmFsQWxwaGEiLCJnbG9iYWxfYWxwaGEiLCJzZXRfZ2xvYmFsX2FscGhhIiwiY3N0X2dsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiIsImdsb2JhbF9jb21wb3NpdGVfb3AiLCJzZXRfZ2xvYmFsX2NvbXBvc2l0ZV9vcCIsImNzdF9maWx0ZXIiLCJmaWx0ZXIiLCJzZXRfZmlsdGVyIiwiZ2V0X3RyYW5zZm9ybSIsInNldF90cmFuc2Zvcm0iLCJjdHgiLCJyZXNldF90cmFuc2Zvcm0iLCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUiLCJyb3RhdGUiLCJzY2FsZSIsInN4Iiwic3kiLCJzZXRfc3Ryb2tlX3N0eWxlIiwicyIsInNldF9maWxsX3N0eWxlIiwiY29sb3IiLCJncmFkaWVudF9zdHlsZSIsIm1ha2Vfc3RvcHMiLCJnIiwic3RvcHMiLCJvZmYiLCJsaW5lYXJfZ3JhZGllbnQiLCJ4MCIsInkwIiwieDEiLCJ5MSIsInJhZGlhbF9ncmFkaWVudCIsInIwIiwicjEiLCJwYXR0ZXJuIiwiaW1nIiwicGF0dGVybl9zdHlsZSIsImNzdF9saW5lV2lkdGgiLCJsaW5lX3dpZHRoIiwic2V0X2xpbmVfd2lkdGgiLCJjc3RfbGluZUNhcCIsImxpbmVfY2FwIiwic2V0X2xpbmVfY2FwIiwiY2FwIiwiY3N0X2xpbmVKb2luIiwibGluZV9qb2luIiwic2V0X2xpbmVfam9pbiIsImpvaW4iLCJjc3RfbWl0ZXJMaW1pdCIsIm1pdGVyX2xpbWl0Iiwic2V0X21pdGVyX2xpbWl0IiwibCIsImxpbmVfZGFzaCIsInNldF9saW5lX2Rhc2giLCJkcyIsImNzdF9saW5lRGFzaE9mZnNldCIsImxpbmVfZGFzaF9vZmZzZXQiLCJzZXRfbGluZV9kYXNoX29mZnNldCIsImNzdF9zaGFkb3dCbHVyIiwic2hhZG93X2JsdXIiLCJzZXRfc2hhZG93X2JsdXIiLCJjc3Rfc2hhZG93T2Zmc2V0WCIsInNoYWRvd19vZmZzZXRfeCIsInNldF9zaGFkb3dfb2Zmc2V0X3giLCJjc3Rfc2hhZG93T2Zmc2V0WSIsInNoYWRvd19vZmZzZXRfeSIsInNldF9zaGFkb3dfb2Zmc2V0X3kiLCJjc3Rfc2hhZG93Q29sb3IiLCJzaGFkb3dfY29sb3IiLCJzZXRfc2hhZG93X2NvbG9yIiwiY29sIiwiY3N0X2ZvbnQiLCJmb250Iiwic2V0X2ZvbnQiLCJjc3RfdGV4dEFsaWduIiwidGV4dF9hbGlnbiIsInNldF90ZXh0X2FsaWduIiwiY3N0X3RleHRCYXNlbGluZSIsInRleHRfYmFzZWxpbmUiLCJzZXRfdGV4dF9iYXNlbGluZSIsImNzdF9kaXJlY3Rpb24iLCJ0ZXh0X2RpcmVjdGlvbiIsInNldF90ZXh0X2RpcmVjdGlvbiIsImNsZWFyX3JlY3QiLCJmaWxsX3JlY3QiLCJzdHJva2VfcmVjdCIsIm5vbnplcm8iLCJmaWxsIiwiZmlsbF9ydWxlIiwic3Ryb2tlIiwiY2xpcCIsImRyYXdfZm9jdXNfaWZfbmVlZGVkIiwic2Nyb2xsX3BhdGhfaW50b192aWV3IiwiaXNfcG9pbnRfaW5fZmlsbCIsImlzX3BvaW50X2luX3N0cm9rZSIsImNhbGxfdGV4dCIsIm1heF93aWR0aCIsInR4dCIsImZpbGxfdGV4dCIsInN0cm9rZV90ZXh0Iiwid2lkdGgiLCJhY3R1YWxfYm91bmRpbmdfYm94X2xlZnQiLCJhY3R1YWxfYm91bmRpbmdfYm94X3JpZ2h0IiwiZm9udF9ib3VuZGluZ19ib3hfYXNjZW50IiwiZm9udF9ib3VuZGluZ19ib3hfZGVzY2VudCIsImFjdHVhbF9ib3VuZGluZ19ib3hfYXNjZW50IiwiYWN0dWFsX2JvdW5kaW5nX2JveF9kZXNjZW50IiwiZW1faGVpZ2h0X2FzY2VudCIsImVtX2hlaWdodF9kZXNjZW50IiwiaGFuZ2luZ19iYXNlbGluZSIsImFscGhhYmV0aWNfYmFzZWxpbmUiLCJpZGVvZ3JhcGhpY19iYXNlbGluZSIsIm1lYXN1cmVfdGV4dCIsImRyYXdfaW1hZ2UiLCJpIiwiZHJhd19pbWFnZV9pbl9yZWN0IiwiZHJhd19zdWJfaW1hZ2VfaW5fcmVjdCIsInN3Iiwic2giLCJzZXR0aW5ncyIsImltYWdlX2RhdGEiLCJkYXRhIiwiY3JlYXRlX2ltYWdlX2RhdGEiLCJnZXRfaW1hZ2VfZGF0YSIsInB1dF9pbWFnZV9kYXRhIiwicHV0X3N1Yl9pbWFnZV9kYXRhIiwiY3N0X2FudGlhbGlhcyIsImNzdF9kZXB0aCIsImNzdF9wb3dlclByZWZlcmVuY2UiLCJjc3RfcHJlbXVsdGlwbGllZEFwaGEiLCJjc3RfcHJlc2VydmVEcmF3aW5nQnVmZmVyIiwiY3N0X3N0ZW5jaWwiLCJkZXB0aCIsInN0ZW5jaWwiLCJhbnRpYWxpYXMiLCJwcmVtdWx0aXBsaWVkX2FscGhhIiwicHJlc2VydmVfZHJhd2luZ19idWZmZXIiLCJwb3dlcl9wcmVmZXJlbmNlIiwiZmFpbF9pZl9tYWpvcl9wZXJmb3JtYW5jZV9jYXZlIiwidjEiLCJ3ZWJnbCIsImRyYXdpbmdfYnVmZmVyX3dpZHRoIiwiZHJhd2luZ19idWZmZXJfaGVpZ2h0IiwiaXNfY29udGV4dF9sb3N0IiwiZ2V0X3N1cHBvcnRlZF9leHRlbnNpb25zIiwiZ2V0X2V4dGVuc2lvbiIsImV4dCIsInNpemUiLCJuYW1lIiwicmFuZ2VfbWluIiwicmFuZ2VfbWF4IiwicHJlY2lzaW9uIiwib2ZfaW1hZ2VfZGF0YSIsIm9mX2ltZ19lbCIsIm9mX2NhbnZhc19lbCIsIm9mX3ZpZGVvX2VsIiwib2Zfb2Zmc2NyZWVuX2NhbnZhcyIsImFjdGl2ZV90ZXh0dXJlIiwidGV4dHVyZSIsImF0dGFjaF9zaGFkZXIiLCJwcm9ncmFtIiwic2hhZGVyIiwiYmVnaW5fcXVlcnkiLCJ0YXJnZXQiLCJxdWVyeSIsImJlZ2luX3RyYW5zZm9ybV9mZWVkYmFjayIsInByaW1pdGl2ZU1vZGUiLCJiaW5kX2F0dHJpYl9sb2NhdGlvbiIsImluZGV4IiwiYmluZF9idWZmZXIiLCJidWZmZXIiLCJiaW5kX2J1ZmZlcl9iYXNlIiwiYmluZF9idWZmZXJfcmFuZ2UiLCJvZmZzZXQiLCJiaW5kX2ZyYW1lYnVmZmVyIiwiZnJhbWVidWZmZXIiLCJiaW5kX3JlbmRlcmJ1ZmZlciIsInJlbmRlcmJ1ZmZlciIsImJpbmRfc2FtcGxlciIsInVuaXQiLCJzYW1wbGVyIiwiYmluZF90ZXh0dXJlIiwiYmluZF90cmFuc2Zvcm1fZmVlZGJhY2siLCJ0ZiIsImJpbmRfdmVydGV4X2FycmF5IiwiYXJyYXkiLCJibGVuZF9jb2xvciIsInJlZCIsImdyZWVuIiwiYmx1ZSIsImJsZW5kX2VxdWF0aW9uIiwibW9kZSIsImJsZW5kX2VxdWF0aW9uX3NlcGFyYXRlIiwibW9kZVJHQiIsIm1vZGVBbHBoYSIsImJsZW5kX2Z1bmMiLCJzZmFjdG9yIiwiZGZhY3RvciIsImJsZW5kX2Z1bmNfc2VwYXJhdGUiLCJzcmNSR0IiLCJkc3RSR0IiLCJzcmNBbHBoYSIsImRzdEFscGhhIiwiYmxpdF9mcmFtZWJ1ZmZlciIsInNyY1gwIiwic3JjWTAiLCJzcmNYMSIsInNyY1kxIiwiZHN0WDAiLCJkc3RZMCIsImRzdFgxIiwiZHN0WTEiLCJtYXNrIiwiYnVmZmVyX2RhdGEiLCJzcmNEYXRhIiwidXNhZ2UiLCJidWZmZXJfZGF0YV9zaXplIiwiYnVmZmVyX3N1Yl9kYXRhIiwiZHN0Qnl0ZU9mZnNldCIsImNoZWNrX2ZyYW1lYnVmZmVyX3N0YXR1cyIsImNsZWFyIiwiY2xlYXJfYnVmZmVyZmkiLCJkcmF3YnVmZmVyIiwiY2xlYXJfYnVmZmVyZnYiLCJ2YWx1ZXMiLCJjbGVhcl9idWZmZXJpdiIsImNsZWFyX2J1ZmZlcnVpdiIsImNsZWFyX2NvbG9yIiwiY2xlYXJfZGVwdGgiLCJjbGVhcl9zdGVuY2lsIiwiY2xpZW50X3dhaXRfc3luYyIsInN5bmMiLCJmbGFncyIsInRpbWVvdXQiLCJjb2xvcl9tYXNrIiwiY29tcGlsZV9zaGFkZXIiLCJjb21wcmVzc2VkX3RleF9pbWFnZTJkIiwibGV2ZWwiLCJpbnRlcm5hbGZvcm1hdCIsImhlaWdodCIsImJvcmRlciIsImNvbXByZXNzZWRfdGV4X2ltYWdlMmRfc2l6ZSIsImltYWdlU2l6ZSIsImNvbXByZXNzZWRfdGV4X2ltYWdlM2QiLCJjb21wcmVzc2VkX3RleF9pbWFnZTNkX3NpemUiLCJjb21wcmVzc2VkX3RleF9zdWJfaW1hZ2UyZCIsInhvZmZzZXQiLCJ5b2Zmc2V0IiwiZm9ybWF0IiwiY29tcHJlc3NlZF90ZXhfc3ViX2ltYWdlMmRfc2l6IiwiY29tcHJlc3NlZF90ZXhfc3ViX2ltYWdlM2QiLCJ6b2Zmc2V0IiwiY29tcHJlc3NlZF90ZXhfc3ViX2ltYWdlM2Rfc2l6IiwiY29weV9idWZmZXJfc3ViX2RhdGEiLCJyZWFkVGFyZ2V0Iiwid3JpdGVUYXJnZXQiLCJyZWFkT2Zmc2V0Iiwid3JpdGVPZmZzZXQiLCJjb3B5X3RleF9pbWFnZTJkIiwiY29weV90ZXhfc3ViX2ltYWdlMmQiLCJjb3B5X3RleF9zdWJfaW1hZ2UzZCIsImNyZWF0ZV9idWZmZXIiLCJjcmVhdGVfZnJhbWVidWZmZXIiLCJjcmVhdGVfcHJvZ3JhbSIsImNyZWF0ZV9xdWVyeSIsImNyZWF0ZV9yZW5kZXJidWZmZXIiLCJjcmVhdGVfc2FtcGxlciIsImNyZWF0ZV9zaGFkZXIiLCJjcmVhdGVfdGV4dHVyZSIsImNyZWF0ZV90cmFuc2Zvcm1fZmVlZGJhY2siLCJjcmVhdGVfdmVydGV4X2FycmF5IiwiY3VsbF9mYWNlIiwiZGVsZXRlX2J1ZmZlciIsImRlbGV0ZV9mcmFtZWJ1ZmZlciIsImRlbGV0ZV9wcm9ncmFtIiwiZGVsZXRlX3F1ZXJ5IiwiZGVsZXRlX3JlbmRlcmJ1ZmZlciIsImRlbGV0ZV9zYW1wbGVyIiwiZGVsZXRlX3NoYWRlciIsImRlbGV0ZV9zeW5jIiwiZGVsZXRlX3RleHR1cmUiLCJkZWxldGVfdHJhbnNmb3JtX2ZlZWRiYWNrIiwiZGVsZXRlX3ZlcnRleF9hcnJheSIsInZlcnRleEFycmF5IiwiZGVwdGhfZnVuYyIsImZ1bmMiLCJkZXB0aF9tYXNrIiwiZmxhZyIsImRldGFjaF9zaGFkZXIiLCJkaXNhYmxlIiwiZGlzYWJsZV92ZXJ0ZXhfYXR0cmliX2FycmF5IiwiZHJhd19hcnJheXMiLCJmaXJzdCIsImNvdW50IiwiZHJhd19hcnJheXNfaW5zdGFuY2VkIiwiaW5zdGFuY2VDb3VudCIsImRyYXdfYnVmZmVycyIsImJ1ZmZlcnMiLCJkcmF3X2VsZW1lbnRzIiwiZHJhd19lbGVtZW50c19pbnN0YW5jZWQiLCJkcmF3X3JhbmdlX2VsZW1lbnRzIiwiZW5kIiwiZW5hYmxlIiwiZW5hYmxlX3ZlcnRleF9hdHRyaWJfYXJyYXkiLCJlbmRfcXVlcnkiLCJlbmRfdHJhbnNmb3JtX2ZlZWRiYWNrIiwiZmVuY2Vfc3luYyIsImNvbmRpdGlvbiIsImZpbmlzaCIsImZsdXNoIiwiZnJhbWVidWZmZXJfcmVuZGVyYnVmZmVyIiwiYXR0YWNobWVudCIsInJlbmRlcmJ1ZmZlcnRhcmdldCIsImZyYW1lYnVmZmVyX3RleHR1cmUyZCIsInRleHRhcmdldCIsImZyYW1lYnVmZmVyX3RleHR1cmVfbGF5ZXIiLCJsYXllciIsImZyb250X2ZhY2UiLCJnZW5lcmF0ZV9taXBtYXAiLCJnZXRfYWN0aXZlX2F0dHJpYiIsImdldF9hY3RpdmVfdW5pZm9ybSIsImdldF9hY3RpdmVfdW5pZm9ybV9ibG9ja19uYW1lIiwidW5pZm9ybUJsb2NrSW5kZXgiLCJnZXRfYWN0aXZlX3VuaWZvcm1fYmxvY2tfcGFyYW0iLCJwbmFtZSIsImdldF9hY3RpdmVfdW5pZm9ybXMiLCJ1bmlmb3JtSW5kaWNlcyIsImdldF9hdHRhY2hlZF9zaGFkZXJzIiwiZ2V0X2F0dHJpYl9sb2NhdGlvbiIsImdldF9idWZmZXJfcGFyYW1ldGVyIiwiZ2V0X2J1ZmZlcl9zdWJfZGF0YSIsInNyY0J5dGVPZmZzZXQiLCJkc3RCdWZmZXIiLCJnZXRfZXJyb3IiLCJnZXRfZnJhZ19kYXRhX2xvY2F0aW9uIiwiZ2V0X2ZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfcGFyIiwiZ2V0X2luZGV4ZWRfcGFyYW1ldGVyIiwiZ2V0X2ludGVybmFsZm9ybWF0X3BhcmFtZXRlciIsImdldF9wYXJhbWV0ZXIiLCJnZXRfcHJvZ3JhbV9pbmZvX2xvZyIsImdldF9wcm9ncmFtX3BhcmFtZXRlciIsImdldF9xdWVyeSIsImdldF9xdWVyeV9wYXJhbWV0ZXIiLCJnZXRfcmVuZGVyYnVmZmVyX3BhcmFtZXRlciIsImdldF9zYW1wbGVyX3BhcmFtZXRlciIsImdldF9zaGFkZXJfaW5mb19sb2ciLCJnZXRfc2hhZGVyX3BhcmFtZXRlciIsImdldF9zaGFkZXJfcHJlY2lzaW9uX2Zvcm1hdCIsInNoYWRlcnR5cGUiLCJwcmVjaXNpb250eXBlIiwiZ2V0X3NoYWRlcl9zb3VyY2UiLCJnZXRfc3luY19wYXJhbWV0ZXIiLCJnZXRfdGV4X3BhcmFtZXRlciIsImdldF90cmFuc2Zvcm1fZmVlZGJhY2tfdmFyeWluZyIsImdldF91bmlmb3JtIiwibG9jYXRpb24iLCJnZXRfdW5pZm9ybV9ibG9ja19pbmRleCIsInVuaWZvcm1CbG9ja05hbWUiLCJnZXRfdW5pZm9ybV9pbmRpY2VzIiwidW5pZm9ybU5hbWVzIiwiZ2V0X3VuaWZvcm1fbG9jYXRpb24iLCJnZXRfdmVydGV4X2F0dHJpYiIsImdldF92ZXJ0ZXhfYXR0cmliX29mZnNldCIsImhpbnQiLCJpbnZhbGlkYXRlX2ZyYW1lYnVmZmVyIiwiYXR0YWNobWVudHMiLCJpbnZhbGlkYXRlX3N1Yl9mcmFtZWJ1ZmZlciIsImlzX2J1ZmZlciIsImlzX2VuYWJsZWQiLCJpc19mcmFtZWJ1ZmZlciIsImlzX3Byb2dyYW0iLCJpc19xdWVyeSIsImlzX3JlbmRlcmJ1ZmZlciIsImlzX3NhbXBsZXIiLCJpc19zaGFkZXIiLCJpc190ZXh0dXJlIiwiaXNfdHJhbnNmb3JtX2ZlZWRiYWNrIiwiaXNfdmVydGV4X2FycmF5IiwibGlua19wcm9ncmFtIiwicGF1c2VfdHJhbnNmb3JtX2ZlZWRiYWNrIiwicGl4ZWxfc3RvcmVpIiwicG9seWdvbl9vZmZzZXQiLCJmYWN0b3IiLCJ1bml0cyIsInJlYWRfYnVmZmVyIiwic3JjIiwicmVhZF9waXhlbHNfdG9fcGl4ZWxfcGFjayIsInJlYWRfcGl4ZWxzIiwiZHN0RGF0YSIsInJlbmRlcmJ1ZmZlcl9zdG9yYWdlIiwicmVuZGVyYnVmZmVyX3N0b3JhZ2VfbXVsdGlzYW1wIiwic2FtcGxlcyIsInJlc3VtZV90cmFuc2Zvcm1fZmVlZGJhY2siLCJzYW1wbGVfY292ZXJhZ2UiLCJ2YWx1ZSIsImludmVydCIsInNhbXBsZXJfcGFyYW1ldGVyZiIsInNhbXBsZXJfcGFyYW1ldGVyaSIsInNjaXNzb3IiLCJzaGFkZXJfc291cmNlIiwic291cmNlIiwic3RlbmNpbF9mdW5jIiwicmVmIiwic3RlbmNpbF9mdW5jX3NlcGFyYXRlIiwiZmFjZSIsInN0ZW5jaWxfbWFzayIsInN0ZW5jaWxfbWFza19zZXBhcmF0ZSIsInN0ZW5jaWxfb3AiLCJmYWlsIiwiemZhaWwiLCJ6cGFzcyIsInN0ZW5jaWxfb3Bfc2VwYXJhdGUiLCJ0ZXhfaW1hZ2UyZCIsInNyY09mZnNldCIsInRleF9pbWFnZTJkX29mX3NvdXJjZSIsInRleF9pbWFnZTJkX29mX3BpeGVsX3VucGFjayIsInBib09mZnNldCIsInRleF9pbWFnZTNkIiwidGV4X2ltYWdlM2Rfb2Zfc291cmNlIiwidGV4X2ltYWdlM2Rfb2ZfcGl4ZWxfdW5wYWNrIiwidGV4X3BhcmFtZXRlcmYiLCJ0ZXhfcGFyYW1ldGVyaSIsInRleF9zdG9yYWdlMmQiLCJsZXZlbHMiLCJ0ZXhfc3RvcmFnZTNkIiwidGV4X3N1Yl9pbWFnZTJkIiwidGV4X3N1Yl9pbWFnZTJkX29mX3NvdXJjZSIsInRleF9zdWJfaW1hZ2UyZF9vZl9waXhlbF91bnBhYyIsInRleF9zdWJfaW1hZ2UzZCIsInRleF9zdWJfaW1hZ2UzZF9vZl9zb3VyY2UiLCJ0ZXhfc3ViX2ltYWdlM2Rfb2ZfcGl4ZWxfdW5wYWMiLCJ0cmFuc2Zvcm1fZmVlZGJhY2tfdmFyeWluZ3MiLCJ2YXJ5aW5ncyIsImJ1ZmZlck1vZGUiLCJ1bmlmb3JtMWYiLCJ1bmlmb3JtMWZ2IiwidW5pZm9ybTFpIiwidW5pZm9ybTFpdiIsInVuaWZvcm0xdWkiLCJ2MCIsInVuaWZvcm0xdWl2IiwidW5pZm9ybTJmIiwidW5pZm9ybTJmdiIsInVuaWZvcm0yaSIsInVuaWZvcm0yaXYiLCJ1bmlmb3JtMnVpIiwidW5pZm9ybTJ1aXYiLCJ1bmlmb3JtM2YiLCJ1bmlmb3JtM2Z2IiwidW5pZm9ybTNpIiwidW5pZm9ybTNpdiIsInVuaWZvcm0zdWkiLCJ2MiIsInVuaWZvcm0zdWl2IiwidW5pZm9ybTRmIiwidW5pZm9ybTRmdiIsInVuaWZvcm00aSIsInVuaWZvcm00aXYiLCJ1bmlmb3JtNHVpIiwidjMiLCJ1bmlmb3JtNHVpdiIsInVuaWZvcm1fYmxvY2tfYmluZGluZyIsInVuaWZvcm1CbG9ja0JpbmRpbmciLCJ1bmlmb3JtX21hdHJpeDJmdiIsInRyYW5zcG9zZSIsInVuaWZvcm1fbWF0cml4MngzZnYiLCJ1bmlmb3JtX21hdHJpeDJ4NGZ2IiwidW5pZm9ybV9tYXRyaXgzZnYiLCJ1bmlmb3JtX21hdHJpeDN4MmZ2IiwidW5pZm9ybV9tYXRyaXgzeDRmdiIsInVuaWZvcm1fbWF0cml4NGZ2IiwidW5pZm9ybV9tYXRyaXg0eDJmdiIsInVuaWZvcm1fbWF0cml4NHgzZnYiLCJ1c2VfcHJvZ3JhbSIsInZhbGlkYXRlX3Byb2dyYW0iLCJ2ZXJ0ZXhfYXR0cmliMWYiLCJ2ZXJ0ZXhfYXR0cmliMWZ2IiwidmVydGV4X2F0dHJpYjJmIiwidmVydGV4X2F0dHJpYjJmdiIsInZlcnRleF9hdHRyaWIzZiIsInZlcnRleF9hdHRyaWIzZnYiLCJ2ZXJ0ZXhfYXR0cmliNGYiLCJ2ZXJ0ZXhfYXR0cmliNGZ2IiwidmVydGV4X2F0dHJpYl9kaXZpc29yIiwiZGl2aXNvciIsInZlcnRleF9hdHRyaWJfaTRpIiwidmVydGV4X2F0dHJpYl9pNGl2IiwidmVydGV4X2F0dHJpYl9pNHVpIiwidmVydGV4X2F0dHJpYl9pNHVpdiIsInZlcnRleF9hdHRyaWJfaXBvaW50ZXIiLCJzdHJpZGUiLCJ2ZXJ0ZXhfYXR0cmliX3BvaW50ZXIiLCJub3JtYWxpemVkIiwidmlld3BvcnQiLCJ3YWl0X3N5bmMiLCJnZXRfaW50IiwiZ2wxY3R4IiwiZGVwdGhfYnVmZmVyX2JpdCIsInN0ZW5jaWxfYnVmZmVyX2JpdCIsImNvbG9yX2J1ZmZlcl9iaXQiLCJwb2ludHMiLCJsaW5lcyIsImxpbmVfbG9vcCIsImxpbmVfc3RyaXAiLCJ0cmlhbmdsZXMiLCJ0cmlhbmdsZV9zdHJpcCIsInRyaWFuZ2xlX2ZhbiIsInplcm8iLCJvbmUiLCJzcmNfY29sb3IiLCJvbmVfbWludXNfc3JjX2NvbG9yIiwic3JjX2FscGhhIiwib25lX21pbnVzX3NyY19hbHBoYSIsImRzdF9hbHBoYSIsIm9uZV9taW51c19kc3RfYWxwaGEiLCJkc3RfY29sb3IiLCJvbmVfbWludXNfZHN0X2NvbG9yIiwic3JjX2FscGhhX3NhdHVyYXRlIiwiZnVuY19hZGQiLCJibGVuZF9lcXVhdGlvbl9yZ2IiLCJibGVuZF9lcXVhdGlvbl9hbHBoYSIsImZ1bmNfc3VidHJhY3QiLCJmdW5jX3JldmVyc2Vfc3VidHJhY3QiLCJibGVuZF9kc3RfcmdiIiwiYmxlbmRfc3JjX3JnYiIsImJsZW5kX2RzdF9hbHBoYSIsImJsZW5kX3NyY19hbHBoYSIsImNvbnN0YW50X2NvbG9yIiwib25lX21pbnVzX2NvbnN0YW50X2NvbG9yIiwiY29uc3RhbnRfYWxwaGEiLCJvbmVfbWludXNfY29uc3RhbnRfYWxwaGEiLCJhcnJheV9idWZmZXIiLCJlbGVtZW50X2FycmF5X2J1ZmZlciIsImFycmF5X2J1ZmZlcl9iaW5kaW5nIiwiZWxlbWVudF9hcnJheV9idWZmZXJfYmluZGluZyIsInN0cmVhbV9kcmF3Iiwic3RhdGljX2RyYXciLCJkeW5hbWljX2RyYXciLCJidWZmZXJfc2l6ZSIsImJ1ZmZlcl91c2FnZSIsImN1cnJlbnRfdmVydGV4X2F0dHJpYiIsImZyb250IiwiYmFjayIsImZyb250X2FuZF9iYWNrIiwiYmxlbmQiLCJkaXRoZXIiLCJzdGVuY2lsX3Rlc3QiLCJkZXB0aF90ZXN0Iiwic2Npc3Nvcl90ZXN0IiwicG9seWdvbl9vZmZzZXRfZmlsbCIsInNhbXBsZV9hbHBoYV90b19jb3ZlcmFnZSIsIm5vX2Vycm9yIiwiaW52YWxpZF9lbnVtIiwiaW52YWxpZF92YWx1ZSIsImludmFsaWRfb3BlcmF0aW9uIiwib3V0X29mX21lbW9yeSIsImNjdyIsImFsaWFzZWRfcG9pbnRfc2l6ZV9yYW5nZSIsImFsaWFzZWRfbGluZV93aWR0aF9yYW5nZSIsImN1bGxfZmFjZV9tb2RlIiwiZGVwdGhfcmFuZ2UiLCJkZXB0aF93cml0ZW1hc2siLCJkZXB0aF9jbGVhcl92YWx1ZSIsInN0ZW5jaWxfY2xlYXJfdmFsdWUiLCJzdGVuY2lsX2ZhaWwiLCJzdGVuY2lsX3Bhc3NfZGVwdGhfZmFpbCIsInN0ZW5jaWxfcGFzc19kZXB0aF9wYXNzIiwic3RlbmNpbF9yZWYiLCJzdGVuY2lsX3ZhbHVlX21hc2siLCJzdGVuY2lsX3dyaXRlbWFzayIsInN0ZW5jaWxfYmFja19mdW5jIiwic3RlbmNpbF9iYWNrX2ZhaWwiLCJzdGVuY2lsX2JhY2tfcGFzc19kZXB0aF9mYWlsIiwic3RlbmNpbF9iYWNrX3Bhc3NfZGVwdGhfcGFzcyIsInN0ZW5jaWxfYmFja19yZWYiLCJzdGVuY2lsX2JhY2tfdmFsdWVfbWFzayIsInN0ZW5jaWxfYmFja193cml0ZW1hc2siLCJzY2lzc29yX2JveCIsImNvbG9yX2NsZWFyX3ZhbHVlIiwiY29sb3Jfd3JpdGVtYXNrIiwidW5wYWNrX2FsaWdubWVudCIsInBhY2tfYWxpZ25tZW50IiwibWF4X3RleHR1cmVfc2l6ZSIsIm1heF92aWV3cG9ydF9kaW1zIiwic3VicGl4ZWxfYml0cyIsInJlZF9iaXRzIiwiZ3JlZW5fYml0cyIsImJsdWVfYml0cyIsImFscGhhX2JpdHMiLCJkZXB0aF9iaXRzIiwic3RlbmNpbF9iaXRzIiwicG9seWdvbl9vZmZzZXRfdW5pdHMiLCJwb2x5Z29uX29mZnNldF9mYWN0b3IiLCJ0ZXh0dXJlX2JpbmRpbmdfMmQiLCJzYW1wbGVfYnVmZmVycyIsInNhbXBsZV9jb3ZlcmFnZV92YWx1ZSIsInNhbXBsZV9jb3ZlcmFnZV9pbnZlcnQiLCJjb21wcmVzc2VkX3RleHR1cmVfZm9ybWF0cyIsImRvbnRfY2FyZSIsImZhc3Rlc3QiLCJuaWNlc3QiLCJnZW5lcmF0ZV9taXBtYXBfaGludCIsImJ5dGUiLCJ1bnNpZ25lZF9ieXRlIiwic2hvcnQiLCJ1bnNpZ25lZF9zaG9ydCIsImludCIsInVuc2lnbmVkX2ludCIsImZsb2F0IiwiZGVwdGhfY29tcG9uZW50IiwicmdiIiwicmdiYSIsImx1bWluYW5jZSIsImx1bWluYW5jZV9hbHBoYSIsInVuc2lnbmVkX3Nob3J0XzRfNF80XzQiLCJ1bnNpZ25lZF9zaG9ydF81XzVfNV8xIiwidW5zaWduZWRfc2hvcnRfNV82XzUiLCJmcmFnbWVudF9zaGFkZXIiLCJ2ZXJ0ZXhfc2hhZGVyIiwibWF4X3ZlcnRleF9hdHRyaWJzIiwibWF4X3ZlcnRleF91bmlmb3JtX3ZlY3RvcnMiLCJtYXhfdmFyeWluZ192ZWN0b3JzIiwibWF4X2NvbWJpbmVkX3RleHR1cmVfaW1hZ2VfdW5pIiwibWF4X3ZlcnRleF90ZXh0dXJlX2ltYWdlX3VuaXRzIiwibWF4X3RleHR1cmVfaW1hZ2VfdW5pdHMiLCJtYXhfZnJhZ21lbnRfdW5pZm9ybV92ZWN0b3JzIiwic2hhZGVyX3R5cGUiLCJkZWxldGVfc3RhdHVzIiwibGlua19zdGF0dXMiLCJ2YWxpZGF0ZV9zdGF0dXMiLCJhdHRhY2hlZF9zaGFkZXJzIiwiYWN0aXZlX3VuaWZvcm1zIiwiYWN0aXZlX2F0dHJpYnV0ZXMiLCJzaGFkaW5nX2xhbmd1YWdlX3ZlcnNpb24iLCJjdXJyZW50X3Byb2dyYW0iLCJuZXZlciIsImxlc3MiLCJlcXVhbCIsImxlcXVhbCIsImdyZWF0ZXIiLCJub3RlcXVhbCIsImdlcXVhbCIsImFsd2F5cyIsImtlZXAiLCJyZXBsYWNlIiwiaW5jciIsImRlY3IiLCJpbmNyX3dyYXAiLCJkZWNyX3dyYXAiLCJ2ZW5kb3IiLCJyZW5kZXJlciIsInZlcnNpb24iLCJuZWFyZXN0IiwibGluZWFyIiwibmVhcmVzdF9taXBtYXBfbmVhcmVzdCIsImxpbmVhcl9taXBtYXBfbmVhcmVzdCIsIm5lYXJlc3RfbWlwbWFwX2xpbmVhciIsImxpbmVhcl9taXBtYXBfbGluZWFyIiwidGV4dHVyZV9tYWdfZmlsdGVyIiwidGV4dHVyZV9taW5fZmlsdGVyIiwidGV4dHVyZV93cmFwX3MiLCJ0ZXh0dXJlX3dyYXBfdCIsInRleHR1cmVfMmQiLCJ0ZXh0dXJlX2N1YmVfbWFwIiwidGV4dHVyZV9iaW5kaW5nX2N1YmVfbWFwIiwidGV4dHVyZV9jdWJlX21hcF9wb3NpdGl2ZV94IiwidGV4dHVyZV9jdWJlX21hcF9uZWdhdGl2ZV94IiwidGV4dHVyZV9jdWJlX21hcF9wb3NpdGl2ZV95IiwidGV4dHVyZV9jdWJlX21hcF9uZWdhdGl2ZV95IiwidGV4dHVyZV9jdWJlX21hcF9wb3NpdGl2ZV96IiwidGV4dHVyZV9jdWJlX21hcF9uZWdhdGl2ZV96IiwibWF4X2N1YmVfbWFwX3RleHR1cmVfc2l6ZSIsInRleHR1cmUwIiwidGV4dHVyZTEiLCJ0ZXh0dXJlMiIsInRleHR1cmUzIiwidGV4dHVyZTQiLCJ0ZXh0dXJlNSIsInRleHR1cmU2IiwidGV4dHVyZTciLCJ0ZXh0dXJlOCIsInRleHR1cmU5IiwidGV4dHVyZTEwIiwidGV4dHVyZTExIiwidGV4dHVyZTEyIiwidGV4dHVyZTEzIiwidGV4dHVyZTE0IiwidGV4dHVyZTE1IiwidGV4dHVyZTE2IiwidGV4dHVyZTE3IiwidGV4dHVyZTE4IiwidGV4dHVyZTE5IiwidGV4dHVyZTIwIiwidGV4dHVyZTIxIiwidGV4dHVyZTIyIiwidGV4dHVyZTIzIiwidGV4dHVyZTI0IiwidGV4dHVyZTI1IiwidGV4dHVyZTI2IiwidGV4dHVyZTI3IiwidGV4dHVyZTI4IiwidGV4dHVyZTI5IiwidGV4dHVyZTMwIiwidGV4dHVyZTMxIiwicmVwZWF0IiwiY2xhbXBfdG9fZWRnZSIsIm1pcnJvcmVkX3JlcGVhdCIsImZsb2F0X3ZlYzIiLCJmbG9hdF92ZWMzIiwiZmxvYXRfdmVjNCIsImludF92ZWMyIiwiaW50X3ZlYzMiLCJpbnRfdmVjNCIsImJvb2wiLCJib29sX3ZlYzIiLCJib29sX3ZlYzMiLCJib29sX3ZlYzQiLCJmbG9hdF9tYXQyIiwiZmxvYXRfbWF0MyIsImZsb2F0X21hdDQiLCJzYW1wbGVyXzJkIiwic2FtcGxlcl9jdWJlIiwidmVydGV4X2F0dHJpYl9hcnJheV9lbmFibGVkIiwidmVydGV4X2F0dHJpYl9hcnJheV9zaXplIiwidmVydGV4X2F0dHJpYl9hcnJheV9zdHJpZGUiLCJ2ZXJ0ZXhfYXR0cmliX2FycmF5X3R5cGUiLCJ2ZXJ0ZXhfYXR0cmliX2FycmF5X25vcm1hbGl6ZWQiLCJ2ZXJ0ZXhfYXR0cmliX2FycmF5X3BvaW50ZXIiLCJ2ZXJ0ZXhfYXR0cmliX2FycmF5X2J1ZmZlcl9iaW4iLCJpbXBsZW1lbnRhdGlvbl9jb2xvcl9yZWFkX3R5cGUiLCJpbXBsZW1lbnRhdGlvbl9jb2xvcl9yZWFkX2Zvcm0iLCJjb21waWxlX3N0YXR1cyIsImxvd19mbG9hdCIsIm1lZGl1bV9mbG9hdCIsImhpZ2hfZmxvYXQiLCJsb3dfaW50IiwibWVkaXVtX2ludCIsImhpZ2hfaW50IiwicmdiYTQiLCJyZ2I1X2ExIiwicmdiNTY1IiwiZGVwdGhfY29tcG9uZW50MTYiLCJzdGVuY2lsX2luZGV4OCIsImRlcHRoX3N0ZW5jaWwiLCJyZW5kZXJidWZmZXJfd2lkdGgiLCJyZW5kZXJidWZmZXJfaGVpZ2h0IiwicmVuZGVyYnVmZmVyX2ludGVybmFsX2Zvcm1hdCIsInJlbmRlcmJ1ZmZlcl9yZWRfc2l6ZSIsInJlbmRlcmJ1ZmZlcl9ncmVlbl9zaXplIiwicmVuZGVyYnVmZmVyX2JsdWVfc2l6ZSIsInJlbmRlcmJ1ZmZlcl9hbHBoYV9zaXplIiwicmVuZGVyYnVmZmVyX2RlcHRoX3NpemUiLCJyZW5kZXJidWZmZXJfc3RlbmNpbF9zaXplIiwiZnJhbWVidWZmZXJfYXR0YWNobWVudF9vYmplY3RfIiwiZnJhbWVidWZmZXJfYXR0YWNobWVudF90ZXh0dXJlIiwiY29sb3JfYXR0YWNobWVudDAiLCJkZXB0aF9hdHRhY2htZW50Iiwic3RlbmNpbF9hdHRhY2htZW50IiwiZGVwdGhfc3RlbmNpbF9hdHRhY2htZW50Iiwibm9uZSIsImZyYW1lYnVmZmVyX2NvbXBsZXRlIiwiZnJhbWVidWZmZXJfaW5jb21wbGV0ZV9hdHRhY2htIiwiZnJhbWVidWZmZXJfaW5jb21wbGV0ZV9taXNzaW5nIiwiZnJhbWVidWZmZXJfaW5jb21wbGV0ZV9kaW1lbnNpIiwiZnJhbWVidWZmZXJfdW5zdXBwb3J0ZWQiLCJmcmFtZWJ1ZmZlcl9iaW5kaW5nIiwicmVuZGVyYnVmZmVyX2JpbmRpbmciLCJtYXhfcmVuZGVyYnVmZmVyX3NpemUiLCJpbnZhbGlkX2ZyYW1lYnVmZmVyX29wZXJhdGlvbiIsInVucGFja19mbGlwX3lfd2ViZ2wiLCJ1bnBhY2tfcHJlbXVsdGlwbHlfYWxwaGFfd2ViZ2wiLCJjb250ZXh0X2xvc3Rfd2ViZ2wiLCJ1bnBhY2tfY29sb3JzcGFjZV9jb252ZXJzaW9uX3ciLCJicm93c2VyX2RlZmF1bHRfd2ViZ2wiLCJnbDJjdHgiLCJ1bnBhY2tfcm93X2xlbmd0aCIsInVucGFja19za2lwX3Jvd3MiLCJ1bnBhY2tfc2tpcF9waXhlbHMiLCJwYWNrX3Jvd19sZW5ndGgiLCJwYWNrX3NraXBfcm93cyIsInBhY2tfc2tpcF9waXhlbHMiLCJyZ2I4IiwicmdiYTgiLCJyZ2IxMF9hMiIsInRleHR1cmVfYmluZGluZ18zZCIsInVucGFja19za2lwX2ltYWdlcyIsInVucGFja19pbWFnZV9oZWlnaHQiLCJ0ZXh0dXJlXzNkIiwidGV4dHVyZV93cmFwX3IiLCJtYXhfM2RfdGV4dHVyZV9zaXplIiwidW5zaWduZWRfaW50XzJfMTBfMTBfMTBfcmV2IiwibWF4X2VsZW1lbnRzX3ZlcnRpY2VzIiwibWF4X2VsZW1lbnRzX2luZGljZXMiLCJ0ZXh0dXJlX21pbl9sb2QiLCJ0ZXh0dXJlX21heF9sb2QiLCJ0ZXh0dXJlX2Jhc2VfbGV2ZWwiLCJ0ZXh0dXJlX21heF9sZXZlbCIsIm1pbiIsIm1heCIsImRlcHRoX2NvbXBvbmVudDI0IiwibWF4X3RleHR1cmVfbG9kX2JpYXMiLCJ0ZXh0dXJlX2NvbXBhcmVfbW9kZSIsInRleHR1cmVfY29tcGFyZV9mdW5jIiwiY3VycmVudF9xdWVyeSIsInF1ZXJ5X3Jlc3VsdCIsInF1ZXJ5X3Jlc3VsdF9hdmFpbGFibGUiLCJzdHJlYW1fcmVhZCIsInN0cmVhbV9jb3B5Iiwic3RhdGljX3JlYWQiLCJzdGF0aWNfY29weSIsImR5bmFtaWNfcmVhZCIsImR5bmFtaWNfY29weSIsIm1heF9kcmF3X2J1ZmZlcnMiLCJkcmF3X2J1ZmZlcjAiLCJkcmF3X2J1ZmZlcjEiLCJkcmF3X2J1ZmZlcjIiLCJkcmF3X2J1ZmZlcjMiLCJkcmF3X2J1ZmZlcjQiLCJkcmF3X2J1ZmZlcjUiLCJkcmF3X2J1ZmZlcjYiLCJkcmF3X2J1ZmZlcjciLCJkcmF3X2J1ZmZlcjgiLCJkcmF3X2J1ZmZlcjkiLCJkcmF3X2J1ZmZlcjEwIiwiZHJhd19idWZmZXIxMSIsImRyYXdfYnVmZmVyMTIiLCJkcmF3X2J1ZmZlcjEzIiwiZHJhd19idWZmZXIxNCIsImRyYXdfYnVmZmVyMTUiLCJtYXhfZnJhZ21lbnRfdW5pZm9ybV9jb21wb25lbnQiLCJtYXhfdmVydGV4X3VuaWZvcm1fY29tcG9uZW50cyIsInNhbXBsZXJfM2QiLCJzYW1wbGVyXzJkX3NoYWRvdyIsImZyYWdtZW50X3NoYWRlcl9kZXJpdmF0aXZlX2hpbiIsInBpeGVsX3BhY2tfYnVmZmVyIiwicGl4ZWxfdW5wYWNrX2J1ZmZlciIsInBpeGVsX3BhY2tfYnVmZmVyX2JpbmRpbmciLCJwaXhlbF91bnBhY2tfYnVmZmVyX2JpbmRpbmciLCJmbG9hdF9tYXQyeDMiLCJmbG9hdF9tYXQyeDQiLCJmbG9hdF9tYXQzeDIiLCJmbG9hdF9tYXQzeDQiLCJmbG9hdF9tYXQ0eDIiLCJmbG9hdF9tYXQ0eDMiLCJzcmdiIiwic3JnYjgiLCJzcmdiOF9hbHBoYTgiLCJjb21wYXJlX3JlZl90b190ZXh0dXJlIiwicmdiYTMyZiIsInJnYjMyZiIsInJnYmExNmYiLCJyZ2IxNmYiLCJ2ZXJ0ZXhfYXR0cmliX2FycmF5X2ludGVnZXIiLCJtYXhfYXJyYXlfdGV4dHVyZV9sYXllcnMiLCJtaW5fcHJvZ3JhbV90ZXhlbF9vZmZzZXQiLCJtYXhfcHJvZ3JhbV90ZXhlbF9vZmZzZXQiLCJtYXhfdmFyeWluZ19jb21wb25lbnRzIiwidGV4dHVyZV8yZF9hcnJheSIsInRleHR1cmVfYmluZGluZ18yZF9hcnJheSIsInIxMWZfZzExZl9iMTBmIiwidW5zaWduZWRfaW50XzEwZl8xMWZfMTFmX3JldiIsInJnYjlfZTUiLCJ1bnNpZ25lZF9pbnRfNV85XzlfOV9yZXYiLCJ0cmFuc2Zvcm1fZmVlZGJhY2tfYnVmZmVyX21vZGUiLCJtYXhfdHJhbnNmb3JtX2ZlZWRiYWNrX3NlcGFyYXQiLCJ0cmFuc2Zvcm1fZmVlZGJhY2tfYnVmZmVyX3N0YXIiLCJ0cmFuc2Zvcm1fZmVlZGJhY2tfYnVmZmVyX3NpemUiLCJ0cmFuc2Zvcm1fZmVlZGJhY2tfcHJpbWl0aXZlc18iLCJyYXN0ZXJpemVyX2Rpc2NhcmQiLCJtYXhfdHJhbnNmb3JtX2ZlZWRiYWNrX2ludGVybGUiLCJpbnRlcmxlYXZlZF9hdHRyaWJzIiwic2VwYXJhdGVfYXR0cmlicyIsInRyYW5zZm9ybV9mZWVkYmFja19idWZmZXIiLCJ0cmFuc2Zvcm1fZmVlZGJhY2tfYnVmZmVyX2JpbmQiLCJyZ2JhMzJ1aSIsInJnYjMydWkiLCJyZ2JhMTZ1aSIsInJnYjE2dWkiLCJyZ2JhOHVpIiwicmdiOHVpIiwicmdiYTMyaSIsInJnYjMyaSIsInJnYmExNmkiLCJyZ2IxNmkiLCJyZ2JhOGkiLCJyZ2I4aSIsInJlZF9pbnRlZ2VyIiwicmdiX2ludGVnZXIiLCJyZ2JhX2ludGVnZXIiLCJzYW1wbGVyXzJkX2FycmF5Iiwic2FtcGxlcl8yZF9hcnJheV9zaGFkb3ciLCJzYW1wbGVyX2N1YmVfc2hhZG93IiwidW5zaWduZWRfaW50X3ZlYzIiLCJ1bnNpZ25lZF9pbnRfdmVjMyIsInVuc2lnbmVkX2ludF92ZWM0IiwiaW50X3NhbXBsZXJfMmQiLCJpbnRfc2FtcGxlcl8zZCIsImludF9zYW1wbGVyX2N1YmUiLCJpbnRfc2FtcGxlcl8yZF9hcnJheSIsInVuc2lnbmVkX2ludF9zYW1wbGVyXzJkIiwidW5zaWduZWRfaW50X3NhbXBsZXJfM2QiLCJ1bnNpZ25lZF9pbnRfc2FtcGxlcl9jdWJlIiwidW5zaWduZWRfaW50X3NhbXBsZXJfMmRfYXJyYXkiLCJkZXB0aF9jb21wb25lbnQzMmYiLCJkZXB0aDMyZl9zdGVuY2lsOCIsImZsb2F0XzMyX3Vuc2lnbmVkX2ludF8yNF84X3JldiIsImZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfY29sb3JfZSIsImZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfY29tcG9uZSIsImZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfcmVkX3NpeiIsImZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfZ3JlZW5fcyIsImZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfYmx1ZV9zaSIsImZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfYWxwaGFfcyIsImZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfZGVwdGhfcyIsImZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfc3RlbmNpbCIsImZyYW1lYnVmZmVyX2RlZmF1bHQiLCJ1bnNpZ25lZF9pbnRfMjRfOCIsImRlcHRoMjRfc3RlbmNpbDgiLCJ1bnNpZ25lZF9ub3JtYWxpemVkIiwiZHJhd19mcmFtZWJ1ZmZlcl9iaW5kaW5nIiwicmVhZF9mcmFtZWJ1ZmZlciIsImRyYXdfZnJhbWVidWZmZXIiLCJyZWFkX2ZyYW1lYnVmZmVyX2JpbmRpbmciLCJyZW5kZXJidWZmZXJfc2FtcGxlcyIsIm1heF9jb2xvcl9hdHRhY2htZW50cyIsImNvbG9yX2F0dGFjaG1lbnQxIiwiY29sb3JfYXR0YWNobWVudDIiLCJjb2xvcl9hdHRhY2htZW50MyIsImNvbG9yX2F0dGFjaG1lbnQ0IiwiY29sb3JfYXR0YWNobWVudDUiLCJjb2xvcl9hdHRhY2htZW50NiIsImNvbG9yX2F0dGFjaG1lbnQ3IiwiY29sb3JfYXR0YWNobWVudDgiLCJjb2xvcl9hdHRhY2htZW50OSIsImNvbG9yX2F0dGFjaG1lbnQxMCIsImNvbG9yX2F0dGFjaG1lbnQxMSIsImNvbG9yX2F0dGFjaG1lbnQxMiIsImNvbG9yX2F0dGFjaG1lbnQxMyIsImNvbG9yX2F0dGFjaG1lbnQxNCIsImNvbG9yX2F0dGFjaG1lbnQxNSIsImZyYW1lYnVmZmVyX2luY29tcGxldGVfbXVsdGlzYSIsIm1heF9zYW1wbGVzIiwiaGFsZl9mbG9hdCIsInJnIiwicmdfaW50ZWdlciIsInI4Iiwicmc4IiwicjE2ZiIsInIzMmYiLCJyZzE2ZiIsInJnMzJmIiwicjhpIiwicjh1aSIsInIxNmkiLCJyMTZ1aSIsInIzMmkiLCJyMzJ1aSIsInJnOGkiLCJyZzh1aSIsInJnMTZpIiwicmcxNnVpIiwicmczMmkiLCJyZzMydWkiLCJ2ZXJ0ZXhfYXJyYXlfYmluZGluZyIsInI4X3Nub3JtIiwicmc4X3Nub3JtIiwicmdiOF9zbm9ybSIsInJnYmE4X3Nub3JtIiwic2lnbmVkX25vcm1hbGl6ZWQiLCJjb3B5X3JlYWRfYnVmZmVyIiwiY29weV93cml0ZV9idWZmZXIiLCJjb3B5X3JlYWRfYnVmZmVyX2JpbmRpbmciLCJjb3B5X3dyaXRlX2J1ZmZlcl9iaW5kaW5nIiwidW5pZm9ybV9idWZmZXIiLCJ1bmlmb3JtX2J1ZmZlcl9iaW5kaW5nIiwidW5pZm9ybV9idWZmZXJfc3RhcnQiLCJ1bmlmb3JtX2J1ZmZlcl9zaXplIiwibWF4X3ZlcnRleF91bmlmb3JtX2Jsb2NrcyIsIm1heF9mcmFnbWVudF91bmlmb3JtX2Jsb2NrcyIsIm1heF9jb21iaW5lZF91bmlmb3JtX2Jsb2NrcyIsIm1heF91bmlmb3JtX2J1ZmZlcl9iaW5kaW5ncyIsIm1heF91bmlmb3JtX2Jsb2NrX3NpemUiLCJtYXhfY29tYmluZWRfdmVydGV4X3VuaWZvcm1fY28iLCJtYXhfY29tYmluZWRfZnJhZ21lbnRfdW5pZm9ybV8iLCJ1bmlmb3JtX2J1ZmZlcl9vZmZzZXRfYWxpZ25tZW4iLCJhY3RpdmVfdW5pZm9ybV9ibG9ja3MiLCJ1bmlmb3JtX3R5cGUiLCJ1bmlmb3JtX3NpemUiLCJ1bmlmb3JtX2Jsb2NrX2luZGV4IiwidW5pZm9ybV9vZmZzZXQiLCJ1bmlmb3JtX2FycmF5X3N0cmlkZSIsInVuaWZvcm1fbWF0cml4X3N0cmlkZSIsInVuaWZvcm1faXNfcm93X21ham9yIiwidW5pZm9ybV9ibG9ja19kYXRhX3NpemUiLCJ1bmlmb3JtX2Jsb2NrX2FjdGl2ZV91bmlmb3JtcyIsInVuaWZvcm1fYmxvY2tfYWN0aXZlX3VuaWZvcm1faSIsInVuaWZvcm1fYmxvY2tfcmVmZXJlbmNlZF9ieV92ZSIsInVuaWZvcm1fYmxvY2tfcmVmZXJlbmNlZF9ieV9mciIsImludmFsaWRfaW5kZXgiLCJtYXhfdmVydGV4X291dHB1dF9jb21wb25lbnRzIiwibWF4X2ZyYWdtZW50X2lucHV0X2NvbXBvbmVudHMiLCJtYXhfc2VydmVyX3dhaXRfdGltZW91dCIsIm9iamVjdF90eXBlIiwic3luY19jb25kaXRpb24iLCJzeW5jX3N0YXR1cyIsInN5bmNfZmxhZ3MiLCJzeW5jX2ZlbmNlIiwic3luY19ncHVfY29tbWFuZHNfY29tcGxldGUiLCJ1bnNpZ25hbGVkIiwic2lnbmFsZWQiLCJhbHJlYWR5X3NpZ25hbGVkIiwidGltZW91dF9leHBpcmVkIiwiY29uZGl0aW9uX3NhdGlzZmllZCIsIndhaXRfZmFpbGVkIiwic3luY19mbHVzaF9jb21tYW5kc19iaXQiLCJ2ZXJ0ZXhfYXR0cmliX2FycmF5X2Rpdmlzb3IiLCJhbnlfc2FtcGxlc19wYXNzZWQiLCJhbnlfc2FtcGxlc19wYXNzZWRfY29uc2VydmF0aXYiLCJzYW1wbGVyX2JpbmRpbmciLCJyZ2IxMF9hMnVpIiwiaW50XzJfMTBfMTBfMTBfcmV2IiwidHJhbnNmb3JtX2ZlZWRiYWNrIiwidHJhbnNmb3JtX2ZlZWRiYWNrX3BhdXNlZCIsInRyYW5zZm9ybV9mZWVkYmFja19hY3RpdmUiLCJ0cmFuc2Zvcm1fZmVlZGJhY2tfYmluZGluZyIsInRleHR1cmVfaW1tdXRhYmxlX2Zvcm1hdCIsIm1heF9lbGVtZW50X2luZGV4IiwidGV4dHVyZV9pbW11dGFibGVfbGV2ZWxzIiwidGltZW91dF9pZ25vcmVkIiwibWF4X2NsaWVudF93YWl0X3RpbWVvdXRfd2ViZ2wiLCJjc3Rfcm91bmQiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxJQUFBQyx3QkFBQTtBQUFBLElBQUFDLHdCQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxJQUFBQyxzQkFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUosR0FBQUMsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLEtBQUE7QUFBQSxJQUFBQyxPQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsTUFBQTtBQUFBLElBQUFDLE1BQUE7QUFBQSxZQUFBQyxNQUFBQyxHQ1dnQixzQ0FBb0I7QUFBQSxZQUFBQyxZQUFBRCxHQUNkLDRDQUEwQjtBQUFBLFlBQUFFLFFBQUFGLEdBQzlCLGtCQUF3QjtBQUFBLFlBQUFHLFNBQUFILEtBQUFBLEdBQ3BCLHNCQUEyQjtBQUFBLFlBQUFJLElBQUFKLEdBRW5DLHFDQUFvQjtBQUFBLFlBQUFLLElBQUFMLEdBQ3BCLHFDQUFvQjtBQUFB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QUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFRGg2RHBGIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDAxMTcsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLmdsb2JlX3dlYmdsLm9ianMvanNvby9kZWZhdWx0L2dsb2JlX3dlYmdsLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvd29ya3NwYWNlX3Jvb3Qvb2NhbWwtZ2xvYmUvd2ViZ2wvc2hhZGVyLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIENvcHlyaWdodCAoYykgMjAyNSBUaG9tYXMgR2F6YWduYWlyZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuKCoqIEdMU0wgc2hhZGVyIGNvbXBpbGF0aW9uIHV0aWxpdGllcyBhbmQgZ2xvYmUgc2hhZGVyIHNvdXJjZXMuICopXG5cbm9wZW4gQnJyX2NhbnZhc1xuXG5sZXQgY29tcGlsZSBnbCB0eXAgc3JjID1cbiAgbGV0IHNoYWRlciA9IEdsLmNyZWF0ZV9zaGFkZXIgZ2wgdHlwIGluXG4gIEdsLnNoYWRlcl9zb3VyY2UgZ2wgc2hhZGVyIChKc3RyLm9mX3N0cmluZyBzcmMpO1xuICBHbC5jb21waWxlX3NoYWRlciBnbCBzaGFkZXI7XG4gIHNoYWRlclxuXG5sZXQgcHJvZ3JhbSBnbCB+dmVydCB+ZnJhZyA9XG4gIGxldCB2cyA9IGNvbXBpbGUgZ2wgR2wudmVydGV4X3NoYWRlciB2ZXJ0IGluXG4gIGxldCBmcyA9IGNvbXBpbGUgZ2wgR2wuZnJhZ21lbnRfc2hhZGVyIGZyYWcgaW5cbiAgbGV0IHByb2cgPSBHbC5jcmVhdGVfcHJvZ3JhbSBnbCBpblxuICBHbC5hdHRhY2hfc2hhZGVyIGdsIHByb2cgdnM7XG4gIEdsLmF0dGFjaF9zaGFkZXIgZ2wgcHJvZyBmcztcbiAgR2wubGlua19wcm9ncmFtIGdsIHByb2c7XG4gIEdsLmRlbGV0ZV9zaGFkZXIgZ2wgdnM7XG4gIEdsLmRlbGV0ZV9zaGFkZXIgZ2wgZnM7XG4gIHByb2dcblxuKCogLS0tIEdsb2JlIGRvdCBjbG91ZCBzaGFkZXJzIC0tLSAqKVxuXG5sZXQgZWFydGhfdmVydGV4ID1cbiAge3wjdmVyc2lvbiAzMDAgZXNcbnByZWNpc2lvbiBoaWdocCBmbG9hdDtcblxubGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gdmVjMyBhX3Bvc2l0aW9uO1xubGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQgYV9icmlnaHRuZXNzO1xuXG51bmlmb3JtIG1hdDQgdV9wcm9qZWN0aW9uO1xudW5pZm9ybSBtYXQ0IHVfdmlldztcbnVuaWZvcm0gZmxvYXQgdV9wb2ludF9zaXplO1xuXG5vdXQgZmxvYXQgdl9icmlnaHRuZXNzO1xuXG52b2lkIG1haW4oKSB7XG4gIGdsX1Bvc2l0aW9uID0gdV9wcm9qZWN0aW9uICogdV92aWV3ICogdmVjNChhX3Bvc2l0aW9uLCAxLjApO1xuICBnbF9Qb2ludFNpemUgPSB1X3BvaW50X3NpemUgKiAoMC4zICsgYV9icmlnaHRuZXNzICogMC43KTtcbiAgdl9icmlnaHRuZXNzID0gYV9icmlnaHRuZXNzO1xufVxufH1cblxubGV0IGVhcnRoX2ZyYWdtZW50ID1cbiAge3wjdmVyc2lvbiAzMDAgZXNcbnByZWNpc2lvbiBoaWdocCBmbG9hdDtcblxuaW4gZmxvYXQgdl9icmlnaHRuZXNzO1xudW5pZm9ybSBmbG9hdCB1X2RpbTtcbm91dCB2ZWM0IGZyYWdDb2xvcjtcblxudm9pZCBtYWluKCkge1xuICBmbG9hdCBkID0gZGlzdGFuY2UoZ2xfUG9pbnRDb29yZCwgdmVjMigwLjUpKTtcbiAgaWYgKGQgPiAwLjUpIGRpc2NhcmQ7XG4gIGZsb2F0IGFscGhhID0gc21vb3Roc3RlcCgwLjUsIDAuMSwgZCk7XG4gIHZlYzMgY29sb3IgPSBtaXgodmVjMygwLjAzLCAwLjEwLCAwLjI1KSwgdmVjMygwLjM1LCAwLjkwLCAxLjApLCB2X2JyaWdodG5lc3MpO1xuICAvLyB1X2RpbTogMS4wID0gZnVsbCBicmlnaHRuZXNzLCAwLjAgPSBjb21wbGV0ZWx5IGRhcmtcbiAgZnJhZ0NvbG9yID0gdmVjNChjb2xvciAqIHVfZGltLCBhbHBoYSAqICgwLjMgKyB2X2JyaWdodG5lc3MgKiAwLjcpICogdV9kaW0pO1xufVxufH1cblxuKCogLS0tIFN0YXIgZmllbGQgc2hhZGVycyAtLS0gKilcblxubGV0IHN0YXJfdmVydGV4ID1cbiAge3wjdmVyc2lvbiAzMDAgZXNcbnByZWNpc2lvbiBoaWdocCBmbG9hdDtcblxubGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gdmVjMyBhX3Bvc2l0aW9uO1xubGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQgYV9icmlnaHRuZXNzO1xuXG51bmlmb3JtIG1hdDQgdV9wcm9qZWN0aW9uO1xudW5pZm9ybSBtYXQ0IHVfdmlldztcblxub3V0IGZsb2F0IHZfYnJpZ2h0bmVzcztcblxudm9pZCBtYWluKCkge1xuICBnbF9Qb3NpdGlvbiA9IHVfcHJvamVjdGlvbiAqIHVfdmlldyAqIHZlYzQoYV9wb3NpdGlvbiwgMS4wKTtcbiAgZ2xfUG9pbnRTaXplID0gMS4wICsgYV9icmlnaHRuZXNzO1xuICB2X2JyaWdodG5lc3MgPSBhX2JyaWdodG5lc3M7XG59XG58fVxuXG5sZXQgc3Rhcl9mcmFnbWVudCA9XG4gIHt8I3ZlcnNpb24gMzAwIGVzXG5wcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG5cbmluIGZsb2F0IHZfYnJpZ2h0bmVzcztcbm91dCB2ZWM0IGZyYWdDb2xvcjtcblxudm9pZCBtYWluKCkge1xuICBmbG9hdCBkID0gZGlzdGFuY2UoZ2xfUG9pbnRDb29yZCwgdmVjMigwLjUpKTtcbiAgaWYgKGQgPiAwLjUpIGRpc2NhcmQ7XG4gIGZyYWdDb2xvciA9IHZlYzQodmVjMygxLjApLCB2X2JyaWdodG5lc3MgKiBzbW9vdGhzdGVwKDAuNSwgMC4wLCBkKSk7XG59XG58fVxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiQnJyX2NhbnZhcyIsImNvbXBpbGUiLCJnbCIsInR5cCIsInNyYyIsInNoYWRlciIsInByb2dyYW0iLCJ2ZXJ0IiwiZnJhZyIsInZzIiwiZnMiLCJwcm9nIl0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUosR0FBQUMsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE9BQUFDLGFBQUE7QUFBQSxZQUFBQyxRQUFBQyxJQUFBQyxLQUFBQztBQUFBQSxRQUFBQyxTQ1VlO0FBQUEsSUFDYjtBQUFBLHNDQUEyQjtBQUFBLElBQzNCO0FBQUEsSUFBMkI7QUFBQSxHQUNyQjtBQUFBLFlBQUFDLFFBQUFKLElBQUFLLE1BQUFDO0FBQUFBO0FBQUFBLEtBQUFDLEtBR0c7QUFBQSxLQUFBQyxLQUNBO0FBQUEsS0FBQUMsT0FDRTtBQUFBLElBQ1g7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFBc0I7QUFBQSxHQUNsQjtBQUFBLEdEeEJOIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDAxNzMsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLmdsb2JlX3dlYmdsLm9ianMvanNvby9kZWZhdWx0L2dsb2JlX3dlYmdsLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvd29ya3NwYWNlX3Jvb3Qvb2NhbWwtZ2xvYmUvd2ViZ2wvc3RhcnMubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgQ29weXJpZ2h0IChjKSAyMDI1IFRob21hcyBHYXphZ25haXJlLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG4oKiogU3RhciBmaWVsZCBiYWNrZ3JvdW5kOiByYW5kb20gc21hbGwgd2hpdGUgcG9pbnRzIG9uIGEgZmFyIHNwaGVyZS4gKilcblxub3BlbiBCcnJcbm9wZW4gQnJyX2NhbnZhc1xuXG50eXBlIHQgPSB7XG4gIHByb2cgOiBHbC5wcm9ncmFtO1xuICB2YW8gOiBHbC52ZXJ0ZXhfYXJyYXlfb2JqZWN0O1xuICBjb3VudCA6IGludDtcbiAgdV9wcm9qZWN0aW9uIDogR2wudW5pZm9ybV9sb2NhdGlvbjtcbiAgdV92aWV3IDogR2wudW5pZm9ybV9sb2NhdGlvbjtcbn1cblxubGV0IHYgPyhjb3VudCA9IDIwMDApID8oZGlzdGFuY2UgPSA1MC4wKSBnbCA9XG4gIGxldCBkYXRhID0gQXJyYXkubWFrZSAoY291bnQgKiA0KSAwLiBpblxuICBsZXQgc2VlZCA9IHJlZiAxMjM0NSBpblxuICBsZXQgcmFuZCAoKSA9XG4gICAgc2VlZCA6PSAoIXNlZWQgKiAxMTAzNTE1MjQ1KSArIDEyMzQ1O1xuICAgIEZsb2F0Lm9mX2ludCAoYWJzICghc2VlZCAvIDY1NTM2IG1vZCAzMjc2OCkpIC8uIDMyNzY4LlxuICBpblxuICBmb3IgaSA9IDAgdG8gY291bnQgLSAxIGRvXG4gICAgbGV0IHRoZXRhID0gYWNvcyAoMS4gLS4gKDIuICouIHJhbmQgKCkpKSBpblxuICAgIGxldCBwaGkgPSAyLiAqLiBGbG9hdC5waSAqLiByYW5kICgpIGluXG4gICAgbGV0IG9mZiA9IGkgKiA0IGluXG4gICAgZGF0YS4ob2ZmKSA8LSBkaXN0YW5jZSAqLiBzaW4gdGhldGEgKi4gY29zIHBoaTtcbiAgICBkYXRhLihvZmYgKyAxKSA8LSBkaXN0YW5jZSAqLiBjb3MgdGhldGE7XG4gICAgZGF0YS4ob2ZmICsgMikgPC0gZGlzdGFuY2UgKi4gc2luIHRoZXRhICouIHNpbiBwaGk7XG4gICAgZGF0YS4ob2ZmICsgMykgPC0gMC4zICsuICgwLjcgKi4gcmFuZCAoKSlcbiAgZG9uZTtcbiAgbGV0IGJ1Zl9kYXRhID0gVGFycmF5Lm9mX2Zsb2F0X2FycmF5IFRhcnJheS5GbG9hdDMyIGRhdGEgaW5cbiAgbGV0IHByb2cgPVxuICAgIFNoYWRlci5wcm9ncmFtIGdsIH52ZXJ0OlNoYWRlci5zdGFyX3ZlcnRleCB+ZnJhZzpTaGFkZXIuc3Rhcl9mcmFnbWVudFxuICBpblxuICBsZXQgdmFvID0gR2wuY3JlYXRlX3ZlcnRleF9hcnJheSBnbCBpblxuICBHbC5iaW5kX3ZlcnRleF9hcnJheSBnbCAoU29tZSB2YW8pO1xuICBsZXQgdmJvID0gR2wuY3JlYXRlX2J1ZmZlciBnbCBpblxuICBHbC5iaW5kX2J1ZmZlciBnbCBHbC5hcnJheV9idWZmZXIgKFNvbWUgdmJvKTtcbiAgR2wuYnVmZmVyX2RhdGEgZ2wgR2wuYXJyYXlfYnVmZmVyIGJ1Zl9kYXRhIEdsLnN0YXRpY19kcmF3O1xuICBHbC5lbmFibGVfdmVydGV4X2F0dHJpYl9hcnJheSBnbCAwO1xuICBHbC52ZXJ0ZXhfYXR0cmliX3BvaW50ZXIgZ2wgMCAzIEdsLmZsb2F0IGZhbHNlIDE2IDA7XG4gIEdsLmVuYWJsZV92ZXJ0ZXhfYXR0cmliX2FycmF5IGdsIDE7XG4gIEdsLnZlcnRleF9hdHRyaWJfcG9pbnRlciBnbCAxIDEgR2wuZmxvYXQgZmFsc2UgMTYgMTI7XG4gIEdsLmJpbmRfdmVydGV4X2FycmF5IGdsIE5vbmU7XG4gIHtcbiAgICBwcm9nO1xuICAgIHZhbztcbiAgICBjb3VudDtcbiAgICB1X3Byb2plY3Rpb24gPVxuICAgICAgR2wuZ2V0X3VuaWZvcm1fbG9jYXRpb24gZ2wgcHJvZyAoSnN0ci5vZl9zdHJpbmcgXCJ1X3Byb2plY3Rpb25cIik7XG4gICAgdV92aWV3ID0gR2wuZ2V0X3VuaWZvcm1fbG9jYXRpb24gZ2wgcHJvZyAoSnN0ci5vZl9zdHJpbmcgXCJ1X3ZpZXdcIik7XG4gIH1cblxubGV0IGRyYXcgZ2wgdCB+cHJvamVjdGlvbiB+dmlldyA9XG4gIEdsLnVzZV9wcm9ncmFtIGdsIHQucHJvZztcbiAgbGV0IHByb2pfYXJyID0gVGFycmF5Lm9mX2Zsb2F0X2FycmF5IFRhcnJheS5GbG9hdDMyIHByb2plY3Rpb24gaW5cbiAgbGV0IHZpZXdfYXJyID0gVGFycmF5Lm9mX2Zsb2F0X2FycmF5IFRhcnJheS5GbG9hdDMyIHZpZXcgaW5cbiAgR2wudW5pZm9ybV9tYXRyaXg0ZnYgZ2wgdC51X3Byb2plY3Rpb24gZmFsc2UgcHJval9hcnI7XG4gIEdsLnVuaWZvcm1fbWF0cml4NGZ2IGdsIHQudV92aWV3IGZhbHNlIHZpZXdfYXJyO1xuICBHbC5iaW5kX3ZlcnRleF9hcnJheSBnbCAoU29tZSB0LnZhbyk7XG4gIEdsLmRyYXdfYXJyYXlzIGdsIEdsLnBvaW50cyAwIHQuY291bnQ7XG4gIEdsLmJpbmRfdmVydGV4X2FycmF5IGdsIE5vbmVcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jaGVja19ib3VuZCIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJjYW1sX2NhbGwzIiwiYTIiLCJjYW1sX2NhbGw0IiwiYTMiLCJjYW1sX2NhbGw3IiwiYTQiLCJhNSIsImE2IiwiZ2xvYmFsX2RhdGEiLCJCcnJfY2FudmFzIiwiQnJyIiwiU3RkbGliIiwiU3RkbGliX0Zsb2F0IiwiR2xvYmVfd2ViZ2xfU2hhZGVyIiwidiIsIm9wdCIsImdsIiwiY291bnQiLCJkaXN0YW5jZSIsImRhdGEiLCJzZWVkIiwicmFuZCIsInBhcmFtIiwiaSIsInRoZXRhIiwicGhpIiwib2ZmIiwiYnVmX2RhdGEiLCJwcm9nIiwidmFvIiwidmJvIiwiZHJhdyIsInQiLCJwcm9qZWN0aW9uIiwidmlldyIsInByb2pfYXJyIiwidmlld19hcnIiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFKLEdBQUFDLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBTixHQUFBQyxJQUFBRSxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQVIsR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUMsSUFBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGFBQUE7QUFBQSxJQUFBQyxNQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxxQkFBQTtBQUFBLFlBQUFDLEVBQUEsR0FBQUMsS0FBQUM7QUFBQUE7QUFBQUEsS0FBQUMsUUNrQk07QUFBQSxLQUFBQyxXQUFBO0FBQUEsS0FBQUMsT0FDTztBQUFBLEtBQUFDLE9BQ1g7QUFBQSxhQUFBQyxLQUFBQztBQUFBQSxLQUVFO0FBQUEsS0FDYSx3RUFBeUM7QUFBQTtBQUFBLFlBRXhEO0FBQUE7QUFBQSxTQUFBQyxJQUFBO0FBQUE7QUFBQTtBQUFBLE9BQUFDLFFBQ2Msb0JBQW1CO0FBQUEsV0FDSDtBQUFBLE9BQUFDLE1BQWxCO0FBQUEsT0FBQUMsTUFDVjtBQUFBLE1BQ0E7QUFBQSxrQkFBMEIsa0JBQWE7QUFBQSxjQUNBO0FBQUEsTUFBdkMsOENBQThCO0FBQUEsY0FDb0I7QUFBQSxNQUFsRDtBQUFBLGtCQUE4QixrQkFBYTtBQUFBLGNBQ0YsaUJBQVI7QUFBQSxNQUFqQztBQUFBLGNBQXlDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEtBQUFDLFdBRTVCO0FBQUEsS0FBQUM7QUFBQUEsT0FFYjtBQUFBO0FBQUEsS0FBQUMsTUFFUTtBQUFBLElBQ1Y7QUFBQSxRQUFBQyxNQUNVO0FBQUEsSUFDVjtBQUFBLElBQ0E7QUFBQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsWUFPVztBQUFBLElBRFA7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGNBQStEO0FBQUEsR0FFbEU7QUFBQSxZQUFBQyxLQUFBZixJQUFBZ0IsR0FBQUMsWUFBQUM7QUFBQUEsSUFHRDtBQUFBO0FBQUEsS0FBQUMsV0FDZTtBQUFBLEtBQUFDLFdBQ0E7QUFBQSxJQUNmO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFBcUMsMkNBQ1Q7QUFBQTtBQUFBLEdEakU5QiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQwMjg1LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6Ii5nbG9iZV93ZWJnbC5vYmpzL2pzb28vZGVmYXVsdC9nbG9iZV93ZWJnbC5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL3dvcmtzcGFjZV9yb290L29jYW1sLWdsb2JlL3dlYmdsL2NhbWVyYS5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBDb3B5cmlnaHQgKGMpIDIwMjUgVGhvbWFzIEdhemFnbmFpcmUuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbigqKiBPcmJpdCBjYW1lcmEgd2l0aCBkcmFnIHJvdGF0aW9uIGFuZCBzY3JvbGwgem9vbS4gKilcblxub3BlbiBCcnJcblxudHlwZSB0ID0ge1xuICBtdXRhYmxlIHRoZXRhIDogZmxvYXQ7XG4gIG11dGFibGUgcGhpIDogZmxvYXQ7XG4gIG11dGFibGUgZGlzdGFuY2UgOiBmbG9hdDtcbiAgbXV0YWJsZSBkcmFnZ2luZyA6IGJvb2w7XG4gIG11dGFibGUgbGFzdF94IDogZmxvYXQ7XG4gIG11dGFibGUgbGFzdF95IDogZmxvYXQ7XG4gIG11dGFibGUgYXV0b19yb3RhdGUgOiBib29sO1xufVxuXG5sZXQgdiAoKSA9XG4gIHtcbiAgICB0aGV0YSA9IDAuO1xuICAgIHBoaSA9IDAuMztcbiAgICBkaXN0YW5jZSA9IDMuNTtcbiAgICBkcmFnZ2luZyA9IGZhbHNlO1xuICAgIGxhc3RfeCA9IDAuO1xuICAgIGxhc3RfeSA9IDAuO1xuICAgIGF1dG9fcm90YXRlID0gdHJ1ZTtcbiAgfVxuXG5sZXQgdmlld19tYXRyaXggY2FtID1cbiAgbGV0IG9wZW4gR2xvYmUuTWF0aCBpblxuICBsZXQgeCA9IGNhbS5kaXN0YW5jZSAqLiBjb3MgY2FtLnBoaSAqLiBzaW4gY2FtLnRoZXRhIGluXG4gIGxldCB5ID0gY2FtLmRpc3RhbmNlICouIHNpbiBjYW0ucGhpIGluXG4gIGxldCB6ID0gY2FtLmRpc3RhbmNlICouIGNvcyBjYW0ucGhpICouIGNvcyBjYW0udGhldGEgaW5cbiAgbGV0IGV5ZSA9IFZlYzMuY3JlYXRlIHggeSB6IGluXG4gIGxldCBjZW50ZXIgPSBWZWMzLnplcm8gaW5cbiAgbGV0IHVwID0gVmVjMy5jcmVhdGUgMC4gMS4gMC4gaW5cbiAgTWF0NC5sb29rX2F0IH5leWUgfmNlbnRlciB+dXBcblxubGV0IGxvb2tfYXRfcG9zaXRpb24gY2FtIChwb3MgOiBHbG9iZS5NYXRoLlZlYzMudCkgPVxuICBsZXQgciA9IEdsb2JlLk1hdGguVmVjMy5sZW5ndGggcG9zIGluXG4gIGlmIHIgPiAxZS02IHRoZW4gYmVnaW5cbiAgICBjYW0ucGhpIDwtIGFzaW4gKHBvcy55IC8uIHIpO1xuICAgIGNhbS50aGV0YSA8LSBhdGFuMiBwb3MueCBwb3MuejtcbiAgICBjYW0uYXV0b19yb3RhdGUgPC0gZmFsc2VcbiAgZW5kXG5cbmxldCB1cGRhdGUgY2FtIF9kdCA9XG4gIGlmIGNhbS5hdXRvX3JvdGF0ZSAmJiBub3QgY2FtLmRyYWdnaW5nIHRoZW4gY2FtLnRoZXRhIDwtIGNhbS50aGV0YSArLiAwLjAwMlxuXG5sZXQgYXR0YWNoX2V2ZW50cyBjYW0gZWwgPVxuICBsZXQgX2wxID1cbiAgICBFdi5saXN0ZW4gRXYucG9pbnRlcmRvd25cbiAgICAgIChmdW4gZXYgLT5cbiAgICAgICAgbGV0IHBldiA9IEV2LmFzX3R5cGUgZXYgaW5cbiAgICAgICAgbGV0IG1ldiA9IEV2LlBvaW50ZXIuYXNfbW91c2UgcGV2IGluXG4gICAgICAgIGNhbS5kcmFnZ2luZyA8LSB0cnVlO1xuICAgICAgICBjYW0uYXV0b19yb3RhdGUgPC0gZmFsc2U7XG4gICAgICAgIGNhbS5sYXN0X3ggPC0gRXYuTW91c2UuY2xpZW50X3ggbWV2O1xuICAgICAgICBjYW0ubGFzdF95IDwtIEV2Lk1vdXNlLmNsaWVudF95IG1ldilcbiAgICAgIChFbC5hc190YXJnZXQgZWwpXG4gIGluXG4gIGxldCBfbDIgPVxuICAgIEV2Lmxpc3RlbiBFdi5wb2ludGVybW92ZVxuICAgICAgKGZ1biBldiAtPlxuICAgICAgICBpZiBjYW0uZHJhZ2dpbmcgdGhlbiBiZWdpblxuICAgICAgICAgIGxldCBwZXYgPSBFdi5hc190eXBlIGV2IGluXG4gICAgICAgICAgbGV0IG1ldiA9IEV2LlBvaW50ZXIuYXNfbW91c2UgcGV2IGluXG4gICAgICAgICAgbGV0IHggPSBFdi5Nb3VzZS5jbGllbnRfeCBtZXYgaW5cbiAgICAgICAgICBsZXQgeSA9IEV2Lk1vdXNlLmNsaWVudF95IG1ldiBpblxuICAgICAgICAgIGxldCBkeCA9IHggLS4gY2FtLmxhc3RfeCBpblxuICAgICAgICAgIGxldCBkeSA9IHkgLS4gY2FtLmxhc3RfeSBpblxuICAgICAgICAgIGNhbS50aGV0YSA8LSBjYW0udGhldGEgLS4gKGR4ICouIDAuMDA1KTtcbiAgICAgICAgICBjYW0ucGhpIDwtIGNhbS5waGkgKy4gKGR5ICouIDAuMDA1KTtcbiAgICAgICAgICBsZXQgbWF4X3BoaSA9IChGbG9hdC5waSAvLiAyLikgLS4gMC4wMSBpblxuICAgICAgICAgIGNhbS5waGkgPC0gRmxvYXQubWF4ICgtLm1heF9waGkpIChGbG9hdC5taW4gbWF4X3BoaSBjYW0ucGhpKTtcbiAgICAgICAgICBjYW0ubGFzdF94IDwtIHg7XG4gICAgICAgICAgY2FtLmxhc3RfeSA8LSB5XG4gICAgICAgIGVuZClcbiAgICAgIChFbC5hc190YXJnZXQgZWwpXG4gIGluXG4gIGxldCBfbDMgPVxuICAgIEV2Lmxpc3RlbiBFdi5wb2ludGVydXAgKGZ1biBfZXYgLT4gY2FtLmRyYWdnaW5nIDwtIGZhbHNlKSAoRWwuYXNfdGFyZ2V0IGVsKVxuICBpblxuICBsZXQgX2w0ID1cbiAgICBFdi5saXN0ZW4gRXYud2hlZWxcbiAgICAgIChmdW4gZXYgLT5cbiAgICAgICAgbGV0IHdldiA6IEV2LldoZWVsLnQgPSBFdi5hc190eXBlIGV2IGluXG4gICAgICAgIEV2LnByZXZlbnRfZGVmYXVsdCBldjtcbiAgICAgICAgbGV0IGR5ID0gRXYuV2hlZWwuZGVsdGFfeSB3ZXYgaW5cbiAgICAgICAgY2FtLmRpc3RhbmNlIDwtIGNhbS5kaXN0YW5jZSArLiAoZHkgKi4gMC4wMDIpO1xuICAgICAgICBjYW0uZGlzdGFuY2UgPC0gRmxvYXQubWF4IDEuNSAoRmxvYXQubWluIDEwLiBjYW0uZGlzdGFuY2UpKVxuICAgICAgKEVsLmFzX3RhcmdldCBlbClcbiAgaW5cbiAgKClcblxubGV0IHBwIHBwZiBjYW0gPVxuICBGbXQucGYgcHBmIFwidGhldGE9JS4zZiBwaGk9JS4zZiBkaXN0PSUuMmZcIiBjYW0udGhldGEgY2FtLnBoaSBjYW0uZGlzdGFuY2VcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDMiLCJhMSIsImEyIiwiY2FtbF9jYWxsNCIsImEzIiwiZ2xvYmFsX2RhdGEiLCJGbXQiLCJCcnIiLCJTdGRsaWJfRmxvYXQiLCJHbG9iZV9NYXRoIiwidiIsInBhcmFtIiwidmlld19tYXRyaXgiLCJjYW0iLCJ4IiwieSIsInoiLCJleWUiLCJjZW50ZXIiLCJ1cCIsImxvb2tfYXRfcG9zaXRpb24iLCJwb3MiLCJyIiwidXBkYXRlIiwiZHQiLCJhdHRhY2hfZXZlbnRzIiwiZWwiLCJldiIsImR4IiwiZHkiLCJtYXhfcGhpIiwicHAiLCJwcGYiXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBTCxHQUFBQyxJQUFBRSxJQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsTUFBQTtBQUFBLElBQUFDLE1BQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLFlBQUFDLEVBQUFDLE9Db0JFLHVDQVFDO0FBQUEsWUFBQUMsWUFBQUM7QUFBQUE7QUFBQUEsS0FBQUMsSUFJTyxTQUFnQixtQkFBZTtBQUFBLEtBQUFDLElBQy9CLFNBQWdCO0FBQUEsS0FBQUMsSUFDaEIsU0FBZ0IsbUJBQWU7QUFBQSxLQUFBQyxNQUM3QjtBQUFBLEtBQUFDLFNBQ1Y7QUFBQSxLQUFBQyxLQUNTO0FBQUEsSUFDVCxtREFBNkI7QUFBQTtBQUFBLFlBQUFDLGlCQUFBUCxLQUFBUTtBQUFBQTtBQUFBQSxLQUFBQyxJQUdyQjtBQUFBLFNBQ1I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQ2E7QUFBQSxtQkFDRTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBRmY7QUFBQSxHQUlHO0FBQUEsWUFBQUMsT0FBQVYsS0FBQVc7QUFBQUE7QUFBQUEsS0FBQSxJQUdIO0FBQUE7QUFBQTtBQUFBO0FBQUEsR0FBMkU7QUFBQSxZQUFBQyxjQUFBWixLQUFBYTtBQUFBQSxJQUl6RTtBQUFBO0FBQUE7QUFBQTtBQUFBLGVBQUFDO0FBQUFBLE9BSUk7QUFBQSxPQUNBO0FBQUEsT0FDYztBQUFBLE9BQ0E7QUFBQSxPQUFxQjtBQUFBO0FBQUE7QUFBQSxJQUl2QztBQUFBO0FBQUE7QUFBQTtBQUFBLGVBQUFBO0FBQUFBLFdBQUEsSUFFSTtBQUFBO0FBQUE7QUFBQSxTQUFBYixJQUdVO0FBQUEsU0FBQUMsSUFDQTtBQUFBLFNBQUFhLEtBQ0M7QUFBQSxTQUFBQyxLQUNBO0FBQUEsUUFDOEI7QUFBQSxRQUNKO0FBQUE7QUFBQSxTQUFBQyxVQUNyQjtBQUFBLGFBQ21CO0FBQUEsUUFBdEI7QUFBQSxRQUNYO0FBQUEsUUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGdCQVpGO0FBQUE7QUFBQSxNQWFHO0FBQUE7QUFBQSxJQUlQO0FBQUEsMkNBQUFILElBQW1DLHFCQUFxQjtBQUFBLElBR3hEO0FBQUE7QUFBQTtBQUFBO0FBQUEsZUFBQUE7QUFBQUEsT0FHSTtBQUFBLFdBQUFFLEtBQ1M7QUFBQSxPQUNvQztBQUFBLGVBQ2Y7QUFBQSxPQUFkO0FBQUEsT0FBMEM7QUFBQTtBQUFBO0FBQUEsSUFHaEU7QUFBQSxHQUFFO0FBQUE7QUFBQTtBQUFBLE1EL0ZKO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFFLEdBQUFDLEtBQUFuQjtBQUFBQSxRQUFBLElDa0dFO0FBQUEseURBQXlFO0FBQUE7QUFBQSxHRGxHM0UiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0MDQzMiwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiIuZ2xvYmVfd2ViZ2wub2Jqcy9qc29vL2RlZmF1bHQvZ2xvYmVfd2ViZ2wuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9vY2FtbC1nbG9iZS93ZWJnbC9jb3ZlcmFnZS5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBDb3B5cmlnaHQgKGMpIDIwMjUgVGhvbWFzIEdhemFnbmFpcmUuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbigqKiBTYXRlbGxpdGUgZ3JvdW5kIGNvdmVyYWdlIHJlbmRlcmluZy5cblxuICAgIERyYXdzIGZpbGxlZCBjaXJjbGVzIG9uIHRoZSBnbG9iZSB3aXRoIGFkZGl0aXZlIGJsZW5kaW5nIHNvIHRoZXkgYnJpZ2h0ZW5cbiAgICB3aGF0ZXZlciBpcyB1bmRlcm5lYXRoIChkb3RzLCBncmlkLCBldGMuKSDigJQgbGlrZSBhIHNwb3RsaWdodCBlZmZlY3QuIFVzZXNcbiAgICBwZXItdmVydGV4IHJhZGlhbCBmYWxsb2ZmOiBicmlnaHQgYXQgdGhlIHN1Yi1zYXRlbGxpdGUgcG9pbnQsIGZhZGluZyB0byB6ZXJvXG4gICAgYXQgdGhlIGZvb3RwcmludCBlZGdlLiAqKVxuXG5vcGVuIEJyclxub3BlbiBCcnJfY2FudmFzXG5cbmxldCB2ZXJ0ID1cbiAge3wjdmVyc2lvbiAzMDAgZXNcbnByZWNpc2lvbiBoaWdocCBmbG9hdDtcbmxheW91dChsb2NhdGlvbiA9IDApIGluIHZlYzMgYV9wb3NpdGlvbjtcbmxheW91dChsb2NhdGlvbiA9IDEpIGluIHZlYzMgYV9jb2xvcjtcbmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0IGFfZmFkZTtcbnVuaWZvcm0gbWF0NCB1X3Byb2plY3Rpb247XG51bmlmb3JtIG1hdDQgdV92aWV3O1xub3V0IHZlYzMgdl9jb2xvcjtcbm91dCBmbG9hdCB2X2ZhZGU7XG52b2lkIG1haW4oKSB7XG4gIGdsX1Bvc2l0aW9uID0gdV9wcm9qZWN0aW9uICogdV92aWV3ICogdmVjNChhX3Bvc2l0aW9uLCAxLjApO1xuICB2X2NvbG9yID0gYV9jb2xvcjtcbiAgdl9mYWRlID0gYV9mYWRlO1xufVxufH1cblxubGV0IGZyYWcgPVxuICB7fCN2ZXJzaW9uIDMwMCBlc1xucHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuaW4gdmVjMyB2X2NvbG9yO1xuaW4gZmxvYXQgdl9mYWRlO1xudW5pZm9ybSBmbG9hdCB1X2ludGVuc2l0eTtcbm91dCB2ZWM0IGZyYWdDb2xvcjtcbnZvaWQgbWFpbigpIHtcbiAgLy8gU21vb3RoIHJhZGlhbCBmYWxsb2ZmOiBicmlnaHQgY2VudGVyLCB6ZXJvIGF0IGVkZ2VcbiAgZmxvYXQgZ2xvdyA9IHZfZmFkZSAqIHZfZmFkZSAqIHVfaW50ZW5zaXR5O1xuICBmcmFnQ29sb3IgPSB2ZWM0KHZfY29sb3IgKiBnbG93LCBnbG93KTtcbn1cbnx9XG5cbnR5cGUgZm9vdHByaW50ID0ge1xuICBwb3MgOiBHbG9iZS5NYXRoLlZlYzMudDtcbiAgY29sb3IgOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQ7XG4gIGhhbGZfYW5nbGUgOiBmbG9hdDtcbn1cblxudHlwZSB0ID0ge1xuICBwcm9nIDogR2wucHJvZ3JhbTtcbiAgdmFvIDogR2wudmVydGV4X2FycmF5X29iamVjdDtcbiAgdmJvIDogR2wuYnVmZmVyO1xuICBtdXRhYmxlIG51bV92ZXJ0aWNlcyA6IGludDtcbiAgdV9wcm9qIDogR2wudW5pZm9ybV9sb2NhdGlvbjtcbiAgdV92aWV3IDogR2wudW5pZm9ybV9sb2NhdGlvbjtcbiAgdV9pbnRlbnNpdHkgOiBHbC51bmlmb3JtX2xvY2F0aW9uO1xufVxuXG5sZXQgdiBnbCA9XG4gIGxldCBwcm9nID0gU2hhZGVyLnByb2dyYW0gZ2wgfnZlcnQgfmZyYWcgaW5cbiAgbGV0IHZhbyA9IEdsLmNyZWF0ZV92ZXJ0ZXhfYXJyYXkgZ2wgaW5cbiAgbGV0IHZibyA9IEdsLmNyZWF0ZV9idWZmZXIgZ2wgaW5cbiAgR2wuYmluZF92ZXJ0ZXhfYXJyYXkgZ2wgKFNvbWUgdmFvKTtcbiAgR2wuYmluZF9idWZmZXIgZ2wgR2wuYXJyYXlfYnVmZmVyIChTb21lIHZibyk7XG4gICgqIHBvc2l0aW9uICgzKSArIGNvbG9yICgzKSArIGZhZGUgKDEpID0gNyBmbG9hdHMsIHN0cmlkZSAyOCAqKVxuICBHbC5lbmFibGVfdmVydGV4X2F0dHJpYl9hcnJheSBnbCAwO1xuICBHbC52ZXJ0ZXhfYXR0cmliX3BvaW50ZXIgZ2wgMCAzIEdsLmZsb2F0IGZhbHNlIDI4IDA7XG4gIEdsLmVuYWJsZV92ZXJ0ZXhfYXR0cmliX2FycmF5IGdsIDE7XG4gIEdsLnZlcnRleF9hdHRyaWJfcG9pbnRlciBnbCAxIDMgR2wuZmxvYXQgZmFsc2UgMjggMTI7XG4gIEdsLmVuYWJsZV92ZXJ0ZXhfYXR0cmliX2FycmF5IGdsIDI7XG4gIEdsLnZlcnRleF9hdHRyaWJfcG9pbnRlciBnbCAyIDEgR2wuZmxvYXQgZmFsc2UgMjggMjQ7XG4gIEdsLmJpbmRfdmVydGV4X2FycmF5IGdsIE5vbmU7XG4gIGxldCB1IG5hbWUgPSBHbC5nZXRfdW5pZm9ybV9sb2NhdGlvbiBnbCBwcm9nIChKc3RyLm9mX3N0cmluZyBuYW1lKSBpblxuICB7XG4gICAgcHJvZztcbiAgICB2YW87XG4gICAgdmJvO1xuICAgIG51bV92ZXJ0aWNlcyA9IDA7XG4gICAgdV9wcm9qID0gdSBcInVfcHJvamVjdGlvblwiO1xuICAgIHVfdmlldyA9IHUgXCJ1X3ZpZXdcIjtcbiAgICB1X2ludGVuc2l0eSA9IHUgXCJ1X2ludGVuc2l0eVwiO1xuICB9XG5cbmxldCBsb2FkIGdsIHQgKGZvb3RwcmludHMgOiBmb290cHJpbnQgbGlzdCkgPVxuICBpZiBmb290cHJpbnRzID0gW10gdGhlbiB0Lm51bV92ZXJ0aWNlcyA8LSAwXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgYWxsX3ZlcnRzID1cbiAgICAgIExpc3QuY29uY2F0X21hcFxuICAgICAgICAoZnVuIChmcCA6IGZvb3RwcmludCkgLT5cbiAgICAgICAgICBsZXQgY2VudGVyID0gR2xvYmUuTWF0aC5WZWMzLm5vcm1hbGl6ZSBmcC5wb3MgaW5cbiAgICAgICAgICBsZXQgciwgZywgYiA9IGZwLmNvbG9yIGluXG4gICAgICAgICAgbGV0IHRyaXMgPVxuICAgICAgICAgICAgR2xvYmUuR2VvbWV0cnkuZmlsbGVkX2NpcmNsZV9vbl9zcGhlcmUgY2VudGVyXG4gICAgICAgICAgICAgIH5oYWxmX2FuZ2xlOmZwLmhhbGZfYW5nbGUgfnNlZ21lbnRzOjQ4XG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiBFYWNoIHRyaWFuZ2xlOiAoY2VudGVyLCBlZGdlMCwgZWRnZTEpLlxuICAgICAgICAgICAgIGNlbnRlciBnZXRzIGZhZGU9MS4wLCBlZGdlcyBnZXQgZmFkZT0wLjAgKilcbiAgICAgICAgICBsZXQgcmVjIHRhZyA9IGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGMgOjogcDAgOjogcDEgOjogcmVzdCAtPlxuICAgICAgICAgICAgICAgIChjLCByLCBnLCBiLCAxLjApIDo6IChwMCwgciwgZywgYiwgMC4wKSA6OiAocDEsIHIsIGcsIGIsIDAuMClcbiAgICAgICAgICAgICAgICA6OiB0YWcgcmVzdFxuICAgICAgICAgICAgfCBfIC0+IFtdXG4gICAgICAgICAgaW5cbiAgICAgICAgICB0YWcgdHJpcylcbiAgICAgICAgZm9vdHByaW50c1xuICAgIGluXG4gICAgbGV0IG4gPSBMaXN0Lmxlbmd0aCBhbGxfdmVydHMgaW5cbiAgICBsZXQgZGF0YSA9IEFycmF5Lm1ha2UgKG4gKiA3KSAwLiBpblxuICAgIExpc3QuaXRlcmlcbiAgICAgIChmdW4gaSAoKHYgOiBHbG9iZS5NYXRoLlZlYzMudCksIHIsIGcsIGIsIGZhZGUpIC0+XG4gICAgICAgIGxldCBvZmYgPSBpICogNyBpblxuICAgICAgICBkYXRhLihvZmYpIDwtIHYueDtcbiAgICAgICAgZGF0YS4ob2ZmICsgMSkgPC0gdi55O1xuICAgICAgICBkYXRhLihvZmYgKyAyKSA8LSB2Lno7XG4gICAgICAgIGRhdGEuKG9mZiArIDMpIDwtIHI7XG4gICAgICAgIGRhdGEuKG9mZiArIDQpIDwtIGc7XG4gICAgICAgIGRhdGEuKG9mZiArIDUpIDwtIGI7XG4gICAgICAgIGRhdGEuKG9mZiArIDYpIDwtIGZhZGUpXG4gICAgICBhbGxfdmVydHM7XG4gICAgbGV0IGJ1ZiA9IFRhcnJheS5vZl9mbG9hdF9hcnJheSBUYXJyYXkuRmxvYXQzMiBkYXRhIGluXG4gICAgR2wuYmluZF9idWZmZXIgZ2wgR2wuYXJyYXlfYnVmZmVyIChTb21lIHQudmJvKTtcbiAgICBHbC5idWZmZXJfZGF0YSBnbCBHbC5hcnJheV9idWZmZXIgYnVmIEdsLmR5bmFtaWNfZHJhdztcbiAgICB0Lm51bV92ZXJ0aWNlcyA8LSBuXG4gIGVuZFxuXG5sZXQgZHJhdyBnbCB0IH5wcm9qZWN0aW9uIH52aWV3ID8oaW50ZW5zaXR5ID0gMC40KSAoKSA9XG4gIGlmIHQubnVtX3ZlcnRpY2VzID4gMCB0aGVuIGJlZ2luXG4gICAgKCogQWRkaXRpdmUgYmxlbmRpbmc6IGJyaWdodGVucyB1bmRlcmx5aW5nIGNvbnRlbnQgKilcbiAgICBHbC5ibGVuZF9mdW5jIGdsIEdsLnNyY19hbHBoYSBHbC5vbmU7XG4gICAgR2wuZGlzYWJsZSBnbCBHbC5kZXB0aF90ZXN0O1xuICAgIEdsLnVzZV9wcm9ncmFtIGdsIHQucHJvZztcbiAgICBHbC51bmlmb3JtX21hdHJpeDRmdiBnbCB0LnVfcHJvaiBmYWxzZVxuICAgICAgKFRhcnJheS5vZl9mbG9hdF9hcnJheSBUYXJyYXkuRmxvYXQzMiBwcm9qZWN0aW9uKTtcbiAgICBHbC51bmlmb3JtX21hdHJpeDRmdiBnbCB0LnVfdmlldyBmYWxzZVxuICAgICAgKFRhcnJheS5vZl9mbG9hdF9hcnJheSBUYXJyYXkuRmxvYXQzMiB2aWV3KTtcbiAgICBHbC51bmlmb3JtMWYgZ2wgdC51X2ludGVuc2l0eSBpbnRlbnNpdHk7XG4gICAgR2wuYmluZF92ZXJ0ZXhfYXJyYXkgZ2wgKFNvbWUgdC52YW8pO1xuICAgIEdsLmRyYXdfYXJyYXlzIGdsIEdsLnRyaWFuZ2xlcyAwIHQubnVtX3ZlcnRpY2VzO1xuICAgIEdsLmJpbmRfdmVydGV4X2FycmF5IGdsIE5vbmU7XG4gICAgKCogUmVzdG9yZSBub3JtYWwgYmxlbmRpbmcgKilcbiAgICBHbC5lbmFibGUgZ2wgR2wuZGVwdGhfdGVzdDtcbiAgICBHbC5ibGVuZF9mdW5jIGdsIEdsLnNyY19hbHBoYSBHbC5vbmVfbWludXNfc3JjX2FscGhhXG4gIGVuZFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NoZWNrX2JvdW5kIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImNhbWxfY2FsbDMiLCJhMiIsImNhbWxfY2FsbDQiLCJhMyIsImNhbWxfY2FsbDciLCJhNCIsImE1IiwiYTYiLCJnbG9iYWxfZGF0YSIsIkJycl9jYW52YXMiLCJCcnIiLCJHbG9iZV9NYXRoIiwiR2xvYmVfR2VvbWV0cnkiLCJTdGRsaWJfTGlzdCIsIkdsb2JlX3dlYmdsX1NoYWRlciIsInYiLCJnbCIsInByb2ciLCJ2YW8iLCJ2Ym8iLCJ1IiwibmFtZSIsImxvYWQiLCJ0IiwiZm9vdHByaW50cyIsImFsbF92ZXJ0cyIsImZwIiwiY2VudGVyIiwibWF0Y2giLCJiIiwiZyIsInIiLCJ0cmlzIiwidGFnIiwicGFyYW0iLCJyZXN0IiwicDEiLCJwMCIsImMiLCJuIiwiZGF0YSIsImkiLCJmYWRlIiwib2ZmIiwiYnVmIiwiZHJhdyIsInByb2plY3Rpb24iLCJ2aWV3Iiwib3B0IiwiaW50ZW5zaXR5Il0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQU4sR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFSLEdBQUFDLElBQUFFLElBQUFFLElBQUFFLElBQUFFLElBQUFDLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsTUFBQTtBQUFBLElBQUFDLGFBQUE7QUFBQSxJQUFBQyxpQkFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxxQkFBQTtBQUFBLFlBQUFDLEVBQUFDO0FBQUFBO0FBQUFBLEtBQUFDO0FBQUFBLE9DK0RhO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxLQUFBQyxNQUNEO0FBQUEsS0FBQUMsTUFDQTtBQUFBLElBQ1Y7QUFBQSxJQUNBO0FBQUEsSUFFQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLGFBQUFDLEVBQUFDO0FBQUFBLEtBQzZDLE9BQXFCO0FBQUE7QUFBQTtBQUFBO0FBQUEsY0FBckIsc0NBQXFCO0FBQUE7QUFBQSxZQVFsRCxzQkFETDtBQUFBLElBREEsc0RBQWdCO0FBQUEsR0FHMUI7QUFBQSxZQUFBQyxLQUFBTixJQUFBTyxHQUFBQztBQUFBQSxJQUdELHFCQUF3QjtBQUFBO0FBQUEsS0FBQUM7QUFBQUEsT0FHcEI7QUFBQTtBQUFBLGtCQUFBQztBQUFBQTtBQUFBQSxXQUFBQyxTQUVpQjtBQUFBLFdBQUFDLFFBQ2I7QUFBQSxXQUFBQyxJQUFBO0FBQUEsV0FBQUMsSUFBQTtBQUFBLFdBQUFDLElBQUE7QUFBQSxXQUFBQyxPQUVFO0FBQUEsbUJBQUFDLElBQUFDO0FBQUFBLFdBS1k7QUFBQTtBQUFBO0FBQUEsaUJBQUFOLFFBQUE7QUFBQTtBQUFBLGtCQUFBTyxPQUFBLFVBQUFDLEtBQUEsVUFBQUMsS0FBQSxNQUFBQyxJQUFBO0FBQUEsY0FHTDtBQUFBO0FBQUE7QUFBQTtBQUFBLDZEQUFRO0FBQUE7QUFBQTtBQUFBO0FBQUEsV0FDUjtBQUFBLFVBQUU7QUFBQSxVQUVYLGdCQUFRO0FBQUE7QUFBQTtBQUFBLEtBQUFDLElBR047QUFBQSxLQUFBQyxPQUNHO0FBQUEsSUFDWDtBQUFBO0FBQUEsZUFBQUMsR0FBQVA7QUFBQUE7QUFBQUEsUUFBQVEsT0FDRTtBQUFBLFFBQUFiLElBQUE7QUFBQSxRQUFBQyxJQUFBO0FBQUEsUUFBQUMsSUFBQTtBQUFBLFFBQUFoQixJQUFBO0FBQUEsUUFBQTRCLE1BQ0U7QUFBQSxZQUNBO0FBQUE7QUFBQSxlQUFpQixpQkFDakI7QUFBQTtBQUFBLGVBQXFCLGlCQUNyQjtBQUFBO0FBQUEsZUFBcUI7QUFBQSxPQUNyQjtBQUFBLGVBQW1CO0FBQUEsT0FDbkI7QUFBQSxlQUFtQjtBQUFBLE9BQ25CO0FBQUEsZUFBbUI7QUFBQSxPQUNuQjtBQUFBLE9BQXNCO0FBQUEsTUFBQztBQUFBO0FBQUEsUUFBQUMsTUFFakI7QUFBQSxJQUNWO0FBQUEsSUFDQTtBQUFBO0FBQUEsSUFBcUQ7QUFBQTtBQUFBLEdBRXBEO0FBQUEsWUFBQUMsS0FBQTdCLElBQUFPLEdBQUF1QixZQUFBQyxNQUFBQyxLQUFBZDtBQUFBQSxRQUFBZSxZQUVJLHdCQUNQO0FBQUE7QUFBQSxJQUVFO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxZQUVFO0FBQUEsSUFERjtBQUFBLFlBR0U7QUFBQSxJQURGO0FBQUEsSUFFQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBRUE7QUFBQSxJQUEwQjtBQUFBLDJFQUV6QjtBQUFBO0FBQUEsR0RsSkwiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0MDU5NiwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiIuZ2xvYmVfd2ViZ2wub2Jqcy9qc29vL2RlZmF1bHQvZ2xvYmVfd2ViZ2wuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9vY2FtbC1nbG9iZS93ZWJnbC9lYXJ0aC5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBDb3B5cmlnaHQgKGMpIDIwMjUgVGhvbWFzIEdhemFnbmFpcmUuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbigqKiBEb3QgY2xvdWQgRWFydGggcmVuZGVyaW5nIHVzaW5nIEdMX1BPSU5UUy4gKilcblxub3BlbiBCcnJcbm9wZW4gQnJyX2NhbnZhc1xuXG50eXBlIHQgPSB7XG4gIHByb2cgOiBHbC5wcm9ncmFtO1xuICB2YW8gOiBHbC52ZXJ0ZXhfYXJyYXlfb2JqZWN0O1xuICBudW1fcG9pbnRzIDogaW50O1xuICB1X3Byb2plY3Rpb24gOiBHbC51bmlmb3JtX2xvY2F0aW9uO1xuICB1X3ZpZXcgOiBHbC51bmlmb3JtX2xvY2F0aW9uO1xuICB1X3BvaW50X3NpemUgOiBHbC51bmlmb3JtX2xvY2F0aW9uO1xuICB1X2RpbSA6IEdsLnVuaWZvcm1fbG9jYXRpb247XG59XG5cbmxldCB2ID8obnVtX3BvaW50cyA9IDMwMDAwKSBnbCA9XG4gIGxldCBwb2ludHMgPSBHbG9iZS5TcGhlcmUuZ2VuZXJhdGVfY2xvdWQgfm51bV9wb2ludHMgaW5cbiAgbGV0IG4gPSBBcnJheS5sZW5ndGggcG9pbnRzIGluXG4gIGxldCBkYXRhID0gQXJyYXkubWFrZSAobiAqIDQpIDAuIGluXG4gIEFycmF5Lml0ZXJpXG4gICAgKGZ1biBpIChwIDogR2xvYmUuU3BoZXJlLnBvaW50KSAtPlxuICAgICAgbGV0IG9mZiA9IGkgKiA0IGluXG4gICAgICBkYXRhLihvZmYpIDwtIHAucG9zLng7XG4gICAgICBkYXRhLihvZmYgKyAxKSA8LSBwLnBvcy55O1xuICAgICAgZGF0YS4ob2ZmICsgMikgPC0gcC5wb3MuejtcbiAgICAgIGRhdGEuKG9mZiArIDMpIDwtIHAuYnJpZ2h0bmVzcylcbiAgICBwb2ludHM7XG4gIGxldCBidWZfZGF0YSA9IFRhcnJheS5vZl9mbG9hdF9hcnJheSBUYXJyYXkuRmxvYXQzMiBkYXRhIGluXG4gIGxldCBwcm9nID1cbiAgICBTaGFkZXIucHJvZ3JhbSBnbCB+dmVydDpTaGFkZXIuZWFydGhfdmVydGV4IH5mcmFnOlNoYWRlci5lYXJ0aF9mcmFnbWVudFxuICBpblxuICBsZXQgdmFvID0gR2wuY3JlYXRlX3ZlcnRleF9hcnJheSBnbCBpblxuICBHbC5iaW5kX3ZlcnRleF9hcnJheSBnbCAoU29tZSB2YW8pO1xuICBsZXQgdmJvID0gR2wuY3JlYXRlX2J1ZmZlciBnbCBpblxuICBHbC5iaW5kX2J1ZmZlciBnbCBHbC5hcnJheV9idWZmZXIgKFNvbWUgdmJvKTtcbiAgR2wuYnVmZmVyX2RhdGEgZ2wgR2wuYXJyYXlfYnVmZmVyIGJ1Zl9kYXRhIEdsLnN0YXRpY19kcmF3O1xuICBHbC5lbmFibGVfdmVydGV4X2F0dHJpYl9hcnJheSBnbCAwO1xuICBHbC52ZXJ0ZXhfYXR0cmliX3BvaW50ZXIgZ2wgMCAzIEdsLmZsb2F0IGZhbHNlIDE2IDA7XG4gIEdsLmVuYWJsZV92ZXJ0ZXhfYXR0cmliX2FycmF5IGdsIDE7XG4gIEdsLnZlcnRleF9hdHRyaWJfcG9pbnRlciBnbCAxIDEgR2wuZmxvYXQgZmFsc2UgMTYgMTI7XG4gIEdsLmJpbmRfdmVydGV4X2FycmF5IGdsIE5vbmU7XG4gIGxldCB1IG5hbWUgPSBHbC5nZXRfdW5pZm9ybV9sb2NhdGlvbiBnbCBwcm9nIChKc3RyLm9mX3N0cmluZyBuYW1lKSBpblxuICB7XG4gICAgcHJvZztcbiAgICB2YW87XG4gICAgbnVtX3BvaW50cyA9IG47XG4gICAgdV9wcm9qZWN0aW9uID0gdSBcInVfcHJvamVjdGlvblwiO1xuICAgIHVfdmlldyA9IHUgXCJ1X3ZpZXdcIjtcbiAgICB1X3BvaW50X3NpemUgPSB1IFwidV9wb2ludF9zaXplXCI7XG4gICAgdV9kaW0gPSB1IFwidV9kaW1cIjtcbiAgfVxuXG5sZXQgZHJhdyBnbCB0IH5wcm9qZWN0aW9uIH52aWV3ID8oZGltID0gMS4wKSAoKSA9XG4gIEdsLnVzZV9wcm9ncmFtIGdsIHQucHJvZztcbiAgR2wudW5pZm9ybV9tYXRyaXg0ZnYgZ2wgdC51X3Byb2plY3Rpb24gZmFsc2VcbiAgICAoVGFycmF5Lm9mX2Zsb2F0X2FycmF5IFRhcnJheS5GbG9hdDMyIHByb2plY3Rpb24pO1xuICBHbC51bmlmb3JtX21hdHJpeDRmdiBnbCB0LnVfdmlldyBmYWxzZVxuICAgIChUYXJyYXkub2ZfZmxvYXRfYXJyYXkgVGFycmF5LkZsb2F0MzIgdmlldyk7XG4gIEdsLnVuaWZvcm0xZiBnbCB0LnVfcG9pbnRfc2l6ZSAzLjU7XG4gIEdsLnVuaWZvcm0xZiBnbCB0LnVfZGltIGRpbTtcbiAgR2wuYmluZF92ZXJ0ZXhfYXJyYXkgZ2wgKFNvbWUgdC52YW8pO1xuICBHbC5kcmF3X2FycmF5cyBnbCBHbC5wb2ludHMgMCB0Lm51bV9wb2ludHM7XG4gIEdsLmJpbmRfdmVydGV4X2FycmF5IGdsIE5vbmVcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jaGVja19ib3VuZCIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJjYW1sX2NhbGwzIiwiYTIiLCJjYW1sX2NhbGw0IiwiYTMiLCJjYW1sX2NhbGw3IiwiYTQiLCJhNSIsImE2IiwiZ2xvYmFsX2RhdGEiLCJCcnJfY2FudmFzIiwiQnJyIiwiR2xvYmVfU3BoZXJlIiwiU3RkbGliX0FycmF5IiwiR2xvYmVfd2ViZ2xfU2hhZGVyIiwidiIsIm9wdCIsImdsIiwibnVtX3BvaW50cyIsInBvaW50cyIsIm4iLCJkYXRhIiwiaSIsInAiLCJvZmYiLCJidWZfZGF0YSIsInByb2ciLCJ2YW8iLCJ2Ym8iLCJ1IiwibmFtZSIsImRyYXciLCJ0IiwicHJvamVjdGlvbiIsInZpZXciLCJwYXJhbSIsImRpbSJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUosR0FBQUMsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFOLEdBQUFDLElBQUFFLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBUixHQUFBQyxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBQyxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLE1BQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLElBQUFDLHFCQUFBO0FBQUEsWUFBQUMsRUFBQUMsS0FBQUM7QUFBQUE7QUFBQUEsS0FBQUMsYUNvQk07QUFBQSxLQUFBQyxTQUNTO0FBQUEsS0FBQUMsSUFDYjtBQUFBLEtBQUFDLE9BQ1c7QUFBQSxJQUNYO0FBQUE7QUFBQSxlQUFBQyxHQUFBQztBQUFBQSxXQUFBQyxNQUVJLGVBQ0E7QUFBQTtBQUFBLGVBQXFCLGlCQUNyQjtBQUFBO0FBQUEsZUFBeUIsaUJBQ3pCO0FBQUE7QUFBQSxlQUF5QixpQkFDekI7QUFBQTtBQUFBLE9BQThCO0FBQUE7QUFBQTtBQUFBO0FBQUEsS0FBQUMsV0FFbkI7QUFBQSxLQUFBQztBQUFBQSxPQUViO0FBQUE7QUFBQSxLQUFBQyxNQUVRO0FBQUEsSUFDVjtBQUFBLFFBQUFDLE1BQ1U7QUFBQSxJQUNWO0FBQUEsSUFDQTtBQUFBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxhQUFBQyxFQUFBQztBQUFBQSxLQUM2QyxPQUFxQjtBQUFBO0FBQUE7QUFBQTtBQUFBLGNBQXJCLHNDQUFxQjtBQUFBO0FBQUEsWUFReEQsZ0JBRE8sdUJBRE47QUFBQSxJQURNLG9EQUFnQjtBQUFBLEdBSWhDO0FBQUEsWUFBQUMsS0FBQWQsSUFBQWUsR0FBQUMsWUFBQUMsTUFBQWxCLEtBQUFtQjtBQUFBQSxRQUFBQyxNQUVNO0FBQUEsSUFDUDtBQUFBLFlBRUU7QUFBQSxJQURGO0FBQUEsWUFHRTtBQUFBLElBREY7QUFBQSxJQUVBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFBMEMsMkNBQ2Q7QUFBQTtBQUFBLEdEbkU5QiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQwNzAwLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6Ii5nbG9iZV93ZWJnbC5vYmpzL2pzb28vZGVmYXVsdC9nbG9iZV93ZWJnbC5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL3dvcmtzcGFjZV9yb290L29jYW1sLWdsb2JlL3dlYmdsL2dyaWQubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgQ29weXJpZ2h0IChjKSAyMDI1IFRob21hcyBHYXphZ25haXJlLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG4oKiogTGF0aXR1ZGUvbG9uZ2l0dWRlIGdyaWQgb3ZlcmxheSBvbiB0aGUgZ2xvYmUuXG5cbiAgICBVc2VzIHshR2xvYmUuR2VvbWV0cnkuZ3JpZF9saW5lc30gZm9yIHZlcnRleCBnZW5lcmF0aW9uLiAqKVxuXG5vcGVuIEJyclxub3BlbiBCcnJfY2FudmFzXG5cbmxldCB2ZXJ0ID1cbiAge3wjdmVyc2lvbiAzMDAgZXNcbnByZWNpc2lvbiBoaWdocCBmbG9hdDtcbmxheW91dChsb2NhdGlvbiA9IDApIGluIHZlYzMgYV9wb3NpdGlvbjtcbnVuaWZvcm0gbWF0NCB1X3Byb2plY3Rpb247XG51bmlmb3JtIG1hdDQgdV92aWV3O1xudm9pZCBtYWluKCkgeyBnbF9Qb3NpdGlvbiA9IHVfcHJvamVjdGlvbiAqIHVfdmlldyAqIHZlYzQoYV9wb3NpdGlvbiwgMS4wKTsgfVxufH1cblxubGV0IGZyYWcgPVxuICB7fCN2ZXJzaW9uIDMwMCBlc1xucHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xudW5pZm9ybSB2ZWMzIHVfY29sb3I7XG51bmlmb3JtIGZsb2F0IHVfYWxwaGE7XG5vdXQgdmVjNCBmcmFnQ29sb3I7XG52b2lkIG1haW4oKSB7IGZyYWdDb2xvciA9IHZlYzQodV9jb2xvciwgdV9hbHBoYSk7IH1cbnx9XG5cbnR5cGUgdCA9IHtcbiAgcHJvZyA6IEdsLnByb2dyYW07XG4gIHZhbyA6IEdsLnZlcnRleF9hcnJheV9vYmplY3Q7XG4gIG51bV92ZXJ0aWNlcyA6IGludDtcbiAgdV9wcm9qIDogR2wudW5pZm9ybV9sb2NhdGlvbjtcbiAgdV92aWV3IDogR2wudW5pZm9ybV9sb2NhdGlvbjtcbiAgdV9jb2xvciA6IEdsLnVuaWZvcm1fbG9jYXRpb247XG4gIHVfYWxwaGEgOiBHbC51bmlmb3JtX2xvY2F0aW9uO1xufVxuXG5sZXQgdiA/KHNwYWNpbmcgPSAzMC4pIGdsID1cbiAgbGV0IHZlcnRzID0gR2xvYmUuR2VvbWV0cnkuZ3JpZF9saW5lcyB+c3BhY2luZyAoKSBpblxuICBsZXQgbiA9IExpc3QubGVuZ3RoIHZlcnRzIGluXG4gIGxldCBkYXRhID0gQXJyYXkubWFrZSAobiAqIDMpIDAuIGluXG4gIExpc3QuaXRlcmlcbiAgICAoZnVuIGkgKHYgOiBHbG9iZS5NYXRoLlZlYzMudCkgLT5cbiAgICAgIGRhdGEuKGkgKiAzKSA8LSB2Lng7XG4gICAgICBkYXRhLigoaSAqIDMpICsgMSkgPC0gdi55O1xuICAgICAgZGF0YS4oKGkgKiAzKSArIDIpIDwtIHYueilcbiAgICB2ZXJ0cztcbiAgbGV0IGJ1ZiA9IFRhcnJheS5vZl9mbG9hdF9hcnJheSBUYXJyYXkuRmxvYXQzMiBkYXRhIGluXG4gIGxldCBwcm9nID0gU2hhZGVyLnByb2dyYW0gZ2wgfnZlcnQgfmZyYWcgaW5cbiAgbGV0IHZhbyA9IEdsLmNyZWF0ZV92ZXJ0ZXhfYXJyYXkgZ2wgaW5cbiAgR2wuYmluZF92ZXJ0ZXhfYXJyYXkgZ2wgKFNvbWUgdmFvKTtcbiAgbGV0IHZibyA9IEdsLmNyZWF0ZV9idWZmZXIgZ2wgaW5cbiAgR2wuYmluZF9idWZmZXIgZ2wgR2wuYXJyYXlfYnVmZmVyIChTb21lIHZibyk7XG4gIEdsLmJ1ZmZlcl9kYXRhIGdsIEdsLmFycmF5X2J1ZmZlciBidWYgR2wuc3RhdGljX2RyYXc7XG4gIEdsLmVuYWJsZV92ZXJ0ZXhfYXR0cmliX2FycmF5IGdsIDA7XG4gIEdsLnZlcnRleF9hdHRyaWJfcG9pbnRlciBnbCAwIDMgR2wuZmxvYXQgZmFsc2UgMCAwO1xuICBHbC5iaW5kX3ZlcnRleF9hcnJheSBnbCBOb25lO1xuICBsZXQgdSBuYW1lID0gR2wuZ2V0X3VuaWZvcm1fbG9jYXRpb24gZ2wgcHJvZyAoSnN0ci5vZl9zdHJpbmcgbmFtZSkgaW5cbiAge1xuICAgIHByb2c7XG4gICAgdmFvO1xuICAgIG51bV92ZXJ0aWNlcyA9IG47XG4gICAgdV9wcm9qID0gdSBcInVfcHJvamVjdGlvblwiO1xuICAgIHVfdmlldyA9IHUgXCJ1X3ZpZXdcIjtcbiAgICB1X2NvbG9yID0gdSBcInVfY29sb3JcIjtcbiAgICB1X2FscGhhID0gdSBcInVfYWxwaGFcIjtcbiAgfVxuXG5sZXQgZHJhdyBnbCB0IH5wcm9qZWN0aW9uIH52aWV3ID8oY29sb3IgPSAoMC4xNSwgMC4zNSwgMC41KSkgPyhhbHBoYSA9IDAuMykgKCkgPVxuICBHbC51c2VfcHJvZ3JhbSBnbCB0LnByb2c7XG4gIEdsLnVuaWZvcm1fbWF0cml4NGZ2IGdsIHQudV9wcm9qIGZhbHNlXG4gICAgKFRhcnJheS5vZl9mbG9hdF9hcnJheSBUYXJyYXkuRmxvYXQzMiBwcm9qZWN0aW9uKTtcbiAgR2wudW5pZm9ybV9tYXRyaXg0ZnYgZ2wgdC51X3ZpZXcgZmFsc2VcbiAgICAoVGFycmF5Lm9mX2Zsb2F0X2FycmF5IFRhcnJheS5GbG9hdDMyIHZpZXcpO1xuICBsZXQgciwgZywgYiA9IGNvbG9yIGluXG4gIEdsLnVuaWZvcm0zZiBnbCB0LnVfY29sb3IgciBnIGI7XG4gIEdsLnVuaWZvcm0xZiBnbCB0LnVfYWxwaGEgYWxwaGE7XG4gIEdsLmJpbmRfdmVydGV4X2FycmF5IGdsIChTb21lIHQudmFvKTtcbiAgR2wuZHJhd19hcnJheXMgZ2wgR2wubGluZXMgMCB0Lm51bV92ZXJ0aWNlcztcbiAgR2wuYmluZF92ZXJ0ZXhfYXJyYXkgZ2wgTm9uZVxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NoZWNrX2JvdW5kIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImNhbWxfY2FsbDMiLCJhMiIsImNhbWxfY2FsbDQiLCJhMyIsImNhbWxfY2FsbDUiLCJhNCIsImNhbWxfY2FsbDciLCJhNSIsImE2IiwiZ2xvYmFsX2RhdGEiLCJCcnJfY2FudmFzIiwiQnJyIiwiR2xvYmVfR2VvbWV0cnkiLCJTdGRsaWJfTGlzdCIsIkdsb2JlX3dlYmdsX1NoYWRlciIsInYiLCJvcHQiLCJnbCIsInNwYWNpbmciLCJ2ZXJ0cyIsIm4iLCJkYXRhIiwiaSIsImJ1ZiIsInByb2ciLCJ2YW8iLCJ2Ym8iLCJ1IiwibmFtZSIsImRyYXciLCJ0IiwicHJvamVjdGlvbiIsInZpZXciLCJwYXJhbSIsImNvbG9yIiwiYWxwaGEiLCJiIiwiZyIsInIiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFKLEdBQUFDLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBTixHQUFBQyxJQUFBRSxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQVIsR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFWLEdBQUFDLElBQUFFLElBQUFFLElBQUFFLElBQUFFLElBQUFFLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsTUFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLHFCQUFBO0FBQUEsWUFBQUMsRUFBQUMsS0FBQUM7QUFBQUE7QUFBQUEsS0FBQUMsVUN3Q007QUFBQSxLQUFBQyxRQUNRO0FBQUEsS0FBQUMsSUFDSjtBQUFBLEtBQUFDLE9BQ0c7QUFBQSxJQUNYO0FBQUE7QUFBQSxlQUFBQyxHQUFBUDtBQUFBQSxXQUFBLElBRUk7QUFBQTtBQUFBLGVBQW1CLHlCQUNuQjtBQUFBO0FBQUEsZUFBeUIseUJBQ3pCO0FBQUE7QUFBQSxPQUF5QjtBQUFBO0FBQUE7QUFBQTtBQUFBLEtBQUFRLE1BRW5CO0FBQUEsS0FBQUM7QUFBQUEsT0FDQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsS0FBQUMsTUFDRDtBQUFBLElBQ1Y7QUFBQSxRQUFBQyxNQUNVO0FBQUEsSUFDVjtBQUFBLElBQ0E7QUFBQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLGFBQUFDLEVBQUFDO0FBQUFBLEtBQzZDLE9BQXFCO0FBQUE7QUFBQTtBQUFBO0FBQUEsY0FBckIsc0NBQXFCO0FBQUE7QUFBQSxZQVF0RCxrQkFEQSxrQkFERDtBQUFBLElBREEsb0RBQWdCO0FBQUEsR0FJMUI7QUFBQSxXRHJFSDtBQUFBLFlBQUFDLEtBQUFaLElBQUFhLEdBQUFDLFlBQUFDLE1BQUEsR0FBQWhCLEtBQUFpQjtBQUFBQSxRQUFBQyxRQ3VFUyxjQUFBQyxRQUFBO0FBQUEsSUFDUDtBQUFBLFlBRUU7QUFBQSxJQURGO0FBQUEsWUFHRTtBQUFBLElBREY7QUFBQSxRQUFBQyxJQUM2QyxVQUFBQyxJQUFBLFVBQUFDLElBQUE7QUFBQSxJQUU3QztBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQTJDLDJDQUNmO0FBQUE7QUFBQSxHRGxGOUIiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0MDgxMCwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiIuZ2xvYmVfd2ViZ2wub2Jqcy9qc29vL2RlZmF1bHQvZ2xvYmVfd2ViZ2wuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9vY2FtbC1nbG9iZS93ZWJnbC9vcmJpdC5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBDb3B5cmlnaHQgKGMpIDIwMjUgVGhvbWFzIEdhemFnbmFpcmUuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbigqKiBPcmJpdCB0cmFpbCBhbmQgc2F0ZWxsaXRlIGRvdCByZW5kZXJpbmcuXG5cbiAgICBPcmJpdCBwYXRocyBhcmUgcmVuZGVyZWQgYXMgR0xfTElORV9TVFJJUCB3aXRoIHBlci12ZXJ0ZXggYWxwaGE6IGJyaWdodCBhdFxuICAgIHRoZSBzYXRlbGxpdGUncyBjdXJyZW50IHBvc2l0aW9uLCBmYWRpbmcgdG8gdHJhbnNwYXJlbnQgaW4gdGhlIHBhc3QuIEEgc21hbGxcbiAgICBwcmVkaWN0aW9uIGRvdCBzaG93cyB3aGVyZSB0aGUgc2F0ZWxsaXRlIGlzIGhlYWRpbmcuICopXG5cbm9wZW4gQnJyXG5vcGVuIEJycl9jYW52YXNcblxuKCogLS0tIFNoYWRlcnMgLS0tICopXG5cbigqKiBUcmFpbCBsaW5lOiBwZXItdmVydGV4IHByb2dyZXNzIFswPXRhaWwsIDE9aGVhZF0gY29udHJvbHMgYWxwaGEuICopXG5sZXQgdHJhaWxfdmVydGV4ID1cbiAge3wjdmVyc2lvbiAzMDAgZXNcbnByZWNpc2lvbiBoaWdocCBmbG9hdDtcbmxheW91dChsb2NhdGlvbiA9IDApIGluIHZlYzMgYV9wb3NpdGlvbjtcbmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0IGFfcHJvZ3Jlc3M7XG51bmlmb3JtIG1hdDQgdV9wcm9qZWN0aW9uO1xudW5pZm9ybSBtYXQ0IHVfdmlldztcbm91dCBmbG9hdCB2X3Byb2dyZXNzO1xudm9pZCBtYWluKCkge1xuICBnbF9Qb3NpdGlvbiA9IHVfcHJvamVjdGlvbiAqIHVfdmlldyAqIHZlYzQoYV9wb3NpdGlvbiwgMS4wKTtcbiAgdl9wcm9ncmVzcyA9IGFfcHJvZ3Jlc3M7XG59XG58fVxuXG5sZXQgdHJhaWxfZnJhZ21lbnQgPVxuICB7fCN2ZXJzaW9uIDMwMCBlc1xucHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xudW5pZm9ybSB2ZWMzIHVfY29sb3I7XG5pbiBmbG9hdCB2X3Byb2dyZXNzO1xub3V0IHZlYzQgZnJhZ0NvbG9yO1xudm9pZCBtYWluKCkge1xuICAvLyBGYWRlOiBicmlnaHQgYXQgaGVhZCAocHJvZ3Jlc3M9MSksIHRyYW5zcGFyZW50IGF0IHRhaWwgKHByb2dyZXNzPTApXG4gIGZsb2F0IGFscGhhID0gdl9wcm9ncmVzcyAqIHZfcHJvZ3Jlc3MgKiAwLjk7XG4gIGZyYWdDb2xvciA9IHZlYzQodV9jb2xvciwgYWxwaGEpO1xufVxufH1cblxuKCoqIFNhdGVsbGl0ZS9wcmVkaWN0aW9uIGRvdCB3aXRoIHJhZGlhbCBnbG93LiAqKVxubGV0IGRvdF92ZXJ0ZXggPVxuICB7fCN2ZXJzaW9uIDMwMCBlc1xucHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xubGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gdmVjMyBhX3Bvc2l0aW9uO1xudW5pZm9ybSBtYXQ0IHVfcHJvamVjdGlvbjtcbnVuaWZvcm0gbWF0NCB1X3ZpZXc7XG51bmlmb3JtIGZsb2F0IHVfcG9pbnRfc2l6ZTtcbnZvaWQgbWFpbigpIHtcbiAgZ2xfUG9zaXRpb24gPSB1X3Byb2plY3Rpb24gKiB1X3ZpZXcgKiB2ZWM0KGFfcG9zaXRpb24sIDEuMCk7XG4gIGdsX1BvaW50U2l6ZSA9IHVfcG9pbnRfc2l6ZTtcbn1cbnx9XG5cbmxldCBkb3RfZnJhZ21lbnQgPVxuICB7fCN2ZXJzaW9uIDMwMCBlc1xucHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xudW5pZm9ybSB2ZWMzIHVfY29sb3I7XG51bmlmb3JtIGZsb2F0IHVfYWxwaGE7XG5vdXQgdmVjNCBmcmFnQ29sb3I7XG52b2lkIG1haW4oKSB7XG4gIGZsb2F0IGQgPSBkaXN0YW5jZShnbF9Qb2ludENvb3JkLCB2ZWMyKDAuNSkpO1xuICBpZiAoZCA+IDAuNSkgZGlzY2FyZDtcbiAgZmxvYXQgZ2xvdyA9IHNtb290aHN0ZXAoMC41LCAwLjAsIGQpO1xuICBmcmFnQ29sb3IgPSB2ZWM0KHVfY29sb3IgKiBnbG93LCBnbG93ICogdV9hbHBoYSk7XG59XG58fVxuXG4oKiAtLS0gVHlwZXMgLS0tICopXG5cbnR5cGUgY29sb3IgPSBmbG9hdCAqIGZsb2F0ICogZmxvYXRcblxudHlwZSB0cmFpbCA9IHtcbiAgdmFvIDogR2wudmVydGV4X2FycmF5X29iamVjdDtcbiAgbnVtX3BvaW50cyA6IGludDtcbiAgaGVhZF9pZHggOiBpbnQ7XG4gIGNvbG9yIDogY29sb3I7XG59XG4oKiogQSB0cmFpbDogYXJyYXkgb2YgcG9zaXRpb25zIG9yZGVyZWQgcGFzdOKGkmZ1dHVyZS4gW2hlYWRfaWR4XSBtYXJrcyB3aGVyZSB0aGVcbiAgICBzYXRlbGxpdGUgY3VycmVudGx5IGlzICgwLWJhc2VkKS4gUG9pbnRzIGJlZm9yZSBoZWFkX2lkeCBhcmUgdGhlIHBhc3QgdHJhaWw7XG4gICAgYWZ0ZXIgYXJlIHRoZSBwcmVkaWN0aW9uLiAqKVxuXG50eXBlIGRvdCA9IHsgcG9zIDogR2xvYmUuTWF0aC5WZWMzLnQ7IGNvbG9yIDogY29sb3IgfVxuXG50eXBlIHQgPSB7XG4gIHRyYWlsX3Byb2cgOiBHbC5wcm9ncmFtO1xuICB0cmFpbF91X3Byb2ogOiBHbC51bmlmb3JtX2xvY2F0aW9uO1xuICB0cmFpbF91X3ZpZXcgOiBHbC51bmlmb3JtX2xvY2F0aW9uO1xuICB0cmFpbF91X2NvbG9yIDogR2wudW5pZm9ybV9sb2NhdGlvbjtcbiAgZG90X3Byb2cgOiBHbC5wcm9ncmFtO1xuICBkb3RfdV9wcm9qIDogR2wudW5pZm9ybV9sb2NhdGlvbjtcbiAgZG90X3VfdmlldyA6IEdsLnVuaWZvcm1fbG9jYXRpb247XG4gIGRvdF91X2NvbG9yIDogR2wudW5pZm9ybV9sb2NhdGlvbjtcbiAgZG90X3Vfc2l6ZSA6IEdsLnVuaWZvcm1fbG9jYXRpb247XG4gIGRvdF91X2FscGhhIDogR2wudW5pZm9ybV9sb2NhdGlvbjtcbiAgbXV0YWJsZSBnaG9zdHMgOiB0cmFpbCBsaXN0O1xuICBtdXRhYmxlIHRyYWlscyA6IHRyYWlsIGxpc3Q7XG4gIGRvdF92YW8gOiBHbC52ZXJ0ZXhfYXJyYXlfb2JqZWN0O1xuICBkb3RfdmJvIDogR2wuYnVmZmVyO1xufVxuXG4oKiAtLS0gQVBJIC0tLSAqKVxuXG5sZXQgdiBnbCA9XG4gIGxldCB0cmFpbF9wcm9nID0gU2hhZGVyLnByb2dyYW0gZ2wgfnZlcnQ6dHJhaWxfdmVydGV4IH5mcmFnOnRyYWlsX2ZyYWdtZW50IGluXG4gIGxldCBkb3RfcHJvZyA9IFNoYWRlci5wcm9ncmFtIGdsIH52ZXJ0OmRvdF92ZXJ0ZXggfmZyYWc6ZG90X2ZyYWdtZW50IGluXG4gIGxldCBkb3RfdmFvID0gR2wuY3JlYXRlX3ZlcnRleF9hcnJheSBnbCBpblxuICBsZXQgZG90X3ZibyA9IEdsLmNyZWF0ZV9idWZmZXIgZ2wgaW5cbiAgR2wuYmluZF92ZXJ0ZXhfYXJyYXkgZ2wgKFNvbWUgZG90X3Zhbyk7XG4gIEdsLmJpbmRfYnVmZmVyIGdsIEdsLmFycmF5X2J1ZmZlciAoU29tZSBkb3RfdmJvKTtcbiAgR2wuYnVmZmVyX2RhdGFfc2l6ZSBnbCBHbC5hcnJheV9idWZmZXIgMTIgR2wuZHluYW1pY19kcmF3O1xuICBHbC5lbmFibGVfdmVydGV4X2F0dHJpYl9hcnJheSBnbCAwO1xuICBHbC52ZXJ0ZXhfYXR0cmliX3BvaW50ZXIgZ2wgMCAzIEdsLmZsb2F0IGZhbHNlIDAgMDtcbiAgR2wuYmluZF92ZXJ0ZXhfYXJyYXkgZ2wgTm9uZTtcbiAgbGV0IHUgbmFtZSBwcm9nID0gR2wuZ2V0X3VuaWZvcm1fbG9jYXRpb24gZ2wgcHJvZyAoSnN0ci5vZl9zdHJpbmcgbmFtZSkgaW5cbiAge1xuICAgIHRyYWlsX3Byb2c7XG4gICAgdHJhaWxfdV9wcm9qID0gdSBcInVfcHJvamVjdGlvblwiIHRyYWlsX3Byb2c7XG4gICAgdHJhaWxfdV92aWV3ID0gdSBcInVfdmlld1wiIHRyYWlsX3Byb2c7XG4gICAgdHJhaWxfdV9jb2xvciA9IHUgXCJ1X2NvbG9yXCIgdHJhaWxfcHJvZztcbiAgICBkb3RfcHJvZztcbiAgICBkb3RfdV9wcm9qID0gdSBcInVfcHJvamVjdGlvblwiIGRvdF9wcm9nO1xuICAgIGRvdF91X3ZpZXcgPSB1IFwidV92aWV3XCIgZG90X3Byb2c7XG4gICAgZG90X3VfY29sb3IgPSB1IFwidV9jb2xvclwiIGRvdF9wcm9nO1xuICAgIGRvdF91X3NpemUgPSB1IFwidV9wb2ludF9zaXplXCIgZG90X3Byb2c7XG4gICAgZ2hvc3RzID0gW107XG4gICAgZG90X3VfYWxwaGEgPSB1IFwidV9hbHBoYVwiIGRvdF9wcm9nO1xuICAgIHRyYWlscyA9IFtdO1xuICAgIGRvdF92YW87XG4gICAgZG90X3ZibztcbiAgfVxuXG5sZXQgYWRkX3RyYWlsIGdsIHQgcG9zaXRpb25zIH5oZWFkX2lkeCB+Y29sb3IgPVxuICBsZXQgdmFsaWQgPVxuICAgIEFycmF5LnRvX2xpc3QgcG9zaXRpb25zIHw+IExpc3QuZmlsdGVyX21hcCBGdW4uaWQgfD4gQXJyYXkub2ZfbGlzdFxuICBpblxuICBsZXQgdG90YWwgPSBBcnJheS5sZW5ndGggdmFsaWQgaW5cbiAgaWYgdG90YWwgPiAwIHRoZW4gYmVnaW5cbiAgICAoKiBPbmx5IGtlZXAgcG9pbnRzIHVwIHRvIGFuZCBpbmNsdWRpbmcgaGVhZCDigJQgbm8gcHJlZGljdGlvbiAqKVxuICAgIGxldCBuID0gbWluIChoZWFkX2lkeCArIDEpIHRvdGFsIHw+IG1heCAxIGluXG4gICAgbGV0IGRhdGEgPSBBcnJheS5tYWtlIChuICogNCkgMC4gaW5cbiAgICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICAgIGxldCAodiA6IEdsb2JlLk1hdGguVmVjMy50KSA9IHZhbGlkLihpKSBpblxuICAgICAgbGV0IG9mZiA9IGkgKiA0IGluXG4gICAgICBkYXRhLihvZmYpIDwtIHYueDtcbiAgICAgIGRhdGEuKG9mZiArIDEpIDwtIHYueTtcbiAgICAgIGRhdGEuKG9mZiArIDIpIDwtIHYuejtcbiAgICAgICgqIHByb2dyZXNzOiAwLjAgYXQgdGFpbCDihpIgMS4wIGF0IGhlYWQgKilcbiAgICAgIGRhdGEuKG9mZiArIDMpIDwtIEZsb2F0Lm9mX2ludCBpIC8uIEZsb2F0Lm9mX2ludCAobWF4IDEgKG4gLSAxKSlcbiAgICBkb25lO1xuICAgIGxldCBidWYgPSBUYXJyYXkub2ZfZmxvYXRfYXJyYXkgVGFycmF5LkZsb2F0MzIgZGF0YSBpblxuICAgIGxldCB2YW8gPSBHbC5jcmVhdGVfdmVydGV4X2FycmF5IGdsIGluXG4gICAgR2wuYmluZF92ZXJ0ZXhfYXJyYXkgZ2wgKFNvbWUgdmFvKTtcbiAgICBsZXQgdmJvID0gR2wuY3JlYXRlX2J1ZmZlciBnbCBpblxuICAgIEdsLmJpbmRfYnVmZmVyIGdsIEdsLmFycmF5X2J1ZmZlciAoU29tZSB2Ym8pO1xuICAgIEdsLmJ1ZmZlcl9kYXRhIGdsIEdsLmFycmF5X2J1ZmZlciBidWYgR2wuc3RhdGljX2RyYXc7XG4gICAgKCogcG9zaXRpb246IGxvYyAwLCBzdHJpZGUgMTYsIG9mZnNldCAwICopXG4gICAgR2wuZW5hYmxlX3ZlcnRleF9hdHRyaWJfYXJyYXkgZ2wgMDtcbiAgICBHbC52ZXJ0ZXhfYXR0cmliX3BvaW50ZXIgZ2wgMCAzIEdsLmZsb2F0IGZhbHNlIDE2IDA7XG4gICAgKCogcHJvZ3Jlc3M6IGxvYyAxLCBzdHJpZGUgMTYsIG9mZnNldCAxMiAqKVxuICAgIEdsLmVuYWJsZV92ZXJ0ZXhfYXR0cmliX2FycmF5IGdsIDE7XG4gICAgR2wudmVydGV4X2F0dHJpYl9wb2ludGVyIGdsIDEgMSBHbC5mbG9hdCBmYWxzZSAxNiAxMjtcbiAgICBHbC5iaW5kX3ZlcnRleF9hcnJheSBnbCBOb25lO1xuICAgIHQudHJhaWxzIDwtIHsgdmFvOyBudW1fcG9pbnRzID0gbjsgaGVhZF9pZHggPSBuIC0gMTsgY29sb3IgfSA6OiB0LnRyYWlsc1xuICBlbmRcblxubGV0IGFkZF9saW5lIGdsIHQgcG9zaXRpb25zIH5jb2xvciA9XG4gIGxldCBuID1cbiAgICBBcnJheS5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIHAgLT4gaWYgT3B0aW9uLmlzX3NvbWUgcCB0aGVuIGFjYyArIDEgZWxzZSBhY2MpXG4gICAgICAwIHBvc2l0aW9uc1xuICBpblxuICBhZGRfdHJhaWwgZ2wgdCBwb3NpdGlvbnMgfmhlYWRfaWR4OihuIC0gMSkgfmNvbG9yXG5cbmxldCBhZGRfZ2hvc3QgZ2wgdCBwb3NpdGlvbnMgfmNvbG9yID1cbiAgYWRkX3RyYWlsIGdsIHQgcG9zaXRpb25zIH5oZWFkX2lkeDowIH5jb2xvcjtcbiAgKCogTW92ZSB0aGUgbGFzdCBhZGRlZCB0cmFpbCBmcm9tIHRyYWlscyB0byBnaG9zdHMgKilcbiAgbWF0Y2ggdC50cmFpbHMgd2l0aFxuICB8IG5ld2VzdCA6OiByZXN0IC0+XG4gICAgICB0Lmdob3N0cyA8LSBuZXdlc3QgOjogdC5naG9zdHM7XG4gICAgICB0LnRyYWlscyA8LSByZXN0XG4gIHwgW10gLT4gKClcblxubGV0IGNsZWFyX3RyYWlscyB0ID0gdC50cmFpbHMgPC0gW11cbmxldCBjbGVhcl9naG9zdHMgdCA9IHQuZ2hvc3RzIDwtIFtdXG5cbmxldCBjbGVhcl9saW5lcyB0ID1cbiAgdC5naG9zdHMgPC0gW107XG4gIHQudHJhaWxzIDwtIFtdXG5cbmxldCBkcmF3X2RvdCBnbCB0IH5wcm9qIH52dyBwb3MgfmNvbG9yIH5zaXplIH5hbHBoYSA9XG4gIGxldCBidWYgPVxuICAgIFRhcnJheS5vZl9mbG9hdF9hcnJheSBUYXJyYXkuRmxvYXQzMlxuICAgICAgW3wgcG9zLkdsb2JlLk1hdGguVmVjMy54OyBwb3MueTsgcG9zLnogfF1cbiAgaW5cbiAgR2wuYmluZF9idWZmZXIgZ2wgR2wuYXJyYXlfYnVmZmVyIChTb21lIHQuZG90X3Zibyk7XG4gIEdsLmJ1ZmZlcl9kYXRhIGdsIEdsLmFycmF5X2J1ZmZlciBidWYgR2wuZHluYW1pY19kcmF3O1xuICBHbC51c2VfcHJvZ3JhbSBnbCB0LmRvdF9wcm9nO1xuICBHbC51bmlmb3JtX21hdHJpeDRmdiBnbCB0LmRvdF91X3Byb2ogZmFsc2UgcHJvajtcbiAgR2wudW5pZm9ybV9tYXRyaXg0ZnYgZ2wgdC5kb3RfdV92aWV3IGZhbHNlIHZ3O1xuICBsZXQgciwgZywgYiA9IGNvbG9yIGluXG4gIEdsLnVuaWZvcm0zZiBnbCB0LmRvdF91X2NvbG9yIHIgZyBiO1xuICBHbC51bmlmb3JtMWYgZ2wgdC5kb3RfdV9zaXplIHNpemU7XG4gIEdsLnVuaWZvcm0xZiBnbCB0LmRvdF91X2FscGhhIGFscGhhO1xuICBHbC5iaW5kX3ZlcnRleF9hcnJheSBnbCAoU29tZSB0LmRvdF92YW8pO1xuICBHbC5kcmF3X2FycmF5cyBnbCBHbC5wb2ludHMgMCAxO1xuICBHbC5iaW5kX3ZlcnRleF9hcnJheSBnbCBOb25lXG5cbmxldCBkcmF3X3RyYWlscyBnbCB0IH5wcm9qIH52dyB0cmFpbHMgPVxuICBMaXN0Lml0ZXJcbiAgICAoZnVuICh0ciA6IHRyYWlsKSAtPlxuICAgICAgbGV0IHIsIGcsIGIgPSB0ci5jb2xvciBpblxuICAgICAgR2wudW5pZm9ybTNmIGdsIHQudHJhaWxfdV9jb2xvciByIGcgYjtcbiAgICAgIEdsLmJpbmRfdmVydGV4X2FycmF5IGdsIChTb21lIHRyLnZhbyk7XG4gICAgICBHbC5kcmF3X2FycmF5cyBnbCBHbC5saW5lX3N0cmlwIDAgdHIubnVtX3BvaW50cztcbiAgICAgIEdsLmJpbmRfdmVydGV4X2FycmF5IGdsIE5vbmUpXG4gICAgdHJhaWxzXG5cbmxldCBkcmF3IGdsIHQgfnByb2plY3Rpb24gfnZpZXcgfmRvdHMgPVxuICBsZXQgcHJvaiA9IFRhcnJheS5vZl9mbG9hdF9hcnJheSBUYXJyYXkuRmxvYXQzMiBwcm9qZWN0aW9uIGluXG4gIGxldCB2dyA9IFRhcnJheS5vZl9mbG9hdF9hcnJheSBUYXJyYXkuRmxvYXQzMiB2aWV3IGluXG4gIEdsLnVzZV9wcm9ncmFtIGdsIHQudHJhaWxfcHJvZztcbiAgR2wudW5pZm9ybV9tYXRyaXg0ZnYgZ2wgdC50cmFpbF91X3Byb2ogZmFsc2UgcHJvajtcbiAgR2wudW5pZm9ybV9tYXRyaXg0ZnYgZ2wgdC50cmFpbF91X3ZpZXcgZmFsc2Ugdnc7XG4gICgqIEdob3N0IG9yYml0cyBmaXJzdCAoYmVoaW5kIHRyYWlscykgKilcbiAgZHJhd190cmFpbHMgZ2wgdCB+cHJvaiB+dncgdC5naG9zdHM7XG4gICgqIEFjdGl2ZSB0cmFpbHMgKilcbiAgZHJhd190cmFpbHMgZ2wgdCB+cHJvaiB+dncgdC50cmFpbHM7XG4gICgqIFNhdGVsbGl0ZSBkb3RzICopXG4gIExpc3QuaXRlclxuICAgIChmdW4gKGQgOiBkb3QpIC0+XG4gICAgICBkcmF3X2RvdCBnbCB0IH5wcm9qIH52dyBkLnBvcyB+Y29sb3I6ZC5jb2xvciB+c2l6ZTo4LjAgfmFscGhhOjEuMClcbiAgICBkb3RzXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2hlY2tfYm91bmQiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiY2FtbF9jYWxsNCIsImEzIiwiY2FtbF9jYWxsNSIsImE0IiwiY2FtbF9jYWxsNyIsImE1IiwiYTYiLCJnbG9iYWxfZGF0YSIsIkJyciIsIkJycl9jYW52YXMiLCJTdGRsaWJfTGlzdCIsIlN0ZGxpYl9PcHRpb24iLCJTdGRsaWJfQXJyYXkiLCJTdGRsaWIiLCJHbG9iZV93ZWJnbF9TaGFkZXIiLCJ2IiwiZ2wiLCJ0cmFpbF9wcm9nIiwiZG90X3Byb2ciLCJkb3RfdmFvIiwiZG90X3ZibyIsInUiLCJuYW1lIiwicHJvZyIsImNzdF91X2NvbG9yIiwiY3N0X3VfdmlldyIsImNzdF91X3Byb2plY3Rpb24iLCJhZGRfdHJhaWwiLCJ0IiwicG9zaXRpb25zIiwiaGVhZF9pZHgiLCJjb2xvciIsInZhbGlkIiwidG90YWwiLCJuIiwiZGF0YSIsImkiLCJvZmYiLCJidWYiLCJ2YW8iLCJ2Ym8iLCJhZGRfbGluZSIsImFjYyIsInAiLCJhZGRfZ2hvc3QiLCJtYXRjaCIsInJlc3QiLCJuZXdlc3QiLCJjbGVhcl90cmFpbHMiLCJjbGVhcl9naG9zdHMiLCJjbGVhcl9saW5lcyIsImRyYXdfdHJhaWxzIiwicHJvaiIsInZ3IiwidHJhaWxzIiwidHIiLCJiIiwiZyIsInIiLCJkcmF3IiwicHJvamVjdGlvbiIsInZpZXciLCJkb3RzIiwiZCIsInBvcyJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUosR0FBQUMsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFOLEdBQUFDLElBQUFFLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBUixHQUFBQyxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQVYsR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLE1BQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElB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VDtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFFQTtBQUFBLElBRUE7QUFBQSxJQUFtQztBQUFBO0FBQUEsc0JBQUFVO0FBQUFBO0FBQUFBLGVBQUFoQyxRQUkvQjtBQUFBLGVBQUFpQyxNQUFBO0FBQUEsZUFBQTFCLE1BdkNGO0FBQUEsY0FHRjtBQUFBO0FBQUEsY0FDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxjQUNBO0FBQUEsY0FDQTtBQUFBLGNBQ0E7QUFBQSxrQkFBQWtCLElBQTZDLFVBQUFDLElBQUEsVUFBQUMsSUFBQTtBQUFBLGNBRTdDO0FBQUEsY0FDQTtBQUFBLGNBQ0E7QUFBQSxjQUNBO0FBQUEsY0FDQTtBQUFBLGNBQStCLDJDQTBCc0M7QUFBQTtBQUFBLGtCQUMvRDtBQUFBO0FBQUEsR0Q1T1IiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0MTA1MSwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiIuZ2xvYmVfd2ViZ2wub2Jqcy9qc29vL2RlZmF1bHQvZ2xvYmVfd2ViZ2wuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9vY2FtbC1nbG9iZS93ZWJnbC9zY2VuZS5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBDb3B5cmlnaHQgKGMpIDIwMjUgVGhvbWFzIEdhemFnbmFpcmUuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbigqKiBHbG9iZSBzY2VuZTogY2FudmFzIHNldHVwLCByZW5kZXIgbG9vcCwgYW5kIGxheWVyIGNvbXBvc2l0aW5nLlxuXG4gICAgQnVuZGxlcyB0aGUgV2ViR0wgYm9pbGVycGxhdGUgdGhhdCBldmVyeSBnbG9iZSBhcHAgbmVlZHM6IGNhbnZhcy9HTCBpbml0LFxuICAgIHJlc2l6ZSBoYW5kbGluZywgY2FtZXJhLCBhbmQgdGhlIGNvcnJlY3QgZHJhdyBvcmRlciBmb3IgYWxsIGxheWVycyAoc3RhcnMg4oaSXG4gICAgZWFydGgg4oaSIGdyaWQg4oaSIG9yYml0cyDihpIgY292ZXJhZ2UpLiAqKVxuXG5vcGVuIEJyclxub3BlbiBCcnJfY2FudmFzXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuKCogIENhbnZhcyArIEdMIHNldHVwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbnR5cGUgdCA9IHtcbiAgZ2wgOiBHbC50O1xuICBjYW52YXNfZWwgOiBFbC50O1xuICBjYW1lcmEgOiBDYW1lcmEudDtcbiAgZWFydGggOiBFYXJ0aC50O1xuICBzdGFycyA6IFN0YXJzLnQ7XG4gIG11dGFibGUgZ3JpZCA6IEdyaWQudCBvcHRpb247XG4gIG9yYml0IDogT3JiaXQudDtcbiAgY292ZXJhZ2UgOiBDb3ZlcmFnZS50O1xufVxuXG5sZXQgdiA/KG51bV9wb2ludHMgPSAzMDAwMCkgPyhncmlkX3NwYWNpbmcgPSAzMC4pIGNhbnZhc19lbCA9XG4gIGxldCBjYW52YXMgPSBDYW52YXMub2ZfZWwgY2FudmFzX2VsIGluXG4gIGxldCBnbCA9XG4gICAgbWF0Y2ggR2wuZ2V0X2NvbnRleHQgY2FudmFzIHdpdGhcbiAgICB8IFNvbWUgZ2wgLT4gZ2xcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJXZWJHTDIgbm90IHN1cHBvcnRlZFwiXG4gIGluXG4gIGxldCByZXNpemUgKCkgPVxuICAgIGxldCB3ID0gSnYuZ2V0IEp2Lmdsb2JhbCBcImlubmVyV2lkdGhcIiB8PiBKdi50b19pbnQgaW5cbiAgICBsZXQgaCA9IEp2LmdldCBKdi5nbG9iYWwgXCJpbm5lckhlaWdodFwiIHw+IEp2LnRvX2ludCBpblxuICAgIEVsLnNldF9hdCAoSnN0ci5vZl9zdHJpbmcgXCJ3aWR0aFwiKSAoU29tZSAoSnN0ci5vZl9pbnQgdykpIGNhbnZhc19lbDtcbiAgICBFbC5zZXRfYXQgKEpzdHIub2Zfc3RyaW5nIFwiaGVpZ2h0XCIpIChTb21lIChKc3RyLm9mX2ludCBoKSkgY2FudmFzX2VsO1xuICAgIEdsLnZpZXdwb3J0IGdsIDAgMCB3IGhcbiAgaW5cbiAgcmVzaXplICgpO1xuICBpZ25vcmUgKEV2Lmxpc3RlbiBFdi5yZXNpemUgKGZ1biBfZXYgLT4gcmVzaXplICgpKSBHLnRhcmdldCk7XG4gIGxldCBjYW1lcmEgPSBDYW1lcmEudiAoKSBpblxuICBDYW1lcmEuYXR0YWNoX2V2ZW50cyBjYW1lcmEgY2FudmFzX2VsO1xuICBHbC5lbmFibGUgZ2wgR2wuYmxlbmQ7XG4gIEdsLmJsZW5kX2Z1bmMgZ2wgR2wuc3JjX2FscGhhIEdsLm9uZV9taW51c19zcmNfYWxwaGE7XG4gIEdsLmVuYWJsZSBnbCBHbC5kZXB0aF90ZXN0O1xuICBHbC5jbGVhcl9jb2xvciBnbCAwLjAgMC4wIDAuMDIgMS4wO1xuICB7XG4gICAgZ2w7XG4gICAgY2FudmFzX2VsO1xuICAgIGNhbWVyYTtcbiAgICBlYXJ0aCA9IEVhcnRoLnYgfm51bV9wb2ludHMgZ2w7XG4gICAgc3RhcnMgPSBTdGFycy52IGdsO1xuICAgIGdyaWQgPSBTb21lIChHcmlkLnYgfnNwYWNpbmc6Z3JpZF9zcGFjaW5nIGdsKTtcbiAgICBvcmJpdCA9IE9yYml0LnYgZ2w7XG4gICAgY292ZXJhZ2UgPSBDb3ZlcmFnZS52IGdsO1xuICB9XG5cbmxldCBnbCB0ID0gdC5nbFxubGV0IGNhbWVyYSB0ID0gdC5jYW1lcmFcbmxldCBvcmJpdCB0ID0gdC5vcmJpdFxubGV0IGNvdmVyYWdlIHQgPSB0LmNvdmVyYWdlXG5sZXQgc2V0X2dyaWRfc3BhY2luZyB0IHNwYWNpbmcgPSB0LmdyaWQgPC0gU29tZSAoR3JpZC52IH5zcGFjaW5nIHQuZ2wpXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuKCogIFBlci1mcmFtZSBtYXRyaWNlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbnR5cGUgZnJhbWUgPSB7XG4gIHByb2plY3Rpb24gOiBmbG9hdCBhcnJheTtcbiAgdmlldyA6IGZsb2F0IGFycmF5O1xuICB3aWR0aCA6IGludDtcbiAgaGVpZ2h0IDogaW50O1xufVxuXG5sZXQgYmVnaW5fZnJhbWUgdCA/KHByb2plY3Rpb25fb2Zmc2V0ID0gMC4pIGR0ID1cbiAgQ2FtZXJhLnVwZGF0ZSB0LmNhbWVyYSBkdDtcbiAgbGV0IHcgPSBHbC5kcmF3aW5nX2J1ZmZlcl93aWR0aCB0LmdsIGluXG4gIGxldCBoID0gR2wuZHJhd2luZ19idWZmZXJfaGVpZ2h0IHQuZ2wgaW5cbiAgbGV0IGFzcGVjdCA9IEZsb2F0Lm9mX2ludCB3IC8uIEZsb2F0Lm1heCAxLiAoRmxvYXQub2ZfaW50IGgpIGluXG4gIGxldCBwcm9qID1cbiAgICBHbG9iZS5NYXRoLk1hdDQucGVyc3BlY3RpdmUgfmZvdnk6KEZsb2F0LnBpIC8uIDQuKSB+YXNwZWN0IH5uZWFyOjAuMVxuICAgICAgfmZhcjoxMDAuXG4gIGluXG4gIGlmIHByb2plY3Rpb25fb2Zmc2V0IDw+IDAuIHRoZW4gcHJvai4oMTIpIDwtIHByb2plY3Rpb25fb2Zmc2V0O1xuICBsZXQgcHJvamVjdGlvbiA9IEdsb2JlLk1hdGguTWF0NC50b19mbG9hdF9hcnJheSBwcm9qIGluXG4gIGxldCB2aWV3ID0gR2xvYmUuTWF0aC5NYXQ0LnRvX2Zsb2F0X2FycmF5IChDYW1lcmEudmlld19tYXRyaXggdC5jYW1lcmEpIGluXG4gIEdsLmNsZWFyIHQuZ2wgKEdsLmNvbG9yX2J1ZmZlcl9iaXQgbG9yIEdsLmRlcHRoX2J1ZmZlcl9iaXQpO1xuICB7IHByb2plY3Rpb247IHZpZXc7IHdpZHRoID0gdzsgaGVpZ2h0ID0gaCB9XG5cbmxldCBwcm9qZWN0aW9uIGYgPSBmLnByb2plY3Rpb25cbmxldCB2aWV3IGYgPSBmLnZpZXdcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG4oKiAgTGF5ZXIgZHJhd2luZyB3aXRoIGNvcnJlY3QgY29tcG9zaXRpbmcgb3JkZXIgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxudHlwZSBsYXllcnMgPSB7XG4gIHNob3dfc3RhcnMgOiBib29sO1xuICBzaG93X2VhcnRoIDogYm9vbDtcbiAgc2hvd19ncmlkIDogYm9vbDtcbiAgc2hvd19vcmJpdHMgOiBib29sO1xuICBzaG93X2NvdmVyYWdlIDogYm9vbDtcbiAgZWFydGhfZGltIDogZmxvYXQ7XG4gIGdyaWRfY29sb3IgOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQ7XG4gIGdyaWRfYWxwaGEgOiBmbG9hdDtcbiAgY292ZXJhZ2VfaW50ZW5zaXR5IDogZmxvYXQ7XG4gIG9yYml0X2RvdHMgOiBPcmJpdC5kb3QgbGlzdDtcbiAgY3VzdG9tIDogKHByb2plY3Rpb246ZmxvYXQgYXJyYXkgLT4gdmlldzpmbG9hdCBhcnJheSAtPiB1bml0KSBsaXN0O1xufVxuXG5sZXQgZGVmYXVsdF9sYXllcnMgPVxuICB7XG4gICAgc2hvd19zdGFycyA9IHRydWU7XG4gICAgc2hvd19lYXJ0aCA9IHRydWU7XG4gICAgc2hvd19ncmlkID0gZmFsc2U7XG4gICAgc2hvd19vcmJpdHMgPSBmYWxzZTtcbiAgICBzaG93X2NvdmVyYWdlID0gZmFsc2U7XG4gICAgZWFydGhfZGltID0gMS4wO1xuICAgIGdyaWRfY29sb3IgPSAoMC4xNSwgMC4zNSwgMC41KTtcbiAgICBncmlkX2FscGhhID0gMC4zO1xuICAgIGNvdmVyYWdlX2ludGVuc2l0eSA9IDAuNDtcbiAgICBvcmJpdF9kb3RzID0gW107XG4gICAgY3VzdG9tID0gW107XG4gIH1cblxubGV0IGRyYXcgdCBmcmFtZSBsYXllcnMgPVxuICBsZXQgZ2wgPSB0LmdsIGluXG4gIGxldCBwID0gZnJhbWUucHJvamVjdGlvbiBhbmQgdiA9IGZyYW1lLnZpZXcgaW5cbiAgKCogMS4gU3RhcnMg4oCUIGJlaGluZCBldmVyeXRoaW5nLCBubyBkZXB0aCAqKVxuICBpZiBsYXllcnMuc2hvd19zdGFycyB0aGVuIGJlZ2luXG4gICAgR2wuZGlzYWJsZSBnbCBHbC5kZXB0aF90ZXN0O1xuICAgIFN0YXJzLmRyYXcgZ2wgdC5zdGFycyB+cHJvamVjdGlvbjpwIH52aWV3OnY7XG4gICAgR2wuZW5hYmxlIGdsIEdsLmRlcHRoX3Rlc3RcbiAgZW5kO1xuICAoKiAyLiBFYXJ0aCBkb3RzICopXG4gIGlmIGxheWVycy5zaG93X2VhcnRoIHRoZW5cbiAgICBFYXJ0aC5kcmF3IGdsIHQuZWFydGggfnByb2plY3Rpb246cCB+dmlldzp2IH5kaW06bGF5ZXJzLmVhcnRoX2RpbSAoKTtcbiAgKCogMy4gR3JpZCBvdmVybGF5ICopXG4gIChpZiBsYXllcnMuc2hvd19ncmlkIHRoZW5cbiAgICAgbWF0Y2ggdC5ncmlkIHdpdGhcbiAgICAgfCBTb21lIGdyaWQgLT5cbiAgICAgICAgIEdyaWQuZHJhdyBnbCBncmlkIH5wcm9qZWN0aW9uOnAgfnZpZXc6diB+Y29sb3I6bGF5ZXJzLmdyaWRfY29sb3JcbiAgICAgICAgICAgfmFscGhhOmxheWVycy5ncmlkX2FscGhhICgpXG4gICAgIHwgTm9uZSAtPiAoKSk7XG4gICgqIDQuIE9yYml0IHRyYWlscyArIHNhdGVsbGl0ZSBkb3RzICopXG4gIGlmIGxheWVycy5zaG93X29yYml0cyB0aGVuXG4gICAgT3JiaXQuZHJhdyBnbCB0Lm9yYml0IH5wcm9qZWN0aW9uOnAgfnZpZXc6diB+ZG90czpsYXllcnMub3JiaXRfZG90cztcbiAgKCogNS4gQ3VzdG9tIGxheWVycyAqKVxuICBMaXN0Lml0ZXIgKGZ1biBmIC0+IGYgfnByb2plY3Rpb246cCB+dmlldzp2KSBsYXllcnMuY3VzdG9tO1xuICAoKiA2LiBDb3ZlcmFnZSDigJQgYWRkaXRpdmUgYmxlbmQgb24gdG9wICopXG4gIGlmIGxheWVycy5zaG93X2NvdmVyYWdlIHRoZW5cbiAgICBDb3ZlcmFnZS5kcmF3IGdsIHQuY292ZXJhZ2UgfnByb2plY3Rpb246cCB+dmlldzp2XG4gICAgICB+aW50ZW5zaXR5OmxheWVycy5jb3ZlcmFnZV9pbnRlbnNpdHkgKClcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImNhbWxfY2FsbDMiLCJhMiIsImNhbWxfY2FsbDQiLCJhMyIsImNhbWxfY2FsbDUiLCJhNCIsImdsb2JhbF9kYXRhIiwiQnJyX2NhbnZhcyIsIkdsb2JlX3dlYmdsX1N0YXJzIiwiR2xvYmVfd2ViZ2xfRWFydGgiLCJHbG9iZV93ZWJnbF9HcmlkIiwiR2xvYmVfd2ViZ2xfT3JiaXQiLCJTdGRsaWJfTGlzdCIsIkdsb2JlX3dlYmdsX0NvdmVyYWdlIiwiR2xvYmVfd2ViZ2xfQ2FtZXJhIiwiU3RkbGliX0Zsb2F0IiwiR2xvYmVfTWF0aCIsIkp2IiwiSnN0ciIsIkJyciIsIlN0ZGxpYiIsInYiLCJvcHQiLCJjYW52YXNfZWwiLCJudW1fcG9pbnRzIiwiZ3JpZF9zcGFjaW5nIiwiY2FudmFzIiwibWF0Y2giLCJnbCIsInJlc2l6ZSIsInBhcmFtIiwidyIsImgiLCJldiIsImNhbWVyYSIsInQiLCJvcmJpdCIsImNvdmVyYWdlIiwic2V0X2dyaWRfc3BhY2luZyIsInNwYWNpbmciLCJiZWdpbl9mcmFtZSIsImR0IiwicHJvamVjdGlvbl9vZmZzZXQiLCJhc3BlY3QiLCJwcm9qIiwicHJvamVjdGlvbiIsInZpZXciLCJkcmF3IiwiZnJhbWUiLCJsYXllcnMiLCJwIiwiZ3JpZCJdLCJtYXBwaW5ncyI6Ik9BQUFBLFVBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFKLEdBQUFDLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBTixHQUFBQyxJQUFBRSxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQVIsR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGFBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLG9CQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyx1QkFBQTtBQUFBLElBQUFDLHFCQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLElBQUFDLGFBQUE7QUFBQSxJQUFBQyxLQUFBO0FBQUEsSUFBQUMsT0FBQTtBQUFBLElBQUFDLE1BQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsWUFBQUMsRUFBQSxHQUFBQyxLQUFBQztBQUFBQTtBQUFBQSxLQUFBQyxhQzZCTTtBQUFBLEtBQUFDLGVBQUE7QUFBQSxLQUFBQyxTQUNTO0FBQUEsS0FBQUMsUUFFTDtBQUFBLElBQXFCO0FBQUEsU0FBQUMsS0FBQSxVQUFBQSxPQUNkO0FBQUE7QUFBQSxTQUFBQSxPQUNIO0FBQUEsYUFBQUMsT0FBQUM7QUFBQUE7QUFBQUEsTUFBQUMsSUFHRjtBQUFBLE1BQUFDLElBQ0E7QUFBQSxVQUNpQztBQUFBLEtBQXpDO0FBQUEsYUFDMEM7QUFBQSxLQUExQztBQUFBLEtBQW9FLHVEQUM5QztBQUFBO0FBQUEsSUFFeEI7QUFBQSxJQUNPO0FBQUEsMkNBQUFDLElBQWlDLGdCQUFTO0FBQUEsUUFBQUMsU0FDcEM7QUFBQSxJQUNiO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUE7QUFBQSxTQVNhO0FBQUEsU0FESDtBQUFBLFNBREk7QUFBQSxTQURKO0FBQUEsSUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsY0FBc0I7QUFBQSxHQUsvQjtBQUFBLFlBQUFOLEdBQUFPLEdBRVEsWUFBSTtBQUFBLFlBQUFELE9BQUFDLEdBQ0EsWUFBUTtBQUFBLFlBQUFDLE1BQUFELEdBQ1QsWUFBTztBQUFBLFlBQUFFLFNBQUFGLEdBQ0osWUFBVTtBQUFBLFlBQUFHLGlCQUFBSCxHQUFBSTtBQUFBQSxJQUNxQjtBQUFBLElBQXNCO0FBQUE7QUFBQSxZQUFBQyxZQUFBTCxHQUFBYixLQUFBbUI7QUFBQUEsUUFBQUMsb0JBYXREO0FBQUEsSUFDZDtBQUFBO0FBQUEsS0FBQVgsSUFDUTtBQUFBLEtBQUFDLElBQ0E7QUFBQSxLQUFBVyxTQUN1QjtBQUFBLEtBQUFDO0FBQUFBLE9BRTdCO0FBQUEsSUFHRjtBQUFBLEtBQWdDO0FBQUE7QUFBQSxLQUFBQyxhQUNmO0FBQUEsU0FDeUI7QUFBQSxLQUFBQyxPQUEvQjtBQUFBLElBQ1g7QUFBQTtBQUFBLElBQTJEO0FBQUEsR0FDaEI7QUFBQSxZQUFBRCxXQUFBakQsR0FFMUIsWUFBWTtBQUFBLFlBQUFrRCxLQUFBbEQsR0FDbEIsWUFBTTtBQUFBLFlBQUFtRCxLQUFBWixHQUFBYSxPQUFBQztBQUFBQSxRQUFBckIsS0FvQ2pCLE1BQUFzQixJQUNBLFVBQUE3QixJQUFBO0FBQUEsSUFFQTtBQUFBLEtBQ0U7QUFBQSxLQUNBO0FBQUEsS0FDQTtBQUFBO0FBQUEsSUFHRjtBQUFBLEtBQ0U7QUFBQSxJQUVGO0FBQUEsU0FBQU0sUUFDRztBQUFBO0FBQUEsVUFBQXdCLE9BQUE7QUFBQSxNQUVJO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFJUCxjQUNFO0FBQUEsSUFFRjtBQUFBLHFCQUFBdkQsR0FBb0IsMEJBQXVCO0FBQUEsWUFBZTtBQUFBO0FBQUEsY0FHeEQ7QUFBQTtBQUFBO0FBQUEsZUFDeUM7QUFBQTtBQUFBLEdEN0o3QyIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQxMjE5LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InNpZ25hbC5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvc2lnbmFsL1NpZ25hbC5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIm1vZHVsZSBMaXN0X2V4dCA9IHN0cnVjdFxuICBsZXQgbWVtID8oZXEgPSBTdGRsaWIuKCA9ICkpIHggbCA9XG4gICAgbGV0IHJlYyBzZWFyY2ggZXEgeCBsID1cbiAgICAgIG1hdGNoIGwgd2l0aCBbXSAtPiBmYWxzZSB8IHkgOjogbCcgLT4gZXEgeCB5IHx8IHNlYXJjaCBlcSB4IGwnXG4gICAgaW5cbiAgICBzZWFyY2ggZXEgeCBsXG5cbiAgbGV0IHJlbW92ZV9vbmUgfmVxIHggbCA9XG4gICAgbGV0IHJlYyByZW1vdmVfb25lIH5lcSB4IGFjYyBsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgeSA6OiB0bCB3aGVuIGVxIHggeSAtPiAoeSwgTGlzdC5yZXZfYXBwZW5kIGFjYyB0bClcbiAgICAgIHwgeSA6OiB0bCAtPiByZW1vdmVfb25lIH5lcSB4ICh5IDo6IGFjYykgdGxcbiAgICBpblxuICAgIGlmIG1lbSB+ZXEgeCBsIHRoZW4gcmVtb3ZlX29uZSB+ZXEgeCBbXSBsXG4gICAgZWxzZSBpbnZhbGlkX2FyZyBcImNvdWxkIG5vdCByZW1vdmUsIGVsZW1lbnQgaXMgbm90IGEgbWVtYmVyXCJcbmVuZFxuXG4oKiBwaHlzaWNhbCBlcXVhbGl0eSAqKVxubGV0IGRlZmF1bHRfZXF1YWwgPSBTdGRsaWIuKCA9PSApXG5cbigqIFN1YnNjcmlwdGlvbiByZWdpc3RyeSBmb3Igc2lnbmFscy4gKilcbm1vZHVsZSBTdWJzIDogc2lnXG4gIHR5cGUgJ2Egc3ViID0gJ2EgLT4gdW5pdFxuICB0eXBlICdhIHRcblxuICB2YWwgZW1wdHkgOiB1bml0IC0+ICdhIHRcblxuICAoKiB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnQgKilcbiAgdmFsIGFkZCA6ID9sYWJlbDpzdHJpbmcgLT4gJ2Egc3ViIC0+ICdhIHQgLT4gdW5pdFxuICB2YWwgZGlzcGF0Y2ggOiAnYSAtPiAnYSB0IC0+IHVuaXRcbiAgdmFsIHJlbW92ZSA6ICdhIHN1YiAtPiAnYSB0IC0+IHVuaXRcbiAgKCogdmFsIG5hbWVzIDogJ2EgdCAtPiBzdHJpbmcgbGlzdCAqKVxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2Egc3ViID0gJ2EgLT4gdW5pdFxuICB0eXBlICdhIHQgPSAoc3RyaW5nICogJ2Egc3ViIHJlZikgbGlzdCByZWZcblxuICBsZXQgZW1wdHkgKCkgPSByZWYgW11cblxuICAoKiBsZXQgbGVuZ3RoIHN1YnMgPSBMaXN0Lmxlbmd0aCAhc3VicyAqKVxuICBsZXQgYWRkID8obGFiZWwgPSBcIlwiKSAoayA6ICdhIHN1Yikgc3VicyA9XG4gICAgc3VicyA6PSBMaXN0LmFwcGVuZCAhc3VicyBbIChsYWJlbCwgcmVmIGspIF1cblxuICBsZXQgZGlzcGF0Y2ggeCBzdWJzID0gTGlzdC5pdGVyIChmdW4gKF8sIGspIC0+ICFrIHgpICFzdWJzXG5cbiAgbGV0IHJlbW92ZSBrIHN1YnMgPVxuICAgIGxldCAoXywgaycpLCBzdWJzJyA9XG4gICAgICBMaXN0X2V4dC5yZW1vdmVfb25lXG4gICAgICAgIH5lcTooZnVuIChfLCBzMSkgKF8sIHMyKSAtPiAhczEgPT0gIXMyKVxuICAgICAgICAoXCJcIiwgcmVmIGspXG4gICAgICAgICFzdWJzXG4gICAgaW5cbiAgICAoKiBJZiByZW1vdmUgaXMgY2FsbGVkIGR1cmluZyBkaXNwYXRjaCwgZGlzcGF0Y2ggd2lsbCBoYXZlIHJlZmVycmVkIHRvIHRoZSBvcmlnaW5hbCBsaXN0LiBXZSBzZXQgdGhlXG4gICAgICAgcmVtb3ZlZCBrIHRvIGlnbm9yZSB0byBhdm9pZCBjYWxsaW5nIGl0LiAqKVxuICAgIGsnIDo9IGlnbm9yZTtcbiAgICBzdWJzIDo9IHN1YnMnXG5cbiAgKCogbGV0IG5hbWVzIHN1YnMgPSBMaXN0Lm1hcCBmc3QgIXN1YnMgKilcbmVuZFxuXG4oKiBOb3RpZmljYXRpb24gKilcblxudHlwZSBub3RpZmljYXRpb24gPSB7IGFkZCA6ICh1bml0IC0+IHVuaXQpIC0+IHVuaXQ7IHJ1biA6IHVuaXQgLT4gdW5pdCB9XG5cbm1vZHVsZSBOb3RpZmljYXRpb24gPSBzdHJ1Y3RcbiAgbGV0IG1ha2UgKCkgOiBub3RpZmljYXRpb24gPVxuICAgIGxldCBmcyA9IHJlZiBbXSBpblxuICAgIGxldCBhZGQgZiA9IGZzIDo9IGYgOjogIWZzIGluXG4gICAgbGV0IHJ1biAoKSA9IExpc3QuaXRlciAoZnVuIGYgLT4gZiAoKSkgKExpc3QucmV2ICFmcykgaW5cbiAgICB7IGFkZDsgcnVuIH1cblxuICBsZXQgbm93ID1cbiAgICBsZXQgYWRkIGYgPSBmICgpIGluXG4gICAgeyBhZGQ7IHJ1biA9IGlnbm9yZSB9XG5cbiAgbGV0IG5ldmVyID0geyBhZGQgPSBpZ25vcmU7IHJ1biA9IGlnbm9yZSB9XG5lbmRcblxubGV0IG5ldmVyID0gTm90aWZpY2F0aW9uLm5ldmVyXG5sZXQgbm93ID0gTm90aWZpY2F0aW9uLm5vd1xuXG5sZXQgc2NvcGUgZiA9XG4gIGxldCBub3RpZmljYXRpb24gPSBOb3RpZmljYXRpb24ubWFrZSAoKSBpblxuICBmIG5vdGlmaWNhdGlvbjtcbiAgbm90aWZpY2F0aW9uLnJ1biAoKVxuXG4oKiBTaWduYWwgKilcblxudHlwZSBzdWIgPSB1bml0IC0+IHVuaXRcblxudHlwZSAnYSB0ID0ge1xuICBuYW1lIDogc3RyaW5nO1xuICBtdXRhYmxlIHZhbHVlIDogJ2E7XG4gIGVtaXQgOiA/bm90aWZ5Om5vdGlmaWNhdGlvbiAtPiAnYSAtPiB1bml0O1xuICBzdWIgOiA/bGFiZWw6c3RyaW5nIC0+ICgnYSAtPiB1bml0KSAtPiBzdWI7XG59XG5cbmxldCBnZW5faWQgPVxuICBsZXQgaSA9IHJlZiAoLTEpIGluXG4gIGZ1biAoKSAtPlxuICAgIGluY3IgaTtcbiAgICBzdHJpbmdfb2ZfaW50ICFpXG5cbmxldCBiYXNlID8oZXF1YWwgPSBkZWZhdWx0X2VxdWFsKSB+bmFtZSB2YWx1ZSA9XG4gIGxldCBuYW1lID0gbmFtZSBeIFwiI1wiIF4gZ2VuX2lkICgpIGluXG4gIGxldCBzdWJzID0gU3Vicy5lbXB0eSAoKSBpblxuICBsZXQgc3ViID9sYWJlbCBrID1cbiAgICBTdWJzLmFkZCA/bGFiZWwgayBzdWJzO1xuICAgIGZ1biAoKSAtPiBTdWJzLnJlbW92ZSBrIHN1YnNcbiAgaW5cbiAgbGV0IHJlYyBzID0geyBuYW1lOyB2YWx1ZTsgZW1pdDsgc3ViIH1cbiAgYW5kIGVtaXQgPyhub3RpZnkgPSBub3cpIHggPVxuICAgIGlmIG5vdCAoZXF1YWwgcy52YWx1ZSB4KSB0aGVuIChcbiAgICAgIHMudmFsdWUgPC0geDtcbiAgICAgIG5vdGlmeS5hZGQgKGZ1biAoKSAtPiBTdWJzLmRpc3BhdGNoIHggc3VicykpXG4gIGluXG4gIHNcblxubGV0IG1ha2UgP2VxdWFsID8obGFiZWwgPSBcIm1ha2VcIikgdmFsdWUgPSBiYXNlID9lcXVhbCB+bmFtZTpsYWJlbCB2YWx1ZVxubGV0IGxhYmVsIHMgPSBzLm5hbWVcblxubGV0IG51bGwgPVxuICBsZXQgc3ViID9sYWJlbDpfIF8gKCkgPSAoKSBpblxuICBsZXQgcmVjIHMgPSB7IG5hbWUgPSBcIm51bGxcIjsgdmFsdWUgPSAoKTsgZW1pdDsgc3ViIH1cbiAgYW5kIGVtaXQgP25vdGlmeTpfIF94ID0gKCkgaW5cbiAgc1xuXG5sZXQgZ2V0IHMgPSBzLnZhbHVlXG5sZXQgZW1pdCA/bm90aWZ5IHggcyA9IHMuZW1pdCA/bm90aWZ5IHhcbmxldCBzZXQgeCBzID0gZW1pdCB+bm90aWZ5Om5ldmVyIHggc1xubGV0IHVwZGF0ZSA/bm90aWZ5IGYgcyA9IHMuZW1pdCA/bm90aWZ5IChmIHMudmFsdWUpXG5sZXQgdHJpZ2dlciBzID0gcy5lbWl0IHMudmFsdWVcblxubGV0IHN1YiBrIHMgPVxuICBsZXQgXyA6IHN1YiA9IHMuc3ViIGsgaW5cbiAgKClcblxubGV0IHN1YicgayBzID0gcy5zdWIga1xuXG5sZXQgc3ViMiBrIHMxIHMyID1cbiAgbGV0IF8gOiBzdWIgPSBzMS5zdWIgKGZ1biB4MSAtPiBrIHgxIHMyLnZhbHVlKSBpblxuICBsZXQgXyA6IHN1YiA9IHMyLnN1YiAoZnVuIHgyIC0+IGsgczEudmFsdWUgeDIpIGluXG4gICgpXG5cbmxldCB1c2UgayBzID1cbiAgbGV0IF8gOiBzdWIgPSBzLnN1YiBrIGluXG4gIGsgcy52YWx1ZVxuXG5sZXQgdXNlJyA/bGFiZWwgayBzID1cbiAgbGV0IHVuc3ViIDogc3ViID0gcy5zdWIgP2xhYmVsIGsgaW5cbiAgayBzLnZhbHVlO1xuICB1bnN1YlxuXG5sZXQgdXNlMiBrIHMxIHMyID1cbiAgbGV0IF8gOiBzdWIgPSBzMS5zdWIgKGZ1biB4MSAtPiBrIHgxIHMyLnZhbHVlKSBpblxuICBsZXQgXyA6IHN1YiA9IHMyLnN1YiAoZnVuIHgyIC0+IGsgczEudmFsdWUgeDIpIGluXG4gIGsgczEudmFsdWUgczIudmFsdWVcblxubGV0IHVuc3ViIHN1YiA9IHN1YiAoKVxuXG5sZXQgbWFwIGYgcyA9XG4gIGxldCBzJyA9IGJhc2Ugfm5hbWU6XCJtYXBcIiAoZiBzLnZhbHVlKSBpblxuICBsZXQgXyA6IHN1YiA9IHMuc3ViIChmdW4geCAtPiBzJy5lbWl0IChmIHgpKSBpblxuICBzJ1xuXG5sZXQgY29uc3QgeCBzID1cbiAgbGV0IHMnID0gYmFzZSB+bmFtZTpcImNvbnN0XCIgeCBpblxuICBsZXQgXyA6IHN1YiA9IHMuc3ViIChmdW4gXyAtPiBzJy5lbWl0IHgpIGluXG4gIHMnXG5cbmxldCB0YXAgZiBzID1cbiAgbGV0IHMnID0gYmFzZSB+bmFtZTpcInRhcFwiIHMudmFsdWUgaW5cbiAgbGV0IF8gOiBzdWIgPVxuICAgIHMuc3ViIChmdW4geCAtPlxuICAgICAgICBmIHg7XG4gICAgICAgIHMnLmVtaXQgeClcbiAgaW5cbiAgcydcblxubGV0IHBhaXIgczEgczIgPVxuICBsZXQgc3VicyA9IFN1YnMuZW1wdHkgKCkgaW5cbiAgbGV0IHJlYyBzJyA9IHsgbmFtZSA9IFwicGFpclwiOyB2YWx1ZSA9IChzMS52YWx1ZSwgczIudmFsdWUpOyBlbWl0OyBzdWIgfVxuICBhbmQgZW1pdCA/KG5vdGlmeSA9IE5vdGlmaWNhdGlvbi5ub3cpIHggPVxuICAgIHMnLnZhbHVlIDwtIHg7XG4gICAgbm90aWZ5LmFkZCAoZnVuICgpIC0+IFN1YnMuZGlzcGF0Y2ggeCBzdWJzKVxuICBhbmQgc3ViID9sYWJlbCBrID1cbiAgICBTdWJzLmFkZCA/bGFiZWwgayBzdWJzO1xuICAgIGZ1biAoKSAtPiBTdWJzLnJlbW92ZSBrIHN1YnNcbiAgaW5cbiAgbGV0IF8gOiBzdWIgPSBzMS5zdWIgKGZ1biB4MSAtPiBlbWl0ICh4MSwgczIudmFsdWUpKSBpblxuICBsZXQgXyA6IHN1YiA9IHMyLnN1YiAoZnVuIHgyIC0+IGVtaXQgKHMxLnZhbHVlLCB4MikpIGluXG4gIHMnXG5cbmxldCB0cmlwbGUgczEgczIgczMgPVxuICBsZXQgc3VicyA9IFN1YnMuZW1wdHkgKCkgaW5cbiAgbGV0IHJlYyBzJyA9XG4gICAgeyBuYW1lID0gXCJ0cmlwbGVcIjsgdmFsdWUgPSAoczEudmFsdWUsIHMyLnZhbHVlLCBzMy52YWx1ZSk7IGVtaXQ7IHN1YiB9XG4gIGFuZCBlbWl0ID8obm90aWZ5ID0gTm90aWZpY2F0aW9uLm5vdykgeCA9XG4gICAgcycudmFsdWUgPC0geDtcbiAgICBub3RpZnkuYWRkIChmdW4gKCkgLT4gU3Vicy5kaXNwYXRjaCB4IHN1YnMpXG4gIGFuZCBzdWIgP2xhYmVsIGsgPVxuICAgIFN1YnMuYWRkID9sYWJlbCBrIHN1YnM7XG4gICAgZnVuICgpIC0+IFN1YnMucmVtb3ZlIGsgc3Vic1xuICBpblxuICBsZXQgXyA6IHN1YiA9IHMxLnN1YiAoZnVuIHgxIC0+IGVtaXQgKHgxLCBzMi52YWx1ZSwgczMudmFsdWUpKSBpblxuICBsZXQgXyA6IHN1YiA9IHMyLnN1YiAoZnVuIHgyIC0+IGVtaXQgKHMxLnZhbHVlLCB4MiwgczMudmFsdWUpKSBpblxuICBsZXQgXyA6IHN1YiA9IHMzLnN1YiAoZnVuIHgzIC0+IGVtaXQgKHMxLnZhbHVlLCBzMi52YWx1ZSwgeDMpKSBpblxuICBzJ1xuXG5sZXQgdDUgczEgczIgczMgczQgczUgPVxuICBsZXQgc3VicyA9IFN1YnMuZW1wdHkgKCkgaW5cbiAgbGV0IHJlYyBzJyA9XG4gICAge1xuICAgICAgbmFtZSA9IFwidDVcIjtcbiAgICAgIHZhbHVlID0gKHMxLnZhbHVlLCBzMi52YWx1ZSwgczMudmFsdWUsIHM0LnZhbHVlLCBzNS52YWx1ZSk7XG4gICAgICBlbWl0O1xuICAgICAgc3ViO1xuICAgIH1cbiAgYW5kIGVtaXQgPyhub3RpZnkgPSBOb3RpZmljYXRpb24ubm93KSB4ID1cbiAgICBzJy52YWx1ZSA8LSB4O1xuICAgIG5vdGlmeS5hZGQgKGZ1biAoKSAtPiBTdWJzLmRpc3BhdGNoIHggc3VicylcbiAgYW5kIHN1YiA/bGFiZWwgayA9XG4gICAgU3Vicy5hZGQgP2xhYmVsIGsgc3VicztcbiAgICBmdW4gKCkgLT4gU3Vicy5yZW1vdmUgayBzdWJzXG4gIGluXG4gIGxldCBfIDogc3ViID1cbiAgICBzMS5zdWIgKGZ1biB4MSAtPiBlbWl0ICh4MSwgczIudmFsdWUsIHMzLnZhbHVlLCBzNC52YWx1ZSwgczUudmFsdWUpKVxuICBpblxuICBsZXQgXyA6IHN1YiA9XG4gICAgczIuc3ViIChmdW4geDIgLT4gZW1pdCAoczEudmFsdWUsIHgyLCBzMy52YWx1ZSwgczQudmFsdWUsIHM1LnZhbHVlKSlcbiAgaW5cbiAgbGV0IF8gOiBzdWIgPVxuICAgIHMzLnN1YiAoZnVuIHgzIC0+IGVtaXQgKHMxLnZhbHVlLCBzMi52YWx1ZSwgeDMsIHM0LnZhbHVlLCBzNS52YWx1ZSkpXG4gIGluXG4gIGxldCBfIDogc3ViID1cbiAgICBzNC5zdWIgKGZ1biB4NCAtPiBlbWl0IChzMS52YWx1ZSwgczIudmFsdWUsIHMzLnZhbHVlLCB4NCwgczUudmFsdWUpKVxuICBpblxuICBsZXQgXyA6IHN1YiA9XG4gICAgczUuc3ViIChmdW4geDUgLT4gZW1pdCAoczEudmFsdWUsIHMyLnZhbHVlLCBzMy52YWx1ZSwgczQudmFsdWUsIHg1KSlcbiAgaW5cbiAgcydcblxubGV0IHQ2IHMxIHMyIHMzIHM0IHM1IHM2ID1cbiAgbGV0IHN1YnMgPSBTdWJzLmVtcHR5ICgpIGluXG4gIGxldCByZWMgcycgPVxuICAgIHtcbiAgICAgIG5hbWUgPSBcInQ2XCI7XG4gICAgICB2YWx1ZSA9IChzMS52YWx1ZSwgczIudmFsdWUsIHMzLnZhbHVlLCBzNC52YWx1ZSwgczUudmFsdWUsIHM2LnZhbHVlKTtcbiAgICAgIGVtaXQ7XG4gICAgICBzdWI7XG4gICAgfVxuICBhbmQgZW1pdCA/KG5vdGlmeSA9IE5vdGlmaWNhdGlvbi5ub3cpIHggPVxuICAgIHMnLnZhbHVlIDwtIHg7XG4gICAgbm90aWZ5LmFkZCAoZnVuICgpIC0+IFN1YnMuZGlzcGF0Y2ggeCBzdWJzKVxuICBhbmQgc3ViID9sYWJlbCBrID1cbiAgICBTdWJzLmFkZCA/bGFiZWwgayBzdWJzO1xuICAgIGZ1biAoKSAtPiBTdWJzLnJlbW92ZSBrIHN1YnNcbiAgaW5cbiAgbGV0IF8gOiBzdWIgPVxuICAgIHMxLnN1YiAoZnVuIHgxIC0+XG4gICAgICAgIGVtaXQgKHgxLCBzMi52YWx1ZSwgczMudmFsdWUsIHM0LnZhbHVlLCBzNS52YWx1ZSwgczYudmFsdWUpKVxuICBpblxuICBsZXQgXyA6IHN1YiA9XG4gICAgczIuc3ViIChmdW4geDIgLT5cbiAgICAgICAgZW1pdCAoczEudmFsdWUsIHgyLCBzMy52YWx1ZSwgczQudmFsdWUsIHM1LnZhbHVlLCBzNi52YWx1ZSkpXG4gIGluXG4gIGxldCBfIDogc3ViID1cbiAgICBzMy5zdWIgKGZ1biB4MyAtPlxuICAgICAgICBlbWl0IChzMS52YWx1ZSwgczIudmFsdWUsIHgzLCBzNC52YWx1ZSwgczUudmFsdWUsIHM2LnZhbHVlKSlcbiAgaW5cbiAgbGV0IF8gOiBzdWIgPVxuICAgIHM0LnN1YiAoZnVuIHg0IC0+XG4gICAgICAgIGVtaXQgKHMxLnZhbHVlLCBzMi52YWx1ZSwgczMudmFsdWUsIHg0LCBzNS52YWx1ZSwgczYudmFsdWUpKVxuICBpblxuICBsZXQgXyA6IHN1YiA9XG4gICAgczUuc3ViIChmdW4geDUgLT5cbiAgICAgICAgZW1pdCAoczEudmFsdWUsIHMyLnZhbHVlLCBzMy52YWx1ZSwgczQudmFsdWUsIHg1LCBzNi52YWx1ZSkpXG4gIGluXG4gIGxldCBfIDogc3ViID1cbiAgICBzNi5zdWIgKGZ1biB4NiAtPlxuICAgICAgICBlbWl0IChzMS52YWx1ZSwgczIudmFsdWUsIHMzLnZhbHVlLCBzNC52YWx1ZSwgczUudmFsdWUsIHg2KSlcbiAgaW5cbiAgcydcblxubGV0IGZpbHRlciBwcmVkIH5zZWVkIHMgPVxuICBsZXQgc3VicyA9IFN1YnMuZW1wdHkgKCkgaW5cbiAgbGV0IHN1YiA/bGFiZWwgayA9XG4gICAgU3Vicy5hZGQgP2xhYmVsIGsgc3VicztcbiAgICBmdW4gKCkgLT4gU3Vicy5yZW1vdmUgayBzdWJzXG4gIGluXG4gIGxldCByZWMgcycgPVxuICAgIHtcbiAgICAgIG5hbWUgPSBcImZpbHRlclwiO1xuICAgICAgdmFsdWUgPSAoaWYgcHJlZCBzLnZhbHVlIHRoZW4gcy52YWx1ZSBlbHNlIHNlZWQpO1xuICAgICAgZW1pdDtcbiAgICAgIHN1YjtcbiAgICB9XG4gIGFuZCBlbWl0ID8obm90aWZ5ID0gTm90aWZpY2F0aW9uLm5vdykgeCA9XG4gICAgaWYgcHJlZCB4IHRoZW4gKFxuICAgICAgcycudmFsdWUgPC0geDtcbiAgICAgIG5vdGlmeS5hZGQgKGZ1biAoKSAtPiBTdWJzLmRpc3BhdGNoIHggc3VicykpXG4gIGluXG4gIGxldCBfIDogc3ViID0gcy5zdWIgZW1pdCBpblxuICBzJ1xuXG5sZXQgZmlsdGVyX21hcCBmIH5zZWVkIHMgPVxuICBsZXQgc3VicyA9IFN1YnMuZW1wdHkgKCkgaW5cbiAgbGV0IHN1YiA/bGFiZWwgayA9XG4gICAgU3Vicy5hZGQgP2xhYmVsIGsgc3VicztcbiAgICBmdW4gKCkgLT4gU3Vicy5yZW1vdmUgayBzdWJzXG4gIGluXG4gIGxldCByZWMgcycgPVxuICAgIHtcbiAgICAgIG5hbWUgPSBcImZpbHRlcl9tYXBcIjtcbiAgICAgIHZhbHVlID0gKG1hdGNoIGYgcy52YWx1ZSB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBzZWVkKTtcbiAgICAgIGVtaXQ7XG4gICAgICBzdWI7XG4gICAgfVxuICBhbmQgZW1pdCA/KG5vdGlmeSA9IE5vdGlmaWNhdGlvbi5ub3cpIHggPVxuICAgIHMnLnZhbHVlIDwtIHg7XG4gICAgbm90aWZ5LmFkZCAoZnVuICgpIC0+IFN1YnMuZGlzcGF0Y2ggeCBzdWJzKVxuICBpblxuICBsZXQgXyA6IHN1YiA9XG4gICAgcy5zdWIgKGZ1biB4IC0+IG1hdGNoIGYgeCB3aXRoIFNvbWUgeCcgLT4gZW1pdCB4JyB8IE5vbmUgLT4gKCkpXG4gIGluXG4gIHMnXG5cbmxldCByZWR1Y2UgZiBpbml0IHMgPVxuICBsZXQgc3VicyA9IFN1YnMuZW1wdHkgKCkgaW5cbiAgbGV0IHN1YiA/bGFiZWwgayA9XG4gICAgU3Vicy5hZGQgP2xhYmVsIGsgc3VicztcbiAgICBmdW4gKCkgLT4gU3Vicy5yZW1vdmUgayBzdWJzXG4gIGluXG4gIGxldCByZWMgcycgPSB7IG5hbWUgPSBcInJlZHVjZVwiOyB2YWx1ZSA9IGYgaW5pdCBzLnZhbHVlOyBlbWl0OyBzdWIgfVxuICBhbmQgZW1pdCA/KG5vdGlmeSA9IE5vdGlmaWNhdGlvbi5ub3cpIHggPVxuICAgIHMnLnZhbHVlIDwtIHg7XG4gICAgbm90aWZ5LmFkZCAoZnVuICgpIC0+IFN1YnMuZGlzcGF0Y2ggeCBzdWJzKVxuICBpblxuICBsZXQgXyA6IHN1YiA9IHMuc3ViIChmdW4gdmFsdWUgLT4gcycuZW1pdCAoZiBzJy52YWx1ZSB2YWx1ZSkpIGluXG4gIHMnXG5cbmxldCByZWR1Y2VyIGYgaW5pdCA9XG4gIGxldCBldmVudHMgPSBiYXNlIH5uYW1lOlwicmVkdWNlclwiIE5vbmUgaW5cbiAgbGV0IHN0YXRlX3NpZ25hbCA9XG4gICAgcmVkdWNlXG4gICAgICAoZnVuIHN0YXRlIGV2ZW50X29wdCAtPlxuICAgICAgICBtYXRjaCBldmVudF9vcHQgd2l0aCBTb21lIGV2ZW50IC0+IGYgc3RhdGUgZXZlbnQgfCBOb25lIC0+IHN0YXRlKVxuICAgICAgaW5pdCBldmVudHNcbiAgaW5cbiAgbGV0IGRpc3BhdGNoIGV2ZW50ID0gZW1pdCAoU29tZSBldmVudCkgZXZlbnRzIGluXG4gIChzdGF0ZV9zaWduYWwsIGRpc3BhdGNoKVxuXG5sZXQgc2VsZWN0IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBpbnZhbGlkX2FyZyBcIlNpZ25hbC5zZWxlY3Q6IGVtcHR5IHNpZ25hbCBsaXN0XCJcbiAgfCBzMSA6OiBfIC0+XG4gICAgbGV0IHN1YnMgPSBTdWJzLmVtcHR5ICgpIGluXG4gICAgbGV0IHN1YiA/bGFiZWwgayA9XG4gICAgICBTdWJzLmFkZCA/bGFiZWwgayBzdWJzO1xuICAgICAgZnVuICgpIC0+IFN1YnMucmVtb3ZlIGsgc3Vic1xuICAgIGluXG4gICAgbGV0IHJlYyBzJyA9IHsgbmFtZSA9IFwic2VsZWN0XCI7IHZhbHVlID0gczEudmFsdWU7IGVtaXQ7IHN1YiB9XG4gICAgYW5kIGVtaXQgPyhub3RpZnkgPSBOb3RpZmljYXRpb24ubm93KSB4ID1cbiAgICAgIHMnLnZhbHVlIDwtIHg7XG4gICAgICBub3RpZnkuYWRkIChmdW4gKCkgLT4gU3Vicy5kaXNwYXRjaCB4IHN1YnMpXG4gICAgaW5cbiAgICBMaXN0Lml0ZXJcbiAgICAgIChmdW4gcyAtPlxuICAgICAgICBsZXQgXyA6IHN1YiA9IHMuc3ViIGVtaXQgaW5cbiAgICAgICAgKCkpXG4gICAgICBsO1xuICAgIHMnXG5cbmxldCB1bmlxID8oZXF1YWwgPSAoID09ICkpIHMgPVxuICBsZXQgc3VicyA9IFN1YnMuZW1wdHkgKCkgaW5cbiAgbGV0IHJlYyBzJyA9IHsgbmFtZSA9IFwidW5pcVwiOyB2YWx1ZSA9IHMudmFsdWU7IGVtaXQ7IHN1YiB9XG4gIGFuZCBlbWl0ID8obm90aWZ5ID0gTm90aWZpY2F0aW9uLm5vdykgeCA9XG4gICAgaWYgbm90IChlcXVhbCB4IHMnLnZhbHVlKSB0aGVuIChcbiAgICAgIHMnLnZhbHVlIDwtIHg7XG4gICAgICBub3RpZnkuYWRkIChmdW4gKCkgLT4gU3Vicy5kaXNwYXRjaCB4IHN1YnMpKVxuICBhbmQgc3ViID9sYWJlbCBrID1cbiAgICBTdWJzLmFkZCA/bGFiZWwgayBzdWJzO1xuICAgIGZ1biAoKSAtPiBTdWJzLnJlbW92ZSBrIHN1YnNcbiAgaW5cbiAgbGV0IF8gOiBzdWIgPSBzLnN1YiBlbWl0IGluXG4gIHMnXG5cbmxldCBtYXAyIGYgczEgczIgPVxuICBsZXQgc3VicyA9IFN1YnMuZW1wdHkgKCkgaW5cbiAgbGV0IHJlYyBzJyA9IHsgbmFtZSA9IFwibWFwMlwiOyB2YWx1ZSA9IGYgczEudmFsdWUgczIudmFsdWU7IGVtaXQ7IHN1YiB9XG4gIGFuZCBlbWl0ID8obm90aWZ5ID0gTm90aWZpY2F0aW9uLm5vdykgeCA9XG4gICAgcycudmFsdWUgPC0geDtcbiAgICBub3RpZnkuYWRkIChmdW4gKCkgLT4gU3Vicy5kaXNwYXRjaCB4IHN1YnMpXG4gIGFuZCBzdWIgP2xhYmVsIGsgPVxuICAgIFN1YnMuYWRkID9sYWJlbCBrIHN1YnM7XG4gICAgZnVuICgpIC0+IFN1YnMucmVtb3ZlIGsgc3Vic1xuICBpblxuICBsZXQgXyA6IHN1YiA9IHMxLnN1YiAoZnVuIHgxIC0+IGVtaXQgKGYgeDEgczIudmFsdWUpKSBpblxuICBsZXQgXyA6IHN1YiA9IHMyLnN1YiAoZnVuIHgyIC0+IGVtaXQgKGYgczEudmFsdWUgeDIpKSBpblxuICBzJ1xuXG5sZXQgbWFwMyBmIHMxIHMyIHMzID1cbiAgbGV0IHN1YnMgPSBTdWJzLmVtcHR5ICgpIGluXG4gIGxldCByZWMgcycgPVxuICAgIHsgbmFtZSA9IFwibWFwM1wiOyB2YWx1ZSA9IGYgczEudmFsdWUgczIudmFsdWUgczMudmFsdWU7IGVtaXQ7IHN1YiB9XG4gIGFuZCBlbWl0ID8obm90aWZ5ID0gTm90aWZpY2F0aW9uLm5vdykgeCA9XG4gICAgcycudmFsdWUgPC0geDtcbiAgICBub3RpZnkuYWRkIChmdW4gKCkgLT4gU3Vicy5kaXNwYXRjaCB4IHN1YnMpXG4gIGFuZCBzdWIgP2xhYmVsIGsgPVxuICAgIFN1YnMuYWRkID9sYWJlbCBrIHN1YnM7XG4gICAgZnVuICgpIC0+IFN1YnMucmVtb3ZlIGsgc3Vic1xuICBpblxuICBsZXQgXyA6IHN1YiA9IHMxLnN1YiAoZnVuIHgxIC0+IGVtaXQgKGYgeDEgczIudmFsdWUgczMudmFsdWUpKSBpblxuICBsZXQgXyA6IHN1YiA9IHMyLnN1YiAoZnVuIHgyIC0+IGVtaXQgKGYgczEudmFsdWUgeDIgczMudmFsdWUpKSBpblxuICBsZXQgXyA6IHN1YiA9IHMzLnN1YiAoZnVuIHgzIC0+IGVtaXQgKGYgczEudmFsdWUgczIudmFsdWUgeDMpKSBpblxuICBzJ1xuXG5sZXQgc2FtcGxlID9lcXVhbCB+b246czEgczIgPVxuICBsZXQgcycgPSBiYXNlID9lcXVhbCB+bmFtZTpcInNhbXBsZVwiIHMyLnZhbHVlIGluXG4gIGxldCBfIDogc3ViID0gczEuc3ViIChmdW4gXyAtPiBzJy5lbWl0IHMyLnZhbHVlKSBpblxuICBzJ1xuXG5sZXQgYXBwbHkgZl9zIHhfcyA9XG4gIGxldCBzdWJzID0gU3Vicy5lbXB0eSAoKSBpblxuICBsZXQgcmVjIHMnID0geyBuYW1lID0gXCJhcHBseVwiOyB2YWx1ZSA9IGZfcy52YWx1ZSB4X3MudmFsdWU7IGVtaXQ7IHN1YiB9XG4gIGFuZCBlbWl0ID8obm90aWZ5ID0gTm90aWZpY2F0aW9uLm5vdykgeCA9XG4gICAgcycudmFsdWUgPC0geDtcbiAgICBub3RpZnkuYWRkIChmdW4gKCkgLT4gU3Vicy5kaXNwYXRjaCB4IHN1YnMpXG4gIGFuZCBzdWIgP2xhYmVsIGsgPVxuICAgIFN1YnMuYWRkID9sYWJlbCBrIHN1YnM7XG4gICAgZnVuICgpIC0+IFN1YnMucmVtb3ZlIGsgc3Vic1xuICBpblxuICBsZXQgXyA6IHN1YiA9IGZfcy5zdWIgKGZ1biBmIC0+IGVtaXQgKGYgeF9zLnZhbHVlKSkgaW5cbiAgbGV0IF8gOiBzdWIgPSB4X3Muc3ViIChmdW4geCAtPiBlbWl0IChmX3MudmFsdWUgeCkpIGluXG4gIHMnXG5cbigqIGxldCBmb3J3YXJkIHMxIHMyID1cbiAgIHN1YiAoZnVuIHggLT4gZW1pdCB4IHMyKSAqKVxuXG5tb2R1bGUgU3ludGF4ID0gc3RydWN0XG4gIGxldCAoIGxldCsgKSBzIGYgPSBtYXAgZiBzXG4gIGxldCAoIGFuZCsgKSA9IHBhaXJcbiAgbGV0ICggPH4gKSA9IG1hcFxuICBsZXQgKCB+fiApID0gYXBwbHlcbmVuZFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX3VwZGF0ZV9kdW1teSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJjYW1sX2NhbGwzIiwiYTIiLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYl9MaXN0IiwiU3RkbGliIiwiQXNzZXJ0X2ZhaWx1cmUiLCJkdW1teSIsImRlZmF1bHRfZXF1YWwiLCJlbXB0eSIsInBhcmFtIiwiY3N0IiwiYWRkIiwib3B0IiwiayIsInN1YnMiLCJsYWJlbCIsImRpc3BhdGNoIiwieCIsInJlbW92ZSIsImwiLCJlcSIsInMyIiwiczEiLCJ5IiwiYWNjIiwidGwiLCJub3ciLCJuZXZlciIsInNjb3BlIiwiZnMiLCJydW4iLCJub3RpZmljYXRpb24iLCJpIiwiYmFzZSIsIm5hbWUiLCJ2YWx1ZSIsImVxdWFsIiwic3ViIiwicyIsImVtaXQiLCJub3RpZnkiLCJtYWtlIiwibnVsbCQiLCJnZXQiLCJzZXQiLCJ1cGRhdGUiLCJ0cmlnZ2VyIiwic3ViMiIsIngxIiwieDIiLCJ1c2UiLCJ1bnN1YiIsInVzZTIiLCJtYXAiLCJjb25zdCQiLCJ0YXAiLCJwYWlyIiwidHJpcGxlIiwiczMiLCJ4MyIsInQ1IiwiczQiLCJzNSIsIng0IiwieDUiLCJ0NiIsInM2IiwieDYiLCJmaWx0ZXIiLCJwcmVkIiwic2VlZCIsImV0YSIsImZpbHRlcl9tYXAiLCJtYXRjaCIsInJlZHVjZSIsImluaXQiLCJyZWR1Y2VyIiwiZXZlbnRzIiwic3RhdGVfc2lnbmFsIiwic3RhdGUiLCJldmVudF9vcHQiLCJldmVudCIsInNlbGVjdCIsInVuaXEiLCJtYXAyIiwibWFwMyIsInNhbXBsZSIsImFwcGx5IiwiZl9zIiwieF9zIiwibGV0JCJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLElBQUFDLG9CQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxpQkFBQTtBQUFBLElBQUFDLFFDeUVJO0FBQUEsWUFBQUMsY0FBQSxNRHpFSjtBQUFBLFlBQUFDLE1BQUFDLE9DcUNpQixjQUFNO0FBQUEs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QXhCLGdDQUF3QjtBQUFBLElBQUM7QUFBQSxHQUM1RDtBQUFBLFlBQUEyQixPQUFBbEQsT0FBQWQsSUFBQUQ7QUFBQUEsUUFBQWlCLElBR087QUFBQSxJQUNLLDhCQUFBN0IsT0FBaUIsaUNBQWdCO0FBQUEsSUFBQztBQUFBLEdBQzlDO0FBQUEsWUFBQThFLE1BQUFDLEtBQUFDO0FBQUFBLFFBQUEzRSxPQUdTLFVBQUF3QixJQUNYO0FBQUEsYUFBQUMsS0FBQTNCLEtBQUFLO0FBQUFBLFNBQUF1QixTQUNTO0FBQUEsS0FDUDtBQUFBLEtBQ0Esc0NBQUEvQixPQUFzQix3QkFBb0IsR0FBQztBQUFBO0FBQUEsYUFBQTRCLElBQUF0QixPQUFBRjtBQUFBQSxLQUUzQztBQUFBLEtBQXNCLGdCQUFBSixPQUNaLHNCQUFrQixFQUROO0FBQUEsSUFDTTtBQUFBLElBTjRCLGtDQUFuQjtBQUFBLElBUXpCLCtCQUFBYixHQUF1QixPQUFhLFFBQWIsc0JBQWE7QUFBQSxJQUNwQywrQkFBQXFCLEdBQXVCLE9BQWEsUUFBYixzQkFBYTtBQUFBLElBQUM7QUFBQSxHQUNqRDtBQUFBLFlBQUF5RSxLQUFBcEQsR0FBQTFDLEdBTWlCLGdCQUFPO0FBQUEsR0EzVDFCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFRDdIRiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQxNzY0LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6Imp4X2pzb28uY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL2hlbGl4L2p4L2pzb28vSnhfZmZpLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwidHlwZSB0XG5cbmV4dGVybmFsIHJhdyA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9wdXJlX2pzX2V4cHJcIlxuXG5sZXQgZ2xvYmFsX3RoaXMgPSByYXcgXCJnbG9iYWxUaGlzXCJcbmxldCBudWxsID0gcmF3IFwibnVsbFwiXG5sZXQgdW5kZWZpbmVkID0gcmF3IFwidW5kZWZpbmVkXCJcblxuZXh0ZXJuYWwgZGVidWdnZXIgOiB1bml0IC0+IHVuaXQgPSBcImRlYnVnZ2VyXCJcbmV4dGVybmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcbmV4dGVybmFsIHN0cmljdF9lcXVhbCA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4oKiBQcmltaXRpdmVzICopXG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHRvX2ludCA6IHQgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHQgPSBcImNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXCJcbmV4dGVybmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1wiXG5leHRlcm5hbCBvZl9ib29sIDogYm9vbCAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fYm9vbFwiXG5leHRlcm5hbCB0b19ib29sIDogdCAtPiBib29sID0gXCJjYW1sX2pzX3RvX2Jvb2xcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fZmxvYXRcIlxuZXh0ZXJuYWwgdG9fZmxvYXQgOiB0IC0+IGZsb2F0ID0gXCJjYW1sX2pzX3RvX2Zsb2F0XCJcblxuKCogQXJyYXkgKilcbmV4dGVybmFsIG9mX2FycmF5IDogJ2EgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2FycmF5XCJcbmV4dGVybmFsIHRvX2FycmF5IDogdCAtPiAnYSBhcnJheSA9IFwiY2FtbF9qc190b19hcnJheVwiXG5cbigqIExpc3QgKilcbmV4dGVybmFsIG9mX2xpc3QgOiB0IGxpc3QgLT4gdCA9IFwiY2FtbF9saXN0X3RvX2pzX2FycmF5XCJcbmV4dGVybmFsIHRvX2xpc3QgOiB0IC0+IHQgbGlzdCA9IFwiY2FtbF9saXN0X29mX2pzX2FycmF5XCJcblxuKCogT2JqICopXG5leHRlcm5hbCBnZXQgOiB0IC0+IHQgLT4gdCA9IFwiY2FtbF9qc19nZXRcIlxuZXh0ZXJuYWwgc2V0IDogdCAtPiB0IC0+IHQgLT4gdW5pdCA9IFwiY2FtbF9qc19zZXRcIlxuZXh0ZXJuYWwgZGVsIDogdCAtPiB0IC0+IHVuaXQgPSBcImNhbWxfanNfZGVsZXRlXCJcbmV4dGVybmFsIG9iaiA6IChzdHJpbmcgKiB0KSBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX29iamVjdFwiXG5leHRlcm5hbCBvYmpfbmV3IDogdCAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfbmV3XCJcbmV4dGVybmFsIG9ial9jYWxsIDogdCAtPiBzdHJpbmcgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX21ldGhfY2FsbFwiXG5cbigqIEZ1biAqKVxuZXh0ZXJuYWwgY2FsbCA6IHQgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX2Z1bl9jYWxsXCJcbmV4dGVybmFsIG9mX2Z1biA6IGludCAtPiAoXyAtPiBfKSAtPiB0ID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0XCJcblxuKCogdHlwZV9vZiAqKVxuXG5leHRlcm5hbCB0eXBlX29mIDogdCAtPiBzdHJpbmcgPSBcImNhbWxfanNfdHlwZW9mXCJcblxuKCogaW5zdGFuY2Vfb2YgKilcblxuZXh0ZXJuYWwgaW5zdGFuY2Vfb2YgOiB0IC0+IGNvbnN0cjp0IC0+IGJvb2wgPSBcImNhbWxfanNfaW5zdGFuY2VvZlwiXG4iXSwibmFtZXMiOlsicnVudGltZSIsImdsb2JhbF90aGlzIiwibnVsbCQiLCJ1bmRlZmluZWQkIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLGNDSWtCO0FBQUEsSUFBQUMsUUFDUDtBQUFBLElBQUFDLGFBQ0s7QUFBQSxHQUFlO0FBQUE7QUFBQTtBQUFBLEVETi9CIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDE3ODAsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoianhfanNvby5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NoZWNrX2JvdW5kIiwiY2FtbF9qc19kZWxldGUiLCJjYW1sX2pzX2Zyb21fYXJyYXkiLCJjYW1sX2pzX2Z1bl9jYWxsIiwiY2FtbF9qc19nZXQiLCJjYW1sX2pzX2luc3RhbmNlb2YiLCJjYW1sX2pzX21ldGhfY2FsbCIsImNhbWxfanNfc2V0IiwiY2FtbF9qc190b19hcnJheSIsImNhbWxfanNfdHlwZW9mIiwiY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdCIsImNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nIiwiY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlIiwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmciLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWIiLCJTdGRsaWJfQXJyYXkiLCJTdGRsaWJfTGlzdCIsIkp4X0p4X2ZmaSIsIlN0ZGxpYl9GbG9hdCIsIlN0ZGxpYl9TdHJpbmciLCJudWxsJCIsInVuZGVmaW5lZCQiLCJlcXVhbCIsInN0cmljdF9lcXVhbCIsImRlYnVnZ2VyJCIsImlzX251bGwiLCJ2IiwiaXNfdW5kZWZpbmVkIiwiaXNfZGVmaW5lZCIsImlzX251bWJlciIsImpzIiwiaXNfYm9vbGVhbiIsImlzX3N0cmluZyIsImlzX29iamVjdCIsInJhdyIsImlzX2ludCIsIlVuZGVmaW5lZF9wcm9wZXJ0eSIsImdsb2JhbCIsImsiLCJ4Iiwib2ZfanMiLCJ0b19qcyIsIm9iaiIsInQiLCJlbXB0eSIsInBhcmFtIiwib2ZfbGlzdCIsImVudHJpZXMiLCJuYW1lIiwidG9fbGlzdCIsImVudHJ5X2FyciIsIm9mX2FycmF5IiwiY3JlYXRlIiwiZ2V0X3Byb3RvdHlwZSIsInNldF9wcm90b3R5cGUiLCJwcm90byIsImdldCIsImRlY29kZSIsImdldF9vcHQiLCJnZXRfcGF0aCIsInBhdGgiLCJnZXRfcGF0aF9vcHQiLCJzZXQiLCJlbmNvZGUiLCJ4X2pzIiwic2V0X3BhdGgiLCJkZWwiLCJoYXMiLCJoYXNfanMiLCJrX2pzIiwiY2FsbF9qc191bml0IiwidGhpcyQiLCJhcmdzIiwiY2FsbDAiLCJmX2siLCJyZXR1cm4kIiwiY2FsbDEiLCJhIiwiY2FsbDIiLCJlbmNvZGVfYSIsImVuY29kZV9iIiwiYiIsImNhbGwzIiwiZW5jb2RlX2MiLCJjIiwiY2FsbDQiLCJlbmNvZGVfZCIsImQiLCJjYWxsNSIsImVuY29kZV9lIiwiZSIsImNhbGw2IiwiZW5jb2RlX2YiLCJjYWxsNyIsImVuY29kZV9nIiwiZyIsImNhbGw4IiwiZW5jb2RlX2giLCJoIiwiY2FsbDkiLCJlbmNvZGVfaSIsImkiLCJjYWxsMF91bml0IiwiY2FsbDFfdW5pdCIsImNhbGwyX3VuaXQiLCJjYWxsM191bml0IiwiY2FsbDRfdW5pdCIsImNhbGw1X3VuaXQiLCJjYWxsNl91bml0IiwiY2FsbDdfdW5pdCIsImNhbGw4X3VuaXQiLCJjYWxsOV91bml0IiwibmV3MCIsIm5ldzEiLCJuZXcyIiwibmV3MyIsIm5ldzQiLCJuZXc1IiwibmV3NiIsIm5ldzciLCJuZXc4IiwibmV3OSIsIm5ld19qcyIsImlzX2FycmF5IiwiYXJyIiwidW5pdCIsImludCIsImZsb2F0IiwiYm9vbCIsImFycmF5IiwicGFpciIsInRvX2pzX3giLCJ0b19qc195IiwieSIsInRyaXBsZSIsInRvX2pzX3oiLCJ6IiwibnVsbGFibGUiLCJvcHRpb25hbCIsImZ1bjAiLCJmdW4xIiwiZnVuMiIsImZ1bjMiLCJmdW40IiwiZnVuNSIsImZ1bjYiLCJmdW43IiwiZnVuOCIsImZ1bjkiLCJhbnkiLCJhcnJheV9qcyIsIm9mX2pzX3giLCJvZl9qc195IiwibGVuIiwieV9qcyIsIm9mX2pzX3oiLCJ6X2pzIiwiZmllbGQiLCJkZWNvZGVyIiwib3IiLCJkZWNvZGVyMSIsImRlY29kZXIyIiwiZXhuIiwiZl9qcyIsImNvbnNvbGUiLCJsb2ciLCJzdHJpbmciLCJkZWJ1ZyIsImxzdCIsImdsb2JhbF90aGlzIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxxQkFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLHFCQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyxpQkFBQTtBQUFBLElBQUFDLCtCQUFBO0FBQUEsSUFBQUMsMEJBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLElBQUFDLDBCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLFlBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyxRQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLFFBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsWUFBQUMsVUFBQTtBQUFBLFlBQUFDLFFBQUFDLEdBQUEsMkJBQUE7QUFBQSxZQUFBQyxhQUFBRCxHQUFBLGdDQUFBO0FBQUEsWUFBQUUsV0FBQUYsR0FBQSxnQ0FBQTtBQUFBLFlBQUFHLFVB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R0FBQUksR0FBQUc7QUFBQUEsUUFBQSxJQUFBLDZCQUFBO0FBQUEsSUFBQSxnQ0FBQTtBQUFBLElBQUE7QUFBQTtBQUFBLFlBQUFzQjtBQUFBQSxJQUFBaEUsS0FBQWdDLEtBQUFLLFVBQUFDLFVBQUFHLFVBQUFHLFVBQUFULEdBQUFJLEdBQUFHLEdBQUFHO0FBQUFBO0FBQUFBLEtBQUEsSUFBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsSUFBQSxnQ0FBQTtBQUFBLElBQUE7QUFBQTtBQUFBLFlBQUFvQjtBQUFBQSxJQUFBakUsS0FBQWdDLEtBQUFLLFVBQUFDLFVBQUFHLFVBQUFHLFVBQUFHLFVBQUFaLEdBQUFJLEdBQUFHLEdBQUFHLEdBQUFHO0FBQUFBO0FBQUFBLEtBQUEsSUFBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLElBQUEsZ0NBQUE7QUFBQSxJQUFBO0FBQUE7QUFBQSxZQUFBa0I7QUFBQUEsSUFBQWxFO0FBQUFBLElBQUFnQztBQUFBQSxJQUFBSztBQUFBQSxJQUFBQztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBZjtBQUFBQSxJQUFBSTtBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBL0U7QUFBQUE7QUFBQUEsS0FBQSxJQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLElBQUEsZ0NBQUE7QUFBQSxJQUFBO0FBQUE7QUFBQSxZQUFBa0c7QUFBQUEsSUFBQW5FO0FBQUFBLElBQUFnQztBQUFBQSxJQUFBSztBQUFBQSxJQUFBQztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRTtBQUFBQSxJQUFBakI7QUFBQUEsSUFBQUk7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQS9FO0FBQUFBLElBQUFvRjtBQUFBQTtBQUFBQSxLQUFBLElBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLElBQUE7QUFBQSxvQkFBQTtBQUFBLElBQUE7QUFBQTtBQUFBLFlBQUFlO0FBQUFBLElBQUFwRTtBQUFBQSxJQUFBZ0M7QUFBQUEsSUFBQUs7QUFBQUEsSUFBQUM7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUU7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQXBCO0FBQUFBLElBQUFJO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUEvRTtBQUFBQSxJQUFBb0Y7QUFBQUEsSUFBQUc7QUFBQUE7QUFBQUEsS0FBQSxJQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsSUFBQTtBQUFBLG9CQUFBO0FBQUEsSUFBQTtBQUFBO0FBQUEsWUFBQWE7QUFBQUEsSUFBQXJFO0FBQUFBLElBQUFnQztBQUFBQSxJQUFBSztBQUFBQSxJQUFBQztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRTtBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBdkI7QUFBQUEsSUFBQUk7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQS9FO0FBQUFBLElBQUFvRjtBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQTtBQUFBQSxLQUFBLElBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsSUFBQTtBQUFBLG9CQUFBO0FBQUEsSUFBQTtBQUFBO0FBQUEsWUFBQVcsS0FBQXRFLEtBQUEsY0FBQTtBQUFBLFlBQUF1RSxLQUFBdkUsS0FBQXFCLFFBQUFjLEdBQUEsT0FBQSxRQUFBLHNCQUFBO0FBQUEsWUFBQXFDLEtBQUF4RSxLQUFBcUMsVUFBQUMsVUFBQUgsR0FBQUk7QUFBQUEsUUFBQSxJQUFBO0FBQUEsSUFBQSxPQUFBLFFBQUEsMkJBQUE7QUFBQTtBQUFBLFlBQUFrQyxLQUFBekUsS0FBQXFDLFVBQUFDLFVBQUFHLFVBQUFOLEdBQUFJLEdBQUFHO0FBQUFBLFFBQUEsSUFBQSw2QkFBQTtBQUFBLElBQUEsT0FBQSxRQUFBLDhCQUFBO0FBQUE7QUFBQSxZQUFBZ0MsS0FBQTFFLEtBQUFxQyxVQUFBQyxVQUFBRyxVQUFBRyxVQUFBVCxHQUFBSSxHQUFBRyxHQUFBRztBQUFBQTtBQUFBQSxLQUFBLElBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLElBQUEsT0FBQSxRQUFBLGlDQUFBO0FBQUE7QUFBQSxZQUFBOEI7QUFBQUEsSUFBQTNFLEtBQUFxQyxVQUFBQyxVQUFBRyxVQUFBRyxVQUFBRyxVQUFBWixHQUFBSSxHQUFBRyxHQUFBRyxHQUFBRztBQUFBQTtBQUFBQSxLQUFBLElBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxJQUFBLE9BQUEsUUFBQSxvQ0FBQTtBQUFBO0FBQUEsWUFBQTRCO0FBQUFBLElBQUE1RTtBQUFBQSxJQUFBcUM7QUFBQUEsSUFBQUM7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQWY7QUFBQUEsSUFBQUk7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQS9FO0FBQUFBO0FBQUFBLEtBQUEsSUFBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxJQUFBLE9BQUEsUUFBQSx1Q0FBQTtBQUFBO0FBQUEsWUFBQTRHO0FBQUFBLElBQUE3RTtBQUFBQSxJQUFBcUM7QUFBQUEsSUFBQUM7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUU7QUFBQUEsSUFBQWpCO0FBQUFBLElBQUFJO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUEvRTtBQUFBQSxJQUFBb0Y7QUFBQUE7QUFBQUEsS0FBQSxJQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxJQUFBLE9BQUEsUUFBQSwwQ0FBQTtBQUFBO0FBQUEsWUFBQXlCO0FBQUFBLElBQUE5RTtBQUFBQSxJQUFBcUM7QUFBQUEsSUFBQUM7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUU7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQXBCO0FBQUFBLElBQUFJO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUEvRTtBQUFBQSxJQUFBb0Y7QUFBQUEsSUFBQUc7QUFBQUE7QUFBQUEsS0FBQSxJQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsSUFBQSxPQUFBLFFBQUEsNkNBQUE7QUFBQTtBQUFBLFlBQUF1QjtBQUFBQSxJQUFBL0U7QUFBQUEsSUFBQXFDO0FBQUFBLElBQUFDO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFFO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUF2QjtBQUFBQSxJQUFBSTtBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBL0U7QUFBQUEsSUFBQW9GO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBO0FBQUFBLEtBQUEsSUFBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxJQUFBLE9BQUEsUUFBQSxnREFBQTtBQUFBO0FBQUEsT0FBQXFCLFNBQUEscUJBQUEv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QUFBQSxJQUFBO0FBQUE7QUFBQSxZQUFBa0I7QUFBQUEsSUFBQXVEO0FBQUFBLElBQUFwRjtBQUFBQSxJQUFBQztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBZjtBQUFBQSxJQUFBSTtBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBL0U7QUFBQUE7QUFBQUEsS0FBQSxJQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLElBQUEsS0FBQTtBQUFBLElBQUE7QUFBQTtBQUFBLFlBQUFrRztBQUFBQSxJQUFBc0Q7QUFBQUEsSUFBQXBGO0FBQUFBLElBQUFDO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFFO0FBQUFBLElBQUFqQjtBQUFBQSxJQUFBSTtBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBL0U7QUFBQUEsSUFBQW9GO0FBQUFBO0FBQUFBLEtBQUEsSUFBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsSUFBQSxLQUFBO0FBQUEsSUFBQTtBQUFBO0FBQUEsWUFBQWU7QUFBQUEsSUFBQXFEO0FBQUFBLElBQUFwRjtBQUFBQSxJQUFBQztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRTtBQUFBQSxJQUFBRztBQUFBQSxJQUFBcEI7QUFBQUEsSUFBQUk7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQS9FO0FBQUFBLElBQUFvRjtBQUFBQSxJQUFBRztBQUFBQTtBQUFBQSxLQUFBLElBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxJQUFBLEtBQUE7QUFBQSxJQUFBO0FBQUE7QUFBQSxZQUFBYTtBQUFBQSxJQUFBb0Q7QUFBQUEsSUFBQXBGO0FBQUFBLElBQUFDO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFFO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUF2QjtBQUFBQSxJQUFBSTtBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBL0U7QUFBQUEsSUFBQW9GO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBO0FBQUFBLEtBQUEsSUFBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxJQUFBLEtBQUE7QUFBQSxJQUFBO0FBQUE7QUFBQSxZQUFBL0IsZUFBQTNELEdBQUE2RCxNQUFBLDJCQUFBLFNBQUE7QUFBQSxPQUFBNEYsVUFBQTtBQUFBLFlBQUFDLElBQUE5SCxHQUFBLDJDQUFBO0FBQUEsT0FBQStILFNBQUE7QUFBQSxZQUFBQyxNQUFBQztBQUFBQSxJQUFBLE9BQUEsSUFBQSxjQUFBLGtDQUFBO0FBQUE7QUFBQSxPQUFBQyxjQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBQUEiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0Mjk2OSwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGR3ZWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL2hlbGl4L3N0ZHdlYi9TdGR3ZWJfZ2xvYmFsLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwibGV0IHdpbmRvdyA9IEp4Lmdsb2JhbCBcIndpbmRvd1wiXG5sZXQgZG9jdW1lbnQgPSBKeC5nbG9iYWwgXCJkb2N1bWVudFwiXG5sZXQgY29uc29sZSA9IEp4Lmdsb2JhbCBcImNvbnNvbGVcIlxubGV0IG5hdmlnYXRvciA9IEp4Lmdsb2JhbCBcIm5hdmlnYXRvclwiXG5cbmxldCBlbmNvZGVfdXJpX2NvbXBvbmVudCA9XG4gIGxldCBmID0gSnguZ2xvYmFsIFwiZW5jb2RlVVJJQ29tcG9uZW50XCIgaW5cbiAgSnguRnVuLmNhbGwxIGYgfnJldHVybjpKeC5EZWNvZGVyLnN0cmluZyBKeC5FbmNvZGVyLnN0cmluZ1xuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMyIsImExIiwiYTIiLCJKeCIsIndpbmRvdyIsImRvY3VtZW50IiwiY29uc29sZSIsIm5hdmlnYXRvciIsImVuY29kZV91cmlfY29tcG9uZW50Il0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRSxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxLQUFBO0FBQUEsSUFBQUMsU0NBYTtBQUFBLElBQUFDLFdBQ0U7QUFBQSxJQUFBQyxVQUNEO0FBQUEsSUFBQUMsWUFDRTtBQUFBLElBQUFULElBR047QUFBQSxJQUFBVSx1QkFDUjtBQUFBLEdBQTBEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFRFA1RCIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQzMDAxLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZHdlYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvaGVsaXgvc3Rkd2ViL1N0ZHdlYl9wcm9taXNlLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwidHlwZSAnYSB0ID0gSngudFxudHlwZSAoJ2EsICdlcnIpIGV4ZWN1dG9yID0gKCdhIC0+IHVuaXQpIC0+ICgnZXJyIC0+IHVuaXQpIC0+IHVuaXRcblxubGV0IHRvX2pzIHAgPSBwXG5sZXQgb2ZfanMganMgPSBqc1xubGV0IHQgPSBKeC5nbG9iYWwgXCJQcm9taXNlXCJcbmxldCBtYWtlIGV4ZWN1dG9yID0gSnguT2JqLm5ldzEgdCBKeC5FbmNvZGVyLmZ1bjEgZXhlY3V0b3JcbmxldCByZXNvbHZlIHYgPSBKeC5PYmouY2FsbDEgdCBcInJlc29sdmVcIiB+cmV0dXJuOm9mX2pzIEp4LkVuY29kZXIuYW55IHZcbmxldCByZWplY3QgZXJyID0gSnguT2JqLmNhbGwxIHQgXCJyZWplY3RcIiB+cmV0dXJuOm9mX2pzIEp4LkVuY29kZXIuYW55IGVyclxubGV0IGFuZF90aGVuIGYgcCA9IEp4Lk9iai5jYWxsMSBwIFwidGhlblwiIH5yZXR1cm46b2ZfanMgSnguRW5jb2Rlci5mdW4xIGZcbmxldCBtYXAgZiBwID0gYW5kX3RoZW4gKGZ1biB4IC0+IHJlc29sdmUgKGYgeCkpIHBcbmxldCB1c2UgZiBwID0gSnguT2JqLmNhbGwxX3VuaXQgcCBcInRoZW5cIiBKeC5FbmNvZGVyLmZ1bjEgZlxubGV0IGNhdGNoIGYgcCA9IEp4Lk9iai5jYWxsMV91bml0IHAgXCJjYXRjaFwiIEp4LkVuY29kZXIuZnVuMSBmXG5sZXQgaWdub3JlIHAgPSB1c2UgaWdub3JlIHBcblxubW9kdWxlIFN5bnRheCA9IHN0cnVjdFxuICBsZXQgKCBsZXQqICkgcCBmID0gYW5kX3RoZW4gZiBwXG5lbmRcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDMiLCJhMSIsImEyIiwiY2FtbF9jYWxsNCIsImEzIiwiY2FtbF9jYWxsNSIsImE0IiwiSngiLCJ0b19qcyIsInAiLCJvZl9qcyIsImpzIiwidCIsIm1ha2UiLCJleGVjdXRvciIsInJlc29sdmUiLCJ2IiwicmVqZWN0IiwiZXJyIiwiY3N0X3RoZW4iLCJhbmRfdGhlbiIsIm1hcCIsIngiLCJ1c2UiLCJjYXRjaCQiLCJpZ25vcmUiLCJsZXQkIl0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRSxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUwsR0FBQUMsSUFBQUUsSUFBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFQLEdBQUFDLElBQUFFLElBQUFDLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxPQUFBQyxLQUFBO0FBQUEsWUFBQUMsTUFBQUMsR0NHYyxTQUFDO0FBQUEsWUFBQUMsTUFBQUMsSUFDQSxVQUFFO0FBQUEsT0FBQUMsSUFDVDtBQUFBLFlBQUFDLEtBQUFDO0FBQUFBLElBQ1ksc0RBQXNDO0FBQUE7QUFBQSxZQUFBQyxRQUFBQztBQUFBQSxJQUMxQyxpRUFBdUQ7QUFBQTtBQUFBLFlBQUFDLE9BQUFDO0FBQUFBLElBQ3RELGtFQUF3RDtBQUFBO0FBQUEsT0FBQUMsV0RSekU7QUFBQSxZQUFBQyxTQUFBdEIsR0FBQVc7QUFBQUEsSUNTbUIsZ0VBQXFEO0FBQUE7QUFBQSxZQUFBWSxJQUFBdkIsR0FBQVc7QUFBQUEsSUFDMUQseUJBQUFhLEdBQTJCLE9BQUssUUFBTCxpQkFBSyxNQUFHO0FBQUE7QUFBQSxZQUFBQyxJQUFBekIsR0FBQVc7QUFBQUEsSUFDbkMseURBQTRDO0FBQUE7QUFBQSxZQUFBZSxPQUFBMUIsR0FBQVc7QUFBQUEsSUFDMUMsd0RBQTZDO0FBQUE7QUFBQSxZQUFBZ0IsT0FBQWhCLEdBQzlDLHVCRGJmLGNDYTJCO0FBQUEsWUFBQWlCLEtBQUFqQixHQUFBWCxHQUdOLHFCQUFZO0FBQUEsR0FYTjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRURMM0IiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0MzA3NSwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGR3ZWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL2hlbGl4L3N0ZHdlYi9TdGR3ZWJfZG9tLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwibW9kdWxlIEdsb2JhbCA9IFN0ZHdlYl9nbG9iYWxcbm1vZHVsZSBQcm9taXNlID0gU3Rkd2ViX3Byb21pc2VcblxudHlwZSBub2RlID0gSngudFxudHlwZSBldmVudCA9IEp4LnRcblxuKCogU3R5bGUgKilcblxudHlwZSBzdHlsZSA9IEp4LnRcblxubW9kdWxlIFN0eWxlID0gc3RydWN0XG4gIHR5cGUgdCA9IHN0eWxlXG5cbiAgbGV0IHRleHQgdGhpcyA9IEp4Lk9iai5nZXQgdGhpcyBcImNzc1RleHRcIiBKeC5EZWNvZGVyLnN0cmluZ1xuICBsZXQgbGVuZ3RoIHRoaXMgPSBKeC5PYmouZ2V0IHRoaXMgXCJsZW5ndGhcIiBKeC5EZWNvZGVyLmludFxuXG4gIGxldCBzZXQgdGhpcyBuYW1lIHZhbHVlID1cbiAgICBKeC5PYmouY2FsbF9qc191bml0IHRoaXMgXCJzZXRQcm9wZXJ0eVwiXG4gICAgICBbfCBKeC5FbmNvZGVyLnN0cmluZyBuYW1lOyBKeC5FbmNvZGVyLnN0cmluZyB2YWx1ZSB8XVxuXG4gIGxldCB1bnNldCB0YXJnZXQgbmFtZSA9XG4gICAgSnguT2JqLmNhbGxfanNfdW5pdCB0YXJnZXQgXCJyZW1vdmVQcm9wZXJ0eVwiIFt8IEp4LkVuY29kZXIuc3RyaW5nIG5hbWUgfF1cblxuICBsZXQgZ2V0IHRoaXMgbmFtZSA9XG4gICAgSnguRGVjb2Rlci5zdHJpbmdcbiAgICAgIChKeC5PYmouY2FsbF9qcyB0aGlzIFwic2V0UHJvcGVydHlcIiBbfCBKeC5FbmNvZGVyLnN0cmluZyBuYW1lIHxdKVxuZW5kXG5cbigqIERPTSBldmVudHMgKilcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIHR5cGUgbmFtZSA9IEp4LnRcblxuICBtb2R1bGUgTmFtZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEp4LnRcblxuICAgIGxldCB0b19zdHJpbmcgPSBKeC5EZWNvZGVyLnN0cmluZ1xuICAgIGxldCBtYWtlID0gSnguRW5jb2Rlci5zdHJpbmdcbiAgZW5kXG5cbiAgdHlwZSB0ID0gZXZlbnRcblxuICBsZXQgdGFyZ2V0IHQgPSBKeC5PYmouZ2V0IHQgXCJ0YXJnZXRcIiBKeC5EZWNvZGVyLmFueVxuICBsZXQgcHJldmVudF9kZWZhdWx0IHQgPSBKeC5PYmouY2FsbDBfdW5pdCB0IFwicHJldmVudERlZmF1bHRcIiAoKVxuXG4gICgqIEdlbmVyaWMgZXZlbnRzICopXG5cbiAgbGV0IGNoYW5nZSA9IE5hbWUubWFrZSBcImNoYW5nZVwiXG5cbiAgKCogVUkgZXZlbnRzICopXG5cbiAgbGV0IHJlc2l6ZSA9IE5hbWUubWFrZSBcInJlc2l6ZVwiXG5cbiAgKCogTW91c2UgKilcblxuICBsZXQgY2xpY2sgPSBKeC5FbmNvZGVyLnN0cmluZyBcImNsaWNrXCJcbiAgbGV0IGRibGNsaWNrID0gSnguRW5jb2Rlci5zdHJpbmcgXCJkYmxjbGlja1wiXG4gIGxldCBtb3VzZW1vdmUgPSBKeC5FbmNvZGVyLnN0cmluZyBcIm1vdXNlbW92ZVwiXG4gIGxldCBwYWdlX3ggdGhpcyA9IEp4Lk9iai5nZXQgdGhpcyBcInBhZ2VYXCIgSnguRGVjb2Rlci5mbG9hdFxuICBsZXQgcGFnZV95IHRoaXMgPSBKeC5PYmouZ2V0IHRoaXMgXCJwYWdlWVwiIEp4LkRlY29kZXIuZmxvYXRcblxuICAoKiBLZXlib2FyZCBldmVudHMgKilcblxuICBsZXQga2V5ZG93biA9IE5hbWUubWFrZSBcImtleWRvd25cIlxuICBsZXQga2V5IHRoaXMgPSBKeC5PYmouZ2V0IHRoaXMgXCJrZXlcIiBKeC5EZWNvZGVyLnN0cmluZ1xuICBsZXQgY29kZSB0aGlzID0gSnguT2JqLmdldCB0aGlzIFwia2V5Q29kZVwiIEp4LkRlY29kZXIuc3RyaW5nXG5cbiAgKCogSW5wdXQgKilcblxuICBsZXQgYmVmb3JlX2lucHV0ID0gTmFtZS5tYWtlIFwiYmVmb3JlaW5wdXRcIlxuICBsZXQgaW5wdXQgPSBOYW1lLm1ha2UgXCJpbnB1dFwiXG4gIGxldCBjYW5jZWwgPSBOYW1lLm1ha2UgXCJjYW5jZWxcIlxuICBsZXQgZGF0YSB0aGlzID0gSnguT2JqLmdldCB0aGlzIFwiZGF0YVwiIEp4LkRlY29kZXIuc3RyaW5nXG5cbiAgKCogRnVsbHNjcmVlbiBldmVudHMgKilcbiAgbGV0IGZ1bGxzY3JlZW5fY2hhbmdlID0gTmFtZS5tYWtlIFwiZnVsbHNjcmVlbmNoYW5nZVwiXG4gIGxldCBmdWxsc2NyZWVuX2Vycm9yID0gTmFtZS5tYWtlIFwiZnVsbHNjcmVlbmVycm9yXCJcblxuICAoKiBQb3Agc3RhdGUgZXZlbnRzICopXG4gIGxldCBwb3BzdGF0ZSA9IE5hbWUubWFrZSBcInBvcHN0YXRlXCJcblxuICAoKiBIYXNoIGNoYW5nZSBldmVudHMgKilcbiAgbGV0IGhhc2hjaGFuZ2UgPSBOYW1lLm1ha2UgXCJoYXNoY2hhbmdlXCJcblxuICAoKiBGb2N1cyBldmVudHMgKilcbiAgbGV0IGJsdXIgPSBOYW1lLm1ha2UgXCJibHVyXCJcbiAgbGV0IGZvY3VzaW4gPSBOYW1lLm1ha2UgXCJmb2N1c2luXCJcbiAgbGV0IGZvY3Vzb3V0ID0gTmFtZS5tYWtlIFwiZm9jdXNvdXRcIlxuXG4gICgqIFN1Ym1pdCBldmVudHMgKilcbiAgbGV0IHN1Ym1pdCA9IE5hbWUubWFrZSBcInN1Ym1pdFwiXG5lbmRcblxubW9kdWxlIFRva2VuX2xpc3QgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSngudFxuXG4gIGxldCB0b2dnbGUgdGhpcyBuYW1lID0gSnguT2JqLmNhbGwxX3VuaXQgdGhpcyBcInRvZ2dsZVwiIEp4LkVuY29kZXIuc3RyaW5nIG5hbWVcbiAgbGV0IGFkZCB0aGlzIG5hbWUgPSBKeC5PYmouY2FsbDFfdW5pdCB0aGlzIFwiYWRkXCIgSnguRW5jb2Rlci5zdHJpbmcgbmFtZVxuICBsZXQgcmVtb3ZlIHRoaXMgbmFtZSA9IEp4Lk9iai5jYWxsMV91bml0IHRoaXMgXCJyZW1vdmVcIiBKeC5FbmNvZGVyLnN0cmluZyBuYW1lXG5lbmRcblxubW9kdWxlIEJsb2IgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSngudFxuXG4gIGxldCBzaXplIHQgPSBKeC5PYmouZ2V0IHQgXCJzaXplXCIgSnguRGVjb2Rlci5pbnRcbiAgbGV0IHR5cGUnIHQgPSBKeC5PYmouZ2V0IHQgXCJ0eXBlXCIgSnguRGVjb2Rlci5zdHJpbmdcblxuICBsZXQgdGV4dCB0ID1cbiAgICBKeC5PYmouY2FsbDAgdCBcInRleHRcIiB+cmV0dXJuOlByb21pc2Uub2ZfanMgKClcbiAgICB8PiBQcm9taXNlLm1hcCBKeC5EZWNvZGVyLnN0cmluZ1xuZW5kXG5cbm1vZHVsZSBGaWxlID0gc3RydWN0XG4gIHR5cGUgdCA9IEp4LnRcblxuICBsZXQgbGFzdF9tb2RpZmllZCB0ID0gSnguT2JqLmdldCB0IFwibGFzdF9tb2RpZmllZFwiIEp4LkRlY29kZXIuZmxvYXRcbiAgbGV0IG5hbWUgdCA9IEp4Lk9iai5nZXQgdCBcIm5hbWVcIiBKeC5EZWNvZGVyLnN0cmluZ1xuICBsZXQgdG9fYmxvYiB0ID0gdFxuZW5kXG5cbm1vZHVsZSBOb2RlID0gc3RydWN0XG4gIHR5cGUgdCA9IG5vZGVcblxuICAoKiBDb252ZXJzaW9ucyAqKVxuXG4gIGxldCB0b19qcyB0ID0gdFxuXG4gICgqIFRyYXZlcnNhbCAqKVxuXG4gIGxldCBwYXJlbnQgdGhpcyA9IEp4Lk9iai5nZXQgdGhpcyBcInBhcmVudE5vZGVcIiBKeC5EZWNvZGVyLihudWxsYWJsZSBqcylcbiAgbGV0IGZpcnN0X2NoaWxkIHRoaXMgPSBKeC5PYmouZ2V0IHRoaXMgXCJmaXJzdENoaWxkXCIgSnguRGVjb2Rlci4obnVsbGFibGUganMpXG4gIGxldCBsYXN0X2NoaWxkIHRoaXMgPSBKeC5PYmouZ2V0IHRoaXMgXCJsYXN0Q2hpbGRcIiBKeC5EZWNvZGVyLihudWxsYWJsZSBqcylcbiAgbGV0IG5leHRfc2libGluZyB0aGlzID0gSnguT2JqLmdldCB0aGlzIFwibmV4dFNpYmxpbmdcIiBKeC5EZWNvZGVyLihudWxsYWJsZSBqcylcbiAgbGV0IF9uZXh0X3NpYmxpbmdfanMgdGhpcyA9IEp4Lk9iai5nZXQgdGhpcyBcIm5leHRTaWJsaW5nXCIgSnguRGVjb2Rlci5qc1xuXG4gIGxldCBpdGVyX2NoaWxkcmVuIHRoaXMgZiA9XG4gICAgbGV0IG5vZGVfbGlzdCA9IEp4Lk9iai5nZXQgdGhpcyBcImNoaWxkTm9kZXNcIiBKeC5EZWNvZGVyLmpzIGluXG4gICAgSnguT2JqLmNhbGxfanNfdW5pdCBub2RlX2xpc3QgXCJmb3JFYWNoXCIgW3wgSnguRW5jb2Rlci5mdW4xIGYgfF1cblxuICBsZXQgY2hpbGRyZW4gdGhpcyA9XG4gICAgbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgIGl0ZXJfY2hpbGRyZW4gdGhpcyAoZnVuIGMgLT4gYWNjIDo9IGMgOjogIWFjYyk7XG4gICAgTGlzdC5yZXYgIWFjY1xuXG4gICgqIE5vZGUgb3BlcmF0aW9ucyAqKVxuXG4gIGxldCBjbG9uZV9ub2RlIHRoaXMgfmRlZXAgPVxuICAgIEp4Lk9iai5jYWxsMSB0aGlzIFwiY2xvbmVOb2RlXCIgSnguRW5jb2Rlci5ib29sIGRlZXAgfnJldHVybjpKeC5EZWNvZGVyLmpzXG5cbiAgbGV0IGlzX3NhbWVfbm9kZSB0aGlzIG90aGVyID1cbiAgICBKeC5EZWNvZGVyLmJvb2wgKEp4Lk9iai5jYWxsX2pzIHRoaXMgXCJpc1NhbWVOb2RlXCIgW3wgb3RoZXIgfF0pXG5cbiAgbGV0IHJlbW92ZSB0aGlzID0gSnguT2JqLmNhbGwwX3VuaXQgdGhpcyBcInJlbW92ZVwiICgpXG5cbiAgbGV0IHJlcGxhY2Vfd2l0aCB0aGlzIG90aGVyID1cbiAgICBKeC5PYmouY2FsbF9qc191bml0IHRoaXMgXCJyZXBsYWNlV2l0aFwiIFt8IG90aGVyIHxdXG5cbiAgKCogQ2hpbGRyZW4gbWFuaXB1bGF0aW9uICopXG5cbiAgbGV0IGFwcGVuZF90ZXh0IH5wYXJlbnQgdGV4dCA9XG4gICAgSnguT2JqLmNhbGwxX3VuaXQgcGFyZW50IFwiYXBwZW5kXCIgSnguRW5jb2Rlci5zdHJpbmcgdGV4dFxuXG4gIGxldCBhcHBlbmRfY2hpbGQgfnBhcmVudCBvdGhlciA9XG4gICAgSnguT2JqLmNhbGxfanNfdW5pdCBwYXJlbnQgXCJhcHBlbmRDaGlsZFwiIFt8IG90aGVyIHxdXG5cbiAgbGV0IHJlbW92ZV9jaGlsZCB+cGFyZW50IG90aGVyID1cbiAgICBKeC5PYmouY2FsbF9qc191bml0IHBhcmVudCBcInJlbW92ZUNoaWxkXCIgW3wgb3RoZXIgfF1cblxuICBsZXQgaW5zZXJ0X2JlZm9yZSB+cGFyZW50IH5yZWZlcmVuY2UgbmV3X25vZGUgPVxuICAgIEp4Lk9iai5jYWxsX2pzX3VuaXQgcGFyZW50IFwiaW5zZXJ0QmVmb3JlXCIgW3wgbmV3X25vZGU7IHJlZmVyZW5jZSB8XVxuXG4gIGxldCBpbnNlcnRfYWZ0ZXIgfnBhcmVudCB+cmVmZXJlbmNlIG5ld19ub2RlID1cbiAgICBpbnNlcnRfYmVmb3JlIH5wYXJlbnQgfnJlZmVyZW5jZTooX25leHRfc2libGluZ19qcyByZWZlcmVuY2UpIG5ld19ub2RlXG5cbiAgbGV0IHJlcGxhY2VfY2hpbGQgfnBhcmVudCB+cmVmZXJlbmNlIG5ld19ub2RlID1cbiAgICBKeC5PYmouY2FsbF9qc191bml0IHBhcmVudCBcInJlcGxhY2VDaGlsZFwiIFt8IG5ld19ub2RlOyByZWZlcmVuY2UgfF1cblxuICBsZXQgcmVwbGFjZV9jaGlsZHJlbiB0aGlzIGNoaWxkcmVuID1cbiAgICBKeC5PYmouY2FsbF9qc191bml0IHRoaXMgXCJyZXBsYWNlQ2hpbGRyZW5cIiBjaGlsZHJlblxuXG4gIGxldCBpbnNlcnRfYWRqYWNlbnRfZWxlbWVudCB0aGlzIHBvc2l0aW9uIG5vZGUgPVxuICAgIEp4Lk9iai5jYWxsMl91bml0IHRoaXMgXCJpbnNlcnRBZGphY2VudEVsZW1lbnRcIiBKeC5FbmNvZGVyLnN0cmluZ1xuICAgICAgSnguRW5jb2Rlci5qcyBwb3NpdGlvbiBub2RlXG5cbiAgbGV0IGluc2VydF9iZWZvcmVfYmVnaW4gfnJlZmVyZW5jZSBub2RlID1cbiAgICBpbnNlcnRfYWRqYWNlbnRfZWxlbWVudCByZWZlcmVuY2UgXCJiZWZvcmViZWdpblwiIG5vZGVcblxuICBsZXQgaW5zZXJ0X2FmdGVyX2JlZ2luIH5yZWZlcmVuY2Ugbm9kZSA9XG4gICAgaW5zZXJ0X2FkamFjZW50X2VsZW1lbnQgcmVmZXJlbmNlIFwiYWZ0ZXJiZWdpblwiIG5vZGVcblxuICBsZXQgaW5zZXJ0X2JlZm9yZV9lbmQgfnJlZmVyZW5jZSBub2RlID1cbiAgICBpbnNlcnRfYWRqYWNlbnRfZWxlbWVudCByZWZlcmVuY2UgXCJiZWZvcmVlbmRcIiBub2RlXG5cbiAgbGV0IGluc2VydF9hZnRlcl9lbmQgfnJlZmVyZW5jZSBub2RlID1cbiAgICBpbnNlcnRfYWRqYWNlbnRfZWxlbWVudCByZWZlcmVuY2UgXCJhZnRlcmVuZFwiIG5vZGVcblxuICAoKiBUZXh0IGNvbnRlbnQgKilcblxuICBsZXQgc2V0X3RleHRfY29udGVudCB0aGlzIHRleHQgPVxuICAgIEp4Lk9iai5zZXQgdGhpcyBcInRleHRDb250ZW50XCIgSnguRW5jb2Rlci5zdHJpbmcgdGV4dFxuXG4gIGxldCBnZXRfdGV4dF9jb250ZW50IHRoaXMgPSBKeC5PYmouZ2V0IHRoaXMgXCJ0ZXh0Q29udGVudFwiIEp4LkRlY29kZXIuc3RyaW5nXG5cbiAgKCogSFRNTCBjb250ZW50ICopXG5cbiAgbGV0IHNldF9pbm5lcl9odG1sIHRoaXMgdGV4dCA9XG4gICAgSnguT2JqLnNldCB0aGlzIFwiaW5uZXJIVE1MXCIgSnguRW5jb2Rlci5zdHJpbmcgdGV4dFxuXG4gICgqIEV2ZW50IGhhbmRsaW5nICopXG5cbiAgbGV0IGJpbmQgdGhpcyBldmVudF90eXBlIGYgPVxuICAgIEp4Lk9iai5jYWxsMl91bml0IHRoaXMgXCJhZGRFdmVudExpc3RlbmVyXCIgSnguRW5jb2Rlci5qcyBKeC5FbmNvZGVyLmZ1bjFcbiAgICAgIGV2ZW50X3R5cGUgZlxuXG4gIGxldCB1bmJpbmQgdGhpcyBldmVudF90eXBlIGYgPVxuICAgIEp4Lk9iai5jYWxsMl91bml0IHRoaXMgXCJyZW1vdmVFdmVudExpc3RlbmVyXCIgSnguRW5jb2Rlci5qcyBKeC5FbmNvZGVyLmZ1bjFcbiAgICAgIGV2ZW50X3R5cGUgZlxuXG4gICgqIFN0YXRlIGNoYW5nZXMgKilcblxuICBsZXQgYmx1ciB0aGlzID0gSnguT2JqLmNhbGwwX3VuaXQgdGhpcyBcImJsdXJcIiAoKVxuICBsZXQgY2xpY2sgdGhpcyA9IEp4Lk9iai5jYWxsMF91bml0IHRoaXMgXCJjbGlja1wiICgpXG4gIGxldCBmb2N1cyB0aGlzID0gSnguT2JqLmNhbGwwX3VuaXQgdGhpcyBcImZvY3VzXCIgKClcblxuICAoKiBQb3BvdmVyIG9wZXJhdGlvbnMgKilcblxuICBsZXQgaGlkZV9wb3BvdmVyIHRoaXMgPSBKeC5PYmouY2FsbDBfdW5pdCB0aGlzIFwiaGlkZVBvcG92ZXJcIiAoKVxuICBsZXQgc2hvd19wb3BvdmVyIHRoaXMgPSBKeC5PYmouY2FsbDBfdW5pdCB0aGlzIFwic2hvd1BvcG92ZXJcIiAoKVxuICBsZXQgdG9nZ2xlX3BvcG92ZXIgdGhpcyA9IEp4Lk9iai5jYWxsMF91bml0IHRoaXMgXCJ0b2dnbGVQb3BvdmVyXCIgKClcblxuICAoKiBTZWxlY3RvcnMgKilcblxuICBsZXQgbWF0Y2hlcyB0aGlzIHNlbGVjdG9ycyA9XG4gICAgSnguRGVjb2Rlci5ib29sXG4gICAgICAoSnguT2JqLmNhbGxfanMgdGhpcyBcIm1hdGNoZXNcIiBbfCBKeC5FbmNvZGVyLnN0cmluZyBzZWxlY3RvcnMgfF0pXG5cbiAgbGV0IGNsb3Nlc3QgdGhpcyBzZWxlY3RvcnMgPVxuICAgIEp4LkRlY29kZXIubnVsbGFibGUgSnguRGVjb2Rlci5hbnlcbiAgICAgIChKeC5PYmouY2FsbF9qcyB0aGlzIFwiY2xvc2VzdFwiIFt8IEp4LkVuY29kZXIuc3RyaW5nIHNlbGVjdG9ycyB8XSlcblxuICAoKiBpbnB1dCAqKVxuXG4gIGxldCBzZWxlY3QgdGhpcyA9IEp4Lk9iai5jYWxsMF91bml0IHRoaXMgXCJzZWxlY3RcIiAoKVxuXG4gICgqIGEgKilcblxuICBsZXQgdG9fc3RyaW5nIHRoaXMgPSBKeC5PYmouY2FsbDAgfnJldHVybjpKeC5EZWNvZGVyLnN0cmluZyB0aGlzIFwidG9TdHJpbmdcIiAoKVxuXG4gICgqIEF0dHJpYnV0ZXMgKilcblxuICBsZXQgc2V0X2F0dHIgdGhpcyBuYW1lIHZhbHVlID1cbiAgICBKeC5PYmouY2FsbF9qc191bml0IHRoaXMgXCJzZXRBdHRyaWJ1dGVcIlxuICAgICAgW3wgSnguRW5jb2Rlci5zdHJpbmcgbmFtZTsgSnguRW5jb2Rlci5zdHJpbmcgdmFsdWUgfF1cblxuICBsZXQgZ2V0X2F0dHIgdGhpcyBuYW1lID1cbiAgICBKeC5PYmouY2FsbDEgdGhpcyBcImdldEF0dHJpYnV0ZVwiIH5yZXR1cm46SnguRGVjb2Rlci5zdHJpbmcgSnguRW5jb2Rlci5zdHJpbmdcbiAgICAgIG5hbWVcblxuICBsZXQgdW5zZXRfYXR0ciB0aGlzIG5hbWUgPVxuICAgIEp4Lk9iai5jYWxsX2pzX3VuaXQgdGhpcyBcInJlbW92ZUF0dHJpYnV0ZVwiIFt8IEp4LkVuY29kZXIuc3RyaW5nIG5hbWUgfF1cblxuICBsZXQgZ2V0X2NsYXNzX2xpc3QgdGhpcyA9IEp4Lk9iai5nZXQgdGhpcyBcImNsYXNzTGlzdFwiIEp4LkRlY29kZXIuanNcbiAgbGV0IHNldF9zdHlsZSB0aGlzIHggPSBKeC5PYmouc2V0IHRoaXMgXCJzdHlsZVwiIEp4LkVuY29kZXIuc3RyaW5nIHhcbiAgbGV0IGdldF9zdHlsZSB0aGlzID0gSnguT2JqLmdldCB0aGlzIFwic3R5bGVcIiBKeC5EZWNvZGVyLmpzXG4gIGxldCByZXNldF9zdHlsZSB0aGlzID0gSnguT2JqLnNldCB0aGlzIFwic3R5bGVcIiBKeC5FbmNvZGVyLnN0cmluZyBcIlwiXG4gIGxldCBnZXRfaHJlZiB0aGlzID0gSnguT2JqLmdldCB0aGlzIFwiaHJlZlwiIEp4LkRlY29kZXIuc3RyaW5nXG4gIGxldCBzZXRfaHJlZiB0aGlzIHggPSBKeC5PYmouc2V0IHRoaXMgXCJocmVmXCIgSnguRW5jb2Rlci5zdHJpbmcgeFxuICBsZXQgZ2V0X3ZhbHVlIHRoaXMgPSBKeC5PYmouZ2V0IHRoaXMgXCJ2YWx1ZVwiIEp4LkRlY29kZXIuc3RyaW5nXG4gIGxldCBzZXRfdmFsdWUgdGhpcyB4ID0gSnguT2JqLnNldCB0aGlzIFwidmFsdWVcIiBKeC5FbmNvZGVyLnN0cmluZyB4XG4gIGxldCByZXNldF92YWx1ZSB0aGlzID0gSnguT2JqLnNldCB0aGlzIFwidmFsdWVcIiBKeC5FbmNvZGVyLnN0cmluZyBcIlwiXG4gIGxldCBzZXRfZGlzYWJsZWQgdGhpcyB4ID0gSnguT2JqLnNldCB0aGlzIFwiZGlzYWJsZWRcIiBKeC5FbmNvZGVyLmJvb2wgeFxuICBsZXQgc2V0X2F1dG9mb2N1cyB0aGlzIHggPSBKeC5PYmouc2V0IHRoaXMgXCJhdXRvZm9jdXNcIiBKeC5FbmNvZGVyLmJvb2wgeFxuICBsZXQgZ2V0X29mZnNldF93aWR0aCB0aGlzID0gSnguT2JqLmdldCB0aGlzIFwib2Zmc2V0V2lkdGhcIiBKeC5EZWNvZGVyLmludFxuICBsZXQgZ2V0X2NsaWVudF93aWR0aCB0aGlzID0gSnguT2JqLmdldCB0aGlzIFwiY2xpZW50V2lkdGhcIiBKeC5EZWNvZGVyLmludFxuICBsZXQgZ2V0X3Njcm9sbF93aWR0aCB0aGlzID0gSnguT2JqLmdldCB0aGlzIFwic2Nyb2xsV2lkdGhcIiBKeC5EZWNvZGVyLmludFxuICBsZXQgZ2V0X2NoZWNrZWQgdGhpcyA9IEp4Lk9iai5nZXQgdGhpcyBcImNoZWNrZWRcIiBKeC5EZWNvZGVyLmJvb2xcbiAgbGV0IHNldF9jaGVja2VkIHRoaXMgeCA9IEp4Lk9iai5zZXQgdGhpcyBcImNoZWNrZWRcIiBKeC5FbmNvZGVyLmJvb2wgeFxuICBsZXQgZ2V0X2ZpbGVzIHRoaXMgPSBKeC5PYmouZ2V0IHRoaXMgXCJmaWxlc1wiIEp4LkRlY29kZXIuYXJyYXlfanNcbmVuZFxuXG5tb2R1bGUgVGV4dCA9IHN0cnVjdFxuICB0eXBlIHQgPSBKeC50XG5cbiAgbGV0IHQgPSBKeC5nbG9iYWwgXCJUZXh0XCJcbiAgbGV0IHRvX2NoYXJhY3Rlcl9kYXRhIHQgPSB0XG5lbmRcblxubW9kdWxlIENvbW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSngudFxuXG4gIGxldCB0ID0gSnguZ2xvYmFsIFwiQ29tbWVudFwiXG4gIGxldCB0b19jaGFyYWN0ZXJfZGF0YSB0ID0gdFxuICBsZXQgbWFrZSBkYXRhID0gSnguT2JqLm5ldzEgdCBKeC5FbmNvZGVyLnN0cmluZyBkYXRhXG5lbmRcblxubW9kdWxlIEZyYWdtZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IEp4LnRcblxuICBsZXQgdCA9IEp4Lmdsb2JhbCBcIkRvY3VtZW50RnJhZ21lbnRcIlxuICBsZXQgdG9fbm9kZSB0ID0gdFxuICBsZXQgbWFrZSAoKSA9IEp4Lk9iai5uZXcwIHRcblxuICBsZXQgcmVwbGFjZV9jaGlsZHJlbiB0aGlzIGNoaWxkcmVuID1cbiAgICBKeC5PYmouY2FsbF9qc191bml0IHRoaXMgXCJyZXBsYWNlQ2hpbGRyZW5cIiBjaGlsZHJlblxuZW5kXG5cbm1vZHVsZSBEb2N1bWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPSBKeC50XG5cbiAgbGV0IHRoaXMgPSBHbG9iYWwuZG9jdW1lbnRcbiAgbGV0IHRvX25vZGUgdGhpcyA9IHRoaXNcbiAgbGV0IGdldF9jb29raWVzICgpID0gSnguT2JqLmdldCBHbG9iYWwuZG9jdW1lbnQgXCJjb29raWVcIiBKeC5EZWNvZGVyLnN0cmluZ1xuICBsZXQgc2V0X2Nvb2tpZXMgY29va2llcyA9IEp4Lk9iai5zZXQgdGhpcyBcImNvb2tpZVwiIEp4LkVuY29kZXIuc3RyaW5nIGNvb2tpZXNcblxuICBsZXQgZ2V0X2VsZW1lbnRfYnlfaWQgaWQgPVxuICAgIEp4LkRlY29kZXIubnVsbGFibGVcbiAgICAgIChmdW4geCAtPiB4KVxuICAgICAgKEp4Lk9iai5jYWxsX2pzIEdsb2JhbC5kb2N1bWVudCBcImdldEVsZW1lbnRCeUlkXCJcbiAgICAgICAgIFt8IEp4LkVuY29kZXIuc3RyaW5nIGlkIHxdXG4gICAgICApXG5cbiAgbGV0IHF1ZXJ5X3NlbGVjdG9yIHNlbGVjdG9yID1cbiAgICBKeC5PYmouY2FsbDEgR2xvYmFsLmRvY3VtZW50IFwicXVlcnlTZWxlY3RvclwiXG4gICAgICB+cmV0dXJuOkp4LkRlY29kZXIuKG51bGxhYmxlIGpzKVxuICAgICAgSnguRW5jb2Rlci5zdHJpbmcgc2VsZWN0b3JcblxuICBsZXQgcXVlcnkgc2VsZWN0b3IgPVxuICAgIEp4Lk9iai5jYWxsMSBHbG9iYWwuZG9jdW1lbnQgXCJxdWVyeVNlbGVjdG9yXCJcbiAgICAgIH5yZXR1cm46SnguRGVjb2Rlci4obnVsbGFibGUganMpXG4gICAgICBKeC5FbmNvZGVyLnN0cmluZyBzZWxlY3RvclxuXG4gIGxldCBxdWVyeV9zZWxlY3Rvcl9hbGwgX3NlbGVjdG9yID0gZmFpbHdpdGggXCJ0b2RvXCJcblxuICBsZXQgY3JlYXRlX3RleHRfbm9kZSB0ZXh0ID1cbiAgICBKeC5PYmouY2FsbF9qcyBHbG9iYWwuZG9jdW1lbnQgXCJjcmVhdGVUZXh0Tm9kZVwiIFt8IEp4LkVuY29kZXIuc3RyaW5nIHRleHQgfF1cblxuICBsZXQgY3JlYXRlX2VsZW1lbnQgbmFtZSA9XG4gICAgSnguT2JqLmNhbGxfanMgR2xvYmFsLmRvY3VtZW50IFwiY3JlYXRlRWxlbWVudFwiIFt8IEp4LkVuY29kZXIuc3RyaW5nIG5hbWUgfF1cblxuICBsZXQgYWN0aXZlX2VsZW1lbnQgdGhpcyA9IEp4Lk9iai5nZXQgdGhpcyBcImFjdGl2ZUVsZW1lbnRcIiBKeC5EZWNvZGVyLmpzXG5lbmRcblxubW9kdWxlIExvY2F0aW9uID0gc3RydWN0XG4gIHR5cGUgdCA9IEp4LnRcblxuICBsZXQgaGFzaCB0ID0gSnguT2JqLmdldCB0IFwiaGFzaFwiIEp4LkRlY29kZXIuc3RyaW5nXG4gIGxldCBzZXRfaGFzaCB0IHYgPSBKeC5PYmouc2V0IHQgXCJoYXNoXCIgSnguRW5jb2Rlci5zdHJpbmcgdlxuICBsZXQgaHJlZiB0ID0gSnguT2JqLmdldCB0IFwiaHJlZlwiIEp4LkRlY29kZXIuc3RyaW5nXG4gIGxldCBzZXRfaHJlZiB0IHYgPSBKeC5PYmouc2V0IHQgXCJocmVmXCIgSnguRW5jb2Rlci5zdHJpbmcgdlxuICBsZXQgcmVwbGFjZSB0IHVybCA9IEp4Lk9iai5jYWxsMV91bml0IHQgXCJyZXBsYWNlXCIgSnguRW5jb2Rlci5zdHJpbmcgdXJsXG4gIGxldCBhc3NpZ24gdCB1cmwgPSBKeC5PYmouY2FsbDFfdW5pdCB0IFwiYXNzaWduXCIgSnguRW5jb2Rlci5zdHJpbmcgdXJsXG4gIGxldCByZWxvYWQgdCA9IEp4Lk9iai5jYWxsMCB0IFwicmVsb2FkXCIgfnJldHVybjpKeC5EZWNvZGVyLmFueSAoKVxuICBsZXQgaG9zdG5hbWUgdCA9IEp4Lk9iai5nZXQgdCBcImhvc3RuYW1lXCIgSnguRGVjb2Rlci5zdHJpbmdcbiAgbGV0IHNlYXJjaCB0ID0gSnguT2JqLmdldCB0IFwic2VhcmNoXCIgSnguRGVjb2Rlci5zdHJpbmdcbmVuZFxuXG5tb2R1bGUgV2luZG93ID0gc3RydWN0XG4gIHR5cGUgdCA9IEp4LnRcblxuICBsZXQgdGhpcyA9IEdsb2JhbC53aW5kb3dcbiAgbGV0IHRvX2V2ZW50X3RhcmdldCB0ID0gdFxuICBsZXQgbG9jYXRpb24gPSBKeC5PYmouZ2V0IHRoaXMgXCJsb2NhdGlvblwiIEp4LkRlY29kZXIuanNcblxuICBsZXQgc2V0X2ludGVydmFsIGYgbXMgPVxuICAgIEp4Lk9iai5jYWxsMiBHbG9iYWwud2luZG93IFwic2V0SW50ZXJ2YWxcIiB+cmV0dXJuOkp4LkRlY29kZXIuaW50XG4gICAgICBKeC5FbmNvZGVyLmZ1bjEgSnguRW5jb2Rlci5pbnQgZiBtc1xuXG4gIGxldCBzZXRfdGltZW91dCBmIG1zID1cbiAgICBKeC5PYmouY2FsbDIgR2xvYmFsLndpbmRvdyBcInNldFRpbWVvdXRcIiB+cmV0dXJuOkp4LkRlY29kZXIuaW50XG4gICAgICBKeC5FbmNvZGVyLmZ1bjEgSnguRW5jb2Rlci5pbnQgZiBtc1xuXG4gIGxldCBjbGVhcl90aW1lb3V0IGlkID1cbiAgICBKeC5PYmouY2FsbDFfdW5pdCBHbG9iYWwud2luZG93IFwiY2xlYXJUaW1lb3V0XCIgSnguRW5jb2Rlci5pbnQgaWRcblxuICBsZXQgYWxlcnQgdGV4dCA9IEp4Lk9iai5jYWxsMV91bml0IHRoaXMgXCJhbGVydFwiIEp4LkVuY29kZXIuc3RyaW5nIHRleHRcblxuICBsZXQgY29uZmlybSB0ZXh0ID1cbiAgICBKeC5PYmouY2FsbDEgdGhpcyBcImNvbmZpcm1cIiB+cmV0dXJuOkp4LkRlY29kZXIuYm9vbCBKeC5FbmNvZGVyLnN0cmluZyB0ZXh0XG5cbiAgbGV0IHByb21wdCB0ZXh0ID1cbiAgICBKeC5PYmouY2FsbDEgdGhpcyBcInByb21wdFwiXG4gICAgICB+cmV0dXJuOkp4LkRlY29kZXIuKG51bGxhYmxlIHN0cmluZylcbiAgICAgIEp4LkVuY29kZXIuc3RyaW5nIHRleHRcblxuICAoKiBFdmVudCBoYW5kbGluZyAqKVxuXG4gIGxldCBiaW5kIGV2ZW50X3R5cGUgZiA9XG4gICAgSnguT2JqLmNhbGwyX3VuaXQgdGhpcyBcImFkZEV2ZW50TGlzdGVuZXJcIiBKeC5FbmNvZGVyLmpzIEp4LkVuY29kZXIuZnVuMVxuICAgICAgZXZlbnRfdHlwZSBmXG5cbiAgbGV0IHVuYmluZCBldmVudF90eXBlID1cbiAgICBKeC5PYmouY2FsbF9qc191bml0IHRoaXMgXCJyZW1vdmVFdmVudExpc3RlclwiIFt8IEp4LkVuY29kZXIuanMgZXZlbnRfdHlwZSB8XVxuZW5kXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJjYW1sX2NhbGwzIiwiYTIiLCJjYW1sX2NhbGw0IiwiYTMiLCJjYW1sX2NhbGw1IiwiYTQiLCJjYW1sX2NhbGw2IiwiYTUiLCJjYW1sX2NhbGw3IiwiYTYiLCJnbG9iYWxfZGF0YSIsIkp4IiwiU3Rkd2ViX1N0ZHdlYl9nbG9iYWwiLCJTdGRsaWIiLCJTdGRsaWJfTGlzdCIsIlN0ZHdlYl9TdGR3ZWJfcHJvbWlzZSIsInRleHQiLCJ0aGlzJCIsImxlbmd0aCIsImNzdF9zZXRQcm9wZXJ0eSIsInNldCIsIm5hbWUiLCJ2YWx1ZSIsInVuc2V0IiwidGFyZ2V0IiwiZ2V0IiwidG9fc3RyaW5nIiwibWFrZSIsInQiLCJwcmV2ZW50X2RlZmF1bHQiLCJjaGFuZ2UiLCJyZXNpemUiLCJjc3RfY2xpY2siLCJjbGljayIsImRibGNsaWNrIiwibW91c2Vtb3ZlIiwicGFnZV94IiwicGFnZV95Iiwia2V5ZG93biIsImtleSIsImNvZGUiLCJiZWZvcmVfaW5wdXQiLCJpbnB1dCIsImNhbmNlbCIsImRhdGEiLCJmdWxsc2NyZWVuX2NoYW5nZSIsImZ1bGxzY3JlZW5fZXJyb3IiLCJwb3BzdGF0ZSIsImhhc2hjaGFuZ2UiLCJjc3RfYmx1ciIsImJsdXIiLCJmb2N1c2luIiwiZm9jdXNvdXQiLCJzdWJtaXQiLCJ0b2dnbGUiLCJhZGQiLCJjc3RfcmVtb3ZlIiwicmVtb3ZlIiwic2l6ZSIsInR5cGUiLCJsYXN0X21vZGlmaWVkIiwidG9fYmxvYiIsInRvX2pzIiwicGFyZW50IiwiZmlyc3RfY2hpbGQiLCJsYXN0X2NoaWxkIiwiY3N0X25leHRTaWJsaW5nIiwibmV4dF9zaWJsaW5nIiwibmV4dF9zaWJsaW5nX2pzIiwiaXRlcl9jaGlsZHJlbiIsIm5vZGVfbGlzdCIsImNoaWxkcmVuIiwiYWNjIiwiYyIsImNsb25lX25vZGUiLCJkZWVwIiwiaXNfc2FtZV9ub2RlIiwib3RoZXIiLCJyZXBsYWNlX3dpdGgiLCJhcHBlbmRfdGV4dCIsImFwcGVuZF9jaGlsZCIsInJlbW92ZV9jaGlsZCIsImluc2VydF9iZWZvcmUiLCJyZWZlcmVuY2UiLCJuZXdfbm9kZSIsImluc2VydF9hZnRlciIsInJlcGxhY2VfY2hpbGQiLCJjc3RfcmVwbGFjZUNoaWxkcmVuIiwicmVwbGFjZV9jaGlsZHJlbiIsImluc2VydF9hZGphY2VudF9lbGVtZW50IiwicG9zaXRpb24iLCJub2RlIiwiaW5zZXJ0X2JlZm9yZV9iZWdpbiIsImluc2VydF9hZnRlcl9iZWdpbiIsImluc2VydF9iZWZvcmVfZW5kIiwiaW5zZXJ0X2FmdGVyX2VuZCIsImNzdF90ZXh0Q29udGVudCIsInNldF90ZXh0X2NvbnRlbnQiLCJnZXRfdGV4dF9jb250ZW50Iiwic2V0X2lubmVyX2h0bWwiLCJjc3RfYWRkRXZlbnRMaXN0ZW5lciIsImJpbmQiLCJldmVudF90eXBlIiwidW5iaW5kIiwiZm9jdXMiLCJoaWRlX3BvcG92ZXIiLCJzaG93X3BvcG92ZXIiLCJ0b2dnbGVfcG9wb3ZlciIsIm1hdGNoZXMiLCJzZWxlY3RvcnMiLCJjbG9zZXN0Iiwic2VsZWN0Iiwic2V0X2F0dHIiLCJnZXRfYXR0ciIsInVuc2V0X2F0dHIiLCJnZXRfY2xhc3NfbGlzdCIsImNzdF9zdHlsZSIsInNldF9zdHlsZSIsIngiLCJnZXRfc3R5bGUiLCJjc3QiLCJyZXNldF9zdHlsZSIsImNzdF9ocmVmIiwiZ2V0X2hyZWYiLCJzZXRfaHJlZiIsImNzdF92YWx1ZSIsImdldF92YWx1ZSIsInNldF92YWx1ZSIsInJlc2V0X3ZhbHVlIiwic2V0X2Rpc2FibGVkIiwic2V0X2F1dG9mb2N1cyIsImdldF9vZmZzZXRfd2lkdGgiLCJnZXRfY2xpZW50X3dpZHRoIiwiZ2V0X3Njcm9sbF93aWR0aCIsImNzdF9jaGVja2VkIiwiZ2V0X2NoZWNrZWQiLCJzZXRfY2hlY2tlZCIsImdldF9maWxlcyIsInRvX2NoYXJhY3Rlcl9kYXRhIiwidG9fbm9kZSIsInBhcmFtIiwiY3N0X2Nvb2tpZSIsImdldF9jb29raWVzIiwic2V0X2Nvb2tpZXMiLCJjb29raWVzIiwiZ2V0X2VsZW1lbnRfYnlfaWQiLCJpZCIsImNzdF9xdWVyeVNlbGVjdG9yIiwicXVlcnlfc2VsZWN0b3IiLCJzZWxlY3RvciIsInF1ZXJ5IiwicXVlcnlfc2VsZWN0b3JfYWxsIiwiY3JlYXRlX3RleHRfbm9kZSIsImNyZWF0ZV9lbGVtZW50IiwiYWN0aXZlX2VsZW1lbnQiLCJjc3RfaGFzaCIsImhhc2giLCJzZXRfaGFzaCIsInYiLCJocmVmIiwicmVwbGFjZSIsInVybCIsImFzc2lnbiIsInJlbG9hZCIsImhvc3RuYW1lIiwic2VhcmNoIiwidG9fZXZlbnRfdGFyZ2V0IiwibG9jYXRpb24iLCJzZXRfaW50ZXJ2YWwiLCJtcyIsInNldF90aW1lb3V0IiwiY2xlYXJfdGltZW91dCIsImFsZXJ0IiwiY29uZmlybSIsInByb21wdCJdLCJtYXBwaW5ncyI6Ik9BQUFBLFVBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFKLEdBQUFDLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBTixHQUFBQyxJQUFBRSxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQVIsR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFWLEdBQUFDLElBQUFFLElBQUFFLElBQUFFLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBWixHQUFBQyxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsS0FBQTtBQUFBLElBQUFDLHVCQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyx3QkFBQTtBQUFBLFlBQUFDLEtBQUFDO0FBQUFBLElDYWtCLDBEQUEyQztBQUFBO0FBQUEsWUFBQUMsT0FBQUQ7QUFBQUEsSUFDekMseURBQXVDO0FBQUE7QUFBQSxPQUFBRSxrQkRkM0Q7QUFBQSxZ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QUFBQTtBQUFBO0FBQUE7QUFBQSxlQUNjO0FBQUE7QUFBQSxZQUFBMkcsU0FBQUQ7QUFBQUEsUUFBQSxJQUdrQztBQUFBLElBQXdCLDZEQUFHO0FBQUE7QUFBQSxHQTlCdEI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUR6V3pEIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDM3MDgsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rkd2ViLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9oZWxpeC9zdGR3ZWIvU3Rkd2ViX3dlYnNvY2tldC5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIm9wZW4gc3RydWN0XG4gIG1vZHVsZSBHbG9iYWwgPSBTdGR3ZWJfZ2xvYmFsXG4gIG1vZHVsZSBFdmVudCA9IFN0ZHdlYl9kb20uRXZlbnRcbmVuZFxuXG50eXBlIHQgPSBKeC50XG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICBsZXQgZGF0YSB0ID0gSnguT2JqLmdldCB0IFwiZGF0YVwiIEp4LkRlY29kZXIuc3RyaW5nXG5cbiAgKCogR2VuZXJpYyBldmVudHMgKilcblxuICBsZXQgb3BlbicgPSBFdmVudC5OYW1lLm1ha2UgXCJvcGVuXCJcbiAgbGV0IG1lc3NhZ2UgPSBFdmVudC5OYW1lLm1ha2UgXCJtZXNzYWdlXCJcbiAgbGV0IGNsb3NlID0gRXZlbnQuTmFtZS5tYWtlIFwiY2xvc2VcIlxuICBsZXQgZXJyb3IgPSBFdmVudC5OYW1lLm1ha2UgXCJlcnJvclwiXG5lbmRcblxubGV0IHQgPSBKeC5nbG9iYWwgXCJXZWJTb2NrZXRcIlxubGV0IG1ha2UgdXJsID0gSnguT2JqLm5ldzEgdCBKeC5FbmNvZGVyLnN0cmluZyB1cmxcblxubGV0IGJpbmQgdGhpcyBldmVudF90eXBlIGYgPVxuICBKeC5PYmouY2FsbDJfdW5pdCB0aGlzIFwiYWRkRXZlbnRMaXN0ZW5lclwiIEp4LkVuY29kZXIuanMgSnguRW5jb2Rlci5mdW4xXG4gICAgZXZlbnRfdHlwZSBmXG5cbmxldCB1bmJpbmQgdGhpcyBldmVudF90eXBlID1cbiAgSnguT2JqLmNhbGxfanNfdW5pdCB0aGlzIFwicmVtb3ZlRXZlbnRMaXN0ZXJcIiBbfCBKeC5FbmNvZGVyLmpzIGV2ZW50X3R5cGUgfF1cblxuKCogVE9ETzogcGFyYW1ldGVycyBgY29kZWAgYW5kIGByZWFzb25gIG5vdCBpbXBsZW1lbnRlZCB5ZXQgKilcbmxldCBjbG9zZSA/Y29kZSA/cmVhc29uIHQgPVxuICBKeC5PYmouY2FsbDJfdW5pdCB0IFwiY2xvc2VcIlxuICAgIChKeC5FbmNvZGVyLm9wdGlvbmFsIEp4LkVuY29kZXIuaW50KVxuICAgIChKeC5FbmNvZGVyLm9wdGlvbmFsIEp4LkVuY29kZXIuc3RyaW5nKVxuICAgIGNvZGUgcmVhc29uXG5cbmxldCBzZW5kIHQgZGF0YSA9IEp4Lk9iai5jYWxsMV91bml0IHQgXCJzZW5kXCIgSnguRW5jb2Rlci5zdHJpbmcgZGF0YVxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMyIsImExIiwiYTIiLCJjYW1sX2NhbGw0IiwiYTMiLCJjYW1sX2NhbGw2IiwiYTQiLCJhNSIsImdsb2JhbF9kYXRhIiwiSngiLCJTdGR3ZWJfU3Rkd2ViX2RvbSIsImRhdGEiLCJ0Iiwib3BlbiIsIm1lc3NhZ2UiLCJjc3RfY2xvc2UiLCJjbG9zZSIsImVycm9yIiwibWFrZSIsInVybCIsImJpbmQiLCJ0aGlzJCIsImV2ZW50X3R5cGUiLCJ1bmJpbmQiLCJjb2RlIiwicmVhc29uIiwic2VuZCJdLCJtYXBwaW5ncyI6Ik9BQUFBLFVBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUUsSUFBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFMLEdBQUFDLElBQUFFLElBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBUCxHQUFBQyxJQUFBRSxJQUFBQyxJQUFBRSxJQUFBRSxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsS0FBQTtBQUFBLElBQUFDLG9CQUFBO0FBQUEsWUFBQUMsS0FBQUMsR0NRZSxtREFBcUM7QUFBQTtBQUFBLElBQUFDLE9BSXRDO0FBQUEsSUFBQUMsVUFDRTtBQUFBLElBQUFDLFlEYmhCO0FBQUEsSUFBQUMsUUNjYztBQUFBLElBQUFDLFFBQ0E7QUFBQSxJQUFBTCxJQUdOO0FBQUEsWUFBQU0sS0FBQUMsS0FDTyxnREFBbUM7QUFBQSxZQUFBQyxLQUFBQyxPQUFBQyxZQUFBeEI7QUFBQUEsSUFHaEQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxlQUNjO0FBQUE7QUFBQSxZQUFBeUIsT0FBQUYsT0FBQUM7QUFBQUEsUUFBQSxJQUdrQztBQUFBLElBQXdCLDREQUFHO0FBQUE7QUFBQSxZQUFBTixRQUFBUSxNQUFBQyxRQUFBYjtBQUFBQTtBQUFBQSxLQUFBLElBTXpFO0FBQUEsU0FEQTtBQUFBLElBQW9DLCtEQUV6QjtBQUFBO0FBQUEsWUFBQWMsS0FBQWQsR0FBQUQ7QUFBQUEsSUFFRyx5REFBaUQ7QUFBQTtBQUFBLEdBakJ0QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFRGxCN0IiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0Mzc4NSwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGR3ZWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL2hlbGl4L3N0ZHdlYi9TdGR3ZWJfdXJsX3NlYXJjaF9wYXJhbXMubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCJvcGVuIHN0cnVjdFxuICBtb2R1bGUgR2xvYmFsID0gU3Rkd2ViX2dsb2JhbFxuZW5kXG5cbnR5cGUgdCA9IEp4LnRcblxubGV0IHQgPSBKeC5nbG9iYWwgXCJVUkxTZWFyY2hQYXJhbXNcIlxubGV0IG9mX3N0cmluZyBzID0gSnguT2JqLm5ldzEgdCBKeC5FbmNvZGVyLnN0cmluZyBzXG5sZXQgZW1wdHkgKCkgPSBKeC5PYmoubmV3MCB0XG5cbmxldCBtYWtlIGl0ZW1zID1cbiAgSnguT2JqLm5ldzEgdCBKeC5FbmNvZGVyLm9ialxuICAgIChMaXN0Lm1hcCAoZnVuIChrLCB2KSAtPiAoaywgSnguRW5jb2Rlci5zdHJpbmcgdikpIGl0ZW1zKVxuXG5sZXQgZ2V0IHQgcGFyYW0gPVxuICBKeC5PYmouY2FsbDEgdCBcImdldFwiXG4gICAgfnJldHVybjpKeC5EZWNvZGVyLihudWxsYWJsZSBzdHJpbmcpXG4gICAgSnguRW5jb2Rlci5zdHJpbmcgcGFyYW1cblxubGV0IGRlbGV0ZSB0ID92YWx1ZSBwYXJhbSA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdmFsdWUgd2l0aFxuICAgIHwgTm9uZSAtPiBKeC51bmRlZmluZWRcbiAgICB8IFNvbWUgdmFsdWUgLT4gSnguZW5jb2RlIEp4LkVuY29kZXIuc3RyaW5nIHZhbHVlXG4gIGluXG4gIEp4Lk9iai5jYWxsMl91bml0IHQgXCJkZWxldGVcIiBKeC5FbmNvZGVyLnN0cmluZyBKeC5FbmNvZGVyLmFueSBwYXJhbSB2YWx1ZVxuXG5sZXQgaGFzIHQgP3ZhbHVlIHRleHQgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHZhbHVlIHdpdGhcbiAgICB8IE5vbmUgLT4gSngudW5kZWZpbmVkXG4gICAgfCBTb21lIHZhbHVlIC0+IEp4LmVuY29kZSBKeC5FbmNvZGVyLnN0cmluZyB2YWx1ZVxuICBpblxuICBKeC5PYmouY2FsbDIgdCBcImhhc1wiIH5yZXR1cm46SnguRGVjb2Rlci5ib29sIEp4LkVuY29kZXIuc3RyaW5nIEp4LkVuY29kZXIuYW55XG4gICAgdGV4dCB2YWx1ZVxuXG5sZXQgdG9fc3RyaW5nIHQgPSBKeC5PYmouY2FsbDAgdCBcInRvU3RyaW5nXCIgfnJldHVybjpKeC5EZWNvZGVyLnN0cmluZyAoKVxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiY2FtbF9jYWxsNCIsImEzIiwiY2FtbF9jYWxsNSIsImE0IiwiY2FtbF9jYWxsNiIsImE1IiwiY2FtbF9jYWxsNyIsImE2IiwiZ2xvYmFsX2RhdGEiLCJKeCIsIlN0ZGxpYl9MaXN0IiwidCIsIm9mX3N0cmluZyIsInMiLCJlbXB0eSIsInBhcmFtIiwibWFrZSIsIml0ZW1zIiwidiIsImsiLCJnZXQiLCJkZWxldGUkIiwidmFsdWUiLCJoYXMiLCJ0ZXh0IiwidG9fc3RyaW5nIl0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUosR0FBQUMsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFOLEdBQUFDLElBQUFFLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBUixHQUFBQyxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQVYsR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFaLEdBQUFDLElBQUFFLElBQUFFLElBQUFFLElBQUFFLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxLQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLElDTVE7QUFBQSxZQUFBQyxVQUFBQyxHQUNVLDhDQUFpQztBQUFBLFlBQUFDLE1BQUFDLE9BQ3BDLGdDQUFhO0FBQUEsWUFBQUMsS0FBQUM7QUFBQUE7QUFBQUEsS0FBQTtBQUFBLE9BSXhCO0FBQUE7QUFBQSxrQkFBQUY7QUFBQUEsY0FBQUcsSUFBVSxVQUFBQyxJQUFBO0FBQUEsVUFBbUIsdUNBQW1CO0FBQUEsU0FBRTtBQUFBO0FBQUEsSUFBTztBQUFBO0FBQUEsWUFBQUMsSUFBQVQsR0FBQUk7QUFBQUEsUUFBQSxJQUlyQztBQUFBLElBQWUsb0RBQ1o7QUFBQTtBQUFBLFlBQUFNLFFBQUFWLEdBQUFXLE9BQUFQO0FBQUFBLElBR3pCO0FBQUEsU0FBQU8sVUFBQSxVQUFBQSxVQUdrQjtBQUFBO0FBQUEsU0FBQUEsVUFETjtBQUFBLElBR1o7QUFBQSw0RUFBeUU7QUFBQTtBQUFBLFlBQUFDLElBQUFaLEdBQUFXLE9BQUFFO0FBQUFBLElBR3pFO0FBQUEsU0FBQUYsVUFBQSxVQUFBQSxVQUdrQjtBQUFBO0FBQUEsU0FBQUEsVUFETjtBQUFBLElBR1o7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHFCQUNZO0FBQUE7QUFBQSxZQUFBRyxVQUFBZDtBQUFBQSxJQUVJLDBEQUFzRDtBQUFBO0FBQUEsR0E5QnJDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFRE5uQyIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQzODgzLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZHdlYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvaGVsaXgvc3Rkd2ViL1N0ZHdlYl9zdG9yYWdlLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwidHlwZSB0ID0gSngudFxuXG5sZXQgbG9jYWwgPSBKeC5nbG9iYWwgXCJsb2NhbFN0b3JhZ2VcIlxuXG5sZXQgZ2V0IHQgbmFtZSA9XG4gIEp4Lk9iai5jYWxsMSB0IFwiZ2V0SXRlbVwiXG4gICAgfnJldHVybjpKeC5EZWNvZGVyLihudWxsYWJsZSBzdHJpbmcpXG4gICAgSnguRW5jb2Rlci5zdHJpbmcgbmFtZVxuXG5sZXQgc2V0IHQgbmFtZSB2YWx1ZSA9XG4gIEp4Lk9iai5jYWxsMl91bml0IHQgXCJzZXRJdGVtXCIgSnguRW5jb2Rlci5zdHJpbmcgSnguRW5jb2Rlci5zdHJpbmcgbmFtZSB2YWx1ZVxuXG5sZXQgZGVsIHQgbmFtZSA9IEp4Lk9iai5jYWxsMV91bml0IHQgXCJyZW1vdmVJdGVtXCIgSnguRW5jb2Rlci5zdHJpbmcgbmFtZVxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsNCIsImExIiwiYTIiLCJhMyIsImNhbWxfY2FsbDUiLCJhNCIsImNhbWxfY2FsbDYiLCJhNSIsIkp4IiwibG9jYWwiLCJnZXQiLCJ0IiwibmFtZSIsInNldCIsInZhbHVlIiwiZGVsIl0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRSxJQUFBQyxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQU4sR0FBQUMsSUFBQUUsSUFBQUMsSUFBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFSLEdBQUFDLElBQUFFLElBQUFDLElBQUFDLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLEtBQUE7QUFBQSxJQUFBQyxRQ0VZO0FBQUEsWUFBQUMsSUFBQUMsR0FBQUM7QUFBQUEsUUFBQSxJQUlZO0FBQUEsSUFBZSx1REFDYjtBQUFBO0FBQUEsWUFBQUMsSUFBQUYsR0FBQUMsTUFBQUU7QUFBQUEsSUFHeEI7QUFBQSx5RUFBNEU7QUFBQTtBQUFBLFlBQUFDLElBQUFKLEdBQUFDO0FBQUFBLElBRTdELCtEQUF1RDtBQUFBO0FBQUEsR0FWcEM7QUFBQTtBQUFBO0FBQUEsRURGcEMiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0MzkyOSwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGR3ZWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL2hlbGl4L3N0ZHdlYi9TdGR3ZWJfb2JqZWN0Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwidHlwZSB0ID0gSngudFxuXG5sZXQgdCA9IEp4Lmdsb2JhbCBcIk9iamVjdFwiXG5cbmxldCBmcm9tX2VudHJpZXMgPVxuICBKeC5PYmouY2FsbDEgdCBcImZyb21FbnRyaWVzXCIgfnJldHVybjpKeC5EZWNvZGVyLmpzIEp4LkVuY29kZXIuanNcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDQiLCJhMSIsImEyIiwiYTMiLCJKeCIsInQiLCJmcm9tX2VudHJpZXMiXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFLElBQUFDLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLEtBQUE7QUFBQSxJQUFBQyxJQ0VRO0FBQUEsSUFBQUM7QUFBQUEsTUFHTjtBQUFBLEdBQWdFO0FBQUE7QUFBQTtBQUFBLEVETGxFIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDM5NTYsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rkd2ViLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9oZWxpeC9zdGR3ZWIvU3Rkd2ViX2l0ZXJhdG9yLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwidHlwZSAnYSB0ID0gSngudFxudHlwZSAnYSBuZXh0ID0gSngudFxuXG5sZXQgbmV4dCB0ID0gSnguT2JqLmNhbGxfanMgdCBcIm5leHRcIiBbfHxdXG5sZXQgbmV4dF9pc19kb25lIG5leHQgPSBKeC5PYmouZ2V0IG5leHQgXCJkb25lXCIgSnguRGVjb2Rlci5ib29sXG5sZXQgbmV4dF92YWx1ZSBuZXh0ID0gSnguT2JqLmdldCBuZXh0IFwidmFsdWVcIiBKeC5EZWNvZGVyLmFueVxuXG5sZXQgaXRlciBmIHQgPVxuICBsZXQgaXNfZG9uZSA9IHJlZiBmYWxzZSBpblxuICB3aGlsZSBub3QgIWlzX2RvbmUgZG9cbiAgICBsZXQgbiA9IG5leHQgdCBpblxuICAgIGlmIG5leHRfaXNfZG9uZSBuIHRoZW4gaXNfZG9uZSA6PSB0cnVlXG4gICAgZWxzZVxuICAgICAgbGV0IHYgPSBuZXh0X3ZhbHVlIG4gaW5cbiAgICAgIGYgdlxuICBkb25lXG5cbmxldCB1bnNhZmVfb2ZfanMganMgPSBqc1xuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMyIsImExIiwiYTIiLCJKeCIsIm5leHQiLCJ0IiwibmV4dF9pc19kb25lIiwibmV4dF92YWx1ZSIsIml0ZXIiLCJpc19kb25lIiwibiIsInYiLCJ1bnNhZmVfb2ZfanMiLCJqcyJdLCJtYXBwaW5ncyI6Ik9BQUFBLFVBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUUsSUFBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE9BQUFDLEtBQUE7QUFBQSxZQUFBQyxLQUFBQyxHQ0dhLDZDQUE0QjtBQUFBLFlBQUFDLGFBQUFGO0FBQUFBLElBQ2pCLHNEQUFzQztBQUFBO0FBQUEsWUFBQUcsV0FBQUg7QUFBQUEsSUFDeEMsd0RBQXNDO0FBQUE7QUFBQSxZQUFBSSxLQUFBVixHQUFBTztBQUFBQSxRQUFBSSxVQUkxRDtBQUFBO0FBQUE7QUFBQSxTQUFBQyxJQUNVO0FBQUEsS0FDTDtBQUFBLE1BQW9CO0FBQUEsY0FBQUMsSUFFYixlQUNSO0FBQUE7QUFBQSxHQUNBO0FBQUEsWUFBQUMsYUFBQUMsSUFFZ0IsVUFBRTtBQUFBLEdEakJ4QiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQzOTk5LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZHdlYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvaGVsaXgvc3Rkd2ViL1N0ZHdlYl9tYXAubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCJtb2R1bGUgSXRlcmF0b3IgPSBTdGR3ZWJfaXRlcmF0b3JcblxudHlwZSAnYSB0ID0gSngudFxuXG5sZXQgdCA9IEp4Lmdsb2JhbCBcIk1hcFwiXG5sZXQgdG9fanMgdCA9IHRcbmxldCBvZl9qcyB0ID0gdFxubGV0IG1ha2UgKCkgPSBKeC5PYmoubmV3MCB0XG5sZXQgY2xlYXIgdCA9IEp4Lk9iai5jYWxsX2pzX3VuaXQgdCBcImNsZWFyXCIgW3x8XVxubGV0IHNldCB0IGsgdiA9IEp4Lk9iai5jYWxsX2pzX3VuaXQgdCBcInNldFwiIFt8IGs7IEp4LkVuY29kZXIuYW55IHYgfF1cbmxldCBnZXQgdCBrID0gSnguRGVjb2Rlci5vcHRpb25hbCBKeC5EZWNvZGVyLmFueSAoSnguT2JqLmNhbGxfanMgdCBcImdldFwiIFt8IGsgfF0pXG5sZXQgZGVsZXRlIHQgayA9IEp4Lk9iai5jYWxsX2pzX3VuaXQgdCBcImRlbGV0ZVwiIFt8IGsgfF1cbmxldCBrZXlzIHQgPSBKeC5PYmouY2FsbF9qcyB0IFwia2V5c1wiIFt8fF1cbmxldCBzaXplIHQgPSBKeC5PYmouZ2V0IHQgXCJzaXplXCIgSnguRGVjb2Rlci5pbnRcbmxldCB2YWx1ZXMgdCA9IEp4Lk9iai5jYWxsX2pzIHQgXCJ2YWx1ZXNcIiBbfHxdXG5cbmxldCBmaXJzdF9rZXkgdCA9XG4gIGxldCBpdGVyID0ga2V5cyB0IGluXG4gIGxldCBuZXh0ID0gSXRlcmF0b3IubmV4dCBpdGVyIGluXG4gIGlmIEl0ZXJhdG9yLm5leHRfaXNfZG9uZSBuZXh0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKEl0ZXJhdG9yLm5leHRfdmFsdWUgbmV4dClcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImNhbWxfY2FsbDMiLCJhMiIsImdsb2JhbF9kYXRhIiwiU3Rkd2ViX1N0ZHdlYl9pdGVyYXRvciIsIkp4IiwidCIsInRvX2pzIiwib2ZfanMiLCJtYWtlIiwicGFyYW0iLCJjbGVhciIsInNldCIsImsiLCJ2IiwiZ2V0IiwiZGVsZXRlJCIsImtleXMiLCJzaXplIiwidmFsdWVzIiwiZmlyc3Rfa2V5IiwiaXRlciIsIm5leHQiXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMseUJBQUE7QUFBQSxJQUFBQyxLQUFBO0FBQUEsSUFBQUMsSUNJUTtBQUFBLFlBQUFDLE1BQUFELEdBQ00sU0FBQztBQUFBLFlBQUFFLE1BQUFGLEdBQ0QsU0FBQztBQUFBLFlBQUFHLEtBQUFDLE9BQ0QsZ0NBQWE7QUFBQSxZQUFBQyxNQUFBTCxHQUNiLDhDQUFrQztBQUFBLFlBQUFNLElBQUFOLEdBQUFPLEdBQUFDO0FBQUFBLFFBQUEsSUFDRTtBQUFBLElBQWdCLDBDQUFHO0FBQUE7QUFBQSxZQUFBQyxJQUFBVCxHQUFBTztBQUFBQSxRQUFBLElBQ3BCO0FBQUEsSUFBZ0M7QUFBQTtBQUFBLFlBQUFHLFFBQUFWLEdBQUFPLEdBQ2hFLGtEQUFzQztBQUFBLFlBQUFJLEtBQUFYLEdBQzFDLDZDQUE0QjtBQUFBLFlBQUFZLEtBQUFaLEdBQzVCLG1EQUFrQztBQUFBLFlBQUFhLE9BQUFiLEdBQ2hDLCtDQUE4QjtBQUFBLFlBQUFjLFVBQUFkO0FBQUFBLFFBQUFlLE9BR2hDLFNBQUFDLE9BQ0E7QUFBQSxJQUNSO0FBQUE7QUFBQSxrQkFBK0MsMkNBQTBCO0FBQUE7QUFBQSxHQWZ2RDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRURKdkIiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0NDA2NywiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGR3ZWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL2hlbGl4L3N0ZHdlYi9TdGR3ZWJfanNvbi5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsInR5cGUgdCA9IEp4LnRcblxubGV0IHQgPSBKeC5nbG9iYWwgXCJKU09OXCJcblxubGV0IHN0cmluZ2lmeSA/KHJlcGxhY2VyID0gSngudW5kZWZpbmVkKSA/KHNwYWNlID0gSngudW5kZWZpbmVkKSB2YWx1ZSA9XG4gIEp4Lk9iai5jYWxsMyB0IFwic3RyaW5naWZ5XCIgfnJldHVybjpKeC5EZWNvZGVyLnN0cmluZyBKeC5FbmNvZGVyLmFueVxuICAgIEp4LkVuY29kZXIuYW55IEp4LkVuY29kZXIuYW55IHZhbHVlIHJlcGxhY2VyIHNwYWNlXG5cbmxldCBwYXJzZSA/cmV2aXZlciB0ZXh0ID1cbiAgbGV0IHJldml2ZXIgPVxuICAgIG1hdGNoIHJldml2ZXIgd2l0aFxuICAgIHwgTm9uZSAtPiBKeC51bmRlZmluZWRcbiAgICB8IFNvbWUgcmV2aXZlciAtPiByZXZpdmVyXG4gIGluXG4gIEp4Lk9iai5jYWxsMiB0IFwicGFyc2VcIiB+cmV0dXJuOkp4LkRlY29kZXIuanMgSnguRW5jb2Rlci5zdHJpbmcgSnguRW5jb2Rlci5hbnlcbiAgICB0ZXh0IHJldml2ZXJcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDciLCJhMSIsImEyIiwiYTMiLCJhNCIsImE1IiwiYTYiLCJjYW1sX2NhbGw5IiwiYTciLCJhOCIsIkp4IiwidCIsInN0cmluZ2lmeSIsIm9wdCIsInZhbHVlIiwicmVwbGFjZXIiLCJzcGFjZSIsInBhcnNlIiwicmV2aXZlciIsInRleHQiXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFLElBQUFDLElBQUFDLElBQUFDLElBQUFDLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBVCxHQUFBQyxJQUFBRSxJQUFBQyxJQUFBQyxJQUFBQyxJQUFBQyxJQUFBQyxJQUFBRSxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsT0FBQUMsS0FBQSxtQ0FBQUMsSUNFUTtBQUFBLFlBQUFDLFVBQUEsR0FBQUMsS0FBQUM7QUFBQUEsUUFBQUMsV0FFTSxrQkFBQUMsUUFBQTtBQUFBLElBQ1o7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxtQkFDb0Q7QUFBQTtBQUFBLFlBQUFDLE1BQUFDLFNBQUFDO0FBQUFBLElBR3BEO0FBQUEsU0FBQUQsWUFBQSxZQUFBQSxZQUdvQjtBQUFBO0FBQUEsU0FBQUEsWUFEUjtBQUFBLElBR1o7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHVCQUNjO0FBQUE7QUFBQSxHQWJRO0FBQUE7QUFBQTtBQUFBLEVERnhCIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDQxMjUsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rkd2ViLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9oZWxpeC9zdGR3ZWIvU3Rkd2ViX2Zvcm1fZGF0YS5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIm9wZW4gc3RydWN0XG4gIG1vZHVsZSBEb20gPSBTdGR3ZWJfZG9tXG4gIG1vZHVsZSBPYmplY3QgPSBTdGR3ZWJfb2JqZWN0XG5lbmRcblxudHlwZSB0ID0gSngudFxuXG5sZXQgY29uc3RyID0gSnguZ2xvYmFsIFwiRm9ybURhdGFcIlxuXG5sZXQgbWFrZSA/c3VibWl0dGVyIGZvcm0gPVxuICBtYXRjaCBzdWJtaXR0ZXIgd2l0aFxuICB8IE5vbmUgLT4gSnguT2JqLm5ldzEgY29uc3RyIERvbS5Ob2RlLnRvX2pzIGZvcm1cbiAgfCBTb21lIHN1Ym1pdHRlciAtPlxuICAgIEp4Lk9iai5uZXcyIGNvbnN0ciBEb20uTm9kZS50b19qcyBEb20uTm9kZS50b19qcyBmb3JtIHN1Ym1pdHRlclxuXG5sZXQgZW50cmllcyB0ID1cbiAgbGV0IGl0ZXJfanMgPSBKeC5PYmouY2FsbF9qcyB0IFwiZW50cmllc1wiIFt8fF0gaW5cbiAgU3Rkd2ViX2l0ZXJhdG9yLnVuc2FmZV9vZl9qcyBpdGVyX2pzXG5cbmxldCB0b19qc29uID0gT2JqZWN0LmZyb21fZW50cmllc1xubGV0IHRvX2pzIHQgPSB0XG5cbmxldCB0b19hc3NvYyB0ID1cbiAgbGV0IGl0ID0gZW50cmllcyB0IGluXG4gIGxldCBvdXQgPSByZWYgW10gaW5cbiAgU3Rkd2ViX2l0ZXJhdG9yLml0ZXJcbiAgICAoZnVuIHggLT5cbiAgICAgIGxldCBhcnIgPSBKeC5EZWNvZGVyLmFycmF5IEp4LkRlY29kZXIuc3RyaW5nIHggaW5cbiAgICAgIGxldCBpdGVtID0gKEFycmF5LmdldCBhcnIgMCwgQXJyYXkuZ2V0IGFyciAxKSBpblxuICAgICAgb3V0IDo9IGl0ZW0gOjogIW91dFxuICAgIClcbiAgICBpdDtcbiAgTGlzdC5yZXYgIW91dFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NoZWNrX2JvdW5kIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImNhbWxfY2FsbDMiLCJhMiIsImNhbWxfY2FsbDUiLCJhMyIsImE0IiwiZ2xvYmFsX2RhdGEiLCJKeCIsIlN0ZHdlYl9TdGR3ZWJfaXRlcmF0b3IiLCJTdGRsaWJfTGlzdCIsIlN0ZHdlYl9TdGR3ZWJfZG9tIiwiU3Rkd2ViX1N0ZHdlYl9vYmplY3QiLCJjb25zdHIiLCJtYWtlIiwic3VibWl0dGVyIiwiZm9ybSIsImVudHJpZXMiLCJ0IiwiaXRlcl9qcyIsInRvX2pzb24iLCJ0b19qcyIsInRvX2Fzc29jIiwiaXQiLCJvdXQiLCJ4IiwiYXJyIiwiaXRlbSJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUosR0FBQUMsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFOLEdBQUFDLElBQUFFLElBQUFFLElBQUFFLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxLQUFBO0FBQUEsSUFBQUMseUJBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxJQUFBQyx1QkFBQTtBQUFBLElBQUFDLFNDT2E7QUFBQSxZQUFBQyxLQUFBQyxXQUFBQztBQUFBQSxJQUdYO0FBQUEsS0FDVSxvRUFFdUQ7QUFBQSxRQUFBRCxjQUhqRTtBQUFBLElBR0U7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEseUJBQStEO0FBQUE7QUFBQSxZQUFBRSxRQUFBQztBQUFBQSxRQUFBQyxVQUduRDtBQUFBLElBQ2Qsb0RBQW9DO0FBQUE7QUFBQSxPQUFBQyxVQVZMO0FBQUEsWUFBQUMsTUFBQUgsR0FhbkIsU0FBQztBQUFBLFlBQUFJLFNBQUFKO0FBQUFBLFFBQUFLLEtBR0osWUFBQUMsTUFDVDtBQUFBLElBQ0E7QUFBQTtBQUFBLGVBQUFDO0FBQUFBO0FBQUFBLFFBQUFDLE1BRWM7QUFBQSxZQUNtQjtBQUFBLFFBQUFDLE9BQWpCO0FBQUEsT0FDWjtBQUFBO0FBQUEsTUFBbUI7QUFBQTtBQUFBLElBRW5CLHlDQUNTO0FBQUE7QUFBQSxHQXpCa0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVEUGpDIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDQyMDEsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rkd2ViLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9oZWxpeC9zdGR3ZWIvU3Rkd2ViX2ZldGNoLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwib3BlbiBzdHJ1Y3RcbiAgbW9kdWxlIFByb21pc2UgPSBTdGR3ZWJfcHJvbWlzZVxuICBtb2R1bGUgRm9ybV9kYXRhID0gU3Rkd2ViX2Zvcm1fZGF0YVxuZW5kXG5cbigqIFJlcXVlc3QgKilcblxudHlwZSByZXF1ZXN0ID0gSngudFxuXG5tb2R1bGUgUmVxdWVzdCA9IHN0cnVjdFxuICB0eXBlIHQgPSByZXF1ZXN0XG5cbiAgbGV0IHQgPSBKeC5nbG9iYWwgXCJSZXF1ZXN0XCJcblxuICBsZXQgbWFrZSA/b3B0aW9ucyB1cmwgPVxuICAgIG1hdGNoIG9wdGlvbnMgd2l0aFxuICAgIHwgU29tZSBvcHRpb25zIC0+IEp4Lk9iai5uZXcyIHQgSnguRW5jb2Rlci5zdHJpbmcgSnguRW5jb2Rlci5qcyB1cmwgb3B0aW9uc1xuICAgIHwgTm9uZSAtPiBKeC5PYmoubmV3MSB0IEp4LkVuY29kZXIuc3RyaW5nIHVybFxuXG4gIGxldCBvZl9qcyA9IEp4LkRlY29kZXIuanNcbiAgbGV0IHRvX2pzID0gSnguRW5jb2Rlci5qc1xuZW5kXG5cbm1vZHVsZSBCb2R5ID0gc3RydWN0XG4gIHR5cGUgdCA9IEp4LnRcblxuICBsZXQgb2Zfc3RyaW5nID0gSnguRW5jb2Rlci5zdHJpbmdcbiAgbGV0IG9mX2Zvcm1fZGF0YSA9IEZvcm1fZGF0YS50b19qc1xuICBsZXQgdG9fanMgdCA9IHRcbiAgbGV0IHVuc2FmZV9vZl9qcyB0ID0gdFxuZW5kXG5cbigqIE9wdGlvbnMgKilcblxudHlwZSBtZXRoID1cbiAgWyBgR2V0IHwgYFB1dCB8IGBQb3N0IHwgYERlbGV0ZSB8IGBIZWFkIHwgYENvbm5lY3QgfCBgVHJhY2UgfCBgT3B0aW9ucyBdXG5cbnR5cGUgbW9kZSA9IFsgYENvcnMgfCBgTm9fY29ycyBdXG50eXBlIGNyZWRlbnRpYWxzID0gWyBgT21pdCB8IGBTYW1lX29yaWdpbiB8IGBJbmNsdWRlIF1cbnR5cGUgb3B0aW9ucyA9IEp4LnRcbnR5cGUgaGVhZGVycyA9IEp4LnRcblxubW9kdWxlIEhlYWRlcnMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaGVhZGVyc1xuXG4gIGxldCB0ID0gSnguZ2xvYmFsIFwiSGVhZGVyc1wiXG4gIGxldCBtYWtlICgpID0gSnguT2JqLm5ldzAgdFxuXG4gIGxldCBhcHBlbmQgdCBuYW1lIHZhbHVlID1cbiAgICBKeC5PYmouY2FsbDJfdW5pdCB0IFwiYXBwZW5kXCIgSnguRW5jb2Rlci5zdHJpbmcgSnguRW5jb2Rlci5zdHJpbmcgbmFtZSB2YWx1ZVxuXG4gIGxldCBlbnRyaWVzIHQgPSBKeC5PYmouY2FsbDAgdCBcImVudHJpZXNcIiB+cmV0dXJuOkp4LkRlY29kZXIuanMgKClcbmVuZFxuXG5tb2R1bGUgT3B0aW9ucyA9IHN0cnVjdFxuICB0eXBlIHQgPSBvcHRpb25zXG5cbiAgbGV0IG1ha2UgP2JvZHkgP21ldGggPyhoZWFkZXJzID0gW10pID9tb2RlID9jcmVkZW50aWFscyAoKSA9XG4gICAgbGV0IG9wZW4gSnguRW5jb2RlciBpblxuICAgIGxldCBmaWVsZHMgPSBbXSBpblxuICAgIGxldCBmaWVsZHMgPVxuICAgICAgbWF0Y2ggaGVhZGVycyB3aXRoXG4gICAgICB8IFtdIC0+IGZpZWxkc1xuICAgICAgfCBfIC0+XG4gICAgICAgIGxldCBocyA9IEhlYWRlcnMubWFrZSAoKSBpblxuICAgICAgICBMaXN0Lml0ZXIgKGZ1biAobmFtZSwgdmFsdWUpIC0+IEhlYWRlcnMuYXBwZW5kIGhzIG5hbWUgdmFsdWUpIGhlYWRlcnM7XG4gICAgICAgIChcImhlYWRlcnNcIiwgaHMpIDo6IGZpZWxkc1xuICAgIGluXG4gICAgbGV0IGZpZWxkcyA9XG4gICAgICBtYXRjaCBtb2RlIHdpdGhcbiAgICAgIHwgU29tZSBgQ29ycyAtPiAoXCJtb2RlXCIsIHN0cmluZyBcImNvcnNcIikgOjogZmllbGRzXG4gICAgICB8IFNvbWUgYE5vX2NvcnMgLT4gKFwibW9kZVwiLCBzdHJpbmcgXCJuby1jb3JzXCIpIDo6IGZpZWxkc1xuICAgICAgfCBOb25lIC0+IGZpZWxkc1xuICAgIGluXG4gICAgbGV0IGZpZWxkcyA9XG4gICAgICBtYXRjaCBjcmVkZW50aWFscyB3aXRoXG4gICAgICB8IFNvbWUgYE9taXQgLT4gKFwiY3JlZGVudGlhbHNcIiwgc3RyaW5nIFwib21pdFwiKSA6OiBmaWVsZHNcbiAgICAgIHwgU29tZSBgU2FtZV9vcmlnaW4gLT4gKFwiY3JlZGVudGlhbHNcIiwgc3RyaW5nIFwic2FtZS1vcmlnaW5cIikgOjogZmllbGRzXG4gICAgICB8IFNvbWUgYEluY2x1ZGUgLT4gKFwiY3JlZGVudGlhbHNcIiwgc3RyaW5nIFwiaW5jbHVkZVwiKSA6OiBmaWVsZHNcbiAgICAgIHwgTm9uZSAtPiBmaWVsZHNcbiAgICBpblxuICAgIGxldCBmaWVsZHMgPVxuICAgICAgbWF0Y2ggYm9keSB3aXRoXG4gICAgICB8IFNvbWUgYm9keSAtPiAoXCJib2R5XCIsIEJvZHkudG9fanMgYm9keSkgOjogZmllbGRzXG4gICAgICB8IE5vbmUgLT4gZmllbGRzXG4gICAgaW5cbiAgICBsZXQgZmllbGRzID1cbiAgICAgIG1hdGNoIG1ldGggd2l0aFxuICAgICAgfCBTb21lIGBHZXQgLT4gKFwibWV0aG9kXCIsIHN0cmluZyBcIkdFVFwiKSA6OiBmaWVsZHNcbiAgICAgIHwgU29tZSBgUHV0IC0+IChcIm1ldGhvZFwiLCBzdHJpbmcgXCJQVVRcIikgOjogZmllbGRzXG4gICAgICB8IFNvbWUgYFBvc3QgLT4gKFwibWV0aG9kXCIsIHN0cmluZyBcIlBPU1RcIikgOjogZmllbGRzXG4gICAgICB8IFNvbWUgYERlbGV0ZSAtPiAoXCJtZXRob2RcIiwgc3RyaW5nIFwiREVMRVRFXCIpIDo6IGZpZWxkc1xuICAgICAgfCBTb21lIGBIZWFkIC0+IChcIm1ldGhvZFwiLCBzdHJpbmcgXCJIRUFEXCIpIDo6IGZpZWxkc1xuICAgICAgfCBTb21lIGBDb25uZWN0IC0+IChcIm1ldGhvZFwiLCBzdHJpbmcgXCJDT05ORUNUXCIpIDo6IGZpZWxkc1xuICAgICAgfCBTb21lIGBPcHRpb25zIC0+IChcIm1ldGhvZFwiLCBzdHJpbmcgXCJPUFRJT05TXCIpIDo6IGZpZWxkc1xuICAgICAgfCBTb21lIGBUcmFjZSAtPiAoXCJtZXRob2RcIiwgc3RyaW5nIFwiVFJBQ0VcIikgOjogZmllbGRzXG4gICAgICB8IE5vbmUgLT4gZmllbGRzXG4gICAgaW5cbiAgICBKeC5PYmoub2ZfbGlzdCBmaWVsZHNcblxuICBsZXQgb2ZfanMgPSBKeC5EZWNvZGVyLmpzXG4gIGxldCB0b19qcyA9IEp4LkVuY29kZXIuanNcbmVuZFxuXG4oKiBSZXNwb25zZSAqKVxuXG50eXBlIHJlc3BvbnNlID0gSnguanNcblxubW9kdWxlIFJlc3BvbnNlID0gc3RydWN0XG4gIHR5cGUgdCA9IHJlc3BvbnNlXG5cbiAgbGV0IG9rIHQgPSBKeC5PYmouZ2V0IHQgXCJva1wiIEp4LkRlY29kZXIuYm9vbFxuICBsZXQgc3RhdHVzIHQgPSBKeC5PYmouZ2V0IHQgXCJzdGF0dXNcIiBKeC5EZWNvZGVyLmludFxuXG4gIGxldCB0ZXh0IHQgPVxuICAgIEp4Lk9iai5jYWxsMCB0IFwidGV4dFwiIH5yZXR1cm46UHJvbWlzZS5vZl9qcyAoKVxuICAgIHw+IFByb21pc2UubWFwIEp4LkRlY29kZXIuc3RyaW5nXG5cbiAgbGV0IGpzb24gdCA9XG4gICAgSnguT2JqLmNhbGwwIHQgXCJqc29uXCIgfnJldHVybjpQcm9taXNlLm9mX2pzICgpIHw+IFByb21pc2UubWFwIEp4LkRlY29kZXIuanNcblxuICBsZXQgaGVhZGVycyB0ID0gSnguT2JqLmdldCB0IFwiaGVhZGVyc1wiIEp4LkRlY29kZXIuanNcbiAgbGV0IG9mX2pzID0gSnguRGVjb2Rlci5qc1xuICBsZXQgdG9fanMgPSBKeC5FbmNvZGVyLmpzXG5lbmRcblxubGV0IGZldGNoID9ib2R5ID8obWV0aCA9IGBHZXQpID9oZWFkZXJzID9tb2RlID9jcmVkZW50aWFscyB1cmwgPVxuICBsZXQgb3B0cyA9IE9wdGlvbnMubWFrZSB+bWV0aCA/aGVhZGVycyA/bW9kZSA/Y3JlZGVudGlhbHMgP2JvZHkgKCkgaW5cbiAgSnguT2JqLmNhbGwyIFN0ZHdlYl9nbG9iYWwud2luZG93IFwiZmV0Y2hcIiB+cmV0dXJuOlJlc3BvbnNlLm9mX2pzXG4gICAgSnguRW5jb2Rlci5zdHJpbmcgT3B0aW9ucy50b19qcyB1cmwgb3B0c1xuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMyIsImExIiwiYTIiLCJjYW1sX2NhbGw0IiwiYTMiLCJjYW1sX2NhbGw1IiwiYTQiLCJjYW1sX2NhbGw2IiwiYTUiLCJjYW1sX2NhbGw3IiwiYTYiLCJnbG9iYWxfZGF0YSIsIkp4IiwiU3Rkd2ViX1N0ZHdlYl9nbG9iYWwiLCJTdGR3ZWJfU3Rkd2ViX3Byb21pc2UiLCJTdGRsaWJfTGlzdCIsIlN0ZHdlYl9TdGR3ZWJfZm9ybV9kYXRhIiwidCIsIm1ha2UiLCJvcHRpb25zIiwidXJsIiwib2ZfanMiLCJ0b19qcyIsIm9mX3N0cmluZyIsIm9mX2Zvcm1fZGF0YSIsInVuc2FmZV9vZl9qcyIsInBhcmFtIiwiYXBwZW5kIiwibmFtZSIsInZhbHVlIiwiZW50cmllcyIsImNzdF9oZWFkZXJzIiwiYm9keSIsIm1ldGgiLCJvcHQiLCJtb2RlIiwiY3JlZGVudGlhbHMiLCJoZWFkZXJzIiwiZmllbGRzIiwiaHMiLCJjc3RfbW9kZSIsIm1hdGNoIiwiY3N0X2NyZWRlbnRpYWxzIiwiY3N0X21ldGhvZCIsIm9rIiwic3RhdHVzIiwidGV4dCIsImpzb24iLCJmZXRjaCIsIm9wdHMiXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBTCxHQUFBQyxJQUFBRSxJQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQVAsR0FBQUMsSUFBQUUsSUFBQUMsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFULEdBQUFDLElBQUFFLElBQUFDLElBQUFFLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBWCxHQUFBQyxJQUFBRSxJQUFBQyxJQUFBRSxJQUFBRSxJQUFB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QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUQ3QzdCIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDQzODksImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rkd2ViLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9oZWxpeC9zdGR3ZWIvU3Rkd2ViX2RpY3QubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCJtb2R1bGUgU3RkbGliX29iaiA9IE9ialxubW9kdWxlIFN0ZGxpYl9hcnJheSA9IEFycmF5XG5cbnR5cGUgJ2EgdCA9IEp4Lk9iai50XG5cbmxldCB0b19qcyBwID0gcFxubGV0IG9mX2pzIGpzID0ganNcbmxldCB0b19vYmogcCA9IHBcbmxldCBvZl9vYmogb2JqID0gb2JqXG5sZXQgZW1wdHkgPSBKeC5PYmouZW1wdHlcblxubGV0IG9mX2FycmF5IGFyciA9XG4gIGxldCBhcnIgPVxuICAgIChTdGRsaWJfb2JqLm1hZ2ljIDogKHN0cmluZyAqICdhKSBhcnJheSAtPiAoc3RyaW5nICogSngudCkgYXJyYXkpIGFyclxuICBpblxuICBKeC5PYmoub2ZfYXJyYXkgYXJyXG5cbmxldCBvZl9saXN0IGwgPSBvZl9hcnJheSAoU3RkbGliX2FycmF5Lm9mX2xpc3QgbClcbmxldCBnZXQgZGljdCBrZXkgPSBKeC5PYmouZ2V0IGRpY3Qga2V5IEp4LkRlY29kZXIuYW55XG5sZXQgZ2V0X29wdCBkaWN0IGtleSA9IEp4Lk9iai5nZXRfb3B0IGRpY3Qga2V5IEp4LkRlY29kZXIuYW55XG5sZXQgc2V0IGRpY3Qga2V5IHggPSBKeC5PYmouc2V0IGRpY3Qga2V5IEp4LkVuY29kZXIuYW55IHhcbmxldCBkZWwgPSBKeC5PYmouZGVsXG5cbmxldCBlbnRyeV9vZl9qcyBlbnRyeV9qcyA9XG4gIG1hdGNoIEp4LkRlY29kZXIuYXJyYXlfanMgZW50cnlfanMgd2l0aFxuICB8IFt8IGtleTsgdiB8XSAtPiAoSnguRGVjb2Rlci5zdHJpbmcga2V5LCBKeC5EZWNvZGVyLmFueSB2KVxuICB8IF8gLT4gaW52YWxpZF9hcmcgXCJPYmplY3QgZW50cmllcyBpcyBub3QgYSBwYWlyXCJcblxubGV0IGVudHJpZXMgZGljdCA9XG4gIEp4Lk9iai5jYWxsMSBKeC5PYmoudCBcImVudHJpZXNcIlxuICAgIH5yZXR1cm46KEp4LkRlY29kZXIuYXJyYXkgZW50cnlfb2ZfanMpXG4gICAgSnguRW5jb2Rlci5qcyBkaWN0XG5cbmxldCBrZXlzIGRpY3QgPVxuICBKeC5PYmouY2FsbDEgSnguT2JqLnQgXCJrZXlzXCJcbiAgICB+cmV0dXJuOkp4LkRlY29kZXIuKGFycmF5IHN0cmluZylcbiAgICBKeC5FbmNvZGVyLmpzIGRpY3RcblxubGV0IHZhbHVlcyBkaWN0ID1cbiAgSnguT2JqLmNhbGwxIEp4Lk9iai50IFwidmFsdWVzXCJcbiAgICB+cmV0dXJuOkp4LkRlY29kZXIuKGFycmF5IGFueSlcbiAgICBKeC5FbmNvZGVyLmpzIGRpY3RcblxubGV0IG1hcCBkaWN0IGYgPVxuICBsZXQgb3V0ID0gZW1wdHkgKCkgaW5cbiAgbGV0IGtleXMgPSBrZXlzIGRpY3QgaW5cbiAgZm9yIGkgPSAwIHRvIFN0ZGxpYl9hcnJheS5sZW5ndGgga2V5cyAtIDEgZG9cbiAgICBsZXQga2V5ID0gU3RkbGliX2FycmF5LnVuc2FmZV9nZXQga2V5cyBpIGluXG4gICAgbGV0IHggPSBnZXQgZGljdCBrZXkgaW5cbiAgICBsZXQgeCcgPSBmIHggaW5cbiAgICBzZXQgb3V0IGtleSB4J1xuICBkb25lO1xuICBvdXRcblxubGV0IHVwZGF0ZSBkaWN0IGYgPVxuICBsZXQga2V5cyA9IGtleXMgZGljdCBpblxuICBmb3IgaSA9IDAgdG8gU3RkbGliX2FycmF5Lmxlbmd0aCBrZXlzIC0gMSBkb1xuICAgIGxldCBrZXkgPSBTdGRsaWJfYXJyYXkudW5zYWZlX2dldCBrZXlzIGkgaW5cbiAgICBsZXQgeCA9IGdldCBkaWN0IGtleSBpblxuICAgIGxldCB4JyA9IGYgeCBpblxuICAgIHNldCBkaWN0IGtleSB4J1xuICBkb25lXG5cbmxldCBmb2xkX2xlZnQgZGljdCBmIGluaXQgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgbGV0IHZhbHVlcyA9IHZhbHVlcyBkaWN0IGluXG4gIGZvciBpID0gMCB0byBTdGRsaWJfYXJyYXkubGVuZ3RoIHZhbHVlcyAtIDEgZG9cbiAgICBsZXQgeCA9IFN0ZGxpYl9hcnJheS51bnNhZmVfZ2V0IHZhbHVlcyBpIGluXG4gICAgYWNjIDo9IGYgIWFjYyB4XG4gIGRvbmU7XG4gICFhY2NcblxubGV0IGl0ZXIgZGljdCBmID1cbiAgbGV0IHZhbHVlcyA9IHZhbHVlcyBkaWN0IGluXG4gIGZvciBpID0gMCB0byBTdGRsaWJfYXJyYXkubGVuZ3RoIHZhbHVlcyAtIDEgZG9cbiAgICBsZXQgeCA9IFN0ZGxpYl9hcnJheS51bnNhZmVfZ2V0IHZhbHVlcyBpIGluXG4gICAgZiB4XG4gIGRvbmVcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImNhbWxfY2FsbDMiLCJhMiIsImNhbWxfY2FsbDQiLCJhMyIsImNhbWxfY2FsbDUiLCJhNCIsImdsb2JhbF9kYXRhIiwiSngiLCJTdGRsaWIiLCJTdGRsaWJfQXJyYXkiLCJ0b19qcyIsInAiLCJvZl9qcyIsImpzIiwidG9fb2JqIiwib2Zfb2JqIiwib2JqIiwiZW1wdHkiLCJvZl9hcnJheSIsImFyciIsIm9mX2xpc3QiLCJsIiwiZ2V0IiwiZGljdCIsImtleSIsImdldF9vcHQiLCJzZXQiLCJ4IiwiZGVsIiwiZW50cnlfb2ZfanMiLCJlbnRyeV9qcyIsIm1hdGNoIiwibGVuIiwidiIsImVudHJpZXMiLCJrZXlzIiwidmFsdWVzIiwibWFwIiwib3V0IiwiaSIsInVwZGF0ZSIsImZvbGRfbGVmdCIsImluaXQi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IiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDQ1NDcsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rkd2ViLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9oZWxpeC9zdGR3ZWIvU3Rkd2ViX2NvbnNvbGUubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCJtb2R1bGUgR2xvYmFsID0gU3Rkd2ViX2dsb2JhbFxuXG50eXBlIHQgPSBKeC50XG5cbmxldCB0ID0gR2xvYmFsLmNvbnNvbGVcbmxldCBsb2cgeCA9IEp4Lk9iai5jYWxsMV91bml0IHQgXCJsb2dcIiBKeC5FbmNvZGVyLmFueSB4XG5sZXQgZXJyb3IgeCA9IEp4Lk9iai5jYWxsMV91bml0IHQgXCJlcnJvclwiIEp4LkVuY29kZXIuYW55IHhcbmxldCBpbmZvIHggPSBKeC5PYmouY2FsbDFfdW5pdCB0IFwiaW5mb1wiIEp4LkVuY29kZXIuYW55IHhcbmxldCB3YXJuIHggPSBKeC5PYmouY2FsbDFfdW5pdCB0IFwid2FyblwiIEp4LkVuY29kZXIuYW55IHhcbmxldCBlbnN1cmUgYiB4ID0gSnguT2JqLmNhbGwyX3VuaXQgdCBcImFzc2VydFwiIEp4LkVuY29kZXIuYm9vbCBKeC5FbmNvZGVyLmFueSBiIHhcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jYWxsNCIsImYiLCJhMCIsImExIiwiYTIiLCJhMyIsImNhbWxfY2FsbDYiLCJhNCIsImE1IiwiZ2xvYmFsX2RhdGEiLCJKeCIsIlN0ZHdlYl9TdGR3ZWJfZ2xvYmFsIiwidCIsImxvZyIsIngiLCJlcnJvciIsImluZm8iLCJ3YXJuIiwiZW5zdXJlIiwiYiJdLCJtYXBwaW5ncyI6Ik9BQUFBLFVBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQyxJQUFBQyxJQUFBQyxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUwsR0FBQUMsSUFBQUMsSUFBQUMsSUFBQUMsSUFBQUUsSUFBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLEtBQUE7QUFBQSxJQUFBQyx1QkFBQTtBQUFBLElBQUFDLElBQUE7QUFBQSxZQUFBQyxJQUFBQyxHQ0tZLHNEQUEwQztBQUFBLFlBQUFDLE1BQUFEO0FBQUFBLElBQ3hDLHdEQUE0QztBQUFBO0FBQUEsWUFBQUUsS0FBQUYsR0FDN0MsdURBQTJDO0FBQUEsWUFBQUcsS0FBQUgsR0FDM0MsdURBQTJDO0FBQUEsWUFBQUksT0FBQUMsR0FBQUw7QUFBQUEsSUFDdkMsdUVBQStEO0FBQUE7QUFBQSxHRFRoRiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQ0NTgzLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZHdlYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvaGVsaXgvc3Rkd2ViL1N0ZHdlYl9jbGlwYm9hcmQubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCJtb2R1bGUgUHJvbWlzZSA9IFN0ZHdlYl9wcm9taXNlXG5cbnR5cGUgdCA9IEp4LnRcblxubGV0IHdyaXRlX3RleHQgdCB0ZXh0ID1cbiAgSnguT2JqLmNhbGwxIHQgXCJ3cml0ZVRleHRcIiB+cmV0dXJuOlByb21pc2Uub2ZfanMgSnguRW5jb2Rlci5zdHJpbmcgdGV4dFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGw1IiwiZiIsImEwIiwiYTEiLCJhMiIsImEzIiwiYTQiLCJnbG9iYWxfZGF0YSIsIkp4IiwiU3Rkd2ViX1N0ZHdlYl9wcm9taXNlIiwid3JpdGVfdGV4dCIsInQiLCJ0ZXh0Il0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDLElBQUFDLElBQUFDLElBQUFDLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxLQUFBO0FBQUEsSUFBQUMsd0JBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQ0tFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGtCQUF1RTtBQUFBO0FBQUEsR0RMekUiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0NDYxNCwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGR3ZWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL2hlbGl4L3N0ZHdlYi9TdGR3ZWJfYXJyYXkubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCJ0eXBlICdhIHQgPSBKeC50XG5cbmxldCB0ID0gSnguZ2xvYmFsIFwiQXJyYXlcIlxubGV0IHRvX2pzIHAgPSBwXG5sZXQgb2ZfanMganMgPSBqc1xubGV0IG1ha2UgbiA9IEp4Lk9iai5uZXcxIHQgSnguRW5jb2Rlci5pbnQgblxubGV0IGVtcHR5ICgpID0gbWFrZSAwXG5sZXQgc2V0IGFyciAoaSA6IGludCkgeCA9IEp4Lk9iai5zZXRfanMgYXJyIChKeC5FbmNvZGVyLmludCBpKSAoSnguRW5jb2Rlci5hbnkgeClcblxubGV0IGluaXQgbiBmID1cbiAgbGV0IG91dCA9IG1ha2UgbiBpblxuICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICBzZXQgb3V0IGkgKGYgaSlcbiAgZG9uZTtcbiAgb3V0XG5cbmxldCBnZXQgYXJyIGkgPSBKeC5EZWNvZGVyLmFueSAoSnguT2JqLmdldF9qcyBhcnIgKEp4LkVuY29kZXIuaW50IGkpKVxuXG5sZXQgZ2V0X29wdCBhcnIgaSA9XG4gIGxldCB4ID0gZ2V0IGFyciBpIGluXG4gIGxldCB4X2pzID0gSnguRW5jb2Rlci5hbnkgeCBpblxuICBpZiBKeC5pc191bmRlZmluZWQgeF9qcyB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlIHhcblxubGV0IHB1c2ggYXJyIHggPSBKeC5PYmouY2FsbDFfdW5pdCBhcnIgXCJwdXNoXCIgSnguRW5jb2Rlci5hbnkgeFxubGV0IHBvcCBhcnIgPSBKeC5PYmouY2FsbDAgYXJyIFwicG9wXCIgfnJldHVybjpKeC5EZWNvZGVyLmFueSAoKVxubGV0IHBvcF9vcHQgYXJyID0gSnguT2JqLmNhbGwwIGFyciBcInBvcFwiIH5yZXR1cm46SnguRGVjb2Rlci4ob3B0aW9uYWwgYW55KSAoKVxubGV0IGxlbmd0aCBhcnIgPSBKeC5PYmouZ2V0IGFyciBcImxlbmd0aFwiIEp4LkRlY29kZXIuaW50XG5cbmxldCBjb25jYXQgYXJyMSBhcnIyID1cbiAgSnguT2JqLmNhbGwxIH5yZXR1cm46SnguRGVjb2Rlci5qcyBhcnIxIFwiY29uY2F0XCIgSnguRW5jb2Rlci5qcyBhcnIyXG5cbmxldCBzbGljZSBhcnIgaSBqID1cbiAgSnguT2JqLmNhbGwyIH5yZXR1cm46SnguRGVjb2Rlci5qcyBhcnIgXCJzbGljZVwiIEp4LkVuY29kZXIuaW50IEp4LkVuY29kZXIuaW50IGlcbiAgICBqXG5cbmxldCBpdGVyIGFyciBmID0gSnguT2JqLmNhbGwxX3VuaXQgYXJyIFwiZm9yRWFjaFwiIEp4LkVuY29kZXIuZnVuMSBmXG5cbmxldCBvZl9saXN0IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBlbXB0eSAoKVxuICB8IGhkIDo6IHRsIC0+XG4gICAgbGV0IG91dCA9IG1ha2UgMSBpblxuICAgIHNldCBvdXQgMCBoZDtcbiAgICBMaXN0Lml0ZXJpIChmdW4gaSB4IC0+IHNldCBvdXQgKGkgKyAxKSB4KSB0bDtcbiAgICBvdXRcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImNhbWxfY2FsbDMiLCJhMiIsImNhbWxfY2FsbDQiLCJhMyIsImNhbWxfY2FsbDUiLCJhNCIsImNhbWxfY2FsbDciLCJhNSIsImE2IiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWJfTGlzdCIsIkp4IiwiU3RkbGliIiwidCIsInRvX2pzIiwicCIsIm9mX2pzIiwianMiLCJtYWtlIiwibiIsImVtcHR5IiwicGFyYW0iLCJzZXQiLCJhcnIiLCJpIiwieCIsImluaXQiLCJvdXQiLCJnZXQiLCJnZXRfb3B0IiwieF9qcyIsInB1c2giLCJjc3RfcG9wIiwicG9wIiwicG9wX29wdCIsImxlbmd0aCIsImNvbmNhdCIsImFycjEiLCJhcnIyIiwic2xpY2UiLCJqIiwiaXRlciIsIm9mX2xpc3QiLCJsIiwidGwiLCJoZCJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUosR0FBQUMsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFOLEdBQUFDLElBQUFFLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBUixHQUFBQyxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQVYsR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxLQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDLElDRVE7QUFBQSxZQUFBQyxNQUFBQyxHQUNNLFNBQUM7QUFBQSxZQUFBQyxNQUFBQyxJQUNBLFVBQUU7QUFBQSxZQUFBQyxLQUFBQyxHQUNKLDhDQUE4QjtBQUFBLFlBQUFDLE1BQUFDLE9BQzVCLGNBQU07QUFBQSxZQUFBQyxJQUFBQyxLQUFBQyxHQUFBQztBQUFBQSxRQUFBLElBQzBDLCtCQUFuQjtBQUFBLElBQWtCLHdDQUFtQjtBQUFBO0FBQUEsWUFBQUMsS0FBQVAsR0FBQXZCO0FBQUFBLFFBQUErQixNQUdyRSxhQUNWO0FBQUE7QUFBQSxTQUFBSCxJQUFBO0FBQUE7QUFBQSxNQUNFLFlBQVU7QUFBQSxjQUFLO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUVqQjtBQUFBLEdBQUc7QUFBQSxZQUFBSSxJQUFBTCxLQUFBQztBQUFBQSxRQUFBLElBRTZDLDhCQUFuQjtBQUFBLElBQXNDO0FBQUE7QUFBQSxZQUFBSyxRQUFBTixLQUFBQztBQUFBQSxRQUFBQyxJQUczRCxhQUFBSyxPQUNHO0FBQUEsSUFDUjtBQUFBLEtBQTBCO0FBQUEsSUFBcUI7QUFBQSxHQUFDO0FBQUEsWUFBQUMsS0FBQVIsS0FBQUU7QUFBQUEsSUFFcEMseURBQTZDO0FBQUE7QUFBQSxPQUFBTyxVRHZCOUQ7QUFBQSxZQUFBQyxJQUFBVjtBQUFBQSxJQ3dCYywwREFBZ0Q7QUFBQTtBQUFBLFlBQUFXLFFBQUFYO0FBQUFBLFFBQUEsSUFDRDtBQUFBLElBQVksaURBQUk7QUFBQTtBQUFBLFlBQUFZLE9BQUFaO0FBQUFBLElBQzVELHVEQUFzQztBQUFBO0FBQUEsWUFBQWEsT0FBQUMsTUFBQUM7QUFBQUEsSUFHckQseUVBQW1FO0FBQUE7QUFBQSxZQUFBQyxNQUFBaEIsS0FBQUMsR0FBQWdCO0FBQUFBLElBR25FO0FBQUEsNkVBQ0c7QUFBQTtBQUFBLFlBQUFDLEtBQUFsQixLQUFBM0I7QUFBQUEsSUFFWSw0REFBaUQ7QUFBQTtBQUFBLFlBQUE4QyxRQUFBQztBQUFBQSxJQUdoRSxRQUNRLGVBS0g7QUFBQSxRQUFBQyxLQU5MLE1BQUFDLEtBQUEsTUFBQWxCLE1BR1k7QUFBQSxJQUNWO0FBQUEsSUFDQTtBQUFBLHFCQUFBSCxHQUFBQyxHQUF1Qiw2QkFBaUI7QUFBQSxJQUFJO0FBQUEsR0FDekM7QUFBQSxHQTFDa0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFREZ6QiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQ0NzQ1LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZHdlYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvaGVsaXgvc3Rkd2ViL1N0ZHdlYi5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIm1vZHVsZSBBcnJheSA9IFN0ZHdlYl9hcnJheVxubW9kdWxlIENvbnNvbGUgPSBTdGR3ZWJfY29uc29sZVxubW9kdWxlIERpY3QgPSBTdGR3ZWJfZGljdFxubW9kdWxlIERvbSA9IFN0ZHdlYl9kb21cbm1vZHVsZSBJdGVyYXRvciA9IFN0ZHdlYl9pdGVyYXRvclxubW9kdWxlIE9iamVjdCA9IFN0ZHdlYl9vYmplY3Rcbm1vZHVsZSBGb3JtX2RhdGEgPSBTdGR3ZWJfZm9ybV9kYXRhXG5tb2R1bGUgTWFwID0gU3Rkd2ViX21hcFxubW9kdWxlIFByb21pc2UgPSBTdGR3ZWJfcHJvbWlzZVxubW9kdWxlIEZldGNoID0gU3Rkd2ViX2ZldGNoXG5tb2R1bGUgU3RvcmFnZSA9IFN0ZHdlYl9zdG9yYWdlXG5tb2R1bGUgQ2xpcGJvYXJkID0gU3Rkd2ViX2NsaXBib2FyZFxubW9kdWxlIEpzb24gPSBTdGR3ZWJfanNvblxubW9kdWxlIFdlYnNvY2tldCA9IFN0ZHdlYl93ZWJzb2NrZXRcbm1vZHVsZSBVcmxfc2VhcmNoX3BhcmFtcyA9IFN0ZHdlYl91cmxfc2VhcmNoX3BhcmFtc1xuXG5tb2R1bGUgTmF2aWdhdG9yID0gc3RydWN0XG4gIHR5cGUgdCA9IEp4LnRcblxuICBsZXQgY2xpcGJvYXJkIHQgPSBKeC5PYmouZ2V0IHQgXCJjbGlwYm9hcmRcIiBKeC5EZWNvZGVyLmpzXG5lbmRcblxubW9kdWxlIE51bWJlciA9IHN0cnVjdFxuICB0eXBlIHQgPSBmbG9hdFxuXG4gIGxldCB0b19wcmVjaXNpb24gdCBuID1cbiAgICBsZXQgdF9qcyA9IEp4LkVuY29kZXIuZmxvYXQgdCBpblxuICAgIEp4Lk9iai5jYWxsMSB0X2pzIFwidG9QcmVjaXNpb25cIiB+cmV0dXJuOkp4LkRlY29kZXIuc3RyaW5nIEp4LkVuY29kZXIuaW50IG5cbmVuZFxuXG5pbmNsdWRlIFN0ZHdlYl9nbG9iYWxcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDMiLCJhMSIsImEyIiwiY2FtbF9jYWxsNSIsImEzIiwiYTQiLCJnbG9iYWxfZGF0YSIsIkp4IiwiU3Rkd2ViX1N0ZHdlYl9nbG9iYWwiLCJTdGR3ZWJfU3Rkd2ViX3VybF9zZWFyY2hfcGFyYW0iLCJTdGR3ZWJfU3Rkd2ViX3dlYnNvY2tldCIsIlN0ZHdlYl9TdGR3ZWJfY2xpcGJvYXJkIiwiU3Rkd2ViX1N0ZHdlYl9zdG9yYWdlIiwiU3Rkd2ViX1N0ZHdlYl9mZXRjaCIsIlN0ZHdlYl9TdGR3ZWJfZm9ybV9kYXRhIiwiU3Rkd2ViX1N0ZHdlYl9qc29uIiwiU3Rkd2ViX1N0ZHdlYl9kb20iLCJTdGR3ZWJfU3Rkd2ViX29iamVjdCIsIlN0ZHdlYl9TdGR3ZWJfbWFwIiwiU3Rkd2ViX1N0ZHdlYl9pdGVyYXRvciIsIlN0ZHdlYl9TdGR3ZWJfcHJvbWlzZSIsIlN0ZHdlYl9TdGR3ZWJfZGljdCIsIlN0ZHdlYl9TdGR3ZWJfYXJyYXkiLCJTdGR3ZWJfU3Rkd2ViX2NvbnNvbGUiLCJjbGlwYm9hcmQiLCJ0IiwidG9fcHJlY2lzaW9uIiwibiIsInRfanMiLCJ3aW5kb3ciLCJkb2N1bWVudCIsImNvbnNvbGUiLCJuYXZpZ2F0b3IiLCJlbmNvZGVfdXJpX2NvbXBvbmVudCIsIlN0ZHdlYiJdLCJtYXBwaW5ncyI6Ik9BQUFBLFVBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUUsSUFBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFMLEdBQUFDLElBQUFFLElBQUFDLElBQUFFLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxLQUFBO0FBQUEsSUFBQUMsdUJBQUE7QUFBQSxJQUFBQztBQUFBQSxNQUFBO0FBQUEsSUFBQUMsMEJBQUE7QUFBQSxJQUFBQywwQkFBQTtBQUFBLElBQUFDLHdCQUFBO0FBQUEsSUFBQUMsc0JBQUE7QUFBQSxJQUFBQywwQkFBQTtBQUFBLElBQUFDLHFCQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxJQUFBQyx1QkFBQTtBQUFBLElBQUFDLG9CQUFBO0FBQUEsSUFBQUMseUJBQUE7QUFBQSxJQUFBQyx3QkFBQTtBQUFBLElBQUFDLHFCQUFBO0FBQUEsSUFBQUMsc0JBQUE7QUFBQSxJQUFBQyx3QkFBQTtBQUFBLFlBQUFDLFVBQUFDO0FBQUFBLElDbUJvQix3REFBc0M7QUFBQTtBQUFBLFlBQUFDLGFBQUFELEdBQUFFO0FBQUFBLFFBQUFDLE9BTzNDO0FBQUEsSUFDWDtBQUFBLHNFQUEwRTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxTRDNCOUU7QUFBQSxJQUFBQyxXQUFBO0FBQUEsSUFBQUMsVUFBQTtBQUFBLElBQUFDLFlBQUE7QUFBQSxJQUFBQyx1QkFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUM7QUFBQUEsTUFBQSIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQ1MDEwLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6Imh0bWwuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL2hlbGl4L2h0bWwvSHRtbC5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIm9wZW4gU3Rkd2ViXG5cbm1vZHVsZSBDdHggPSBzdHJ1Y3RcbiAgbGV0IGdlbl9pZCA9XG4gICAgbGV0IGkgPSByZWYgKC0xKSBpblxuICAgIGZ1biAoKSAtPlxuICAgICAgaW5jciBpO1xuICAgICAgKE9iai5tYWdpYyAhaSA6IHN0cmluZylcblxuICB0eXBlIHQgPSB7IGlkIDogc3RyaW5nOyBtdXRhYmxlIGNsZWFudXAgOiAodW5pdCAtPiB1bml0KSBsaXN0OyB0cmVlIDogdCBTdGR3ZWIuRGljdC50IH1cblxuICBsZXQgbWFrZSAoKSA9IHsgaWQgPSBnZW5faWQgKCk7IGNsZWFudXAgPSBbXTsgdHJlZSA9IFN0ZHdlYi5EaWN0LmVtcHR5ICgpIH1cbiAgbGV0IG9uX2NsZWFudXAgdCBmID0gdC5jbGVhbnVwIDwtIGYgOjogdC5jbGVhbnVwXG4gIGxldCBjbGVhbnVwIHQgPSBMaXN0Lml0ZXIgKGZ1biBjIC0+IGMgKCkpIHQuY2xlYW51cFxuICBsZXQgbGluayB0IHQyID0gU3Rkd2ViLkRpY3Quc2V0IHQudHJlZSB0Mi5pZCB0MlxuICBsZXQgdW5saW5rIHQgc3ViY3R4ID0gU3Rkd2ViLkRpY3QuZGVsIHQudHJlZSBzdWJjdHguaWRcbmVuZFxuXG4oKiBBdHRyaWJ1dGVzIGFyZSBmdW5jdGlvbnMgdGhhdCBzZXQgXCJhdHRyaWJ1dGVzXCIgb24gZWxlbWVudHMuXG4gICBIdG1sIHZhbHVlcyBhcmUgZnVuY3Rpb25zIHRoYXQgbW91bnQgYW5kIHVubW91bnQgY2hpbGRyZW4uXG5cbiAgIENsZWFudXA6XG4gICAtIGZyZWUgbXVzdCBiZSBhbHdheXMgY2FsbGVkLCBpZiBkZWZpbmVkO1xuICAgLSByZW1vdmUgbXVzdCBiZSBjYWxsZWQgdG8gZGVhY3RpdmF0ZSB0aGUgYXR0ciBhbmQgZG9lcyBub3QgbmVlZCB0byBiZSBjYWxsZWRcbiAgICAgd2hlbiB0aGUgbm9kZSBpcyByZW1vdmVkLlxuKilcblxubW9kdWxlIEF0dHIgPSBzdHJ1Y3RcbiAgdHlwZSBzdGF0ZSA9IHsgc2V0IDogdW5pdCAtPiB1bml0OyB1bnNldCA6IHVuaXQgLT4gdW5pdCB9XG4gIHR5cGUgdCA9IEN0eC50IC0+IERvbS5Ob2RlLnQgLT4gc3RhdGVcblxuICBsZXQgbm9wIF9jdHggX25vZGUgPSB7IHNldCA9IGlnbm9yZTsgdW5zZXQgPSBpZ25vcmUgfVxuICBsZXQgb24gYm9vbCBhdHRyID0gaWYgYm9vbCB0aGVuIGF0dHIgZWxzZSBub3BcblxuICBsZXQgb25fc29tZSA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IG5vcFxuICAgIHwgU29tZSBhdCAtPiBhdFxuXG4gIGxldCBvbl9vayA9IGZ1bmN0aW9uXG4gICAgfCBFcnJvciBfIC0+IG5vcFxuICAgIHwgT2sgYXR0ciAtPiBhdHRyXG5cbiAgbGV0IHN0cmluZyBuYW1lIHZhbHVlIF9jdHggbm9kZSA9XG4gICAgbGV0IHNldCAoKSA9IERvbS5Ob2RlLnNldF9hdHRyIG5vZGUgbmFtZSB2YWx1ZSBpblxuICAgIGxldCB1bnNldCAoKSA9IERvbS5Ob2RlLnVuc2V0X2F0dHIgbm9kZSBuYW1lIGluXG4gICAgeyBzZXQ7IHVuc2V0IH1cblxuICBsZXQgYm9vbCBuYW1lIGJvb2wgPSBpZiBib29sIHRoZW4gc3RyaW5nIG5hbWUgXCJcIiBlbHNlIG5vcFxuICBsZXQgaW50IG5hbWUgaSA9IHN0cmluZyBuYW1lIChzdHJpbmdfb2ZfaW50IGkpXG5cbiAgbGV0IG9uX21vdW50IGYgX2N0eCBub2RlID1cbiAgICBsZXQgc2V0ICgpID0gZiBub2RlIGluXG4gICAgeyBzZXQ7IHVuc2V0ID0gaWdub3JlIH1cblxuICBsZXQgc2V0IGF0dHIgbm9kZSA9IGF0dHIgbm9kZVxuICBsZXQgdW5zZXQgc3RhdGUgPSBzdGF0ZS51bnNldCAoKVxuXG4gIGxldCBjb21iaW5lIGExIGEyIGN0eCBub2RlID1cbiAgICBsZXQgYTFfc3RhdGUgPSBhMSBjdHggbm9kZSBpblxuICAgIGxldCBhMl9zdGF0ZSA9IGEyIGN0eCBub2RlIGluXG4gICAgbGV0IHNldCAoKSA9XG4gICAgICBhMV9zdGF0ZS5zZXQgKCk7XG4gICAgICBhMl9zdGF0ZS5zZXQgKClcbiAgICBpblxuICAgIGxldCB1bnNldCAoKSA9XG4gICAgICBhMV9zdGF0ZS51bnNldCAoKTtcbiAgICAgIGEyX3N0YXRlLnVuc2V0ICgpXG4gICAgaW5cbiAgICB7IHNldDsgdW5zZXQgfVxuXG4gIGxldCBsaXN0IGF0dHJzID0gTGlzdC5mb2xkX2xlZnQgY29tYmluZSBub3AgYXR0cnNcbiAgbGV0IGxhYmVsID0gc3RyaW5nIFwibGFiZWxcIlxuZW5kXG5cbnR5cGUgYXR0ciA9IEF0dHIudFxuXG5sZXQgYXR0ciA9IEF0dHIuc3RyaW5nXG5cbigqIFN0YW5kYXJkIGNvbnN0cnVjdG9ycy4gKilcbmxldCBhY2NlcHQgdmFsdWUgPSBBdHRyLnN0cmluZyBcImFjY2VwdFwiIHZhbHVlXG5sZXQgYWNjZXNza2V5IHZhbHVlID0gQXR0ci5zdHJpbmcgXCJhY2Nlc3NrZXlcIiB2YWx1ZVxubGV0IGFjdGlvbiB2YWx1ZSA9IEF0dHIuc3RyaW5nIFwiYWN0aW9uXCIgdmFsdWVcbmxldCBhdXRvY29tcGxldGUgdmFsdWUgPSBBdHRyLnN0cmluZyBcImF1dG9jb21wbGV0ZVwiIHZhbHVlXG5sZXQgYXV0b2ZvY3VzIHZhbHVlID0gQXR0ci5ib29sIFwiYXV0b2ZvY3VzXCIgdmFsdWVcbmxldCBjaGFyc2V0IHZhbHVlID0gQXR0ci5zdHJpbmcgXCJjaGFyc2V0XCIgdmFsdWVcbmxldCBjaGVja2VkIHZhbHVlID0gQXR0ci5ib29sIFwiY2hlY2tlZFwiIHZhbHVlXG5sZXQgY2xhc3NfbmFtZSB2YWx1ZSA9IEF0dHIuc3RyaW5nIFwiY2xhc3NcIiB2YWx1ZVxubGV0IGNvbHMgdmFsdWUgPSBBdHRyLmludCBcImNvbHNcIiB2YWx1ZVxubGV0IGNvbnRlbnQgdmFsdWUgPSBBdHRyLnN0cmluZyBcImNvbnRlbnRcIiB2YWx1ZVxubGV0IGNvbnRlbnRlZGl0YWJsZSB2YWx1ZSA9IEF0dHIuYm9vbCBcImNvbnRlbnRlZGl0YWJsZVwiIHZhbHVlXG5sZXQgZGVmZXIgdmFsdWUgPSBBdHRyLmJvb2wgXCJkZWZlclwiIHZhbHVlXG5sZXQgZGlyIHZhbHVlID0gQXR0ci5zdHJpbmcgXCJkaXJcIiB2YWx1ZVxubGV0IGRpc2FibGVkIHZhbHVlID0gQXR0ci5ib29sIFwiZGlzYWJsZWRcIiB2YWx1ZVxubGV0IGRyYWdnYWJsZSB2YWx1ZSA9IEF0dHIuYm9vbCBcImRyYWdnYWJsZVwiIHZhbHVlXG5sZXQgZm9yJyB2YWx1ZSA9IEF0dHIuc3RyaW5nIFwiZm9yXCIgdmFsdWVcbmxldCBmb3JtYWN0aW9uIHZhbHVlID0gQXR0ci5zdHJpbmcgXCJmb3JtYWN0aW9uXCIgdmFsdWVcbmxldCBoZWlnaHQgdmFsdWUgPSBBdHRyLmludCBcImhlaWdodFwiIHZhbHVlXG5sZXQgaGlkZGVuIHZhbHVlID0gQXR0ci5ib29sIFwiaGlkZGVuXCIgdmFsdWVcbmxldCBocmVmIHZhbHVlID0gQXR0ci5zdHJpbmcgXCJocmVmXCIgdmFsdWVcbmxldCBpZCB2YWx1ZSA9IEF0dHIuc3RyaW5nIFwiaWRcIiB2YWx1ZVxubGV0IGxhbmcgdmFsdWUgPSBBdHRyLnN0cmluZyBcImxhbmdcIiB2YWx1ZVxubGV0IGxpc3QgdmFsdWUgPSBBdHRyLnN0cmluZyBcImxpc3RcIiB2YWx1ZVxubGV0IG1lZGlhIHZhbHVlID0gQXR0ci5zdHJpbmcgXCJtZWRpYVwiIHZhbHVlXG5sZXQgbWV0aG9kJyB2YWx1ZSA9IEF0dHIuc3RyaW5nIFwibWV0aG9kXCIgdmFsdWVcbmxldCBuYW1lIHZhbHVlID0gQXR0ci5zdHJpbmcgXCJuYW1lXCIgdmFsdWVcbmxldCBvcGVuJyB2YWx1ZSA9IEF0dHIuYm9vbCBcIm9wZW5cIiB2YWx1ZVxubGV0IHBsYWNlaG9sZGVyIHZhbHVlID0gQXR0ci5zdHJpbmcgXCJwbGFjZWhvbGRlclwiIHZhbHVlXG5sZXQgcmVsIHZhbHVlID0gQXR0ci5zdHJpbmcgXCJyZWxcIiB2YWx1ZVxubGV0IHJlcXVpcmVkIHZhbHVlID0gQXR0ci5ib29sIFwicmVxdWlyZWRcIiB2YWx1ZVxubGV0IHJvd3MgdmFsdWUgPSBBdHRyLmludCBcInJvd3NcIiB2YWx1ZVxubGV0IHNlbGVjdGVkIHZhbHVlID0gQXR0ci5ib29sIFwic2VsZWN0ZWRcIiB2YWx1ZVxubGV0IHNwZWxsY2hlY2sgdmFsdWUgPSBBdHRyLnN0cmluZyBcInNwZWxsY2hlY2tcIiB2YWx1ZVxubGV0IHNyYyB2YWx1ZSA9IEF0dHIuc3RyaW5nIFwic3JjXCIgdmFsdWVcbmxldCB0YWJpbmRleCB2YWx1ZSA9IEF0dHIuaW50IFwidGFiaW5kZXhcIiB2YWx1ZVxubGV0IHRpdGxlIHZhbHVlID0gQXR0ci5zdHJpbmcgXCJ0aXRsZVwiIHZhbHVlXG5sZXQgdHlwZScgdmFsdWUgPSBBdHRyLnN0cmluZyBcInR5cGVcIiB2YWx1ZVxuXG5sZXQgdmFsdWUgeCBfY3R4IG5vZGUgPVxuICBsZXQgc2V0ICgpID0gRG9tLk5vZGUuc2V0X3ZhbHVlIG5vZGUgeCBpblxuICBsZXQgdW5zZXQgKCkgPSBEb20uTm9kZS5yZXNldF92YWx1ZSBub2RlIGluXG4gIHsgQXR0ci5zZXQ7IHVuc2V0IH1cblxubGV0IHZhbHVlX29yIGRlZmF1bHQgb3B0ID1cbiAgbWF0Y2ggb3B0IHdpdGhcbiAgfCBTb21lIHggLT4gdmFsdWUgeFxuICB8IE5vbmUgLT4gdmFsdWUgZGVmYXVsdFxuXG5sZXQgd3JhcCB2YWx1ZSA9IEF0dHIuc3RyaW5nIFwid3JhcFwiIHZhbHVlXG5sZXQgd2lkdGggdmFsdWUgPSBBdHRyLmludCBcIndpZHRoXCIgdmFsdWVcbmxldCBzdHlsZSB4ID0gQXR0ci5zdHJpbmcgXCJzdHlsZVwiIHhcbmxldCByb2xlIHggPSBBdHRyLnN0cmluZyBcInJvbGVcIiB4XG5cbmxldCBzdHlsZV9saXN0IGl0ZW1zIF9jdHggbm9kZSA9XG4gIGxldCBzdHlsZSA9IERvbS5Ob2RlLmdldF9zdHlsZSBub2RlIGluXG4gIGxldCBzZXQgKCkgPSBMaXN0Lml0ZXIgKGZ1biAobmFtZSwgdmFsdWUpIC0+IERvbS5TdHlsZS5zZXQgc3R5bGUgbmFtZSB2YWx1ZSkgaXRlbXMgaW5cbiAgbGV0IHVuc2V0ICgpID0gTGlzdC5pdGVyIChmdW4gKG5hbWUsIF92YWx1ZSkgLT4gRG9tLlN0eWxlLnVuc2V0IHN0eWxlIG5hbWUpIGl0ZW1zIGluXG4gIHsgQXR0ci5zZXQ7IHVuc2V0IH1cblxubGV0IGNsYXNzX2xpc3QgaXRlbXMgX2N0eCBub2RlID1cbiAgbGV0IGNsID0gRG9tLk5vZGUuZ2V0X2NsYXNzX2xpc3Qgbm9kZSBpblxuICBsZXQgc2V0ICgpID0gTGlzdC5pdGVyIChmdW4gbmFtZSAtPiBEb20uVG9rZW5fbGlzdC5hZGQgY2wgbmFtZSkgaXRlbXMgaW5cbiAgbGV0IHVuc2V0ICgpID0gTGlzdC5pdGVyIChmdW4gbmFtZSAtPiBEb20uVG9rZW5fbGlzdC5yZW1vdmUgY2wgbmFtZSkgaXRlbXMgaW5cbiAgeyBBdHRyLnNldDsgdW5zZXQgfVxuXG5sZXQgY2xhc3NfZmxhZ3Mgb3B0aW9ucyA9XG4gIGxldCBsaXN0ID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBhY2MgKGMsIGIpIC0+IGlmIGIgdGhlbiBjIDo6IGFjYyBlbHNlIGFjYykgW10gb3B0aW9ucyBpblxuICBjbGFzc19saXN0IGxpc3RcblxuKCogRG8gd2UgbmVlZCB0byB1bmJpbmQgdGhlIGV2ZW50IGV4cGxpY2l0bHk/IEluIHRoZW9yeSwgdGhlIGJyb3dzZXIgc2hvdWxkXG4gICByZW1vdmUgdGhlIGxpc3RlbmVycyB3aGVuIHRoZSBub2RlIGlzIGdjJ2VkLiAqKVxubGV0IG9uID8oZGVmYXVsdCA9IHRydWUpID9jb25maXJtIChuYW1lIDogRG9tLkV2ZW50Lm5hbWUpIGYgX2N0eCBub2RlID1cbiAgbGV0IGYnID1cbiAgICBtYXRjaCBjb25maXJtIHdpdGhcbiAgICB8IE5vbmUgd2hlbiBub3QgZGVmYXVsdCAtPlxuICAgICAgZnVuIGV2IC0+XG4gICAgICAgIERvbS5FdmVudC5wcmV2ZW50X2RlZmF1bHQgZXY7XG4gICAgICAgIGYgZXZcbiAgICB8IE5vbmUgLT4gZlxuICAgIHwgU29tZSBtc2cgLT5cbiAgICAgIGZ1biBldiAtPlxuICAgICAgICBpZiBEb20uV2luZG93LmNvbmZpcm0gbXNnIHRoZW5cbiAgICAgICAgICBsZXQgKCkgPSBpZiBub3QgZGVmYXVsdCB0aGVuIERvbS5FdmVudC5wcmV2ZW50X2RlZmF1bHQgZXYgaW5cbiAgICAgICAgICBmIGV2XG4gICAgICAgIGVsc2UgRG9tLkV2ZW50LnByZXZlbnRfZGVmYXVsdCBldlxuICBpblxuICBsZXQgc2V0ICgpID0gRG9tLk5vZGUuYmluZCBub2RlIG5hbWUgZicgaW5cbiAgbGV0IHVuc2V0ICgpID0gRG9tLk5vZGUudW5iaW5kIG5vZGUgbmFtZSBmJyBpblxuICB7IEF0dHIuc2V0OyB1bnNldCB9XG5cbmxldCBvbl9jaGFuZ2UgP2NvbmZpcm0gaGFuZGxlciA9XG4gIG9uIH5kZWZhdWx0OmZhbHNlID9jb25maXJtIERvbS5FdmVudC5jaGFuZ2UgKGZ1biBldiAtPlxuICAgICAgaGFuZGxlciAoRG9tLk5vZGUuZ2V0X3ZhbHVlIChEb20uRXZlbnQudGFyZ2V0IGV2KSkpXG5cbmxldCBvbl9jaGVja2VkID9jb25maXJtIGhhbmRsZXIgPVxuICBvbiB+ZGVmYXVsdDpmYWxzZSA/Y29uZmlybSBEb20uRXZlbnQuY2hhbmdlIChmdW4gZXYgLT5cbiAgICAgIGhhbmRsZXIgKERvbS5Ob2RlLmdldF9jaGVja2VkIChEb20uRXZlbnQudGFyZ2V0IGV2KSkpXG5cbmxldCBvbl9pbnB1dCA/Y29uZmlybSBoYW5kbGVyID1cbiAgb24gfmRlZmF1bHQ6ZmFsc2UgP2NvbmZpcm0gRG9tLkV2ZW50LmlucHV0IChmdW4gZXYgLT5cbiAgICAgIGhhbmRsZXIgKERvbS5Ob2RlLmdldF92YWx1ZSAoRG9tLkV2ZW50LnRhcmdldCBldikpKVxuXG5sZXQgb25fY2xpY2sgP2NvbmZpcm0gaGFuZGxlciA9IG9uIH5kZWZhdWx0OmZhbHNlID9jb25maXJtIERvbS5FdmVudC5jbGljayAoZnVuIF8gLT4gaGFuZGxlciAoKSlcblxubGV0IG9uX2RvdWJsZV9jbGljayA/Y29uZmlybSBoYW5kbGVyID1cbiAgb24gfmRlZmF1bHQ6ZmFsc2UgP2NvbmZpcm0gRG9tLkV2ZW50LmRibGNsaWNrIChmdW4gXyAtPiBoYW5kbGVyICgpKVxuXG4oKiBFbGVtXG5cbiAgICBodG1sIHN0YXRlIGlzIGNvbXBvc2VkIG9mIHR3byBjbGVhbnVwIGZ1bmN0aW9uczpcbiAgICAtIGZyZWU6IGNsZWFucyB1cCBhbnkgbm9uLWRvbSByZXNvdXJjZXMgKGxpa2Ugc2lnbmFsIHN1YnNjcmlwdGlvbnMpO1xuICAgIC0gcmVtb3ZlOiBjYWxscyBmcmVlIGFuZCBhbHNvIHJlbW92ZXMgdGhlIHRvcC1sZXZlbCBkb20gcmVzb3VyY2VzLlxuXG4gICBUaGVzZSB0d28gZnVuY3Rpb25zIGFyZSBuZWVkZWQgc2luY2UgZGVsZXRpbmcgYSB0b3AtbGV2ZWwgZG9tIG5vZGUsXG4gICBhdXRvbWF0aWNhbGx5IGRlbGV0ZXMgdGhlIGNoaWxkcmVuIG5vZGVzLCBidXQgd2lsbCBub3QgZnJlZSBhbnkgbWFudWFsbHlcbiAgIGFjcXVpcmVkIHJlc291cmNlcy5cbiopXG5cbigqIEV4dHJhIGNvbnN0cnVjdG9ycy4gKilcbm1vZHVsZSBFbGVtID0gc3RydWN0XG4gIHR5cGUgc3RhdGUgPSB7IHVubW91bnQgOiB1bml0IC0+IHVuaXQ7IG1vdW50IDogKERvbS5ub2RlIC0+IHVuaXQpIC0+IHVuaXQgfVxuICB0eXBlIHQgPSBDdHgudCAtPiBEb20ubm9kZSAtPiBzdGF0ZVxuXG4gIGxldCBudWxsX3N0YXRlID0geyB1bm1vdW50ID0gaWdub3JlOyBtb3VudCA9IChmdW4gX2luc2VydCAtPiAoKSkgfVxuICBsZXQgbnVsbCBfY3R4IF9wYXJlbnQgPSBudWxsX3N0YXRlXG5cbiAgKCpcbiAgICBbTk9URV0gSW52YXJpYW50XG4gICAgVGhlIHBhcmVudCBNVVNUIE5PVCBjaGFuZ2UuXG5cbiAgICBbTk9URV0gT3JlZHJcbiAgICBUaGUgaW5pdGlhbGl6YXRpb24gb3JkZXIgTVVTVCBiZTpcbiAgICAxLiBjcmVhdGUgZWxlbVxuICAgIDIuIGluc2VydCBlbGVtXG4gICAgMy4gc2V0IGF0dHJzXG4gICAgMi4gYWRkIGNoaWxkcmVuXG5cbiAgICBJZiB0aGlzIG9yZGVyIGlzbid0IGZvbGxvd2VkLCBhbGwga2luZHMgb2YgdGhpbmdzIHdpbGwgYnJlYWsuIEZvciBleGFtcGxlLFxuICAgIGBzZWxlY3RgIHJlcXVpcmVzIHRoYXQgY2hpbGRyZW4gYXJlIHByZXNlbnQgZm9yIHRoZSBgdmFsdWVgIGF0dHIgdG8gd29yay5cblxuICAgIFRoZSBgY29uZGl0aW9uYWxgIGF0dHJpYnV0ZSByZXF1aXJlcyB0aGF0IHRoZSBub2RlIGlzIG1vdW50ZWQgb24gYSBwYXJlbnQuXG4gICopXG5cbiAgbGV0IG1ha2UgbmFtZSBhdHRycyBjaGlsZHJlbiBjdHggcGFyZW50ID1cbiAgICBsZXQgbW91bnRlZCA9IHJlZiBmYWxzZSBpblxuICAgICgqIENyZWF0ZSBub2RlICopXG4gICAgbGV0IG5vZGUgPSBEb20uRG9jdW1lbnQuY3JlYXRlX2VsZW1lbnQgbmFtZSBpblxuICAgIGxldCBtb3VudCBpbnNlcnQgPVxuICAgICAgaW5zZXJ0IG5vZGU7XG4gICAgICBpZiBub3QgIW1vdW50ZWQgdGhlbiAoXG4gICAgICAgICgqIFNldCBub2RlJ3MgYXR0cmlidXRlcyAqKVxuICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAoZnVuIChhdHRyIDogQXR0ci50KSAtPlxuICAgICAgICAgICAgbGV0IHN0YXRlID0gYXR0ciBjdHggbm9kZSBpblxuICAgICAgICAgICAgc3RhdGUuc2V0ICgpKVxuICAgICAgICAgIGF0dHJzO1xuICAgICAgICAoKiBDcmVhdGUgYW5kIG1vdW50IGNoaWxkcmVuICopXG4gICAgICAgIGxldCBub2RlX2luc2VydCA9IERvbS5Ob2RlLmFwcGVuZF9jaGlsZCB+cGFyZW50Om5vZGUgaW5cbiAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgKGZ1biAoY2hpbGQgOiB0KSAtPlxuICAgICAgICAgICAgbGV0IGNoaWxkX3N0YXRlID0gY2hpbGQgY3R4IG5vZGUgaW5cbiAgICAgICAgICAgIGNoaWxkX3N0YXRlLm1vdW50IG5vZGVfaW5zZXJ0KVxuICAgICAgICAgIGNoaWxkcmVuO1xuICAgICAgICBtb3VudGVkIDo9IHRydWUpXG4gICAgaW5cbiAgICB7XG4gICAgICB1bm1vdW50ID0gKGZ1biAoKSAtPiBEb20uTm9kZS5yZW1vdmVfY2hpbGQgfnBhcmVudCBub2RlKTtcbiAgICAgICgqIEFsbG93IG1vdW50aW5nIG5vZGUgb24gcGFyZW50ICopXG4gICAgICBtb3VudDtcbiAgICB9XG5cbiAgbGV0IHRleHQgZGF0YSBfY3R4IHBhcmVudCA9XG4gICAgbGV0IG5vZGUgPSBEb20uRG9jdW1lbnQuY3JlYXRlX3RleHRfbm9kZSBkYXRhIGluXG4gICAge1xuICAgICAgdW5tb3VudCA9IChmdW4gKCkgLT4gRG9tLk5vZGUucmVtb3ZlX2NoaWxkIH5wYXJlbnQgbm9kZSk7XG4gICAgICBtb3VudCA9IChmdW4gaW5zZXJ0IC0+IGluc2VydCBub2RlKTtcbiAgICB9XG5cbiAgbGV0IG9mX3NvbWUgdG9faHRtbCBvcHRpb24gPVxuICAgIG1hdGNoIG9wdGlvbiB3aXRoXG4gICAgfCBTb21lIHggLT4gdG9faHRtbCB4XG4gICAgfCBOb25lIC0+IG51bGxcblxuICBsZXQgb2Zfb2sgdG9faHRtbCByZXN1bHQgPVxuICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgfCBPayB4IC0+IHRvX2h0bWwgeFxuICAgIHwgRXJyb3IgXyAtPiBudWxsXG5cbiAgbGV0IG9uX3VubW91bnQgZiBlbGVtIGN0eCA9XG4gICAgQ3R4Lm9uX2NsZWFudXAgY3R4IGY7XG4gICAgZWxlbSBjdHhcblxuICBsZXQgdW5zYWZlIG5hbWUgYXR0cnMgY29udGVudCBjdHggcGFyZW50ID1cbiAgICBsZXQgbm9kZSA9IERvbS5Eb2N1bWVudC5jcmVhdGVfZWxlbWVudCBuYW1lIGluXG4gICAgRG9tLk5vZGUuc2V0X2lubmVyX2h0bWwgbm9kZSBjb250ZW50O1xuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biAoYXR0ciA6IEF0dHIudCkgLT5cbiAgICAgICAgbGV0IHN0YXRlID0gYXR0ciBjdHggbm9kZSBpblxuICAgICAgICBzdGF0ZS5zZXQgKCkpXG4gICAgICBhdHRycztcbiAgICB7XG4gICAgICB1bm1vdW50ID0gKGZ1biAoKSAtPiBEb20uTm9kZS5yZW1vdmVfY2hpbGQgfnBhcmVudCBub2RlKTtcbiAgICAgIG1vdW50ID0gKGZ1biBpbnNlcnQgLT4gaW5zZXJ0IG5vZGUpO1xuICAgIH1cblxuICBsZXQgZnJhZ21lbnQgY2hpbGRyZW4gY3R4IHBhcmVudCA9XG4gICAgbGV0IGZyYWcgPSBEb20uRnJhZ21lbnQubWFrZSAoKSBpblxuICAgIGxldCBmcmFnX2luc2VydCA9IERvbS5Ob2RlLmFwcGVuZF9jaGlsZCB+cGFyZW50OmZyYWcgaW5cbiAgICBsZXQgc3RhdGVzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4gKGNoaWxkIDogdCkgLT5cbiAgICAgICAgICBsZXQgcyA9IGNoaWxkIGN0eCBwYXJlbnQgaW5cbiAgICAgICAgICBzLm1vdW50IGZyYWdfaW5zZXJ0O1xuICAgICAgICAgIHMpXG4gICAgICAgIGNoaWxkcmVuXG4gICAgaW5cbiAgICB7XG4gICAgICB1bm1vdW50ID0gKGZ1biAoKSAtPiBMaXN0Lml0ZXIgKGZ1biAocyA6IHN0YXRlKSAtPiBzLnVubW91bnQgKCkpIHN0YXRlcyk7XG4gICAgICBtb3VudCA9IChmdW4gaW5zZXJ0IC0+IGluc2VydCBmcmFnKTtcbiAgICB9XG5lbmRcblxudHlwZSBodG1sID0gRWxlbS50XG5cbmxldCBlbGVtID0gRWxlbS5tYWtlXG5sZXQgdGV4dCA9IEVsZW0udGV4dFxubGV0IG51bGwgPSBFbGVtLm51bGxcbmxldCBmcmFnbWVudCA9IEVsZW0uZnJhZ21lbnRcbmxldCBpbnQgbiA9IHRleHQgKHN0cmluZ19vZl9pbnQgbilcbmxldCBuYnNwID0gdGV4dCBcIlxcdXswMEEwfVwiXG5sZXQgYSBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJhXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBhYmJyIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImFiYnJcIiBhdHRycyBjaGlsZHJlblxubGV0IGFkZHJlc3MgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiYWRkcmVzc1wiIGF0dHJzIGNoaWxkcmVuXG5sZXQgYXJlYSBhdHRycyA9IGVsZW0gXCJhcmVhXCIgYXR0cnMgW11cbmxldCBhcnRpY2xlIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImFydGljbGVcIiBhdHRycyBjaGlsZHJlblxubGV0IGFzaWRlIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImFzaWRlXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBhdWRpbyBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJhdWRpb1wiIGF0dHJzIGNoaWxkcmVuXG5sZXQgYiBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJiXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBiYXNlIGF0dHJzID0gZWxlbSBcImJhc2VcIiBhdHRycyBbXVxubGV0IGJkaSBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJiZGlcIiBhdHRycyBjaGlsZHJlblxubGV0IGJkbyBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJiZG9cIiBhdHRycyBjaGlsZHJlblxubGV0IGJsb2NrcXVvdGUgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiYmxvY2txdW90ZVwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgYnIgYXR0cnMgPSBlbGVtIFwiYnJcIiBhdHRycyBbXVxubGV0IGJ1dHRvbiBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJidXR0b25cIiBhdHRycyBjaGlsZHJlblxubGV0IGNhbnZhcyBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJjYW52YXNcIiBhdHRycyBjaGlsZHJlblxubGV0IGNhcHRpb24gYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiY2FwdGlvblwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgY2l0ZSBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJjaXRlXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBjb2RlIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImNvZGVcIiBhdHRycyBjaGlsZHJlblxubGV0IGNvbCBhdHRycyA9IGVsZW0gXCJjb2xcIiBhdHRycyBbXVxubGV0IGNvbGdyb3VwIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImNvbGdyb3VwXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBjb21tYW5kIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImNvbW1hbmRcIiBhdHRycyBjaGlsZHJlblxubGV0IGRhdGFsaXN0IGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImRhdGFsaXN0XCIgYXR0cnMgY2hpbGRyZW5cbmxldCBkZCBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJkZFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgZGVsIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImRlbFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgZGV0YWlscyBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJkZXRhaWxzXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBkZm4gYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiZGZuXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBkaXYgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiZGl2XCIgYXR0cnMgY2hpbGRyZW5cbmxldCBkbCBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJkbFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgZHQgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiZHRcIiBhdHRycyBjaGlsZHJlblxubGV0IGVtIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImVtXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBlbWJlZCBhdHRycyA9IGVsZW0gXCJlbWJlZFwiIGF0dHJzIFtdXG5sZXQgZmllbGRzZXQgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiZmllbGRzZXRcIiBhdHRycyBjaGlsZHJlblxubGV0IGZpZ2NhcHRpb24gYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiZmlnY2FwdGlvblwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgZmlndXJlIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImZpZ3VyZVwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgZm9vdGVyIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImZvb3RlclwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgZm9ybSBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJmb3JtXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBoMSBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJoMVwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgaDIgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiaDJcIiBhdHRycyBjaGlsZHJlblxubGV0IGgzIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImgzXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBoNCBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJoNFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgaDUgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiaDVcIiBhdHRycyBjaGlsZHJlblxubGV0IGg2IGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImg2XCIgYXR0cnMgY2hpbGRyZW5cbmxldCBoZWFkIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImhlYWRcIiBhdHRycyBjaGlsZHJlblxubGV0IGhlYWRlciBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJoZWFkZXJcIiBhdHRycyBjaGlsZHJlblxubGV0IGhncm91cCBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJoZ3JvdXBcIiBhdHRycyBjaGlsZHJlblxubGV0IGhyIGF0dHJzID0gZWxlbSBcImhyXCIgYXR0cnMgW11cblxuKCogbGV0IGh0bWwgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiaHRtbFwiIGF0dHJzIGNoaWxkcmVuICopXG5sZXQgaSBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJpXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBpZnJhbWUgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiaWZyYW1lXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBpbWcgYXR0cnMgPSBlbGVtIFwiaW1nXCIgYXR0cnMgW11cbmxldCBpbnB1dCBhdHRycyA9IGVsZW0gXCJpbnB1dFwiIGF0dHJzIFtdXG5sZXQgaW5zIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImluc1wiIGF0dHJzIGNoaWxkcmVuXG5sZXQga2JkIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImtiZFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQga2V5Z2VuIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImtleWdlblwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgbGFiZWwgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwibGFiZWxcIiBhdHRycyBjaGlsZHJlblxubGV0IGxlZ2VuZCBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJsZWdlbmRcIiBhdHRycyBjaGlsZHJlblxubGV0IGxpIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImxpXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBtYWluIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcIm1haW5cIiBhdHRycyBjaGlsZHJlblxubGV0IG1hcCBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJtYXBcIiBhdHRycyBjaGlsZHJlblxubGV0IG1hcmsgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwibWFya1wiIGF0dHJzIGNoaWxkcmVuXG5sZXQgbWVudSBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJtZW51XCIgYXR0cnMgY2hpbGRyZW5cbmxldCBtZXRhIGF0dHJzID0gZWxlbSBcIm1ldGFcIiBhdHRycyBbXVxubGV0IG1ldGVyIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcIm1ldGVyXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBuYXYgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwibmF2XCIgYXR0cnMgY2hpbGRyZW5cbmxldCBvYmplY3QnIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcIm9iamVjdFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgb2wgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwib2xcIiBhdHRycyBjaGlsZHJlblxubGV0IG9wdGdyb3VwIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcIm9wdGdyb3VwXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBvcHRpb24gYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwib3B0aW9uXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBvdXRwdXQgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwib3V0cHV0XCIgYXR0cnMgY2hpbGRyZW5cbmxldCBwIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcInBcIiBhdHRycyBjaGlsZHJlblxubGV0IHBhcmFtIGF0dHJzID0gZWxlbSBcInBhcmFtXCIgYXR0cnMgW11cbmxldCBwcmUgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwicHJlXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBwcm9ncmVzcyBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJwcm9ncmVzc1wiIGF0dHJzIGNoaWxkcmVuXG5sZXQgcSBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJxXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBycCBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJycFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgcnQgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwicnRcIiBhdHRycyBjaGlsZHJlblxubGV0IHJ1YnkgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwicnVieVwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgcyBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJzXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBzYW1wIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcInNhbXBcIiBhdHRycyBjaGlsZHJlblxubGV0IHNlY3Rpb24gYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwic2VjdGlvblwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgc2VsZWN0IGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcInNlbGVjdFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgc21hbGwgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwic21hbGxcIiBhdHRycyBjaGlsZHJlblxubGV0IHNvdXJjZSBhdHRycyA9IGVsZW0gXCJzb3VyY2VcIiBhdHRycyBbXVxubGV0IHNwYW4gYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwic3BhblwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgc3Ryb25nIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcInN0cm9uZ1wiIGF0dHJzIGNoaWxkcmVuXG5sZXQgc3ViIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcInN1YlwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgc3VtbWFyeSBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJzdW1tYXJ5XCIgYXR0cnMgY2hpbGRyZW5cbmxldCBzdXAgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwic3VwXCIgYXR0cnMgY2hpbGRyZW5cbmxldCB0YWJsZSBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJ0YWJsZVwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgdGJvZHkgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwidGJvZHlcIiBhdHRycyBjaGlsZHJlblxubGV0IHRkIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcInRkXCIgYXR0cnMgY2hpbGRyZW5cbmxldCB0ZXh0YXJlYSBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJ0ZXh0YXJlYVwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgdGZvb3QgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwidGZvb3RcIiBhdHRycyBjaGlsZHJlblxubGV0IHRoIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcInRoXCIgYXR0cnMgY2hpbGRyZW5cbmxldCB0aGVhZCBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJ0aGVhZFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgdGltZSBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJ0aW1lXCIgYXR0cnMgY2hpbGRyZW5cbmxldCB0ciBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJ0clwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgdHJhY2sgYXR0cnMgPSBlbGVtIFwidHJhY2tcIiBhdHRycyBbXVxubGV0IHUgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwidVwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgdWwgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwidWxcIiBhdHRycyBjaGlsZHJlblxubGV0IHZhciBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJ2YXJcIiBhdHRycyBjaGlsZHJlblxubGV0IHZpZGVvIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcInZpZGVvXCIgYXR0cnMgY2hpbGRyZW5cbmxldCB3YnIgYXR0cnMgPSBlbGVtIFwid2JyXCIgYXR0cnMgW11cblxubGV0IG9uX21vdW50IGYgaHRtbCBjdHggcGFyZW50ID1cbiAgbGV0IHN0YXRlIDogRWxlbS5zdGF0ZSA9IGh0bWwgY3R4IHBhcmVudCBpblxuICB7XG4gICAgc3RhdGUgd2l0aFxuICAgIG1vdW50ID1cbiAgICAgIChmdW4gaW5zZXJ0IC0+XG4gICAgICAgIHN0YXRlLm1vdW50IGluc2VydDtcbiAgICAgICAgZiAoKSk7XG4gIH1cblxubGV0IHJlc291cmNlIH5pbml0IH5mcmVlICh1c2UgOiAnYSAtPiBFbGVtLnQpIGN0eCBwYXJlbnQgPVxuICBsZXQgciA9IGluaXQgKCkgaW5cbiAgbGV0IGh0bWwgPSB1c2UgciBpblxuICBsZXQgc3RhdGUgPSBodG1sIGN0eCBwYXJlbnQgaW5cbiAgQ3R4Lm9uX2NsZWFudXAgY3R4IChmdW4gKCkgLT4gZnJlZSByKTtcbiAgc3RhdGVcblxuKCogRE9NIGhlbHBlcnMgKilcblxubGV0IG1vdW50IHBhcmVudCBodG1sID1cbiAgbGV0IGN0eCA9IEN0eC5tYWtlICgpIGluXG4gIGxldCBzdGF0ZSA6IEVsZW0uc3RhdGUgPSBodG1sIGN0eCBwYXJlbnQgaW5cbiAgbGV0IGluc2VydCA9IERvbS5Ob2RlLmFwcGVuZF9jaGlsZCB+cGFyZW50IGluXG4gIHN0YXRlLm1vdW50IGluc2VydFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiZ2xvYmFsX2RhdGEiLCJTdGR3ZWIiLCJTdGRsaWIiLCJTdGRsaWJfTGlzdCIsImkiLCJtYWtlIiwicGFyYW0iLCJvbl9jbGVhbnVwIiwidCIsImNsZWFudXAiLCJjIiwibGluayIsInQyIiwidW5saW5rIiwic3ViY3R4Iiwibm9wIiwiY3R4Iiwibm9kZSIsIm9uIiwiYm9vbCIsImF0dHIiLCJvbl9zb21lIiwiYXQiLCJvbl9vayIsInN0cmluZyIsIm5hbWUiLCJ2YWx1ZSIsInNldCIsInVuc2V0IiwiaW50Iiwib25fbW91bnQiLCJjb21iaW5lIiwiYTFfc3RhdGUiLCJhMl9zdGF0ZSIsImxpc3QiLCJhdHRycyIsImNzdF9sYWJlbCIsImxhYmVsIiwiYWNjZXB0IiwiYWNjZXNza2V5IiwiYWN0aW9uIiwiYXV0b2NvbXBsZXRlIiwiYXV0b2ZvY3VzIiwiY2hhcnNldCIsImNoZWNrZWQiLCJjbGFzc19uYW1lIiwiY29scyIsImNvbnRlbnQiLCJjb250ZW50ZWRpdGFibGUiLCJkZWZlciIsImRpciIsImRpc2FibGVkIiwiZHJhZ2dhYmxlIiwiZm9yJCIsImZvcm1hY3Rpb24iLCJoZWlnaHQiLCJoaWRkZW4iLCJocmVmIiwiaWQiLCJsYW5nIiwibWVkaWEiLCJtZXRob2QiLCJvcGVuIiwicGxhY2Vob2xkZXIiLCJyZWwiLCJyZXF1aXJlZCIsInJvd3MiLCJzZWxlY3RlZCIsInNwZWxsY2hlY2siLCJzcmMiLCJ0YWJpbmRleCIsInRpdGxlIiwidHlwZSIsIngiLCJ2YWx1ZV9vciIsImRlZmF1bHQkIiwib3B0Iiwid3JhcCIsIndpZHRoIiwic3R5bGUiLCJyb2xlIiwic3R5bGVfbGlzdCIsIml0ZW1zIiwiY2xhc3NfbGlzdCIsImNsIiwiY2xhc3NfZmxhZ3MiLCJvcHRpb25zIiwiYWNjIiwiYiIsImNvbmZpcm0iLCJtc2ciLCJldiIsIm9uX2NoYW5nZSIsImhhbmRsZXIiLCJvbl9jaGVja2VkIiwib25faW5wdXQiLCJvbl9jbGljayIsIm9uX2RvdWJsZV9jbGljayIsIm51bGxfc3RhdGUiLCJpbnNlcnQiLCJudWxsJCIsInBhcmVudCIsImNoaWxkcmVuIiwibW91bnRlZCIsIm1vdW50Iiwic3RhdGUiLCJub2RlX2luc2VydCIsImNoaWxkIiwiY2hpbGRfc3RhdGUiLCJ0ZXh0IiwiZGF0YSIsIm9mX3NvbWUiLCJ0b19odG1sIiwib3B0aW9uIiwib2Zfb2siLCJyZXN1bHQiLCJvbl91bm1vdW50IiwiZWxlbSIsInVuc2FmZSIsImZyYWdtZW50IiwiZnJhZyIsImZyYWdfaW5zZXJ0Iiwic3RhdGVzIiwicyIsIm4iLCJuYnNwIiwiYSIsImFiYnIiLCJhZGRyZXNzIiwiYXJlYSIsImFydGljbGUiLCJhc2lkZSIsImF1ZGlvIiwiYmFzZSIsImJkaSIsImJkbyIsImJsb2NrcXVvdGUiLCJiciIsImJ1dHRvbiIsImNhbnZhcyIsImNhcHRpb24iLCJjaXRlIiwiY29kZSIsImNvbCIsImNvbGdyb3VwIiwiY29tbWFuZCIsImRhdGFsaXN0IiwiZGQiLCJkZWwiLCJkZXRhaWxzIiwiZGZuIiwiZGl2IiwiZGwiLCJkdCIsImVtIiwiZW1iZWQiLCJmaWVsZHNldCIsImZpZ2NhcHRpb24iLCJmaWd1cmUiLCJmb290ZXIiLCJmb3JtIiwiaDEiLCJoMiIsImgzIiwiaDQiLCJoNSIsImg2IiwiaGVhZCIsImhlYWRlciIsImhncm91cCIsImhyIiwiaWZyYW1lIiwiaW1nIiwiaW5wdXQiLCJpbnMiLCJrYmQiLCJrZXlnZW4iLCJsZWdlbmQiLCJsaSIsIm1haW4iLCJtYXAiLCJtYXJrIiwibWVudSIsIm1ldGEiLCJtZXRlciIsIm5hdiIsIm9iamVjdCIsIm9sIiwib3B0Z3JvdXAiLCJvdXRwdXQiLCJwIiwicHJlIiwicHJvZ3Jlc3MiLCJxIiwicnAiLCJydCIsInJ1YnkiLCJzYW1wIiwic2VjdGlvbiIsInNlbGVjdCIsInNtYWxsIiwic291cmNlIiwic3BhbiIsInN0cm9uZyIsInN1YiIsInN1bW1hcnkiLCJzdXAiLCJ0YWJsZSIsInRib2R5IiwidGQiLCJ0ZXh0YXJlYSIsInRmb290IiwidGgiLCJ0aGVhZCIsInRpbWUiLCJ0ciIsInRyYWNrIiwidSIsInVsIiwidmFyJCIsInZpZGVvIiwid2JyIiwiaHRtbCIsInJlc291cmNlIiwiaW5pdCIsImZyZWUiLCJ1c2UiLCJyIiwiSHRtbCJdLCJtYXBwaW5ncyI6Ik9BQUFBLFVBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFKLEdBQUFDLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxJQUFBO0FBQUEsWUFBQUMsS0FBQUM7QUFBQUEsUUFBQSxJQ1d1RDtBQUFBLElBTGpEO0FBQUEsSUFLMEI7QUFBQSxHQUE2QztBQUFBLFlBQUFDLFdBQUFDLEdBQUFkLEdBQ3RELDhCQUEyQjtBQUFBLFlBQUFlLFFBQUFEO0FBQUFBLElBQ2hDO0FBQUEsNEJBQUFFLEdBQW9CLHVCQUFJLFNBQVc7QUFBQTtBQUFBLFlBQUFDLEtBQUFILEdBQUFJLElBQ25DLGlEQUErQjtBQUFBLFlBQUFDLE9BQUFMLEdBQUFNO0FBQUFBLElBQ3pCLGlEQUFnQztBQUFBO0FBQUEsWUFBQUMsSUFBQUMsS0FBQUM7QUFBQUEsSUFnQmpDLHVCRC9CdkIsbUNDK0J1QjtBQUFBLEdBQWdDO0FBQUEsWUFBQUMsR0FBQUMsTUFBQUMsTUFDbEMsd0JBQTBCO0FBQUEsWUFBQUMsUUFBQWY7QUFBQUEsSUFFL0IsWUFDRjtBQUFBLFFB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QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxnQkFBQWpNO0FBQUFBLFFBd0VSLHNCRDVYbEIsd0NDNFhrQjtBQUFBLE9BQXFCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEdBeEViO0FBQUE7QUFBQSxFRHBUMUIiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0NTkzNSwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJoZWxpeC5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvaGVsaXgvVmlldy5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIm1vZHVsZSBDb21tZW50ID0gU3Rkd2ViLkRvbS5Db21tZW50XG5tb2R1bGUgRnJhZ21lbnQgPSBTdGR3ZWIuRG9tLkZyYWdtZW50XG5tb2R1bGUgRG9jdW1lbnQgPSBTdGR3ZWIuRG9tLkRvY3VtZW50XG5tb2R1bGUgTm9kZSA9IFN0ZHdlYi5Eb20uTm9kZVxubW9kdWxlIEV2ZW50ID0gU3Rkd2ViLkRvbS5FdmVudFxuXG5tb2R1bGUgTGlzdF9leHQgPSBzdHJ1Y3RcbiAgbGV0IHJldl9tYXBpIGYgbDAgPVxuICAgIGxldCByZWMgbG9vcCBpIGFjYyBsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBhY2NcbiAgICAgIHwgeCA6OiBsJyAtPiBsb29wIChpICsgMSkgKGYgaSB4IDo6IGFjYykgbCdcbiAgICBpblxuICAgIGxvb3AgMCBbXSBsMFxuZW5kXG5cbmxldCBvcHRpb25fZ2V0IG9wdGlvbiA9XG4gIG1hdGNoIG9wdGlvbiB3aXRoXG4gIHwgU29tZSB4IC0+IHhcbiAgfCBOb25lIC0+IGludmFsaWRfYXJnIFwib3B0aW9uIGlzIE5vbmVcIlxuXG5sZXQgb3JfZmFpbCBtc2cgb3B0aW9uID1cbiAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgfCBTb21lIHggLT4geFxuICB8IE5vbmUgLT4gZmFpbHdpdGggbXNnXG5cbmxldCBpbnNlcnRfYWZ0ZXJfYW5jaG9yIH5wYXJlbnQgfmFuY2hvciBub2RlID1cbiAgbWF0Y2ggTm9kZS5uZXh0X3NpYmxpbmcgYW5jaG9yIHdpdGhcbiAgfCBTb21lIGFuY2hvcl9zaWJsaW5nIC0+IE5vZGUuaW5zZXJ0X2JlZm9yZSB+cGFyZW50IH5yZWZlcmVuY2U6YW5jaG9yX3NpYmxpbmcgbm9kZVxuICB8IE5vbmUgLT4gTm9kZS5hcHBlbmRfY2hpbGQgfnBhcmVudCBub2RlXG5cbigqIFNob3cgKilcblxubGV0IGZha2VfZGVidWdfaHRtbCBfcmVuZGVyX2NvdW50IF9jb21tZW50X2RhdGEgaHRtbCA9IGh0bWxcblxubGV0IHJlYWxfZGVidWdfaHRtbCA9XG4gIGxldCBjb2xvcnMgPSBbfCBcIm1hZ2VudGFcIjsgXCJjeWFuXCI7IFwic2FsbW9uXCI7IFwiYXF1YW1hcmluZVwiOyBcImxpbWVcIjsgXCJ5ZWxsb3dcIjsgXCJwYWxlZ3JlZW5cIiB8XSBpblxuICBsZXQgaSA9IHJlZiAoLTEpIGluXG4gIGxldCBnZXRfY29sb3IgKCkgPVxuICAgIGlmICFpICsgMSA+PSBBcnJheS5sZW5ndGggY29sb3JzIHRoZW4gaSA6PSAwIGVsc2UgaW5jciBpO1xuICAgIEFycmF5LmdldCBjb2xvcnMgIWlcbiAgaW5cbiAgZnVuIHJlbmRlcl9jb3VudCBjb21tZW50X2RhdGEgaHRtbCAtPlxuICAgIGxldCBjID0gZ2V0X2NvbG9yICgpIGluXG4gICAgSHRtbC5kaXZcbiAgICAgIFtcbiAgICAgICAgSHRtbC5zdHlsZV9saXN0XG4gICAgICAgICAgWyAoXCJkaXNwbGF5XCIsIFwiZmxleFwiKTsgKFwiZmxleC1kaXJlY3Rpb25cIiwgXCJjb2x1bW5cIik7IChcImJvcmRlclwiLCBcIjJweCBzb2xpZCBcIiBeIGMpIF07XG4gICAgICBdXG4gICAgICBbXG4gICAgICAgIEh0bWwuc3BhblxuICAgICAgICAgIFtcbiAgICAgICAgICAgIEh0bWwuc3R5bGVfbGlzdFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgKFwiYmFja2dyb3VuZC1jb2xvclwiLCBjKTtcbiAgICAgICAgICAgICAgICAoXCJmb250LXNpemVcIiwgXCJzbWFsbFwiKTtcbiAgICAgICAgICAgICAgICAoXCJmb250LXdlaWdodFwiLCBcImJvbGRcIik7XG4gICAgICAgICAgICAgICAgKFwiZm9udC1mYW1pbHlcIiwgXCJjb3VyaWVyXCIpO1xuICAgICAgICAgICAgICBdO1xuICAgICAgICAgIF1cbiAgICAgICAgICBbIEh0bWwudGV4dCBjb21tZW50X2RhdGE7IEh0bWwudGV4dCBcIiNcIjsgSHRtbC5pbnQgcmVuZGVyX2NvdW50IF07XG4gICAgICAgIGh0bWw7XG4gICAgICBdXG5cbmxldCBkZWJ1Z19odG1sIDogKGludCAtPiBzdHJpbmcgLT4gSHRtbC5odG1sIC0+IEh0bWwuaHRtbCkgcmVmID0gcmVmIGZha2VfZGVidWdfaHRtbFxubGV0IGVuYWJsZV9kZWJ1ZyBmbGFnID0gZGVidWdfaHRtbCA6PSBpZiBmbGFnIHRoZW4gcmVhbF9kZWJ1Z19odG1sIGVsc2UgZmFrZV9kZWJ1Z19odG1sXG5cbmxldCBnZW5fc2hvd19pZCA9XG4gIGxldCBpID0gcmVmICgtMSkgaW5cbiAgZnVuIGxhYmVsIC0+XG4gICAgaW5jciBpO1xuICAgIFN0cmluZy5jb25jYXQgXCJcIlxuICAgICAgW1xuICAgICAgICBcInNob3c6XCI7XG4gICAgICAgIHN0cmluZ19vZl9pbnQgIWk7XG4gICAgICAgIChtYXRjaCBsYWJlbCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgIHwgU29tZSB4IC0+IFwiL1wiIF4geCk7XG4gICAgICBdXG5cbmxldCBzaG93ID9sYWJlbCAodG9faHRtbCA6ICdhIC0+IEh0bWwuaHRtbCkgc2lnbmFsIDogSHRtbC5odG1sID1cbiBmdW4gY3R4IHBhcmVudCAtPlxuICBsZXQgY291bnQgPSByZWYgMCBpblxuICBsZXQgY29tbWVudF9kYXRhID0gZ2VuX3Nob3dfaWQgbGFiZWwgaW5cbiAgbGV0IGFuY2hvciA9IENvbW1lbnQubWFrZSBjb21tZW50X2RhdGEgaW5cbiAgbGV0IHRoaXNfY3R4ID0gSHRtbC5DdHgubWFrZSAoKSBpblxuICBsZXQgY3Vycl9zdGF0ZSA9XG4gICAgbGV0IGh0bWwgPSB0b19odG1sIChTaWduYWwuZ2V0IHNpZ25hbCkgaW5cbiAgICBsZXQgaHRtbCA9ICFkZWJ1Z19odG1sICFjb3VudCBjb21tZW50X2RhdGEgaHRtbCBpblxuICAgIGluY3IgY291bnQ7XG4gICAgcmVmIChodG1sIHRoaXNfY3R4IHBhcmVudClcbiAgaW5cbiAgbGV0IHVuc3ViID1cbiAgICBsZXQgaW5zZXJ0ID0gTm9kZS5pbnNlcnRfYWZ0ZXIgfnBhcmVudCB+cmVmZXJlbmNlOmFuY2hvciBpblxuICAgIFNpZ25hbC5zdWInXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IGh0bWwgPSB0b19odG1sIHggaW5cbiAgICAgICAgbGV0IGh0bWwgPSAhZGVidWdfaHRtbCAhY291bnQgY29tbWVudF9kYXRhIGh0bWwgaW5cbiAgICAgICAgaW5jciBjb3VudDtcbiAgICAgICAgbGV0IG5leHRfc3RhdGUgPSBodG1sIHRoaXNfY3R4IHBhcmVudCBpblxuICAgICAgICAhY3Vycl9zdGF0ZS51bm1vdW50ICgpO1xuICAgICAgICBuZXh0X3N0YXRlLm1vdW50IGluc2VydDtcbiAgICAgICAgY3Vycl9zdGF0ZSA6PSBuZXh0X3N0YXRlKVxuICAgICAgc2lnbmFsXG4gIGluXG4gIEh0bWwuQ3R4Lm9uX2NsZWFudXAgdGhpc19jdHggdW5zdWI7XG4gIGxldCBtb3VudCBpbnNlcnQgPVxuICAgIGluc2VydCBhbmNob3I7XG4gICAgIWN1cnJfc3RhdGUubW91bnQgaW5zZXJ0O1xuICAgIEh0bWwuQ3R4LmxpbmsgY3R4IHRoaXNfY3R4XG4gIGluXG4gIGxldCB1bm1vdW50ICgpID1cbiAgICBOb2RlLnJlbW92ZSBhbmNob3I7XG4gICAgIWN1cnJfc3RhdGUudW5tb3VudCAoKTtcbiAgICBIdG1sLkN0eC5jbGVhbnVwIHRoaXNfY3R4O1xuICAgIEh0bWwuQ3R4LnVubGluayBjdHggdGhpc19jdHhcbiAgaW5cbiAgeyBtb3VudDsgdW5tb3VudCB9XG5cbmxldCBzaG93X3NvbWUgP2xhYmVsIHRvX2h0bWwgb3B0X3NpZ25hbCA9XG4gIHNob3cgP2xhYmVsXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IE5vbmUgLT4gSHRtbC5udWxsXG4gICAgICB8IFNvbWUgeCAtPiB0b19odG1sIHgpXG4gICAgb3B0X3NpZ25hbFxuXG5sZXQgc2hvd19vayA/bGFiZWwgdG9faHRtbCByZXNfc2lnbmFsID1cbiAgc2hvdyA/bGFiZWxcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgRXJyb3IgXyAtPiBIdG1sLm51bGxcbiAgICAgIHwgT2sgeCAtPiB0b19odG1sIHgpXG4gICAgcmVzX3NpZ25hbFxuXG4oKiBDb25kaXRpb25hbCAqKVxuXG5sZXQgZ2VuX2NvbmRpdGlvbmFsX2lkID1cbiAgbGV0IGkgPSByZWYgKC0xKSBpblxuICBmdW4gKCkgLT5cbiAgICBpbmNyIGk7XG4gICAgXCJjb25kaXRpb25hbDpcIiBeIHN0cmluZ19vZl9pbnQgIWlcblxubGV0IGNvbmRpdGlvbmFsIH5vbjpwcmVkIHNpZ25hbCBodG1sIDogSHRtbC5odG1sID1cbiAgc2hvdyB+bGFiZWw6XCJjb25kaXRpb25hbFwiIChmdW4geCAtPiBpZiBwcmVkIHggdGhlbiBodG1sIGVsc2UgSHRtbC5udWxsKSBzaWduYWxcblxuKCogRWFjaCAqKVxuXG5tb2R1bGUgRWFjaF9jYWNoZSA6IHNpZ1xuICB0eXBlIHRcbiAgdHlwZSBzbG90c1xuICB0eXBlIGtleVxuXG4gIHZhbCBrZXkgOiAnYSAtPiBrZXlcbiAgdmFsIG1ha2UgOiB1bml0IC0+IHRcbiAgdmFsIHNldCA6IHQgLT4ga2V5OmtleSAtPiBzbG90cyAtPiB1bml0XG4gIHZhbCBnZXQgOiB0IC0+IGtleTprZXkgLT4gc2xvdHMgb3B0aW9uXG4gIHZhbCBnZXRfZmlyc3Rfc2xvdCA6IHNsb3RzIC0+IGludCAqIEh0bWwuRWxlbS5zdGF0ZVxuICB2YWwgYWRkX3Nsb3QgOiB0IC0+IGtleTprZXkgLT4gaW50IC0+IEh0bWwuRWxlbS5zdGF0ZSAtPiB1bml0XG4gIHZhbCBkZWxfc2xvdCA6IHQgLT4ga2V5OmtleSAtPiBzbG90cyAtPiBpbnQgLT4gdW5pdFxuICB2YWwgY2xlYXIgOiB0IC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICBtb2R1bGUgTWFwID0gU3Rkd2ViLk1hcFxuICBtb2R1bGUgSXRlcmF0b3IgPSBTdGR3ZWIuSXRlcmF0b3JcbiAgbW9kdWxlIERpY3QgPSBTdGR3ZWIuRGljdFxuXG4gIHR5cGUga2V5ID0gSngudFxuICB0eXBlIHNsb3RzID0gSHRtbC5FbGVtLnN0YXRlIE1hcC50XG4gIHR5cGUgdCA9IHNsb3RzIE1hcC50XG5cbiAgbGV0IGtleSB4ID0gSnguRW5jb2Rlci5hbnkgeFxuICBsZXQgbWFrZSA9IE1hcC5tYWtlXG4gIGxldCBtYWtlX3Nsb3RzID0gTWFwLm1ha2VcblxuICBsZXQgZ2V0X2ZpcnN0X3Nsb3QgKHNsb3RzIDogc2xvdHMpID1cbiAgICBtYXRjaCBNYXAuZmlyc3Rfa2V5IHNsb3RzIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJCVUc6IGdldF9zbG90OiBzbG90cyBtdXN0IG5vdCBiZSBlbXB0eVwiXG4gICAgfCBTb21lIGlkeF9qcyAtPlxuICAgICAgbGV0IGlkeCA9IEp4LkRlY29kZXIuaW50IGlkeF9qcyBpblxuICAgICAgbGV0IGh0bWwgPSBNYXAuZ2V0IHNsb3RzIGlkeF9qcyB8PiBPcHRpb24uZ2V0IGluXG4gICAgICAoaWR4LCBodG1sKVxuXG4gIGxldCBzZXQgY2FjaGUgfmtleSAoc2xvdHMgOiBzbG90cykgPSBNYXAuc2V0IGNhY2hlIGtleSBzbG90c1xuICBsZXQgZ2V0IChjYWNoZSA6IHQpIH5rZXkgPSBNYXAuZ2V0IGNhY2hlIGtleVxuXG4gIGxldCBhZGRfc2xvdCAoY2FjaGUgOiB0KSB+a2V5IGlkeCBodG1sID1cbiAgICBsZXQgc2xvdHMgOiBzbG90cyA9XG4gICAgICBtYXRjaCBnZXQgY2FjaGUgfmtleSB3aXRoXG4gICAgICB8IE5vbmUgLT4gbWFrZV9zbG90cyAoKVxuICAgICAgfCBTb21lIHNsb3RzIC0+IHNsb3RzXG4gICAgaW5cbiAgICBNYXAuc2V0IHNsb3RzIChKeC5FbmNvZGVyLmludCBpZHgpIGh0bWw7XG4gICAgc2V0IGNhY2hlIH5rZXkgc2xvdHNcblxuICBsZXQgZGVsX3Nsb3QgY2FjaGUgfmtleSBzbG90cyBpZHggPVxuICAgIE1hcC5kZWxldGUgc2xvdHMgKEp4LkVuY29kZXIuaW50IGlkeCk7XG4gICAgaWYgTWFwLnNpemUgc2xvdHMgPSAwIHRoZW4gTWFwLmRlbGV0ZSBjYWNoZSBrZXlcblxuICBsZXQgY2xlYXIgY2FjaGUgPVxuICAgIE1hcC52YWx1ZXMgY2FjaGVcbiAgICB8PiBJdGVyYXRvci5pdGVyIChmdW4gKHNsb3RzIDogc2xvdHMpIC0+XG4gICAgICAgICAgIGxldCBzdGF0ZXMgPSBNYXAudmFsdWVzIHNsb3RzIGluXG4gICAgICAgICAgIEl0ZXJhdG9yLml0ZXIgKGZ1biAocyA6IEh0bWwuRWxlbS5zdGF0ZSkgLT4gcy51bm1vdW50ICgpKSBzdGF0ZXM7XG4gICAgICAgICAgIE1hcC5jbGVhciBzbG90cylcbmVuZFxuXG5sZXQgZ2VuX2VhY2hfaWQgPVxuICBsZXQgaSA9IHJlZiAoLTEpIGluXG4gIGZ1biAoKSAtPlxuICAgIGluY3IgaTtcbiAgICBcImVhY2g6XCIgXiBzdHJpbmdfb2ZfaW50ICFpXG5cbmV4dGVybmFsIGRlZmF1bHRfa2V5IDogJ2EgLT4gc3RyaW5nID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgZWFjaCA/a2V5Oih0b19rZXkgPSBkZWZhdWx0X2tleSkgKHRvX2h0bWwgOiAnYSAtPiBIdG1sLmh0bWwpIGl0ZW1zX3NpZ25hbCA6IEh0bWwuaHRtbCA9XG4gZnVuIGN0eCBwYXJlbnQgLT5cbiAgbGV0IGFuY2hvciA9IENvbW1lbnQubWFrZSAoZ2VuX2VhY2hfaWQgKCkpIGluXG4gIGxldCBmcmFnID0gRnJhZ21lbnQubWFrZSAoKSBpblxuICBsZXQgY3Vycl9jYWNoZSA9IHJlZiAoRWFjaF9jYWNoZS5tYWtlICgpKSBpblxuICBsZXQgdGhpc19jdHggPSBIdG1sLkN0eC5tYWtlICgpIGluXG4gIGxldCB1bnN1YiA9XG4gICAgU2lnbmFsLnN1YidcbiAgICAgIChmdW4gbmV3X2l0ZW1zIC0+XG4gICAgICAgIGxldCBuZXh0X2NhY2hlID0gRWFjaF9jYWNoZS5tYWtlICgpIGluXG4gICAgICAgIExpc3QuaXRlcmlcbiAgICAgICAgICAoZnVuIGogaXRlbSAtPlxuICAgICAgICAgICAgbGV0IGtleSA9IEVhY2hfY2FjaGUua2V5ICh0b19rZXkgaXRlbSkgaW5cbiAgICAgICAgICAgIG1hdGNoIEVhY2hfY2FjaGUuZ2V0ICFjdXJyX2NhY2hlIH5rZXkgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGxldCBodG1sIDogSHRtbC5odG1sID0gdG9faHRtbCBpdGVtIGluXG4gICAgICAgICAgICAgIGxldCBzdGF0ZSA9IGh0bWwgdGhpc19jdHggcGFyZW50IGluXG4gICAgICAgICAgICAgIHN0YXRlLm1vdW50IChOb2RlLmFwcGVuZF9jaGlsZCB+cGFyZW50OmZyYWcpO1xuICAgICAgICAgICAgICBFYWNoX2NhY2hlLmFkZF9zbG90IG5leHRfY2FjaGUgfmtleSBqIHN0YXRlXG4gICAgICAgICAgICB8IFNvbWUgb2xkX3Nsb3RzIC0+XG4gICAgICAgICAgICAgIGxldCBpLCBpX3N0YXRlID0gRWFjaF9jYWNoZS5nZXRfZmlyc3Rfc2xvdCBvbGRfc2xvdHMgaW5cbiAgICAgICAgICAgICAgaV9zdGF0ZS5tb3VudCAoTm9kZS5hcHBlbmRfY2hpbGQgfnBhcmVudDpmcmFnKTtcbiAgICAgICAgICAgICAgRWFjaF9jYWNoZS5kZWxfc2xvdCAhY3Vycl9jYWNoZSB+a2V5IG9sZF9zbG90cyBpO1xuICAgICAgICAgICAgICBFYWNoX2NhY2hlLmFkZF9zbG90IG5leHRfY2FjaGUgfmtleSBqIGlfc3RhdGUpXG4gICAgICAgICAgbmV3X2l0ZW1zO1xuICAgICAgICBFYWNoX2NhY2hlLmNsZWFyICFjdXJyX2NhY2hlO1xuICAgICAgICBOb2RlLmluc2VydF9hZnRlciB+cGFyZW50IH5yZWZlcmVuY2U6YW5jaG9yIGZyYWc7XG4gICAgICAgIGN1cnJfY2FjaGUgOj0gbmV4dF9jYWNoZSlcbiAgICAgIGl0ZW1zX3NpZ25hbFxuICBpblxuICBIdG1sLkN0eC5vbl9jbGVhbnVwIHRoaXNfY3R4IHVuc3ViO1xuICBsZXQgbW91bnQgaW5zZXJ0ID1cbiAgICBpbnNlcnQgYW5jaG9yO1xuICAgIGxldCBpdGVtcyA9IFNpZ25hbC5nZXQgaXRlbXNfc2lnbmFsIGluXG4gICAgTGlzdC5pdGVyaVxuICAgICAgKGZ1biBpIGl0ZW0gLT5cbiAgICAgICAgbGV0IGh0bWwgOiBIdG1sLmh0bWwgPSB0b19odG1sIGl0ZW0gaW5cbiAgICAgICAgbGV0IHN0YXRlID0gaHRtbCB0aGlzX2N0eCBwYXJlbnQgaW5cbiAgICAgICAgc3RhdGUubW91bnQgKE5vZGUuYXBwZW5kX2NoaWxkIH5wYXJlbnQ6ZnJhZyk7XG4gICAgICAgIGxldCBrZXkgPSBFYWNoX2NhY2hlLmtleSBpdGVtIGluXG4gICAgICAgIEVhY2hfY2FjaGUuYWRkX3Nsb3QgIWN1cnJfY2FjaGUgfmtleSBpIHN0YXRlKVxuICAgICAgaXRlbXM7XG4gICAgTm9kZS5pbnNlcnRfYWZ0ZXIgfnBhcmVudCB+cmVmZXJlbmNlOmFuY2hvciBmcmFnO1xuICAgIEh0bWwuQ3R4LmxpbmsgY3R4IHRoaXNfY3R4XG4gIGluXG4gIGxldCB1bm1vdW50ICgpID1cbiAgICBFYWNoX2NhY2hlLmNsZWFyICFjdXJyX2NhY2hlO1xuICAgIEh0bWwuQ3R4LmNsZWFudXAgdGhpc19jdHg7XG4gICAgSHRtbC5DdHgudW5saW5rIGN0eCB0aGlzX2N0eFxuICBpblxuICB7IG1vdW50OyB1bm1vdW50IH1cblxuKCogQmluZCAqKVxuXG5sZXQgYmluZCB0b19hdHRyIHNpZ25hbCBjdHggbm9kZSA9XG4gIGxldCBjdXJyX3N0YXRlID0gcmVmIHsgSHRtbC5BdHRyLnNldCA9IGlnbm9yZTsgdW5zZXQgPSBpZ25vcmUgfSBpblxuICBsZXQgdW5zdWIgPVxuICAgIFNpZ25hbC5zdWInXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgIWN1cnJfc3RhdGUudW5zZXQgKCk7XG4gICAgICAgIGxldCBuZXh0X2F0dHIgOiBIdG1sLmF0dHIgPSB0b19hdHRyIHggaW5cbiAgICAgICAgbGV0IG5leHRfc3RhdGUgPSBuZXh0X2F0dHIgY3R4IG5vZGUgaW5cbiAgICAgICAgbmV4dF9zdGF0ZS5zZXQgKCk7XG4gICAgICAgIGN1cnJfc3RhdGUgOj0gbmV4dF9zdGF0ZSlcbiAgICAgIHNpZ25hbFxuICBpblxuICBIdG1sLkN0eC5vbl9jbGVhbnVwIGN0eCB1bnN1YjtcbiAgbGV0IHNldCAoKSA9XG4gICAgbGV0IG5leHRfYXR0ciA6IEh0bWwuYXR0ciA9IHRvX2F0dHIgKFNpZ25hbC5nZXQgc2lnbmFsKSBpblxuICAgIGxldCBuZXh0X3N0YXRlID0gbmV4dF9hdHRyIGN0eCBub2RlIGluXG4gICAgbmV4dF9zdGF0ZS5zZXQgKCk7XG4gICAgY3Vycl9zdGF0ZSA6PSBuZXh0X3N0YXRlXG4gIGluXG4gIGxldCB1bnNldCAoKSA9ICFjdXJyX3N0YXRlLnVuc2V0ICgpIGluXG4gIHsgSHRtbC5BdHRyLnNldDsgdW5zZXQgfVxuXG5sZXQgYmluZF9zb21lIHRvX2F0dHIgb3B0X3NpZ25hbCA9XG4gIGJpbmRcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgTm9uZSAtPiBIdG1sLkF0dHIubm9wXG4gICAgICB8IFNvbWUgeCAtPiB0b19hdHRyIHgpXG4gICAgb3B0X3NpZ25hbFxuXG5sZXQgYmluZF9vayB0b19hdHRyIHJlc19zaWduYWwgPVxuICBiaW5kXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEVycm9yIF8gLT4gSHRtbC5BdHRyLm5vcFxuICAgICAgfCBPayB4IC0+IHRvX2F0dHIgeClcbiAgICByZXNfc2lnbmFsXG5cbigqIFRvZ2dsZSAqKVxuXG5sZXQgdG9nZ2xlIH5vbjpwcmVkIHNpZ25hbCBhdHRyIDogSHRtbC5hdHRyID1cbiBmdW4gY3R4IG5vZGUgLT5cbiAgbGV0IGFjdGl2ZV9zaWcgPSBTaWduYWwudW5pcSB+ZXF1YWw6KCA9PSApIChTaWduYWwubWFwIHByZWQgc2lnbmFsKSBpblxuICBsZXQgc3RhdGUgOiBIdG1sLkF0dHIuc3RhdGUgPSBhdHRyIGN0eCBub2RlIGluXG4gIGxldCBpc19hY3RpdmUgPSByZWYgZmFsc2UgaW5cbiAgbGV0IHVuc3ViID1cbiAgICBTaWduYWwudXNlJ1xuICAgICAgKGZ1biBhY3RpdmUgLT5cbiAgICAgICAgaWYgYWN0aXZlIHRoZW4gc3RhdGUuc2V0ICgpIGVsc2Ugc3RhdGUudW5zZXQgKCk7XG4gICAgICAgIGlzX2FjdGl2ZSA6PSBhY3RpdmUpXG4gICAgICBhY3RpdmVfc2lnXG4gIGluXG4gIEh0bWwuQ3R4Lm9uX2NsZWFudXAgY3R4IHVuc3ViO1xuICBsZXQgc2V0ICgpID1cbiAgICBpc19hY3RpdmUgOj0gU2lnbmFsLmdldCBhY3RpdmVfc2lnO1xuICAgIGlmICFpc19hY3RpdmUgdGhlbiBzdGF0ZS5zZXQgKCkgZWxzZSBzdGF0ZS51bnNldCAoKVxuICBpblxuICBsZXQgdW5zZXQgKCkgPSBpZiAhaXNfYWN0aXZlIHRoZW4gc3RhdGUudW5zZXQgKCkgaW5cbiAgeyBIdG1sLkF0dHIuc2V0OyB1bnNldCB9XG5cbigqIFZpc2libGUgKilcblxubGV0IHZpc2libGUgfm9uOnByZWQgc2lnbmFsIDogSHRtbC5BdHRyLnQgPVxuICB0b2dnbGUgfm9uOihmdW4geCAtPiBub3QgKHByZWQgeCkpIHNpZ25hbCAoSHRtbC5zdHlsZV9saXN0IFsgKFwiZGlzcGxheVwiLCBcIm5vbmVcIikgXSlcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImNhbWxfY2FsbDMiLCJhMiIsImdsb2JhbF9kYXRhIiwiSHRtbCIsIlNpZ25hbCIsIlN0ZHdlYiIsIlN0ZGxpYl9MaXN0IiwiU3RkbGliIiwiSngiLCJTdGRsaWJfT3B0aW9uIiwiU3RkbGliX1N0cmluZyIsInJldl9tYXBpIiwibDAiLCJpIiwiYWNjIiwibCIsIngiLCJvcHRpb25fZ2V0Iiwib3B0aW9uIiwib3JfZmFpbCIsIm1zZyIsImluc2VydF9hZnRlcl9hbmNob3IiLCJwYXJlbnQiLCJhbmNob3IiLCJub2RlIiwibWF0Y2giLCJhbmNob3Jfc2libGluZyIsImZha2VfZGVidWdfaHRtbCIsInJlbmRlcl9jb3VudCIsImNvbW1lbnRfZGF0YSIsImh0bWwiLCJjb2xvcnMiLCJjc3RfZGlzcGxheSIsInJlYWxfZGVidWdfaHRtbCIsImMiLCJkZWJ1Z19odG1sIiwiZW5hYmxlX2RlYnVnIiwiZmxhZyIsImdlbl9zaG93X2lkIiwibGFiZWwiLCJjc3QiLCJzaG93IiwidG9faHRtbCIsInNpZ25hbCIsImN0eCIsInRoaXNfY3R4IiwiY291bnQiLCJjdXJyX3N0YXRlIiwiaW5zZXJ0IiwidW5zdWIiLCJuZXh0X3N0YXRlIiwibW91bnQiLCJ1bm1vdW50IiwicGFyYW0iLCJzaG93X3NvbWUiLCJvcHRfc2lnbmFsIiwic2hvd19vayIsInJlc19zaWduYWwiLCJnZW5fY29uZGl0aW9uYWxfaWQiLCJjb25kaXRpb25hbCIsInByZWQiLCJrZXkiLCJtYWtlIiwibWFrZV9zbG90cyIsImdldF9maXJzdF9zbG90Iiwic2xvdHMiLCJpZHhfanMiLCJpZHgiLCJzZXQiLCJjYWNoZSIsImdldCIsImFkZF9zbG90IiwiZGVsX3Nsb3QiLCJjbGVhciIsInN0YXRlcyIsInMiLCJkdW1teSIsImdlbl9lYWNoX2lkIiwiZWFjaCIsIm9wdCIsIml0ZW1zX3NpZ25hbCIsInRvX2tleSIsImZyYWciLCJjdXJyX2NhY2hlIiwibmV3X2l0ZW1zIiwibmV4dF9jYWNoZSIsImoiLCJpdGVtIiwib2xkX3Nsb3RzIiwiaV9zdGF0ZSIsInN0YXRlIiwiaXRlbXMiLCJiaW5kIiwidG9fYXR0ciIsIm5leHRfYXR0ciIsInVuc2V0IiwiYmluZF9zb21lIiwiYmluZF9vayIsInRvZ2dsZSIsImF0dHIiLCJhY3RpdmVfc2lnIiwiaXNfYWN0aXZlIiwiYWN0aXZlIiwidmlzaWJsZSJdLCJtYXBwaW5ncyI6Ik9BQUFBLFVBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFKLEdBQUFDLElBQUFFLElBQUFFO0FB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YXAiOnsidmVyc2lvbiI6MywiZmlsZSI6ImhlbGl4LmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9oZWxpeC9UaW1lLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwibW9kdWxlIFdpbmRvdyA9IFN0ZHdlYi5Eb20uV2luZG93XG5cbmxldCB0aWNrIH5tcyA9XG4gIGxldCBzID0gU2lnbmFsLm1ha2UgfmVxdWFsOihmdW4gXyBfIC0+IGZhbHNlKSAoKSBpblxuICBsZXQgXyA9IFdpbmRvdy5zZXRfaW50ZXJ2YWwgKGZ1biAoKSAtPiBTaWduYWwuZW1pdCAoKSBzKSBtcyBpblxuICBzXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2FsbDIiLCJmIiwiYTAiLCJhMSIsImdsb2JhbF9kYXRhIiwiU2lnbmFsIiwiU3Rkd2ViIiwidGljayIsIm1zIiwicyIsInBhcmFtIl0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLFlBQUFDLEtBQUFDO0FBQUFBLFFBQUFDLElDR1UscUNBQUFDLE9BQStCLFNBQUs7QUFBQSxJQUNwQztBQUFBO0FBQUEsZUFBQUEsT0FBK0Isb0NBQWdCO0FBQUE7QUFBQSxJQUFJO0FBQUEsR0FDMUQ7QUFBQSxHRExIIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDYzOTgsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVsaXguY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL2hlbGl4L1JvdXRlci5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIm9wZW4gc3RydWN0XG4gIG1vZHVsZSBTdHJpbmdfbWFwID0gTWFwLk1ha2UgKFN0cmluZylcblxuICB0eXBlICdhIHNpZ25hbCA9ICdhIFNpZ25hbC50XG5cbiAgbGV0ICggb3IgKSBvcHQgZGVmYXVsdCA9XG4gICAgbWF0Y2ggb3B0IHdpdGhcbiAgICB8IFNvbWUgeCAtPiB4XG4gICAgfCBOb25lIC0+IGRlZmF1bHRcblxuICBsZXQgb3JfZmFpbCBtc2cgb3B0ID1cbiAgICBtYXRjaCBvcHQgd2l0aFxuICAgIHwgU29tZSB4IC0+IHhcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGggbXNnXG5cbiAgbGV0IHJlYyBsaXN0X3N0YXJ0c193aXRoIH5lcXVhbCB+cHJlZml4OnAgbCA9XG4gICAgbWF0Y2ggcCB3aXRoXG4gICAgfCBbXSAtPiB0cnVlXG4gICAgfCBwMCA6OiBwJyAtPiAoXG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgbDAgOjogbCcgd2hlbiBlcXVhbCBwMCBsMCAtPiBsaXN0X3N0YXJ0c193aXRoIH5lcXVhbCB+cHJlZml4OnAnIGwnXG4gICAgICB8IF8gLT4gZmFsc2UpXG5lbmRcblxudHlwZSAnYSB2YXIgPSB7XG4gIGxhYmVsIDogc3RyaW5nO1xuICB0b19zdHJpbmcgOiAnYSAtPiBzdHJpbmc7XG4gIG9mX3N0cmluZyA6IHN0cmluZyAtPiAnYSBvcHRpb247XG4gIGVxdWFsIDogJ2EgLT4gJ2EgLT4gYm9vbDtcbn1cblxubGV0IHZhciB+b2Zfc3RyaW5nIH50b19zdHJpbmcgPyhlcXVhbCA9IFN0ZGxpYi4oID0gKSkgbGFiZWwgPSB7IGxhYmVsOyB0b19zdHJpbmc7IG9mX3N0cmluZzsgZXF1YWwgfVxuXG5sZXQgaW50ID1cbiAgeyBsYWJlbCA9IFwiaW50XCI7IHRvX3N0cmluZyA9IHN0cmluZ19vZl9pbnQ7IG9mX3N0cmluZyA9IGludF9vZl9zdHJpbmdfb3B0OyBlcXVhbCA9IEludC5lcXVhbCB9XG5cbmxldCBzdHJpbmcgPSB7IGxhYmVsID0gXCJzdHJpbmdcIjsgdG9fc3RyaW5nID0gRnVuLmlkOyBvZl9zdHJpbmcgPSBPcHRpb24uc29tZTsgZXF1YWwgPSBTdHJpbmcuZXF1YWwgfVxuXG5sZXQgcXVlcnkgPVxuICB7XG4gICAgbGFiZWwgPSBcInF1ZXJ5XCI7XG4gICAgdG9fc3RyaW5nID0gU3Rkd2ViLlVybF9zZWFyY2hfcGFyYW1zLnRvX3N0cmluZztcbiAgICBvZl9zdHJpbmcgPSAoZnVuIHN0ciAtPiBTb21lIChTdGR3ZWIuVXJsX3NlYXJjaF9wYXJhbXMub2Zfc3RyaW5nIHN0cikpO1xuICAgIGVxdWFsID1cbiAgICAgIChmdW4geDEgeDIgLT5cbiAgICAgICAgU3RyaW5nLmVxdWFsIChTdGR3ZWIuVXJsX3NlYXJjaF9wYXJhbXMudG9fc3RyaW5nIHgxKSAoU3Rkd2ViLlVybF9zZWFyY2hfcGFyYW1zLnRvX3N0cmluZyB4MikpO1xuICB9XG5cbnR5cGUgdCA9IHsgcHJlZml4IDogc3RyaW5nIGxpc3Qgc2lnbmFsOyByZXN0IDogc3RyaW5nIGxpc3Qgc2lnbmFsIH1cblxudHlwZSAoJ3ZpZXcsICdsaW5rLCAnYSkgcGF0aCA9XG4gIHwgQ29uc3QgOiBzdHJpbmcgKiAoJ3ZpZXcsICdsaW5rLCAnYSkgcGF0aCAtPiAoJ3ZpZXcsICdsaW5rLCAnYSkgcGF0aFxuICB8IFZhciA6XG4gICAgICAndiB2YXIgKiAndiBzaWduYWwgb3B0aW9uICogKCd2aWV3LCAnbGluaywgJ2EpIHBhdGhcbiAgICAgIC0+ICgndiBzaWduYWwgLT4gJ3ZpZXcsICd2IC0+ICdsaW5rLCAnYSkgcGF0aFxuICB8IFJlc3QgOiAodCAtPiAnYSwgKCd2aWV3LCAnbGluaywgJ2EpIHBhdGggLT4gJ2xpbmssICdhKSBwYXRoXG4gIHwgRW5kIDogKHVuaXQgLT4gJ2EsICdhLCAnYSkgcGF0aFxuXG50eXBlIHJvdXRlID1cbiAgfCBSb3V0ZSA6ICgndmlldywgJ2xpbmssIEh0bWwuaHRtbCkgcGF0aCAqICd2aWV3IC0+IHJvdXRlXG4gIHwgQWxpYXMgOiAodW5pdCAtPiAnYSwgJ2EsICdhKSBwYXRoICogc3RyaW5nIGxpc3QgLT4gcm91dGVcblxudHlwZSBsb29rdXAgPSB7IHJvdXRlIDogcm91dGU7IG1hdGNoZWQgOiBzdHJpbmcgbGlzdDsgYXJncyA6IHN0cmluZyBsaXN0IH1cbigqIFJvdXRpbmcgdGFibGUgbG9va3VwIHJlc3VsdC4gKilcblxudHlwZSBjYXB0dXJlID0gTWF0Y2ggb2Ygcm91dGUgfCBOb19tYXRjaCB8IFBhcnRpYWwgb2Ygcm91dGVcbigqIFdoYXQgZG9lcyBhIHBhdGggaW4gYSByb3V0aW5nIHRhYmxlIGNhcHR1cmU/LiAqKVxuXG50eXBlIHRhYmxlID0geyBjYXB0dXJlIDogY2FwdHVyZTsgY2hpbGRyZW4gOiB0YWJsZSBTdHJpbmdfbWFwLnQgfVxuXG5sZXQgcm91dGUgcGF0aCByZW5kZXIgPSBSb3V0ZSAocGF0aCwgcmVuZGVyKVxuXG5sZXQgc3RyaW5nX29mX3BhdGggOiB0eXBlIGEgayBvdXQuIChhLCBrLCBvdXQpIHBhdGggLT4gc3RyaW5nID1cbiBmdW4gcGF0aDAgLT5cbiAgbGV0IHJlYyBsb29wIDogdHlwZSBhIGsgb3V0LiAoYSwgaywgb3V0KSBwYXRoIC0+IHN0cmluZyA9XG4gICBmdW4gcGF0aCAtPlxuICAgIG1hdGNoIHBhdGggd2l0aFxuICAgIHwgRW5kIC0+IFwiXCJcbiAgICB8IFJlc3QgLT4gXCIqKlwiXG4gICAgfCBDb25zdCAoY29uc3QsIEVuZCkgLT4gY29uc3RcbiAgICB8IENvbnN0IChjb25zdCwgdGFpbCkgLT4gU3RyaW5nLmNvbmNhdCBcIi9cIiBbIGNvbnN0OyBsb29wIHRhaWwgXVxuICAgIHwgVmFyICh2YXIsIF8sIEVuZCkgLT4gXCI6XCIgXiB2YXIubGFiZWxcbiAgICB8IFZhciAodmFyLCBfLCB0YWlsKSAtPiBTdHJpbmcuY29uY2F0IFwiL1wiIFsgdmFyLmxhYmVsOyBsb29wIHRhaWwgXVxuICBpblxuICBtYXRjaCBwYXRoMCB3aXRoXG4gIHwgRW5kIC0+IFwiL1wiXG4gIHwgXyAtPiBTdHJpbmcuY29uY2F0IFwiXCIgWyBcIi9cIjsgbG9vcCBwYXRoMCBdXG5cbmxldCBsaXN0X29mX3BhdGggOiB0eXBlIGEgayBvdXQuIChhLCBrLCBvdXQpIHBhdGggLT4gc3RyaW5nIGxpc3QgPVxuIGZ1biBwYXRoMCAtPlxuICBsZXQgcmVjIGxvb3AgOiB0eXBlIGEgayBvdXQuIChhLCBrLCBvdXQpIHBhdGggLT4gc3RyaW5nIGxpc3QgPVxuICAgZnVuIHBhdGggLT5cbiAgICBtYXRjaCBwYXRoIHdpdGhcbiAgICB8IEVuZCAtPiBbXVxuICAgIHwgUmVzdCAtPiBbIFwiKipcIiBdXG4gICAgfCBDb25zdCAoY29uc3QsIEVuZCkgLT4gWyBjb25zdCBdXG4gICAgfCBDb25zdCAoY29uc3QsIHRhaWwpIC0+IFsgY29uc3QgXSBAIGxvb3AgdGFpbFxuICAgIHwgVmFyICh2YXIsIF8sIEVuZCkgLT4gWyBcIjpcIiBeIHZhci5sYWJlbCBdXG4gICAgfCBWYXIgKHZhciwgXywgdGFpbCkgLT4gWyB2YXIubGFiZWwgXSBAIGxvb3AgdGFpbFxuICBpblxuICBtYXRjaCBwYXRoMCB3aXRoXG4gIHwgRW5kIC0+IFtdXG4gIHwgXyAtPiBsb29wIHBhdGgwXG5cbm1vZHVsZSBUYWJsZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB0YWJsZVxuXG4gIGxldCBlbXB0eSA9IHsgY2FwdHVyZSA9IE5vX21hdGNoOyBjaGlsZHJlbiA9IFN0cmluZ19tYXAuZW1wdHkgfVxuXG4gIGxldCByZWdpc3RlciByb3V0ZTAgcm9vdCA9XG4gICAgbGV0IHJlYyBsb29wIDogdHlwZSBhIGsgb3V0LiAoYSwgaywgb3V0KSBwYXRoIC0+IHQgLT4gdCA9XG4gICAgIGZ1biBwYXRoIG5vZGUgLT5cbiAgICAgIG1hdGNoIHBhdGggd2l0aFxuICAgICAgfCBFbmQgLT4geyBub2RlIHdpdGggY2FwdHVyZSA9IE1hdGNoIHJvdXRlMCB9XG4gICAgICB8IFJlc3QgLT4geyBub2RlIHdpdGggY2FwdHVyZSA9IFBhcnRpYWwgcm91dGUwIH1cbiAgICAgIHwgQ29uc3QgKGNvbnN0LCB0YWlsKSAtPlxuICAgICAgICBsZXQgbWF0Y2hlZF9ub2RlID1cbiAgICAgICAgICBtYXRjaCBTdHJpbmdfbWFwLmZpbmRfb3B0IGNvbnN0IG5vZGUuY2hpbGRyZW4gd2l0aFxuICAgICAgICAgIHwgU29tZSBleGlzdGluZ19ub2RlIC0+IGV4aXN0aW5nX25vZGVcbiAgICAgICAgICB8IE5vbmUgLT4geyBjYXB0dXJlID0gTm9fbWF0Y2g7IGNoaWxkcmVuID0gU3RyaW5nX21hcC5lbXB0eSB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCB0YWlsID0gbG9vcCB0YWlsIG1hdGNoZWRfbm9kZSBpblxuICAgICAgICB7IG5vZGUgd2l0aCBjaGlsZHJlbiA9IFN0cmluZ19tYXAuYWRkIGNvbnN0IHRhaWwgbm9kZS5jaGlsZHJlbiB9XG4gICAgICB8IFZhciAoXywgXywgdGFpbCkgLT5cbiAgICAgICAgbGV0IG1hdGNoZWRfbm9kZSA9XG4gICAgICAgICAgbWF0Y2ggU3RyaW5nX21hcC5maW5kX29wdCBcIjpcIiBub2RlLmNoaWxkcmVuIHdpdGhcbiAgICAgICAgICB8IFNvbWUgZXhpc3Rpbmdfbm9kZSAtPiBleGlzdGluZ19ub2RlXG4gICAgICAgICAgfCBOb25lIC0+IHsgY2FwdHVyZSA9IE5vX21hdGNoOyBjaGlsZHJlbiA9IFN0cmluZ19tYXAuZW1wdHkgfVxuICAgICAgICBpblxuICAgICAgICBsZXQgdGFpbCA9IGxvb3AgdGFpbCBtYXRjaGVkX25vZGUgaW5cbiAgICAgICAgeyBub2RlIHdpdGggY2hpbGRyZW4gPSBTdHJpbmdfbWFwLmFkZCBcIjpcIiB0YWlsIG5vZGUuY2hpbGRyZW4gfVxuICAgIGluXG4gICAgbWF0Y2ggcm91dGUwIHdpdGhcbiAgICB8IFJvdXRlIChwYXRoMCwgXykgLT4gbG9vcCBwYXRoMCByb290XG4gICAgfCBBbGlhcyAocGF0aDAsIF8pIC0+IGxvb3AgcGF0aDAgcm9vdFxuXG4gIGV4Y2VwdGlvbiBJbmNvbXBsZXRlX21hdGNoIG9mIHN0cmluZyBsaXN0XG4gIGV4Y2VwdGlvbiBOb19tYXRjaCBvZiBzdHJpbmcgbGlzdFxuXG4gIGxldCBsb29rdXAgKHRhYmxlMCA6IHQpIChpbnB1dDAgOiBzdHJpbmcgbGlzdCkgOiAobG9va3VwLCBleG4pIHJlc3VsdCA9XG4gICAgbGV0IHJlYyBsb29wID9idCBub2RlIGlucHV0IG1hdGNoZWQgYXJncyA9XG4gICAgICBtYXRjaCBpbnB1dCB3aXRoXG4gICAgICB8IFtdIC0+IChcbiAgICAgICAgbWF0Y2ggbm9kZS5jYXB0dXJlIHdpdGhcbiAgICAgICAgfCBOb19tYXRjaCAtPiAoXG4gICAgICAgICAgKCogSWYgd2UgaGF2ZSBhIGJhY2t0cmFja2luZyBjb250aW51YXRpb24sIHRyeSB0aGF0IGJlZm9yZSBmYWlsaW5nLiAqKVxuICAgICAgICAgIG1hdGNoIGJ0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gRXJyb3IgKEluY29tcGxldGVfbWF0Y2ggaW5wdXQwKVxuICAgICAgICAgIHwgU29tZSBidCAtPiBidCAoKSlcbiAgICAgICAgfCBNYXRjaCByb3V0ZSAtPiBPayB7IHJvdXRlOyBtYXRjaGVkID0gTGlzdC5yZXYgbWF0Y2hlZDsgYXJncyA9IExpc3QucmV2IGFyZ3MgfVxuICAgICAgICB8IFBhcnRpYWwgcm91dGUgLT4gT2sgeyByb3V0ZTsgbWF0Y2hlZCA9IExpc3QucmV2IG1hdGNoZWQ7IGFyZ3MgPSBMaXN0LnJldiBhcmdzIH0pXG4gICAgICB8IGlucHV0X2hkIDo6IGlucHV0JyAtPiAoXG4gICAgICAgIGxldCBidCAoKSA9XG4gICAgICAgICAgbWF0Y2ggbm9kZS5jYXB0dXJlIHdpdGhcbiAgICAgICAgICB8IFBhcnRpYWwgcm91dGUgLT4gT2sgeyByb3V0ZTsgbWF0Y2hlZCA9IExpc3QucmV2IG1hdGNoZWQ7IGFyZ3MgPSBMaXN0LnJldiBhcmdzIEAgaW5wdXQgfVxuICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICBtYXRjaCBTdHJpbmdfbWFwLmZpbmRfb3B0IFwiOlwiIG5vZGUuY2hpbGRyZW4gd2l0aFxuICAgICAgICAgICAgfCBTb21lIG5vZGUnIC0+IGxvb3Agbm9kZScgaW5wdXQnIChpbnB1dF9oZCA6OiBtYXRjaGVkKSAoaW5wdXRfaGQgOjogYXJncylcbiAgICAgICAgICAgIHwgTm9uZSAtPiBFcnJvciAoTm9fbWF0Y2ggaW5wdXQwKSlcbiAgICAgICAgaW5cbiAgICAgICAgKCogRm9sbG93IENvbnN0LiBJZiBub3QgZGVmaW5lZCwgY2hlY2sgZm9yIFJlc3QgYW5kIFZhci5cbiAgICAgICAgICAgSW4gYWRkaXRpb24gdG8gY2hlY2tpbmcgdGhpcyBub3csIHdlIGNyZWF0ZSBhIFwiYmFja3RyYWNraW5nXCJcbiAgICAgICAgICAgY29udGludWF0aW9uIHRoYXQgbWlnaHQgYXR0ZW1wdCB0aGUgUmVzdC9WYXIgbWF0Y2ggaWYgQ29uc3QgZmFpbHMuICopXG4gICAgICAgIG1hdGNoIFN0cmluZ19tYXAuZmluZF9vcHQgaW5wdXRfaGQgbm9kZS5jaGlsZHJlbiB3aXRoXG4gICAgICAgIHwgU29tZSBub2RlJyAtPiBsb29wIH5idCBub2RlJyBpbnB1dCcgKGlucHV0X2hkIDo6IG1hdGNoZWQpIGFyZ3NcbiAgICAgICAgfCBOb25lIC0+IGJ0ICgpKVxuICAgIGluXG4gICAgbG9vcCB0YWJsZTAgaW5wdXQwIFtdIFtdXG5cbiAgbGV0IG9mX3JvdXRlX2xpc3Qgcm91dGVzID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBhY2MgeCAtPiByZWdpc3RlciB4IGFjYykgZW1wdHkgcm91dGVzXG5lbmRcblxubGV0IHRhYmxlID0gVGFibGUub2Zfcm91dGVfbGlzdFxubGV0IG1ha2UgPyhwcmVmaXggPSBTaWduYWwubWFrZSBbXSkgcmVzdCA9IHsgcHJlZml4OyByZXN0IH1cbmxldCBwYXRoIChyb3V0ZXIgOiB0KSA9IHJvdXRlci5yZXN0XG5sZXQgcHJlZml4IChyb3V0ZXIgOiB0KSA9IHJvdXRlci5wcmVmaXhcblxubGV0IHJlYyBldmFsX3BhdGggOiB0eXBlIHZpZXcgbGluayBhLiAoc3RyaW5nIGxpc3QgLT4gYSkgLT4gKHZpZXcsIGxpbmssIGEpIHBhdGggLT4gbGluayA9XG4gZnVuIGsgcGF0aCAtPlxuICBtYXRjaCBwYXRoIHdpdGhcbiAgfCBFbmQgLT4gayBbXVxuICB8IFJlc3QgLT4gZnVuIHBhdGgyIC0+IGV2YWxfcGF0aCBrIHBhdGgyXG4gIHwgQ29uc3QgKGNvbnN0LCBFbmQpIC0+IGsgWyBjb25zdCBdXG4gIHwgQ29uc3QgKGNvbnN0LCB0YWlsKSAtPiBldmFsX3BhdGggKGZ1biByZXN0IC0+IGsgKGNvbnN0IDo6IHJlc3QpKSB0YWlsXG4gIHwgVmFyICh2YXIsIF8sIHRhaWwpIC0+IGZ1biB4IC0+IGV2YWxfcGF0aCAoZnVuIHJlc3QgLT4gayAodmFyLnRvX3N0cmluZyB4IDo6IHJlc3QpKSB0YWlsXG5cbmxldCBsb2NhdGlvbl9zZXRfcGF0aCBwYXRoID1cbiAgbGV0IGhhc2ggPSBcIiMvXCIgXiBTdHJpbmcuY29uY2F0IFwiL1wiIHBhdGggaW5cbiAgU3Rkd2ViLkRvbS5Mb2NhdGlvbi5zZXRfaGFzaCBTdGR3ZWIuRG9tLldpbmRvdy5sb2NhdGlvbiBoYXNoXG5cbmxldCBhbGlhcyBzcmMgZHN0ID0gZXZhbF9wYXRoIChmdW4gc3RyX3BhdGggLT4gQWxpYXMgKHNyYywgc3RyX3BhdGgpKSBkc3RcblxuKCogZ29fdXAgMiBhL2IvYy9kIC0+IC9hL2IgKilcbigqIGdvX3VwIDAgYS9iL2MvZCAtPiAvYS9iL2MvZCAqKVxuKCogZ29fdXAgMiAvIC0+IC8gKilcbigqIGdvX3VwIDEwIGEvYi9jL2QgLT4gLyAqKVxubGV0IGdvX3VwIG4wIHByZWZpeCA9XG4gIGlmIG4wID0gMCB0aGVuIHByZWZpeFxuICBlbHNlIGlmIG4wIDwgMCB0aGVuIGludmFsaWRfYXJnIFwidXAgbXVzdCBiZSBwb3NpdGl2ZVwiXG4gIGVsc2VcbiAgICBsZXQgcHJlZml4X3JldiA9IExpc3QucmV2IHByZWZpeCBpblxuICAgIGxldCByZWMgbG9vcCBuIGlucHV0ID1cbiAgICAgIGlmIG4gPSAwIHRoZW4gTGlzdC5yZXYgaW5wdXRcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggaW5wdXQgd2l0aFxuICAgICAgICB8IFtdIC0+IFtdXG4gICAgICAgIHwgXyA6OiB0bCAtPiBsb29wIChuIC0gMSkgdGxcbiAgICBpblxuICAgIGxvb3AgbjAgcHJlZml4X3JldlxuXG5sZXQgZ28gPyhhYnNvbHV0ZSA9IGZhbHNlKSA/KHVwID0gMCkgKHJvdXRlciA6IHQpIHBhdGggPVxuICBldmFsX3BhdGhcbiAgICAoZnVuIHN0cl9wYXRoIC0+XG4gICAgICBsZXQgcHJlZml4ID0gaWYgYWJzb2x1dGUgdGhlbiBbXSBlbHNlIGdvX3VwIHVwIChTaWduYWwuZ2V0IHJvdXRlci5wcmVmaXgpIGluXG4gICAgICBsb2NhdGlvbl9zZXRfcGF0aCAocHJlZml4IEAgc3RyX3BhdGgpKVxuICAgIHBhdGhcblxubGV0IHBpY2tfcXBhdGggc2VnbWVudHMgPVxuICBMaXN0Lm1hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBFaXRoZXIuTGVmdCBjb25zdCAtPiBjb25zdFxuICAgICAgfCBSaWdodCB2YXJfc2lnIC0+IFNpZ25hbC5nZXQgdmFyX3NpZylcbiAgICBzZWdtZW50c1xuXG5sZXQgbGluayA/KGFic29sdXRlID0gZmFsc2UpID8odXAgPSAwKSA/KGFjdGl2ZSA9IEh0bWwuQXR0ci5ub3ApID8oaW5hY3RpdmUgPSBIdG1sLkF0dHIubm9wKVxuICAgID8oZXhhY3QgPSBmYWxzZSkgP2FsaWFzIChyb3V0ZXIgOiB0KSBwYXRoMCA9XG4gIGxldCBhbGlhcyA9IE9wdGlvbi5tYXAgbGlzdF9vZl9wYXRoIGFsaWFzIGluXG4gIGxldCBjaGVja19pc19hY3RpdmUgbGluayBjdXJyID1cbiAgICBsZXQgZXEgPVxuICAgICAgaWYgZXhhY3QgdGhlbiBMaXN0LmVxdWFsIFN0cmluZy5lcXVhbCBsaW5rIGN1cnJcbiAgICAgIGVsc2UgbGlzdF9zdGFydHNfd2l0aCB+ZXF1YWw6U3RyaW5nLmVxdWFsIH5wcmVmaXg6bGluayBjdXJyXG4gICAgaW5cbiAgICBtYXRjaCBhbGlhcyB3aXRoXG4gICAgfCBTb21lIGFsaWFzIC0+IGVxIHx8IExpc3QuZXF1YWwgU3RyaW5nLmVxdWFsIGFsaWFzIGN1cnJcbiAgICB8IE5vbmUgLT4gZXFcbiAgaW5cbiAgZXZhbF9wYXRoXG4gICAgKGZ1biBzdHJfcGF0aCAtPlxuICAgICAgbGV0IG91dCA9XG4gICAgICAgIFNpZ25hbC5tYXBcbiAgICAgICAgICAoZnVuIHByZWZpeCAtPiAoZ29fdXAgdXAgcHJlZml4LCBzdHJfcGF0aCkpXG4gICAgICAgICAgKGlmIGFic29sdXRlIHRoZW4gU2lnbmFsLm1ha2UgW10gZWxzZSByb3V0ZXIucHJlZml4KVxuICAgICAgaW5cbiAgICAgIFNpZ25hbC5wYWlyIG91dCByb3V0ZXIucmVzdFxuICAgICAgfD4gU2lnbmFsLnVuaXEgfmVxdWFsOihmdW4gKChwMSwgczEpLCByMSkgKChwMiwgczIpLCByMikgLT5cbiAgICAgICAgICAgICBpZiBhY3RpdmUgPT0gSHRtbC5BdHRyLm5vcCB0aGVuXG4gICAgICAgICAgICAgICBMaXN0LmVxdWFsIFN0cmluZy5lcXVhbCBwMSBwMiAmJiBMaXN0LmVxdWFsIFN0cmluZy5lcXVhbCBzMSBzMlxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIExpc3QuZXF1YWwgU3RyaW5nLmVxdWFsIHAxIHAyXG4gICAgICAgICAgICAgICAmJiBMaXN0LmVxdWFsIFN0cmluZy5lcXVhbCBzMSBzMlxuICAgICAgICAgICAgICAgJiYgTGlzdC5lcXVhbCBTdHJpbmcuZXF1YWwgcjEgcjIpXG4gICAgICB8PiBWaWV3LmJpbmQgKGZ1biAoKGxpbmtfcHJlZml4LCBsaW5rX3N1ZmZpeCksIHJlc3QpIC0+XG4gICAgICAgICAgICAgbGV0IHBhdGhfc3RyID0gU3RyaW5nLmNvbmNhdCBcIi9cIiAoKFwiI1wiIDo6IGxpbmtfcHJlZml4KSBAIGxpbmtfc3VmZml4KSBpblxuICAgICAgICAgICAgIGxldCBocmVmX2F0dHIgPSBIdG1sLmhyZWYgcGF0aF9zdHIgaW5cbiAgICAgICAgICAgICBsZXQgdXNlcl9hdHRyID1cbiAgICAgICAgICAgICAgIGlmIGFjdGl2ZSA9PSBIdG1sLkF0dHIubm9wIHRoZW4gaW5hY3RpdmVcbiAgICAgICAgICAgICAgIGVsc2UgaWYgY2hlY2tfaXNfYWN0aXZlIGxpbmtfc3VmZml4IHJlc3QgdGhlbiBhY3RpdmVcbiAgICAgICAgICAgICAgIGVsc2UgaW5hY3RpdmVcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIEh0bWwuQXR0ci5jb21iaW5lIGhyZWZfYXR0ciB1c2VyX2F0dHIpKVxuICAgIHBhdGgwXG5cbnR5cGUgZW1pdHMgPSB7XG4gIG11dGFibGUgZW1pdF9hcmdzIDogKG5vdGlmeTpTaWduYWwubm90aWZpY2F0aW9uIC0+IHN0cmluZyAtPiB1bml0KSBsaXN0O1xuICBtdXRhYmxlIGVtaXRfcHJlZml4IDogbm90aWZ5OlNpZ25hbC5ub3RpZmljYXRpb24gLT4gc3RyaW5nIGxpc3QgLT4gdW5pdDtcbiAgbXV0YWJsZSBlbWl0X3Jlc3QgOiBub3RpZnk6U2lnbmFsLm5vdGlmaWNhdGlvbiAtPiBzdHJpbmcgbGlzdCAtPiB1bml0O1xufVxuXG5sZXQgaW5pdF9lbWl0cyAoKSA9XG4gIHsgZW1pdF9hcmdzID0gW107IGVtaXRfcHJlZml4ID0gKGZ1biB+bm90aWZ5Ol8gXyAtPiAoKSk7IGVtaXRfcmVzdCA9IChmdW4gfm5vdGlmeTpfIF8gLT4gKCkpIH1cblxubGV0IGFwcGx5IGVtaXRzIH5wcmVmaXg6YWJzcHJlZml4MCB+bWF0Y2hlZCB+YXJnczphcmdzMCA9XG4gIGxldCAoIGxldCogKSA9IFJlc3VsdC5iaW5kIGluXG4gIGxldCBhYnNwcmVmaXhfc2lnID0gU2lnbmFsLm1hcCAoZnVuIGFic3ByZWZpeDAgLT4gYWJzcHJlZml4MCBAIG1hdGNoZWQpIGFic3ByZWZpeDAgaW5cbiAgbGV0IGFic3ByZWZpeF9lbWl0IH5ub3RpZnkgcHJlZml4JyA9XG4gICAgbGV0IGFic3ByZWZpeCcgPSBTaWduYWwuZ2V0IGFic3ByZWZpeDAgQCBwcmVmaXgnIGluXG4gICAgaWYgbm90IChMaXN0LmVxdWFsIFN0cmluZy5lcXVhbCBhYnNwcmVmaXgnIChTaWduYWwuZ2V0IGFic3ByZWZpeF9zaWcpKSB0aGVuXG4gICAgICBTaWduYWwuZW1pdCB+bm90aWZ5IGFic3ByZWZpeCcgYWJzcHJlZml4X3NpZ1xuICBpblxuICBlbWl0cy5lbWl0X3ByZWZpeCA8LSBhYnNwcmVmaXhfZW1pdDtcbiAgbGV0IHJlYyBsb29wIDpcbiAgICAgIHR5cGUgdmlldyBsaW5rLlxuICAgICAgc3RyaW5nIGxpc3QgLT5cbiAgICAgIF8gbGlzdCAtPlxuICAgICAgKHN0cmluZywgc3RyaW5nIHNpZ25hbCkgRWl0aGVyLnQgbGlzdCAtPlxuICAgICAgKHZpZXcsIGxpbmssIEh0bWwuaHRtbCkgcGF0aCAtPlxuICAgICAgdmlldyAtPlxuICAgICAgKEh0bWwuaHRtbCAqIChzdHJpbmcsIHN0cmluZyBzaWduYWwpIEVpdGhlci50IGxpc3QsIHN0cmluZykgcmVzdWx0ID1cbiAgIGZ1biBhcmdzIGFyZ3NfZW1pdHMgcmV2X3F1YWxpZmllZF9wYXRoIHBhdGggdmlldyAtPlxuICAgIG1hdGNoIChwYXRoLCBhcmdzKSB3aXRoXG4gICAgfCBSZXN0LCBfIC0+XG4gICAgICBsZXQgcmVzdF9zaWcgPSBTaWduYWwubWFrZSBhcmdzIGluXG4gICAgICBsZXQgcmVzdF9lbWl0IH5ub3RpZnkgcmVzdCA9XG4gICAgICAgIGlmIG5vdCAoTGlzdC5lcXVhbCBTdHJpbmcuZXF1YWwgcmVzdCAoU2lnbmFsLmdldCByZXN0X3NpZykpIHRoZW5cbiAgICAgICAgICBTaWduYWwuZW1pdCB+bm90aWZ5IHJlc3QgcmVzdF9zaWdcbiAgICAgIGluXG4gICAgICBlbWl0cy5lbWl0X2FyZ3MgPC0gTGlzdC5yZXYgYXJnc19lbWl0cztcbiAgICAgIGVtaXRzLmVtaXRfcmVzdCA8LSByZXN0X2VtaXQ7XG4gICAgICBsZXQgaHRtbCA9IHZpZXcgKHsgcHJlZml4ID0gYWJzcHJlZml4X3NpZzsgcmVzdCA9IHJlc3Rfc2lnIH0gOiB0KSBpblxuICAgICAgbGV0IHF1YWxpZmllZF9wYXRoJyA9XG4gICAgICAgIGxldCBxdWFsaWZpZWRfcmVzdCA9IExpc3QubWFwIChmdW4gYXJnIC0+IEVpdGhlci5MZWZ0IGFyZykgYXJncyBpblxuICAgICAgICBMaXN0LnJldl9hcHBlbmQgcmV2X3F1YWxpZmllZF9wYXRoIHF1YWxpZmllZF9yZXN0XG4gICAgICBpblxuICAgICAgT2sgKGh0bWwsIHF1YWxpZmllZF9wYXRoJylcbiAgICB8IEVuZCwgW10gLT5cbiAgICAgIGVtaXRzLmVtaXRfYXJncyA8LSBMaXN0LnJldiBhcmdzX2VtaXRzO1xuICAgICAgT2sgKHZpZXcgKCksIExpc3QucmV2IHJldl9xdWFsaWZpZWRfcGF0aClcbiAgICB8IEVuZCwgXyA6OiBfIC0+IEVycm9yIFwidG9vIG1hbnkgYXJndW1lbnRzIGZvciBwYXRoXCJcbiAgICB8IENvbnN0IChjb25zdCwgcGF0aCcpLCBfIC0+IGxvb3AgYXJncyBhcmdzX2VtaXRzIChMZWZ0IGNvbnN0IDo6IHJldl9xdWFsaWZpZWRfcGF0aCkgcGF0aCcgdmlld1xuICAgIHwgVmFyIF8sIFtdIC0+IEVycm9yIFwiaW5zdWZmaWNpZW50IGFyZ3VtZW50cyBmb3IgcGF0aFwiXG4gICAgfCBWYXIgKHZhciwgdmFyX3NpZ19vcHQsIHBhdGgnKSwgYXJnX3N0ciA6OiBhcmdzJyAtPlxuICAgICAgbGV0KiBhcmcgPVxuICAgICAgICB2YXIub2Zfc3RyaW5nIGFyZ19zdHJcbiAgICAgICAgfD4gT3B0aW9uLnRvX3Jlc3VsdFxuICAgICAgICAgICAgIH5ub25lOihTdHJpbmcuY29uY2F0IFwiXCIgWyBcImNvdWxkIG5vdCBkZWNvZGUgXCI7IHZhci5sYWJlbDsgXCIgdmFyaWFibGU6IFwiOyBhcmdfc3RyIF0pXG4gICAgICBpblxuICAgICAgbGV0IGFyZ19zaWcgPVxuICAgICAgICBtYXRjaCB2YXJfc2lnX29wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBTaWduYWwubWFrZSB+bGFiZWw6KFwidmFyLVwiIF4gdmFyLmxhYmVsKSBhcmdcbiAgICAgICAgfCBTb21lIHZhcl9zaWcgLT5cbiAgICAgICAgICBTaWduYWwuZW1pdCBhcmcgdmFyX3NpZztcbiAgICAgICAgICB2YXJfc2lnXG4gICAgICBpblxuICAgICAgbGV0IGFyZ19lbWl0IH5ub3RpZnkgYXJnX3N0cicgPVxuICAgICAgICBsZXQgYXJnJyA9IHZhci5vZl9zdHJpbmcgYXJnX3N0cicgfD4gb3JfZmFpbCAoXCJ2YXIgZGVjb2RpbmcgZmFpbGVkOiBcIiBeIHZhci5sYWJlbCkgaW5cbiAgICAgICAgaWYgbm90ICh2YXIuZXF1YWwgKFNpZ25hbC5nZXQgYXJnX3NpZykgYXJnJykgdGhlbiBTaWduYWwuZW1pdCB+bm90aWZ5IGFyZycgYXJnX3NpZ1xuICAgICAgaW5cbiAgICAgIGxldCBxdWFsaWZpZWRfcGF0aCcgPSBFaXRoZXIuUmlnaHQgKFNpZ25hbC5tYXAgdmFyLnRvX3N0cmluZyBhcmdfc2lnKSA6OiByZXZfcXVhbGlmaWVkX3BhdGggaW5cbiAgICAgIGxvb3AgYXJncycgKGFyZ19lbWl0IDo6IGFyZ3NfZW1pdHMpIHF1YWxpZmllZF9wYXRoJyBwYXRoJyAodmlldyBhcmdfc2lnKVxuICBpblxuICBsb29wIGFyZ3MwIFtdIFtdXG5cbmxldCByZW5kZXJfbG9va3VwX2Vycm9yIH5wcmVmaXggP2FsaWFzIH5sYWJlbCB+ZGVmYXVsdCBlcnIgPVxuICBsZXQgbGFiZWwgPVxuICAgIG1hdGNoIGFsaWFzIHdpdGhcbiAgICB8IE5vbmUgLT4gbGFiZWxcbiAgICB8IFNvbWUgYWxpYXMgLT4gU3RyaW5nLmNvbmNhdCBcIlwiIFsgbGFiZWw7IFwiOiBhbGlhcyBcIjsgYWxpYXMgXVxuICBpblxuICBtYXRjaCBlcnIgd2l0aFxuICB8IFRhYmxlLk5vX21hdGNoIHBhdGggLT5cbiAgICBkZWZhdWx0IG9yIEh0bWwudGV4dCAobGFiZWwgXiBcIjogbm8gbWF0Y2g6IC9cIiBeIFN0cmluZy5jb25jYXQgXCIvXCIgKFNpZ25hbC5nZXQgcHJlZml4IEAgcGF0aCkpXG4gIHwgVGFibGUuSW5jb21wbGV0ZV9tYXRjaCBwYXRoIC0+XG4gICAgZGVmYXVsdFxuICAgIG9yIEh0bWwudGV4dCAobGFiZWwgXiBcIjogaW5jb21wbGV0ZSBtYXRjaDogL1wiIF4gU3RyaW5nLmNvbmNhdCBcIi9cIiAoU2lnbmFsLmdldCBwcmVmaXggQCBwYXRoKSlcbiAgfCBleG4gLT5cbiAgICBKeC5sb2cgZXhuO1xuICAgIEh0bWwudGV4dCAobGFiZWwgXiBcIjogdW5leHBlY3RlZCBleGNlcHRpb25cIilcblxuKCogVE9ETzogbXVzdCBiZSBsYXp5IGluaXRpYWxpemVkIHNpbWlsYXIgdG8gVmlldy5zaG93LiAqKVxuKCogVE9ETzogaW1wcm92ZSBleG4gY29udGV4dCBsb2dnaW5nLiAqKVxubGV0IGRpc3BhdGNoX3RhYmxlID9sYWJlbCA/ZGVmYXVsdCAoeyBwcmVmaXg7IHJlc3QgfSA6IHQpIHRhYmxlIDogSHRtbC5odG1sID1cbiBmdW4gcGFyZW50IGluc2VydCAtPlxuICBsZXQgbGFiZWwgPVxuICAgIG1hdGNoIGxhYmVsIHdpdGhcbiAgICB8IE5vbmUgLT4gXCJyb3V0ZXJcIlxuICAgIHwgU29tZSB4IC0+IFwicm91dGVyLVwiIF4geFxuICBpblxuICBsZXQgbG9va3VwX3NpZyA9IFNpZ25hbC5tYXAgKFRhYmxlLmxvb2t1cCB0YWJsZSkgcmVzdCBpblxuICBsZXQgbG9va3VwX3JvdXRlX3NpZyA9XG4gICAgU2lnbmFsLnVuaXFcbiAgICAgIH5lcXVhbDooZnVuIHJlczEgcmVzMiAtPlxuICAgICAgICBtYXRjaCAocmVzMSwgcmVzMikgd2l0aFxuICAgICAgICB8IE9rIHsgcm91dGUgPSByMTsgXyB9LCBPayB7IHJvdXRlID0gcjI7IF8gfSAtPiByMSA9PSByMlxuICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICBsb29rdXBfc2lnXG4gIGluXG4gICgqIERvIHdlIG5lZWQgdG8gY2xlYW4gdXAgZW1pdHMgaW4gdW5tb3VudD8gKilcbiAgbGV0IGVtaXRzID0gaW5pdF9lbWl0cyAoKSBpblxuICBsZXQgaHRtbCA9XG4gICAgVmlldy5zaG93IH5sYWJlbFxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgT2sgeyByb3V0ZSA9IEFsaWFzIChzcmNfcGF0aCwgZHN0X3N0cl9wYXRoKTsgXyB9IC0+IGJlZ2luXG4gICAgICAgICAgbWF0Y2ggVGFibGUubG9va3VwIHRhYmxlIGRzdF9zdHJfcGF0aCB3aXRoXG4gICAgICAgICAgfCBPayB7IHJvdXRlID0gUm91dGUgKHBhdGgsIHZpZXcpOyBtYXRjaGVkOyBhcmdzIH0gLT4gYmVnaW5cbiAgICAgICAgICAgIG1hdGNoIGFwcGx5IGVtaXRzIH5wcmVmaXggfm1hdGNoZWQgfmFyZ3MgcGF0aCB2aWV3IHdpdGhcbiAgICAgICAgICAgIHwgT2sgKGh0bWwsIF9xcGF0aCkgLT4gaHRtbFxuICAgICAgICAgICAgfCBFcnJvciBlcnIgLT4gSHRtbC50ZXh0IChsYWJlbCBeIFwiOiBcIiBeIGVycilcbiAgICAgICAgICBlbmRcbiAgICAgICAgICB8IE9rIHsgcm91dGUgPSBBbGlhcyBfOyBfIH0gLT4gZmFpbHdpdGggXCJidWc6IGZvcndhcmQgdG8gZm9yd2FyZFwiXG4gICAgICAgICAgfCBFcnJvciBlcnIgLT5cbiAgICAgICAgICAgIGxldCBhbGlhcyA9IHN0cmluZ19vZl9wYXRoIHNyY19wYXRoIGluXG4gICAgICAgICAgICByZW5kZXJfbG9va3VwX2Vycm9yIH5wcmVmaXggfmFsaWFzIH5sYWJlbCB+ZGVmYXVsdCBlcnJcbiAgICAgICAgZW5kXG4gICAgICAgIHwgT2sgeyByb3V0ZSA9IFJvdXRlIChwYXRoLCB2aWV3KTsgbWF0Y2hlZDsgYXJncyB9IC0+IGJlZ2luXG4gICAgICAgICAgbWF0Y2ggYXBwbHkgZW1pdHMgfnByZWZpeCB+bWF0Y2hlZCB+YXJncyBwYXRoIHZpZXcgd2l0aFxuICAgICAgICAgIHwgT2sgKGh0bWwsIHFwYXRoKSAtPlxuICAgICAgICAgICAgKCpKeC5sb2cgKFwiQUZURVIgQVBQTFlcIiwgQXJyYXkub2ZfbGlzdCBxcGF0aCk7KilcbiAgICAgICAgICAgICgqbGV0IHVwX3Jlc3QgPSBTaWduYWwubWFrZSBbXSBpblxuICAgICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgICAoZnVuIHNlZyAtPlxuICAgICAgICAgICAgICAgICAgbWF0Y2ggc2VnIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgRWl0aGVyLkxlZnQgXyAtPiAoKVxuICAgICAgICAgICAgICAgICAgfCBFaXRoZXIuUmlnaHQgdmFyX3NpZyAtPlxuICAgICAgICAgICAgICAgICAgICAoKiBGSVhNRTogdGhpcyBxcGF0aCBpcyB0aGUgaW5pdGlhbCBwYXRoIGF0IHJlbmRlcmluZyB0aW1lLCBub3QgdGhlIGN1cnJlbnQgcmVzdCBwYXRoLiAqKVxuICAgICAgICAgICAgICAgICAgICBTaWduYWwuc3ViIChmdW4gXyAtPiBTaWduYWwuZW1pdCAocGlja19xcGF0aCBxcGF0aCkgdXBfcmVzdCkgdmFyX3NpZ1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBxcGF0aDtcbiAgICAgICAgICAgICAgU2lnbmFsLnN1YlxuICAgICAgICAgICAgICAgIChmdW4gcmVzdCAtPlxuICAgICAgICAgICAgICAgICAgKCogSngubG9nIChcIlJPVVRFIFVQLCByZXN0XCIsIEFycmF5Lm9mX2xpc3QgcmVzdCwgQXJyYXkub2ZfbGlzdCAoU2lnbmFsLmdldCByb3V0ZXIucmVzdCkpOyAqKVxuICAgICAgICAgICAgICAgICAgbGV0IGhhc2ggPSBcIiMvXCIgXiBTdHJpbmcuY29uY2F0IFwiL1wiIChTaWduYWwuZ2V0IHByZWZpeCBAIHJlc3QpIGluXG4gICAgICAgICAgICAgICAgICBTdGR3ZWIuRG9tLkxvY2F0aW9uLnNldF9oYXNoIFN0ZHdlYi5Eb20uV2luZG93LmxvY2F0aW9uIGhhc2hcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgdXBfcmVzdDsqKVxuICAgICAgICAgICAgaHRtbFxuICAgICAgICAgIHwgRXJyb3IgZXJyIC0+IEh0bWwudGV4dCAobGFiZWwgXiBcIjogXCIgXiBlcnIpXG4gICAgICAgIGVuZFxuICAgICAgICB8IEVycm9yIGVyciAtPiByZW5kZXJfbG9va3VwX2Vycm9yIH5wcmVmaXggfmxhYmVsIH5kZWZhdWx0IGVycilcbiAgICAgIGxvb2t1cF9yb3V0ZV9zaWdcbiAgaW5cbiAgbGV0IHVuc3ViID1cbiAgICBTaWduYWwuc3ViJ1xuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgT2sgKHsgYXJncyA9IGFyZ3MwOyBtYXRjaGVkID0gbWF0Y2hlZDA7IHJvdXRlID0gUm91dGUgXyB9IDogbG9va3VwKSAtPlxuICAgICAgICAgIFNpZ25hbC5zY29wZSAoZnVuIG5vdGlmeSAtPlxuICAgICAgICAgICAgICBlbWl0cy5lbWl0X3ByZWZpeCB+bm90aWZ5IG1hdGNoZWQwO1xuICAgICAgICAgICAgICBsZXQgcmVjIGxvb3AgYXJnc19lbWl0cyBhcmdzID1cbiAgICAgICAgICAgICAgICBtYXRjaCAoYXJnc19lbWl0cywgYXJncykgd2l0aFxuICAgICAgICAgICAgICAgIHwgW10sIFtdIC0+IGVtaXRzLmVtaXRfcmVzdCB+bm90aWZ5IFtdXG4gICAgICAgICAgICAgICAgfCBbXSwgcmVzdCAtPiBlbWl0cy5lbWl0X3Jlc3Qgfm5vdGlmeSByZXN0XG4gICAgICAgICAgICAgICAgfCBfYXJnX2VtaXRzLCBbXSAtPiBpbnZhbGlkX2FyZyBcInJvdXRlcjogaW5zdWZmaWNpZW50IGFyZ3MgZm9yIGVtaXRcIlxuICAgICAgICAgICAgICAgIHwgYXJnX2VtaXQgOjogYXJnX2VtaXRzJywgYXJnIDo6IGFyZ3MnIC0+XG4gICAgICAgICAgICAgICAgICAoKiBUT0RPOiB0aGVzZSBlbWl0cyBjYW4gcmFpc2UgdmFyIGRlY29kaW5nIGV4Y2VwdGlvbnMsIGhhbmRsZSB0aGlzIGhlcmUgYW5kIHVwZGF0ZSB2aWV3IHdpdGggZXJyb3IuICopXG4gICAgICAgICAgICAgICAgICBhcmdfZW1pdCB+bm90aWZ5IGFyZztcbiAgICAgICAgICAgICAgICAgIGxvb3AgYXJnX2VtaXRzJyBhcmdzJ1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsb29wIGVtaXRzLmVtaXRfYXJncyBhcmdzMClcbiAgICAgICAgfCBPayAoeyByb3V0ZSA9IEFsaWFzIF87IF8gfSA6IGxvb2t1cCkgLT4gKClcbiAgICAgICAgfCBFcnJvciBfIC0+ICgpKVxuICAgICAgbG9va3VwX3NpZ1xuICBpblxuICBsZXQgaHRtbCcgPSBIdG1sLkVsZW0ub25fdW5tb3VudCB1bnN1YiBodG1sIGluXG4gIGh0bWwnIHBhcmVudCBpbnNlcnRcblxubGV0IGRpc3BhdGNoID9sYWJlbCA/ZGVmYXVsdCByb3V0ZXIgcm91dGVzID1cbiAgZGlzcGF0Y2hfdGFibGUgP2xhYmVsID9kZWZhdWx0IHJvdXRlciAoVGFibGUub2Zfcm91dGVfbGlzdCByb3V0ZXMpXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfZnJlc2hfb29faWQiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWIiLCJTaWduYWwiLCJIdG1sIiwiSGVsaXhfVmlldyIsIlN0ZGxpYl9TdHJpbmciLCJKeCIsIlN0ZGxpYl9MaXN0IiwiU3RkbGliX09wdGlvbiIsIlN0ZGxpYl9SZXN1bHQiLCJTdGR3ZWIiLCJTdGRsaWJfTWFwIiwiU3RkbGliX0ludCIsIlN0cmluZ19tYXAiLCJvciIsIm9wdCIsImRlZmF1bHQkIiwieCIsInZhciQiLCJvZl9zdHJpbmciLCJ0b19zdHJpbmciLCJsYWJlbCIsImVxdWFsIiwiaW50Iiwic3RyaW5nIiwicXVlcnkiLCJzdHIiLCJ4MSIsIngyIiwicm91dGUiLCJwYXRoIiwicmVuZGVyIiwiY3N0Iiwic3RyaW5nX29mX3BhdGgiLCJwYXRoMCIsImxvb3AiLCJjb25zdCQiLCJtYXRjaCIsInRhaWwiLCJsaXN0X29mX3BhdGgiLCJlbXB0eSIsInJlZ2lzdGVyIiwicm91dGUwIiwicm9vdCIsIm5vZGUiLCJleGlzdGluZ19ub2RlIiwibWF0Y2hlZF9ub2RlIiwiSW5jb21wbGV0ZV9tYXRjaCIsIk5vX21hdGNoIiwibG9va3VwIiwidGFibGUwIiwiaW5wdXQwIiwiYnQiLCJpbnB1dCIsIm1hdGNoZWQiLCJhcmdzIiwiaW5wdXRfaGQiLCJwYXJhbSIsIm9mX3JvdXRlX2xpc3QiLCJyb3V0ZXMiLCJhY2MiLCJtYWtlIiwicmVzdCIsInByZWZpeCIsInJvdXRlciIsImV2YWxfcGF0aCIsImsiLCJwYXRoMiIsImxvY2F0aW9uX3NldF9wYXRoIiwiaGFzaCIsImFsaWFzIiwic3JjIiwiZHN0Iiwic3RyX3BhdGgiLCJnb191cCIsIm4wIiwicHJlZml4X3JldiIsIm4iLCJnbyIsImFic29sdXRlIiwidXAiLCJwaWNrX3FwYXRoIiwic2VnbWVudHMiLCJ2YXJfc2lnIiwibGluayIsImFjdGl2ZSIsImluYWN0aXZlIiwiZXhhY3QiLCJvdXQiLCJyMiIsInMyIiwicDIiLCJyMSIsInMxIiwicDEiLCJsaW5rX3N1ZmZpeCIsImxpbmtfcHJlZml4IiwicGF0aF9zdHIiLCJocmVmX2F0dHIiLCJ1c2VyX2F0dHIiLCJlcSIsInAiLCJsIiwicDAiLCJsMCIsImluaXRfZW1pdHMiLCJhcHBseSIsImVtaXRzIiwiYWJzcHJlZml4MCIsImFyZ3MwIiwibGV0JCIsImFic3ByZWZpeF9zaWciLCJhYnNwcmVmaXhfZW1pdCIsIm5vdGlmeSIsImFic3ByZWZpeCIsImFyZ3NfZW1pdHMiLCJyZXZfcXVhbGlmaWVkX3BhdGgiLCJ2aWV3IiwidmFyX3NpZ19vcHQiLCJhcmdfc3RyIiwiYXJnIiwiYXJnX3NpZyIsImFyZ19lbWl0IiwibXNnIiwicXVhbGlmaWVkX3BhdGgiLCJyZXN0X3NpZyIsInJlc3RfZW1pdCIsImh0bWwiLCJxdWFsaWZpZWRfcmVzdCIsInJlbmRlcl9sb29rdXBfZXJyb3IiLCJlcnIiLCJkaXNwYXRjaF90YWJsZSIsInRhYmxlIiwicGFyZW50IiwiaW5zZXJ0IiwibG9va3VwX3NpZyIsImxvb2t1cF9yb3V0ZV9zaWciLCJyZXMxIiwicmVzMiIsImRzdF9zdHJfcGF0aCIsInNyY19wYXRoIiwidW5zdWIiLCJtYXRjaGVkMCIsImRpc3BhdGNoIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxPQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsS0FBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDLGFBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLFlBQUFDLEdBQUFDLEtBQUFDO0FBQUFBLElDTUksVUFFVTtBQUFBLFFBQUFDLElBRlY7QUFBQSxJQUNZO0FBQUEsR0FDSztBQUFBLFlBQUFDLEtBQUFDLFdBQUFDLFdBQUFMLEtBQUFNO0FBQUFBLFFBQUFDLFFBdUJiO0FBQUEsSUFBc0Q7QUFBQSxHQUFzQztBQUFBO0FBQUEsSUFBQUMsTUQvQnBHO0FBQUEsSUFBQUM7QUFBQUEsTUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUM7QUFBQUEsTUFBQTtBQUFBO0FBQUE7QUFBQSxnQkFBQUMsS0MwQ2lDLDBDQUF3QztBQUFBLGdCQUFBQyxJQUFBQztBQUFBQTtBQUFBQSxTQUFBLElBR1o7QUFBQSxhQUF4QztBQUFBLFFB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QjtBQUFBO0FBQUEsR0RuYnBFIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDcwOTUsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVsaXguY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL2hlbGl4L01vdXNlLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwibW9kdWxlIEV2ZW50ID0gU3Rkd2ViLkRvbS5FdmVudFxubW9kdWxlIFdpbmRvdyA9IFN0ZHdlYi5Eb20uV2luZG93XG5cbmxldCBwb3NpdGlvbl9vZl9tb3VzZV9ldmVudCBtX2V2ID0gRXZlbnQuKHBhZ2VfeCBtX2V2LCBwYWdlX3kgbV9ldilcblxubGV0IHBvc2l0aW9uICgpID1cbiAgbGV0IHMgPSBTaWduYWwubWFrZSAoMC4wLCAwLjApIGluXG4gIFdpbmRvdy5iaW5kIEV2ZW50Lm1vdXNlbW92ZSAoZnVuIG1fZXYgLT4gU2lnbmFsLmVtaXQgKHBvc2l0aW9uX29mX21vdXNlX2V2ZW50IG1fZXYpIHMpO1xuICBzXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJnbG9iYWxfZGF0YSIsIlNpZ25hbCIsIlN0ZHdlYiIsInBvc2l0aW9uX29mX21vdXNlX2V2ZW50IiwibV9ldiIsInBvc2l0aW9uIiwicGFyYW0iLCJzIl0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxZQUFBQyx3QkFBQUM7QUFBQUEsUUFBQSxJQ0d1RDtBQUFBLElBQWIsZ0RBQVc7QUFBQSxHQUFjO0FBQUEsV0RIbkU7QUFBQSxZQUFBQyxTQUFBQztBQUFBQSxRQUFBQyxJQ01VO0FBQUEsSUFDUjtBQUFBO0FBQUE7QUFBQSxlQUFBSDtBQUFBQSxXQUFBLElBQXFEO0FBQUEsT0FBOEIsb0NBQUU7QUFBQTtBQUFBLElBQUM7QUFBQSxHQUNyRjtBQUFBLEdEUkgiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0NzEzOCwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJoZWxpeC5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvaGVsaXgvSHR0cC5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIm1vZHVsZSBGZXRjaCA9IFN0ZHdlYi5GZXRjaFxubW9kdWxlIFByb21pc2UgPSBTdGR3ZWIuUHJvbWlzZVxuXG50eXBlIGVycm9yID1cbiAgfCBGZXRjaF9lcnJvciBvZiBKeC50XG4gIHwgVW5zdWNjZXNzZnVsIG9mIFN0ZHdlYi5GZXRjaC5SZXNwb25zZS50XG4gIHwgRGVjb2RpbmdfZXJyb3Igb2YgZXhuXG4gIHwgSGFuZGxpbmdfZXJyb3Igb2YgZXhuXG5cbmxldCBzdHJpbmdfb2ZfZXJyb3IgPSBmdW5jdGlvblxuICB8IEZldGNoX2Vycm9yIF8gLT4gXCJGZXRjaCBlcnJvclwiXG4gIHwgVW5zdWNjZXNzZnVsIHJlc3AgLT5cbiAgICBcIlVuc3VjY2Vzc2Z1bCByZXNwb25zZTogXCIgXiBzdHJpbmdfb2ZfaW50IChTdGR3ZWIuRmV0Y2guUmVzcG9uc2Uuc3RhdHVzIHJlc3ApXG4gIHwgRGVjb2RpbmdfZXJyb3IgXyAtPiBcIkRlY29kaW5nIGZhaWxlZFwiXG4gIHwgSGFuZGxpbmdfZXJyb3IgXyAtPiBcIkNvdWxkIG5vdCBoYW5kbGUgZmV0Y2hlZCBwYXlsb2FkXCJcblxudHlwZSBub25yZWMgJ2EgcmVzdWx0ID0gKCdhLCBlcnJvcikgcmVzdWx0XG50eXBlIGJvZHkgPSBTdGR3ZWIuRmV0Y2guQm9keS50XG5cbm1vZHVsZSBFbmNvZGVyID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9IHN0cmluZyBvcHRpb24gKiAoJ2EgLT4gRmV0Y2guQm9keS50KVxuXG4gIGxldCBtYWtlID8oY29udGVudF90eXBlKSBmID0gY29udGVudF90eXBlLCBmXG5cbiAgbGV0IHRvX3VuZGVmaW5lZF9ib2R5IF8gPSBGZXRjaC5Cb2R5LnVuc2FmZV9vZl9qcyBKeC51bmRlZmluZWRcbiAgbGV0IGVtcHR5ID0gKE5vbmUsIHRvX3VuZGVmaW5lZF9ib2R5KVxuICBsZXQgaWdub3JlID0gKE5vbmUsIHRvX3VuZGVmaW5lZF9ib2R5KVxuICBsZXQgdGV4dCA9IChOb25lLCBGZXRjaC5Cb2R5Lm9mX3N0cmluZylcbiAgbGV0IGZvcm1fZGF0YSA9IChOb25lLCBGZXRjaC5Cb2R5Lm9mX2Zvcm1fZGF0YSlcblxuICBsZXQgYXNzb2NfdG9fZm9ybV91cmxlbmNvZGVkX2JvZHkgYXNzb2MgPVxuICAgIGxldCBzdHJpbmcgPVxuICAgICAgU3RyaW5nLmNvbmNhdCBcIiZcIlxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biAoaywgdikgLT5cbiAgICAgICAgICAgICBTdHJpbmcuY29uY2F0IFwiPVwiXG4gICAgICAgICAgICAgICBbIFN0ZHdlYi5lbmNvZGVfdXJpX2NvbXBvbmVudCBrOyBTdGR3ZWIuZW5jb2RlX3VyaV9jb21wb25lbnQgdiBdXG4gICAgICAgICAgIClcbiAgICAgICAgICAgYXNzb2NcbiAgICAgICAgKVxuICAgIGluXG4gICAgRmV0Y2guQm9keS5vZl9zdHJpbmcgc3RyaW5nXG5cbiAgbGV0IGZvcm1fdXJsZW5jb2RlZCA9XG4gICAgKCBTb21lIFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04XCIsXG4gICAgICBhc3NvY190b19mb3JtX3VybGVuY29kZWRfYm9keVxuICAgIClcblxuICBsZXQganNvbl90b19ib2R5IGpzb24gPVxuICAgIGxldCB0ZXh0ID0gU3Rkd2ViLkpzb24uc3RyaW5naWZ5IGpzb24gaW5cbiAgICBGZXRjaC5Cb2R5Lm9mX3N0cmluZyB0ZXh0XG5cbiAgbGV0IGpzb24gPSAoU29tZSBcImFwcGxpY2F0aW9uL2pzb25cIiwganNvbl90b19ib2R5KVxuXG4gIGxldCBtYXBfanNvbiBlbmNvZGVfanNvbiA9XG4gICAgKFNvbWUgXCJhcHBsaWNhdGlvbi9qc29uXCIsIGZ1biB4IC0+IGpzb25fdG9fYm9keSAoZW5jb2RlX2pzb24geCkpXG5lbmRcblxubW9kdWxlIERlY29kZXIgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gRmV0Y2guUmVzcG9uc2UudCAtPiAnYSBQcm9taXNlLnRcblxuICBsZXQgaWdub3JlIF9yZXMgPSBQcm9taXNlLnJlc29sdmUgKClcbiAgbGV0IHRleHQgPSBGZXRjaC5SZXNwb25zZS50ZXh0XG4gIGxldCBqc29uID0gRmV0Y2guUmVzcG9uc2UuanNvblxuXG4gIGxldCBtYXAgZiB0IHJlc3BvbnNlID1cbiAgICB0IHJlc3BvbnNlXG4gICAgfD4gUHJvbWlzZS5hbmRfdGhlbiAoZnVuIHggLT5cbiAgICAgICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgICAgICAgfCBPayB4IC0+IFByb21pc2UucmVzb2x2ZSB4XG4gICAgICAgICAgIHwgRXJyb3IgZXJyIC0+IFByb21pc2UucmVqZWN0IGVyclxuICAgICAgIClcblxuICBsZXQgbWFwX2pzb24gZiA9IG1hcCBmIGpzb25cbmVuZFxuXG4oKiBGSVhNRTogcHJldmVudCBzaWduYWwgaGFuZGxlciBlcnJvcnMgZnJvbSBiZWluZyBjYXVnaHQgKilcbmxldCByZXF1ZXN0ID9tZXRoID8oaGVhZGVycyA9IFtdKSA/bW9kZSA/Y3JlZGVudGlhbHNcbiAgICB+ZW5jb2RlOihjb250ZW50X3R5cGUsIHRvX2JvZHkpIH5kZWNvZGUgfnVybCByZXF1ZXN0X3ZhbHVlID1cbiAgbGV0IGhlYWRlcnMgPVxuICAgIG1hdGNoIGNvbnRlbnRfdHlwZSB3aXRoXG4gICAgfCBTb21lIGNvbnRlbnRfdHlwZSAtPiAoXCJDb250ZW50LVR5cGVcIiwgY29udGVudF90eXBlKSA6OiBoZWFkZXJzXG4gICAgfCBOb25lIC0+IGhlYWRlcnNcbiAgaW5cbiAgbGV0IGJvZHkgPSB0b19ib2R5IHJlcXVlc3RfdmFsdWUgaW5cbiAgbGV0IHMgPSBTaWduYWwubWFrZSBOb25lIGluXG4gIEZldGNoLmZldGNoIH5ib2R5ID9tZXRoIH5oZWFkZXJzID9tb2RlID9jcmVkZW50aWFscyB1cmxcbiAgfD4gUHJvbWlzZS5hbmRfdGhlbiAoZnVuIHJlc3BvbnNlIC0+XG4gICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICBpZiBGZXRjaC5SZXNwb25zZS5vayByZXNwb25zZSB0aGVuXG4gICAgICAgICAgICAgZGVjb2RlIHJlc3BvbnNlXG4gICAgICAgICAgICAgfD4gUHJvbWlzZS5hbmRfdGhlbiAoZnVuIHRleHQgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICB0cnkgU2lnbmFsLmVtaXQgKFNvbWUgKE9rIHRleHQpKSBzXG4gICAgICAgICAgICAgICAgICAgICAgd2l0aCBleG4gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIFNpZ25hbC5lbWl0IChTb21lIChFcnJvciAoSGFuZGxpbmdfZXJyb3IgZXhuKSkpIHNcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlICgpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgIHw+IFByb21pc2UuY2F0Y2ggKGZ1biBlcnIgLT5cbiAgICAgICAgICAgICAgICAgICAgU2lnbmFsLmVtaXQgKFNvbWUgKEVycm9yIChEZWNvZGluZ19lcnJvciBlcnIpKSkgc1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIGxldCBlcnIgPSBFcnJvciAoVW5zdWNjZXNzZnVsIHJlc3BvbnNlKSBpblxuICAgICAgICAgICAgIFNpZ25hbC5lbWl0IChTb21lIGVycikgc1xuICAgICAgICAgaW5cbiAgICAgICAgIFByb21pc2UucmVzb2x2ZSAoKVxuICAgICApXG4gIHw+IFByb21pc2UuY2F0Y2ggKGZ1biBlcnIgLT4gU2lnbmFsLmVtaXQgKFNvbWUgKEVycm9yIChGZXRjaF9lcnJvciBlcnIpKSkgcyk7XG4gIHNcblxubGV0IGdldCA/aGVhZGVycyA/bW9kZSA/Y3JlZGVudGlhbHMgfmRlY29kZSB+dXJsICgpID1cbiAgcmVxdWVzdCB+bWV0aDpgR2V0ID9oZWFkZXJzID9tb2RlID9jcmVkZW50aWFscyB+ZW5jb2RlOkVuY29kZXIuaWdub3JlIH5kZWNvZGVcbiAgICB+dXJsICgpXG5cbmxldCBwdXQgP2hlYWRlcnMgP21vZGUgP2NyZWRlbnRpYWxzIH5lbmNvZGUgfmRlY29kZSB+dXJsIHJlcXVlc3RfdmFsdWUgPVxuICByZXF1ZXN0IH5tZXRoOmBQdXQgP2hlYWRlcnMgP21vZGUgP2NyZWRlbnRpYWxzIH5lbmNvZGUgfmRlY29kZSB+dXJsXG4gICAgcmVxdWVzdF92YWx1ZVxuXG5sZXQgcG9zdCA/aGVhZGVycyA/bW9kZSA/Y3JlZGVudGlhbHMgfmVuY29kZSB+ZGVjb2RlIH51cmwgcmVxdWVzdF92YWx1ZSA9XG4gIHJlcXVlc3Qgfm1ldGg6YFBvc3QgP2hlYWRlcnMgP21vZGUgP2NyZWRlbnRpYWxzIH5lbmNvZGUgfmRlY29kZSB+dXJsXG4gICAgcmVxdWVzdF92YWx1ZVxuXG5sZXQgZGVsZXRlID9oZWFkZXJzID9tb2RlID9jcmVkZW50aWFscyB+ZGVjb2RlIH51cmwgcmVxdWVzdF92YWx1ZSA9XG4gIHJlcXVlc3Qgfm1ldGg6YERlbGV0ZSA/aGVhZGVycyA/bW9kZSA/Y3JlZGVudGlhbHMgfmVuY29kZTpFbmNvZGVyLmlnbm9yZVxuICAgIH5kZWNvZGUgfnVybCByZXF1ZXN0X3ZhbHVlXG5cbm1vZHVsZSBKc29uID0gc3RydWN0XG4gIGxldCByZXF1ZXN0ID9tZXRoID9oZWFkZXJzID9tb2RlID9jcmVkZW50aWFscyB+ZW5jb2RlIH5kZWNvZGUgPVxuICAgIHJlcXVlc3QgP21ldGggP2hlYWRlcnMgP21vZGUgP2NyZWRlbnRpYWxzIH5lbmNvZGU6KEVuY29kZXIubWFwX2pzb24gZW5jb2RlKVxuICAgICAgfmRlY29kZTooRGVjb2Rlci5tYXBfanNvbiBkZWNvZGUpXG5cbiAgbGV0IGdldCA/aGVhZGVycyA/bW9kZSA/Y3JlZGVudGlhbHMgfmRlY29kZSA9XG4gICAgZ2V0ID9oZWFkZXJzID9tb2RlID9jcmVkZW50aWFscyB+ZGVjb2RlOihEZWNvZGVyLm1hcF9qc29uIGRlY29kZSlcblxuICBsZXQgcHV0ID9oZWFkZXJzID9tb2RlID9jcmVkZW50aWFscyB+ZW5jb2RlIH5kZWNvZGUgPVxuICAgIHB1dCA/aGVhZGVycyA/bW9kZSA/Y3JlZGVudGlhbHMgfmVuY29kZTooRW5jb2Rlci5tYXBfanNvbiBlbmNvZGUpXG4gICAgICB+ZGVjb2RlOihEZWNvZGVyLm1hcF9qc29uIGRlY29kZSlcblxuICBsZXQgcG9zdCA/aGVhZGVycyA/bW9kZSA/Y3JlZGVudGlhbHMgfmVuY29kZSB+ZGVjb2RlID1cbiAgICBwb3N0ID9oZWFkZXJzID9tb2RlID9jcmVkZW50aWFscyB+ZW5jb2RlOihFbmNvZGVyLm1hcF9qc29uIGVuY29kZSlcbiAgICAgIH5kZWNvZGU6KERlY29kZXIubWFwX2pzb24gZGVjb2RlKVxuXG4gIGxldCBkZWxldGUgP2hlYWRlcnMgP21vZGUgP2NyZWRlbnRpYWxzIH5kZWNvZGUgPVxuICAgIGRlbGV0ZSA/aGVhZGVycyA/bW9kZSA/Y3JlZGVudGlhbHMgfmRlY29kZTooRGVjb2Rlci5tYXBfanNvbiBkZWNvZGUpXG5lbmRcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF93cmFwX2V4Y2VwdGlvbiIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwzIiwiYTEiLCJhMiIsImNhbWxfY2FsbDYiLCJhMyIsImE0IiwiYTUiLCJnbG9iYWxfZGF0YSIsIlNpZ25hbCIsIlN0ZHdlYiIsIlN0ZGxpYl9TdHJpbmciLCJTdGRsaWJfTGlzdCIsIkp4IiwiU3RkbGliIiwic3RyaW5nX29mX2Vycm9yIiwicGFyYW0iLCJyZXNwIiwibWFrZSIsImNvbnRlbnRfdHlwZSIsInRvX3VuZGVmaW5lZF9ib2R5IiwidGV4dCIsImZvcm1fZGF0YSIsImFzc29jX3RvX2Zvcm1fdXJsZW5jb2RlZF9ib2R5IiwiYXNzb2MiLCJ2IiwiayIsInN0cmluZyIsImpzb25fdG9fYm9keSIsImpzb24iLCJjc3RfYXBwbGljYXRpb25fanNvbiIsIm1hcF9qc29uIiwiZW5jb2RlX2pzb24iLCJ4IiwiaWdub3JlIiwicmVzIiwibWFwIiwidCIsInJlc3BvbnNlIiwibWF0Y2giLCJlcnIiLCJyZXF1ZXN0IiwibWV0aCIsIm9wdCIsIm1vZGUiLCJjcmVkZW50aWFscyIsImRlY29kZSIsInVybCIsInJlcXVlc3RfdmFsdWUiLCJoZWFkZXJzIiwidG9fYm9keSIsImJvZHkiLCJzIiwiZXhuIiwiZ2V0IiwicHV0IiwiZW5jb2RlIiwicG9zdCIsImRlbGV0ZSQiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsc0JBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUUsSUFBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFMLEdBQUFDLElBQUFFLElBQUFDLElBQUFFLElBQUFDLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLEtBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsWUFBQUMsZ0JBQUFDO0FBQUFBLElDU3NCO0FBQUE7QUFBQSxPQUNEO0FBQUE7QUFBQTtBQUFBLFFBQUFDLE9BREM7QUFBQSxZQUd3QjtBQUFBLFlBQWQ7QUFBQSxPQUFpRCwwREFFdkI7QUFBQTtBQUFBLE9BRGxDO0FBQUEsZUFDQTtBQUFBO0FBQUEsR0FBa0M7QUFBQSxZQUFBQyxLQUFBQyxjQUFBcEIsR0FRM0IsNEJBQWU7QUFBQSxZQUFBcUIsa0JBQUFKO0FBQUFBLElBRWxCLDBDQUFvQztBQUFBO0FBQUEsT0FBQUssT0R4QmhFLDBCQUFBQyxZQUFBO0FBQUEsWUFBQUMsOEJBQUFDO0FBQUFBO0FBQUFBLEtBQUE7QUFBQSxPQ2lDUTtBQUFBO0FBQUEsa0JBQUFSO0FBQUFBO0FBQUFBLFdBQUFTLElBQ0c7QUFBQSxXQUFBQyxJQUFBO0FBQUEsZUFFcUM7QUFBQSxlQUEvQjtBQUFBLFVBQTZCLDBDQUNsQztBQUFBO0FBQUE7QUFBQSxLQUFBQyxTQUxOO0FBQUEsSUFTRiwyQ0FBMkI7QUFBQTtBQUFBLFlBQUFDLGFBQUFDO0FBQUFBLFFBQUFSLE9BUWhCO0FBQUEsSUFDWCx5Q0FBeUI7QUFBQTtBQUFBO0FBQUEsSUFBQVMsdUJEbEQ3QjtBQUFBO0FBQUEsWUFBQUMsU0FBQUM7QUFBQUEsSUN1REk7QUFBQTtBQUFBLHFCQUFBQyxHQUFnRCxPQUFlLGFBQWYsMkJBQWUsR0FBL0Q7QUFBQSxHQUFnRTtBQUFBLFlBQUFDLFNBQUFDLEtBTWhELGtDQUFrQjtBQUFBLE9BQUFkLFNEN0R0QyxrQkFBQVEsT0FBQTtBQUFBLFlBQUFPLElBQUFyQyxHQUFBc0MsR0FBQUM7QUFBQUEsUUFBQSxJQ2tFSTtBQUFBLElBQ0csT0FJQztBQUFBLGFBSkQ7QUFBQTtBQUFBLHdCQUFBTDtBQUFBQSxvQkFBQU0sUUFDVTtBQUFBLGdCQUFHO0FBQUEscUJBQUFOLE1BQUE7QUFBQSxpQkFDQyxvQ0FDdUI7QUFBQTtBQUFBLG9CQUFBTyxNQUZ4QjtBQUFBLGdCQUVNLG9DQUFrQjtBQUFBO0FBQUEsZUFDcEM7QUFBQTtBQUFBLFlBQUFULFdBQUFoQyxHQUVXLDRDQUFVO0FBQUEsWUFBQTBDO0FBQUFBLElBQUFDLE1BQUFDLEtBQUFDLE1BQUFDLGFBQUE3QixPQUFBOEIsUUFBQUMsS0FBQUM7QUFBQUE7QUFBQUEsS0FBQUMsVUFJakI7QUFBQSxLQUFBQyxVQUFBO0FBQUEsS0FBQS9CLGVBQUE7QUFBQSxJQUVWO0FBQUE7QUFBQSxNQUFBQSxpQkFBQTtBQUFBLE1BQUE4QixZQUV5QjtBQUFBO0FBQUEsU0FBQUEsWUFGekI7QUFBQTtBQUFBLEtBQUFFLE9BS1c7QUFBQSxLQUFBQyxJQUNIO0FBQUE7QUFBQSxPQUNSO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE9BQUE7QUFBQSxTQUNHO0FBQUE7QUFBQSxvQkFBQWQ7QUFBQUEsWUFFUztBQUFBO0FBQUEsa0JBQ0Q7QUFBQTtBQUFBLGdCQUFBO0FBQUEsa0JBQ0c7QUFBQTtBQUFBLDZCQUFBakI7QUFBQUEscUJBQ0ksSUFDTTtBQUFBLDJCQUFBZ0M7QUFBQUEsMEJBQUFBLE1EN0YxQjtBQUFBLHNCQytGd0I7QUFBQTtBQUFBLHFCQUVKLGtDQUFrQjtBQUFBO0FBQUE7QUFBQSxhQVB6QjtBQUFBLGVBU0c7QUFBQTtBQUFBLDBCQUFBYjtBQUFBQSxrQkFDSSxxREFBaUQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGlCQUFBQSxNQUd4RDtBQUFBLGFBQ0E7QUFBQTtBQUFBLFlBRUosa0NBQWtCO0FBQUE7QUFBQTtBQUFBLElBcEJ6QjtBQUFBLE1Bc0JHO0FBQUE7QUFBQSxpQkFBQUEsS0FBMEIscURBQThDO0FBQUE7QUFBQSxJQUFDO0FBQUEsR0FDM0U7QUFBQSxPQUFBTixTRDdHSDtBQUFBLFlBQUFvQixJQUFBTCxTQUFBTCxNQUFBQyxhQUFBQyxRQUFBQyxLQUFBL0I7QUFBQUEsSUNnSEUscUVBQ1M7QUFBQTtBQUFBLFdEakhYO0FBQUEsWUFBQXVDO0FBQUFBLElBQUFOLFNBQUFMLE1BQUFDLGFBQUFXLFFBQUFWLFFBQUFDLEtBQUFDO0FBQUFBLElDb0hFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSwyQkFDZTtBQUFBO0FBQUEsV0RySGpCO0FBQUEsWUFBQVM7QUFBQUEsSUFBQVIsU0FBQUwsTUFBQUMsYUFBQVcsUUFBQVYsUUFBQUMsS0FBQUM7QUFBQUEsSUN3SEU7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLDJCQUNlO0FBQUE7QUFBQSxXRHpIakI7QUFBQSxZQUFBVSxRQUFBVCxTQUFBTCxNQUFBQyxhQUFBQyxRQUFBQyxLQUFBQztBQUFBQSxJQzRIRTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMkJBQzRCO0FBQUE7QUFBQSxZQUFBUCxVQUFBQyxNQUFBTyxTQUFBTCxNQUFBQyxhQUFBVyxRQUFBVjtBQUFBQSxRQUFBLElBS2hCLHdCQUR3QztBQUFBLElBQXlCO0FBQUE7QUFBQSxHQUN4QztBQUFBLFlBQUFRLE1BQUFMLFNBQUFMLE1BQUFDLGFBQUFDO0FBQUFBLFFBQUEsSUFHSztBQUFBLElBQXlCO0FBQUE7QUFBQSxZQUFBUyxNQUFBTixTQUFBTCxNQUFBQyxhQUFBVyxRQUFBVjtBQUFBQSxRQUFBQSxXQUl2RCxvQkFBQVUsV0FEOEI7QUFBQSxJQUF5QixnQkFBQVQsS0FBQUM7QUFBQUEsS0FwQm5FO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSw4QkFvQm1FO0FBQUEsR0FDOUI7QUFBQSxZQUFBUyxPQUFBUixTQUFBTCxNQUFBQyxhQUFBVyxRQUFBVjtBQUFBQSxRQUFBQSxXQUl6QixvQkFBQVUsV0FEK0I7QUFBQSxJQUF5QixnQkFBQVQsS0FBQUM7QUFBQUEsS0FwQnBFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSw4QkFvQm9FO0FBQUEsR0FDL0I7QUFBQSxZQUFBVSxTQUFBVCxTQUFBTCxNQUFBQyxhQUFBQztBQUFBQSxRQUFBQSxXQUdRO0FBQUEsSUFBeUIsZ0JBQUFDLEtBQUFDO0FBQUFBLEtBcEJ0RTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsOEJBb0JzRTtBQUFBO0FBQUEsR0RoSnhFIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDc0MjMsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVsaXguY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL2hlbGl4L0hpc3RvcnkubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCJvcGVuIHN0cnVjdFxuICBtb2R1bGUgV2luZG93ID0gU3Rkd2ViLkRvbS5XaW5kb3dcbiAgbW9kdWxlIExvY2F0aW9uID0gU3Rkd2ViLkRvbS5Mb2NhdGlvblxuICBtb2R1bGUgRXZlbnQgPSBTdGR3ZWIuRG9tLkV2ZW50XG5lbmRcblxuKCogVE9ETzogbWFrZSB0aGVzZSBzaWduYWxzIGxhenkuICopXG5cbmxldCBsb2NhdGlvbiA9XG4gIGxldCBzID0gU2lnbmFsLm1ha2UgV2luZG93LmxvY2F0aW9uIGluXG4gIFdpbmRvdy5iaW5kIEV2ZW50LnBvcHN0YXRlIChmdW4gXyAtPiBTaWduYWwuZW1pdCBXaW5kb3cubG9jYXRpb24gcyk7XG4gIHNcblxubGV0IGhhc2ggPVxuICBsZXQgcyA9IFNpZ25hbC5tYWtlIChMb2NhdGlvbi5oYXNoIFdpbmRvdy5sb2NhdGlvbikgaW5cbiAgV2luZG93LmJpbmQgRXZlbnQuaGFzaGNoYW5nZSAoZnVuIF8gLT5cbiAgICAgIGxldCBoYXNoID0gTG9jYXRpb24uaGFzaCBXaW5kb3cubG9jYXRpb24gaW5cbiAgICAgIFNpZ25hbC5lbWl0IGhhc2ggc1xuICApO1xuICBzXG5cbmxldCBoYXNoX3RvX3BhdGggc3RyID1cbiAgbWF0Y2ggU3RyaW5nLnNwbGl0X29uX2NoYXIgJy8nIHN0ciB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCBbIFwiXCIgXSAtPiBbXVxuICB8IFwiI1wiIDo6IHRsIC0+IHRsXG4gIHwgXyA6OiBfIC0+IGludmFsaWRfYXJnIHN0clxuXG5sZXQgaGFzaF9wYXRoID0gU2lnbmFsLm1hcCBoYXNoX3RvX3BhdGggaGFzaFxubGV0IGdvIGhyZWYgPSBMb2NhdGlvbi5zZXRfaHJlZiBXaW5kb3cubG9jYXRpb24gaHJlZlxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiZ2xvYmFsX2RhdGEiLCJTdGR3ZWIiLCJTdGRsaWJfU3RyaW5nIiwiU3RkbGliIiwiU2lnbmFsIiwibG9jYXRpb24iLCJwYXJhbSIsImhhc2giLCJoYXNoX3RvX3BhdGgiLCJzdHIiLCJtYXRjaCIsInRsIiwiaGFzaF9wYXRoIiwiZ28iLCJocmVmIl0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxXQ1NVO0FBQUEsR0FDUjtBQUFBO0FBQUE7QUFBQSxjQUFBQztBQUFBQSxNQUFxQywwREFBNkI7QUFBQTtBQUFBO0FBQUEsUUFJOUM7QUFBQSxJQUFBQyxPQUFaO0FBQUEsR0FDUjtBQUFBO0FBQUE7QUFBQSxjQUFBRDtBQUFBQSxVQUFBQyxTQUNlO0FBQUEsTUFDWCw0Q0FBa0I7QUFBQTtBQUFBLFlBQUFDLGFBQUFDO0FBQUFBLFFBQUFDLFFBS2hCO0FBQUEsSUFBNEIsWUFDMUI7QUFBQSxRQUFBQSxVQUQwQjtBQUFBO0FBQUEsNkJBQUFDLEtBQUEsVUFHbkI7QUFBQTtBQUFBLHdCQURIO0FBQUEsSUFFQSxnQ0FBZTtBQUFBO0FBQUEsT0FBQUMsWUFFYjtBQUFBLFlBQUFDLEdBQUFDO0FBQUFBLElBQ0YsMkRBQXNDO0FBQUE7QUFBQSxHQURSO0FBQUE7QUFBQTtBQUFBLEVENUI1QyIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQ3NDgzLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6ImhlbGl4LmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9oZWxpeC9IZWxpeC5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsInR5cGUgaHRtbCA9IEh0bWwuaHRtbFxudHlwZSBhdHRyID0gSHRtbC5hdHRyXG50eXBlICdhIHNpZ25hbCA9ICdhIFNpZ25hbC50XG5cbmxldCBzaWduYWwgPSBTaWduYWwubWFrZVxuXG5tb2R1bGUgSHRtbCA9IEh0bWxcbm1vZHVsZSBUaW1lID0gVGltZVxubW9kdWxlIE1vdXNlID0gTW91c2Vcbm1vZHVsZSBIaXN0b3J5ID0gSGlzdG9yeVxubW9kdWxlIEh0dHAgPSBIdHRwXG5tb2R1bGUgUm91dGVyID0gUm91dGVyXG5pbmNsdWRlIFZpZXdcblxubGV0IGVuYWJsZV9kZWJ1ZyA9IFZpZXcuZW5hYmxlX2RlYnVnXG5sZXQgKCBsZXQkICkgcyBmID0gc2hvdyBmIHNcbmxldCAoIGFuZCQgKSA9IFNpZ25hbC5wYWlyXG5sZXQgKCBsZXRAICkgcyBmID0gYmluZCBmIHNcbmxldCAoIGFuZEAgKSA9IFNpZ25hbC5wYWlyXG4iXSwibmFtZXMiOlsicnVudGltZSIsImdsb2JhbF9kYXRhIiwiU2lnbmFsIiwiSGVsaXhfVmlldyIsIkhlbGl4X1JvdXRlciIsIkhlbGl4X0hpc3RvcnkiLCJIZWxpeF9IdHRwIiwiSGVsaXhfVGltZSIsIkhlbGl4X01vdXNlIiwic2lnbmFsIiwic2hvdyIsInNob3dfc29tZSIsInNob3dfb2siLCJjb25kaXRpb25hbCIsImVhY2giLCJiaW5kIiwiYmluZF9zb21lIiwiYmluZF9vayIsInRvZ2dsZSIsInZpc2libGUiLCJlbmFibGVfZGVidWciLCJsZXQkIiwicyIsImYiLCJhbmQiLCJIZWxpeCJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDLGFBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsT0FBQTtBQUFBLElBQUFDLFlBQUE7QUFBQSxJQUFBQyxVQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLE9BQUE7QUFBQSxJQUFBQyxPQUFBO0FBQUEsSUFBQUMsWUFBQTtBQUFBLElBQUFDLFVBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsVUFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxZQUFBQyxLQUFBQyxHQUFBQyxHQ2VtQixvQkFBUTtBQUFBLE9BQUFDLE1EZjNCO0FBQUEsWUFBQUgsTUFBQUMsR0FBQUMsR0NpQm1CLGdEQUFRO0FBQUE7QUFBQSxJQUFBQyxRRGpCM0I7QUFBQTtBQUFBO0FBQUEsSUFBQUM7QUFBQUEsTUFBQSIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQ3NTcwLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6Ii5tYWluLmVvYmpzL2pzb28vZHVuZV9fZXhlX19NYWluLmNtby5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvd29ya3NwYWNlX3Jvb3Qvb2NhbWwtZ2xvYmUvZGVtby9tYWluLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIENvcHlyaWdodCAoYykgMjAyNSBUaG9tYXMgR2F6YWduYWlyZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuKCoqIG9jYW1sLWdsb2JlIGRlbW8g4oCUIGludGVyYWN0aXZlIHNob3djYXNlIG9mIGFsbCByZW5kZXJpbmcgc3R5bGVzLiAqKVxuXG5vcGVuIEJyclxub3BlbiBIZWxpeFxub3BlbiBIdG1sXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuKCogIFN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbmxldCBzaG93X2RvdHMgPSBTaWduYWwubWFrZSB0cnVlXG5sZXQgc2hvd19ncmlkID0gU2lnbmFsLm1ha2UgZmFsc2VcbmxldCBzaG93X3N0YXJzID0gU2lnbmFsLm1ha2UgdHJ1ZVxubGV0IHNob3dfY292ZXJhZ2UgPSBTaWduYWwubWFrZSB0cnVlXG5sZXQgc2hvd19vcmJpdHMgPSBTaWduYWwubWFrZSB0cnVlXG5sZXQgZ3JpZF9zcGFjaW5nID0gU2lnbmFsLm1ha2UgMzAuXG5sZXQgbnVtX3NhdHMgPSBTaWduYWwubWFrZSA1LlxuXG5sZXQgc2F0ZWxsaXRlX3Bvc2l0aW9ucyB0aW1lIG4gPVxuICBsZXQgciA9IDEuMDY1IGluXG4gIExpc3QuaW5pdCBuIChmdW4gaSAtPlxuICAgICAgbGV0IGZpID0gRmxvYXQub2ZfaW50IGkgaW5cbiAgICAgIGxldCBpbmNsID0gMC4zICsuIChmaSAqLiAwLjI1KSBpblxuICAgICAgbGV0IHQgPSB0aW1lICsuIChmaSAqLiAxLjIpIGluXG4gICAgICBHbG9iZS5NYXRoLlZlYzMuY3JlYXRlXG4gICAgICAgIChyICouIGNvcyB0ICouIGNvcyBpbmNsKVxuICAgICAgICAociAqLiBzaW4gaW5jbCAqLiBzaW4gKHQgKi4gMC43KSlcbiAgICAgICAgKHIgKi4gc2luIHQgKi4gY29zIGluY2wpKVxuXG5sZXQgb3JiaXRfcG9pbnQgZmkgdCA9XG4gIGxldCBpbmNsID0gMC4zICsuIChmaSAqLiAwLjI1KSBpblxuICBsZXQgciA9IDEuMDY1IGluXG4gIEdsb2JlLk1hdGguVmVjMy5jcmVhdGVcbiAgICAociAqLiBjb3MgdCAqLiBjb3MgaW5jbClcbiAgICAociAqLiBzaW4gaW5jbCAqLiBzaW4gKHQgKi4gMC43KSlcbiAgICAociAqLiBzaW4gdCAqLiBjb3MgaW5jbClcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG4oKiAgVUkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxubGV0IHRvZ2dsZSBsYWJlbCBzaWduYWwgPVxuICBzaG93XG4gICAgKGZ1biBhY3RpdmUgLT5cbiAgICAgIGJ1dHRvblxuICAgICAgICBbXG4gICAgICAgICAgY2xhc3NfbmFtZVxuICAgICAgICAgICAgKGlmIGFjdGl2ZSB0aGVuXG4gICAgICAgICAgICAgICBcInB4LTMgcHktMS41IHRleHQteHMgcm91bmRlZCBiZy1jeWFuLTUwMC8zMCBib3JkZXIgXFxcbiAgICAgICAgICAgICAgICBib3JkZXItY3lhbi01MDAvNjAgdGV4dC1jeWFuLTMwMCBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgXCJweC0zIHB5LTEuNSB0ZXh0LXhzIHJvdW5kZWQgYmctZ3JheS04MDAvNTAgYm9yZGVyIFxcXG4gICAgICAgICAgICAgICAgYm9yZGVyLWdyYXktNzAwIHRleHQtZ3JheS01MDAgY3Vyc29yLXBvaW50ZXIgXFxcbiAgICAgICAgICAgICAgICBob3Zlcjp0ZXh0LWdyYXktMzAwIGhvdmVyOmJvcmRlci1ncmF5LTUwMFwiKTtcbiAgICAgICAgICBvbl9jbGljayAoZnVuICgpIC0+IFNpZ25hbC51cGRhdGUgbm90IHNpZ25hbCk7XG4gICAgICAgIF1cbiAgICAgICAgWyB0ZXh0IGxhYmVsIF0pXG4gICAgc2lnbmFsXG5cbmxldCBzbGlkZXIgbGFiZWwgc2lnbmFsIH5taW4gfm1heCB+c3RlcCA9XG4gIGRpdlxuICAgIFsgY2xhc3NfbmFtZSBcImZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCIgXVxuICAgIFtcbiAgICAgIHNwYW4gWyBjbGFzc19uYW1lIFwidGV4dC1ncmF5LTUwMCB0ZXh0LVsxMHB4XSB3LTE2XCIgXSBbIHRleHQgbGFiZWwgXTtcbiAgICAgIGlucHV0XG4gICAgICAgIFtcbiAgICAgICAgICBhdHRyIFwidHlwZVwiIFwicmFuZ2VcIjtcbiAgICAgICAgICBhdHRyIFwibWluXCIgKEZtdC5zdHIgXCIlLjBmXCIgbWluKTtcbiAgICAgICAgICBhdHRyIFwibWF4XCIgKEZtdC5zdHIgXCIlLjBmXCIgbWF4KTtcbiAgICAgICAgICBhdHRyIFwic3RlcFwiIChGbXQuc3RyIFwiJS4wZlwiIHN0ZXApO1xuICAgICAgICAgIGF0dHIgXCJ2YWx1ZVwiIChGbXQuc3RyIFwiJS4wZlwiIChTaWduYWwuZ2V0IHNpZ25hbCkpO1xuICAgICAgICAgIGNsYXNzX25hbWVcbiAgICAgICAgICAgIFwiZmxleC0xIGgtMSBhcHBlYXJhbmNlLW5vbmUgYmctZ3JheS03MDAgcm91bmRlZCBjdXJzb3ItcG9pbnRlciBcXFxuICAgICAgICAgICAgIGFjY2VudC1jeWFuLTQwMFwiO1xuICAgICAgICAgIG9uX2lucHV0IChmdW4gdiAtPlxuICAgICAgICAgICAgICBtYXRjaCBGbG9hdC5vZl9zdHJpbmdfb3B0IHYgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgZiAtPiBTaWduYWwuZW1pdCBmIHNpZ25hbFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gKCkpO1xuICAgICAgICBdO1xuICAgICAgc2hvd1xuICAgICAgICAoZnVuIHYgLT5cbiAgICAgICAgICBzcGFuXG4gICAgICAgICAgICBbIGNsYXNzX25hbWUgXCJ0ZXh0LWN5YW4tNDAwIHRleHQtWzEwcHhdIHctOCB0ZXh0LXJpZ2h0XCIgXVxuICAgICAgICAgICAgWyB0ZXh0IChGbXQuc3RyIFwiJS4wZlwiIHYpIF0pXG4gICAgICAgIHNpZ25hbDtcbiAgICBdXG5cbmxldCB1aSAoKSA9XG4gIGRpdlxuICAgIFtcbiAgICAgIGNsYXNzX25hbWVcbiAgICAgICAgXCJwb2ludGVyLWV2ZW50cy1hdXRvIGZpeGVkIHRvcC01IGxlZnQtNSBiZy1ibGFjay84MCBib3JkZXIgXFxcbiAgICAgICAgIGJvcmRlci1jeWFuLTUwMC8yMCByb3VuZGVkLWxnIGJhY2tkcm9wLWJsdXItbWQgcC00IHctNjQgc3BhY2UteS0zXCI7XG4gICAgXVxuICAgIFtcbiAgICAgIGRpdlxuICAgICAgICBbIGNsYXNzX25hbWUgXCJ0ZXh0LWN5YW4tNDAwIHRleHQtbGcgZm9udC1ib2xkIHRyYWNraW5nLVszcHhdXCIgXVxuICAgICAgICBbIHRleHQgXCJHTE9CRVwiIF07XG4gICAgICBkaXZcbiAgICAgICAgWyBjbGFzc19uYW1lIFwidGV4dC1ncmF5LTYwMCB0ZXh0LVsxMHB4XSB0cmFja2luZy13aWRlc3QgbWItM1wiIF1cbiAgICAgICAgWyB0ZXh0IFwiUkVOREVSSU5HIERFTU9cIiBdO1xuICAgICAgZGl2XG4gICAgICAgIFsgY2xhc3NfbmFtZSBcInRleHQtZ3JheS01MDAgdGV4dC1bMTBweF0gdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVyXCIgXVxuICAgICAgICBbIHRleHQgXCJMYXllcnNcIiBdO1xuICAgICAgZGl2XG4gICAgICAgIFsgY2xhc3NfbmFtZSBcImZsZXggZmxleC13cmFwIGdhcC0xLjUgbXQtMVwiIF1cbiAgICAgICAgW1xuICAgICAgICAgIHRvZ2dsZSBcIkRvdHNcIiBzaG93X2RvdHM7XG4gICAgICAgICAgdG9nZ2xlIFwiR3JpZFwiIHNob3dfZ3JpZDtcbiAgICAgICAgICB0b2dnbGUgXCJTdGFyc1wiIHNob3dfc3RhcnM7XG4gICAgICAgICAgdG9nZ2xlIFwiQ292ZXJhZ2VcIiBzaG93X2NvdmVyYWdlO1xuICAgICAgICAgIHRvZ2dsZSBcIk9yYml0c1wiIHNob3dfb3JiaXRzO1xuICAgICAgICBdO1xuICAgICAgZGl2XG4gICAgICAgIFtcbiAgICAgICAgICBjbGFzc19uYW1lXG4gICAgICAgICAgICBcInRleHQtZ3JheS01MDAgdGV4dC1bMTBweF0gdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVyIG10LTMgcHQtMyBcXFxuICAgICAgICAgICAgIGJvcmRlci10IGJvcmRlci1ncmF5LTgwMFwiO1xuICAgICAgICBdXG4gICAgICAgIFsgdGV4dCBcIlBhcmFtZXRlcnNcIiBdO1xuICAgICAgc2xpZGVyIFwiR3JpZFwiIGdyaWRfc3BhY2luZyB+bWluOjEwLiB+bWF4OjkwLiB+c3RlcDoxMC47XG4gICAgICBzbGlkZXIgXCJTYXRzXCIgbnVtX3NhdHMgfm1pbjoxLiB+bWF4OjIwLiB+c3RlcDoxLjtcbiAgICBdXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuKCogIEVudHJ5IHBvaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbmxldCAoKSA9XG4gIGxldCBkb2MgPSBEb2N1bWVudC5vZl9qdiAoSnYuZ2V0IEp2Lmdsb2JhbCBcImRvY3VtZW50XCIpIGluXG4gIGxldCBjYW52YXNfZWwgPVxuICAgIG1hdGNoIERvY3VtZW50LmZpbmRfZWxfYnlfaWQgZG9jIChKc3RyLm9mX3N0cmluZyBcImdsLWNhbnZhc1wiKSB3aXRoXG4gICAgfCBTb21lIGVsIC0+IGVsXG4gICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiQ2FudmFzIG5vdCBmb3VuZFwiXG4gIGluXG4gIGxldCBzY2VuZSA9IEdsb2JlX3dlYmdsLlNjZW5lLnYgY2FudmFzX2VsIGluXG4gIChtYXRjaCBTdGR3ZWIuRG9tLkRvY3VtZW50LmdldF9lbGVtZW50X2J5X2lkIFwidWlcIiB3aXRoXG4gIHwgU29tZSBlbCAtPiBIdG1sLm1vdW50IGVsICh1aSAoKSlcbiAgfCBOb25lIC0+ICgpKTtcbiAgbGV0IHByZXZfc3BhY2luZyA9IHJlZiAzMC4gaW5cbiAgbGV0IHJlYyByZW5kZXIgX25vdyA9XG4gICAgbGV0IHRpbWUgPSBfbm93IC8uIDIwMDAuIGluXG4gICAgbGV0IHNwID0gU2lnbmFsLmdldCBncmlkX3NwYWNpbmcgaW5cbiAgICBpZiBzcCA8PiAhcHJldl9zcGFjaW5nIHRoZW4gYmVnaW5cbiAgICAgIEdsb2JlX3dlYmdsLlNjZW5lLnNldF9ncmlkX3NwYWNpbmcgc2NlbmUgc3A7XG4gICAgICBwcmV2X3NwYWNpbmcgOj0gc3BcbiAgICBlbmQ7XG4gICAgbGV0IG4gPSBGbG9hdC50b19pbnQgKFNpZ25hbC5nZXQgbnVtX3NhdHMpIGluXG4gICAgbGV0IGNvbG9ycyA9IEdsb2JlLkNvbG9yLnBhbGV0dGUgbiBpblxuICAgIGxldCBzYXRfcG9zID0gc2F0ZWxsaXRlX3Bvc2l0aW9ucyB0aW1lIG4gaW5cbiAgICBsZXQgZ2wgPSBHbG9iZV93ZWJnbC5TY2VuZS5nbCBzY2VuZSBpblxuICAgIGxldCBvcmJpdCA9IEdsb2JlX3dlYmdsLlNjZW5lLm9yYml0IHNjZW5lIGluXG4gICAgR2xvYmVfd2ViZ2wuT3JiaXQuY2xlYXJfbGluZXMgb3JiaXQ7XG4gICAgTGlzdC5pdGVyaVxuICAgICAgKGZ1biBpIF9wb3MgLT5cbiAgICAgICAgbGV0IGZpID0gRmxvYXQub2ZfaW50IGkgaW5cbiAgICAgICAgbGV0IGNvbG9yID0gTGlzdC5udGggY29sb3JzIGkgaW5cbiAgICAgICAgbGV0IHBoYXNlID0gZmkgKi4gMS4yIGluXG4gICAgICAgIGxldCBnaG9zdCA9XG4gICAgICAgICAgQXJyYXkuaW5pdCAxMjAgKGZ1biBqIC0+XG4gICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAob3JiaXRfcG9pbnQgZmlcbiAgICAgICAgICAgICAgICAgICAoKEZsb2F0Lm9mX2ludCBqICouIDIuICouIEZsb2F0LnBpIC8uIDEyMC4pICsuIHBoYXNlKSkpXG4gICAgICAgIGluXG4gICAgICAgIEdsb2JlX3dlYmdsLk9yYml0LmFkZF90cmFpbCBnbCBvcmJpdCBnaG9zdCB+aGVhZF9pZHg6MFxuICAgICAgICAgIH5jb2xvcjpHbG9iZS5Db2xvci5naG9zdDtcbiAgICAgICAgbGV0IHRyYWlsID1cbiAgICAgICAgICBBcnJheS5pbml0IDUwIChmdW4gaiAtPlxuICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgKG9yYml0X3BvaW50IGZpXG4gICAgICAgICAgICAgICAgICAgKHRpbWUgKy4gcGhhc2UgKy4gKEZsb2F0Lm9mX2ludCAoaiAtIDQ5KSAqLiAwLjAzKSkpKVxuICAgICAgICBpblxuICAgICAgICBHbG9iZV93ZWJnbC5PcmJpdC5hZGRfdHJhaWwgZ2wgb3JiaXQgdHJhaWwgfmhlYWRfaWR4OjQ5IH5jb2xvcilcbiAgICAgIHNhdF9wb3M7XG4gICAgbGV0IGNvdiA9IEdsb2JlX3dlYmdsLlNjZW5lLmNvdmVyYWdlIHNjZW5lIGluXG4gICAgbGV0IGFuZ2xlID1cbiAgICAgIEdsb2JlLkdlb21ldHJ5LmZvb3RwcmludF9hbmdsZSB+YWx0aXR1ZGU6NDE1LiB+bWluX2VsZXZhdGlvbjowLlxuICAgIGluXG4gICAgbGV0IGZvb3RwcmludHMgPVxuICAgICAgaWYgU2lnbmFsLmdldCBzaG93X2NvdmVyYWdlIHRoZW5cbiAgICAgICAgTGlzdC5tYXBpXG4gICAgICAgICAgKGZ1biBpIHBvcyAtPlxuICAgICAgICAgICAgR2xvYmVfd2ViZ2wuQ292ZXJhZ2UuXG4gICAgICAgICAgICAgIHsgcG9zOyBjb2xvciA9IExpc3QubnRoIGNvbG9ycyBpOyBoYWxmX2FuZ2xlID0gYW5nbGUgfSlcbiAgICAgICAgICBzYXRfcG9zXG4gICAgICBlbHNlIFtdXG4gICAgaW5cbiAgICBHbG9iZV93ZWJnbC5Db3ZlcmFnZS5sb2FkIGdsIGNvdiBmb290cHJpbnRzO1xuICAgIGxldCBoYXNfY292ID0gU2lnbmFsLmdldCBzaG93X2NvdmVyYWdlICYmIFNpZ25hbC5nZXQgc2hvd19vcmJpdHMgaW5cbiAgICBsZXQgZnJhbWUgPSBHbG9iZV93ZWJnbC5TY2VuZS5iZWdpbl9mcmFtZSBzY2VuZSAwLjAxNiBpblxuICAgIEdsb2JlX3dlYmdsLlNjZW5lLmRyYXcgc2NlbmUgZnJhbWVcbiAgICAgIHtcbiAgICAgICAgR2xvYmVfd2ViZ2wuU2NlbmUuZGVmYXVsdF9sYXllcnMgd2l0aFxuICAgICAgICBzaG93X3N0YXJzID0gU2lnbmFsLmdldCBzaG93X3N0YXJzO1xuICAgICAgICBzaG93X2VhcnRoID0gU2lnbmFsLmdldCBzaG93X2RvdHM7XG4gICAgICAgIHNob3dfZ3JpZCA9IFNpZ25hbC5nZXQgc2hvd19ncmlkO1xuICAgICAgICBzaG93X29yYml0cyA9IFNpZ25hbC5nZXQgc2hvd19vcmJpdHM7XG4gICAgICAgIHNob3dfY292ZXJhZ2UgPSBTaWduYWwuZ2V0IHNob3dfY292ZXJhZ2U7XG4gICAgICAgIGVhcnRoX2RpbSA9IChpZiBoYXNfY292IHRoZW4gMC4yIGVsc2UgMS4wKTtcbiAgICAgICAgb3JiaXRfZG90cyA9XG4gICAgICAgICAgTGlzdC5tYXBpXG4gICAgICAgICAgICAoZnVuIGkgcG9zIC0+IEdsb2JlX3dlYmdsLk9yYml0LnsgcG9zOyBjb2xvciA9IExpc3QubnRoIGNvbG9ycyBpIH0pXG4gICAgICAgICAgICBzYXRfcG9zO1xuICAgICAgfTtcbiAgICBpZ25vcmUgKEcucmVxdWVzdF9hbmltYXRpb25fZnJhbWUgcmVuZGVyKVxuICBpblxuICBpZ25vcmUgKEcucmVxdWVzdF9hbmltYXRpb25fZnJhbWUgcmVuZGVyKVxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWJfTGlzdCIsIlN0ZGxpYl9GbG9hdCIsIlN0ZGxpYl9BcnJheSIsIkdsb2JlX0NvbG9yIiwiR2xvYmVfd2ViZ2xfT3JiaXQiLCJTaWduYWwiLCJHbG9iZV93ZWJnbF9TY2VuZSIsIkdsb2JlX0dlb21ldHJ5IiwiR2xvYmVfd2ViZ2xfQ292ZXJhZ2UiLCJCcnIiLCJIdG1sIiwiRm10IiwiSGVsaXgiLCJHbG9iZV9NYXRoIiwiSnYiLCJTdGRsaWIiLCJTdGR3ZWIiLCJzaG93X2RvdHMiLCJzaG93X2dyaWQiLCJzaG93X3N0YXJzIiwic2hvd19jb3ZlcmFnZSIsInNob3dfb3JiaXRzIiwiZ3JpZF9zcGFjaW5nIiwibnVtX3NhdHMiLCJvcmJpdF9wb2ludCIsImZpIiwidCIsImluY2wiLCJ0b2dnbGUiLCJsYWJlbCIsInNpZ25hbCIsImFjdGl2ZSIsInBhcmFtIiwiY3N0XzBmIiwic2xpZGVyIiwibWluIiwibWF4Iiwic3RlcCIsInYiLCJtYXRjaCIsImRvYyIsImVsIiwiY2FudmFzX2VsIiwic2NlbmUiLCJjc3RfR3JpZCIsInByZXZfc3BhY2luZyIsInJlbmRlciIsIm5vdyIsInRpbWUiLCJzcCIsIm4iLCJjb2xvcnMiLCJzYXRfcG9zIiwiaSIsImdsIiwib3JiaXQiLCJwb3MiLCJjb2xvciIsInBoYXNlIiwiZ2hvc3QiLCJqIiwidHJhaWwiLCJjb3YiLCJhbmdsZSIsImZvb3RwcmludHMiLCJoYXNfY292Iiwi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QUEsUUFBQUMsUUFDQTtBQUFBLFFBQUFDO0FBQUFBLFVBRVY7QUFBQTtBQUFBO0FBQUEscUJBQUFDO0FBQUFBLGFBRU07QUFBQSwrRUFDeUQ7QUFBQTtBQUFBLE9BRWpFO0FBQUE7QUFBQSxRQUFBQztBQUFBQSxVQUdFO0FBQUE7QUFBQTtBQUFBLHFCQUFBRDtBQUFBQSxhQUVNLCtEQUNzRDtBQUFBO0FBQUEsT0FFOUQsbUVBQThEO0FBQUE7QUFBQTtBQUFBO0FBQUEsS0FBQUUsTUFFeEQ7QUFBQSxLQUFBQyxRQUVSO0FBQUEsS0FBQUM7QUFBQUEsT0FHRztBQUFBLFVBQ0Q7QUFBQTtBQUFBO0FBQUEsb0JBQUFYLEdBQUFHO0FBQUFBLFlBR3FCLDREQUFpQjtBQUFBLFdBQXNCO0FBQUE7QUFBQTtBQUFBLElBSWhFO0FBQUE7QUFBQSxTQUNjO0FBQUEsS0FBQVMsVUFBd0IsSUFBSTtBQUFBLEtBQUFDLFFBQzlCO0FBQUEsS0FBQUMsT0FBeUM7QUFBQSxTQVcvQztBQUFBO0FBQUE7QUFBQTtBQUFBLGtCQUFBZCxHQUFBRztBQUFBQSxVQUNpRCxxREFBaUI7QUFBQSxTQUFFO0FBQUE7QUFBQSxTQUMzRDtBQUFBO0FBQUE7QUFBQTtBQUFBLFNBTEs7QUFBQSxTQURGO0FBQUEsU0FERjtBQUFBLFNBREM7QUFBQSxTQURBO0FBQUEsSUFIakI7QUFBQSxJQWNPO0FBQUEsSUFBa0M7QUFBQTtBQUFBLEdBRXBDO0FBQUEsR0FBa0M7QUFBQTtBQUFBLEVEbk4zQyIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQ3ODk5LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZF9leGl0LmNtby5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9zdGRfZXhpdC5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogRW5zdXJlIHRoYXQgW2F0X2V4aXRdIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGF0IHRoZSBlbmQgb2YgZXZlcnkgcHJvZ3JhbSAqKVxuXG5sZXQgXyA9IGRvX2F0X2V4aXQoKVxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiU3RkbGliIl0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxPQUFBQyxTQUFBO0FBQUEsR0NpQlE7QUFBQSxHQUFZO0FBQUE7QUFBQSxFRGpCcEIiLCJpZ25vcmVMaXN0IjpbMF19fV19
+211
lib/raycast.ml
··· 1 + (*--------------------------------------------------------------------------- 2 + Copyright (c) 2025 Thomas Gazagnaire. All rights reserved. 3 + SPDX-License-Identifier: ISC 4 + ---------------------------------------------------------------------------*) 5 + 6 + (** Raycasting for 3D picking on the globe. 7 + 8 + Unprojects screen coordinates to a world-space ray, then tests 9 + intersection with spheres (Earth surface) and points (satellites). 10 + 11 + References: 12 + - Scratchapixel, "Ray-Sphere Intersection" 13 + - Real-Time Rendering, 4th ed., Ch. 22 *) 14 + 15 + (** {1 Types} *) 16 + 17 + type ray = { 18 + origin : Math.Vec3.t; 19 + direction : Math.Vec3.t; 20 + } 21 + 22 + type hit = { 23 + distance : float; 24 + position : Math.Vec3.t; 25 + index : int; 26 + } 27 + 28 + (** {1 Ray construction} *) 29 + 30 + (** Invert a 4x4 column-major matrix. Specialized for view-projection 31 + matrices (always invertible in practice). *) 32 + let invert_mat4 (m : float array) = 33 + let inv = Array.make 16 0. in 34 + inv.(0) <- 35 + m.(5) *. m.(10) *. m.(15) -. m.(5) *. m.(11) *. m.(14) 36 + -. m.(9) *. m.(6) *. m.(15) +. m.(9) *. m.(7) *. m.(14) 37 + +. m.(13) *. m.(6) *. m.(11) -. m.(13) *. m.(7) *. m.(10); 38 + inv.(4) <- 39 + -.m.(4) *. m.(10) *. m.(15) +. m.(4) *. m.(11) *. m.(14) 40 + +. m.(8) *. m.(6) *. m.(15) -. m.(8) *. m.(7) *. m.(14) 41 + -. m.(12) *. m.(6) *. m.(11) +. m.(12) *. m.(7) *. m.(10); 42 + inv.(8) <- 43 + m.(4) *. m.(9) *. m.(15) -. m.(4) *. m.(11) *. m.(13) 44 + -. m.(8) *. m.(5) *. m.(15) +. m.(8) *. m.(7) *. m.(13) 45 + +. m.(12) *. m.(5) *. m.(11) -. m.(12) *. m.(7) *. m.(9); 46 + inv.(12) <- 47 + -.m.(4) *. m.(9) *. m.(14) +. m.(4) *. m.(10) *. m.(13) 48 + +. m.(8) *. m.(5) *. m.(14) -. m.(8) *. m.(6) *. m.(13) 49 + -. m.(12) *. m.(5) *. m.(10) +. m.(12) *. m.(6) *. m.(9); 50 + inv.(1) <- 51 + -.m.(1) *. m.(10) *. m.(15) +. m.(1) *. m.(11) *. m.(14) 52 + +. m.(9) *. m.(2) *. m.(15) -. m.(9) *. m.(3) *. m.(14) 53 + -. m.(13) *. m.(2) *. m.(11) +. m.(13) *. m.(3) *. m.(10); 54 + inv.(5) <- 55 + m.(0) *. m.(10) *. m.(15) -. m.(0) *. m.(11) *. m.(14) 56 + -. m.(8) *. m.(2) *. m.(15) +. m.(8) *. m.(3) *. m.(14) 57 + +. m.(12) *. m.(2) *. m.(11) -. m.(12) *. m.(3) *. m.(10); 58 + inv.(9) <- 59 + -.m.(0) *. m.(9) *. m.(15) +. m.(0) *. m.(11) *. m.(13) 60 + +. m.(8) *. m.(1) *. m.(15) -. m.(8) *. m.(3) *. m.(13) 61 + -. m.(12) *. m.(1) *. m.(11) +. m.(12) *. m.(3) *. m.(9); 62 + inv.(13) <- 63 + m.(0) *. m.(9) *. m.(14) -. m.(0) *. m.(10) *. m.(13) 64 + -. m.(8) *. m.(1) *. m.(14) +. m.(8) *. m.(2) *. m.(13) 65 + +. m.(12) *. m.(1) *. m.(10) -. m.(12) *. m.(2) *. m.(9); 66 + inv.(2) <- 67 + m.(1) *. m.(6) *. m.(15) -. m.(1) *. m.(7) *. m.(14) 68 + -. m.(5) *. m.(2) *. m.(15) +. m.(5) *. m.(3) *. m.(14) 69 + +. m.(13) *. m.(2) *. m.(7) -. m.(13) *. m.(3) *. m.(6); 70 + inv.(6) <- 71 + -.m.(0) *. m.(6) *. m.(15) +. m.(0) *. m.(7) *. m.(14) 72 + +. m.(4) *. m.(2) *. m.(15) -. m.(4) *. m.(3) *. m.(14) 73 + -. m.(12) *. m.(2) *. m.(7) +. m.(12) *. m.(3) *. m.(6); 74 + inv.(10) <- 75 + m.(0) *. m.(5) *. m.(15) -. m.(0) *. m.(7) *. m.(13) 76 + -. m.(4) *. m.(1) *. m.(15) +. m.(4) *. m.(3) *. m.(13) 77 + +. m.(12) *. m.(1) *. m.(7) -. m.(12) *. m.(3) *. m.(5); 78 + inv.(14) <- 79 + -.m.(0) *. m.(5) *. m.(14) +. m.(0) *. m.(6) *. m.(13) 80 + +. m.(4) *. m.(1) *. m.(14) -. m.(4) *. m.(2) *. m.(13) 81 + -. m.(12) *. m.(1) *. m.(6) +. m.(12) *. m.(2) *. m.(5); 82 + inv.(3) <- 83 + -.m.(1) *. m.(6) *. m.(11) +. m.(1) *. m.(7) *. m.(10) 84 + +. m.(5) *. m.(2) *. m.(11) -. m.(5) *. m.(3) *. m.(10) 85 + -. m.(9) *. m.(2) *. m.(7) +. m.(9) *. m.(3) *. m.(6); 86 + inv.(7) <- 87 + m.(0) *. m.(6) *. m.(11) -. m.(0) *. m.(7) *. m.(10) 88 + -. m.(4) *. m.(2) *. m.(11) +. m.(4) *. m.(3) *. m.(10) 89 + +. m.(8) *. m.(2) *. m.(7) -. m.(8) *. m.(3) *. m.(6); 90 + inv.(11) <- 91 + -.m.(0) *. m.(5) *. m.(11) +. m.(0) *. m.(7) *. m.(9) 92 + +. m.(4) *. m.(1) *. m.(11) -. m.(4) *. m.(3) *. m.(9) 93 + -. m.(8) *. m.(1) *. m.(7) +. m.(8) *. m.(3) *. m.(5); 94 + inv.(15) <- 95 + m.(0) *. m.(5) *. m.(10) -. m.(0) *. m.(6) *. m.(9) 96 + -. m.(4) *. m.(1) *. m.(10) +. m.(4) *. m.(2) *. m.(9) 97 + +. m.(8) *. m.(1) *. m.(6) -. m.(8) *. m.(2) *. m.(5); 98 + let det = 99 + m.(0) *. inv.(0) +. m.(1) *. inv.(4) 100 + +. m.(2) *. inv.(8) +. m.(3) *. inv.(12) 101 + in 102 + if abs_float det < 1e-12 then None 103 + else begin 104 + let inv_det = 1. /. det in 105 + Array.iteri (fun i v -> inv.(i) <- v *. inv_det) inv; 106 + Some inv 107 + end 108 + 109 + (** Multiply a 4x4 column-major matrix by a 4-vector [x,y,z,w]. *) 110 + let mat4_mul_vec4 m x y z w = 111 + let rx = m.(0)*.x +. m.(4)*.y +. m.(8)*.z +. m.(12)*.w in 112 + let ry = m.(1)*.x +. m.(5)*.y +. m.(9)*.z +. m.(13)*.w in 113 + let rz = m.(2)*.x +. m.(6)*.y +. m.(10)*.z +. m.(14)*.w in 114 + let rw = m.(3)*.x +. m.(7)*.y +. m.(11)*.z +. m.(15)*.w in 115 + (rx, ry, rz, rw) 116 + 117 + (** Construct a ray from screen coordinates. 118 + 119 + [screen_x], [screen_y]: pixel position (origin top-left). 120 + [width], [height]: viewport size. 121 + [projection], [view]: the camera matrices (column-major float arrays). *) 122 + let ray_from_screen ~screen_x ~screen_y ~width ~height 123 + ~projection ~view = 124 + (* Screen → NDC: [-1, 1] *) 125 + let ndc_x = (2. *. screen_x /. Float.of_int width) -. 1. in 126 + let ndc_y = 1. -. (2. *. screen_y /. Float.of_int height) in 127 + (* Compute inverse view-projection *) 128 + let vp = Math.Mat4.multiply projection view in 129 + match invert_mat4 vp with 130 + | None -> None 131 + | Some inv_vp -> 132 + (* Unproject near and far points *) 133 + let nx, ny, nz, nw = mat4_mul_vec4 inv_vp ndc_x ndc_y (-1.) 1. in 134 + let fx, fy, fz, fw = mat4_mul_vec4 inv_vp ndc_x ndc_y 1. 1. in 135 + if abs_float nw < 1e-10 || abs_float fw < 1e-10 then None 136 + else 137 + let near = Math.Vec3.create (nx /. nw) (ny /. nw) (nz /. nw) in 138 + let far = Math.Vec3.create (fx /. fw) (fy /. fw) (fz /. fw) in 139 + let dir = Math.Vec3.normalize (Math.Vec3.sub far near) in 140 + Some { origin = near; direction = dir } 141 + 142 + (** {1 Intersection tests} *) 143 + 144 + (** Ray-sphere intersection. 145 + 146 + Returns the distance along the ray to the nearest intersection, 147 + or [None] if the ray misses. *) 148 + let intersect_sphere ray ~center ~radius = 149 + let oc = Math.Vec3.sub ray.origin center in 150 + let a = Math.Vec3.dot ray.direction ray.direction in 151 + let b = 2. *. Math.Vec3.dot oc ray.direction in 152 + let c = Math.Vec3.dot oc oc -. (radius *. radius) in 153 + let discriminant = (b *. b) -. (4. *. a *. c) in 154 + if discriminant < 0. then None 155 + else 156 + let sqrt_d = sqrt discriminant in 157 + let t1 = (-.b -. sqrt_d) /. (2. *. a) in 158 + let t2 = (-.b +. sqrt_d) /. (2. *. a) in 159 + (* Return nearest positive intersection *) 160 + if t1 > 0. then Some t1 161 + else if t2 > 0. then Some t2 162 + else None 163 + 164 + (** Test if a ray passes within [threshold] distance of a point. 165 + Returns the closest approach distance, or [None] if farther 166 + than [threshold]. *) 167 + let intersect_point ray point ~threshold = 168 + let oc = Math.Vec3.sub point ray.origin in 169 + let t = Math.Vec3.dot oc ray.direction in 170 + if t < 0. then None (* behind camera *) 171 + else 172 + let closest = 173 + Math.Vec3.add ray.origin (Math.Vec3.scale t ray.direction) 174 + in 175 + let dist = Math.Vec3.length (Math.Vec3.sub closest point) in 176 + if dist <= threshold then Some t else None 177 + 178 + (** {1 Picking} *) 179 + 180 + (** Pick the nearest point from a list. 181 + 182 + Returns the index and hit of the closest point within [threshold] 183 + distance of the ray. *) 184 + let pick_nearest ray points ~threshold = 185 + let best = ref None in 186 + List.iteri 187 + (fun i (pos : Math.Vec3.t) -> 188 + match intersect_point ray pos ~threshold with 189 + | None -> () 190 + | Some t -> 191 + let dominated = 192 + match !best with Some h -> t >= h.distance | None -> false 193 + in 194 + if not dominated then 195 + let position = 196 + Math.Vec3.add ray.origin (Math.Vec3.scale t ray.direction) 197 + in 198 + best := Some { distance = t; position; index = i }) 199 + points; 200 + !best 201 + 202 + (** Pick the Earth surface intersection point. 203 + 204 + Returns the GL-coordinate position where the ray hits the 205 + unit sphere (Earth radius = 1.0), or [None] if the ray misses. *) 206 + let pick_earth ray = 207 + match intersect_sphere ray ~center:Math.Vec3.zero ~radius:1.0 with 208 + | None -> None 209 + | Some t -> 210 + Some 211 + (Math.Vec3.add ray.origin (Math.Vec3.scale t ray.direction))
+60
lib/raycast.mli
··· 1 + (** Raycasting for 3D picking on the globe. 2 + 3 + Unprojects screen coordinates to a world-space ray, then tests 4 + intersection with spheres and points. Pure math, no WebGL. *) 5 + 6 + (** {1 Types} *) 7 + 8 + type ray = { 9 + origin : Math.Vec3.t; 10 + direction : Math.Vec3.t; 11 + } 12 + (** A ray in world space. *) 13 + 14 + type hit = { 15 + distance : float; 16 + position : Math.Vec3.t; 17 + index : int; 18 + } 19 + (** A ray-object intersection result. *) 20 + 21 + (** {1 Ray construction} *) 22 + 23 + val ray_from_screen : 24 + screen_x:float -> 25 + screen_y:float -> 26 + width:int -> 27 + height:int -> 28 + projection:float array -> 29 + view:float array -> 30 + ray option 31 + (** [ray_from_screen ~screen_x ~screen_y ~width ~height ~projection ~view] 32 + constructs a world-space ray from screen pixel coordinates. 33 + Returns [None] if the matrices are degenerate. *) 34 + 35 + (** {1 Intersection tests} *) 36 + 37 + val intersect_sphere : 38 + ray -> center:Math.Vec3.t -> radius:float -> float option 39 + (** [intersect_sphere ray ~center ~radius] returns the distance to the 40 + nearest intersection, or [None] if the ray misses. *) 41 + 42 + val intersect_point : ray -> Math.Vec3.t -> threshold:float -> float option 43 + (** [intersect_point ray point ~threshold] returns the ray parameter [t] 44 + if the ray passes within [threshold] of [point]. *) 45 + 46 + (** {1 Picking} *) 47 + 48 + val pick_nearest : ray -> Math.Vec3.t list -> threshold:float -> hit option 49 + (** [pick_nearest ray points ~threshold] picks the closest point 50 + within [threshold] distance of the ray. Returns index + hit info. *) 51 + 52 + val pick_earth : ray -> Math.Vec3.t option 53 + (** [pick_earth ray] returns where the ray hits the unit sphere 54 + (Earth surface), or [None] if it misses. *) 55 + 56 + (** {1 Matrix utilities} *) 57 + 58 + val invert_mat4 : float array -> float array option 59 + (** [invert_mat4 m] inverts a 4x4 column-major matrix. 60 + Returns [None] if singular. *)
+2 -2
lib/satellite.ml
··· 5 5 6 6 (** Satellite state management for globe rendering. 7 7 8 - Caches precomputed Kepler elements, generates ghost orbits and 9 - per-frame trail positions. Pure OCaml, no WebGL dependency. *) 8 + Caches precomputed Kepler elements, generates ghost orbits and per-frame 9 + trail positions. Pure OCaml, no WebGL dependency. *) 10 10 11 11 type t = { 12 12 elements : Kepler.Analytic.elements;
+13 -13
lib/satellite.mli
··· 1 1 (** Satellite state management for globe rendering. 2 2 3 - Caches precomputed Kepler elements, generates ghost orbits and 4 - per-frame trail positions. Pure OCaml, no WebGL dependency. *) 3 + Caches precomputed Kepler elements, generates ghost orbits and per-frame 4 + trail positions. Pure OCaml, no WebGL dependency. *) 5 5 6 6 type t 7 7 (** Satellite state with cached orbital elements and ghost orbit. *) ··· 13 13 ?trail_length:int -> 14 14 unit -> 15 15 t 16 - (** [v ~pos ~vel ~color ?trail_length ()] creates a satellite from a 17 - J2000 state vector. Precomputes orbital elements and ghost orbit. 18 - [trail_length] defaults to 50 points. *) 16 + (** [v ~pos ~vel ~color ?trail_length ()] creates a satellite from a J2000 state 17 + vector. Precomputes orbital elements and ghost orbit. [trail_length] 18 + defaults to 50 points. *) 19 19 20 20 val color : t -> Color.t 21 21 (** [color t] is the satellite's display color. *) ··· 24 24 (** [period t] is the orbital period in seconds. *) 25 25 26 26 val ghost_points : t -> Math.Vec3.t option array 27 - (** [ghost_points t] is the precomputed full-orbit ghost (GL coords). 28 - Computed once at creation, reusable across frames. *) 27 + (** [ghost_points t] is the precomputed full-orbit ghost (GL coords). Computed 28 + once at creation, reusable across frames. *) 29 29 30 30 val position_at : t -> dt:float -> Math.Vec3.t 31 - (** [position_at t ~dt] is the satellite's GL position at [dt] seconds 32 - from epoch. Very fast (~20 FLOPs). *) 31 + (** [position_at t ~dt] is the satellite's GL position at [dt] seconds from 32 + epoch. Very fast (~20 FLOPs). *) 33 33 34 34 val trail_positions : t -> dt:float -> Math.Vec3.t option array 35 - (** [trail_positions t ~dt] generates trail points up to [dt], fading 36 - into the past. For use with {!Globe_webgl.Orbit.add_trail}. *) 35 + (** [trail_positions t ~dt] generates trail points up to [dt], fading into the 36 + past. For use with {!Globe_webgl.Orbit.add_trail}. *) 37 37 38 38 val dot : t -> dt:float -> Math.Vec3.t * Color.t 39 - (** [dot t ~dt] is the satellite's current position and color, 40 - for building {!Globe_webgl.Orbit.dot} values. *) 39 + (** [dot t ~dt] is the satellite's current position and color, for building 40 + {!Globe_webgl.Orbit.dot} values. *)
+1
test/test.ml
··· 5 5 Test_sphere.suite; 6 6 Test_gl_coord.suite; 7 7 Test_geometry.suite; 8 + Test_raycast.suite; 8 9 ]
+216
test/test_raycast.ml
··· 1 + (** Raycasting tests. 2 + 3 + Tests ray construction, sphere intersection, point picking, 4 + and matrix inversion against known geometric configurations. *) 5 + 6 + open Globe 7 + 8 + let eps = 1e-4 9 + 10 + let check_float msg expected actual = 11 + Alcotest.(check (float eps)) msg expected actual 12 + 13 + (* --- Ray-sphere intersection --- *) 14 + 15 + (** Ray from origin toward +X hits unit sphere at x=1. *) 16 + let test_sphere_hit_center () = 17 + let ray : Raycast.ray = 18 + { origin = Math.Vec3.create 0. 0. 5.; 19 + direction = Math.Vec3.create 0. 0. (-1.) } 20 + in 21 + match Raycast.intersect_sphere ray ~center:Math.Vec3.zero ~radius:1. with 22 + | None -> Alcotest.fail "should hit sphere" 23 + | Some t -> check_float "distance" 4.0 t 24 + 25 + (** Ray pointing away from sphere misses. *) 26 + let test_sphere_miss () = 27 + let ray : Raycast.ray = 28 + { origin = Math.Vec3.create 0. 0. 5.; 29 + direction = Math.Vec3.create 0. 0. 1. } 30 + in 31 + Alcotest.(check bool) "miss" true 32 + (Raycast.intersect_sphere ray ~center:Math.Vec3.zero ~radius:1. = None) 33 + 34 + (** Ray from inside sphere hits at exit point. *) 35 + let test_sphere_inside () = 36 + let ray : Raycast.ray = 37 + { origin = Math.Vec3.zero; 38 + direction = Math.Vec3.create 1. 0. 0. } 39 + in 40 + match Raycast.intersect_sphere ray ~center:Math.Vec3.zero ~radius:1. with 41 + | None -> Alcotest.fail "should hit from inside" 42 + | Some t -> check_float "exit distance" 1.0 t 43 + 44 + (** Ray tangent to sphere (edge case). *) 45 + let test_sphere_tangent () = 46 + let ray : Raycast.ray = 47 + { origin = Math.Vec3.create 0. 1. 5.; 48 + direction = Math.Vec3.create 0. 0. (-1.) } 49 + in 50 + (* Tangent at y=1 means barely touching *) 51 + match Raycast.intersect_sphere ray ~center:Math.Vec3.zero ~radius:1. with 52 + | None -> () (* acceptable: floating point may miss *) 53 + | Some t -> Alcotest.(check bool) "tangent positive" true (t > 0.) 54 + 55 + (** Ray hitting off-center sphere. *) 56 + let test_sphere_offset () = 57 + let ray : Raycast.ray = 58 + { origin = Math.Vec3.create 3. 0. 0.; 59 + direction = Math.Vec3.create (-1.) 0. 0. } 60 + in 61 + let center = Math.Vec3.create 0. 0. 0. in 62 + match Raycast.intersect_sphere ray ~center ~radius:1. with 63 + | None -> Alcotest.fail "should hit" 64 + | Some t -> check_float "distance" 2.0 t 65 + 66 + (* --- Point intersection --- *) 67 + 68 + (** Ray passing through a point hits it. *) 69 + let test_point_hit () = 70 + let ray : Raycast.ray = 71 + { origin = Math.Vec3.create 0. 0. 0.; 72 + direction = Math.Vec3.create 1. 0. 0. } 73 + in 74 + let pt = Math.Vec3.create 5. 0. 0. in 75 + match Raycast.intersect_point ray pt ~threshold:0.1 with 76 + | None -> Alcotest.fail "should hit point" 77 + | Some t -> check_float "distance" 5.0 t 78 + 79 + (** Ray passing far from a point misses. *) 80 + let test_point_miss () = 81 + let ray : Raycast.ray = 82 + { origin = Math.Vec3.create 0. 0. 0.; 83 + direction = Math.Vec3.create 1. 0. 0. } 84 + in 85 + let pt = Math.Vec3.create 5. 2. 0. in 86 + Alcotest.(check bool) "miss" true 87 + (Raycast.intersect_point ray pt ~threshold:0.1 = None) 88 + 89 + (** Point behind the ray origin is ignored. *) 90 + let test_point_behind () = 91 + let ray : Raycast.ray = 92 + { origin = Math.Vec3.create 0. 0. 0.; 93 + direction = Math.Vec3.create 1. 0. 0. } 94 + in 95 + let pt = Math.Vec3.create (-5.) 0. 0. in 96 + Alcotest.(check bool) "behind" true 97 + (Raycast.intersect_point ray pt ~threshold:0.1 = None) 98 + 99 + (* --- Pick nearest --- *) 100 + 101 + (** Pick nearest selects closest point. *) 102 + let test_pick_nearest () = 103 + let ray : Raycast.ray = 104 + { origin = Math.Vec3.create 0. 0. 0.; 105 + direction = Math.Vec3.create 1. 0. 0. } 106 + in 107 + let points = [ 108 + Math.Vec3.create 10. 0. 0.; (* index 0, far *) 109 + Math.Vec3.create 3. 0. 0.; (* index 1, near *) 110 + Math.Vec3.create 7. 0. 0.; (* index 2, mid *) 111 + ] in 112 + match Raycast.pick_nearest ray points ~threshold:0.5 with 113 + | None -> Alcotest.fail "should pick" 114 + | Some hit -> 115 + Alcotest.(check int) "nearest index" 1 hit.index; 116 + check_float "distance" 3.0 hit.distance 117 + 118 + (** Pick with no points in range returns None. *) 119 + let test_pick_empty () = 120 + let ray : Raycast.ray = 121 + { origin = Math.Vec3.create 0. 0. 0.; 122 + direction = Math.Vec3.create 1. 0. 0. } 123 + in 124 + Alcotest.(check bool) "empty" true 125 + (Raycast.pick_nearest ray [] ~threshold:0.5 = None) 126 + 127 + (* --- Pick earth --- *) 128 + 129 + (** Pick earth from camera position hits the globe. *) 130 + let test_pick_earth () = 131 + let ray : Raycast.ray = 132 + { origin = Math.Vec3.create 0. 0. 3.; 133 + direction = Math.Vec3.create 0. 0. (-1.) } 134 + in 135 + match Raycast.pick_earth ray with 136 + | None -> Alcotest.fail "should hit earth" 137 + | Some pos -> 138 + check_float "hit z" 1.0 pos.z; 139 + check_float "hit x" 0.0 pos.x 140 + 141 + (** Pick earth pointing away misses. *) 142 + let test_pick_earth_miss () = 143 + let ray : Raycast.ray = 144 + { origin = Math.Vec3.create 0. 0. 3.; 145 + direction = Math.Vec3.create 0. 0. 1. } 146 + in 147 + Alcotest.(check bool) "miss" true (Raycast.pick_earth ray = None) 148 + 149 + (* --- Matrix inversion --- *) 150 + 151 + (** Identity matrix inverts to itself. *) 152 + let test_invert_identity () = 153 + let id = Math.Mat4.identity () in 154 + match Raycast.invert_mat4 id with 155 + | None -> Alcotest.fail "identity should be invertible" 156 + | Some inv -> 157 + check_float "inv[0]" 1. inv.(0); 158 + check_float "inv[5]" 1. inv.(5); 159 + check_float "inv[10]" 1. inv.(10); 160 + check_float "inv[15]" 1. inv.(15); 161 + check_float "inv[1]" 0. inv.(1) 162 + 163 + (** M * M⁻¹ = I. *) 164 + let test_invert_roundtrip () = 165 + let m = Math.Mat4.perspective ~fovy:1.0 ~aspect:1.5 166 + ~near:0.1 ~far:100. in 167 + match Raycast.invert_mat4 m with 168 + | None -> Alcotest.fail "perspective should be invertible" 169 + | Some inv -> 170 + let product = Math.Mat4.multiply m inv in 171 + check_float "I[0]" 1. product.(0); 172 + check_float "I[5]" 1. product.(5); 173 + check_float "I[10]" 1. product.(10); 174 + check_float "I[15]" 1. product.(15); 175 + check_float "I[1]" 0. product.(1) 176 + 177 + (* --- Ray from screen --- *) 178 + 179 + (** Center of screen should produce a ray pointing forward. *) 180 + let test_ray_from_center () = 181 + let proj = Math.Mat4.perspective ~fovy:(Float.pi /. 4.) 182 + ~aspect:1.0 ~near:0.1 ~far:100. in 183 + let view = Math.Mat4.look_at 184 + ~eye:(Math.Vec3.create 0. 0. 3.) 185 + ~center:Math.Vec3.zero 186 + ~up:(Math.Vec3.create 0. 1. 0.) in 187 + let projection = Math.Mat4.to_float_array proj in 188 + let view = Math.Mat4.to_float_array view in 189 + match Raycast.ray_from_screen 190 + ~screen_x:400. ~screen_y:300. 191 + ~width:800 ~height:600 192 + ~projection ~view with 193 + | None -> Alcotest.fail "should produce ray" 194 + | Some ray -> 195 + (* Direction should be approximately -Z (toward origin from z=3) *) 196 + Alcotest.(check bool) "dir z < 0" true (ray.direction.z < -0.5) 197 + 198 + let suite = 199 + ( "raycast", 200 + [ 201 + Alcotest.test_case "sphere hit center" `Quick test_sphere_hit_center; 202 + Alcotest.test_case "sphere miss" `Quick test_sphere_miss; 203 + Alcotest.test_case "sphere inside" `Quick test_sphere_inside; 204 + Alcotest.test_case "sphere tangent" `Quick test_sphere_tangent; 205 + Alcotest.test_case "sphere offset" `Quick test_sphere_offset; 206 + Alcotest.test_case "point hit" `Quick test_point_hit; 207 + Alcotest.test_case "point miss" `Quick test_point_miss; 208 + Alcotest.test_case "point behind" `Quick test_point_behind; 209 + Alcotest.test_case "pick nearest" `Quick test_pick_nearest; 210 + Alcotest.test_case "pick empty" `Quick test_pick_empty; 211 + Alcotest.test_case "pick earth" `Quick test_pick_earth; 212 + Alcotest.test_case "pick earth miss" `Quick test_pick_earth_miss; 213 + Alcotest.test_case "invert identity" `Quick test_invert_identity; 214 + Alcotest.test_case "invert roundtrip" `Quick test_invert_roundtrip; 215 + Alcotest.test_case "ray from center" `Quick test_ray_from_center; 216 + ] )
+2
test/test_raycast.mli
··· 1 + val suite : string * unit Alcotest.test_case list 2 + (** [suite] is the raycasting test suite. *)